From 690132ce0fd51a89fb43d4e1d1e2f8f80de81f27 Mon Sep 17 00:00:00 2001 From: Qiuzhizhe <42761326+quizhizhe@users.noreply.github.com> Date: Fri, 3 Mar 2023 10:16:38 -0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AELL=E9=87=8D=E6=9E=84=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .clang-format | 30 +- .clangd | 4 + .github/workflows/build.yml | 194 + .github/workflows/cmake.yml | 143 - .github/workflows/publish_release.yml | 267 ++ .gitignore | 6 +- .gitmodules | 10 +- CMake/CleanOutput.cmake | 8 + CMake/PackOutput.cmake | 29 + CMake/PackSDK.cmake | 20 + CMakeLists.txt | 23 +- LLPreLoader/CMakeLists.txt | 45 + .../include}/FakeSymbol.hpp | 2 +- {PreLoader => LLPreLoader/include}/Logger.h | 12 +- {PreLoader => LLPreLoader/include}/Utils.h | 0 {PreLoader => LLPreLoader/include}/pch.h | 2 +- {PreLoader => LLPreLoader/src}/PreLoader.cpp | 6 +- {PreLoader => LLPreLoader/src}/SymDB.cpp | 22 +- {PreLoader => LLPreLoader/src}/Utils.cpp | 4 +- {PreLoader => LLPreLoader/src}/dllmain.cpp | 4 +- .../rawpdb/Foundation/PDB_ArrayView.h | 0 .../rawpdb/Foundation/PDB_Assert.h | 0 .../rawpdb/Foundation/PDB_BitOperators.h | 0 .../rawpdb/Foundation/PDB_BitUtil.h | 0 .../Foundation/PDB_DisableWarningsPop.h | 0 .../Foundation/PDB_DisableWarningsPush.h | 0 .../rawpdb/Foundation/PDB_Forward.h | 0 .../third-party/rawpdb/Foundation/PDB_Log.h | 0 .../rawpdb/Foundation/PDB_Macros.h | 0 .../rawpdb/Foundation/PDB_Memory.h | 0 .../third-party/rawpdb/Foundation/PDB_Move.h | 0 .../rawpdb/Foundation/PDB_Platform.h | 0 .../rawpdb/Foundation/PDB_PointerUtil.h | 0 .../rawpdb/Foundation/PDB_Warnings.h | 0 .../third-party/rawpdb/PDB.cpp | 0 .../third-party/rawpdb/PDB.h | 0 .../rawpdb/PDB_CoalescedMSFStream.cpp | 0 .../rawpdb/PDB_CoalescedMSFStream.h | 0 .../third-party/rawpdb/PDB_DBIStream.cpp | 0 .../third-party/rawpdb/PDB_DBIStream.h | 0 .../third-party/rawpdb/PDB_DBITypes.cpp | 0 .../third-party/rawpdb/PDB_DBITypes.h | 0 .../rawpdb/PDB_DirectMSFStream.cpp | 0 .../third-party/rawpdb/PDB_DirectMSFStream.h | 0 .../third-party/rawpdb/PDB_ErrorCodes.h | 0 .../rawpdb/PDB_GlobalSymbolStream.cpp | 0 .../rawpdb/PDB_GlobalSymbolStream.h | 0 .../third-party/rawpdb/PDB_IPIStream.cpp | 0 .../third-party/rawpdb/PDB_IPIStream.h | 0 .../third-party/rawpdb/PDB_IPITypes.h | 0 .../rawpdb/PDB_ImageSectionStream.cpp | 0 .../rawpdb/PDB_ImageSectionStream.h | 0 .../third-party/rawpdb/PDB_InfoStream.cpp | 0 .../third-party/rawpdb/PDB_InfoStream.h | 0 .../rawpdb/PDB_ModuleInfoStream.cpp | 0 .../third-party/rawpdb/PDB_ModuleInfoStream.h | 0 .../rawpdb/PDB_ModuleSymbolStream.cpp | 0 .../rawpdb/PDB_ModuleSymbolStream.h | 0 .../third-party/rawpdb/PDB_PCH.cpp | 0 .../third-party/rawpdb/PDB_PCH.h | 0 .../rawpdb/PDB_PublicSymbolStream.cpp | 0 .../rawpdb/PDB_PublicSymbolStream.h | 0 .../third-party/rawpdb/PDB_RawFile.cpp | 0 .../third-party/rawpdb/PDB_RawFile.h | 0 .../rawpdb/PDB_SectionContributionStream.cpp | 0 .../rawpdb/PDB_SectionContributionStream.h | 0 .../rawpdb/PDB_SourceFileStream.cpp | 0 .../third-party/rawpdb/PDB_SourceFileStream.h | 0 .../third-party/rawpdb/PDB_Types.cpp | 0 .../third-party/rawpdb/PDB_Types.h | 0 .../third-party/rawpdb/PDB_Util.h | 0 LiteLoader/.gitignore | 2 +- LiteLoader/CMakeLists.txt | 127 +- .../Header/Impl/ObjectivePacketHelper.h | 5 - .../Header/third-party/entt/config/config.h | 85 - .../Header/third-party/entt/config/version.h | 10 - .../Header/third-party/entt/core/any.hpp | 456 --- .../Header/third-party/entt/core/attribute.h | 33 - .../third-party/entt/core/hashed_string.hpp | 269 -- .../Header/third-party/entt/core/ident.hpp | 64 - .../third-party/entt/core/type_info.hpp | 260 -- .../third-party/entt/entity/component.hpp | 34 - .../Header/third-party/entt/entity/fwd.hpp | 147 - .../Header/third-party/entt/entity/group.hpp | 969 ----- .../Header/third-party/entt/entity/helper.hpp | 168 - .../third-party/entt/entity/poly_storage.hpp | 60 - .../third-party/entt/entity/registry.hpp | 1713 -------- .../third-party/entt/entity/runtime_view.hpp | 245 -- .../third-party/entt/entity/sparse_set.hpp | 870 ----- .../third-party/entt/entity/storage.hpp | 1045 ----- .../third-party/entt/entity/utility.hpp | 46 - .../Header/third-party/entt/entity/view.hpp | 1056 ----- LiteLoader/Header/third-party/entt/fwd.hpp | 5 - .../third-party/entt/locator/locator.hpp | 111 - .../third-party/entt/meta/container.hpp | 406 -- .../Header/third-party/entt/meta/ctx.hpp | 68 - .../Header/third-party/entt/meta/factory.hpp | 597 --- .../Header/third-party/entt/meta/meta.hpp | 2226 ----------- .../Header/third-party/entt/meta/node.hpp | 270 -- .../Header/third-party/entt/meta/policy.hpp | 27 - .../Header/third-party/entt/meta/range.hpp | 100 - .../Header/third-party/entt/meta/resolve.hpp | 72 - .../Header/third-party/entt/meta/utility.hpp | 333 -- .../third-party/entt/resource/cache.hpp | 237 -- .../Header/third-party/entt/resource/fwd.hpp | 23 - .../third-party/entt/resource/handle.hpp | 189 - .../third-party/entt/resource/loader.hpp | 66 - .../third-party/entt/signal/dispatcher.hpp | 277 -- .../third-party/entt/signal/emitter.hpp | 327 -- .../Header/third-party/entt/signal/fwd.hpp | 36 - .../third-party/magic_enum/magic_enum.hpp | 985 ----- .../Kernel/Command/CommandOutputAPI.cpp | 13 - LiteLoader/Kernel/MC/GameModeAPI.cpp | 6 - LiteLoader/Kernel/MC/MobAPI.cpp | 13 - .../Kernel/MC/ResourcePackRepositoryAPI.cpp | 13 - LiteLoader/Kernel/ParticleAPI.cpp | 19 - LiteLoader/Kernel/PermissionAPI.cpp | 3 - LiteLoader/Kernel/SimulatedPlayerAPI.cpp | 110 - LiteLoader/Kernel/Utils/STLHelper.cpp | 1 - LiteLoader/Resource/LiteLoader.aps | Bin 3152 -> 0 bytes LiteLoader/Resource/LiteLoader.rc | 97 - LiteLoader/Resource/resource.h | 13 - LiteLoader/cpp.hint | 7 - .../liteloader}/AddonsHelper.h | 4 +- .../{Main => include/liteloader}/Config.h | 6 +- .../liteloader}/CrashLogger.h | 4 +- .../{Main => include/liteloader}/LiteLoader.h | 2 +- .../{Main => include/liteloader}/Loader.h | 4 +- .../liteloader}/PluginManager.h | 17 +- .../{Main => include/liteloader}/Version.h | 2 +- .../{Header => include/llapi}/AllowListAPI.h | 2 +- .../llapi}/DynamicCommandAPI.h | 18 +- .../{Header => include/llapi}/EventAPI.h | 17 +- LiteLoader/{Header => include/llapi}/FormUI.h | 0 LiteLoader/{Header => include/llapi}/Global.h | 20 +- .../llapi}/GlobalServiceAPI.h | 0 .../{Header => include/llapi}/HookAPI.h | 4 +- .../{Header => include/llapi}/I18nAPI.h | 18 +- .../{Header => include/llapi}/KVDBAPI.h | 12 +- LiteLoader/{Header => include/llapi}/LLAPI.h | 46 +- .../{Header => include/llapi}/LoggerAPI.h | 20 +- .../{Header => include/llapi}/ParticleAPI.h | 4 +- .../{Header => include/llapi}/PermissionAPI.h | 4 +- .../{Header => include/llapi}/PlayerInfoAPI.h | 2 +- .../{Header => include/llapi}/RegCommandAPI.h | 18 +- .../{Header => include/llapi}/RemoteCallAPI.h | 20 +- .../{Header => include/llapi}/ScheduleAPI.h | 2 +- .../{Header => include/llapi}/SendPacketAPI.h | 4 +- .../{Header => include/llapi}/ServerAPI.h | 6 +- .../llapi}/TranslationAPI.h | 0 .../{Header/DB => include/llapi/db}/Any.h | 30 +- .../DB => include/llapi/db}/ConnParams.h | 2 +- .../llapi/db/Impl/mysql}/Session.h | 4 +- .../llapi/db/Impl/mysql}/Stmt.h | 4 +- .../llapi/db/Impl/sqlite}/Session.h | 4 +- .../llapi/db/Impl/sqlite}/Stmt.h | 4 +- .../{Header/DB => include/llapi/db}/Pointer.h | 2 +- .../{Header/DB => include/llapi/db}/Row.h | 2 +- .../{Header/DB => include/llapi/db}/RowSet.h | 2 +- .../{Header/DB => include/llapi/db}/Session.h | 4 +- .../{Header/DB => include/llapi/db}/Stmt.h | 30 +- .../{Header/DB => include/llapi/db}/Types.h | 2 +- .../llapi/impl}/FormPacketHelper.h | 6 +- .../llapi/impl/ObjectivePacketHelper.h | 5 + .../{Header/MC => include/llapi/mc}/AABB.hpp | 3 +- .../MC => include/llapi/mc}/AABBBucket.hpp | 2 +- .../MC => include/llapi/mc}/AABBPred.hpp | 2 +- .../MC => include/llapi/mc}/Abilities.hpp | 2 +- .../MC => include/llapi/mc}/Ability.hpp | 2 +- .../llapi/mc}/AbilityCommand.hpp | 2 +- .../llapi/mc}/AbsorptionMobEffect.hpp | 2 +- .../MC => include/llapi/mc}/AbstractArrow.hpp | 2 +- .../llapi/mc}/AcaciaTreeCanopy.hpp | 2 +- .../llapi/mc}/AcaciaTreeTrunk.hpp | 2 +- .../llapi/mc}/AchievementData.hpp | 2 +- .../llapi/mc}/ActivateToolDefinition.hpp | 2 +- .../llapi/mc}/ActivateToolNode.hpp | 2 +- .../llapi/mc}/ActivatorRailBlock.hpp | 2 +- .../llapi/mc}/ActiveDirectoryIdentity.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Actor.hpp | 2 +- .../llapi/mc}/ActorAnimationController.hpp | 2 +- .../mc}/ActorAnimationControllerGroup.hpp | 2 +- .../mc}/ActorAnimationControllerPlayer.hpp | 2 +- .../llapi/mc}/ActorAnimationControllerPtr.hpp | 2 +- .../mc}/ActorAnimationControllerState.hpp | 2 +- .../ActorAnimationControllerStatePlayer.hpp | 2 +- .../llapi/mc}/ActorAnimationEvent.hpp | 2 +- .../llapi/mc}/ActorAnimationGroup.hpp | 2 +- .../llapi/mc}/ActorAnimationPlayer.hpp | 2 +- .../MC => include/llapi/mc}/ActorBlock.hpp | 2 +- .../llapi/mc}/ActorClassTree.hpp | 2 +- .../llapi/mc}/ActorCommandOrigin.hpp | 2 +- .../llapi/mc}/ActorComponentFactory.hpp | 2 +- .../llapi/mc}/ActorDamageByActorSource.hpp | 2 +- .../llapi/mc}/ActorDamageByBlockSource.hpp | 2 +- .../mc}/ActorDamageByChildActorSource.hpp | 2 +- .../llapi/mc}/ActorDamageSource.hpp | 2 +- .../llapi/mc}/ActorDefinition.hpp | 2 +- .../llapi/mc}/ActorDefinitionAttribute.hpp | 2 +- .../llapi/mc}/ActorDefinitionDescriptor.hpp | 2 +- .../llapi/mc}/ActorDefinitionDiffList.hpp | 2 +- .../mc}/ActorDefinitionEventSubcomponent.hpp | 2 +- .../llapi/mc}/ActorDefinitionGroup.hpp | 2 +- .../llapi/mc}/ActorDefinitionIdentifier.hpp | 4 +- .../llapi/mc}/ActorDefinitionPtr.hpp | 2 +- .../llapi/mc}/ActorEventCoordinator.hpp | 2 +- .../llapi/mc}/ActorEventListener.hpp | 2 +- .../llapi/mc}/ActorEventPacket.hpp | 2 +- .../MC => include/llapi/mc}/ActorFactory.hpp | 2 +- .../llapi/mc}/ActorFactoryData.hpp | 2 +- .../llapi/mc}/ActorFallPacket.hpp | 2 +- .../llapi/mc}/ActorFilterGroup.hpp | 2 +- .../llapi/mc}/ActorHasAbilityTest.hpp | 2 +- .../llapi/mc}/ActorHasComponentTest.hpp | 2 +- .../llapi/mc}/ActorHasContainerOpenTest.hpp | 2 +- .../llapi/mc}/ActorHasDamageTest.hpp | 2 +- .../llapi/mc}/ActorHasEquipmentTest.hpp | 2 +- .../llapi/mc}/ActorHasMobEffect.hpp | 2 +- .../llapi/mc}/ActorHasRangedWeaponTest.hpp | 2 +- .../llapi/mc}/ActorHasTagTest.hpp | 2 +- .../llapi/mc}/ActorHasTargetTest.hpp | 2 +- .../llapi/mc}/ActorInCaravanTest.hpp | 2 +- .../llapi/mc}/ActorInCloudsTest.hpp | 2 +- .../llapi/mc}/ActorInLavaTest.hpp | 2 +- .../llapi/mc}/ActorInNetherTest.hpp | 2 +- .../llapi/mc}/ActorInVillageTest.hpp | 2 +- .../llapi/mc}/ActorInWaterOrRainTest.hpp | 2 +- .../llapi/mc}/ActorInWaterTest.hpp | 2 +- .../llapi/mc}/ActorInWeatherTest.hpp | 2 +- .../llapi/mc}/ActorInactivityTimerTest.hpp | 2 +- .../MC => include/llapi/mc}/ActorInfo.hpp | 2 +- .../llapi/mc}/ActorInfoRegistry.hpp | 2 +- .../llapi/mc}/ActorInteraction.hpp | 2 +- .../llapi/mc}/ActorIsAvoidingMobsTest.hpp | 2 +- .../llapi/mc}/ActorIsClimbingTest.hpp | 2 +- .../llapi/mc}/ActorIsColorTest.hpp | 2 +- .../llapi/mc}/ActorIsFamilyTest.hpp | 2 +- .../llapi/mc}/ActorIsImmobileTest.hpp | 2 +- .../llapi/mc}/ActorIsLeashedTest.hpp | 2 +- .../llapi/mc}/ActorIsLeashedToTest.hpp | 2 +- .../llapi/mc}/ActorIsMarkVariantTest.hpp | 2 +- .../llapi/mc}/ActorIsMovingTest.hpp | 2 +- .../llapi/mc}/ActorIsOwnerTest.hpp | 2 +- .../llapi/mc}/ActorIsPersistentTest.hpp | 2 +- .../llapi/mc}/ActorIsRidingTest.hpp | 2 +- .../llapi/mc}/ActorIsSkinIDTest.hpp | 2 +- .../llapi/mc}/ActorIsSleepingTest.hpp | 2 +- .../llapi/mc}/ActorIsSneakingTest.hpp | 2 +- .../llapi/mc}/ActorIsTargetTest.hpp | 2 +- .../llapi/mc}/ActorIsVariantTest.hpp | 2 +- .../llapi/mc}/ActorIsVisibleTest.hpp | 2 +- .../llapi/mc}/ActorLegacySaveConverter.hpp | 2 +- .../MC => include/llapi/mc}/ActorMapping.hpp | 2 +- .../llapi/mc}/ActorOnGroundTest.hpp | 2 +- .../llapi/mc}/ActorOnLadderTest.hpp | 2 +- .../llapi/mc}/ActorParticleEffectEvent.hpp | 2 +- .../llapi/mc}/ActorPickRequestPacket.hpp | 2 +- .../llapi/mc}/ActorPlacerItem.hpp | 2 +- .../llapi/mc}/ActorRandomChanceTest.hpp | 2 +- .../llapi/mc}/ActorRiderCountTest.hpp | 2 +- .../llapi/mc}/ActorServerCommandOrigin.hpp | 2 +- .../llapi/mc}/ActorSkeletalAnimation.hpp | 2 +- .../mc}/ActorSkeletalAnimationPlayer.hpp | 2 +- .../llapi/mc}/ActorSkeletalAnimationPtr.hpp | 2 +- .../llapi/mc}/ActorSpawnRuleBase.hpp | 2 +- .../llapi/mc}/ActorSpawnRuleGroup.hpp | 2 +- .../llapi/mc}/ActorSurfaceMobTest.hpp | 2 +- .../llapi/mc}/ActorTargetFilter.hpp | 2 +- .../llapi/mc}/ActorTerrainInterlockData.hpp | 2 +- .../llapi/mc}/ActorTrustsSubjectTest.hpp | 2 +- .../llapi/mc}/ActorUndergroundTest.hpp | 2 +- .../llapi/mc}/ActorUnderwaterTest.hpp | 2 +- .../MC => include/llapi/mc}/ActorUniqueID.hpp | 2 +- .../llapi/mc}/AddActorBasePacket.hpp | 2 +- .../llapi/mc}/AddActorPacket.hpp | 2 +- .../llapi/mc}/AddBehaviorTreePacket.hpp | 2 +- .../llapi/mc}/AddEntityPacket.hpp | 2 +- .../llapi/mc}/AddItemActorPacket.hpp | 2 +- .../llapi/mc}/AddOceanTemperatureLayer.hpp | 2 +- .../llapi/mc}/AddPaintingPacket.hpp | 2 +- .../llapi/mc}/AddPlayerPacket.hpp | 2 +- .../llapi/mc}/AddRiderComponent.hpp | 2 +- .../llapi/mc}/AdmireItemComponent.hpp | 2 +- .../llapi/mc}/AdmireItemDefinition.hpp | 2 +- .../llapi/mc}/AdmireItemGoal.hpp | 2 +- .../llapi/mc}/AdventureSettingsPacket.hpp | 2 +- .../llapi/mc}/AgeableComponent.hpp | 2 +- .../llapi/mc}/AgeableDefinition.hpp | 2 +- .../MC => include/llapi/mc}/AgeableSystem.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Agent.hpp | 2 +- .../llapi/mc}/AgentBodyControl.hpp | 2 +- .../MC => include/llapi/mc}/AgentCommand.hpp | 2 +- .../llapi/mc}/AgentCommandExecutionGoal.hpp | 2 +- .../llapi/mc}/AgentCommandSystem.hpp | 2 +- .../llapi/mc}/AgentLookControl.hpp | 2 +- .../MC => include/llapi/mc}/AirBlock.hpp | 2 +- .../MC => include/llapi/mc}/AirBlockItem.hpp | 2 +- .../llapi/mc}/AllWorkerConfigurations.hpp | 2 +- .../mc}/AmbientSoundIntervalDescription.hpp | 2 +- .../llapi/mc}/AmphibiousMoveControl.hpp | 2 +- .../mc}/AmphibiousMoveControlDescription.hpp | 2 +- .../MC => include/llapi/mc}/Amplifier.hpp | 2 +- .../llapi/mc}/AngryComponent.hpp | 2 +- .../llapi/mc}/AngryDefinition.hpp | 2 +- .../MC => include/llapi/mc}/AngrySystem.hpp | 2 +- .../MC => include/llapi/mc}/Animal.hpp | 2 +- .../MC => include/llapi/mc}/AnimatePacket.hpp | 2 +- .../llapi/mc}/AnimatedImageData.hpp | 2 +- .../llapi/mc}/AnimationComponent.hpp | 2 +- .../mc}/AnimationResourceDefinitionMap.hpp | 2 +- .../llapi/mc}/AnimationScriptsDescription.hpp | 2 +- .../llapi/mc}/AnimationsDescription.hpp | 2 +- .../MC => include/llapi/mc}/AnvilBlock.hpp | 2 +- .../llapi/mc}/AnvilContainerManagerModel.hpp | 2 +- .../llapi/mc}/AnvilDamagePacket.hpp | 2 +- .../MC => include/llapi/mc}/AppConfigs.hpp | 2 +- .../MC => include/llapi/mc}/AppPlatform.hpp | 2 +- .../llapi/mc}/AppPlatformListener.hpp | 2 +- .../llapi/mc}/AppPlatformWindows.hpp | 2 +- .../llapi/mc}/AppPlatform_win32.hpp | 2 +- .../llapi/mc}/ApplyItemBinding.hpp | 2 +- .../llapi/mc}/ApplyLegacyEntityBinding.hpp | 2 +- .../llapi/mc}/ArbitraryBiomeComponent.hpp | 2 +- .../llapi/mc}/AreaAttackComponent.hpp | 2 +- .../llapi/mc}/AreaAttackDefinition.hpp | 2 +- .../llapi/mc}/AreaAttackSystem.hpp | 2 +- .../llapi/mc}/AreaEffectCloud.hpp | 2 +- .../MC => include/llapi/mc}/ArmorItem.hpp | 2 +- .../MC => include/llapi/mc}/ArmorStand.hpp | 4 +- .../llapi/mc}/ArmorStandItem.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Arrow.hpp | 2 +- .../llapi/mc}/ArrowEffectSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/ArrowItem.hpp | 2 +- .../MC => include/llapi/mc}/AsyncTracker.hpp | 2 +- .../llapi/mc}/AsynchronousIPResolver.hpp | 2 +- .../llapi/mc}/AtlasItemManager.hpp | 2 +- .../llapi/mc}/AttackCooldownComponent.hpp | 2 +- .../llapi/mc}/AttackCooldownSystem.hpp | 2 +- .../llapi/mc}/AttackDamageMobEffect.hpp | 2 +- .../llapi/mc}/AttackDefinition.hpp | 2 +- .../llapi/mc}/AttackDescription.hpp | 2 +- .../MC => include/llapi/mc}/AttackNode.hpp | 2 +- .../MC => include/llapi/mc}/Attribute.hpp | 2 +- .../MC => include/llapi/mc}/AttributeBuff.hpp | 2 +- .../llapi/mc}/AttributeCollection.hpp | 2 +- .../llapi/mc}/AttributeInstance.hpp | 2 +- .../llapi/mc}/AttributeInstanceDelegate.hpp | 5 +- .../llapi/mc}/AttributeModifier.hpp | 2 +- .../llapi/mc}/AutomaticFeatureRules.hpp | 2 +- .../MC => include/llapi/mc}/Automation.hpp | 2 +- .../mc}/AutomationClientConnectPacket.hpp | 2 +- .../mc}/AutomationPlayerCommandOrigin.hpp | 2 +- .../llapi/mc}/AuxDataBlockItem.hpp | 2 +- .../mc}/AvailableActorIdentifiersPacket.hpp | 2 +- .../llapi/mc}/AvailableCommandsPacket.hpp | 2 +- .../llapi/mc}/AvoidBlockGoal.hpp | 2 +- .../llapi/mc}/AvoidMobTypeDefinition.hpp | 2 +- .../llapi/mc}/AvoidMobTypeGoal.hpp | 2 +- .../llapi/mc}/BackgroundTask.hpp | 2 +- .../llapi/mc}/BackgroundTaskQueue.hpp | 2 +- .../llapi/mc}/BackgroundWorker.hpp | 2 +- .../llapi/mc}/BackwardsCompatTextureGroup.hpp | 2 +- .../MC => include/llapi/mc}/Balloon.hpp | 2 +- .../llapi/mc}/BalloonComponent.hpp | 2 +- .../MC => include/llapi/mc}/BalloonItem.hpp | 2 +- .../MC => include/llapi/mc}/BalloonSystem.hpp | 2 +- .../llapi/mc}/BalloonableComponent.hpp | 2 +- .../llapi/mc}/BalloonableDefinition.hpp | 2 +- .../MC => include/llapi/mc}/BambooBlock.hpp | 2 +- .../llapi/mc}/BambooBlockItem.hpp | 2 +- .../MC => include/llapi/mc}/BambooFeature.hpp | 2 +- .../MC => include/llapi/mc}/BambooSapling.hpp | 2 +- .../llapi/mc}/BannerAddPatternRecipe.hpp | 2 +- .../MC => include/llapi/mc}/BannerBlock.hpp | 2 +- .../llapi/mc}/BannerBlockActor.hpp | 2 +- .../llapi/mc}/BannerDuplicateRecipe.hpp | 2 +- .../MC => include/llapi/mc}/BannerItem.hpp | 2 +- .../MC => include/llapi/mc}/BannerPattern.hpp | 2 +- .../llapi/mc}/BannerPatternItem.hpp | 2 +- .../MC => include/llapi/mc}/BarrelBlock.hpp | 2 +- .../llapi/mc}/BarrelBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/BarrierBlock.hpp | 2 +- .../llapi/mc}/BarterComponent.hpp | 2 +- .../llapi/mc}/BarterDefinition.hpp | 2 +- .../MC => include/llapi/mc}/BarterGoal.hpp | 2 +- .../llapi/mc}/BasaltColumnsFeature.hpp | 2 +- .../llapi/mc}/BasaltPillarFeature.hpp | 2 +- .../llapi/mc}/BaseAttributeMap.hpp | 2 +- .../llapi/mc}/BaseCircuitComponent.hpp | 2 +- .../llapi/mc}/BaseCommandBlock.hpp | 2 +- .../llapi/mc}/BaseContainerMenu.hpp | 2 +- .../llapi/mc}/BaseGamePackSlices.hpp | 2 +- .../llapi/mc}/BaseGameVersion.hpp | 2 +- .../llapi/mc}/BaseGameVersioning.hpp | 2 +- .../llapi/mc}/BaseGoalDefinition.hpp | 2 +- .../llapi/mc}/BaseMobSpawner.hpp | 2 +- .../llapi/mc}/BaseMoveToBlockGoal.hpp | 2 +- .../llapi/mc}/BaseMoveToGoal.hpp | 2 +- .../llapi/mc}/BasePressurePlateBlock.hpp | 2 +- .../MC => include/llapi/mc}/BaseRailBlock.hpp | 2 +- .../llapi/mc}/BaseRailTransporter.hpp | 2 +- .../MC => include/llapi/mc}/BasicTimer.hpp | 2 +- .../llapi/mc}/BastionFeature.hpp | 2 +- .../MC => include/llapi/mc}/BastionPiece.hpp | 2 +- .../MC => include/llapi/mc}/BastionStart.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Bat.hpp | 2 +- .../llapi/mc}/BatchedNetworkPeer.hpp | 2 +- .../MC => include/llapi/mc}/BeaconBlock.hpp | 2 +- .../llapi/mc}/BeaconBlockActor.hpp | 2 +- .../llapi/mc}/BeaconContainerManagerModel.hpp | 2 +- .../llapi/mc}/BeardAndShaverDescription.hpp | 2 +- .../llapi/mc}/BeardAndShaverStorage.hpp | 2 +- .../MC => include/llapi/mc}/BeardKernel.hpp | 2 +- .../MC => include/llapi/mc}/BedBlock.hpp | 2 +- .../MC => include/llapi/mc}/BedBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/BedItem.hpp | 2 +- .../MC => include/llapi/mc}/Bedrock.hpp | 2 +- .../MC => include/llapi/mc}/BedrockBlock.hpp | 2 +- .../llapi/mc}/BedrockBlockTypes.hpp | 2 +- .../MC => include/llapi/mc}/BedrockBlocks.hpp | 2 +- .../MC => include/llapi/mc}/BedrockItems.hpp | 2 +- .../MC => include/llapi/mc}/BedrockLog.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Bee.hpp | 2 +- .../MC => include/llapi/mc}/BeehiveBlock.hpp | 2 +- .../llapi/mc}/BeehiveBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/BeetrootBlock.hpp | 2 +- .../MC => include/llapi/mc}/BegGoal.hpp | 2 +- .../llapi/mc}/BehaviorComponent.hpp | 2 +- .../MC => include/llapi/mc}/BehaviorData.hpp | 2 +- .../llapi/mc}/BehaviorDefinition.hpp | 2 +- .../llapi/mc}/BehaviorFactory.hpp | 2 +- .../MC => include/llapi/mc}/BehaviorNode.hpp | 2 +- .../llapi/mc}/BehaviorNodeUtils.hpp | 2 +- .../llapi/mc}/BehaviorSystem.hpp | 2 +- .../llapi/mc}/BehaviorTreeDefinitionPtr.hpp | 2 +- .../llapi/mc}/BehaviorTreeDescription.hpp | 2 +- .../llapi/mc}/BehaviorTreeGroup.hpp | 2 +- .../MC => include/llapi/mc}/BellBlock.hpp | 2 +- .../llapi/mc}/BellBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/BellBlockItem.hpp | 2 +- .../llapi/mc}/BigEndianStringByteInput.hpp | 2 +- .../MC => include/llapi/mc}/BinaryHeap.hpp | 2 +- .../MC => include/llapi/mc}/BinaryStream.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Biome.hpp | 2 +- .../MC => include/llapi/mc}/BiomeArea.hpp | 2 +- .../llapi/mc}/BiomeClimateSelectorLayer.hpp | 2 +- .../llapi/mc}/BiomeComponentLoading.hpp | 2 +- .../llapi/mc}/BiomeDecorationFeature.hpp | 2 +- .../llapi/mc}/BiomeDecorationSystem.hpp | 2 +- .../llapi/mc}/BiomeDefinitionListPacket.hpp | 2 +- .../llapi/mc}/BiomeFilterGroup.hpp | 2 +- .../llapi/mc}/BiomeIdCompatibility.hpp | 2 +- .../MC => include/llapi/mc}/BiomeMetadata.hpp | 2 +- .../MC => include/llapi/mc}/BiomeRegistry.hpp | 2 +- .../llapi/mc}/BiomeRegistryMergeStrategy.hpp | 2 +- .../llapi/mc}/BiomeSurfaceSystem.hpp | 2 +- .../MC => include/llapi/mc}/Blacklist.hpp | 2 +- .../llapi/mc}/BlastFurnaceBlock.hpp | 2 +- .../llapi/mc}/BlastFurnaceBlockActor.hpp | 2 +- .../mc}/BlastFurnaceContainerManagerModel.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Blaze.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Block.hpp | 39 +- .../MC => include/llapi/mc}/BlockActor.hpp | 59 +- .../llapi/mc}/BlockActorDataPacket.hpp | 2 +- .../llapi/mc}/BlockActorFactory.hpp | 2 +- .../llapi/mc}/BlockActorLevelListener.hpp | 2 +- .../llapi/mc}/BlockBlobFeature.hpp | 2 +- .../llapi/mc}/BlockBreakSensorComponent.hpp | 2 +- .../llapi/mc}/BlockBreakSensorDefinition.hpp | 2 +- .../llapi/mc}/BlockBreakSensorSystem.hpp | 2 +- .../llapi/mc}/BlockColorUtil.hpp | 2 +- .../llapi/mc}/BlockCommandOrigin.hpp | 2 +- .../llapi/mc}/BlockComponentDescription.hpp | 2 +- .../llapi/mc}/BlockComponentFactory.hpp | 2 +- .../llapi/mc}/BlockDefinition.hpp | 2 +- .../llapi/mc}/BlockDefinitionGroup.hpp | 2 +- .../llapi/mc}/BlockDescription.hpp | 2 +- .../llapi/mc}/BlockDestroyTimeDescription.hpp | 2 +- .../llapi/mc}/BlockEventCoordinator.hpp | 2 +- .../llapi/mc}/BlockEventDispatcher.hpp | 2 +- .../llapi/mc}/BlockEventDispatcherToken.hpp | 2 +- .../llapi/mc}/BlockEventListener.hpp | 2 +- .../llapi/mc}/BlockEventPacket.hpp | 2 +- .../llapi/mc}/BlockExplodeableDescription.hpp | 2 +- .../llapi/mc}/BlockFlammableDescription.hpp | 2 +- .../llapi/mc}/BlockFrictionDescription.hpp | 2 +- .../MC => include/llapi/mc}/BlockGraphics.hpp | 2 +- .../MC => include/llapi/mc}/BlockID.hpp | 2 +- .../MC => include/llapi/mc}/BlockInstance.hpp | 2 +- .../llapi/mc}/BlockIntersectionConstraint.hpp | 2 +- .../llapi/mc}/BlockIsNameTest.hpp | 2 +- .../MC => include/llapi/mc}/BlockItem.hpp | 2 +- .../MC => include/llapi/mc}/BlockLegacy.hpp | 148 +- .../llapi/mc}/BlockLightDescription.hpp | 2 +- .../mc}/BlockLightEmissionDescription.hpp | 2 +- .../llapi/mc}/BlockListEventMap.hpp | 2 +- .../llapi/mc}/BlockListSerializer.hpp | 2 +- .../llapi/mc}/BlockMapColorDescription.hpp | 2 +- .../MC => include/llapi/mc}/BlockPalette.hpp | 4 +- .../llapi/mc}/BlockPatternBuilder.hpp | 2 +- .../llapi/mc}/BlockPickRequestPacket.hpp | 2 +- .../llapi/mc}/BlockPileFeature.hpp | 2 +- .../llapi/mc}/BlockPlanterItem.hpp | 2 +- .../MC => include/llapi/mc}/BlockPos.hpp | 2 +- .../MC => include/llapi/mc}/BlockReducer.hpp | 2 +- .../MC => include/llapi/mc}/BlockSelector.hpp | 2 +- .../llapi/mc}/BlockSerializationUtils.hpp | 2 +- .../MC => include/llapi/mc}/BlockSet.hpp | 2 +- .../MC => include/llapi/mc}/BlockSource.hpp | 6 +- .../llapi/mc}/BlockSourceListener.hpp | 2 +- .../llapi/mc}/BlockTickingQueue.hpp | 2 +- .../llapi/mc}/BlockTypeRegistry.hpp | 2 +- .../MC => include/llapi/mc}/BlockUtils.hpp | 2 +- .../MC => include/llapi/mc}/BlockVolume.hpp | 2 +- .../MC => include/llapi/mc}/BlueFireBlock.hpp | 2 +- .../MC => include/llapi/mc}/BlueIceBlock.hpp | 2 +- .../llapi/mc}/BlueIceFeature.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Boat.hpp | 2 +- .../llapi/mc}/BoatFrictionHelper.hpp | 2 +- .../MC => include/llapi/mc}/BoatItem.hpp | 2 +- .../MC => include/llapi/mc}/BodyControl.hpp | 2 +- .../llapi/mc}/BodyControlSystem.hpp | 2 +- .../llapi/mc}/BoneAnimationChannel.hpp | 2 +- .../llapi/mc}/BoneOrientation.hpp | 2 +- .../llapi/mc}/BoneOrientationTransform.hpp | 2 +- .../llapi/mc}/BonusChestFeature.hpp | 2 +- .../llapi/mc}/BookCloningRecipe.hpp | 2 +- .../llapi/mc}/BookEditPacket.hpp | 2 +- .../llapi/mc}/BookshelfBlock.hpp | 2 +- .../MC => include/llapi/mc}/BoolOption.hpp | 2 +- .../MC => include/llapi/mc}/BoostItem.hpp | 2 +- .../llapi/mc}/BoostableComponent.hpp | 2 +- .../llapi/mc}/BoostableDefinition.hpp | 2 +- .../llapi/mc}/BoostableSystem.hpp | 2 +- .../MC => include/llapi/mc}/BorderBlock.hpp | 2 +- .../MC => include/llapi/mc}/BossComponent.hpp | 2 +- .../llapi/mc}/BossDefinition.hpp | 2 +- .../llapi/mc}/BossEventPacket.hpp | 2 +- .../MC => include/llapi/mc}/BossSystem.hpp | 2 +- .../MC => include/llapi/mc}/BottleItem.hpp | 2 +- .../MC => include/llapi/mc}/BoundingBox.hpp | 2 +- .../MC => include/llapi/mc}/Bounds.hpp | 2 +- .../MC => include/llapi/mc}/BowEnchant.hpp | 2 +- .../MC => include/llapi/mc}/BowItem.hpp | 2 +- .../llapi/mc}/BreakBlockDefinition.hpp | 2 +- .../llapi/mc}/BreakBlockNode.hpp | 2 +- .../llapi/mc}/BreakBlocksComponent.hpp | 2 +- .../llapi/mc}/BreakBlocksDescription.hpp | 2 +- .../llapi/mc}/BreakBlocksSystem.hpp | 2 +- .../mc}/BreakDoorAnnotationComponent.hpp | 2 +- .../mc}/BreakDoorAnnotationDescription.hpp | 2 +- .../llapi/mc}/BreakDoorAnnotationSystem.hpp | 2 +- .../MC => include/llapi/mc}/BreakDoorGoal.hpp | 2 +- .../llapi/mc}/BreathableComponent.hpp | 2 +- .../llapi/mc}/BreathableDefinition.hpp | 2 +- .../llapi/mc}/BreathableSystem.hpp | 2 +- .../llapi/mc}/BreatheAirGoal.hpp | 2 +- .../MC => include/llapi/mc}/BreedGoal.hpp | 2 +- .../llapi/mc}/BreedableComponent.hpp | 2 +- .../llapi/mc}/BreedableDefinition.hpp | 2 +- .../llapi/mc}/BreedableSystem.hpp | 2 +- .../MC => include/llapi/mc}/BreedableType.hpp | 2 +- .../llapi/mc}/BrewingStandBlock.hpp | 2 +- .../llapi/mc}/BrewingStandBlockActor.hpp | 2 +- .../mc}/BrewingStandContainerManagerModel.hpp | 2 +- .../llapi/mc}/BribeableComponent.hpp | 2 +- .../llapi/mc}/BribeableDefinition.hpp | 2 +- .../llapi/mc}/BribeableSystem.hpp | 2 +- .../MC => include/llapi/mc}/Brightness.hpp | 2 +- .../llapi/mc}/BubbleColumnBlock.hpp | 2 +- .../MC => include/llapi/mc}/BucketItem.hpp | 2 +- .../llapi/mc}/BucketableComponent.hpp | 2 +- .../llapi/mc}/BucketableDescription.hpp | 2 +- .../llapi/mc}/BuoyancyComponent.hpp | 2 +- .../llapi/mc}/BuoyancyDefinition.hpp | 2 +- .../llapi/mc}/BuoyancySystem.hpp | 2 +- .../llapi/mc}/BuriedTreasureFeature.hpp | 2 +- .../llapi/mc}/BuriedTreasurePiece.hpp | 2 +- .../llapi/mc}/BuriedTreasureStart.hpp | 2 +- .../llapi/mc}/BurnsInDaylightSystem.hpp | 2 +- .../llapi/mc}/BurstReactionComponent.hpp | 2 +- .../MC => include/llapi/mc}/BushBlock.hpp | 2 +- .../MC => include/llapi/mc}/ButtonBlock.hpp | 2 +- .../MC => include/llapi/mc}/ByteArrayTag.hpp | 2 +- .../MC => include/llapi/mc}/ByteTag.hpp | 2 +- .../llapi/mc}/BytesDataInput.hpp | 2 +- .../llapi/mc}/BytesDataOutput.hpp | 2 +- .../MC => include/llapi/mc}/CDScopedEvent.hpp | 2 +- .../{Header/MC => include/llapi/mc}/CSHA1.hpp | 2 +- .../MC => include/llapi/mc}/CactusBlock.hpp | 2 +- .../MC => include/llapi/mc}/CactusFeature.hpp | 2 +- .../MC => include/llapi/mc}/CakeBlock.hpp | 2 +- .../MC => include/llapi/mc}/CameraBlock.hpp | 2 +- .../MC => include/llapi/mc}/CameraItem.hpp | 2 +- .../llapi/mc}/CameraItemComponent.hpp | 2 +- .../MC => include/llapi/mc}/CameraPacket.hpp | 2 +- .../MC => include/llapi/mc}/CampfireBlock.hpp | 2 +- .../llapi/mc}/CampfireBlockActor.hpp | 2 +- .../llapi/mc}/CanClimbDescription.hpp | 2 +- .../llapi/mc}/CanFlyDescription.hpp | 2 +- .../llapi/mc}/CanPowerJumpDescription.hpp | 2 +- .../MC => include/llapi/mc}/CanyonFeature.hpp | 2 +- .../llapi/mc}/CapacitorComponent.hpp | 2 +- .../MC => include/llapi/mc}/CarrotBlock.hpp | 2 +- .../llapi/mc}/CarrotOnAStickItem.hpp | 2 +- .../mc}/CartographyContainerManagerModel.hpp | 2 +- .../llapi/mc}/CartographyTableBlock.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Cat.hpp | 2 +- .../llapi/mc}/CatchFireSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/CauldronBlock.hpp | 2 +- .../llapi/mc}/CauldronBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/CaveSpider.hpp | 2 +- .../llapi/mc}/CelebrateHuntDefinition.hpp | 2 +- .../llapi/mc}/CelebrateHuntSystem.hpp | 2 +- .../llapi/mc}/CelebrateHuntSystemInternal.hpp | 2 +- .../llapi/mc}/CentralSpikedFeature.hpp | 2 +- .../MC => include/llapi/mc}/Certificate.hpp | 2 +- .../MC => include/llapi/mc}/ChainBlock.hpp | 2 +- .../llapi/mc}/ChalkboardBlockActor.hpp | 2 +- .../llapi/mc}/ChanceInformation.hpp | 2 +- .../llapi/mc}/ChangeDimensionPacket.hpp | 2 +- .../llapi/mc}/ChangeSettingCommand.hpp | 2 +- .../llapi/mc}/ChargeAttackDefinition.hpp | 2 +- .../llapi/mc}/ChargeAttackGoal.hpp | 2 +- .../llapi/mc}/ChargeHeldItemDefinition.hpp | 2 +- .../llapi/mc}/ChargeHeldItemGoal.hpp | 2 +- .../llapi/mc}/ChemicalHeatBlock.hpp | 2 +- .../llapi/mc}/ChemistryAuxDataBlockItem.hpp | 2 +- .../llapi/mc}/ChemistryIngredient.hpp | 2 +- .../MC => include/llapi/mc}/ChemistryItem.hpp | 2 +- .../llapi/mc}/ChemistryRecipes.hpp | 2 +- .../llapi/mc}/ChemistryStickItem.hpp | 2 +- .../llapi/mc}/ChemistryTableBlock.hpp | 2 +- .../llapi/mc}/ChemistryTableBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/ChestBlock.hpp | 2 +- .../llapi/mc}/ChestBlockActor.hpp | 2 +- .../llapi/mc}/ChestContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/Chicken.hpp | 2 +- .../llapi/mc}/ChorusFlowerBlock.hpp | 2 +- .../llapi/mc}/ChorusPlantBlock.hpp | 2 +- .../MC => include/llapi/mc}/ChunkBlockPos.hpp | 2 +- .../llapi/mc}/ChunkBuildOrderPolicy.hpp | 2 +- .../llapi/mc}/ChunkBuildOrderPolicyBase.hpp | 2 +- .../MC => include/llapi/mc}/ChunkPos.hpp | 2 +- .../llapi/mc}/ChunkRadiusUpdatedPacket.hpp | 2 +- .../MC => include/llapi/mc}/ChunkSource.hpp | 2 +- .../llapi/mc}/ChunkViewSource.hpp | 2 +- .../mc}/CircleAroundAnchorDefinition.hpp | 2 +- .../llapi/mc}/CircleAroundAnchorGoal.hpp | 2 +- .../llapi/mc}/CircuitComponentList.hpp | 2 +- .../llapi/mc}/CircuitSceneGraph.hpp | 2 +- .../MC => include/llapi/mc}/CircuitSystem.hpp | 2 +- .../llapi/mc}/CircuitTrackingInfo.hpp | 2 +- .../llapi/mc}/ClassroomModeListener.hpp | 2 +- .../llapi/mc}/ClassroomModeNetworkHandler.hpp | 2 +- .../MC => include/llapi/mc}/ClayBlock.hpp | 2 +- .../MC => include/llapi/mc}/ClayFeature.hpp | 2 +- .../MC => include/llapi/mc}/ClearCommand.hpp | 2 +- .../mc}/ClientAutomationCommandOrigin.hpp | 2 +- .../llapi/mc}/ClientCacheBlobStatusPacket.hpp | 2 +- .../mc}/ClientCacheMissResponsePacket.hpp | 2 +- .../llapi/mc}/ClientCacheStatusPacket.hpp | 2 +- .../mc}/ClientToServerHandshakePacket.hpp | 2 +- .../mc}/ClientboundMapItemDataPacket.hpp | 2 +- .../MC => include/llapi/mc}/ClockItem.hpp | 2 +- .../llapi/mc}/ClockSpriteCalculator.hpp | 2 +- .../MC => include/llapi/mc}/CloneCommand.hpp | 2 +- .../llapi/mc}/CloseWebSocketCommand.hpp | 2 +- .../MC => include/llapi/mc}/ClothBlock.hpp | 2 +- .../llapi/mc}/ClothBlockItem.hpp | 2 +- .../MC => include/llapi/mc}/CoalItem.hpp | 2 +- .../MC => include/llapi/mc}/CocoaBlock.hpp | 2 +- .../llapi/mc}/CodeBuilderCommand.hpp | 2 +- .../llapi/mc}/CodeBuilderPacket.hpp | 2 +- .../llapi/mc}/CollisionBoxDescription.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Color.hpp | 2 +- .../llapi/mc}/Color2Description.hpp | 2 +- .../llapi/mc}/ColorDescription.hpp | 2 +- .../MC => include/llapi/mc}/ColorFormat.hpp | 2 +- .../llapi/mc}/ColorPaletteAttributes.hpp | 2 +- .../MC => include/llapi/mc}/ColoredBlock.hpp | 2 +- .../llapi/mc}/ColoredTorchBlock.hpp | 2 +- .../MC => include/llapi/mc}/Command.hpp | 2 +- .../llapi/mc}/CommandAreaFactory.hpp | 2 +- .../MC => include/llapi/mc}/CommandBlock.hpp | 2 +- .../llapi/mc}/CommandBlockActor.hpp | 2 +- .../llapi/mc}/CommandBlockComponent.hpp | 2 +- .../llapi/mc}/CommandBlockDescription.hpp | 2 +- .../llapi/mc}/CommandBlockSystem.hpp | 2 +- .../llapi/mc}/CommandBlockUpdatePacket.hpp | 2 +- .../llapi/mc}/CommandContext.hpp | 2 +- .../llapi/mc}/CommandDispatcher.hpp | 2 +- .../MC => include/llapi/mc}/CommandFlag.hpp | 0 .../llapi/mc}/CommandFunctionEntry.hpp | 2 +- .../llapi/mc}/CommandIntegerRange.hpp | 2 +- .../MC => include/llapi/mc}/CommandItem.hpp | 2 +- .../MC => include/llapi/mc}/CommandLexer.hpp | 2 +- .../llapi/mc}/CommandMessage.hpp | 2 +- .../MC => include/llapi/mc}/CommandOrigin.hpp | 2 +- .../llapi/mc}/CommandOriginData.hpp | 2 +- .../MC => include/llapi/mc}/CommandOutput.hpp | 6 +- .../llapi/mc}/CommandOutputMessage.hpp | 2 +- .../llapi/mc}/CommandOutputPacket.hpp | 2 +- .../llapi/mc}/CommandOutputParameter.hpp | 2 +- .../llapi/mc}/CommandOutputSender.hpp | 2 +- .../llapi/mc}/CommandParameterData.hpp | 2 +- .../llapi/mc}/CommandPosition.hpp | 2 +- .../llapi/mc}/CommandPositionFloat.hpp | 0 .../llapi/mc}/CommandPropertyBag.hpp | 2 +- .../llapi/mc}/CommandRawText.hpp | 2 +- .../llapi/mc}/CommandRegistry.hpp | 2 +- .../llapi/mc}/CommandRequestPacket.hpp | 2 +- .../llapi/mc}/CommandSelector.hpp | 0 .../llapi/mc}/CommandSelectorBase.hpp | 2 +- .../llapi/mc}/CommandSoftEnumRegistry.hpp | 2 +- .../llapi/mc}/CommandSyntaxInformation.hpp | 2 +- .../MC => include/llapi/mc}/CommandUtils.hpp | 2 +- .../llapi/mc}/CommandVersion.hpp | 2 +- .../MC => include/llapi/mc}/Common.hpp | 2 +- .../llapi/mc}/CompactionListenerEnv.hpp | 2 +- .../llapi/mc}/ComparatorBlock.hpp | 2 +- .../llapi/mc}/ComparatorBlockActor.hpp | 2 +- .../llapi/mc}/ComparatorCapacitor.hpp | 2 +- .../MC => include/llapi/mc}/CompassItem.hpp | 2 +- .../llapi/mc}/CompassSpriteCalculator.hpp | 2 +- .../llapi/mc}/CompletedUsingItemPacket.hpp | 2 +- .../llapi/mc}/ComplexInventoryTransaction.hpp | 2 +- .../MC => include/llapi/mc}/ComplexItem.hpp | 2 +- .../llapi/mc}/ComponentDescription.hpp | 2 +- .../llapi/mc}/CompositeDefinition.hpp | 2 +- .../llapi/mc}/CompositePackSource.hpp | 2 +- .../llapi/mc}/ComposterBlock.hpp | 2 +- .../CompoundCreatorContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/CompoundItem.hpp | 2 +- .../MC => include/llapi/mc}/CompoundTag.hpp | 2 +- .../llapi/mc}/CompoundTagEditHelper.hpp | 2 +- .../llapi/mc}/CompoundTagUpdater.hpp | 2 +- .../llapi/mc}/CompoundTagUpdaterBuilder.hpp | 2 +- .../llapi/mc}/CompoundTagUpdaterContext.hpp | 2 +- .../llapi/mc}/CompoundTagVariant.hpp | 2 +- .../llapi/mc}/CompressedNetworkPeer.hpp | 2 +- .../MC => include/llapi/mc}/ConcreteBlock.hpp | 2 +- .../llapi/mc}/ConcretePowderBlock.hpp | 2 +- .../MC => include/llapi/mc}/ConduitBlock.hpp | 2 +- .../llapi/mc}/ConduitBlockActor.hpp | 2 +- .../llapi/mc}/ConnectionRequest.hpp | 2 +- .../MC => include/llapi/mc}/Connector.hpp | 2 +- .../llapi/mc}/ConsoleChunkBlender.hpp | 2 +- .../llapi/mc}/ConsumeItemDefinition.hpp | 2 +- .../llapi/mc}/ConsumeItemNode.hpp | 2 +- .../llapi/mc}/ConsumerComponent.hpp | 2 +- .../MC => include/llapi/mc}/Container.hpp | 2 +- .../llapi/mc}/ContainerClosePacket.hpp | 2 +- .../llapi/mc}/ContainerComponent.hpp | 2 +- .../mc}/ContainerContentChangeListener.hpp | 2 +- .../llapi/mc}/ContainerDescription.hpp | 2 +- .../llapi/mc}/ContainerManagerController.hpp | 2 +- .../llapi/mc}/ContainerManagerModel.hpp | 2 +- .../llapi/mc}/ContainerModel.hpp | 2 +- .../llapi/mc}/ContainerOpenPacket.hpp | 2 +- .../llapi/mc}/ContainerScreenContext.hpp | 2 +- .../llapi/mc}/ContainerSetDataPacket.hpp | 2 +- .../llapi/mc}/ContainerSizeChangeListener.hpp | 2 +- .../llapi/mc}/ContainerValidation.hpp | 2 +- .../llapi/mc}/ContainerWeakRef.hpp | 2 +- .../llapi/mc}/ContentIdentity.hpp | 2 +- .../MC => include/llapi/mc}/ContentLog.hpp | 2 +- .../llapi/mc}/ContentLogEndPoint.hpp | 2 +- .../llapi/mc}/ContentLogFileEndPoint.hpp | 2 +- .../llapi/mc}/ContextAccessor.hpp | 2 +- .../llapi/mc}/ContextMessageLogger.hpp | 2 +- .../llapi/mc}/ContextMessageLoggerOptions.hpp | 2 +- .../MC => include/llapi/mc}/Control.hpp | 2 +- .../llapi/mc}/ControlledByPlayerGoal.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Coral.hpp | 2 +- .../MC => include/llapi/mc}/CoralBlock.hpp | 2 +- .../llapi/mc}/CoralCrustFeature.hpp | 2 +- .../MC => include/llapi/mc}/CoralFan.hpp | 2 +- .../llapi/mc}/CoralFanBlockItem.hpp | 2 +- .../MC => include/llapi/mc}/CoralFanHang.hpp | 2 +- .../MC => include/llapi/mc}/CoralFeature.hpp | 2 +- .../llapi/mc}/CoralHangFeature.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Core.hpp | 2 +- ...dleNonImplemented_DEPRECATEDASKTYLAING.hpp | 2 +- .../llapi/mc}/CraftHandlerBase.hpp | 2 +- .../llapi/mc}/CraftHandlerCrafting.hpp | 2 +- .../llapi/mc}/CraftHandlerEnchant.hpp | 2 +- .../llapi/mc}/CraftHandlerTrade.hpp | 2 +- .../llapi/mc}/CraftableCompounds.hpp | 2 +- .../llapi/mc}/CraftingContainer.hpp | 2 +- .../llapi/mc}/CraftingDataEntry.hpp | 2 +- .../llapi/mc}/CraftingDataPacket.hpp | 2 +- .../llapi/mc}/CraftingEventPacket.hpp | 2 +- .../MC => include/llapi/mc}/CraftingTag.hpp | 2 +- .../llapi/mc}/CrashDumpAssertData.hpp | 2 +- .../llapi/mc}/CrashDumpEventData.hpp | 2 +- .../llapi/mc}/CrashDumpFrameData.hpp | 2 +- .../llapi/mc}/CrashDumpGameplayData.hpp | 2 +- .../llapi/mc}/CrashDumpGlobalData.hpp | 2 +- .../llapi/mc}/CrashDumpKeyValueData.hpp | 2 +- .../MC => include/llapi/mc}/CrashDumpLog.hpp | 2 +- .../llapi/mc}/CrashDumpPlayerData.hpp | 2 +- .../llapi/mc}/CrashDumpRenderData.hpp | 2 +- .../llapi/mc}/CrashDump_AllData.hpp | 2 +- .../MC => include/llapi/mc}/CrashHandler.hpp | 2 +- .../MC => include/llapi/mc}/CrashHelper.hpp | 2 +- .../llapi/mc}/CreativeContentPacket.hpp | 2 +- .../llapi/mc}/CreativeItemEntry.hpp | 2 +- .../MC => include/llapi/mc}/Creeper.hpp | 2 +- .../MC => include/llapi/mc}/CropBlock.hpp | 2 +- .../llapi/mc}/CrossbowEnchant.hpp | 2 +- .../MC => include/llapi/mc}/CrossbowItem.hpp | 2 +- .../llapi/mc}/CryingObsidianBlock.hpp | 2 +- .../MC => include/llapi/mc}/CryptoUtils.hpp | 2 +- .../llapi/mc}/CurseBindingEnchant.hpp | 2 +- .../llapi/mc}/CurseVanishingEnchant.hpp | 2 +- .../llapi/mc}/CustomScriptEventData.hpp | 2 +- .../llapi/mc}/DBChunkStorage.hpp | 2 +- .../MC => include/llapi/mc}/DBStorage.hpp | 4 +- .../llapi/mc}/DBStorageConfig.hpp | 2 +- .../llapi/mc}/DBStorageEnvironmentChain.hpp | 2 +- .../llapi/mc}/DamageCondition.hpp | 2 +- .../llapi/mc}/DamageOverTimeSystem.hpp | 2 +- .../llapi/mc}/DamageSensorComponent.hpp | 2 +- .../llapi/mc}/DamageSensorDefinition.hpp | 2 +- .../llapi/mc}/DamageSensorTrigger.hpp | 2 +- .../llapi/mc}/DanceComponentListener.hpp | 2 +- .../MC => include/llapi/mc}/DanceSystem.hpp | 2 +- .../MC => include/llapi/mc}/DataItem.hpp | 2 +- .../llapi/mc}/DatagramHeaderFormat.hpp | 2 +- .../MC => include/llapi/mc}/DateManager.hpp | 2 +- .../llapi/mc}/DayLockCommand.hpp | 2 +- .../llapi/mc}/DaylightDetectorBlock.hpp | 2 +- .../llapi/mc}/DaylightDetectorBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/DeOpCommand.hpp | 2 +- .../MC => include/llapi/mc}/DeadBush.hpp | 2 +- .../llapi/mc}/DeadBushFeature.hpp | 2 +- .../llapi/mc}/DebugAssertException.hpp | 2 +- .../MC => include/llapi/mc}/DebugEndPoint.hpp | 2 +- .../llapi/mc}/DebugInfoComponent.hpp | 2 +- .../llapi/mc}/DebugInfoPacket.hpp | 2 +- .../MC => include/llapi/mc}/DebugUtils.hpp | 2 +- .../llapi/mc}/DecoratorDefinition.hpp | 2 +- .../llapi/mc}/DedicatedServer.hpp | 2 +- .../llapi/mc}/DedicatedServerCommands.hpp | 2 +- .../llapi/mc}/DedicatedWSServerCommand.hpp | 2 +- .../llapi/mc}/DefaultDataLoadHelper.hpp | 2 +- .../mc}/DefaultEmptyActorAnimationPlayer.hpp | 2 +- .../llapi/mc}/DefaultLookAngleDescription.hpp | 2 +- .../llapi/mc}/DefaultMobSpawner.hpp | 2 +- .../llapi/mc}/DefaultScreenCapabilities.hpp | 2 +- .../llapi/mc}/DefendTrustedTargetGoal.hpp | 2 +- .../mc}/DefendVillageTargetDefinition.hpp | 2 +- .../llapi/mc}/DefendVillageTargetGoal.hpp | 2 +- .../llapi/mc}/DefinitionEvent.hpp | 2 +- .../llapi/mc}/DefinitionEventLoader.hpp | 2 +- .../llapi/mc}/DefinitionModifier.hpp | 2 +- .../llapi/mc}/DefinitionTrigger.hpp | 2 +- .../llapi/mc}/DelayedAttackDefinition.hpp | 2 +- .../llapi/mc}/DelayedAttackGoal.hpp | 2 +- .../MC => include/llapi/mc}/DeltaFeature.hpp | 2 +- .../llapi/mc}/DeprecatedSlabBlockItem.hpp | 2 +- .../MC => include/llapi/mc}/Description.hpp | 2 +- .../llapi/mc}/DesertPyramidPiece.hpp | 2 +- .../llapi/mc}/DesertWellFeature.hpp | 2 +- .../llapi/mc}/DespawnComponent.hpp | 2 +- .../llapi/mc}/DespawnDefinition.hpp | 2 +- .../MC => include/llapi/mc}/DespawnSystem.hpp | 2 +- .../llapi/mc}/DetectorRailBlock.hpp | 2 +- .../llapi/mc}/DifficultyCommand.hpp | 2 +- .../MC => include/llapi/mc}/DiggerItem.hpp | 2 +- .../llapi/mc}/DiggingEnchant.hpp | 2 +- .../MC => include/llapi/mc}/Dimension.hpp | 2 +- .../llapi/mc}/DimensionBrightnessRamp.hpp | 2 +- .../MC => include/llapi/mc}/DiodeBlock.hpp | 2 +- .../MC => include/llapi/mc}/Direction.hpp | 2 +- .../llapi/mc}/DirectoryPackAccessStrategy.hpp | 2 +- .../llapi/mc}/DirectoryPackSource.hpp | 2 +- ...ectoryPackWithEncryptionAccessStrategy.hpp | 2 +- .../MC => include/llapi/mc}/DirtBlock.hpp | 2 +- .../llapi/mc}/DirtyTicksCounter.hpp | 2 +- .../llapi/mc}/DisconnectPacket.hpp | 2 +- .../llapi/mc}/DispenserBlock.hpp | 2 +- .../llapi/mc}/DispenserBlockActor.hpp | 2 +- .../mc}/DispenserContainerManagerModel.hpp | 2 +- .../llapi/mc}/DisplayObjective.hpp | 2 +- .../MC => include/llapi/mc}/Dolphin.hpp | 2 +- .../llapi/mc}/DolphinMoveControl.hpp | 2 +- .../MC => include/llapi/mc}/DoorBlock.hpp | 2 +- .../llapi/mc}/DoorInteractGoal.hpp | 2 +- .../MC => include/llapi/mc}/DoorItem.hpp | 2 +- .../llapi/mc}/DoublePlantBlock.hpp | 2 +- .../llapi/mc}/DoublePlantFeature.hpp | 2 +- .../MC => include/llapi/mc}/DoubleTag.hpp | 2 +- .../llapi/mc}/DouseFireSubcomponent.hpp | 2 +- .../llapi/mc}/DragonBaseGoalDefinition.hpp | 2 +- .../mc}/DragonChargePlayerDefinition.hpp | 2 +- .../llapi/mc}/DragonChargePlayerGoal.hpp | 2 +- .../llapi/mc}/DragonDeathGoal.hpp | 2 +- .../llapi/mc}/DragonEggBlock.hpp | 2 +- .../llapi/mc}/DragonFireball.hpp | 2 +- .../llapi/mc}/DragonFlamingDefinition.hpp | 2 +- .../llapi/mc}/DragonFlamingGoal.hpp | 2 +- .../llapi/mc}/DragonHoldingPatternGoal.hpp | 2 +- .../llapi/mc}/DragonLandingGoal.hpp | 2 +- .../llapi/mc}/DragonScanningGoal.hpp | 2 +- .../mc}/DragonStrafePlayerDefinition.hpp | 2 +- .../llapi/mc}/DragonStrafePlayerGoal.hpp | 2 +- .../llapi/mc}/DragonTakeoffGoal.hpp | 2 +- .../llapi/mc}/DriedKelpBlock.hpp | 2 +- .../llapi/mc}/DrinkPotionData.hpp | 2 +- .../llapi/mc}/DrinkPotionGoal.hpp | 2 +- .../llapi/mc}/DropItemForGoal.hpp | 2 +- .../MC => include/llapi/mc}/DropperBlock.hpp | 2 +- .../llapi/mc}/DropperBlockActor.hpp | 2 +- .../mc}/DropperContainerManagerModel.hpp | 2 +- .../llapi/mc}/DwellerComponent.hpp | 2 +- .../llapi/mc}/DwellerDescription.hpp | 2 +- .../MC => include/llapi/mc}/DwellerSystem.hpp | 2 +- .../MC => include/llapi/mc}/DyeColorUtil.hpp | 2 +- .../MC => include/llapi/mc}/DyePowderItem.hpp | 2 +- .../llapi/mc}/DyeableDescription.hpp | 2 +- .../llapi/mc}/DynamicJumpControl.hpp | 2 +- .../mc}/DynamicJumpControlDescription.hpp | 2 +- .../llapi/mc}/EDUWorldsScreenCapabilities.hpp | 2 +- .../MC => include/llapi/mc}/Easing.hpp | 2 +- .../llapi/mc}/EatBlockDefinition.hpp | 2 +- .../MC => include/llapi/mc}/EatBlockGoal.hpp | 2 +- .../llapi/mc}/EatCarriedItemGoal.hpp | 2 +- .../llapi/mc}/EconomyTradeableComponent.hpp | 2 +- .../llapi/mc}/EconomyTradeableDescription.hpp | 2 +- .../MC => include/llapi/mc}/EduAppConfigs.hpp | 2 +- .../llapi/mc}/EducationLevelSettings.hpp | 2 +- .../llapi/mc}/EducationLocalLevelSettings.hpp | 2 +- .../llapi/mc}/EducationMetadata.hpp | 2 +- .../llapi/mc}/EducationMetadataError.hpp | 2 +- .../llapi/mc}/EducationMetadataUtils.hpp | 2 +- .../llapi/mc}/EducationOptions.hpp | 2 +- .../llapi/mc}/EducationSettingsPacket.hpp | 2 +- .../MC => include/llapi/mc}/EffectCommand.hpp | 2 +- .../MC => include/llapi/mc}/EggItem.hpp | 2 +- .../MC => include/llapi/mc}/ElementBlock.hpp | 2 +- .../llapi/mc}/ElementBlockItem.hpp | 2 +- ...lementConstructorContainerManagerModel.hpp | 2 +- .../llapi/mc}/EmoteListPacket.hpp | 2 +- .../MC => include/llapi/mc}/EmotePacket.hpp | 2 +- .../MC => include/llapi/mc}/EmptyLootItem.hpp | 2 +- .../MC => include/llapi/mc}/EmptyMapItem.hpp | 2 +- .../llapi/mc}/EnableEncryptionCommand.hpp | 2 +- .../MC => include/llapi/mc}/Enchant.hpp | 2 +- .../mc}/EnchantBookForTradingFunction.hpp | 2 +- .../llapi/mc}/EnchantCommand.hpp | 2 +- .../mc}/EnchantRandomEquipmentFunction.hpp | 2 +- .../llapi/mc}/EnchantRandomlyFunction.hpp | 2 +- .../MC => include/llapi/mc}/EnchantUtils.hpp | 2 +- .../llapi/mc}/EnchantWithLevelsFunction.hpp | 2 +- .../llapi/mc}/EnchantedBookItem.hpp | 2 +- .../mc}/EnchantingContainerManagerModel.hpp | 2 +- .../llapi/mc}/EnchantingTableBlock.hpp | 2 +- .../llapi/mc}/EnchantingTableBlockActor.hpp | 2 +- .../llapi/mc}/EnchantmentInstance.hpp | 2 +- .../llapi/mc}/EncryptedFileAccessStrategy.hpp | 2 +- .../llapi/mc}/EncryptedNetworkPeer.hpp | 2 +- .../llapi/mc}/EncryptedProxyEnv.hpp | 2 +- .../llapi/mc}/EncryptedZipTransforms.hpp | 2 +- .../llapi/mc}/EndCityFeature.hpp | 2 +- .../MC => include/llapi/mc}/EndCityPieces.hpp | 2 +- .../MC => include/llapi/mc}/EndCityStart.hpp | 2 +- .../llapi/mc}/EndCrystalItem.hpp | 2 +- .../llapi/mc}/EndDragonFight.hpp | 2 +- .../llapi/mc}/EndGatewayBlock.hpp | 2 +- .../llapi/mc}/EndGatewayBlockActor.hpp | 2 +- .../llapi/mc}/EndGatewayFeature.hpp | 2 +- .../llapi/mc}/EndIslandFeature.hpp | 2 +- .../llapi/mc}/EndPodiumFeature.hpp | 2 +- .../llapi/mc}/EndPortalBlock.hpp | 2 +- .../llapi/mc}/EndPortalBlockActor.hpp | 2 +- .../llapi/mc}/EndPortalFrameBlock.hpp | 2 +- .../llapi/mc}/EndPortalShape.hpp | 2 +- .../MC => include/llapi/mc}/EndRodBlock.hpp | 2 +- .../MC => include/llapi/mc}/EndTag.hpp | 2 +- .../llapi/mc}/EnderChestBlock.hpp | 2 +- .../llapi/mc}/EnderChestBlockActor.hpp | 2 +- .../llapi/mc}/EnderChestContainer.hpp | 2 +- .../MC => include/llapi/mc}/EnderCrystal.hpp | 2 +- .../MC => include/llapi/mc}/EnderDragon.hpp | 2 +- .../MC => include/llapi/mc}/EnderEyeItem.hpp | 2 +- .../MC => include/llapi/mc}/EnderMan.hpp | 2 +- .../llapi/mc}/EndermanLeaveBlockGoal.hpp | 2 +- .../llapi/mc}/EndermanTakeBlockGoal.hpp | 2 +- .../MC => include/llapi/mc}/Endermite.hpp | 2 +- .../llapi/mc}/EnderpearlItem.hpp | 2 +- .../llapi/mc}/EntityComponentFactory.hpp | 2 +- .../llapi/mc}/EntityGoalFactory.hpp | 2 +- .../llapi/mc}/EntityGoalUtility.hpp | 2 +- .../llapi/mc}/EntitySensorComponent.hpp | 2 +- .../llapi/mc}/EntitySensorDefinition.hpp | 2 +- .../llapi/mc}/EntitySensorSystem.hpp | 2 +- .../llapi/mc}/EntityServerPacket.hpp | 2 +- .../MC => include/llapi/mc}/EntitySystems.hpp | 2 +- .../MC => include/llapi/mc}/EntityTypes.hpp | 2 +- .../llapi/mc}/EnvironmentRequirement.hpp | 2 +- .../llapi/mc}/EnvironmentSensorDefinition.hpp | 2 +- .../llapi/mc}/EnvironmentSensorSystem.hpp | 2 +- .../llapi/mc}/EquipItemComponent.hpp | 2 +- .../MC => include/llapi/mc}/EquipItemGoal.hpp | 2 +- .../llapi/mc}/EquipmentTableDescription.hpp | 2 +- .../llapi/mc}/EquippableComponent.hpp | 2 +- .../llapi/mc}/EquippableDefinition.hpp | 2 +- .../llapi/mc}/ErrorPathStack.hpp | 2 +- .../MC => include/llapi/mc}/EventInfo.hpp | 2 +- .../MC => include/llapi/mc}/EventPacket.hpp | 2 +- .../MC => include/llapi/mc}/EvocationFang.hpp | 2 +- .../llapi/mc}/EvocationIllager.hpp | 2 +- .../llapi/mc}/ExecuteCommand.hpp | 2 +- .../llapi/mc}/ExhaustionAttributeDelegate.hpp | 2 +- .../MC => include/llapi/mc}/ExperienceOrb.hpp | 2 +- .../llapi/mc}/ExperiencePotion.hpp | 2 +- .../llapi/mc}/ExperiencePotionItem.hpp | 2 +- .../llapi/mc}/ExperienceRewardComponent.hpp | 2 +- .../llapi/mc}/ExperienceRewardDefinition.hpp | 2 +- .../llapi/mc}/ExplodeComponent.hpp | 2 +- .../llapi/mc}/ExplodeDefinition.hpp | 2 +- .../MC => include/llapi/mc}/ExplodeSystem.hpp | 2 +- .../llapi/mc}/ExplorationMapFunction.hpp | 2 +- .../llapi/mc}/ExploreOutskirtsGoal.hpp | 2 +- .../MC => include/llapi/mc}/Explosion.hpp | 2 +- .../llapi/mc}/ExplosionDecayFunction.hpp | 2 +- .../llapi/mc}/ExpressionNode.hpp | 2 +- .../llapi/mc}/ExtendedCertificate.hpp | 2 +- .../llapi/mc}/ExtendedStreamReadResult.hpp | 2 +- .../llapi/mc}/ExternalFileLevelStorage.hpp | 2 +- .../mc}/ExternalFileLevelStorageSource.hpp | 2 +- .../MC => include/llapi/mc}/EyeOfEnder.hpp | 2 +- .../llapi/mc}/FaceDirectionalActorBlock.hpp | 2 +- .../llapi/mc}/FaceDirectionalBlock.hpp | 2 +- .../MC => include/llapi/mc}/Facing.hpp | 2 +- .../llapi/mc}/FallenTreeTrunk.hpp | 2 +- .../MC => include/llapi/mc}/FallingBlock.hpp | 2 +- .../llapi/mc}/FamilyTypeDescription.hpp | 2 +- .../llapi/mc}/FancyTreeCanopy.hpp | 2 +- .../llapi/mc}/FancyTreeTrunk.hpp | 2 +- .../MC => include/llapi/mc}/FarmBlock.hpp | 2 +- .../MC => include/llapi/mc}/Feature.hpp | 2 +- .../MC => include/llapi/mc}/FeatureHelper.hpp | 2 +- .../llapi/mc}/FeaturePoolElement.hpp | 2 +- .../llapi/mc}/FeatureRegistry.hpp | 2 +- .../llapi/mc}/FeatureToggles.hpp | 2 +- .../llapi/mc}/FeatureTypeFactory.hpp | 2 +- .../MC => include/llapi/mc}/FeedItem.hpp | 2 +- .../MC => include/llapi/mc}/FenceBlock.hpp | 2 +- .../llapi/mc}/FenceGateBlock.hpp | 2 +- .../llapi/mc}/FertilizerItem.hpp | 2 +- .../llapi/mc}/FileAccessTransforms.hpp | 2 +- .../MC => include/llapi/mc}/FileArchiver.hpp | 2 +- .../llapi/mc}/FileChunkManager.hpp | 2 +- .../MC => include/llapi/mc}/FileInfo.hpp | 2 +- .../llapi/mc}/FileSystemFileAccess.hpp | 2 +- .../llapi/mc}/FileUploadManager.hpp | 2 +- .../MC => include/llapi/mc}/FillCommand.hpp | 2 +- .../llapi/mc}/FillContainerFunction.hpp | 2 +- .../llapi/mc}/FillingContainer.hpp | 2 +- .../MC => include/llapi/mc}/FilterContext.hpp | 2 +- .../MC => include/llapi/mc}/FilterGroup.hpp | 2 +- .../MC => include/llapi/mc}/FilterInput.hpp | 2 +- .../llapi/mc}/FilterInputDefinition.hpp | 2 +- .../MC => include/llapi/mc}/FilterInputs.hpp | 2 +- .../MC => include/llapi/mc}/FilterList.hpp | 2 +- .../llapi/mc}/FilterParamDefinition.hpp | 2 +- .../llapi/mc}/FilterStringMap.hpp | 2 +- .../MC => include/llapi/mc}/FilterTest.hpp | 2 +- .../llapi/mc}/FilterTestAltitude.hpp | 2 +- .../llapi/mc}/FilterTestBiome.hpp | 2 +- .../llapi/mc}/FilterTestBiomeHasTag.hpp | 2 +- .../llapi/mc}/FilterTestBiomeHumid.hpp | 2 +- .../llapi/mc}/FilterTestBiomeSnowCovered.hpp | 2 +- .../llapi/mc}/FilterTestBrightness.hpp | 2 +- .../llapi/mc}/FilterTestClock.hpp | 2 +- .../llapi/mc}/FilterTestDaytime.hpp | 2 +- .../llapi/mc}/FilterTestDifficulty.hpp | 2 +- .../llapi/mc}/FilterTestDimensionWeather.hpp | 2 +- .../mc}/FilterTestDistanceToNearestPlayer.hpp | 2 +- .../llapi/mc}/FilterTestGameRule.hpp | 2 +- .../llapi/mc}/FilterTestHasTradeSupply.hpp | 2 +- .../llapi/mc}/FilterTestHourlyClock.hpp | 2 +- .../llapi/mc}/FilterTestLightLevel.hpp | 2 +- .../llapi/mc}/FilterTestMoonIntensity.hpp | 2 +- .../llapi/mc}/FilterTestMoonPhase.hpp | 2 +- .../llapi/mc}/FilterTestTemperatureType.hpp | 2 +- .../llapi/mc}/FilterTestTemperatureValue.hpp | 2 +- .../llapi/mc}/FindActorDefinition.hpp | 2 +- .../MC => include/llapi/mc}/FindActorNode.hpp | 2 +- .../llapi/mc}/FindBlockDefinition.hpp | 2 +- .../MC => include/llapi/mc}/FindBlockNode.hpp | 2 +- .../MC => include/llapi/mc}/FindCoverGoal.hpp | 2 +- .../MC => include/llapi/mc}/FindMountGoal.hpp | 2 +- .../llapi/mc}/FindUnderwaterTreasureGoal.hpp | 2 +- .../MC => include/llapi/mc}/FireBlock.hpp | 2 +- .../llapi/mc}/FireChargeItem.hpp | 2 +- .../llapi/mc}/FireImmuneDescription.hpp | 2 +- .../MC => include/llapi/mc}/Fireball.hpp | 2 +- .../llapi/mc}/FireworkChargeItem.hpp | 2 +- .../MC => include/llapi/mc}/FireworksItem.hpp | 2 +- .../llapi/mc}/FireworksRecipe.hpp | 2 +- .../llapi/mc}/FireworksRocketActor.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Fish.hpp | 2 +- .../llapi/mc}/FishingEnchant.hpp | 2 +- .../MC => include/llapi/mc}/FishingHook.hpp | 2 +- .../llapi/mc}/FishingRodItem.hpp | 2 +- .../llapi/mc}/FitDoubleXRoom.hpp | 2 +- .../llapi/mc}/FitDoubleXYRoom.hpp | 2 +- .../llapi/mc}/FitDoubleYRoom.hpp | 2 +- .../llapi/mc}/FitDoubleYZRoom.hpp | 2 +- .../llapi/mc}/FitDoubleZRoom.hpp | 2 +- .../MC => include/llapi/mc}/FitSimpleRoom.hpp | 2 +- .../llapi/mc}/FitSimpleTopRoom.hpp | 2 +- .../llapi/mc}/FixedBiomeSource.hpp | 2 +- .../llapi/mc}/FlatWorldGenerator.hpp | 2 +- .../llapi/mc}/FlatWorldGeneratorOptions.hpp | 2 +- .../MC => include/llapi/mc}/FleeSunGoal.hpp | 2 +- .../llapi/mc}/FlintAndSteelItem.hpp | 2 +- .../MC => include/llapi/mc}/FloatGoal.hpp | 2 +- .../llapi/mc}/FloatNavigation.hpp | 2 +- .../MC => include/llapi/mc}/FloatRange.hpp | 2 +- .../MC => include/llapi/mc}/FloatTag.hpp | 2 +- .../llapi/mc}/FloatWanderGoal.hpp | 2 +- .../llapi/mc}/FloatsInLiquidDescription.hpp | 2 +- .../llapi/mc}/FlockingComponent.hpp | 2 +- .../llapi/mc}/FlockingDefinition.hpp | 2 +- .../llapi/mc}/FlockingSystem.hpp | 2 +- .../llapi/mc}/FlockingUtility.hpp | 2 +- .../MC => include/llapi/mc}/FlowerBlock.hpp | 2 +- .../MC => include/llapi/mc}/FlowerFeature.hpp | 2 +- .../MC => include/llapi/mc}/FlowerHelper.hpp | 2 +- .../llapi/mc}/FlowerPotBlock.hpp | 2 +- .../llapi/mc}/FlowerPotBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/FlushableEnv.hpp | 2 +- .../llapi/mc}/FlushableStorageAreaEnv.hpp | 2 +- .../MC => include/llapi/mc}/FlyDefinition.hpp | 2 +- .../llapi/mc}/FlyMoveControl.hpp | 2 +- .../MC => include/llapi/mc}/FlyNode.hpp | 2 +- .../llapi/mc}/FlyingPathNavigation.hpp | 2 +- .../llapi/mc}/FlyingSpeedDescription.hpp | 2 +- .../MC => include/llapi/mc}/FoliageColor.hpp | 2 +- .../llapi/mc}/FollowCaravanGoal.hpp | 2 +- .../llapi/mc}/FollowFlockGoal.hpp | 2 +- .../MC => include/llapi/mc}/FollowMobGoal.hpp | 2 +- .../llapi/mc}/FollowOwnerGoal.hpp | 2 +- .../llapi/mc}/FollowParentGoal.hpp | 2 +- .../llapi/mc}/FollowTargetCaptainGoal.hpp | 2 +- .../MC => include/llapi/mc}/FoodConstants.hpp | 2 +- .../llapi/mc}/FoodItemComponent.hpp | 2 +- .../llapi/mc}/FootSizeDescription.hpp | 2 +- .../llapi/mc}/FormJsonValidator.hpp | 2 +- .../MC => include/llapi/mc}/FossilFeature.hpp | 2 +- .../llapi/mc}/FreezeOnHitSubcomponent.hpp | 2 +- .../llapi/mc}/FrictionModifierDescription.hpp | 2 +- .../llapi/mc}/FrostWalkerEnchant.hpp | 2 +- .../llapi/mc}/FrostedIceBlock.hpp | 2 +- .../llapi/mc}/FullPlayerInventoryWrapper.hpp | 2 +- .../llapi/mc}/FunctionCommand.hpp | 2 +- .../MC => include/llapi/mc}/FunctionEntry.hpp | 2 +- .../llapi/mc}/FunctionManager.hpp | 2 +- .../MC => include/llapi/mc}/FungusStem.hpp | 2 +- .../MC => include/llapi/mc}/FurnaceBlock.hpp | 2 +- .../llapi/mc}/FurnaceBlockActor.hpp | 2 +- .../mc}/FurnaceContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/GameCallbacks.hpp | 2 +- .../GameMasterEntityServerCommandOrigin.hpp | 2 +- .../MC => include/llapi/mc}/GameMode.hpp | 2 +- .../llapi/mc}/GameModeCommand.hpp | 2 +- .../llapi/mc}/GameModuleServer.hpp | 2 +- .../MC => include/llapi/mc}/GameRule.hpp | 2 +- .../llapi/mc}/GameRuleCommand.hpp | 2 +- .../MC => include/llapi/mc}/GameRules.hpp | 2 +- .../llapi/mc}/GameRulesChangedPacket.hpp | 2 +- .../llapi/mc}/GameRulesChangedPacketData.hpp | 2 +- .../MC => include/llapi/mc}/GameSession.hpp | 2 +- .../mc}/GameSpecificNetEventCallback.hpp | 2 +- .../MC => include/llapi/mc}/GameTypeConv.hpp | 2 +- .../MC => include/llapi/mc}/GameVersion.hpp | 2 +- .../llapi/mc}/GeneDefinition.hpp | 2 +- .../llapi/mc}/GenericMoveControl.hpp | 2 +- .../mc}/GenericMoveControlDescription.hpp | 2 +- .../llapi/mc}/GenericPathNavigation.hpp | 2 +- .../llapi/mc}/GeneticVariant.hpp | 2 +- .../llapi/mc}/GeneticsComponent.hpp | 2 +- .../llapi/mc}/GeneticsDefinition.hpp | 2 +- .../llapi/mc}/GetChunkDataCommand.hpp | 2 +- .../llapi/mc}/GetChunksCommand.hpp | 2 +- .../llapi/mc}/GetEduServerInfoCommand.hpp | 2 +- ...tInteractionPositionForBlockDefinition.hpp | 2 +- .../GetInteractionPositionForBlockNode.hpp | 2 +- .../llapi/mc}/GetSpawnPointCommand.hpp | 2 +- .../llapi/mc}/GetTopSolidBlockCommand.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Ghast.hpp | 2 +- .../llapi/mc}/GildedBlackstone.hpp | 2 +- .../MC => include/llapi/mc}/GiveCommand.hpp | 2 +- .../llapi/mc}/GiveableComponent.hpp | 2 +- .../llapi/mc}/GiveableDefinition.hpp | 2 +- .../llapi/mc}/GiveableTrigger.hpp | 2 +- .../MC => include/llapi/mc}/GlassBlock.hpp | 2 +- .../llapi/mc}/GlazedTerracottaBlock.hpp | 2 +- .../llapi/mc}/GlideMoveControl.hpp | 2 +- .../llapi/mc}/GlideMoveControlDescription.hpp | 2 +- .../llapi/mc}/GlobalPauseCommand.hpp | 2 +- .../MC => include/llapi/mc}/GlowStickItem.hpp | 2 +- .../llapi/mc}/GlowStoneFeature.hpp | 2 +- .../MC => include/llapi/mc}/GoHomeGoal.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Goal.hpp | 2 +- .../llapi/mc}/GoalDefinition.hpp | 2 +- .../llapi/mc}/GoalSelectorComponent.hpp | 2 +- .../llapi/mc}/GoalSelectorSystem.hpp | 2 +- .../llapi/mc}/GoalSelectorUtility.hpp | 2 +- .../llapi/mc}/GrantXPSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/GrassBlock.hpp | 2 +- .../llapi/mc}/GrassPathBlock.hpp | 2 +- .../MC => include/llapi/mc}/GravelBlock.hpp | 2 +- .../llapi/mc}/GrindstoneBlock.hpp | 2 +- .../mc}/GrindstoneContainerManagerModel.hpp | 2 +- .../llapi/mc}/GroundOffsetDescription.hpp | 2 +- .../llapi/mc}/GroundedConstraint.hpp | 2 +- .../llapi/mc}/GroupSizeDefinition.hpp | 2 +- .../llapi/mc}/GroupSizeSystem.hpp | 2 +- .../llapi/mc}/GrowCropSystem.hpp | 2 +- .../MC => include/llapi/mc}/Guardian.hpp | 2 +- .../llapi/mc}/GuardianAttackDefinition.hpp | 2 +- .../llapi/mc}/GuardianAttackGoal.hpp | 2 +- .../llapi/mc}/GuiDataPickItemPacket.hpp | 2 +- .../MC => include/llapi/mc}/HangingActor.hpp | 2 +- .../llapi/mc}/HangingActorItem.hpp | 2 +- .../llapi/mc}/HardcodedSpawnAreaRegistry.hpp | 2 +- .../llapi/mc}/HarvestFarmBlockGoal.hpp | 2 +- .../MC => include/llapi/mc}/HashedString.hpp | 2 +- .../MC => include/llapi/mc}/HatchetItem.hpp | 2 +- .../MC => include/llapi/mc}/HayBlockBlock.hpp | 2 +- .../llapi/mc}/HealableComponent.hpp | 2 +- .../llapi/mc}/HealableDefinition.hpp | 2 +- .../llapi/mc}/HealthAttributeDelegate.hpp | 2 +- .../MC => include/llapi/mc}/HeavyBlock.hpp | 2 +- .../llapi/mc}/HellFireFeature.hpp | 2 +- .../llapi/mc}/HellSpringFeature.hpp | 2 +- .../MC => include/llapi/mc}/HelpCommand.hpp | 2 +- .../MC => include/llapi/mc}/HideComponent.hpp | 2 +- .../llapi/mc}/HideDescription.hpp | 2 +- .../MC => include/llapi/mc}/HideGoal.hpp | 2 +- .../llapi/mc}/HistoricPredictionData.hpp | 2 +- .../MC => include/llapi/mc}/HitResult.hpp | 2 +- .../llapi/mc}/HitboxComponent.hpp | 2 +- .../llapi/mc}/HitboxDefinition.hpp | 2 +- .../MC => include/llapi/mc}/HoeItem.hpp | 2 +- .../llapi/mc}/HoldGroundGoal.hpp | 2 +- .../MC => include/llapi/mc}/HomeComponent.hpp | 2 +- .../MC => include/llapi/mc}/HoneyBlock.hpp | 2 +- .../llapi/mc}/HoneycombBlock.hpp | 2 +- .../llapi/mc}/HopMoveControl.hpp | 2 +- .../MC => include/llapi/mc}/Hopper.hpp | 2 +- .../MC => include/llapi/mc}/HopperBlock.hpp | 2 +- .../llapi/mc}/HopperBlockActor.hpp | 2 +- .../llapi/mc}/HopperComponent.hpp | 2 +- .../llapi/mc}/HopperContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/HopperSystem.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Horse.hpp | 2 +- .../llapi/mc}/HorseArmorItem.hpp | 2 +- .../llapi/mc}/HorseContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/HoverGoal.hpp | 2 +- .../llapi/mc}/HoverMoveControl.hpp | 2 +- .../llapi/mc}/HoverPathNavigation.hpp | 2 +- .../MC => include/llapi/mc}/HttpHeaders.hpp | 2 +- .../llapi/mc}/HudContainerManagerModel.hpp | 2 +- .../llapi/mc}/HudContainerModel.hpp | 2 +- .../llapi/mc}/HudScreenCapabilities.hpp | 2 +- .../llapi/mc}/HugeFungusFeature.hpp | 2 +- .../llapi/mc}/HugeMushroomBlock.hpp | 2 +- .../llapi/mc}/HugeMushroomFeature.hpp | 2 +- .../llapi/mc}/HumanoidMonster.hpp | 2 +- .../llapi/mc}/HungerAttributeDelegate.hpp | 2 +- .../llapi/mc}/HurtArmorPacket.hpp | 2 +- .../llapi/mc}/HurtByTargetGoal.hpp | 2 +- .../llapi/mc}/HurtOnConditionDefinition.hpp | 2 +- .../llapi/mc}/HurtOnConditionSystem.hpp | 2 +- .../llapi/mc}/HurtOwnerSubcomponent.hpp | 2 +- .../{Header/MC => include/llapi/mc}/I18n.hpp | 2 +- .../MC => include/llapi/mc}/I18nObserver.hpp | 2 +- .../llapi/mc}/IContainerManager.hpp | 2 +- .../llapi/mc}/IContentKeyProvider.hpp | 2 +- .../MC => include/llapi/mc}/IDataInput.hpp | 2 +- .../MC => include/llapi/mc}/IDataOutput.hpp | 2 +- .../llapi/mc}/IDefinitionInstance.hpp | 2 +- .../llapi/mc}/IDefinitionSerializer.hpp | 2 +- .../MC => include/llapi/mc}/IFileAccess.hpp | 2 +- .../llapi/mc}/IFileChunkUploader.hpp | 2 +- .../MC => include/llapi/mc}/IFilePicker.hpp | 2 +- .../llapi/mc}/IFileReadAccess.hpp | 2 +- .../llapi/mc}/IFileWriteAccess.hpp | 2 +- .../llapi/mc}/IJsonSerializable.hpp | 2 +- .../MC => include/llapi/mc}/IMinecraftApp.hpp | 2 +- .../llapi/mc}/IMinecraftEventing.hpp | 2 +- .../llapi/mc}/IPackTelemetry.hpp | 2 +- .../llapi/mc}/IPacketHandlerDispatcher.hpp | 2 +- .../llapi/mc}/ISecureStorageKeySystem.hpp | 2 +- .../mc}/ISubChunkBlockStoragePaletted.hpp | 2 +- .../MC => include/llapi/mc}/ITextObject.hpp | 2 +- .../MC => include/llapi/mc}/ITickingArea.hpp | 2 +- .../llapi/mc}/ITickingAreaView.hpp | 2 +- .../MC => include/llapi/mc}/ITreeFeature.hpp | 2 +- .../llapi/mc}/IWebviewTelemetry.hpp | 2 +- .../MC => include/llapi/mc}/IceBlock.hpp | 2 +- .../MC => include/llapi/mc}/IceBombItem.hpp | 2 +- .../llapi/mc}/IcePatchFeature.hpp | 2 +- .../llapi/mc}/IceSpikeFeature.hpp | 2 +- .../llapi/mc}/IcebergFeature.hpp | 2 +- .../llapi/mc}/IdentifierDescription.hpp | 2 +- .../llapi/mc}/IdentifierResult.hpp | 2 +- .../llapi/mc}/IdentityDefinition.hpp | 2 +- .../llapi/mc}/IdentityDictionary.hpp | 2 +- .../MC => include/llapi/mc}/IdleState.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Igloo.hpp | 2 +- .../llapi/mc}/IgniteSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/IllagerBeast.hpp | 2 +- .../mc}/IllagerBeastBlockedComponent.hpp | 2 +- .../mc}/IllagerBeastBlockedDescription.hpp | 2 +- .../llapi/mc}/ImmutableWorldCommand.hpp | 2 +- .../llapi/mc}/ImpactDamageSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/ImprovedNoise.hpp | 2 +- .../MC => include/llapi/mc}/InMemoryEnv.hpp | 2 +- .../MC => include/llapi/mc}/InMemoryFile.hpp | 2 +- .../llapi/mc}/InMemoryFileStorage.hpp | 2 +- .../llapi/mc}/InMemoryRandomAccessFile.hpp | 2 +- .../llapi/mc}/InMemorySequentialFile.hpp | 2 +- .../llapi/mc}/InMemoryWritableFile.hpp | 2 +- .../llapi/mc}/InPackagePackSource.hpp | 2 +- .../MC => include/llapi/mc}/IndexSet.hpp | 2 +- .../llapi/mc}/InsomniaSystem.hpp | 2 +- .../llapi/mc}/InspectBookshelfGoal.hpp | 2 +- .../llapi/mc}/InstantDespawnDefinition.hpp | 2 +- .../llapi/mc}/InstantDespawnSystem.hpp | 2 +- .../llapi/mc}/InstantaneousAttributeBuff.hpp | 2 +- .../llapi/mc}/InstantaneousMobEffect.hpp | 2 +- .../MC => include/llapi/mc}/Int64Tag.hpp | 2 +- .../MC => include/llapi/mc}/IntArrayTag.hpp | 2 +- .../MC => include/llapi/mc}/IntRange.hpp | 2 +- .../MC => include/llapi/mc}/IntTag.hpp | 2 +- .../llapi/mc}/InteractActionDefinition.hpp | 2 +- .../llapi/mc}/InteractActionNode.hpp | 2 +- .../llapi/mc}/InteractComponent.hpp | 2 +- .../llapi/mc}/InteractDefinition.hpp | 2 +- .../llapi/mc}/InteractPacket.hpp | 2 +- .../llapi/mc}/InteractSystem.hpp | 2 +- .../MC => include/llapi/mc}/Interaction.hpp | 2 +- .../llapi/mc}/InternalTaskGroup.hpp | 2 +- .../MC => include/llapi/mc}/Inventory.hpp | 2 +- .../llapi/mc}/InventoryAction.hpp | 2 +- .../llapi/mc}/InventoryContainerModel.hpp | 2 +- .../llapi/mc}/InventoryContentPacket.hpp | 2 +- .../MC => include/llapi/mc}/InventoryMenu.hpp | 2 +- .../llapi/mc}/InventorySlotPacket.hpp | 2 +- .../llapi/mc}/InventorySource.hpp | 2 +- .../llapi/mc}/InventoryTransaction.hpp | 2 +- .../mc}/InventoryTransactionItemGroup.hpp | 2 +- .../llapi/mc}/InventoryTransactionManager.hpp | 2 +- .../llapi/mc}/InventoryTransactionPacket.hpp | 2 +- .../llapi/mc}/InverterDefinition.hpp | 2 +- .../MC => include/llapi/mc}/InverterNode.hpp | 2 +- .../llapi/mc}/InvisibleBlock.hpp | 2 +- .../MC => include/llapi/mc}/IronGolem.hpp | 2 +- .../llapi/mc}/IsBabyDescription.hpp | 2 +- .../llapi/mc}/IsChargedDescription.hpp | 2 +- .../llapi/mc}/IsChestedDescription.hpp | 2 +- .../llapi/mc}/IsExperimentalDescription.hpp | 2 +- .../mc}/IsHiddenWhenInvisibleDescription.hpp | 2 +- .../llapi/mc}/IsIgnitedDescription.hpp | 2 +- .../llapi/mc}/IsIllagerCaptainDescription.hpp | 2 +- .../llapi/mc}/IsSaddledDescription.hpp | 2 +- .../llapi/mc}/IsShakingDescription.hpp | 2 +- .../llapi/mc}/IsShearedDescription.hpp | 2 +- .../llapi/mc}/IsSpawnableDescription.hpp | 2 +- .../llapi/mc}/IsStackableDescription.hpp | 2 +- .../llapi/mc}/IsStunnedDescription.hpp | 2 +- .../llapi/mc}/IsSummonableDescription.hpp | 2 +- .../llapi/mc}/IsTamedDescription.hpp | 2 +- .../MC => include/llapi/mc}/IslandLayer.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Item.hpp | 2 +- .../llapi/mc}/ItemAcquisitionMethodMap.hpp | 2 +- .../MC => include/llapi/mc}/ItemActor.hpp | 2 +- .../MC => include/llapi/mc}/ItemColorUtil.hpp | 2 +- .../llapi/mc}/ItemControlDescription.hpp | 2 +- .../MC => include/llapi/mc}/ItemData.hpp | 2 +- .../llapi/mc}/ItemDescriptor.hpp | 2 +- .../llapi/mc}/ItemDescriptorCount.hpp | 2 +- .../llapi/mc}/ItemEnchantOption.hpp | 2 +- .../MC => include/llapi/mc}/ItemEnchants.hpp | 2 +- .../llapi/mc}/ItemEventCoordinator.hpp | 2 +- .../llapi/mc}/ItemFrameBlock.hpp | 2 +- .../llapi/mc}/ItemFrameBlockActor.hpp | 2 +- .../llapi/mc}/ItemFrameDropItemPacket.hpp | 2 +- .../MC => include/llapi/mc}/ItemGroup.hpp | 2 +- .../MC => include/llapi/mc}/ItemInstance.hpp | 2 +- .../llapi/mc}/ItemListSerializer.hpp | 2 +- .../MC => include/llapi/mc}/ItemPack.hpp | 2 +- .../llapi/mc}/ItemReactionComponent.hpp | 2 +- .../MC => include/llapi/mc}/ItemRegistry.hpp | 2 +- .../mc}/ItemReleaseInventoryTransaction.hpp | 2 +- .../MC => include/llapi/mc}/ItemStack.hpp | 6 +- .../MC => include/llapi/mc}/ItemStackBase.hpp | 2 +- .../llapi/mc}/ItemStackNetIdVariant.hpp | 2 +- .../llapi/mc}/ItemStackNetManagerBase.hpp | 2 +- .../llapi/mc}/ItemStackNetManagerClient.hpp | 2 +- .../llapi/mc}/ItemStackNetManagerServer.hpp | 2 +- .../llapi/mc}/ItemStackRequestAction.hpp | 2 +- .../ItemStackRequestActionBeaconPayment.hpp | 2 +- .../mc}/ItemStackRequestActionConsume.hpp | 2 +- .../mc}/ItemStackRequestActionCraftBase.hpp | 2 +- .../ItemStackRequestActionCraftHandler.hpp | 2 +- ...aftNonImplemented_DEPRECATEDASKTYLAING.hpp | 2 +- ...ctionCraftResults_DEPRECATEDASKTYLAING.hpp | 2 +- .../mc}/ItemStackRequestActionCreate.hpp | 2 +- .../mc}/ItemStackRequestActionDestroy.hpp | 2 +- .../llapi/mc}/ItemStackRequestActionDrop.hpp | 2 +- .../mc}/ItemStackRequestActionHandler.hpp | 2 +- .../llapi/mc}/ItemStackRequestActionPlace.hpp | 2 +- .../llapi/mc}/ItemStackRequestActionSwap.hpp | 2 +- .../llapi/mc}/ItemStackRequestActionTake.hpp | 2 +- .../ItemStackRequestActionTransferBase.hpp | 2 +- .../llapi/mc}/ItemStackRequestPacket.hpp | 2 +- .../llapi/mc}/ItemStackRequestSlotInfo.hpp | 2 +- .../mc}/ItemStackResponseContainerInfo.hpp | 2 +- .../llapi/mc}/ItemStackResponseInfo.hpp | 2 +- .../llapi/mc}/ItemStackResponsePacket.hpp | 2 +- .../MC => include/llapi/mc}/ItemState.hpp | 2 +- .../llapi/mc}/ItemStateInstance.hpp | 2 +- .../llapi/mc}/ItemUseInventoryTransaction.hpp | 2 +- .../llapi/mc}/ItemUseMethodMap.hpp | 2 +- .../ItemUseOnActorInventoryTransaction.hpp | 2 +- .../MC => include/llapi/mc}/JigsawBlock.hpp | 2 +- .../llapi/mc}/JigsawBlockActor.hpp | 2 +- .../llapi/mc}/JigsawBlockInfo.hpp | 2 +- .../llapi/mc}/JigsawEditorData.hpp | 2 +- .../llapi/mc}/JigsawPlacement.hpp | 2 +- .../mc}/JigsawStructureActorRulesRegistry.hpp | 2 +- .../mc}/JigsawStructureBlockRulesRegistry.hpp | 2 +- .../JigsawStructureBlockTagRulesRegistry.hpp | 2 +- .../mc}/JigsawStructureElementRegistry.hpp | 2 +- .../llapi/mc}/JigsawStructureRegistry.hpp | 2 +- .../MC => include/llapi/mc}/JournaledFile.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Json.hpp | 2 +- .../MC => include/llapi/mc}/JsonHelpers.hpp | 2 +- .../MC => include/llapi/mc}/JsonPackUtils.hpp | 2 +- .../MC => include/llapi/mc}/JsonUtil.hpp | 2 +- .../MC => include/llapi/mc}/JsonValidator.hpp | 2 +- .../MC => include/llapi/mc}/JukeboxBlock.hpp | 2 +- .../llapi/mc}/JukeboxBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/JumpControl.hpp | 2 +- .../llapi/mc}/JumpControlComponent.hpp | 2 +- .../llapi/mc}/JumpControlDescription.hpp | 2 +- .../llapi/mc}/JumpControlSystem.hpp | 2 +- .../llapi/mc}/JunglePyramidPiece.hpp | 2 +- .../MC => include/llapi/mc}/KelpBlock.hpp | 2 +- .../MC => include/llapi/mc}/KelpFeature.hpp | 2 +- .../llapi/mc}/KeyFrameLerpMode.hpp | 2 +- .../llapi/mc}/KeyFrameTransform.hpp | 2 +- .../llapi/mc}/KeyFrameTransformData.hpp | 2 +- .../MC => include/llapi/mc}/KeyManager.hpp | 2 +- .../llapi/mc}/KeyOrNameResult.hpp | 2 +- .../MC => include/llapi/mc}/KickCommand.hpp | 2 +- .../MC => include/llapi/mc}/KillCommand.hpp | 2 +- .../llapi/mc}/KnockbackArmorUpdater.hpp | 2 +- .../llapi/mc}/KnockbackRoarGoal.hpp | 2 +- .../llapi/mc}/KnockbackRules.hpp | 2 +- .../mc}/LabTableContainerManagerModel.hpp | 2 +- .../llapi/mc}/LabTablePacket.hpp | 2 +- .../llapi/mc}/LabTableReaction.hpp | 2 +- .../llapi/mc}/LabTableReactionComponent.hpp | 2 +- .../MC => include/llapi/mc}/LadderBlock.hpp | 2 +- .../MC => include/llapi/mc}/LakeFeature.hpp | 2 +- .../MC => include/llapi/mc}/LanternBlock.hpp | 2 +- .../llapi/mc}/LargeCaveFeature.hpp | 2 +- .../MC => include/llapi/mc}/LargeFireball.hpp | 2 +- .../llapi/mc}/LargeHellCaveFeature.hpp | 2 +- .../MC => include/llapi/mc}/LavaSlime.hpp | 2 +- .../MC => include/llapi/mc}/LayDownGoal.hpp | 2 +- .../MC => include/llapi/mc}/LayEggGoal.hpp | 2 +- .../llapi/mc}/LayerBiomeSource.hpp | 2 +- .../MC => include/llapi/mc}/LeadItem.hpp | 2 +- .../MC => include/llapi/mc}/LeafBlock.hpp | 2 +- .../MC => include/llapi/mc}/LeafBlockItem.hpp | 2 +- .../llapi/mc}/LeapAtTargetGoal.hpp | 2 +- .../llapi/mc}/LeashFenceKnotActor.hpp | 2 +- .../llapi/mc}/LeashableComponent.hpp | 2 +- .../llapi/mc}/LeashableDefinition.hpp | 2 +- .../llapi/mc}/LeashableSystem.hpp | 2 +- .../MC => include/llapi/mc}/LecternBlock.hpp | 2 +- .../llapi/mc}/LecternBlockActor.hpp | 2 +- .../llapi/mc}/LecternUpdatePacket.hpp | 2 +- .../mc}/LegacyBlockPlacementProcessor.hpp | 2 +- .../llapi/mc}/LegacyBodyControl.hpp | 2 +- .../llapi/mc}/LegacyChunkStorage.hpp | 2 +- .../llapi/mc}/LegacyEmeraldOreFeature.hpp | 2 +- .../llapi/mc}/LegacyFlowerFeature.hpp | 2 +- .../llapi/mc}/LegacyForestFoliageFeature.hpp | 2 +- .../llapi/mc}/LegacyForestRockFeature.hpp | 2 +- .../llapi/mc}/LegacyIceFeature.hpp | 2 +- .../llapi/mc}/LegacyJigsawPlacement.hpp | 2 +- .../llapi/mc}/LegacyPackIdVersion.hpp | 2 +- .../llapi/mc}/LegacySmallMushroomsFeature.hpp | 2 +- .../llapi/mc}/LegacySpringsFeature.hpp | 2 +- .../llapi/mc}/LegacyStructureActorInfo.hpp | 2 +- .../llapi/mc}/LegacyStructureBlockInfo.hpp | 2 +- .../llapi/mc}/LegacyStructureBlockPalette.hpp | 2 +- .../llapi/mc}/LegacyStructureSettings.hpp | 2 +- .../llapi/mc}/LegacyStructureTemplate.hpp | 2 +- .../llapi/mc}/LegacySwampFoliageFeature.hpp | 2 +- .../llapi/mc}/LegacyTradeableComponent.hpp | 2 +- .../llapi/mc}/LegacyTreeFeature.hpp | 2 +- .../llapi/mc}/LegacyTreeFeatureHelpers.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Level.hpp | 2 +- .../MC => include/llapi/mc}/LevelChunk.hpp | 2 +- .../llapi/mc}/LevelChunkBuilderData.hpp | 2 +- .../llapi/mc}/LevelChunkFinalDeleter.hpp | 2 +- .../llapi/mc}/LevelChunkGarbageCollector.hpp | 2 +- .../llapi/mc}/LevelChunkPacket.hpp | 2 +- .../llapi/mc}/LevelChunkPhase1Deleter.hpp | 2 +- .../llapi/mc}/LevelContainerManagerModel.hpp | 2 +- .../llapi/mc}/LevelContainerModel.hpp | 2 +- .../MC => include/llapi/mc}/LevelData.hpp | 2 +- .../MC => include/llapi/mc}/LevelDataKeys.hpp | 2 +- .../llapi/mc}/LevelDataValue.hpp | 2 +- .../llapi/mc}/LevelDataWrapper.hpp | 2 +- .../MC => include/llapi/mc}/LevelDbEnv.hpp | 2 +- .../llapi/mc}/LevelDbFileLock.hpp | 2 +- .../MC => include/llapi/mc}/LevelDbLogger.hpp | 2 +- .../llapi/mc}/LevelDbRandomAccessFile.hpp | 2 +- .../llapi/mc}/LevelDbSequentialFile.hpp | 2 +- .../llapi/mc}/LevelDbWritableFile.hpp | 2 +- .../llapi/mc}/LevelEventCoordinator.hpp | 2 +- .../llapi/mc}/LevelEventGenericPacket.hpp | 2 +- .../llapi/mc}/LevelEventListener.hpp | 2 +- .../llapi/mc}/LevelEventPacket.hpp | 2 +- .../MC => include/llapi/mc}/LevelListener.hpp | 2 +- .../MC => include/llapi/mc}/LevelSettings.hpp | 2 +- .../llapi/mc}/LevelSoundEventMap.hpp | 2 +- .../llapi/mc}/LevelSoundEventPacket.hpp | 2 +- .../llapi/mc}/LevelSoundEventPacketV1.hpp | 2 +- .../llapi/mc}/LevelSoundEventPacketV2.hpp | 2 +- .../MC => include/llapi/mc}/LevelStorage.hpp | 2 +- .../llapi/mc}/LevelStorageSource.hpp | 2 +- .../llapi/mc}/LevelStorageWriteBatch.hpp | 2 +- .../MC => include/llapi/mc}/LevelSummary.hpp | 2 +- .../MC => include/llapi/mc}/LeverBlock.hpp | 2 +- .../mc}/LibraryItemScreenCapabilities.hpp | 2 +- .../MC => include/llapi/mc}/LightBlock.hpp | 2 +- .../MC => include/llapi/mc}/LightGemBlock.hpp | 2 +- .../MC => include/llapi/mc}/LightningBolt.hpp | 2 +- .../llapi/mc}/LingeringPotionItem.hpp | 2 +- .../MC => include/llapi/mc}/LiquidBlock.hpp | 2 +- .../llapi/mc}/LiquidBlockDynamic.hpp | 2 +- .../llapi/mc}/LiquidBlockStatic.hpp | 2 +- .../MC => include/llapi/mc}/ListCommand.hpp | 2 +- .../MC => include/llapi/mc}/ListDCommand.hpp | 2 +- .../MC => include/llapi/mc}/ListTag.hpp | 2 +- .../llapi/mc}/ListTagFloatAdder.hpp | 2 +- .../llapi/mc}/ListTagIntAdder.hpp | 2 +- .../MC => include/llapi/mc}/ListenerInfo.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Llama.hpp | 2 +- .../MC => include/llapi/mc}/LlamaSpit.hpp | 2 +- .../llapi/mc}/LocalConnector.hpp | 2 +- .../MC => include/llapi/mc}/Localization.hpp | 2 +- .../MC => include/llapi/mc}/LocateCommand.hpp | 2 +- .../llapi/mc}/LodestoneBlock.hpp | 2 +- .../llapi/mc}/LodestoneBlockActor.hpp | 2 +- .../llapi/mc}/LodestoneCompassComponent.hpp | 2 +- .../LodestoneCompassComponentCalculator.hpp | 2 +- .../llapi/mc}/LodestoneCompassItem.hpp | 2 +- .../MC => include/llapi/mc}/LogBlock.hpp | 2 +- .../MC => include/llapi/mc}/LoginPacket.hpp | 2 +- .../llapi/mc}/LookAtActorDefinition.hpp | 2 +- .../llapi/mc}/LookAtActorGoal.hpp | 2 +- .../llapi/mc}/LookAtActorNode.hpp | 2 +- .../llapi/mc}/LookAtBlockDefinition.hpp | 2 +- .../llapi/mc}/LookAtBlockNode.hpp | 2 +- .../llapi/mc}/LookAtDefinition.hpp | 2 +- .../llapi/mc}/LookAtEntityGoal.hpp | 2 +- .../llapi/mc}/LookAtPlayerGoal.hpp | 2 +- .../MC => include/llapi/mc}/LookAtSystem.hpp | 2 +- .../llapi/mc}/LookAtTargetGoal.hpp | 2 +- .../llapi/mc}/LookAtTradingPlayerGoal.hpp | 2 +- .../MC => include/llapi/mc}/LookControl.hpp | 2 +- .../llapi/mc}/LookControlComponent.hpp | 2 +- .../llapi/mc}/LookControlSystem.hpp | 2 +- .../MC => include/llapi/mc}/LoomBlock.hpp | 2 +- .../llapi/mc}/LoomContainerManagerModel.hpp | 2 +- .../llapi/mc}/LoopbackPacketSender.hpp | 2 +- .../MC => include/llapi/mc}/LootComponent.hpp | 2 +- .../llapi/mc}/LootComponentDescription.hpp | 2 +- .../MC => include/llapi/mc}/LootEnchant.hpp | 2 +- .../MC => include/llapi/mc}/LootItem.hpp | 2 +- .../LootItemActorHasMarkVariantCondition.hpp | 2 +- .../llapi/mc}/LootItemCondition.hpp | 2 +- .../llapi/mc}/LootItemConditions.hpp | 2 +- .../llapi/mc}/LootItemFunction.hpp | 2 +- .../llapi/mc}/LootItemFunctions.hpp | 2 +- .../mc}/LootItemKilledByActorCondition.hpp | 2 +- .../mc}/LootItemKilledByPlayerCondition.hpp | 2 +- .../LootItemKilledByPlayerOrPetsCondition.hpp | 2 +- .../mc}/LootItemRandomChanceCondition.hpp | 2 +- ...otItemRandomChanceWithLootingCondition.hpp | 2 +- ...ndomChanceWithSpecialModifierCondition.hpp | 2 +- ...ootItemRandomDifficultyChanceCondition.hpp | 2 +- .../MC => include/llapi/mc}/LootPool.hpp | 2 +- .../MC => include/llapi/mc}/LootPoolEntry.hpp | 2 +- .../MC => include/llapi/mc}/LootPoolTiers.hpp | 2 +- .../MC => include/llapi/mc}/LootTable.hpp | 2 +- .../llapi/mc}/LootTableContext.hpp | 2 +- .../llapi/mc}/LootTableDescription.hpp | 2 +- .../llapi/mc}/LootTableEntry.hpp | 2 +- .../llapi/mc}/LootTableReference.hpp | 2 +- .../MC => include/llapi/mc}/LootTables.hpp | 2 +- .../llapi/mc}/LootingEnchantFunction.hpp | 2 +- .../llapi/mc}/LowMemoryWatcher.hpp | 2 +- .../MC => include/llapi/mc}/MCRESULT.hpp | 2 +- .../MC => include/llapi/mc}/MagmaBlock.hpp | 2 +- .../llapi/mc}/MainChunkSource.hpp | 2 +- .../MC => include/llapi/mc}/MakeLoveGoal.hpp | 2 +- .../mc}/ManagedWanderingTraderDescription.hpp | 2 +- .../llapi/mc}/MapCloningRecipe.hpp | 2 +- .../MC => include/llapi/mc}/MapConstants.hpp | 2 +- .../llapi/mc}/MapCreateLockedCopyPacket.hpp | 2 +- .../MC => include/llapi/mc}/MapDecoration.hpp | 2 +- .../llapi/mc}/MapExtendingRecipe.hpp | 2 +- .../llapi/mc}/MapInfoRequestPacket.hpp | 2 +- .../MC => include/llapi/mc}/MapItem.hpp | 2 +- .../llapi/mc}/MapItemSavedData.hpp | 2 +- .../llapi/mc}/MapItemTrackedActor.hpp | 2 +- .../llapi/mc}/MapLockingRecipe.hpp | 2 +- .../llapi/mc}/MapUpgradingRecipe.hpp | 2 +- .../llapi/mc}/MarkVariantDescription.hpp | 2 +- .../llapi/mc}/MarketplaceSkinValidator.hpp | 2 +- .../MC => include/llapi/mc}/Material.hpp | 2 +- .../MaterialReducerContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/MeCommand.hpp | 2 +- .../MC => include/llapi/mc}/MedicineItem.hpp | 2 +- .../llapi/mc}/MegaPineTreeCanopy.hpp | 2 +- .../llapi/mc}/MegaTreeCanopy.hpp | 2 +- .../MC => include/llapi/mc}/MegaTreeTrunk.hpp | 2 +- .../llapi/mc}/MeleeAttackDefinition.hpp | 2 +- .../llapi/mc}/MeleeAttackGoal.hpp | 2 +- .../llapi/mc}/MeleeWeaponEnchant.hpp | 2 +- .../MC => include/llapi/mc}/MelonBlock.hpp | 2 +- .../MC => include/llapi/mc}/MelonFeature.hpp | 2 +- .../llapi/mc}/MemoryMappedFileAccess.hpp | 2 +- .../llapi/mc}/MemorySecureStorage.hpp | 2 +- .../llapi/mc}/MendingEnchant.hpp | 2 +- .../llapi/mc}/MerchantRecipe.hpp | 2 +- .../llapi/mc}/MerchantRecipeList.hpp | 2 +- .../llapi/mc}/MessagingCommand.hpp | 2 +- .../MC => include/llapi/mc}/MetalBlock.hpp | 2 +- .../MC => include/llapi/mc}/Minecart.hpp | 2 +- .../llapi/mc}/MinecartBlockCommandOrigin.hpp | 2 +- .../MC => include/llapi/mc}/MinecartChest.hpp | 2 +- .../llapi/mc}/MinecartCommandBlock.hpp | 2 +- .../llapi/mc}/MinecartHopper.hpp | 2 +- .../MC => include/llapi/mc}/MinecartItem.hpp | 2 +- .../llapi/mc}/MinecartRideable.hpp | 2 +- .../MC => include/llapi/mc}/MinecartTNT.hpp | 2 +- .../MC => include/llapi/mc}/Minecraft.hpp | 2 +- .../llapi/mc}/MinecraftCommands.hpp | 2 +- .../llapi/mc}/MinecraftEventing.hpp | 2 +- .../llapi/mc}/MinecraftPackets.hpp | 2 +- .../llapi/mc}/MinecraftScheduler.hpp | 2 +- .../llapi/mc}/MinecraftServerScriptEngine.hpp | 2 +- .../llapi/mc}/MinecraftWorkerPool.hpp | 2 +- .../llapi/mc}/MineshaftCorridor.hpp | 2 +- .../llapi/mc}/MineshaftCrossing.hpp | 2 +- .../MC => include/llapi/mc}/MineshaftData.hpp | 2 +- .../llapi/mc}/MineshaftFeature.hpp | 2 +- .../llapi/mc}/MineshaftPiece.hpp | 2 +- .../MC => include/llapi/mc}/MineshaftRoom.hpp | 2 +- .../llapi/mc}/MineshaftStairs.hpp | 2 +- .../llapi/mc}/MineshaftStart.hpp | 2 +- .../MC => include/llapi/mc}/MingleGoal.hpp | 2 +- .../llapi/mc}/MissingTextureAtlasItem.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Mob.hpp | 2 +- .../llapi/mc}/MobArmorEquipmentPacket.hpp | 2 +- .../MC => include/llapi/mc}/MobDescriptor.hpp | 2 +- .../MC => include/llapi/mc}/MobEffect.hpp | 2 +- .../llapi/mc}/MobEffectChangeDescription.hpp | 2 +- .../llapi/mc}/MobEffectComponent.hpp | 2 +- .../llapi/mc}/MobEffectDefinition.hpp | 2 +- .../llapi/mc}/MobEffectInstance.hpp | 2 +- .../llapi/mc}/MobEffectPacket.hpp | 2 +- .../llapi/mc}/MobEffectSubcomponent.hpp | 2 +- .../llapi/mc}/MobEffectSystem.hpp | 2 +- .../llapi/mc}/MobEquipmentPacket.hpp | 2 +- .../MC => include/llapi/mc}/MobEvent.hpp | 2 +- .../llapi/mc}/MobEventCommand.hpp | 2 +- .../MC => include/llapi/mc}/MobEvents.hpp | 2 +- .../MC => include/llapi/mc}/MobPredicates.hpp | 2 +- .../llapi/mc}/MobSpawnHerdInfo.hpp | 2 +- .../MC => include/llapi/mc}/MobSpawnRules.hpp | 2 +- .../llapi/mc}/MobSpawnerBlock.hpp | 2 +- .../llapi/mc}/MobSpawnerBlockActor.hpp | 2 +- .../llapi/mc}/MobSpawnerData.hpp | 2 +- .../llapi/mc}/MobSpawnerPermutation.hpp | 2 +- .../llapi/mc}/ModalFormRequestPacket.hpp | 2 +- .../llapi/mc}/ModalFormResponsePacket.hpp | 2 +- .../llapi/mc}/MolangArrayVariable.hpp | 2 +- .../llapi/mc}/MolangDataDrivenGeometry.hpp | 2 +- .../llapi/mc}/MolangEntityVariable.hpp | 2 +- .../llapi/mc}/MolangGenericQueryFunction.hpp | 2 +- .../mc}/MolangGenericQueryFunctionPtr.hpp | 2 +- .../llapi/mc}/MolangGeometryVariable.hpp | 2 +- .../llapi/mc}/MolangMaterialVariable.hpp | 2 +- .../llapi/mc}/MolangQueryFunction.hpp | 2 +- .../llapi/mc}/MolangQueryFunctionPtr.hpp | 2 +- .../llapi/mc}/MolangScriptArg.hpp | 2 +- .../llapi/mc}/MolangTempVariable.hpp | 2 +- .../llapi/mc}/MolangTextureVariable.hpp | 2 +- .../llapi/mc}/MolangVariableMap.hpp | 2 +- .../MC => include/llapi/mc}/Monster.hpp | 2 +- .../llapi/mc}/MonsterEggBlock.hpp | 2 +- .../llapi/mc}/MonsterRoomFeature.hpp | 2 +- .../llapi/mc}/MonumentBuilding.hpp | 2 +- .../llapi/mc}/MonumentRoomFitter.hpp | 2 +- .../llapi/mc}/MossStoneSelector.hpp | 2 +- .../MC => include/llapi/mc}/Motive.hpp | 2 +- .../llapi/mc}/MountPathingGoal.hpp | 2 +- .../llapi/mc}/MountTameableDefinition.hpp | 2 +- .../llapi/mc}/MountTamingComponent.hpp | 2 +- .../llapi/mc}/MountTamingSystem.hpp | 2 +- .../llapi/mc}/MoveActorAbsoluteData.hpp | 2 +- .../llapi/mc}/MoveActorAbsolutePacket.hpp | 2 +- .../llapi/mc}/MoveActorDeltaPacket.hpp | 2 +- .../MC => include/llapi/mc}/MoveControl.hpp | 2 +- .../llapi/mc}/MoveControlBasicDescription.hpp | 2 +- .../llapi/mc}/MoveControlComponent.hpp | 2 +- .../llapi/mc}/MoveControlDescription.hpp | 2 +- .../mc}/MoveControlDolphinDescription.hpp | 2 +- .../llapi/mc}/MoveControlFlyDescription.hpp | 2 +- .../llapi/mc}/MoveControlHoverDescription.hpp | 2 +- .../llapi/mc}/MoveControlSkipDescription.hpp | 2 +- .../llapi/mc}/MoveControlSwayDescription.hpp | 2 +- .../llapi/mc}/MoveControlSystem.hpp | 2 +- .../llapi/mc}/MoveDefinition.hpp | 2 +- .../llapi/mc}/MoveIndoorsGoal.hpp | 2 +- .../MC => include/llapi/mc}/MoveInput.hpp | 2 +- .../llapi/mc}/MoveInputHandler.hpp | 2 +- .../MC => include/llapi/mc}/MoveNode.hpp | 2 +- .../llapi/mc}/MovePlayerPacket.hpp | 2 +- .../llapi/mc}/MoveThroughVillageGoal.hpp | 2 +- .../llapi/mc}/MoveToBlockGoal.hpp | 2 +- .../llapi/mc}/MoveToDefinition.hpp | 2 +- .../llapi/mc}/MoveToLandGoal.hpp | 2 +- .../llapi/mc}/MoveToLavaGoal.hpp | 2 +- .../llapi/mc}/MoveToLiquidGoal.hpp | 2 +- .../MC => include/llapi/mc}/MoveToNode.hpp | 2 +- .../MC => include/llapi/mc}/MoveToPOIGoal.hpp | 2 +- .../llapi/mc}/MoveToRandomBlockGoal.hpp | 2 +- .../llapi/mc}/MoveToVillageGoal.hpp | 2 +- .../llapi/mc}/MoveToWaterGoal.hpp | 2 +- .../llapi/mc}/MoveTowardsRestrictionGoal.hpp | 2 +- .../llapi/mc}/MoveTowardsTargetGoal.hpp | 2 +- .../llapi/mc}/MovementInterpolator.hpp | 2 +- .../MC => include/llapi/mc}/MovingBlock.hpp | 2 +- .../llapi/mc}/MovingBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/MultiRecipe.hpp | 2 +- .../llapi/mc}/MultiplayerSettingsPacket.hpp | 2 +- .../llapi/mc}/MultiplyValueAmplifier.hpp | 2 +- .../MC => include/llapi/mc}/MushroomBlock.hpp | 2 +- .../MC => include/llapi/mc}/MushroomCow.hpp | 2 +- .../llapi/mc}/MusicBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/MyceliumBlock.hpp | 2 +- .../llapi/mc}/NBBridgeCrossing.hpp | 2 +- .../llapi/mc}/NBBridgeEndFiller.hpp | 2 +- .../llapi/mc}/NBBridgeStraight.hpp | 2 +- .../llapi/mc}/NBCastleCorridorStairsPiece.hpp | 2 +- .../mc}/NBCastleCorridorTBalconyPiece.hpp | 2 +- .../llapi/mc}/NBCastleEntrance.hpp | 2 +- .../NBCastleSmallCorridorCrossingPiece.hpp | 2 +- .../NBCastleSmallCorridorLeftTurnPiece.hpp | 2 +- .../llapi/mc}/NBCastleSmallCorridorPiece.hpp | 2 +- .../NBCastleSmallCorridorRightTurnPiece.hpp | 2 +- .../llapi/mc}/NBCastleStalkRoom.hpp | 2 +- .../llapi/mc}/NBMonsterThrone.hpp | 2 +- .../llapi/mc}/NBRoomCrossing.hpp | 2 +- .../MC => include/llapi/mc}/NBStairsRoom.hpp | 2 +- .../MC => include/llapi/mc}/NBStartPiece.hpp | 2 +- .../MC => include/llapi/mc}/NameAction.hpp | 2 +- .../llapi/mc}/NameableComponent.hpp | 2 +- .../llapi/mc}/NameableDefinition.hpp | 2 +- .../MC => include/llapi/mc}/NapGoal.hpp | 2 +- .../llapi/mc}/NavigationClimbDescription.hpp | 2 +- .../llapi/mc}/NavigationComponent.hpp | 2 +- .../llapi/mc}/NavigationDescription.hpp | 2 +- .../llapi/mc}/NavigationFloatDescription.hpp | 2 +- .../llapi/mc}/NavigationFlyDescription.hpp | 2 +- .../mc}/NavigationGenericDescription.hpp | 2 +- .../llapi/mc}/NavigationHoverDescription.hpp | 2 +- .../llapi/mc}/NavigationSwimDescription.hpp | 2 +- .../llapi/mc}/NavigationSystem.hpp | 2 +- .../llapi/mc}/NavigationUtility.hpp | 2 +- .../llapi/mc}/NavigationWalkDescription.hpp | 2 +- .../{Header/MC => include/llapi/mc}/NbtIo.hpp | 2 +- .../mc}/NearestAttackableTargetDefinition.hpp | 2 +- .../llapi/mc}/NearestAttackableTargetGoal.hpp | 2 +- ...NearestPrioritizedAttackableTargetGoal.hpp | 2 +- .../llapi/mc}/NetEventCallback.hpp | 2 +- .../llapi/mc}/NetherBrightnessRamp.hpp | 2 +- .../llapi/mc}/NetherDimension.hpp | 2 +- .../llapi/mc}/NetherFortressFeature.hpp | 2 +- .../llapi/mc}/NetherFortressPiece.hpp | 2 +- .../llapi/mc}/NetherFortressStart.hpp | 2 +- .../llapi/mc}/NetherFossilFeature.hpp | 2 +- .../llapi/mc}/NetherFungusBlock.hpp | 2 +- .../llapi/mc}/NetherGenerator.hpp | 2 +- .../llapi/mc}/NetherReactorBlock.hpp | 2 +- .../llapi/mc}/NetherReactorBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/NetherSprouts.hpp | 2 +- .../mc}/NetherStructureFeatureHelper.hpp | 2 +- .../llapi/mc}/NetherWartBlock.hpp | 2 +- .../mc}/NetheriteArmorEquippedListener.hpp | 2 +- .../llapi/mc}/NetherrackBlock.hpp | 2 +- .../llapi/mc}/NetworkAddress.hpp | 2 +- .../llapi/mc}/NetworkChunkPublisher.hpp | 2 +- .../mc}/NetworkChunkPublisherUpdatePacket.hpp | 2 +- .../llapi/mc}/NetworkChunkSource.hpp | 2 +- .../llapi/mc}/NetworkDebugManager.hpp | 2 +- .../llapi/mc}/NetworkHandler.hpp | 2 +- .../llapi/mc}/NetworkIdentifier.hpp | 2 +- .../llapi/mc}/NetworkPacketEventListener.hpp | 2 +- .../MC => include/llapi/mc}/NetworkPeer.hpp | 2 +- .../llapi/mc}/NetworkSettingsPacket.hpp | 2 +- .../llapi/mc}/NetworkStackLatencyPacket.hpp | 2 +- .../llapi/mc}/NetworkStatistics.hpp | 2 +- .../MC => include/llapi/mc}/NewLeafBlock.hpp | 2 +- .../MC => include/llapi/mc}/NewLogBlock.hpp | 2 +- .../llapi/mc}/NoSurfaceOreFeature.hpp | 2 +- .../llapi/mc}/NormalNoiseLayer.hpp | 2 +- .../MC => include/llapi/mc}/NoteBlock.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Npc.hpp | 2 +- .../MC => include/llapi/mc}/NpcAction.hpp | 2 +- .../llapi/mc}/NpcCommandAction.hpp | 2 +- .../MC => include/llapi/mc}/NpcComponent.hpp | 2 +- .../MC => include/llapi/mc}/NpcGUIOffset.hpp | 2 +- .../llapi/mc}/NpcI18nObserver.hpp | 2 +- .../llapi/mc}/NpcRequestPacket.hpp | 2 +- .../MC => include/llapi/mc}/NpcUrlAction.hpp | 2 +- .../MC => include/llapi/mc}/NullLogger.hpp | 2 +- .../llapi/mc}/NullSecureStorage.hpp | 2 +- .../llapi/mc}/NullSoundPlayer.hpp | 2 +- .../MC => include/llapi/mc}/NyliumBlock.hpp | 2 +- .../MC => include/llapi/mc}/OSInformation.hpp | 2 +- .../MC => include/llapi/mc}/Objective.hpp | 4 +- .../llapi/mc}/ObjectiveCriteria.hpp | 2 +- .../MC => include/llapi/mc}/ObserverBlock.hpp | 2 +- .../MC => include/llapi/mc}/ObsidianBlock.hpp | 2 +- .../llapi/mc}/OceanMixerLayer.hpp | 2 +- .../llapi/mc}/OceanMonumentCoreRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentDoubleXRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentDoubleXYRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentDoubleYRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentDoubleYZRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentDoubleZRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentEntryRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentFeature.hpp | 2 +- .../llapi/mc}/OceanMonumentPenthouse.hpp | 2 +- .../llapi/mc}/OceanMonumentPiece.hpp | 2 +- .../llapi/mc}/OceanMonumentSimpleRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentSimpleTopRoom.hpp | 2 +- .../llapi/mc}/OceanMonumentStart.hpp | 2 +- .../llapi/mc}/OceanMonumentWingRoom.hpp | 2 +- .../llapi/mc}/OceanRuinFeature.hpp | 2 +- .../llapi/mc}/OceanRuinPieces.hpp | 2 +- .../llapi/mc}/OceanRuinStart.hpp | 2 +- .../MC => include/llapi/mc}/Ocelot.hpp | 2 +- .../llapi/mc}/OcelotAttackDefinition.hpp | 2 +- .../llapi/mc}/OcelotAttackGoal.hpp | 2 +- .../llapi/mc}/OcelotSitOnBlockGoal.hpp | 2 +- .../llapi/mc}/OculusPlatformMessagePump.hpp | 2 +- .../llapi/mc}/OfferFlowerGoal.hpp | 2 +- .../MC => include/llapi/mc}/OldLeafBlock.hpp | 2 +- .../MC => include/llapi/mc}/OldLogBlock.hpp | 2 +- .../llapi/mc}/OnDeathDescription.hpp | 2 +- .../llapi/mc}/OnFriendlyAngerDescription.hpp | 2 +- .../llapi/mc}/OnHitSubcomponent.hpp | 2 +- .../llapi/mc}/OnHurtByPlayerDescription.hpp | 2 +- .../llapi/mc}/OnHurtDescription.hpp | 2 +- .../llapi/mc}/OnIgniteDescription.hpp | 2 +- .../mc}/OnScreenTextureAnimationPacket.hpp | 2 +- .../llapi/mc}/OnStartLandingDescription.hpp | 2 +- .../llapi/mc}/OnStartTakeoffDescription.hpp | 2 +- .../llapi/mc}/OnTargetAcquiredDescription.hpp | 2 +- .../llapi/mc}/OnTargetEscapeDescription.hpp | 2 +- .../llapi/mc}/OnWakeWithOwnerDescription.hpp | 2 +- .../MC => include/llapi/mc}/OpCommand.hpp | 2 +- .../llapi/mc}/OpenDoorAnnotationComponent.hpp | 2 +- .../mc}/OpenDoorAnnotationDescription.hpp | 2 +- .../llapi/mc}/OpenDoorAnnotationSystem.hpp | 2 +- .../MC => include/llapi/mc}/OpenDoorGoal.hpp | 2 +- .../MC => include/llapi/mc}/Option.hpp | 2 +- .../llapi/mc}/OptionalString.hpp | 2 +- .../MC => include/llapi/mc}/OreBlock.hpp | 2 +- .../MC => include/llapi/mc}/OreFeature.hpp | 2 +- .../llapi/mc}/OverworldBrightnessRamp.hpp | 2 +- .../llapi/mc}/OverworldDimension.hpp | 2 +- .../llapi/mc}/OverworldGenerator.hpp | 2 +- .../llapi/mc}/OwnerHurtByTargetGoal.hpp | 2 +- .../llapi/mc}/OwnerHurtTargetGoal.hpp | 2 +- .../llapi/mc}/OwnerStorageEntity.hpp | 2 +- .../MC => include/llapi/mc}/POIBlueprint.hpp | 2 +- .../MC => include/llapi/mc}/POIInstance.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Pack.hpp | 2 +- .../llapi/mc}/PackAccessStrategy.hpp | 2 +- .../llapi/mc}/PackAccessStrategyFactory.hpp | 2 +- .../llapi/mc}/PackDependencyManager.hpp | 2 +- .../llapi/mc}/PackDiscoveryError.hpp | 2 +- .../MC => include/llapi/mc}/PackError.hpp | 2 +- .../MC => include/llapi/mc}/PackIdVersion.hpp | 2 +- .../MC => include/llapi/mc}/PackInstance.hpp | 2 +- .../llapi/mc}/PackInstanceId.hpp | 2 +- .../MC => include/llapi/mc}/PackLoadError.hpp | 2 +- .../MC => include/llapi/mc}/PackManifest.hpp | 2 +- .../llapi/mc}/PackManifestFactory.hpp | 2 +- .../MC => include/llapi/mc}/PackReport.hpp | 2 +- .../MC => include/llapi/mc}/PackSetting.hpp | 2 +- .../MC => include/llapi/mc}/PackSettings.hpp | 2 +- .../llapi/mc}/PackSettingsError.hpp | 2 +- .../llapi/mc}/PackSettingsFactory.hpp | 2 +- .../llapi/mc}/PackSettingsJsonValidator.hpp | 2 +- .../MC => include/llapi/mc}/PackSource.hpp | 2 +- .../llapi/mc}/PackSourceFactory.hpp | 2 +- .../llapi/mc}/PackSourceReport.hpp | 2 +- .../llapi/mc}/PackUploadContent.hpp | 2 +- .../MC => include/llapi/mc}/Packet.hpp | 2 +- .../MC => include/llapi/mc}/PacketSender.hpp | 2 +- .../PacketViolationDetectedTelemetryData.hpp | 2 +- .../llapi/mc}/PacketViolationHandler.hpp | 2 +- .../mc}/PacketViolationWarningPacket.hpp | 2 +- .../MC => include/llapi/mc}/PageContent.hpp | 2 +- .../MC => include/llapi/mc}/Painting.hpp | 2 +- .../MC => include/llapi/mc}/Palette.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Panda.hpp | 2 +- .../MC => include/llapi/mc}/PanicGoal.hpp | 2 +- .../MC => include/llapi/mc}/Parrot.hpp | 2 +- .../MC => include/llapi/mc}/Parser.hpp | 2 +- .../llapi/mc}/ParticleCommand.hpp | 2 +- .../llapi/mc}/ParticleOnHitSubcomponent.hpp | 2 +- .../llapi/mc}/ParticleTypeMap.hpp | 2 +- .../mc}/ParticlesBlockExplosionEvent.hpp | 2 +- .../llapi/mc}/ParticlesTeleportTrailEvent.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Path.hpp | 2 +- .../MC => include/llapi/mc}/PathFinder.hpp | 2 +- .../llapi/mc}/PathNavigation.hpp | 2 +- .../llapi/mc}/PauseScreenCapabilities.hpp | 2 +- .../MC => include/llapi/mc}/PeekSystem.hpp | 2 +- .../MC => include/llapi/mc}/PendingArea.hpp | 2 +- .../llapi/mc}/PerfContextTracker.hpp | 2 +- .../llapi/mc}/PerfContextTrackerReport.hpp | 2 +- .../MC => include/llapi/mc}/PerfTimer.hpp | 2 +- .../MC => include/llapi/mc}/Performance.hpp | 2 +- .../MC => include/llapi/mc}/PerlinNoise.hpp | 2 +- .../llapi/mc}/PerlinSimplexNoise.hpp | 2 +- .../llapi/mc}/PermissionCommand.hpp | 2 +- .../llapi/mc}/PermissionsFile.hpp | 2 +- .../llapi/mc}/PermissionsHandler.hpp | 2 +- .../llapi/mc}/PersistentDescription.hpp | 2 +- .../llapi/mc}/PetSleepWithOwnerGoal.hpp | 2 +- .../llapi/mc}/PetSleepWithOwnerState.hpp | 2 +- .../MC => include/llapi/mc}/Phantom.hpp | 2 +- .../MC => include/llapi/mc}/PhotoStorage.hpp | 2 +- .../llapi/mc}/PhotoTransferPacket.hpp | 2 +- .../MC => include/llapi/mc}/PickaxeItem.hpp | 2 +- .../llapi/mc}/PickupItemsGoal.hpp | 2 +- .../MC => include/llapi/mc}/PieceWeight.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Pig.hpp | 2 +- .../MC => include/llapi/mc}/PigZombie.hpp | 2 +- .../MC => include/llapi/mc}/Piglin.hpp | 2 +- .../MC => include/llapi/mc}/Pillager.hpp | 2 +- .../llapi/mc}/PillagerOutpostFeature.hpp | 2 +- .../llapi/mc}/PillagerOutpostPieces.hpp | 2 +- .../llapi/mc}/PillagerOutpostStart.hpp | 2 +- .../llapi/mc}/PineTreeCanopy.hpp | 2 +- .../llapi/mc}/PingedCompatibleServer.hpp | 2 +- .../llapi/mc}/PistonArmBlock.hpp | 2 +- .../MC => include/llapi/mc}/PistonBlock.hpp | 2 +- .../llapi/mc}/PistonBlockActor.hpp | 2 +- .../llapi/mc}/PistonConsumer.hpp | 2 +- .../llapi/mc}/PlaceBlockDefinition.hpp | 2 +- .../llapi/mc}/PlaceBlockNode.hpp | 2 +- .../MC => include/llapi/mc}/PlanksBlock.hpp | 2 +- .../MC => include/llapi/mc}/PlayGoal.hpp | 2 +- .../llapi/mc}/PlaySoundCommand.hpp | 2 +- .../llapi/mc}/PlaySoundPacket.hpp | 2 +- .../llapi/mc}/PlaySoundReactionComponent.hpp | 2 +- .../llapi/mc}/PlayStatusPacket.hpp | 2 +- .../MC => include/llapi/mc}/Player.hpp | 5 +- .../llapi/mc}/PlayerActionPacket.hpp | 2 +- .../llapi/mc}/PlayerArmorDamagePacket.hpp | 2 +- .../llapi/mc}/PlayerAuthInputPacket.hpp | 2 +- .../llapi/mc}/PlayerCommandOrigin.hpp | 2 +- .../llapi/mc}/PlayerDataSystem.hpp | 2 +- .../llapi/mc}/PlayerEnchantOptionsPacket.hpp | 2 +- .../llapi/mc}/PlayerEventCoordinator.hpp | 2 +- .../llapi/mc}/PlayerEventListener.hpp | 2 +- .../llapi/mc}/PlayerHotbarPacket.hpp | 2 +- .../llapi/mc}/PlayerInputPacket.hpp | 2 +- .../llapi/mc}/PlayerInteractionSystem.hpp | 2 +- .../llapi/mc}/PlayerInventory.hpp | 4 +- .../llapi/mc}/PlayerListEntry.hpp | 2 +- .../llapi/mc}/PlayerListPacket.hpp | 2 +- .../llapi/mc}/PlayerMovement.hpp | 2 +- .../PlayerRespawnBlockRadiusRandomizer.hpp | 2 +- .../llapi/mc}/PlayerRespawnTelemetryData.hpp | 2 +- .../llapi/mc}/PlayerRideTamedGoal.hpp | 2 +- .../llapi/mc}/PlayerScoreboardId.hpp | 2 +- .../llapi/mc}/PlayerSkinPacket.hpp | 2 +- .../llapi/mc}/PlayerStorageIds.hpp | 2 +- .../llapi/mc}/PlayerUIContainer.hpp | 2 +- .../llapi/mc}/PlayerUIContainerModel.hpp | 2 +- .../llapi/mc}/PlayerUIContainerModelBase.hpp | 2 +- .../llapi/mc}/PodzolAreaFeature.hpp | 2 +- .../MC => include/llapi/mc}/PodzolBlock.hpp | 2 +- .../MC => include/llapi/mc}/PolarBear.hpp | 2 +- .../llapi/mc}/PoolElementStructurePiece.hpp | 2 +- .../MC => include/llapi/mc}/PortalBlock.hpp | 2 +- .../MC => include/llapi/mc}/PortalForcer.hpp | 2 +- .../MC => include/llapi/mc}/PortalShape.hpp | 2 +- .../llapi/mc}/PosibleTransformation.hpp | 2 +- .../PositionTrackingDBClientRequestPacket.hpp | 2 +- ...ositionTrackingDBServerBroadcastPacket.hpp | 2 +- .../llapi/mc}/PositionTrackingId.hpp | 2 +- .../llapi/mc}/PostprocessingManager.hpp | 2 +- .../MC => include/llapi/mc}/PotatoBlock.hpp | 2 +- .../MC => include/llapi/mc}/Potion.hpp | 2 +- .../MC => include/llapi/mc}/PotionBrewing.hpp | 2 +- .../MC => include/llapi/mc}/PotionItem.hpp | 2 +- .../llapi/mc}/PoweredBlockComponent.hpp | 2 +- .../llapi/mc}/PoweredRailBlock.hpp | 2 +- .../llapi/mc}/PrecompiledCommandOrigin.hpp | 2 +- .../MC => include/llapi/mc}/Predicate.hpp | 2 +- .../llapi/mc}/PreferredPathDescription.hpp | 2 +- .../llapi/mc}/PressurePlateBlock.hpp | 2 +- .../llapi/mc}/PrettySnbtFormat.hpp | 4 +- .../MC => include/llapi/mc}/PrimedTnt.hpp | 2 +- .../MC => include/llapi/mc}/PrintStream.hpp | 2 +- .../llapi/mc}/PrioritizedGoal.hpp | 2 +- .../llapi/mc}/PrismarineBlock.hpp | 2 +- .../llapi/mc}/PrivateKeyManager.hpp | 2 +- .../llapi/mc}/ProducerComponent.hpp | 2 +- .../MC => include/llapi/mc}/ProfilerLite.hpp | 2 +- .../llapi/mc}/ProjectileComponent.hpp | 2 +- .../llapi/mc}/ProjectileDescription.hpp | 2 +- .../llapi/mc}/ProjectileFactory.hpp | 2 +- .../llapi/mc}/ProjectileSystem.hpp | 2 +- .../llapi/mc}/PropertiesSettings.hpp | 2 +- .../MC => include/llapi/mc}/PropertyBag.hpp | 2 +- .../llapi/mc}/PropertyDescription.hpp | 2 +- .../llapi/mc}/ProtectionEnchant.hpp | 2 +- .../MC => include/llapi/mc}/Pufferfish.hpp | 2 +- .../llapi/mc}/PulseCapacitor.hpp | 2 +- .../MC => include/llapi/mc}/PumpkinBlock.hpp | 2 +- .../llapi/mc}/PumpkinBlockItem.hpp | 2 +- .../llapi/mc}/PurchaseReceiptPacket.hpp | 2 +- .../llapi/mc}/PushThroughDescription.hpp | 2 +- .../llapi/mc}/PushableComponent.hpp | 2 +- .../llapi/mc}/PushableDescription.hpp | 2 +- .../llapi/mc}/QuartzBlockBlock.hpp | 2 +- .../llapi/mc}/QueryTargetCommand.hpp | 2 +- .../MC => include/llapi/mc}/Rabbit.hpp | 2 +- .../llapi/mc}/RabbitPanicGoal.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Raid.hpp | 2 +- .../llapi/mc}/RaidBossComponent.hpp | 2 +- .../llapi/mc}/RaidBossSystem.hpp | 2 +- .../llapi/mc}/RaidGardenGoal.hpp | 2 +- .../llapi/mc}/RaidTriggerComponent.hpp | 2 +- .../llapi/mc}/RaidTriggerDescription.hpp | 2 +- .../llapi/mc}/RaiderCelebrationGoal.hpp | 2 +- .../llapi/mc}/RailActivatorComponent.hpp | 2 +- .../llapi/mc}/RailActivatorDefinition.hpp | 2 +- .../llapi/mc}/RailActivatorSystem.hpp | 2 +- .../MC => include/llapi/mc}/RailBlock.hpp | 2 +- .../MC => include/llapi/mc}/RailMovement.hpp | 2 +- .../llapi/mc}/RailMovementComponent.hpp | 2 +- .../MC => include/llapi/mc}/RakDataInput.hpp | 2 +- .../MC => include/llapi/mc}/RakDataOutput.hpp | 2 +- .../MC => include/llapi/mc}/RakNet.hpp | 2 +- .../llapi/mc}/RakNetInstance.hpp | 2 +- .../llapi/mc}/RakNetServerLocator.hpp | 2 +- .../MC => include/llapi/mc}/RakPeerHelper.hpp | 8 +- .../MC => include/llapi/mc}/RakTcpProxy.hpp | 2 +- .../MC => include/llapi/mc}/RakWebSocket.hpp | 2 +- .../llapi/mc}/RakWebSocketClient.hpp | 2 +- .../llapi/mc}/RakWebSocketDataFrame.hpp | 2 +- .../llapi/mc}/RakWebSocketDataFrameParser.hpp | 2 +- .../MC => include/llapi/mc}/Random.hpp | 2 +- .../llapi/mc}/RandomAuxValueFunction.hpp | 2 +- .../llapi/mc}/RandomBlockStateFunction.hpp | 2 +- .../llapi/mc}/RandomBreachingGoal.hpp | 2 +- .../llapi/mc}/RandomDyeFunction.hpp | 2 +- .../llapi/mc}/RandomFlyingGoal.hpp | 2 +- .../llapi/mc}/RandomHoverGoal.hpp | 2 +- .../llapi/mc}/RandomLookAroundAndSitGoal.hpp | 2 +- .../llapi/mc}/RandomLookAroundGoal.hpp | 2 +- .../MC => include/llapi/mc}/RandomPos.hpp | 2 +- .../llapi/mc}/RandomScatteredLargeFeature.hpp | 2 +- .../MC => include/llapi/mc}/RandomSitGoal.hpp | 2 +- .../llapi/mc}/RandomStrollGoal.hpp | 2 +- .../llapi/mc}/RandomSwimmingGoal.hpp | 2 +- .../llapi/mc}/RandomThreadCheckManager.hpp | 2 +- .../llapi/mc}/RandomValueBounds.hpp | 2 +- .../mc}/RandomizableBlockActorContainer.hpp | 2 +- .../RandomizableBlockActorContainerBase.hpp | 2 +- ...RandomizableBlockActorFillingContainer.hpp | 2 +- .../llapi/mc}/RangedAttackDefinition.hpp | 2 +- .../llapi/mc}/RangedAttackGoal.hpp | 2 +- .../llapi/mc}/RangedWeaponItem.hpp | 2 +- .../llapi/mc}/RapidFertilizerItem.hpp | 2 +- .../llapi/mc}/ReadOnlyBinaryStream.hpp | 2 +- .../llapi/mc}/RealmsUnknownPackSource.hpp | 2 +- .../llapi/mc}/ReceiveLoveGoal.hpp | 2 +- .../MC => include/llapi/mc}/Recipe.hpp | 2 +- .../llapi/mc}/RecipeIngredient.hpp | 2 +- .../MC => include/llapi/mc}/Recipes.hpp | 2 +- .../MC => include/llapi/mc}/RecordItem.hpp | 2 +- .../llapi/mc}/RedStoneDustItem.hpp | 2 +- .../llapi/mc}/RedStoneOreBlock.hpp | 2 +- .../llapi/mc}/RedStoneWireBlock.hpp | 2 +- .../MC => include/llapi/mc}/RedstoneBlock.hpp | 2 +- .../llapi/mc}/RedstoneLampBlock.hpp | 2 +- .../llapi/mc}/RedstoneTorchBlock.hpp | 2 +- .../llapi/mc}/RedstoneTorchCapacitor.hpp | 2 +- .../MC => include/llapi/mc}/ReedBlock.hpp | 2 +- .../MC => include/llapi/mc}/ReedsFeature.hpp | 2 +- .../MC => include/llapi/mc}/RegionFile.hpp | 2 +- .../llapi/mc}/RegionHillsLayer.hpp | 2 +- .../MC => include/llapi/mc}/RegistryKey.hpp | 2 +- .../MC => include/llapi/mc}/RelativeFloat.hpp | 2 +- .../MC => include/llapi/mc}/ReloadCommand.hpp | 2 +- .../llapi/mc}/RemoveActorPacket.hpp | 2 +- .../llapi/mc}/RemoveEntityPacket.hpp | 2 +- .../llapi/mc}/RemoveObjectivePacket.hpp | 2 +- .../llapi/mc}/RemoveOnHitSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/RenderParams.hpp | 2 +- .../llapi/mc}/RepairItemRecipe.hpp | 2 +- .../mc}/RepeatUntilFailureDefinition.hpp | 2 +- .../llapi/mc}/RepeatUntilFailureNode.hpp | 2 +- .../mc}/RepeatUntilSuccessDefinition.hpp | 2 +- .../llapi/mc}/RepeatUntilSuccessNode.hpp | 2 +- .../MC => include/llapi/mc}/RepeaterBlock.hpp | 2 +- .../llapi/mc}/RepeaterCapacitor.hpp | 2 +- .../llapi/mc}/ReplaceItemCommand.hpp | 2 +- .../llapi/mc}/RequestChunkRadiusPacket.hpp | 2 +- .../MC => include/llapi/mc}/ResetEventObj.hpp | 2 +- .../llapi/mc}/ResourceDefinition.hpp | 2 +- .../llapi/mc}/ResourceHelper.hpp | 2 +- .../llapi/mc}/ResourceInformation.hpp | 2 +- .../llapi/mc}/ResourceLoadManager.hpp | 2 +- .../llapi/mc}/ResourceLoader.hpp | 2 +- .../llapi/mc}/ResourceLoaders.hpp | 2 +- .../llapi/mc}/ResourceLocation.hpp | 2 +- .../llapi/mc}/ResourceMetadata.hpp | 2 +- .../MC => include/llapi/mc}/ResourcePack.hpp | 2 +- .../llapi/mc}/ResourcePackChunkDataPacket.hpp | 2 +- .../mc}/ResourcePackChunkRequestPacket.hpp | 2 +- .../mc}/ResourcePackClientResponsePacket.hpp | 2 +- .../llapi/mc}/ResourcePackDataInfoPacket.hpp | 2 +- .../mc}/ResourcePackFileUploadManager.hpp | 2 +- .../llapi/mc}/ResourcePackInfoData.hpp | 2 +- .../llapi/mc}/ResourcePackListener.hpp | 2 +- .../llapi/mc}/ResourcePackManager.hpp | 2 +- .../llapi/mc}/ResourcePackRepository.hpp | 6 +- .../llapi/mc}/ResourcePackStack.hpp | 2 +- .../llapi/mc}/ResourcePackStackPacket.hpp | 2 +- .../mc}/ResourcePackTransmissionManager.hpp | 2 +- .../llapi/mc}/ResourcePacksInfoPacket.hpp | 2 +- .../MC => include/llapi/mc}/ResourcePath.hpp | 2 +- .../llapi/mc}/ResourceSignature.hpp | 2 +- .../llapi/mc}/RespawnAnchorBlock.hpp | 2 +- .../MC => include/llapi/mc}/RespawnPacket.hpp | 2 +- .../llapi/mc}/RestrictOpenDoorGoal.hpp | 2 +- .../llapi/mc}/RestrictSunGoal.hpp | 2 +- .../llapi/mc}/RideableComponent.hpp | 2 +- .../llapi/mc}/RideableDefinition.hpp | 2 +- .../llapi/mc}/RiderJumpPacket.hpp | 2 +- .../llapi/mc}/RiseToLiquidLevelGoal.hpp | 2 +- .../llapi/mc}/RiverFollowingGoal.hpp | 2 +- .../MC => include/llapi/mc}/RoleChecker.hpp | 2 +- .../llapi/mc}/RoleCheckerCallback.hpp | 2 +- .../MC => include/llapi/mc}/RollGoal.hpp | 2 +- .../llapi/mc}/RoofedTreeCanopy.hpp | 2 +- .../llapi/mc}/RoomDefinition.hpp | 2 +- .../MC => include/llapi/mc}/RopeAABB.hpp | 2 +- .../MC => include/llapi/mc}/RopePoints.hpp | 2 +- .../MC => include/llapi/mc}/RopeSystem.hpp | 2 +- .../MC => include/llapi/mc}/RotateState.hpp | 2 +- .../llapi/mc}/RotatedPillarBlock.hpp | 2 +- .../llapi/mc}/RotationDescription.hpp | 2 +- .../MC => include/llapi/mc}/RotationUtil.hpp | 2 +- .../llapi/mc}/RuinedPortalFeature.hpp | 2 +- .../llapi/mc}/RuinedPortalPiece.hpp | 2 +- .../llapi/mc}/RuinedPortalStart.hpp | 2 +- .../llapi/mc}/RunAroundLikeCrazyGoal.hpp | 2 +- .../mc}/RuntimeIdentifierDescription.hpp | 2 +- .../llapi/mc}/RuntimeLightingManager.hpp | 2 +- .../llapi/mc}/SHChestCorridor.hpp | 2 +- .../llapi/mc}/SHFillerCorridor.hpp | 2 +- .../llapi/mc}/SHFiveCrossing.hpp | 2 +- .../MC => include/llapi/mc}/SHLeftTurn.hpp | 2 +- .../MC => include/llapi/mc}/SHLibrary.hpp | 2 +- .../MC => include/llapi/mc}/SHPortalRoom.hpp | 2 +- .../MC => include/llapi/mc}/SHPrisonHall.hpp | 2 +- .../MC => include/llapi/mc}/SHRightTurn.hpp | 2 +- .../llapi/mc}/SHRoomCrossing.hpp | 2 +- .../MC => include/llapi/mc}/SHStairsDown.hpp | 2 +- .../MC => include/llapi/mc}/SHStartPiece.hpp | 2 +- .../MC => include/llapi/mc}/SHStraight.hpp | 2 +- .../llapi/mc}/SHStraightStairsDown.hpp | 2 +- .../MC => include/llapi/mc}/Salmon.hpp | 2 +- .../MC => include/llapi/mc}/SandBlock.hpp | 2 +- .../MC => include/llapi/mc}/SandFeature.hpp | 2 +- .../llapi/mc}/SandStoneBlock.hpp | 2 +- .../MC => include/llapi/mc}/Sapling.hpp | 2 +- .../llapi/mc}/SaplingBlockItem.hpp | 2 +- .../MC => include/llapi/mc}/SaveCommand.hpp | 2 +- .../llapi/mc}/SaveTransactionManager.hpp | 2 +- .../MC => include/llapi/mc}/SavedData.hpp | 2 +- .../llapi/mc}/SavedDataStorage.hpp | 2 +- .../MC => include/llapi/mc}/SayCommand.hpp | 2 +- .../llapi/mc}/ScaffoldingBlock.hpp | 2 +- .../llapi/mc}/ScaffoldingBlockItem.hpp | 2 +- .../llapi/mc}/ScaffoldingClimberComponent.hpp | 2 +- .../llapi/mc}/ScaffoldingClimberSystem.hpp | 2 +- .../llapi/mc}/ScaleByAgeComponent.hpp | 2 +- .../llapi/mc}/ScaleByAgeSystem.hpp | 2 +- .../llapi/mc}/ScaleDescription.hpp | 2 +- .../MC => include/llapi/mc}/ScaredGoal.hpp | 2 +- .../llapi/mc}/ScatterFeature.hpp | 2 +- .../MC => include/llapi/mc}/ScatterParams.hpp | 2 +- .../llapi/mc}/ScatteredFeaturePiece.hpp | 2 +- .../llapi/mc}/ScatteredFeatureStart.hpp | 2 +- .../MC => include/llapi/mc}/Scheduler.hpp | 2 +- .../llapi/mc}/SchedulerDefinition.hpp | 2 +- .../llapi/mc}/SchedulerSystem.hpp | 2 +- .../llapi/mc}/ScorePacketInfo.hpp | 2 +- .../MC => include/llapi/mc}/Scoreboard.hpp | 2 +- .../llapi/mc}/ScoreboardCommand.hpp | 2 +- .../MC => include/llapi/mc}/ScoreboardId.hpp | 2 +- .../llapi/mc}/ScoreboardIdentityRef.hpp | 2 +- .../llapi/mc}/ScreenCapabilitiesRepo.hpp | 2 +- .../llapi/mc}/ScreenHandlerBase.hpp | 2 +- .../llapi/mc}/ScreenHandlerBeacon.hpp | 2 +- .../llapi/mc}/ScreenHandlerLabTable.hpp | 2 +- .../mc}/ScriptActorAreaBinderComponent.hpp | 2 +- .../ScriptActorUniqueIdBinderComponent.hpp | 2 +- .../MC => include/llapi/mc}/ScriptApi.hpp | 2 +- .../mc}/ScriptArmorContainerComponent.hpp | 2 +- .../llapi/mc}/ScriptAttackComponent.hpp | 2 +- .../llapi/mc}/ScriptBinderActorTemplate.hpp | 2 +- .../ScriptBinderActorTickingAreaTemplate.hpp | 2 +- .../llapi/mc}/ScriptBinderBlockTemplate.hpp | 2 +- .../llapi/mc}/ScriptBinderComponent.hpp | 2 +- .../mc}/ScriptBinderComponentTemplate.hpp | 2 +- .../mc}/ScriptBinderEventDataTemplate.hpp | 2 +- .../mc}/ScriptBinderItemActorTemplate.hpp | 2 +- .../mc}/ScriptBinderItemStackTemplate.hpp | 2 +- .../llapi/mc}/ScriptBinderLevelTemplate.hpp | 2 +- .../ScriptBinderLevelTickingAreaTemplate.hpp | 2 +- .../llapi/mc}/ScriptBinderPureEcsTemplate.hpp | 2 +- .../llapi/mc}/ScriptBinderQueryTemplate.hpp | 2 +- .../llapi/mc}/ScriptBinderTemplate.hpp | 2 +- .../mc}/ScriptBinderTemplateController.hpp | 2 +- .../mc}/ScriptBlockContainerComponent.hpp | 2 +- .../ScriptBlockPositionBinderComponent.hpp | 2 +- .../llapi/mc}/ScriptBlockStateComponent.hpp | 2 +- .../llapi/mc}/ScriptCollisionBoxComponent.hpp | 2 +- .../MC => include/llapi/mc}/ScriptCommand.hpp | 2 +- .../llapi/mc}/ScriptCommandCallbackData.hpp | 2 +- .../llapi/mc}/ScriptCommandFactory.hpp | 2 +- .../llapi/mc}/ScriptCommandOrigin.hpp | 2 +- .../mc}/ScriptComponentBinderComponent.hpp | 2 +- .../llapi/mc}/ScriptCustomEventPacket.hpp | 2 +- .../llapi/mc}/ScriptDamageSensorComponent.hpp | 2 +- .../mc}/ScriptDimensionBinderComponent.hpp | 2 +- .../llapi/mc}/ScriptEcsBinderComponent.hpp | 2 +- .../MC => include/llapi/mc}/ScriptEngine.hpp | 2 +- .../llapi/mc}/ScriptEquipmentComponent.hpp | 2 +- .../llapi/mc}/ScriptEquippableComponent.hpp | 2 +- .../llapi/mc}/ScriptEventCoordinator.hpp | 2 +- .../llapi/mc}/ScriptEventData.hpp | 2 +- .../mc}/ScriptEventDataBinderComponent.hpp | 2 +- .../llapi/mc}/ScriptEventListener.hpp | 2 +- .../llapi/mc}/ScriptExplodeComponent.hpp | 2 +- .../mc}/ScriptHandContainerComponent.hpp | 2 +- .../llapi/mc}/ScriptHealableComponent.hpp | 2 +- .../llapi/mc}/ScriptHealthComponent.hpp | 2 +- .../mc}/ScriptHotbarContainerComponent.hpp | 2 +- .../mc}/ScriptIdentifierBinderComponent.hpp | 2 +- .../llapi/mc}/ScriptInteractComponent.hpp | 2 +- .../llapi/mc}/ScriptInventoryComponent.hpp | 2 +- .../mc}/ScriptInventoryContainerComponent.hpp | 2 +- .../mc}/ScriptItemStackBinderComponent.hpp | 2 +- .../mc}/ScriptLevelAreaBinderComponent.hpp | 2 +- .../llapi/mc}/ScriptLevelBinderComponent.hpp | 2 +- .../mc}/ScriptLevelTickingAreasComponent.hpp | 2 +- .../llapi/mc}/ScriptLevelWeatherComponent.hpp | 2 +- .../mc}/ScriptLevelWeatherEventListener.hpp | 2 +- .../llapi/mc}/ScriptLookAtComponent.hpp | 2 +- .../llapi/mc}/ScriptNameableComponent.hpp | 2 +- .../llapi/mc}/ScriptObjectBinder.hpp | 2 +- .../llapi/mc}/ScriptPositionComponent.hpp | 2 +- .../MC => include/llapi/mc}/ScriptQueries.hpp | 2 +- .../llapi/mc}/ScriptQueryBinderComponent.hpp | 2 +- .../llapi/mc}/ScriptQueryComponent.hpp | 2 +- .../llapi/mc}/ScriptRotationComponent.hpp | 2 +- .../ScriptServerActorAcquiredItemEvent.hpp | 2 +- .../mc}/ScriptServerActorAttackEvent.hpp | 2 +- ...riptServerActorCarriedItemChangedEvent.hpp | 2 +- .../mc}/ScriptServerActorCreatedEvent.hpp | 2 +- .../llapi/mc}/ScriptServerActorDeathEvent.hpp | 2 +- ...rverActorDefinitionEventTriggeredEvent.hpp | 2 +- .../mc}/ScriptServerActorDroppedItemEvent.hpp | 2 +- .../ScriptServerActorEquippedArmorEvent.hpp | 2 +- .../mc}/ScriptServerActorEventListener.hpp | 2 +- .../llapi/mc}/ScriptServerActorHurtEvent.hpp | 2 +- .../llapi/mc}/ScriptServerActorMoveEvent.hpp | 2 +- .../mc}/ScriptServerActorRemovedEvent.hpp | 2 +- .../ScriptServerActorSneakChangedEvent.hpp | 2 +- .../mc}/ScriptServerActorStartRidingEvent.hpp | 2 +- .../mc}/ScriptServerActorStopRidingEvent.hpp | 2 +- .../llapi/mc}/ScriptServerActorTickEvent.hpp | 2 +- .../mc}/ScriptServerActorUseItemEvent.hpp | 2 +- ...riptServerBlockDestructionStartedEvent.hpp | 2 +- ...riptServerBlockDestructionStoppedEvent.hpp | 2 +- .../mc}/ScriptServerBlockEventListener.hpp | 2 +- .../mc}/ScriptServerBlockExplodedEvent.hpp | 2 +- .../ScriptServerBlockInteractedWithEvent.hpp | 2 +- .../ScriptServerBlockMovedByPistonEvent.hpp | 2 +- ...iptServerBroadcastActorDefinitionEvent.hpp | 2 +- .../mc}/ScriptServerBroadcastReceived.hpp | 2 +- .../llapi/mc}/ScriptServerChatReceived.hpp | 2 +- .../llapi/mc}/ScriptServerCommandReceived.hpp | 2 +- .../mc}/ScriptServerLevelEventListener.hpp | 2 +- .../ScriptServerLoggerConfigReceivedEvent.hpp | 2 +- .../mc}/ScriptServerPacketEventListener.hpp | 2 +- .../llapi/mc}/ScriptServerPlaySoundEvent.hpp | 2 +- .../ScriptServerPlayerAttackedActorEvent.hpp | 2 +- .../ScriptServerPlayerDestroyedBlockEvent.hpp | 2 +- .../ScriptServerPlayerPlacedBlockEvent.hpp | 2 +- .../mc}/ScriptServerProjectileHitEvent.hpp | 2 +- ...riptServerSpawnParticleAttachedToActor.hpp | 2 +- .../ScriptServerSpawnParticleInWorldEvent.hpp | 2 +- .../mc}/ScriptServerWeatherEventData.hpp | 2 +- .../llapi/mc}/ScriptShooterComponent.hpp | 2 +- .../llapi/mc}/ScriptSpawnActorComponent.hpp | 2 +- .../llapi/mc}/ScriptTagComponent.hpp | 2 +- .../mc}/ScriptTelemetryEventListener.hpp | 2 +- .../llapi/mc}/ScriptTeleportComponent.hpp | 2 +- .../llapi/mc}/ScriptTickWorldComponent.hpp | 2 +- .../mc}/ScriptTickingAreaBinderComponent.hpp | 2 +- .../ScriptTickingAreaDescriptionComponent.hpp | 2 +- .../llapi/mc}/SeaAnemoneFeature.hpp | 2 +- .../MC => include/llapi/mc}/SeaGrass.hpp | 2 +- .../llapi/mc}/SeaLanternBlock.hpp | 2 +- .../MC => include/llapi/mc}/SeaPickle.hpp | 2 +- .../llapi/mc}/SeaPickleBlockItem.hpp | 2 +- .../llapi/mc}/SeaPickleFeature.hpp | 2 +- .../llapi/mc}/SeagrassFeature.hpp | 2 +- .../MC => include/llapi/mc}/SearchFeature.hpp | 2 +- .../MC => include/llapi/mc}/Seasons.hpp | 2 +- .../llapi/mc}/SeatDescription.hpp | 2 +- .../MC => include/llapi/mc}/SecureStorage.hpp | 2 +- .../llapi/mc}/SeedItemComponent.hpp | 2 +- .../llapi/mc}/SelectorBehaviorNode.hpp | 2 +- .../llapi/mc}/SelectorDefinition.hpp | 2 +- .../MC => include/llapi/mc}/SemVersion.hpp | 25 +- .../MC => include/llapi/mc}/SendEventData.hpp | 2 +- .../MC => include/llapi/mc}/SendEventGoal.hpp | 2 +- .../llapi/mc}/SendEventStage.hpp | 2 +- .../llapi/mc}/SensingComponent.hpp | 2 +- .../MC => include/llapi/mc}/SensingSystem.hpp | 2 +- .../llapi/mc}/SequenceBehaviorNode.hpp | 2 +- .../llapi/mc}/SequenceDefinition.hpp | 2 +- .../llapi/mc}/SerializedSkin.hpp | 2 +- .../MC => include/llapi/mc}/ServerCommand.hpp | 2 +- .../llapi/mc}/ServerCommandOrigin.hpp | 2 +- .../llapi/mc}/ServerCommands.hpp | 2 +- .../mc}/ServerCommunicationInterface.hpp | 2 +- .../llapi/mc}/ServerContentKeyProvider.hpp | 2 +- .../llapi/mc}/ServerFileChunkUploader.hpp | 2 +- .../llapi/mc}/ServerInstance.hpp | 2 +- .../mc}/ServerInstanceEventCoordinator.hpp | 2 +- .../llapi/mc}/ServerInstanceEventListener.hpp | 2 +- .../MC => include/llapi/mc}/ServerLevel.hpp | 2 +- .../MC => include/llapi/mc}/ServerLocator.hpp | 2 +- .../MC => include/llapi/mc}/ServerMetrics.hpp | 2 +- .../llapi/mc}/ServerMetricsImpl.hpp | 2 +- .../llapi/mc}/ServerMoveInputHandler.hpp | 2 +- .../llapi/mc}/ServerNetworkHandler.hpp | 2 +- .../MC => include/llapi/mc}/ServerPlayer.hpp | 2 +- .../llapi/mc}/ServerScoreboard.hpp | 2 +- .../llapi/mc}/ServerSettingsRequestPacket.hpp | 2 +- .../mc}/ServerSettingsResponsePacket.hpp | 2 +- .../mc}/ServerToClientHandshakePacket.hpp | 2 +- .../llapi/mc}/SetActorDataPacket.hpp | 2 +- .../llapi/mc}/SetActorLinkPacket.hpp | 2 +- .../llapi/mc}/SetActorMotionPacket.hpp | 2 +- .../llapi/mc}/SetBannerDetailsFunction.hpp | 2 +- .../llapi/mc}/SetBlockCommand.hpp | 2 +- .../llapi/mc}/SetBlockReactionComponent.hpp | 2 +- .../llapi/mc}/SetBookContentsFunction.hpp | 2 +- .../llapi/mc}/SetCommandsEnabledPacket.hpp | 2 +- .../mc}/SetDataFromColorIndexFunction.hpp | 2 +- .../llapi/mc}/SetDefaultGameTypePacket.hpp | 2 +- .../llapi/mc}/SetDifficultyPacket.hpp | 2 +- .../llapi/mc}/SetDisplayObjectivePacket.hpp | 2 +- .../llapi/mc}/SetHealthPacket.hpp | 2 +- .../llapi/mc}/SetItemCountFunction.hpp | 2 +- .../llapi/mc}/SetItemDamageFunction.hpp | 2 +- .../llapi/mc}/SetItemDataFunction.hpp | 2 +- .../llapi/mc}/SetItemLoreFunction.hpp | 2 +- .../llapi/mc}/SetItemNameFunction.hpp | 2 +- .../llapi/mc}/SetLastHurtByPacket.hpp | 2 +- .../mc}/SetLocalPlayerAsInitializedPacket.hpp | 2 +- .../llapi/mc}/SetMaxPlayersCommand.hpp | 2 +- .../llapi/mc}/SetPlayerGameTypePacket.hpp | 2 +- .../llapi/mc}/SetScorePacket.hpp | 2 +- .../llapi/mc}/SetScoreboardIdentityPacket.hpp | 2 +- .../llapi/mc}/SetSpawnEggFunction.hpp | 2 +- .../llapi/mc}/SetSpawnPositionPacket.hpp | 2 +- .../MC => include/llapi/mc}/SetTimePacket.hpp | 2 +- .../llapi/mc}/SetTitlePacket.hpp | 2 +- .../llapi/mc}/SetWorldSpawnCommand.hpp | 2 +- .../llapi/mc}/SettingsCommandPacket.hpp | 2 +- .../llapi/mc}/SettingsScreenCapabilities.hpp | 2 +- .../llapi/mc}/ShapedChemistryRecipe.hpp | 2 +- .../MC => include/llapi/mc}/ShapedRecipe.hpp | 2 +- .../llapi/mc}/ShapelessChemistryRecipe.hpp | 2 +- .../llapi/mc}/ShapelessRecipe.hpp | 2 +- .../llapi/mc}/ShareItemsGoal.hpp | 2 +- .../MC => include/llapi/mc}/Shareable.hpp | 2 +- .../llapi/mc}/ShareableComponent.hpp | 2 +- .../llapi/mc}/ShareableDefinition.hpp | 2 +- .../llapi/mc}/SharedAmplifiers.hpp | 2 +- .../llapi/mc}/SharedAttributes.hpp | 2 +- .../MC => include/llapi/mc}/SharedBuffs.hpp | 2 +- .../llapi/mc}/SharedConstants.hpp | 2 +- .../llapi/mc}/SharedModifiers.hpp | 2 +- .../MC => include/llapi/mc}/ShearsItem.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Sheep.hpp | 2 +- .../MC => include/llapi/mc}/ShieldItem.hpp | 2 +- .../llapi/mc}/ShieldItemUtils.hpp | 2 +- .../llapi/mc}/ShiftedDurationAmplifier.hpp | 2 +- .../llapi/mc}/ShiftedValueAmplifier.hpp | 2 +- .../llapi/mc}/ShipwreckFeature.hpp | 2 +- .../llapi/mc}/ShipwreckPiece.hpp | 2 +- .../llapi/mc}/ShipwreckStart.hpp | 2 +- .../llapi/mc}/ShootBowDefinition.hpp | 2 +- .../MC => include/llapi/mc}/ShootBowNode.hpp | 2 +- .../llapi/mc}/ShooterComponent.hpp | 2 +- .../llapi/mc}/ShooterDefinition.hpp | 2 +- .../MC => include/llapi/mc}/ShortTag.hpp | 2 +- .../MC => include/llapi/mc}/ShovelItem.hpp | 2 +- .../llapi/mc}/ShowCreditsPacket.hpp | 2 +- .../llapi/mc}/ShowProfilePacket.hpp | 2 +- .../llapi/mc}/ShowStoreOfferPacket.hpp | 2 +- .../MC => include/llapi/mc}/Shulker.hpp | 2 +- .../llapi/mc}/ShulkerBoxBlock.hpp | 2 +- .../llapi/mc}/ShulkerBoxBlockActor.hpp | 2 +- .../llapi/mc}/ShulkerBoxBlockItem.hpp | 2 +- .../llapi/mc}/ShulkerBoxRecipe.hpp | 2 +- .../MC => include/llapi/mc}/ShulkerBullet.hpp | 2 +- .../llapi/mc}/ShulkerPeekGoal.hpp | 2 +- .../MC => include/llapi/mc}/SignBlock.hpp | 2 +- .../llapi/mc}/SignBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/SignItem.hpp | 2 +- .../MC => include/llapi/mc}/Silverfish.hpp | 2 +- .../mc}/SilverfishMergeWithStoneGoal.hpp | 2 +- .../llapi/mc}/SilverfishWakeUpFriendsGoal.hpp | 2 +- .../llapi/mc}/SimpleBoolFilterTest.hpp | 2 +- .../llapi/mc}/SimpleContainer.hpp | 2 +- .../llapi/mc}/SimpleEventPacket.hpp | 2 +- .../llapi/mc}/SimpleFloatFilterTest.hpp | 2 +- .../llapi/mc}/SimpleHashStringFilterTest.hpp | 2 +- .../llapi/mc}/SimpleIntFilterTest.hpp | 2 +- .../llapi/mc}/SimplePlayerContainer.hpp | 2 +- .../llapi/mc}/SimpleTagIDFilterTest.hpp | 2 +- .../llapi/mc}/SimpleTreeCanopy.hpp | 2 +- .../llapi/mc}/SimpleTreeTrunk.hpp | 2 +- .../MC => include/llapi/mc}/SimplexNoise.hpp | 2 +- .../llapi/mc}/SingleBlockFeature.hpp | 2 +- .../MC => include/llapi/mc}/SitComponent.hpp | 2 +- .../MC => include/llapi/mc}/SitGoal.hpp | 2 +- .../llapi/mc}/SittableDefinition.hpp | 2 +- .../MC => include/llapi/mc}/Skeleton.hpp | 2 +- .../llapi/mc}/SkeletonHorseTrapGoal.hpp | 2 +- .../llapi/mc}/SkinIDDescription.hpp | 2 +- .../MC => include/llapi/mc}/SkinInfoData.hpp | 2 +- .../MC => include/llapi/mc}/SkullBlock.hpp | 2 +- .../llapi/mc}/SkullBlockActor.hpp | 2 +- .../MC => include/llapi/mc}/SkullItem.hpp | 2 +- .../MC => include/llapi/mc}/SlabBlock.hpp | 2 +- .../MC => include/llapi/mc}/SlabBlockItem.hpp | 2 +- .../MC => include/llapi/mc}/SleepGoal.hpp | 2 +- .../MC => include/llapi/mc}/SleepState.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Slime.hpp | 2 +- .../llapi/mc}/SlimeAttackDefinition.hpp | 2 +- .../llapi/mc}/SlimeAttackGoal.hpp | 2 +- .../MC => include/llapi/mc}/SlimeBlock.hpp | 2 +- .../llapi/mc}/SlimeFloatDefinition.hpp | 2 +- .../llapi/mc}/SlimeFloatGoal.hpp | 2 +- .../mc}/SlimeKeepOnJumpingDefinition.hpp | 2 +- .../llapi/mc}/SlimeKeepOnJumpingGoal.hpp | 2 +- .../llapi/mc}/SlimeMoveControl.hpp | 2 +- .../llapi/mc}/SlimeMoveControlDescription.hpp | 2 +- .../mc}/SlimeRandomDirectionDefinition.hpp | 2 +- .../llapi/mc}/SlimeRandomDirectionGoal.hpp | 2 +- .../MC => include/llapi/mc}/SlotData.hpp | 2 +- .../llapi/mc}/SlotDescriptor.hpp | 2 +- .../MC => include/llapi/mc}/SmallFireball.hpp | 2 +- .../llapi/mc}/SmeltItemFunction.hpp | 2 +- .../llapi/mc}/SmithingTableBlock.hpp | 2 +- .../SmithingTableContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/SmokerBlock.hpp | 2 +- .../llapi/mc}/SmokerBlockActor.hpp | 2 +- .../llapi/mc}/SmokerContainerManagerModel.hpp | 2 +- .../llapi/mc}/SmoothStoneSelector.hpp | 2 +- .../MC => include/llapi/mc}/SnackGoal.hpp | 2 +- .../MC => include/llapi/mc}/SnapshotEnv.hpp | 2 +- .../llapi/mc}/SnapshotFilenameAndLength.hpp | 2 +- .../llapi/mc}/SnapshotWritableFile.hpp | 2 +- .../MC => include/llapi/mc}/SneezeGoal.hpp | 2 +- .../MC => include/llapi/mc}/SnowBlock.hpp | 2 +- .../MC => include/llapi/mc}/Snowball.hpp | 2 +- .../MC => include/llapi/mc}/SnowballItem.hpp | 2 +- .../MC => include/llapi/mc}/Social.hpp | 2 +- .../llapi/mc}/SortItemInstanceIdAux.hpp | 2 +- .../MC => include/llapi/mc}/SoulSandBlock.hpp | 2 +- .../llapi/mc}/SoulSpeedEnchant.hpp | 2 +- .../llapi/mc}/SoulTorchBlock.hpp | 2 +- .../llapi/mc}/SoundPlayerInterface.hpp | 2 +- .../llapi/mc}/SoundVolumeDescription.hpp | 2 +- .../MC => include/llapi/mc}/SparklerItem.hpp | 2 +- .../llapi/mc}/SparseContainer.hpp | 2 +- .../llapi/mc}/SpatialActorNetworkData.hpp | 2 +- .../llapi/mc}/SpawnActorComponent.hpp | 2 +- .../llapi/mc}/SpawnActorDefinition.hpp | 2 +- .../llapi/mc}/SpawnActorEntry.hpp | 2 +- .../llapi/mc}/SpawnActorParameters.hpp | 2 +- .../llapi/mc}/SpawnActorSystem.hpp | 2 +- .../llapi/mc}/SpawnAoECloudSubcomponent.hpp | 2 +- .../llapi/mc}/SpawnChanceSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/SpawnData.hpp | 2 +- .../llapi/mc}/SpawnExperienceOrbPacket.hpp | 2 +- .../MC => include/llapi/mc}/SpawnFinder.hpp | 2 +- .../llapi/mc}/SpawnGroupRegistry.hpp | 2 +- .../llapi/mc}/SpawnParticleEffectPacket.hpp | 2 +- .../llapi/mc}/SpawnPointCommand.hpp | 2 +- .../MC => include/llapi/mc}/SpawnSettings.hpp | 2 +- .../MC => include/llapi/mc}/Spawner.hpp | 2 +- .../llapi/mc}/SpecificEnchantFunction.hpp | 2 +- .../MC => include/llapi/mc}/Spider.hpp | 2 +- .../MC => include/llapi/mc}/SpikeFeature.hpp | 2 +- .../MC => include/llapi/mc}/SpinLock.hpp | 2 +- .../mc}/SplashPotionEffectSubcomponent.hpp | 2 +- .../llapi/mc}/SplashPotionItem.hpp | 2 +- .../MC => include/llapi/mc}/SpongeBlock.hpp | 2 +- .../llapi/mc}/SpreadPlayersCommand.hpp | 2 +- .../MC => include/llapi/mc}/SpringFeature.hpp | 2 +- .../llapi/mc}/SpruceTreeCanopy.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Squid.hpp | 2 +- .../MC => include/llapi/mc}/SquidDiveGoal.hpp | 2 +- .../MC => include/llapi/mc}/SquidFleeGoal.hpp | 2 +- .../MC => include/llapi/mc}/SquidIdleGoal.hpp | 2 +- .../llapi/mc}/SquidMoveAwayFromGroundGoal.hpp | 2 +- .../llapi/mc}/SquidOutOfWaterGoal.hpp | 2 +- .../llapi/mc}/StackResultStorageFeature.hpp | 2 +- .../llapi/mc}/StainedGlassBlock.hpp | 2 +- .../llapi/mc}/StainedGlassPaneBlock.hpp | 2 +- .../MC => include/llapi/mc}/StairBlock.hpp | 2 +- .../llapi/mc}/StalkAndPounceOnTargetGoal.hpp | 2 +- .../llapi/mc}/StartGamePacket.hpp | 2 +- .../llapi/mc}/StartScreenCapabilities.hpp | 2 +- .../llapi/mc}/StateSerializationUtils.hpp | 2 +- .../MC => include/llapi/mc}/StemBlock.hpp | 2 +- .../llapi/mc}/StickInGroundSubcomponent.hpp | 2 +- .../llapi/mc}/StompAttackDefinition.hpp | 2 +- .../llapi/mc}/StompAttackGoal.hpp | 2 +- .../llapi/mc}/StompBlockGoal.hpp | 2 +- .../MC => include/llapi/mc}/StompEggGoal.hpp | 2 +- .../MC => include/llapi/mc}/StoneBlock.hpp | 2 +- .../llapi/mc}/StoneBrickBlock.hpp | 2 +- .../llapi/mc}/StoneButtonBlock.hpp | 2 +- .../llapi/mc}/StoneSlabBlock.hpp | 2 +- .../llapi/mc}/StoneSlabBlock2.hpp | 2 +- .../llapi/mc}/StoneSlabBlock3.hpp | 2 +- .../llapi/mc}/StoneSlabBlock4.hpp | 2 +- .../llapi/mc}/StoneSlabBlockItem.hpp | 2 +- .../llapi/mc}/StonecutterBlock.hpp | 2 +- .../mc}/StonecutterContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/StopCommand.hpp | 2 +- .../llapi/mc}/StopSoundCommand.hpp | 2 +- .../llapi/mc}/StopSoundPacket.hpp | 2 +- .../MC => include/llapi/mc}/Stopwatch.hpp | 2 +- .../llapi/mc}/StrengthDescription.hpp | 2 +- .../MC => include/llapi/mc}/Strider.hpp | 2 +- .../llapi/mc}/StringByteInput.hpp | 2 +- .../llapi/mc}/StringByteOutput.hpp | 2 +- .../MC => include/llapi/mc}/StringKey.hpp | 2 +- .../MC => include/llapi/mc}/StringTag.hpp | 2 +- .../llapi/mc}/StrippedLogBlock.hpp | 2 +- .../llapi/mc}/StrollTowardsVillageGoal.hpp | 2 +- .../llapi/mc}/StrongholdFeature.hpp | 2 +- .../llapi/mc}/StrongholdPiece.hpp | 2 +- .../llapi/mc}/StrongholdStart.hpp | 2 +- .../llapi/mc}/StructureBlock.hpp | 2 +- .../llapi/mc}/StructureBlockActor.hpp | 2 +- .../llapi/mc}/StructureBlockPalette.hpp | 2 +- .../llapi/mc}/StructureBlockUpdatePacket.hpp | 2 +- .../llapi/mc}/StructureDataLoadHelper.hpp | 2 +- .../llapi/mc}/StructureEditorData.hpp | 2 +- .../llapi/mc}/StructureFeature.hpp | 2 +- .../llapi/mc}/StructureHelpers.hpp | 2 +- .../llapi/mc}/StructureIntegrityProcessor.hpp | 2 +- .../llapi/mc}/StructureManager.hpp | 2 +- .../llapi/mc}/StructurePiece.hpp | 2 +- .../StructurePoolActorPredicateActorMatch.hpp | 2 +- .../StructurePoolBlockPredicateAlwaysTrue.hpp | 2 +- ...ePoolBlockPredicateAxisAlignedPosition.hpp | 2 +- .../StructurePoolBlockPredicateBlockMatch.hpp | 2 +- ...turePoolBlockPredicateBlockMatchRandom.hpp | 2 +- ...BlockTagPredicateBlockTagStringMatches.hpp | 2 +- .../llapi/mc}/StructurePoolBlockTagRule.hpp | 2 +- .../llapi/mc}/StructurePoolElement.hpp | 2 +- .../llapi/mc}/StructureSettings.hpp | 2 +- .../llapi/mc}/StructureStart.hpp | 2 +- .../MC => include/llapi/mc}/StructureTag.hpp | 2 +- .../llapi/mc}/StructureTemplate.hpp | 2 +- .../llapi/mc}/StructureTemplateData.hpp | 2 +- .../StructureTemplateDataRequestPacket.hpp | 2 +- .../StructureTemplateDataResponsePacket.hpp | 2 +- .../llapi/mc}/StructureTemplateFeature.hpp | 2 +- .../llapi/mc}/StructureTemplatePool.hpp | 2 +- .../MC => include/llapi/mc}/StructureVoid.hpp | 2 +- .../MC => include/llapi/mc}/SubChunk.hpp | 2 +- .../llapi/mc}/SubChunkBlockStorage.hpp | 2 +- .../MC => include/llapi/mc}/SubChunkPos.hpp | 2 +- .../llapi/mc}/SubChunkRelighter.hpp | 2 +- .../llapi/mc}/SubClientConnectionRequest.hpp | 2 +- .../llapi/mc}/SubClientLoginPacket.hpp | 2 +- .../MC => include/llapi/mc}/SubpackInfo.hpp | 2 +- .../llapi/mc}/SubpackInfoCollection.hpp | 2 +- .../llapi/mc}/SubtreeDefinition.hpp | 2 +- .../MC => include/llapi/mc}/SubtreeNode.hpp | 2 +- .../llapi/mc}/SummonActorGoal.hpp | 2 +- .../MC => include/llapi/mc}/SummonCommand.hpp | 2 +- .../llapi/mc}/SummonSpellData.hpp | 2 +- .../llapi/mc}/SummonSpellStage.hpp | 2 +- .../llapi/mc}/SurfaceBuilderRegistry.hpp | 2 +- .../SurfaceMaterialAdjustmentAttributes.hpp | 2 +- .../SurfaceMaterialAdjustmentEvaluated.hpp | 2 +- .../MC => include/llapi/mc}/SurvivalMode.hpp | 2 +- .../llapi/mc}/SuspiciousStewItem.hpp | 2 +- .../MC => include/llapi/mc}/SwamplandHut.hpp | 2 +- .../llapi/mc}/SweetBerryBushBlock.hpp | 2 +- .../MC => include/llapi/mc}/SwellGoal.hpp | 2 +- .../MC => include/llapi/mc}/SwimEnchant.hpp | 2 +- .../llapi/mc}/SwimIdleDefinition.hpp | 2 +- .../MC => include/llapi/mc}/SwimIdleGoal.hpp | 2 +- .../llapi/mc}/SwimMoveControl.hpp | 2 +- .../llapi/mc}/SwimWanderDefinition.hpp | 2 +- .../llapi/mc}/SwimWanderGoal.hpp | 2 +- .../llapi/mc}/SwimWithEntityDefinition.hpp | 2 +- .../llapi/mc}/SwimWithEntityGoal.hpp | 2 +- .../llapi/mc}/SwoopAttackDefinition.hpp | 2 +- .../llapi/mc}/SwoopAttackGoal.hpp | 2 +- .../llapi/mc}/SyncedAttribute.hpp | 2 +- .../llapi/mc}/SynchedActorData.hpp | 2 +- .../llapi/mc}/SystemFilePicker.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Tag.hpp | 4 +- .../MC => include/llapi/mc}/TagCommand.hpp | 2 +- .../llapi/mc}/TagMemoryChunk.hpp | 2 +- .../llapi/mc}/TakeFlowerGoal.hpp | 2 +- .../llapi/mc}/TakeItemActorPacket.hpp | 2 +- .../llapi/mc}/TakePictureCommand.hpp | 2 +- .../MC => include/llapi/mc}/TallGrass.hpp | 2 +- .../llapi/mc}/TallGrassFeature.hpp | 2 +- .../llapi/mc}/TameableComponent.hpp | 2 +- .../llapi/mc}/TameableDescription.hpp | 2 +- .../MC => include/llapi/mc}/TargetBlock.hpp | 2 +- .../MC => include/llapi/mc}/TargetGoal.hpp | 2 +- .../llapi/mc}/TargetGoalDefinition.hpp | 2 +- .../llapi/mc}/TargetNearbyDescription.hpp | 2 +- .../llapi/mc}/TargetNearbySystem.hpp | 2 +- .../llapi/mc}/TargetWhenPushedGoal.hpp | 2 +- .../MC => include/llapi/mc}/TaskGroup.hpp | 2 +- .../MC => include/llapi/mc}/TaskResult.hpp | 2 +- .../MC => include/llapi/mc}/TaskStartInfo.hpp | 2 +- .../MC => include/llapi/mc}/TcpProxy.hpp | 2 +- .../llapi/mc}/TeleportCommand.hpp | 2 +- .../llapi/mc}/TeleportComponent.hpp | 2 +- .../llapi/mc}/TeleportDescription.hpp | 2 +- .../llapi/mc}/TeleportRotationData.hpp | 2 +- .../llapi/mc}/TeleportSystem.hpp | 2 +- .../llapi/mc}/TeleportTarget.hpp | 2 +- .../llapi/mc}/TeleportToSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/TellCommand.hpp | 2 +- .../llapi/mc}/TellRawCommand.hpp | 2 +- .../llapi/mc}/TemplateStructurePiece.hpp | 2 +- .../llapi/mc}/TemporalAttributeBuff.hpp | 2 +- .../MC => include/llapi/mc}/TemptGoal.hpp | 2 +- .../mc}/TerrainBurstReactionComponent.hpp | 2 +- .../llapi/mc}/TestForBlockCommand.hpp | 2 +- .../llapi/mc}/TestForBlocksCommand.hpp | 2 +- .../llapi/mc}/TestForCommand.hpp | 2 +- .../llapi/mc}/TextObjectLocalizedText.hpp | 2 +- .../mc}/TextObjectLocalizedTextWithParams.hpp | 2 +- .../llapi/mc}/TextObjectParser.hpp | 2 +- .../llapi/mc}/TextObjectRoot.hpp | 2 +- .../llapi/mc}/TextObjectText.hpp | 2 +- .../MC => include/llapi/mc}/TextPacket.hpp | 2 +- .../llapi/mc}/TextureUVCoordinateSet.hpp | 2 +- .../llapi/mc}/TheEndDimension.hpp | 2 +- .../llapi/mc}/TheEndGenerator.hpp | 2 +- .../llapi/mc}/TheEndSpikeHelper.hpp | 2 +- .../llapi/mc}/ThinFenceBlock.hpp | 2 +- .../llapi/mc}/ThirdPartyInfo.hpp | 2 +- .../MC => include/llapi/mc}/Throwable.hpp | 2 +- .../MC => include/llapi/mc}/ThrownEgg.hpp | 2 +- .../llapi/mc}/ThrownEnderpearl.hpp | 2 +- .../MC => include/llapi/mc}/ThrownIceBomb.hpp | 2 +- .../MC => include/llapi/mc}/ThrownPotion.hpp | 2 +- .../mc}/ThrownPotionEffectSubcomponent.hpp | 2 +- .../MC => include/llapi/mc}/ThrownTrident.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Tick.hpp | 0 .../llapi/mc}/TickSyncPacket.hpp | 2 +- .../llapi/mc}/TickWorldComponent.hpp | 2 +- .../llapi/mc}/TickWorldDescription.hpp | 2 +- .../MC => include/llapi/mc}/TickingArea.hpp | 2 +- .../llapi/mc}/TickingAreaCommand.hpp | 2 +- .../llapi/mc}/TickingAreaDescription.hpp | 2 +- .../llapi/mc}/TickingAreaList.hpp | 2 +- .../llapi/mc}/TickingAreaListBase.hpp | 2 +- .../llapi/mc}/TickingAreaView.hpp | 2 +- .../llapi/mc}/TickingAreasManager.hpp | 2 +- .../MC => include/llapi/mc}/TimeCommand.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Timer.hpp | 2 +- .../llapi/mc}/TimerComponent.hpp | 2 +- .../llapi/mc}/TimerDefinition.hpp | 2 +- .../MC => include/llapi/mc}/TimerSystem.hpp | 2 +- .../MC => include/llapi/mc}/TitleCommand.hpp | 2 +- .../MC => include/llapi/mc}/TitleInfo.hpp | 2 +- .../llapi/mc}/TitleRawCommand.hpp | 2 +- .../MC => include/llapi/mc}/TntBlock.hpp | 2 +- .../llapi/mc}/ToggleDownfallCommand.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Token.hpp | 2 +- .../MC => include/llapi/mc}/ToolRecipes.hpp | 2 +- .../MC => include/llapi/mc}/TopSnowBlock.hpp | 2 +- .../llapi/mc}/TopSnowBlockItem.hpp | 2 +- .../MC => include/llapi/mc}/TorchBlock.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Trade.hpp | 2 +- .../llapi/mc}/Trade2ContainerManagerModel.hpp | 2 +- .../llapi/mc}/TradeContainerManagerModel.hpp | 2 +- .../MC => include/llapi/mc}/TradeGroup.hpp | 2 +- .../llapi/mc}/TradeInterestGoal.hpp | 2 +- .../MC => include/llapi/mc}/TradeItem.hpp | 2 +- .../llapi/mc}/TradeResupplyDescription.hpp | 2 +- .../MC => include/llapi/mc}/TradeTable.hpp | 2 +- .../MC => include/llapi/mc}/TradeTables.hpp | 2 +- .../MC => include/llapi/mc}/TradeTier.hpp | 2 +- .../llapi/mc}/TradeWithPlayerGoal.hpp | 2 +- .../llapi/mc}/TradeableSystem.hpp | 2 +- .../llapi/mc}/TraderMaterialTypeFunction.hpp | 2 +- .../llapi/mc}/TrailDescription.hpp | 2 +- .../MC => include/llapi/mc}/TrailSystem.hpp | 2 +- .../mc}/TransactionalWorldBlockTarget.hpp | 2 +- .../llapi/mc}/TransferPacket.hpp | 2 +- .../llapi/mc}/TransformationComponent.hpp | 2 +- .../llapi/mc}/TransformationDescription.hpp | 2 +- .../llapi/mc}/TransformationSystem.hpp | 2 +- .../llapi/mc}/TransporterComponent.hpp | 2 +- .../MC => include/llapi/mc}/TrapDoorBlock.hpp | 2 +- .../MC => include/llapi/mc}/TreeHelper.hpp | 2 +- .../llapi/mc}/TridentChannelingEnchant.hpp | 2 +- .../llapi/mc}/TridentImpalerEnchant.hpp | 2 +- .../MC => include/llapi/mc}/TridentItem.hpp | 2 +- .../llapi/mc}/TridentLoyaltyEnchant.hpp | 2 +- .../llapi/mc}/TridentRiptideEnchant.hpp | 2 +- .../llapi/mc}/TriggerDescription.hpp | 2 +- .../MC => include/llapi/mc}/TripWireBlock.hpp | 2 +- .../llapi/mc}/TripWireHookBlock.hpp | 2 +- .../MC => include/llapi/mc}/TripodCamera.hpp | 2 +- .../llapi/mc}/TripodCameraDescription.hpp | 2 +- .../MC => include/llapi/mc}/TropicalFish.hpp | 2 +- .../llapi/mc}/TropicalFishInfo.hpp | 2 +- .../llapi/mc}/TrustComponent.hpp | 2 +- .../llapi/mc}/TrustDescription.hpp | 2 +- .../MC => include/llapi/mc}/TrustedKeys.hpp | 2 +- .../llapi/mc}/TrustingComponent.hpp | 2 +- .../llapi/mc}/TrustingDescription.hpp | 2 +- .../MC => include/llapi/mc}/Turtle.hpp | 2 +- .../llapi/mc}/TurtleEggBlock.hpp | 2 +- .../llapi/mc}/TwistingVinesBlock.hpp | 2 +- .../llapi/mc}/TwistingVinesClusterFeature.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Types.hpp | 11 +- .../llapi/mc}/UnburiedConstraint.hpp | 2 +- .../llapi/mc}/UnderwaterCanyonFeature.hpp | 2 +- .../llapi/mc}/UnderwaterLargeCaveFeature.hpp | 2 +- .../llapi/mc}/UnderwaterTorchBlock.hpp | 2 +- .../llapi/mc}/UndyedShulkerBoxBlock.hpp | 2 +- .../llapi/mc}/UnverifiedCertificate.hpp | 2 +- .../llapi/mc}/UpdateAttributesPacket.hpp | 2 +- .../llapi/mc}/UpdateBlockPacket.hpp | 2 +- .../llapi/mc}/UpdateBlockPropertiesPacket.hpp | 2 +- .../llapi/mc}/UpdateBlockSyncedPacket.hpp | 2 +- .../llapi/mc}/UpdateEquipPacket.hpp | 2 +- .../llapi/mc}/UpdatePlayerGameTypePacket.hpp | 2 +- .../llapi/mc}/UpdateSoftEnumPacket.hpp | 2 +- .../llapi/mc}/UpdateTradePacket.hpp | 2 +- .../MC => include/llapi/mc}/UriListener.hpp | 2 +- .../llapi/mc}/UseActorDefinition.hpp | 2 +- .../MC => include/llapi/mc}/UseActorNode.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Util.hpp | 2 +- .../llapi/mc}/VanillaActorRendererId.hpp | 2 +- .../MC => include/llapi/mc}/VanillaActors.hpp | 2 +- .../llapi/mc}/VanillaAppConfigs.hpp | 2 +- ...anillaBastionJigsawStructureBlockRules.hpp | 2 +- .../VanillaBastionJigsawStructureElements.hpp | 2 +- .../mc}/VanillaBastionJigsawStructures.hpp | 2 +- .../MC => include/llapi/mc}/VanillaBiomes.hpp | 2 +- .../llapi/mc}/VanillaBlockConversion.hpp | 2 +- .../mc}/VanillaBlockStateTransformUtils.hpp | 2 +- .../llapi/mc}/VanillaBlockTypes.hpp | 2 +- .../llapi/mc}/VanillaBlockUpdater.hpp | 2 +- .../MC => include/llapi/mc}/VanillaBlocks.hpp | 2 +- .../llapi/mc}/VanillaBuiltInEntities.hpp | 2 +- .../llapi/mc}/VanillaDimensionFactory.hpp | 2 +- .../llapi/mc}/VanillaDimensions.hpp | 2 +- .../llapi/mc}/VanillaFeatures.hpp | 2 +- .../mc}/VanillaGameModuleDedicatedServer.hpp | 2 +- .../llapi/mc}/VanillaGameModuleServer.hpp | 2 +- .../llapi/mc}/VanillaGameVersions.hpp | 2 +- .../llapi/mc}/VanillaGoalDefinition.hpp | 2 +- .../llapi/mc}/VanillaGoalUtility.hpp | 2 +- .../llapi/mc}/VanillaInPackagePacks.hpp | 2 +- .../llapi/mc}/VanillaItemTiers.hpp | 2 +- .../MC => include/llapi/mc}/VanillaItems.hpp | 2 +- .../llapi/mc}/VanillaLevelChunkUpgrade.hpp | 2 +- .../llapi/mc}/VanillaOverworldBiomeSource.hpp | 2 +- .../VanillaServerGameplayEventListener.hpp | 2 +- .../llapi/mc}/VanillaServerNetworkHandler.hpp | 2 +- .../MC => include/llapi/mc}/VanillaStates.hpp | 2 +- .../llapi/mc}/VanillaSystemsRegistration.hpp | 2 +- .../llapi/mc}/VanillaTreeFeature.hpp | 2 +- ...anillaVillageJigsawStructureActorRules.hpp | 2 +- ...anillaVillageJigsawStructureBlockRules.hpp | 2 +- ...llaVillageJigsawStructureBlockTagRules.hpp | 2 +- .../VanillaVillageJigsawStructureElements.hpp | 2 +- .../mc}/VanillaVillageJigsawStructures.hpp | 2 +- .../llapi/mc}/VanillaWorldSystems.hpp | 2 +- .../llapi/mc}/VarIntDataInput.hpp | 4 +- .../llapi/mc}/VarIntDataOutput.hpp | 2 +- .../llapi/mc}/VariantDescription.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Vec2.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Vec3.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Vex.hpp | 2 +- .../llapi/mc}/VexCopyOwnerTargetGoal.hpp | 2 +- .../llapi/mc}/VexRandomMoveGoal.hpp | 2 +- .../MC => include/llapi/mc}/Village.hpp | 2 +- .../llapi/mc}/VillageFeature.hpp | 2 +- .../llapi/mc}/VillageManager.hpp | 2 +- .../MC => include/llapi/mc}/VillagePiece.hpp | 2 +- .../MC => include/llapi/mc}/VillageStart.hpp | 2 +- .../MC => include/llapi/mc}/Villager.hpp | 2 +- .../MC => include/llapi/mc}/VillagerBase.hpp | 2 +- .../MC => include/llapi/mc}/VillagerV2.hpp | 2 +- .../llapi/mc}/VindicationIllager.hpp | 2 +- .../MC => include/llapi/mc}/VineBlock.hpp | 2 +- .../MC => include/llapi/mc}/VinesFeature.hpp | 2 +- .../llapi/mc}/VirtualCommandOrigin.hpp | 2 +- .../llapi/mc}/WASDControlledDescription.hpp | 2 +- .../llapi/mc}/WSAStartupSingleton.hpp | 2 +- .../llapi/mc}/WSServerCommand.hpp | 2 +- .../llapi/mc}/WaitDefinition.hpp | 2 +- .../MC => include/llapi/mc}/WaitNode.hpp | 2 +- .../llapi/mc}/WaitTicksDefinition.hpp | 2 +- .../MC => include/llapi/mc}/WaitTicksNode.hpp | 2 +- .../mc}/WalkAnimationSpeedDescription.hpp | 2 +- .../MC => include/llapi/mc}/WalkState.hpp | 2 +- .../MC => include/llapi/mc}/WallBlock.hpp | 2 +- .../llapi/mc}/WallClimberPathNavigation.hpp | 2 +- .../llapi/mc}/WanderingTrader.hpp | 2 +- .../llapi/mc}/WanderingTraderScheduler.hpp | 2 +- .../llapi/mc}/WantsJockeyDescription.hpp | 2 +- .../llapi/mc}/WarpedFungusOnAStickItem.hpp | 2 +- .../MC => include/llapi/mc}/WaterAnimal.hpp | 2 +- .../llapi/mc}/WaterBoundPathNavigation.hpp | 2 +- .../llapi/mc}/WaterLilyBlockItem.hpp | 2 +- .../llapi/mc}/WaterMovementDescription.hpp | 2 +- .../llapi/mc}/WaterlilyBlock.hpp | 2 +- .../llapi/mc}/WaterlilyFeature.hpp | 2 +- .../MC => include/llapi/mc}/WeaponItem.hpp | 2 +- .../MC => include/llapi/mc}/WeaponRecipes.hpp | 2 +- .../MC => include/llapi/mc}/Weather.hpp | 2 +- .../llapi/mc}/WeatherCommand.hpp | 2 +- .../llapi/mc}/WeatherHelpers.hpp | 2 +- .../MC => include/llapi/mc}/WebBlock.hpp | 2 +- .../MC => include/llapi/mc}/WebToken.hpp | 2 +- .../llapi/mc}/WebviewObserver.hpp | 2 +- .../llapi/mc}/WeepingVinesBlock.hpp | 2 +- .../llapi/mc}/WeepingVinesClusterFeature.hpp | 2 +- .../llapi/mc}/WeightedPressurePlateBlock.hpp | 2 +- .../llapi/mc}/WeightedRandomFeature.hpp | 2 +- .../llapi/mc}/WellKnownBiomeTags.hpp | 2 +- .../MC => include/llapi/mc}/Whitelist.hpp | 2 +- .../llapi/mc}/WhitelistCommand.hpp | 2 +- .../llapi/mc}/WhitelistEntry.hpp | 2 +- .../MC => include/llapi/mc}/WhitelistFile.hpp | 2 +- .../MC => include/llapi/mc}/WinStackTrace.hpp | 2 +- .../llapi/mc}/WireframeQueue.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Witch.hpp | 2 +- .../MC => include/llapi/mc}/WitherBoss.hpp | 2 +- .../llapi/mc}/WitherBossSpawnUtilities.hpp | 2 +- .../llapi/mc}/WitherRandomAttackPosGoal.hpp | 2 +- .../llapi/mc}/WitherRoseBlock.hpp | 2 +- .../MC => include/llapi/mc}/WitherSkull.hpp | 2 +- .../llapi/mc}/WitherTargetHighestDamage.hpp | 2 +- .../{Header/MC => include/llapi/mc}/Wolf.hpp | 2 +- .../MC => include/llapi/mc}/WoodBlock.hpp | 2 +- .../llapi/mc}/WoodButtonBlock.hpp | 2 +- .../MC => include/llapi/mc}/WoodSlabBlock.hpp | 2 +- .../llapi/mc}/WoodSlabBlockItem.hpp | 2 +- .../llapi/mc}/WoodlandMansionFeature.hpp | 2 +- .../llapi/mc}/WoodlandMansionPieces.hpp | 2 +- .../llapi/mc}/WoodlandMansionStart.hpp | 2 +- .../llapi/mc}/WoolCarpetBlock.hpp | 2 +- .../MC => include/llapi/mc}/WorkGoal.hpp | 2 +- .../llapi/mc}/WorkbenchBlock.hpp | 2 +- .../MC => include/llapi/mc}/WorkerPool.hpp | 2 +- .../llapi/mc}/WorldBlockTarget.hpp | 2 +- .../llapi/mc}/WorldBuilderCommand.hpp | 2 +- .../llapi/mc}/WorldChangeTransaction.hpp | 2 +- .../llapi/mc}/WorldGenerator.hpp | 2 +- .../llapi/mc}/WorldHistoryPackSource.hpp | 2 +- .../llapi/mc}/WorldLimitChunkSource.hpp | 2 +- .../llapi/mc}/WorldPackHistory.hpp | 2 +- .../llapi/mc}/WorldPacksHistoryFile.hpp | 2 +- .../llapi/mc}/WorldSessionEndPoint.hpp | 2 +- .../llapi/mc}/WorldTemplateInfo.hpp | 2 +- .../llapi/mc}/WorldTemplateLevelData.hpp | 2 +- .../llapi/mc}/WorldTemplateManager.hpp | 2 +- .../WorldTemplateManagerProxyCallbacks.hpp | 2 +- .../llapi/mc}/WorldTemplatePackManifest.hpp | 2 +- .../llapi/mc}/WorldTemplatePackSource.hpp | 2 +- .../llapi/mc}/WritableBookItem.hpp | 2 +- .../llapi/mc}/WrittenBookItem.hpp | 2 +- .../MC => include/llapi/mc}/XPCommand.hpp | 2 +- .../llapi/mc}/ZipPackAccessStrategy.hpp | 2 +- ...ZipPackAccessStrategyOwningFileAcccess.hpp | 2 +- .../llapi/mc}/ZlibFileAccessWrapper.hpp | 2 +- .../MC => include/llapi/mc}/Zombie.hpp | 2 +- .../llapi/mc}/ZombieVillager.hpp | 2 +- .../llapi/mc}/_ProfilerLiteTimer.hpp | 2 +- .../MC => include/llapi/mc}/_TickPtr.hpp | 2 +- .../MC => include/llapi/mc}/glTFExporter.hpp | 2 +- .../MC => include/llapi/mc}/persona.hpp | 2 +- .../{Header/MC => include/llapi/mc}/port.hpp | 2 +- .../llapi/perm}/Foundation.hpp | 2 +- .../PERM => include/llapi/perm}/Member.hpp | 2 +- .../llapi/perm}/Permission.hpp | 4 +- .../PERM => include/llapi/perm}/Role.hpp | 4 +- .../Utils => include/llapi/utils}/Bstream.h | 0 .../llapi/utils}/CryptHelper.h | 2 +- .../Utils => include/llapi/utils}/CsLock.h | 5 +- .../Utils => include/llapi/utils}/DbgHelper.h | 5 +- .../llapi/utils}/FileHelper.h | 2 +- .../Utils => include/llapi/utils}/Hash.h | 0 .../Utils => include/llapi/utils}/Json.h | 2 +- .../llapi/utils}/NetworkHelper.h | 4 +- .../Utils => include/llapi/utils}/Optional.h | 0 .../llapi/utils}/PatchHelper.h | 0 .../Utils => include/llapi/utils}/PlayerMap.h | 2 +- .../llapi/utils}/PluginOwnData.h | 2 +- .../Utils => include/llapi/utils}/RNG.h | 4 +- .../Utils => include/llapi/utils}/SRWLock.h | 3 +- .../Utils => include/llapi/utils}/STLHelper.h | 0 .../llapi/utils}/ShellLinkFile.h | 2 +- .../llapi/utils}/StringHelper.h | 2 +- .../llapi/utils}/StringReader.h | 2 +- .../llapi/utils}/TypeConversionHelper.hpp | 4 +- .../Utils => include/llapi/utils}/VarInt.h | 0 .../llapi/utils}/ViewHelper.h | 0 .../Utils => include/llapi/utils}/WinHelper.h | 2 +- .../{Main => src/liteloader}/AddonsHelper.cpp | 48 +- .../{Main => src/liteloader}/BStats.cpp | 32 +- .../liteloader}/BuiltinBugFix.cpp | 40 +- .../liteloader}/BuiltinCommands.cpp | 46 +- .../liteloader}/BuiltinUnlockCmd.cpp | 22 +- .../{Main => src/liteloader}/Config.cpp | 36 +- .../{Main => src/liteloader}/CrashLogger.cpp | 20 +- .../{Main => src/liteloader}/LiteLoader.cpp | 67 +- .../{Main => src/liteloader}/Loader.cpp | 44 +- .../liteloader}/ModifyInfomation.cpp | 28 +- .../{Main => src/liteloader}/ModifyPack.cpp | 0 .../liteloader}/PluginManager.cpp | 82 +- .../liteloader}/SEHProtection.cpp | 8 +- .../liteloader}/SimpleServerLogger.cpp | 23 +- .../{Main => src/liteloader}/dllmain.cpp | 2 +- .../{Kernel => src/llapi}/AllowListAPI.cpp | 0 .../{Kernel => src/llapi}/Compatibility.cpp | 6 +- LiteLoader/{Kernel => src/llapi}/EventAPI.cpp | 166 +- .../llapi}/FormPacketHelper.cpp | 22 +- LiteLoader/{Kernel => src/llapi}/FormUI.cpp | 14 +- LiteLoader/{Kernel => src/llapi}/I18nAPI.cpp | 15 +- LiteLoader/{Kernel => src/llapi}/KVDBAPI.cpp | 10 +- LiteLoader/{Kernel => src/llapi}/LLAPI.cpp | 60 +- .../{Kernel => src/llapi}/LoggerAPI.cpp | 24 +- .../llapi}/ObjectivePacketHelper.cpp | 2 +- LiteLoader/src/llapi/ParticleAPI.cpp | 19 + LiteLoader/src/llapi/PermissionAPI.cpp | 3 + .../{Kernel => src/llapi}/PlayerInfoAPI.cpp | 14 +- .../{Kernel => src/llapi}/RemoteCallAPI.cpp | 10 +- .../{Kernel => src/llapi}/ScheduleAPI.cpp | 30 +- .../{Kernel => src/llapi}/ServerAPI.cpp | 14 +- .../llapi/command}/CommandOriginAPI.cpp | 6 +- .../src/llapi/command/CommandOutputAPI.cpp | 13 + .../llapi/command}/CommandRegistryAPI.cpp | 14 +- .../llapi/command}/DynamicCommandAPI.cpp | 59 +- .../{Kernel/DB => src/llapi/db}/Any.cpp | 2 +- .../DB => src/llapi/db}/ConnParams.cpp | 6 +- .../llapi/db}/Impl/MySQL/Session.cpp | 8 +- .../DB => src/llapi/db}/Impl/MySQL/Stmt.cpp | 10 +- .../llapi/db}/Impl/SQLite/Session.cpp | 8 +- .../DB => src/llapi/db}/Impl/SQLite/Stmt.cpp | 8 +- .../{Kernel/DB => src/llapi/db}/Row.cpp | 2 +- .../{Kernel/DB => src/llapi/db}/RowSet.cpp | 2 +- .../{Kernel/DB => src/llapi/db}/Session.cpp | 8 +- .../{Kernel/DB => src/llapi/db}/Stmt.cpp | 4 +- .../{Kernel/MC => src/llapi/mc}/ActorAPI.cpp | 57 +- .../MC => src/llapi/mc}/ActorDamageSource.cpp | 4 +- .../{Kernel/MC => src/llapi/mc}/BiomeAPI.cpp | 11 +- .../{Kernel/MC => src/llapi/mc}/BlockAPI.cpp | 21 +- .../MC => src/llapi/mc}/BlockActorAPI.cpp | 18 +- .../MC => src/llapi/mc}/BlockInstanceAPI.cpp | 27 +- .../MC => src/llapi/mc}/BlockLegacyAPI.cpp | 10 +- .../MC => src/llapi/mc}/BlockSourceAPI.cpp | 6 +- .../MC => src/llapi/mc}/ColorFormatAPI.cpp | 6 +- .../MC => src/llapi/mc}/ContainerAPI.cpp | 11 +- LiteLoader/src/llapi/mc/GameModeAPI.cpp | 7 + .../MC => src/llapi/mc}/HitResultAPI.cpp | 3 +- .../{Kernel/MC => src/llapi/mc}/I18nAPI.cpp | 4 +- .../MC => src/llapi/mc}/ItemActorAPI.cpp | 11 +- .../MC => src/llapi/mc}/ItemStackAPI.cpp | 21 +- .../MC => src/llapi/mc}/JsonHelpers.cpp | 2 +- .../{Kernel/MC => src/llapi/mc}/LevelAPI.cpp | 45 +- LiteLoader/src/llapi/mc/MobAPI.cpp | 13 + .../{Kernel/MC => src/llapi/mc}/MolangAPI.cpp | 0 .../llapi/mc}/NetworkIdentifierAPI.cpp | 4 +- .../{Kernel/MC => src/llapi/mc}/PlayerAPI.cpp | 99 +- .../llapi/mc/ResourcePackRepositoryAPI.cpp | 14 + .../MC => src/llapi/mc}/SpawnerAPI.cpp | 12 +- .../llapi/mc}/StaticVanillaBlocksAPI.cpp | 0 .../llapi/mc}/StructureTemplateAPI.cpp | 14 +- .../{Kernel/MC => src/llapi/mc}/Types.cpp | 6 +- .../NBT => src/llapi/nbt}/ByteArrayTagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/ByteTagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/CompoundTagAPI.cpp | 50 +- .../NBT => src/llapi/nbt}/DoubleTagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/EndTagAPI.cpp | 2 +- .../NBT => src/llapi/nbt}/FloatTagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/Int64TagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/IntArrayTagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/IntTagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/ListTagAPI.cpp | 29 +- .../llapi/nbt}/PrettySnbtFormatAPI.cpp | 4 +- .../NBT => src/llapi/nbt}/ShortTagAPI.cpp | 3 +- .../NBT => src/llapi/nbt}/StringTagAPI.cpp | 3 +- .../{Kernel/NBT => src/llapi/nbt}/TagAPI.cpp | 26 +- .../NBT => src/llapi/nbt}/TagMemoryChunk.cpp | 2 +- .../llapi/network}/BinaryStreamAPI.cpp | 8 +- .../llapi/network}/PacketAPI.cpp | 380 +- .../network}/ReadOnlyBinaryStreamAPI.cpp | 10 +- .../llapi/scoreboard}/ObjectiveAPI.cpp | 6 +- .../llapi/scoreboard}/ScoreboardAPI.cpp | 22 +- .../Utils => src/llapi/utils}/CryptHelper.cpp | 2 +- .../Utils => src/llapi/utils}/CsLock.cpp | 2 +- .../Utils => src/llapi/utils}/DbgHelper.cpp | 16 +- .../Utils => src/llapi/utils}/FileHelper.cpp | 8 +- .../llapi/utils}/GlobalService.cpp | 29 +- .../llapi/utils}/NetworkHelper.cpp | 16 +- .../Utils => src/llapi/utils}/PlayerMap.cpp | 6 +- .../llapi/utils}/PluginOwnData.cpp | 2 +- .../Utils => src/llapi/utils}/SRWLock.cpp | 5 +- LiteLoader/src/llapi/utils/STLHelper.cpp | 1 + .../llapi/utils}/ShellLinkFile.cpp | 4 +- .../llapi/utils}/StringHelper.cpp | 4 +- .../llapi/utils}/StringReader.cpp | 2 +- .../Utils => src/llapi/utils}/WinHelper.cpp | 16 +- .../include}/Base64/Base64.hpp | 0 .../include}/FMT/args.h | 0 .../include}/FMT/chrono.h | 0 .../include}/FMT/color.h | 0 .../include}/FMT/compile.h | 0 .../include}/FMT/core.h | 0 .../include}/FMT/format-inl.h | 0 .../include}/FMT/format.h | 0 .../include}/FMT/locale.h | 0 .../include}/FMT/os.h | 0 .../include}/FMT/ostream.h | 0 .../include}/FMT/printf.h | 0 .../include}/FMT/ranges.h | 0 .../include}/FMT/xchar.h | 0 .../include}/ModUtils/ModUtils.h | 1 + .../include}/Nlohmann/fifo_json.hpp | 0 .../include}/Nlohmann/fifo_map.hpp | 0 .../include}/Nlohmann/json.hpp | 0 .../include}/SQLiteCpp/Assertion.h | 0 .../include}/SQLiteCpp/Backup.h | 0 .../include}/SQLiteCpp/Column.h | 0 .../include}/SQLiteCpp/Database.h | 0 .../include}/SQLiteCpp/Exception.h | 0 .../include}/SQLiteCpp/SQLiteCpp.h | 0 .../include}/SQLiteCpp/Statement.h | 0 .../include}/SQLiteCpp/Transaction.h | 0 .../include}/SQLiteCpp/Utils.h | 0 .../include}/SQLiteCpp/VariadicBind.h | 0 .../compact_enc_det/compact_enc_det.h | 0 .../compact_enc_det_generated_tables.h | 0 .../compact_enc_det_generated_tables2.h | 0 .../compact_enc_det_hint_code.h | 0 .../compact_enc_det/detail_head_string.inc | 0 .../compact_enc_det/util/basictypes.h | 0 .../util/case_insensitive_hash.h | 0 .../compact_enc_det/util/commandlineflags.h | 0 .../util/encodings/encodings.h | 0 .../util/encodings/encodings.pb.h | 0 .../util/languages/languages.h | 0 .../util/languages/languages.pb.h | 0 .../include}/compact_enc_det/util/logging.h | 0 .../include}/compact_enc_det/util/port.h | 0 .../compact_enc_det/util/string_util.h | 0 .../include}/compact_enc_det/util/varsetter.h | 0 .../include}/dbghelp/dbghelp.h | 0 .../include}/detours/detours.h | 0 .../include}/detours/detver.h | 0 .../include}/dyncall/dyncall.h | 0 .../include}/dyncall/dyncall_alloc.h | 0 .../include}/dyncall/dyncall_alloc_wx.h | 0 .../include}/dyncall/dyncall_args.h | 0 .../include}/dyncall/dyncall_callback.h | 0 .../include}/dyncall/dyncall_callf.h | 0 .../include}/dyncall/dyncall_callvm.h | 0 .../include}/dyncall/dyncall_config.h | 0 .../include}/dyncall/dyncall_macros.h | 0 .../include}/dyncall/dyncall_signature.h | 0 .../include}/dyncall/dyncall_struct.h | 0 .../include}/dyncall/dyncall_thunk.h | 0 .../include}/dyncall/dyncall_types.h | 0 .../include}/dyncall/dyncall_utils.h | 0 .../include}/dyncall/dyncall_value.h | 0 .../include}/dyncall/dyncall_vector.h | 0 .../include}/dyncall/dyncall_version.h | 0 .../include}/dyncall/dynload.h | 0 .../include}/dyncall/dynload_alloc.h | 0 .../third-party/include/entt/config/config.h | 81 + .../third-party/include/entt/config/macro.h | 7 + .../third-party/include/entt/config/version.h | 14 + .../include/entt/container/dense_map.hpp | 1060 +++++ .../include/entt/container/dense_set.hpp | 895 +++++ .../include/entt/container/fwd.hpp | 26 + .../include}/entt/core/algorithm.hpp | 21 +- .../third-party/include/entt/core/any.hpp | 510 +++ .../third-party/include/entt/core/attribute.h | 30 + .../include/entt/core/compressed_pair.hpp | 279 ++ .../third-party/include/entt/core/enum.hpp | 97 + .../include}/entt/core/family.hpp | 11 +- .../include}/entt/core/fwd.hpp | 13 +- .../include/entt/core/hashed_string.hpp | 334 ++ .../third-party/include/entt/core/ident.hpp | 35 + .../include/entt/core/iterator.hpp | 197 + .../third-party/include/entt/core/memory.hpp | 289 ++ .../include}/entt/core/monostate.hpp | 12 +- .../third-party/include/entt/core/tuple.hpp | 103 + .../include/entt/core/type_info.hpp | 274 ++ .../include}/entt/core/type_traits.hpp | 388 +- .../include}/entt/core/utility.hpp | 43 +- .../include/entt/entity/component.hpp | 64 + .../include}/entt/entity/entity.hpp | 234 +- .../third-party/include/entt/entity/fwd.hpp | 174 + .../third-party/include/entt/entity/group.hpp | 852 ++++ .../include}/entt/entity/handle.hpp | 261 +- .../include/entt/entity/helper.hpp | 144 + .../include}/entt/entity/observer.hpp | 136 +- .../include}/entt/entity/organizer.hpp | 299 +- .../include/entt/entity/registry.hpp | 1530 ++++++++ .../include/entt/entity/runtime_view.hpp | 335 ++ .../include}/entt/entity/snapshot.hpp | 205 +- .../include/entt/entity/sparse_set.hpp | 976 +++++ .../include/entt/entity/storage.hpp | 941 +++++ .../include/entt/entity/storage_mixin.hpp | 236 ++ .../third-party/include/entt/entity/view.hpp | 861 ++++ .../include}/entt/entt.hpp | 21 +- LiteLoader/third-party/include/entt/fwd.hpp | 11 + .../include/entt/graph/adjacency_matrix.hpp | 348 ++ .../third-party/include/entt/graph/dot.hpp | 58 + .../third-party/include/entt/graph/flow.hpp | 327 ++ .../third-party/include/entt/graph/fwd.hpp | 27 + .../include/entt/locator/locator.hpp | 135 + .../include}/entt/meta/adl_pointer.hpp | 7 +- .../include/entt/meta/container.hpp | 247 ++ .../third-party/include/entt/meta/context.hpp | 67 + .../third-party/include/entt/meta/factory.hpp | 643 +++ .../third-party/include/entt/meta/fwd.hpp | 24 + .../third-party/include/entt/meta/meta.hpp | 1949 +++++++++ .../third-party/include/entt/meta/node.hpp | 236 ++ .../include}/entt/meta/pointer.hpp | 24 +- .../third-party/include/entt/meta/policy.hpp | 86 + .../third-party/include/entt/meta/range.hpp | 150 + .../third-party/include/entt/meta/resolve.hpp | 102 + .../include}/entt/meta/template.hpp | 12 +- .../include}/entt/meta/type_traits.hpp | 37 +- .../third-party/include/entt/meta/utility.hpp | 539 +++ .../entt/platform/android-ndk-r17.hpp | 37 +- .../include}/entt/poly/fwd.hpp | 14 +- .../include}/entt/poly/poly.hpp | 182 +- .../third-party/include/entt/process/fwd.hpp | 14 + .../include}/entt/process/process.hpp | 135 +- .../include}/entt/process/scheduler.hpp | 79 +- .../include/entt/resource/cache.hpp | 423 ++ .../third-party/include/entt/resource/fwd.hpp | 19 + .../include/entt/resource/loader.hpp | 33 + .../include/entt/resource/resource.hpp | 246 ++ .../include}/entt/signal/delegate.hpp | 141 +- .../include/entt/signal/dispatcher.hpp | 390 ++ .../include/entt/signal/emitter.hpp | 170 + .../third-party/include/entt/signal/fwd.hpp | 46 + .../include}/entt/signal/sigh.hpp | 318 +- .../include}/gsl/gsl | 0 .../include}/gsl/gsl_algorithm | 0 .../include}/gsl/gsl_assert | 0 .../include}/gsl/gsl_byte | 0 .../include}/gsl/gsl_util | 0 .../include}/gsl/multi_span | 0 .../include}/gsl/pointers | 0 .../include}/gsl/span | 0 .../include}/gsl/span_ext | 0 .../include}/gsl/string_span | 0 .../include}/httplib/httplib.h | 0 .../include}/leveldb/c.h | 0 .../include}/leveldb/cache.h | 0 .../include}/leveldb/comparator.h | 0 .../include}/leveldb/db.h | 0 .../include}/leveldb/dumpfile.h | 0 .../include}/leveldb/env.h | 0 .../include}/leveldb/export.h | 0 .../include}/leveldb/filter_policy.h | 0 .../include}/leveldb/iterator.h | 0 .../include}/leveldb/options.h | 0 .../include}/leveldb/slice.h | 0 .../include}/leveldb/status.h | 0 .../include}/leveldb/table.h | 0 .../include}/leveldb/table_builder.h | 0 .../include}/leveldb/write_batch.h | 0 .../include/magic_enum/magic_enum.hpp | 1504 +++++++ .../include}/mysql/errmsg.h | 0 .../include}/mysql/field_types.h | 0 .../include}/mysql/my_command.h | 0 .../include}/mysql/my_compress.h | 0 .../include}/mysql/my_list.h | 0 .../include}/mysql/mysql.h | 0 .../include}/mysql/mysql/client_plugin.h | 0 .../include}/mysql/mysql/plugin_auth_common.h | 0 .../mysql/mysql/udf_registration_types.h | 0 .../include}/mysql/mysql_com.h | 0 .../include}/mysql/mysql_time.h | 0 .../include}/mysql/mysql_version.h | 0 .../include}/mysql/mysqld_error.h | 0 .../include}/mysql/mysqlx_ername.h | 0 .../include}/mysql/mysqlx_error.h | 0 .../include}/mysql/mysqlx_version.h | 0 .../include}/nbt-cpp/nbt.hpp | 0 .../openssl/__DECC_INCLUDE_EPILOGUE.H | 0 .../openssl/__DECC_INCLUDE_PROLOGUE.H | 0 .../include}/openssl/aes.h | 0 .../include}/openssl/asn1.h | 0 .../include}/openssl/asn1.h.in | 0 .../include}/openssl/asn1_mac.h | 0 .../include}/openssl/asn1err.h | 0 .../include}/openssl/asn1t.h | 0 .../include}/openssl/asn1t.h.in | 0 .../include}/openssl/async.h | 0 .../include}/openssl/asyncerr.h | 0 .../include}/openssl/bio.h | 0 .../include}/openssl/bio.h.in | 0 .../include}/openssl/bioerr.h | 0 .../include}/openssl/blowfish.h | 0 .../include}/openssl/bn.h | 0 .../include}/openssl/bnerr.h | 0 .../include}/openssl/buffer.h | 0 .../include}/openssl/buffererr.h | 0 .../include}/openssl/camellia.h | 0 .../include}/openssl/cast.h | 0 .../include}/openssl/cmac.h | 0 .../include}/openssl/cmp.h | 0 .../include}/openssl/cmp.h.in | 0 .../include}/openssl/cmp_util.h | 0 .../include}/openssl/cmperr.h | 0 .../include}/openssl/cms.h | 0 .../include}/openssl/cms.h.in | 0 .../include}/openssl/cmserr.h | 0 .../include}/openssl/comp.h | 0 .../include}/openssl/comperr.h | 0 .../include}/openssl/conf.h | 0 .../include}/openssl/conf.h.in | 0 .../include}/openssl/conf_api.h | 0 .../include}/openssl/conferr.h | 0 .../include}/openssl/configuration.h | 0 .../include}/openssl/configuration.h.in | 0 .../include}/openssl/conftypes.h | 0 .../include}/openssl/core.h | 0 .../include}/openssl/core_dispatch.h | 0 .../include}/openssl/core_names.h | 0 .../include}/openssl/core_object.h | 0 .../include}/openssl/crmf.h | 0 .../include}/openssl/crmf.h.in | 0 .../include}/openssl/crmferr.h | 0 .../include}/openssl/crypto.h | 0 .../include}/openssl/crypto.h.in | 0 .../include}/openssl/cryptoerr.h | 0 .../include}/openssl/cryptoerr_legacy.h | 0 .../include}/openssl/ct.h | 0 .../include}/openssl/ct.h.in | 0 .../include}/openssl/cterr.h | 0 .../include}/openssl/decoder.h | 0 .../include}/openssl/decodererr.h | 0 .../include}/openssl/des.h | 0 .../include}/openssl/dh.h | 0 .../include}/openssl/dherr.h | 0 .../include}/openssl/dsa.h | 0 .../include}/openssl/dsaerr.h | 0 .../include}/openssl/dtls1.h | 0 .../include}/openssl/e_os2.h | 0 .../include}/openssl/ebcdic.h | 0 .../include}/openssl/ec.h | 0 .../include}/openssl/ecdh.h | 0 .../include}/openssl/ecdsa.h | 0 .../include}/openssl/ecerr.h | 0 .../include}/openssl/encoder.h | 0 .../include}/openssl/encodererr.h | 0 .../include}/openssl/engine.h | 0 .../include}/openssl/engineerr.h | 0 .../include}/openssl/err.h | 0 .../include}/openssl/err.h.in | 0 .../include}/openssl/ess.h | 0 .../include}/openssl/ess.h.in | 0 .../include}/openssl/esserr.h | 0 .../include}/openssl/evp.h | 0 .../include}/openssl/evperr.h | 0 .../include}/openssl/fips_names.h | 0 .../include}/openssl/fipskey.h | 0 .../include}/openssl/fipskey.h.in | 0 .../include}/openssl/hmac.h | 0 .../include}/openssl/http.h | 0 .../include}/openssl/httperr.h | 0 .../include}/openssl/idea.h | 0 .../include}/openssl/kdf.h | 0 .../include}/openssl/kdferr.h | 0 .../include}/openssl/lhash.h | 0 .../include}/openssl/lhash.h.in | 0 .../include}/openssl/macros.h | 0 .../include}/openssl/md2.h | 0 .../include}/openssl/md4.h | 0 .../include}/openssl/md5.h | 0 .../include}/openssl/mdc2.h | 0 .../include}/openssl/modes.h | 0 .../include}/openssl/obj_mac.h | 0 .../include}/openssl/objects.h | 0 .../include}/openssl/objectserr.h | 0 .../include}/openssl/ocsp.h | 0 .../include}/openssl/ocsp.h.in | 0 .../include}/openssl/ocsperr.h | 0 .../include}/openssl/opensslconf.h | 0 .../include}/openssl/opensslv.h | 0 .../include}/openssl/opensslv.h.in | 0 .../include}/openssl/ossl_typ.h | 0 .../include}/openssl/param_build.h | 0 .../include}/openssl/params.h | 0 .../include}/openssl/pem.h | 0 .../include}/openssl/pem2.h | 0 .../include}/openssl/pemerr.h | 0 .../include}/openssl/pkcs12.h | 0 .../include}/openssl/pkcs12.h.in | 0 .../include}/openssl/pkcs12err.h | 0 .../include}/openssl/pkcs7.h | 0 .../include}/openssl/pkcs7.h.in | 0 .../include}/openssl/pkcs7err.h | 0 .../include}/openssl/prov_ssl.h | 0 .../include}/openssl/proverr.h | 0 .../include}/openssl/provider.h | 0 .../include}/openssl/rand.h | 0 .../include}/openssl/randerr.h | 0 .../include}/openssl/rc2.h | 0 .../include}/openssl/rc4.h | 0 .../include}/openssl/rc5.h | 0 .../include}/openssl/ripemd.h | 0 .../include}/openssl/rsa.h | 0 .../include}/openssl/rsaerr.h | 0 .../include}/openssl/safestack.h | 0 .../include}/openssl/safestack.h.in | 0 .../include}/openssl/seed.h | 0 .../include}/openssl/self_test.h | 0 .../include}/openssl/sha.h | 0 .../include}/openssl/srp.h | 0 .../include}/openssl/srp.h.in | 0 .../include}/openssl/srtp.h | 0 .../include}/openssl/ssl.h | 0 .../include}/openssl/ssl.h.in | 0 .../include}/openssl/ssl2.h | 0 .../include}/openssl/ssl3.h | 0 .../include}/openssl/sslerr.h | 0 .../include}/openssl/sslerr_legacy.h | 0 .../include}/openssl/stack.h | 0 .../include}/openssl/store.h | 0 .../include}/openssl/storeerr.h | 0 .../include}/openssl/symhacks.h | 0 .../include}/openssl/tls1.h | 0 .../include}/openssl/trace.h | 0 .../include}/openssl/ts.h | 0 .../include}/openssl/tserr.h | 0 .../include}/openssl/txt_db.h | 0 .../include}/openssl/types.h | 0 .../include}/openssl/ui.h | 0 .../include}/openssl/ui.h.in | 0 .../include}/openssl/uierr.h | 0 .../include}/openssl/whrlpool.h | 0 .../include}/openssl/x509.h | 0 .../include}/openssl/x509.h.in | 0 .../include}/openssl/x509_vfy.h | 0 .../include}/openssl/x509_vfy.h.in | 0 .../include}/openssl/x509err.h | 0 .../include}/openssl/x509v3.h | 0 .../include}/openssl/x509v3.h.in | 0 .../include}/openssl/x509v3err.h | 0 .../include}/parallel_hashmap/btree.h | 0 .../include}/parallel_hashmap/meminfo.h | 0 .../include}/parallel_hashmap/phmap.h | 0 .../include}/parallel_hashmap/phmap_base.h | 0 .../include}/parallel_hashmap/phmap_bits.h | 0 .../include}/parallel_hashmap/phmap_config.h | 0 .../include}/parallel_hashmap/phmap_dump.h | 0 .../parallel_hashmap/phmap_fwd_decl.h | 0 .../include}/parallel_hashmap/phmap_utils.h | 0 .../include}/pcg/pcg_extras.hpp | 0 .../include}/pcg/pcg_random.hpp | 0 .../include}/pcg/pcg_uint128.hpp | 0 .../include}/seh_exception/seh_exception.hpp | 0 .../include}/sqlite3/sqlite3.h | 0 .../lib}/SQLiteCpp/SQLiteCpp.lib | Bin .../lib}/SQLiteCpp/sqlite3.lib | Bin .../lib}/compact_enc_det/ced.lib | Bin .../lib}/dbghelp/dbghelp.lib | Bin .../lib}/detours/detours.lib | Bin .../lib}/detours/detours.pdb | Bin .../lib}/dyncall/dyncall_s.lib | Bin .../lib}/dyncall/dyncallback_s.lib | Bin .../lib}/dyncall/dynload_s.lib | Bin .../lib}/leveldb/leveldb.lib | Bin .../lib}/mysql/libmysql.pdb | Bin .../lib}/mysql/mysqlclient.lib | Bin .../lib}/openssl/libcrypto.lib | Bin .../lib}/openssl/libssl.lib | Bin .../lib}/sqlite3/sqlite3.lib | Bin .../src}/nbt-cpp/nbt.cpp | 23 +- .../src}/nbt-cpp/nbt_internal.hpp | 2 +- ParticleAPI-1.16.40 | 1 + PermissionAPI-1.16.40 | 1 + PreLoader/CMakeLists.txt | 29 - RELEASE/plugins/LLMoney.dll | Bin 363520 -> 0 bytes RELEASE/plugins/LiteLoader/CrashLogger.dll | Bin 25088 -> 0 bytes RELEASE/plugins/LiteLoader/ParticleAPI.dll | Bin 54784 -> 0 bytes RELEASE/plugins/LiteLoader/PermissionAPI.dll | Bin 453632 -> 0 bytes RELEASE/plugins/LiteLoader/PermissionAPI.pdb | Bin 9605120 -> 0 bytes ScriptEngine/.gitignore | 7 - ScriptEngine/API/SimulatedPlayerAPI.cpp | 667 ---- .../CMake/ScriptEngine-Lua/CMakeLists.txt | 13 +- .../CMake/ScriptEngine-NodeJs/CMakeLists.txt | 17 +- .../CMake/ScriptEngine-QuickJs/CMakeLists.txt | 13 +- ScriptEngine/CMakeLists.txt | 84 +- ScriptEngine/Resource/ScriptEngine.rc | 111 - ScriptEngine/Resource/resource.h | 13 - ScriptEngine/{BaseLib => assets}/BaseLib.js | 0 ScriptEngine/{BaseLib => assets}/BaseLib.lua | 0 ScriptEngine/{API => src/api}/APIHelp.cpp | 34 +- ScriptEngine/{API => src/api}/APIHelp.h | 33 +- ScriptEngine/{API => src/api}/BaseAPI.cpp | 21 +- ScriptEngine/{API => src/api}/BaseAPI.h | 2 +- ScriptEngine/{API => src/api}/BlockAPI.cpp | 12 +- ScriptEngine/{API => src/api}/BlockAPI.h | 4 +- .../{API => src/api}/BlockEntityAPI.cpp | 6 +- .../{API => src/api}/BlockEntityAPI.h | 0 ScriptEngine/{API => src/api}/CommandAPI.cpp | 26 +- ScriptEngine/{API => src/api}/CommandAPI.h | 2 +- .../{API => src/api}/CommandCompatibleAPI.cpp | 16 +- .../{API => src/api}/CommandCompatibleAPI.h | 0 .../{API => src/api}/CommandOriginAPI.cpp | 16 +- .../{API => src/api}/CommandOriginAPI.h | 2 +- .../{API => src/api}/CommandOutputAPI.cpp | 0 .../{API => src/api}/CommandOutputAPI.h | 2 +- .../{API => src/api}/ContainerAPI.cpp | 4 +- ScriptEngine/{API => src/api}/ContainerAPI.h | 0 ScriptEngine/{API => src/api}/DataAPI.cpp | 14 +- ScriptEngine/{API => src/api}/DataAPI.h | 6 +- ScriptEngine/{API => src/api}/DatabaseAPI.cpp | 0 ScriptEngine/{API => src/api}/DatabaseAPI.h | 4 +- ScriptEngine/{API => src/api}/DeviceAPI.cpp | 6 +- ScriptEngine/{API => src/api}/DeviceAPI.h | 0 ScriptEngine/{API => src/api}/EntityAPI.cpp | 14 +- ScriptEngine/{API => src/api}/EntityAPI.h | 0 ScriptEngine/{API => src/api}/EventAPI.cpp | 46 +- ScriptEngine/{API => src/api}/EventAPI.h | 2 +- .../{API => src/api}/FileSystemAPI.cpp | 18 +- ScriptEngine/{API => src/api}/FileSystemAPI.h | 0 .../{API => src/api}/GameUtilsAPI.cpp | 0 ScriptEngine/{API => src/api}/GameUtilsAPI.h | 0 .../{API => src/api}/GlobalNativePointer.cpp | 0 ScriptEngine/{API => src/api}/GuiAPI.cpp | 14 +- ScriptEngine/{API => src/api}/GuiAPI.h | 2 +- .../{API => src/api}/InternationalAPI.cpp | 4 +- .../{API => src/api}/InternationalAPI.h | 0 ScriptEngine/{API => src/api}/ItemAPI.cpp | 4 +- ScriptEngine/{API => src/api}/ItemAPI.h | 0 ScriptEngine/{API => src/api}/LlAPI.cpp | 36 +- ScriptEngine/{API => src/api}/LlAPI.h | 0 ScriptEngine/{API => src/api}/LoggerAPI.cpp | 6 +- ScriptEngine/{API => src/api}/LoggerAPI.h | 0 ScriptEngine/{API => src/api}/McAPI.cpp | 0 ScriptEngine/{API => src/api}/McAPI.h | 0 ScriptEngine/{API => src/api}/NativeAPI.cpp | 4 +- ScriptEngine/{API => src/api}/NativeAPI.h | 0 ScriptEngine/{API => src/api}/NativePatch.cpp | 4 +- .../{API => src/api}/NativePointer.cpp | 2 +- .../{API => src/api}/NativeStdString.cpp | 0 .../{API => src/api}/NativeStdString.h | 0 ScriptEngine/{API => src/api}/NbtAPI.cpp | 22 +- ScriptEngine/{API => src/api}/NbtAPI.h | 24 +- ScriptEngine/{API => src/api}/NetworkAPI.cpp | 63 +- ScriptEngine/{API => src/api}/NetworkAPI.h | 4 +- ScriptEngine/{API => src/api}/PacketAPI.cpp | 4 +- ScriptEngine/{API => src/api}/PacketAPI.h | 6 +- ScriptEngine/{API => src/api}/ParticleAPI.cpp | 0 ScriptEngine/{API => src/api}/ParticleAPI.h | 4 +- .../{API => src/api}/PermissionAPI.cpp | 0 ScriptEngine/{API => src/api}/PermissionAPI.h | 2 +- ScriptEngine/{API => src/api}/PlayerAPI.cpp | 36 +- ScriptEngine/{API => src/api}/PlayerAPI.h | 23 - .../{API => src/api}/RemoteCallAPI.cpp | 16 +- ScriptEngine/{API => src/api}/RemoteCallAPI.h | 0 .../{API => src/api}/ScoreboardAPI.cpp | 6 +- ScriptEngine/{API => src/api}/ScoreboardAPI.h | 0 ScriptEngine/{API => src/api}/ScriptAPI.cpp | 10 +- ScriptEngine/{API => src/api}/ScriptAPI.h | 0 ScriptEngine/{API => src/api}/ServerAPI.cpp | 10 +- ScriptEngine/{API => src/api}/ServerAPI.h | 0 .../{API => src/api}/StructureAPI.cpp | 8 +- ScriptEngine/{API => src/api}/SystemAPI.cpp | 14 +- ScriptEngine/{API => src/api}/SystemAPI.h | 0 .../{Engine => src/engine}/EngineManager.cpp | 4 +- .../{Engine => src/engine}/EngineManager.h | 4 +- .../{Engine => src/engine}/EngineOwnData.h | 6 +- .../engine}/GlobalShareData.cpp | 6 +- .../{Engine => src/engine}/GlobalShareData.h | 4 +- .../{Engine => src/engine}/LocalShareData.cpp | 2 +- .../{Engine => src/engine}/LocalShareData.h | 4 +- .../{Engine => src/engine}/MessageSystem.cpp | 16 +- .../{Engine => src/engine}/MessageSystem.h | 3 +- .../{Engine => src/engine}/OperationCount.cpp | 4 +- .../{Engine => src/engine}/OperationCount.h | 0 .../{Engine => src/engine}/RemoteCall.cpp | 16 +- .../{Engine => src/engine}/RemoteCall.h | 2 +- .../{Engine => src/engine}/TimeTaskSystem.cpp | 20 +- .../{Engine => src/engine}/TimeTaskSystem.h | 2 +- ScriptEngine/{Main => src/main}/BindAPIs.cpp | 64 +- .../{Main => src/main}/BuiltinCommands.cpp | 6 +- .../{Main => src/main}/BuiltinCommands.h | 0 ScriptEngine/{Main => src/main}/Configs.h | 0 .../{Main => src/main}/EconomicSystem.h | 0 .../{Main => src/main}/EconomySystem.cpp | 10 +- ScriptEngine/{Main => src/main}/Global.cpp | 2 +- ScriptEngine/{Main => src/main}/Global.hpp | 10 +- ScriptEngine/{Main => src/main}/Loader.cpp | 16 +- ScriptEngine/{Main => src/main}/Loader.h | 0 .../{Main => src/main}/NodeJsHelper.cpp | 30 +- .../{Main => src/main}/NodeJsHelper.h | 4 +- .../{Main => src/main}/PluginManager.cpp | 61 +- .../{Main => src/main}/PluginManager.h | 12 +- .../{Main => src/main}/SafeGuardRecord.cpp | 2 +- .../{Main => src/main}/SafeGuardRecord.h | 0 .../{Main => src/main}/ScriptEngine.cpp | 41 +- ScriptEngine/{Main => src/main}/dllmain.cpp | 1 + .../{Tools => src/utils}/IniHelper.cpp | 4 +- ScriptEngine/{Tools => src/utils}/IniHelper.h | 0 .../{Tools => src/utils}/JsonHelper.h | 4 +- ScriptEngine/src/utils/UsingScriptX.inc | 24 + ScriptEngine/{Tools => src/utils}/Utils.cpp | 4 +- ScriptEngine/{Tools => src/utils}/Utils.h | 2 +- .../CMake/ScriptX-NodeJs/CMakeLists.txt | 12 - .../third-party/SimpleIni/SimpleIni.h | 3474 ----------------- .../include => backend/include/Lua}/lapi.h | 0 .../include => backend/include/Lua}/lauxlib.h | 0 .../include => backend/include/Lua}/lcode.h | 0 .../include => backend/include/Lua}/lctype.h | 0 .../include => backend/include/Lua}/ldebug.h | 0 .../include => backend/include/Lua}/ldo.h | 0 .../include => backend/include/Lua}/lfunc.h | 0 .../include => backend/include/Lua}/lgc.h | 0 .../include/Lua}/ljumptab.h | 0 .../include => backend/include/Lua}/llex.h | 0 .../include => backend/include/Lua}/llimits.h | 0 .../include => backend/include/Lua}/lmem.h | 0 .../include => backend/include/Lua}/lobject.h | 0 .../include/Lua}/lopcodes.h | 0 .../include/Lua}/lopnames.h | 0 .../include => backend/include/Lua}/lparser.h | 0 .../include => backend/include/Lua}/lprefix.h | 0 .../include => backend/include/Lua}/lstate.h | 0 .../include => backend/include/Lua}/lstring.h | 0 .../include => backend/include/Lua}/ltable.h | 0 .../include => backend/include/Lua}/ltm.h | 0 .../include => backend/include/Lua}/lua.h | 0 .../include => backend/include/Lua}/lua.hpp | 0 .../include => backend/include/Lua}/luaconf.h | 0 .../include => backend/include/Lua}/lualib.h | 0 .../include => backend/include/Lua}/lundump.h | 0 .../include => backend/include/Lua}/lvm.h | 0 .../include => backend/include/Lua}/lzio.h | 0 .../include/NodeJs}/aliased_buffer.h | 0 .../include/NodeJs}/aliased_struct-inl.h | 0 .../include/NodeJs}/aliased_struct.h | 0 .../include/NodeJs}/allocated_buffer-inl.h | 0 .../include/NodeJs}/allocated_buffer.h | 0 .../include/NodeJs}/async_wrap-inl.h | 0 .../include/NodeJs}/async_wrap.h | 0 .../include/NodeJs}/base64-inl.h | 0 .../include/NodeJs}/base64.h | 0 .../include/NodeJs}/base_object-inl.h | 0 .../include/NodeJs}/base_object.h | 0 .../include/NodeJs}/callback_queue-inl.h | 0 .../include/NodeJs}/callback_queue.h | 0 .../include/NodeJs}/cares_wrap.h | 0 .../include/NodeJs}/connect_wrap.h | 0 .../include/NodeJs}/connection_wrap.h | 0 .../include/NodeJs}/crypto/crypto_aes.h | 0 .../include/NodeJs}/crypto/crypto_bio.h | 0 .../include/NodeJs}/crypto/crypto_cipher.h | 0 .../NodeJs}/crypto/crypto_clienthello-inl.h | 0 .../NodeJs}/crypto/crypto_clienthello.h | 0 .../include/NodeJs}/crypto/crypto_common.h | 0 .../include/NodeJs}/crypto/crypto_context.h | 0 .../include/NodeJs}/crypto/crypto_dh.h | 0 .../include/NodeJs}/crypto/crypto_dsa.h | 0 .../include/NodeJs}/crypto/crypto_ec.h | 0 .../include/NodeJs}/crypto/crypto_groups.h | 0 .../include/NodeJs}/crypto/crypto_hash.h | 0 .../include/NodeJs}/crypto/crypto_hkdf.h | 0 .../include/NodeJs}/crypto/crypto_hmac.h | 0 .../include/NodeJs}/crypto/crypto_keygen.h | 0 .../include/NodeJs}/crypto/crypto_keys.h | 0 .../include/NodeJs}/crypto/crypto_pbkdf2.h | 0 .../include/NodeJs}/crypto/crypto_random.h | 0 .../include/NodeJs}/crypto/crypto_rsa.h | 0 .../include/NodeJs}/crypto/crypto_scrypt.h | 0 .../include/NodeJs}/crypto/crypto_sig.h | 0 .../include/NodeJs}/crypto/crypto_spkac.h | 0 .../include/NodeJs}/crypto/crypto_timing.h | 0 .../include/NodeJs}/crypto/crypto_tls.h | 0 .../include/NodeJs}/crypto/crypto_util.h | 0 .../include/NodeJs}/crypto/crypto_x509.h | 0 .../include/NodeJs}/debug_utils-inl.h | 0 .../include/NodeJs}/debug_utils.h | 0 .../include/NodeJs}/diagnosticfilename-inl.h | 0 .../include/NodeJs}/env-inl.h | 0 .../include => backend/include/NodeJs}/env.h | 0 .../include/NodeJs}/handle_wrap.h | 0 .../include/NodeJs}/histogram-inl.h | 0 .../include/NodeJs}/histogram.h | 0 .../NodeJs}/inspector/main_thread_interface.h | 0 .../include/NodeJs}/inspector/node_string.h | 0 .../include/NodeJs}/inspector/runtime_agent.h | 0 .../include/NodeJs}/inspector/tracing_agent.h | 0 .../include/NodeJs}/inspector/worker_agent.h | 0 .../NodeJs}/inspector/worker_inspector.h | 0 .../include/NodeJs}/inspector_agent.h | 0 .../include/NodeJs}/inspector_io.h | 0 .../include/NodeJs}/inspector_profiler.h | 0 .../include/NodeJs}/inspector_socket.h | 0 .../include/NodeJs}/inspector_socket_server.h | 0 .../include/NodeJs}/js_native_api.h | 0 .../include/NodeJs}/js_native_api_types.h | 0 .../include/NodeJs}/js_native_api_v8.h | 0 .../NodeJs}/js_native_api_v8_internals.h | 0 .../include/NodeJs}/js_stream.h | 0 .../include/NodeJs}/json_utils.h | 0 .../NodeJs}/large_pages/node_large_page.h | 0 .../include/NodeJs}/memory_tracker-inl.h | 0 .../include/NodeJs}/memory_tracker.h | 0 .../include/NodeJs}/module_wrap.h | 0 .../include => backend/include/NodeJs}/node.h | 0 .../include/NodeJs}/node_api.h | 0 .../include/NodeJs}/node_api_internals.h | 0 .../include/NodeJs}/node_api_types.h | 0 .../include/NodeJs}/node_binding.h | 0 .../include/NodeJs}/node_blob.h | 0 .../include/NodeJs}/node_bob-inl.h | 0 .../include/NodeJs}/node_bob.h | 0 .../include/NodeJs}/node_buffer.h | 0 .../include/NodeJs}/node_constants.h | 0 .../include/NodeJs}/node_context_data.h | 0 .../include/NodeJs}/node_contextify.h | 0 .../include/NodeJs}/node_crypto.h | 0 .../include/NodeJs}/node_dir.h | 0 .../include/NodeJs}/node_dtrace.h | 0 .../include/NodeJs}/node_errors.h | 0 .../include/NodeJs}/node_external_reference.h | 0 .../include/NodeJs}/node_file-inl.h | 0 .../include/NodeJs}/node_file.h | 0 .../include/NodeJs}/node_http2.h | 0 .../include/NodeJs}/node_http2_state.h | 0 .../include/NodeJs}/node_http_common-inl.h | 0 .../include/NodeJs}/node_http_common.h | 0 .../include/NodeJs}/node_i18n.h | 0 .../include/NodeJs}/node_internals.h | 0 .../include/NodeJs}/node_main_instance.h | 0 .../include/NodeJs}/node_mem-inl.h | 0 .../include/NodeJs}/node_mem.h | 0 .../include/NodeJs}/node_messaging.h | 0 .../include/NodeJs}/node_metadata.h | 0 .../include/NodeJs}/node_mutex.h | 0 .../include/NodeJs}/node_native_module.h | 0 .../include/NodeJs}/node_native_module_env.h | 0 .../include/NodeJs}/node_object_wrap.h | 0 .../include/NodeJs}/node_options-inl.h | 0 .../include/NodeJs}/node_options.h | 0 .../include/NodeJs}/node_perf.h | 0 .../include/NodeJs}/node_perf_common.h | 0 .../include/NodeJs}/node_platform.h | 0 .../include/NodeJs}/node_process-inl.h | 0 .../include/NodeJs}/node_process.h | 0 .../include/NodeJs}/node_report.h | 0 .../include/NodeJs}/node_revert.h | 0 .../include/NodeJs}/node_root_certs.h | 0 .../include/NodeJs}/node_snapshotable.h | 0 .../include/NodeJs}/node_sockaddr-inl.h | 0 .../include/NodeJs}/node_sockaddr.h | 0 .../include/NodeJs}/node_stat_watcher.h | 0 .../include/NodeJs}/node_union_bytes.h | 0 .../include/NodeJs}/node_url.h | 0 .../include/NodeJs}/node_v8.h | 0 .../include/NodeJs}/node_v8_platform-inl.h | 0 .../include/NodeJs}/node_version.h | 0 .../include/NodeJs}/node_wasi.h | 0 .../include/NodeJs}/node_watchdog.h | 0 .../NodeJs}/node_win32_etw_provider-inl.h | 0 .../include/NodeJs}/node_win32_etw_provider.h | 0 .../include/NodeJs}/node_worker.h | 0 .../include/NodeJs}/pipe_wrap.h | 0 .../include/NodeJs}/req_wrap-inl.h | 0 .../include/NodeJs}/req_wrap.h | 0 .../include/NodeJs}/spawn_sync.h | 0 .../include/NodeJs}/stream_base-inl.h | 0 .../include/NodeJs}/stream_base.h | 0 .../include/NodeJs}/stream_pipe.h | 0 .../include/NodeJs}/stream_wrap.h | 0 .../include/NodeJs}/string_bytes.h | 0 .../include/NodeJs}/string_decoder-inl.h | 0 .../include/NodeJs}/string_decoder.h | 0 .../include/NodeJs}/string_search.h | 0 .../include/NodeJs}/tcp_wrap.h | 0 .../include/NodeJs}/threadpoolwork-inl.h | 0 .../include/NodeJs}/timer_wrap-inl.h | 0 .../include/NodeJs}/timer_wrap.h | 0 .../include/NodeJs}/tracing/agent.h | 0 .../NodeJs}/tracing/node_trace_buffer.h | 0 .../NodeJs}/tracing/node_trace_writer.h | 0 .../include/NodeJs}/tracing/trace_event.h | 0 .../NodeJs}/tracing/trace_event_common.h | 0 .../include/NodeJs}/tracing/traced_value.h | 0 .../include/NodeJs}/tty_wrap.h | 0 .../include/NodeJs}/udp_wrap.h | 0 .../include/NodeJs}/util-inl.h | 0 .../include => backend/include/NodeJs}/util.h | 0 .../include/NodeJs}/uv/uv.h | 0 .../include/NodeJs}/uv/uv/aix.h | 0 .../include/NodeJs}/uv/uv/android-ifaddrs.h | 0 .../include/NodeJs}/uv/uv/bsd.h | 0 .../include/NodeJs}/uv/uv/darwin.h | 0 .../include/NodeJs}/uv/uv/errno.h | 0 .../include/NodeJs}/uv/uv/linux.h | 0 .../include/NodeJs}/uv/uv/os390.h | 0 .../include/NodeJs}/uv/uv/posix.h | 0 .../include/NodeJs}/uv/uv/stdint-msvc2008.h | 0 .../include/NodeJs}/uv/uv/sunos.h | 0 .../include/NodeJs}/uv/uv/threadpool.h | 0 .../include/NodeJs}/uv/uv/tree.h | 0 .../include/NodeJs}/uv/uv/unix.h | 0 .../include/NodeJs}/uv/uv/version.h | 0 .../include/NodeJs}/uv/uv/win.h | 2 +- .../include/NodeJs}/v8/APIDesign.md | 0 .../include/NodeJs}/v8/DEPS | 0 .../include/NodeJs}/v8/DIR_METADATA | 0 .../include/NodeJs}/v8/OWNERS | 0 .../include/NodeJs}/v8/cppgc/DEPS | 0 .../include/NodeJs}/v8/cppgc/OWNERS | 0 .../include/NodeJs}/v8/cppgc/README.md | 0 .../include/NodeJs}/v8/cppgc/allocation.h | 0 .../include/NodeJs}/v8/cppgc/common.h | 0 .../v8/cppgc/cross-thread-persistent.h | 0 .../include/NodeJs}/v8/cppgc/custom-space.h | 0 .../NodeJs}/v8/cppgc/default-platform.h | 0 .../include/NodeJs}/v8/cppgc/ephemeron-pair.h | 0 .../NodeJs}/v8/cppgc/explicit-management.h | 0 .../NodeJs}/v8/cppgc/garbage-collected.h | 0 .../NodeJs}/v8/cppgc/heap-consistency.h | 0 .../include/NodeJs}/v8/cppgc/heap-state.h | 0 .../NodeJs}/v8/cppgc/heap-statistics.h | 0 .../include/NodeJs}/v8/cppgc/heap.h | 0 .../NodeJs}/v8/cppgc/internal/api-constants.h | 0 .../v8/cppgc/internal/atomic-entry-flag.h | 0 .../v8/cppgc/internal/caged-heap-local-data.h | 0 .../v8/cppgc/internal/compiler-specific.h | 0 .../v8/cppgc/internal/finalizer-trait.h | 0 .../NodeJs}/v8/cppgc/internal/gc-info.h | 0 .../NodeJs}/v8/cppgc/internal/logging.h | 0 .../NodeJs}/v8/cppgc/internal/name-trait.h | 0 .../v8/cppgc/internal/persistent-node.h | 0 .../v8/cppgc/internal/pointer-policies.h | 0 .../v8/cppgc/internal/prefinalizer-handler.h | 0 .../NodeJs}/v8/cppgc/internal/write-barrier.h | 0 .../NodeJs}/v8/cppgc/liveness-broker.h | 0 .../include/NodeJs}/v8/cppgc/macros.h | 0 .../include/NodeJs}/v8/cppgc/member.h | 0 .../include/NodeJs}/v8/cppgc/name-provider.h | 0 .../NodeJs}/v8/cppgc/object-size-trait.h | 0 .../include/NodeJs}/v8/cppgc/persistent.h | 0 .../include/NodeJs}/v8/cppgc/platform.h | 0 .../include/NodeJs}/v8/cppgc/prefinalizer.h | 0 .../v8/cppgc/process-heap-statistics.h | 0 .../NodeJs}/v8/cppgc/sentinel-pointer.h | 0 .../NodeJs}/v8/cppgc/source-location.h | 0 .../include/NodeJs}/v8/cppgc/testing.h | 0 .../include/NodeJs}/v8/cppgc/trace-trait.h | 0 .../include/NodeJs}/v8/cppgc/type-traits.h | 0 .../include/NodeJs}/v8/cppgc/visitor.h | 0 .../include/NodeJs}/v8/js_protocol-1.2.json | 0 .../include/NodeJs}/v8/js_protocol-1.3.json | 0 .../include/NodeJs}/v8/js_protocol.pdl | 0 .../include/NodeJs}/v8/libplatform/DEPS | 0 .../v8/libplatform/libplatform-export.h | 0 .../NodeJs}/v8/libplatform/libplatform.h | 0 .../NodeJs}/v8/libplatform/v8-tracing.h | 0 .../include/NodeJs}/v8/v8-cppgc.h | 0 .../include/NodeJs}/v8/v8-fast-api-calls.h | 0 .../NodeJs}/v8/v8-inspector-protocol.h | 0 .../include/NodeJs}/v8/v8-inspector.h | 0 .../include/NodeJs}/v8/v8-internal.h | 0 .../include/NodeJs}/v8/v8-metrics.h | 0 .../include/NodeJs}/v8/v8-platform.h | 0 .../include/NodeJs}/v8/v8-profiler.h | 0 .../include/NodeJs}/v8/v8-unwinder-state.h | 0 .../include/NodeJs}/v8/v8-util.h | 0 .../NodeJs}/v8/v8-value-serializer-version.h | 0 .../include/NodeJs}/v8/v8-version-string.h | 0 .../include/NodeJs}/v8/v8-version.h | 0 .../NodeJs}/v8/v8-wasm-trap-handler-posix.h | 0 .../NodeJs}/v8/v8-wasm-trap-handler-win.h | 1 + .../include/NodeJs}/v8/v8.h | 0 .../include/NodeJs}/v8/v8config.h | 0 .../include/NodeJs}/v8abbr.h | 0 .../backend/include/QuickJs/quickjs-libc.h | 59 + .../include/QuickJs}/quickjs.h | 0 .../{Lua/lib => backend/lib/Lua}/lua.lib | Bin .../lib => backend/lib/NodeJs}/libnode.lib | Bin .../lib => backend/lib/QuickJs}/quickjs.lib | Bin .../third-party/cpp-base64/include/base64.h | 35 - .../third-party/cpp-base64/lib/cpp-base64.lib | Bin 123160 -> 0 bytes .../{ => include}/LLMoney/LLMoney.h | 0 .../LightWebSocketClient}/WebSocketClient.h | 0 .../{ => include}/Nlohmann/fifo_map.hpp | 0 .../{ => include}/Nlohmann/json.hpp | 0 .../include}/SimpleIni/SimpleIni.h | 1 + .../{ => include}/ThreadPool/ThreadPool.hpp | 0 .../include => include/dyncall}/dyncall.h | 0 .../dyncall}/dyncall_alloc_wx.h | 0 .../dyncall}/dyncall_args.h | 0 .../dyncall}/dyncall_callback.h | 0 .../dyncall}/dyncall_callf.h | 0 .../dyncall}/dyncall_config.h | 0 .../dyncall}/dyncall_macros.h | 0 .../dyncall}/dyncall_signature.h | 0 .../dyncall}/dyncall_types.h | 0 .../dyncall}/dyncall_value.h | 0 .../include => include/dyncall}/dynload.h | 0 .../third-party/{ => include}/gsl/gsl | 0 .../{ => include}/gsl/gsl_algorithm | 0 .../third-party/{ => include}/gsl/gsl_assert | 0 .../third-party/{ => include}/gsl/gsl_byte | 0 .../third-party/{ => include}/gsl/gsl_util | 0 .../third-party/{ => include}/gsl/multi_span | 0 .../third-party/{ => include}/gsl/pointers | 0 .../third-party/{ => include}/gsl/span | 0 .../third-party/{ => include}/gsl/span_ext | 0 .../third-party/{ => include}/gsl/string_span | 0 .../include => include/nbt-cpp}/nbt.hpp | 0 .../nbt-cpp}/nbt_internal.hpp | 0 .../LightWebSocketClient}/LightWSClient.lib | Bin .../lib => lib/dyncall}/libdyncall_s.lib | Bin .../lib => lib/dyncall}/libdyncallback_s.lib | Bin .../lib => lib/dyncall}/libdynload_s.lib | Bin .../{nbt-cpp/lib => lib/nbt-cpp}/nbt-cpp.lib | Bin .../seh_exception/seh_exception.hpp | 95 - Scripts/PackReleaseWithPDB.cmd | 40 - Scripts/PrepareLibraries.cmd | 14 + Scripts/UploadSDK.cmd | 30 +- Scripts/install.sh | 19 +- Test/DBTest/DBTest/main.cpp | 2 +- Tools/LibraryBuilder.exe | Bin 3407872 -> 3409408 bytes .../ScriptX/.clang-format | 0 .../third-party => Tools}/ScriptX/.clang-tidy | 0 .../ScriptX/.devtools/LicenseHeader.template | 0 .../ScriptX/.devtools/appendLicenseHeader.sh | 0 .../ScriptX/.devtools/hooks/pre-commit | 0 .../ScriptX/.devtools/install.sh | 0 .../ScriptX/.devtools/new_backend.sh | 0 .../ScriptX/.github/stale.yml | 0 .../ScriptX/.github/workflows/coverage.yml | 0 .../workflows/sync_to_tencent_code.yml | 0 .../ScriptX/.github/workflows/unit_tests.yml | 0 .../third-party => Tools}/ScriptX/.gitignore | 0 .../ScriptX/CHANGELOG.md | 0 .../ScriptX/CMake/ScriptX-Lua/CMakeLists.txt | 5 +- .../CMake/ScriptX-NodeJs/CMakeLists.txt | 17 + .../CMake/ScriptX-QuickJs/CMakeLists.txt | 5 +- .../ScriptX/CMakeLists.txt | 0 .../ScriptX/CONTRIBUTING.md | 0 .../third-party => Tools}/ScriptX/LICENSE | 0 .../ScriptX/README-zh.md | 0 .../third-party => Tools}/ScriptX/README.md | 0 .../third-party => Tools}/ScriptX/VERSION | 0 .../backend/JavaScriptCore/CMakeLists.txt | 0 .../backend/JavaScriptCore/JscEngine.cc | 22 + .../backend/JavaScriptCore/JscEngine.h | 2 + .../backend/JavaScriptCore/JscEngine.hpp | 0 .../backend/JavaScriptCore/JscException.cc | 0 .../backend/JavaScriptCore/JscHelper.cc | 0 .../backend/JavaScriptCore/JscHelper.h | 0 .../backend/JavaScriptCore/JscHelper.hpp | 0 .../JavaScriptCore/JscLocalReference.cc | 0 .../backend/JavaScriptCore/JscNative.cc | 0 .../backend/JavaScriptCore/JscNative.hpp | 0 .../backend/JavaScriptCore/JscReference.hpp | 0 .../backend/JavaScriptCore/JscScope.cc | 0 .../ScriptX/backend/JavaScriptCore/JscScope.h | 0 .../backend/JavaScriptCore/JscUtils.cc | 0 .../backend/JavaScriptCore/JscValue.cc | 0 .../backend/JavaScriptCore/JscWeakRef.cc | 0 .../backend/JavaScriptCore/JscWeakRef.h | 0 .../backend/JavaScriptCore/JscWeakRef.mm | 0 .../JavaScriptCore/trait/TraitEngine.h | 0 .../JavaScriptCore/trait/TraitException.h | 0 .../JavaScriptCore/trait/TraitIncludes.h | 0 .../JavaScriptCore/trait/TraitNative.h | 0 .../JavaScriptCore/trait/TraitReference.h | 0 .../backend/JavaScriptCore/trait/TraitScope.h | 0 .../backend/JavaScriptCore/trait/TraitUtils.h | 0 .../ScriptX/backend/Lua/CMakeLists.txt | 0 .../ScriptX/backend/Lua/LuaByteBufferImpl.cc | 0 .../ScriptX/backend/Lua/LuaByteBufferImpl.h | 0 .../ScriptX/backend/Lua/LuaEngine.cc | 22 + .../ScriptX/backend/Lua/LuaEngine.h | 2 + .../ScriptX/backend/Lua/LuaEngine.hpp | 0 .../ScriptX/backend/Lua/LuaException.cc | 0 .../ScriptX/backend/Lua/LuaHelper.cc | 0 .../ScriptX/backend/Lua/LuaHelper.h | 0 .../ScriptX/backend/Lua/LuaHelper.hpp | 0 .../ScriptX/backend/Lua/LuaLocalReference.cc | 0 .../ScriptX/backend/Lua/LuaNative.cc | 0 .../ScriptX/backend/Lua/LuaNative.hpp | 0 .../ScriptX/backend/Lua/LuaReference.hpp | 0 .../ScriptX/backend/Lua/LuaScope.cc | 0 .../ScriptX/backend/Lua/LuaScope.hpp | 0 .../ScriptX/backend/Lua/LuaUtils.cc | 0 .../ScriptX/backend/Lua/LuaValue.cc | 0 .../ScriptX/backend/Lua/trait/TraitEngine.h | 0 .../backend/Lua/trait/TraitException.h | 0 .../ScriptX/backend/Lua/trait/TraitIncludes.h | 0 .../ScriptX/backend/Lua/trait/TraitNative.h | 0 .../backend/Lua/trait/TraitReference.h | 0 .../ScriptX/backend/Lua/trait/TraitScope.h | 0 .../ScriptX/backend/Lua/trait/TraitUtils.h | 0 .../ScriptX/backend/Python/CMakeLists.txt | 0 .../ScriptX/backend/QuickJs/CMakeLists.txt | 0 .../ScriptX/backend/QuickJs/QjsEngine.cc | 37 + .../ScriptX/backend/QuickJs/QjsEngine.h | 2 + .../ScriptX/backend/QuickJs/QjsEngine.hpp | 0 .../ScriptX/backend/QuickJs/QjsException.cc | 0 .../ScriptX/backend/QuickJs/QjsHelper.cc | 0 .../ScriptX/backend/QuickJs/QjsHelper.h | 1 + .../ScriptX/backend/QuickJs/QjsHelper.hpp | 0 .../backend/QuickJs/QjsLocalReference.cc | 0 .../ScriptX/backend/QuickJs/QjsNative.cc | 0 .../ScriptX/backend/QuickJs/QjsNative.hpp | 0 .../ScriptX/backend/QuickJs/QjsReference.hpp | 0 .../ScriptX/backend/QuickJs/QjsScope.cc | 0 .../ScriptX/backend/QuickJs/QjsUtils.cc | 0 .../ScriptX/backend/QuickJs/QjsValue.cc | 0 ...s-for-ScriptX-for-QuickJs-2021-03-27.patch | 0 .../backend/QuickJs/trait/TraitEngine.h | 0 .../backend/QuickJs/trait/TraitException.h | 0 .../backend/QuickJs/trait/TraitIncludes.h | 0 .../backend/QuickJs/trait/TraitNative.h | 0 .../backend/QuickJs/trait/TraitReference.h | 0 .../backend/QuickJs/trait/TraitScope.h | 0 .../backend/QuickJs/trait/TraitUtils.h | 0 .../ScriptX/backend/Ruby/CMakeLists.txt | 0 .../backend/SpiderMonkey/CMakeLists.txt | 0 .../ScriptX/backend/Template/CMakeLists.txt | 0 .../ScriptX/backend/Template/README.md | 0 .../backend/Template/TemplateEngine.cc | 0 .../ScriptX/backend/Template/TemplateEngine.h | 0 .../backend/Template/TemplateException.cc | 0 .../Template/TemplateLocalReference.cc | 0 .../backend/Template/TemplateNative.cc | 0 .../backend/Template/TemplateNative.hpp | 0 .../backend/Template/TemplateReference.hpp | 0 .../ScriptX/backend/Template/TemplateUtils.cc | 0 .../ScriptX/backend/Template/TemplateValue.cc | 0 .../backend/Template/trait/TraitEngine.h | 0 .../backend/Template/trait/TraitException.h | 0 .../backend/Template/trait/TraitIncludes.h | 0 .../backend/Template/trait/TraitNative.h | 0 .../backend/Template/trait/TraitReference.h | 0 .../backend/Template/trait/TraitScope.h | 0 .../backend/Template/trait/TraitUtils.h | 0 .../ScriptX/backend/V8/CMakeLists.txt | 2 +- .../ScriptX/backend/V8/V8Engine.cc | 22 + .../ScriptX/backend/V8/V8Engine.h | 2 + .../ScriptX/backend/V8/V8Engine.hpp | 0 .../ScriptX/backend/V8/V8Exception.cc | 0 .../ScriptX/backend/V8/V8Helper.cc | 0 .../ScriptX/backend/V8/V8Helper.h | 0 .../ScriptX/backend/V8/V8Helper.hpp | 0 .../ScriptX/backend/V8/V8Inspector.cc | 0 .../ScriptX/backend/V8/V8LocalReference.cc | 0 .../ScriptX/backend/V8/V8Native.cc | 0 .../ScriptX/backend/V8/V8Native.hpp | 0 .../ScriptX/backend/V8/V8Platform.cc | 0 .../ScriptX/backend/V8/V8Platform.h | 0 .../ScriptX/backend/V8/V8Reference.hpp | 0 .../ScriptX/backend/V8/V8Scope.cc | 0 .../ScriptX/backend/V8/V8Scope.h | 0 .../ScriptX/backend/V8/V8Scope.hpp | 0 .../ScriptX/backend/V8/V8Utils.cc | 0 .../ScriptX/backend/V8/V8Value.cc | 0 .../backend/V8/thirdparty/utfcpp/utf8-min.h | 0 .../ScriptX/backend/V8/trait/TraitEngine.h | 0 .../ScriptX/backend/V8/trait/TraitException.h | 0 .../ScriptX/backend/V8/trait/TraitIncludes.h | 0 .../ScriptX/backend/V8/trait/TraitNative.h | 0 .../ScriptX/backend/V8/trait/TraitReference.h | 0 .../ScriptX/backend/V8/trait/TraitScope.h | 0 .../ScriptX/backend/V8/trait/TraitUtils.h | 0 .../ScriptX/backend/WKWebView/CMakeLists.txt | 0 .../backend/WebAssembly/CMakeLists.txt | 0 .../ScriptX/backend/WebAssembly/WasmEngine.cc | 22 + .../ScriptX/backend/WebAssembly/WasmEngine.h | 2 + .../backend/WebAssembly/WasmEngine.hpp | 0 .../backend/WebAssembly/WasmException.cc | 0 .../ScriptX/backend/WebAssembly/WasmHelper.cc | 0 .../ScriptX/backend/WebAssembly/WasmHelper.h | 0 .../backend/WebAssembly/WasmLocalReference.cc | 0 .../ScriptX/backend/WebAssembly/WasmNative.cc | 0 .../backend/WebAssembly/WasmNative.hpp | 0 .../backend/WebAssembly/WasmReference.hpp | 0 .../ScriptX/backend/WebAssembly/WasmScope.cc | 0 .../ScriptX/backend/WebAssembly/WasmScope.hpp | 0 .../ScriptX/backend/WebAssembly/WasmUtils.cc | 0 .../ScriptX/backend/WebAssembly/WasmValue.cc | 0 .../backend/WebAssembly/trait/TraitEngine.h | 0 .../WebAssembly/trait/TraitException.h | 0 .../backend/WebAssembly/trait/TraitIncludes.h | 0 .../backend/WebAssembly/trait/TraitNative.h | 0 .../WebAssembly/trait/TraitReference.h | 0 .../backend/WebAssembly/trait/TraitScope.h | 0 .../backend/WebAssembly/trait/TraitUtils.h | 0 .../ScriptX/docs/doxygen/CMakeLists.txt | 0 .../ScriptX/docs/doxygen/Doxyfile.in | 0 .../ScriptX/docs/en/Basics.md | 0 .../ScriptX/docs/en/Exception.md | 0 .../ScriptX/docs/en/FAQ.md | 0 .../ScriptX/docs/en/ImportScriptX.md | 0 .../ScriptX/docs/en/Interop.md | 0 .../ScriptX/docs/en/JavaScript.md | 0 .../ScriptX/docs/en/Lua.md | 0 .../ScriptX/docs/en/NativeBinding.md | 0 .../ScriptX/docs/en/NodeJs.md | 0 .../ScriptX/docs/en/Performance.md | 0 .../ScriptX/docs/en/PureCpp2020.md | 0 .../ScriptX/docs/en/QuickJs.md | 0 .../ScriptX/docs/en/QuickStart.md | 0 .../ScriptX/docs/en/TOC.md | 0 .../ScriptX/docs/en/WebAssembly.md | 0 .../ScriptX/docs/media/banner.webp | Bin .../docs/media/multilingual_structure.svg | 0 .../docs/media/multilingual_structure_zh.svg | 0 .../ScriptX/docs/media/performance.webp | Bin .../ScriptX/docs/media/scriptx_logo.svg | 0 .../webassembly_non_shared_bytebuffer.svg | 0 .../media/webassembly_shared_bytebuffer.svg | 0 .../docs/media/webassembly_v8_jscore.svg | 0 .../docs/media/webassembly_webassembly.svg | 0 .../ScriptX/docs/zh/Basics.md | 0 .../ScriptX/docs/zh/Exception.md | 0 .../ScriptX/docs/zh/FAQ.md | 0 .../ScriptX/docs/zh/ImportScriptX.md | 0 .../ScriptX/docs/zh/Interop.md | 0 .../ScriptX/docs/zh/JavaScript.md | 0 .../ScriptX/docs/zh/Lua.md | 0 .../ScriptX/docs/zh/NativeBinding.md | 0 .../ScriptX/docs/zh/NodeJs.md | 0 .../ScriptX/docs/zh/Performance.md | 0 .../ScriptX/docs/zh/PureCpp2020.md | 0 .../ScriptX/docs/zh/QuickJs.md | 0 .../ScriptX/docs/zh/QuickStart.md | 0 .../ScriptX/docs/zh/TOC.md | 0 .../ScriptX/docs/zh/WebAssembly.md | 0 .../ScriptX/src/Engine.cc | 0 .../ScriptX/src/Engine.h | 11 + .../ScriptX/src/Engine.hpp | 0 .../ScriptX/src/Exception.h | 0 .../ScriptX/src/Includes.h | 0 .../ScriptX/src/Inspector.h | 0 .../ScriptX/src/Native.h | 0 .../ScriptX/src/Native.hpp | 0 .../ScriptX/src/NativeConverter.hpp | 0 .../ScriptX/src/Reference.cc | 0 .../ScriptX/src/Reference.h | 0 .../ScriptX/src/Scope.cc | 0 .../third-party => Tools}/ScriptX/src/Scope.h | 0 .../ScriptX/src/Utils.cc | 0 .../third-party => Tools}/ScriptX/src/Utils.h | 0 .../third-party => Tools}/ScriptX/src/Value.h | 0 .../ScriptX/src/foundation.h | 0 .../ScriptX/src/include/ScriptX/ScriptX.h | 0 .../third-party => Tools}/ScriptX/src/types.h | 0 .../src/utils/GlobalWeakBookkeeping.hpp | 0 .../ScriptX/src/utils/Helper.cc | 14 + .../ScriptX/src/utils/Helper.hpp | 2 + .../ScriptX/src/utils/MemoryPool.hpp | 0 .../ScriptX/src/utils/MessageQueue.cc | 0 .../ScriptX/src/utils/MessageQueue.h | 0 .../ScriptX/src/utils/ThreadLocal.h | 0 .../ScriptX/src/utils/ThreadPool.cc | 0 .../ScriptX/src/utils/ThreadPool.h | 0 .../ScriptX/src/utils/TypeInformation.h | 0 .../ScriptX/src/version.h | 0 .../ScriptX/test/CMakeLists.txt | 0 .../ScriptX/test/cmake/TestEnv.cmake | 0 .../ScriptX/test/cmake/gtest/CMakeLists.txt | 0 .../test/cmake/gtest/CMakeLists.txt.in | 0 .../test/cmake/test_libs/CMakeLists.txt | 0 .../test/cmake/test_libs/CMakeLists.txt.in | 0 .../ScriptX/test/node_addon/.gitignore | 0 .../ScriptX/test/node_addon/CMakeLists.txt | 0 .../ScriptX/test/node_addon/README.md | 0 .../ScriptX/test/node_addon/hello.js | 0 .../ScriptX/test/node_addon/package.json | 0 .../ScriptX/test/node_addon/src/addon.cc | 0 .../ScriptX/test/src/BookKeepingTest.cc | 0 .../ScriptX/test/src/ByteBufferTest.cc | 0 .../ScriptX/test/src/CustomConverterTest.cc | 0 .../ScriptX/test/src/Demo.cc | 0 .../ScriptX/test/src/EngineTest.cc | 0 .../ScriptX/test/src/ExceptionTest.cc | 0 .../ScriptX/test/src/InspectorTest.cc | 0 .../ScriptX/test/src/InteroperateTest.cc | 0 .../ScriptX/test/src/ManagedObjectTest.cc | 0 .../ScriptX/test/src/MessageQueueTest.cc | 0 .../ScriptX/test/src/NativeTest.cc | 0 .../ScriptX/test/src/PressureTest.cc | 0 .../ScriptX/test/src/ReferenceTest.cc | 0 .../ScriptX/test/src/ScopeTests.cc | 0 .../ScriptX/test/src/ShowCaseTest.cc | 0 .../ScriptX/test/src/ThreadPoolTest.cc | 0 .../ScriptX/test/src/UtilsTest.cc | 0 .../ScriptX/test/src/ValueTest.cc | 0 .../ScriptX/test/src/gtest_main.cc | 0 .../ScriptX/test/src/test.h | 0 .../ScriptX/test/src/wasm/run_test.html | 0 .../plugins/LiteLoader/7z/7za.dll | Bin .../plugins/LiteLoader/7z/7za.exe | Bin .../plugins/LiteLoader/CrashLogger_Daemon.exe | Bin .../plugins/LiteLoader/LangPack/en.json | 0 assets/plugins/LiteLoader/LangPack/fr.json | 440 +++ .../plugins/LiteLoader/LangPack/id.json | 0 .../plugins/LiteLoader/LangPack/it.json | 0 .../plugins/LiteLoader/LangPack/ja.json | 0 assets/plugins/LiteLoader/LangPack/ko.json | 440 +++ .../plugins/LiteLoader/LangPack/ru.json | 0 .../plugins/LiteLoader/LangPack/th.json | 0 assets/plugins/LiteLoader/LangPack/tr.json | 440 +++ .../plugins/LiteLoader/LangPack/vi.json | 0 .../plugins/LiteLoader/LangPack/zh_CN.json | 0 .../plugins/LiteLoader/LangPack/zh_TW.json | 0 .../ResourcePacks/LiteLoaderBDS-CUI | 1 + .../DO NOT UPGRADE NPM IN THIS DIRECTORY!! | 0 .../plugins/lib/libcrypto-1_1-x64.dll | Bin .../plugins/lib/libcrypto-3-x64.dll | Bin {RELEASE => assets}/plugins/lib/libnode.dll | Bin .../plugins/lib/libssl-1_1-x64.dll | Bin .../plugins/lib/libssl-3-x64.dll | Bin {RELEASE => assets}/plugins/lib/lua5.4.3.dll | Bin .../plugins/lib/node_modules.tar | Bin {RELEASE => assets}/plugins/lib/package.json | 0 {RELEASE => assets}/plugins/lib/sqlite3.dll | Bin 4221 files changed, 26691 insertions(+), 24996 deletions(-) create mode 100644 .clangd create mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/cmake.yml create mode 100644 .github/workflows/publish_release.yml create mode 100644 CMake/CleanOutput.cmake create mode 100644 CMake/PackOutput.cmake create mode 100644 CMake/PackSDK.cmake create mode 100644 LLPreLoader/CMakeLists.txt rename {PreLoader => LLPreLoader/include}/FakeSymbol.hpp (98%) rename {PreLoader => LLPreLoader/include}/Logger.h (88%) rename {PreLoader => LLPreLoader/include}/Utils.h (100%) rename {PreLoader => LLPreLoader/include}/pch.h (94%) rename {PreLoader => LLPreLoader/src}/PreLoader.cpp (98%) rename {PreLoader => LLPreLoader/src}/SymDB.cpp (94%) rename {PreLoader => LLPreLoader/src}/Utils.cpp (92%) rename {PreLoader => LLPreLoader/src}/dllmain.cpp (92%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_ArrayView.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Assert.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_BitOperators.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_BitUtil.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_DisableWarningsPop.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_DisableWarningsPush.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Forward.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Log.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Macros.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Memory.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Move.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Platform.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_PointerUtil.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/Foundation/PDB_Warnings.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_CoalescedMSFStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_CoalescedMSFStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_DBIStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_DBIStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_DBITypes.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_DBITypes.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_DirectMSFStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_DirectMSFStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_ErrorCodes.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_GlobalSymbolStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_GlobalSymbolStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_IPIStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_IPIStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_IPITypes.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_ImageSectionStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_ImageSectionStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_InfoStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_InfoStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_ModuleInfoStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_ModuleInfoStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_ModuleSymbolStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_ModuleSymbolStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_PCH.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_PCH.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_PublicSymbolStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_PublicSymbolStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_RawFile.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_RawFile.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_SectionContributionStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_SectionContributionStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_SourceFileStream.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_SourceFileStream.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_Types.cpp (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_Types.h (100%) rename {LiteLoader/Lib => LLPreLoader}/third-party/rawpdb/PDB_Util.h (100%) delete mode 100644 LiteLoader/Header/Impl/ObjectivePacketHelper.h delete mode 100644 LiteLoader/Header/third-party/entt/config/config.h delete mode 100644 LiteLoader/Header/third-party/entt/config/version.h delete mode 100644 LiteLoader/Header/third-party/entt/core/any.hpp delete mode 100644 LiteLoader/Header/third-party/entt/core/attribute.h delete mode 100644 LiteLoader/Header/third-party/entt/core/hashed_string.hpp delete mode 100644 LiteLoader/Header/third-party/entt/core/ident.hpp delete mode 100644 LiteLoader/Header/third-party/entt/core/type_info.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/component.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/fwd.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/group.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/helper.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/poly_storage.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/registry.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/runtime_view.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/sparse_set.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/storage.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/utility.hpp delete mode 100644 LiteLoader/Header/third-party/entt/entity/view.hpp delete mode 100644 LiteLoader/Header/third-party/entt/fwd.hpp delete mode 100644 LiteLoader/Header/third-party/entt/locator/locator.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/container.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/ctx.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/factory.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/meta.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/node.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/policy.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/range.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/resolve.hpp delete mode 100644 LiteLoader/Header/third-party/entt/meta/utility.hpp delete mode 100644 LiteLoader/Header/third-party/entt/resource/cache.hpp delete mode 100644 LiteLoader/Header/third-party/entt/resource/fwd.hpp delete mode 100644 LiteLoader/Header/third-party/entt/resource/handle.hpp delete mode 100644 LiteLoader/Header/third-party/entt/resource/loader.hpp delete mode 100644 LiteLoader/Header/third-party/entt/signal/dispatcher.hpp delete mode 100644 LiteLoader/Header/third-party/entt/signal/emitter.hpp delete mode 100644 LiteLoader/Header/third-party/entt/signal/fwd.hpp delete mode 100644 LiteLoader/Header/third-party/magic_enum/magic_enum.hpp delete mode 100644 LiteLoader/Kernel/Command/CommandOutputAPI.cpp delete mode 100644 LiteLoader/Kernel/MC/GameModeAPI.cpp delete mode 100644 LiteLoader/Kernel/MC/MobAPI.cpp delete mode 100644 LiteLoader/Kernel/MC/ResourcePackRepositoryAPI.cpp delete mode 100644 LiteLoader/Kernel/ParticleAPI.cpp delete mode 100644 LiteLoader/Kernel/PermissionAPI.cpp delete mode 100644 LiteLoader/Kernel/SimulatedPlayerAPI.cpp delete mode 100644 LiteLoader/Kernel/Utils/STLHelper.cpp delete mode 100644 LiteLoader/Resource/LiteLoader.aps delete mode 100644 LiteLoader/Resource/LiteLoader.rc delete mode 100644 LiteLoader/Resource/resource.h delete mode 100644 LiteLoader/cpp.hint rename LiteLoader/{Main => include/liteloader}/AddonsHelper.h (92%) rename LiteLoader/{Main => include/liteloader}/Config.h (97%) rename LiteLoader/{Main => include/liteloader}/CrashLogger.h (73%) rename LiteLoader/{Main => include/liteloader}/LiteLoader.h (74%) rename LiteLoader/{Main => include/liteloader}/Loader.h (60%) rename LiteLoader/{Main => include/liteloader}/PluginManager.h (74%) rename LiteLoader/{Main => include/liteloader}/Version.h (96%) rename LiteLoader/{Header => include/llapi}/AllowListAPI.h (97%) rename LiteLoader/{Header => include/llapi}/DynamicCommandAPI.h (98%) rename LiteLoader/{Header => include/llapi}/EventAPI.h (98%) rename LiteLoader/{Header => include/llapi}/FormUI.h (100%) rename LiteLoader/{Header => include/llapi}/Global.h (83%) rename LiteLoader/{Header => include/llapi}/GlobalServiceAPI.h (100%) rename LiteLoader/{Header => include/llapi}/HookAPI.h (99%) rename LiteLoader/{Header => include/llapi}/I18nAPI.h (97%) rename LiteLoader/{Header => include/llapi}/KVDBAPI.h (86%) rename LiteLoader/{Header => include/llapi}/LLAPI.h (81%) rename LiteLoader/{Header => include/llapi}/LoggerAPI.h (94%) rename LiteLoader/{Header => include/llapi}/ParticleAPI.h (99%) rename LiteLoader/{Header => include/llapi}/PermissionAPI.h (99%) rename LiteLoader/{Header => include/llapi}/PlayerInfoAPI.h (97%) rename LiteLoader/{Header => include/llapi}/RegCommandAPI.h (87%) rename LiteLoader/{Header => include/llapi}/RemoteCallAPI.h (98%) rename LiteLoader/{Header => include/llapi}/ScheduleAPI.h (96%) rename LiteLoader/{Header => include/llapi}/SendPacketAPI.h (93%) rename LiteLoader/{Header => include/llapi}/ServerAPI.h (74%) rename LiteLoader/{Header => include/llapi}/TranslationAPI.h (100%) rename LiteLoader/{Header/DB => include/llapi/db}/Any.h (97%) rename LiteLoader/{Header/DB => include/llapi/db}/ConnParams.h (99%) rename LiteLoader/{Header/DB/Impl/MySQL => include/llapi/db/Impl/mysql}/Session.h (95%) rename LiteLoader/{Header/DB/Impl/MySQL => include/llapi/db/Impl/mysql}/Stmt.h (97%) rename LiteLoader/{Header/DB/Impl/SQLite => include/llapi/db/Impl/sqlite}/Session.h (94%) rename LiteLoader/{Header/DB/Impl/SQLite => include/llapi/db/Impl/sqlite}/Stmt.h (96%) rename LiteLoader/{Header/DB => include/llapi/db}/Pointer.h (99%) rename LiteLoader/{Header/DB => include/llapi/db}/Row.h (99%) rename LiteLoader/{Header/DB => include/llapi/db}/RowSet.h (99%) rename LiteLoader/{Header/DB => include/llapi/db}/Session.h (98%) rename LiteLoader/{Header/DB => include/llapi/db}/Stmt.h (95%) rename LiteLoader/{Header/DB => include/llapi/db}/Types.h (96%) rename LiteLoader/{Header/Impl => include/llapi/impl}/FormPacketHelper.h (89%) create mode 100644 LiteLoader/include/llapi/impl/ObjectivePacketHelper.h rename LiteLoader/{Header/MC => include/llapi/mc}/AABB.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AABBBucket.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/AABBPred.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/Abilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Ability.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/AbilityCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AbsorptionMobEffect.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AbstractArrow.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AcaciaTreeCanopy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AcaciaTreeTrunk.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AchievementData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActivateToolDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActivateToolNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActivatorRailBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActiveDirectoryIdentity.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Actor.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationController.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationControllerGroup.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationControllerPlayer.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationControllerPtr.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationControllerState.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationControllerStatePlayer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationGroup.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorAnimationPlayer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorBlock.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorClassTree.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorCommandOrigin.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorComponentFactory.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDamageByActorSource.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDamageByBlockSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDamageByChildActorSource.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDamageSource.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinitionAttribute.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinitionDescriptor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinitionDiffList.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinitionEventSubcomponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinitionGroup.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinitionIdentifier.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorDefinitionPtr.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorEventCoordinator.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorEventListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorFactory.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorFactoryData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorFallPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorFilterGroup.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasAbilityTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasComponentTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasContainerOpenTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasDamageTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasEquipmentTest.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasMobEffect.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasRangedWeaponTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasTagTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorHasTargetTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInCaravanTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInCloudsTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInLavaTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInNetherTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInVillageTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInWaterOrRainTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInWaterTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInWeatherTest.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInactivityTimerTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInfo.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInfoRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorInteraction.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsAvoidingMobsTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsClimbingTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsColorTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsFamilyTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsImmobileTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsLeashedTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsLeashedToTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsMarkVariantTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsMovingTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsOwnerTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsPersistentTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsRidingTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsSkinIDTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsSleepingTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsSneakingTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsTargetTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsVariantTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorIsVisibleTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorLegacySaveConverter.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorMapping.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorOnGroundTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorOnLadderTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorParticleEffectEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorPickRequestPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorPlacerItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorRandomChanceTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorRiderCountTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorServerCommandOrigin.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorSkeletalAnimation.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorSkeletalAnimationPlayer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorSkeletalAnimationPtr.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorSpawnRuleBase.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorSpawnRuleGroup.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorSurfaceMobTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorTargetFilter.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorTerrainInterlockData.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorTrustsSubjectTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorUndergroundTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorUnderwaterTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ActorUniqueID.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddActorBasePacket.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddActorPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddBehaviorTreePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddEntityPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddItemActorPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddOceanTemperatureLayer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddPaintingPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddPlayerPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AddRiderComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AdmireItemComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AdmireItemDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AdmireItemGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AdventureSettingsPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgeableComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgeableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgeableSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Agent.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgentBodyControl.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgentCommand.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgentCommandExecutionGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgentCommandSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AgentLookControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AirBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/AirBlockItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AllWorkerConfigurations.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AmbientSoundIntervalDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AmphibiousMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AmphibiousMoveControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Amplifier.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AngryComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AngryDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AngrySystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Animal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnimatePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnimatedImageData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnimationComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnimationResourceDefinitionMap.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnimationScriptsDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnimationsDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnvilBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnvilContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AnvilDamagePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AppConfigs.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/AppPlatform.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/AppPlatformListener.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AppPlatformWindows.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AppPlatform_win32.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ApplyItemBinding.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ApplyLegacyEntityBinding.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ArbitraryBiomeComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AreaAttackComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AreaAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AreaAttackSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AreaEffectCloud.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ArmorItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ArmorStand.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ArmorStandItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Arrow.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ArrowEffectSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ArrowItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AsyncTracker.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AsynchronousIPResolver.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AtlasItemManager.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttackCooldownComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttackCooldownSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttackDamageMobEffect.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttackDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttackNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Attribute.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttributeBuff.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttributeCollection.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttributeInstance.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttributeInstanceDelegate.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/AttributeModifier.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AutomaticFeatureRules.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/Automation.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/AutomationClientConnectPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AutomationPlayerCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AuxDataBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/AvailableActorIdentifiersPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AvailableCommandsPacket.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/AvoidBlockGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/AvoidMobTypeDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/AvoidMobTypeGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BackgroundTask.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BackgroundTaskQueue.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BackgroundWorker.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BackwardsCompatTextureGroup.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Balloon.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BalloonComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BalloonItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BalloonSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BalloonableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BalloonableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BambooBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BambooBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BambooFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BambooSapling.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BannerAddPatternRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BannerBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BannerBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BannerDuplicateRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BannerItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BannerPattern.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BannerPatternItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BarrelBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BarrelBlockActor.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BarrierBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BarterComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BarterDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BarterGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BasaltColumnsFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BasaltPillarFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseAttributeMap.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseCircuitComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseCommandBlock.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseContainerMenu.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseGamePackSlices.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseGameVersion.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseGameVersioning.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseGoalDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseMobSpawner.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseMoveToBlockGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseMoveToGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BasePressurePlateBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseRailBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BaseRailTransporter.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BasicTimer.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BastionFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BastionPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BastionStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Bat.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BatchedNetworkPeer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeaconBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeaconBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeaconContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeardAndShaverDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeardAndShaverStorage.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeardKernel.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Bedrock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedrockBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedrockBlockTypes.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedrockBlocks.hpp (89%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedrockItems.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BedrockLog.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Bee.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeehiveBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeehiveBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BeetrootBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BegGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorFactory.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorNodeUtils.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorTreeDefinitionPtr.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorTreeDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BehaviorTreeGroup.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BellBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BellBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BellBlockItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BigEndianStringByteInput.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BinaryHeap.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BinaryStream.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Biome.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeArea.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeClimateSelectorLayer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeComponentLoading.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeDecorationFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeDecorationSystem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeDefinitionListPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeFilterGroup.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeIdCompatibility.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeMetadata.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeRegistry.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeRegistryMergeStrategy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BiomeSurfaceSystem.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/Blacklist.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlastFurnaceBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlastFurnaceBlockActor.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlastFurnaceContainerManagerModel.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Blaze.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Block.hpp (70%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockActor.hpp (75%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockActorDataPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockActorFactory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockActorLevelListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockBlobFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockBreakSensorComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockBreakSensorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockBreakSensorSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockColorUtil.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockComponentDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockComponentFactory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockDefinition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockDefinitionGroup.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockDescription.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockDestroyTimeDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockEventCoordinator.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockEventDispatcher.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockEventDispatcherToken.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockEventListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockExplodeableDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockFlammableDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockFrictionDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockGraphics.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockID.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockInstance.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockIntersectionConstraint.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockIsNameTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockLegacy.hpp (81%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockLightDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockLightEmissionDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockListEventMap.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockListSerializer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockMapColorDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockPalette.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockPatternBuilder.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockPickRequestPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockPileFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockPlanterItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockPos.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockReducer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockSelector.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockSerializationUtils.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockSet.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockSource.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockSourceListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockTickingQueue.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockTypeRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockUtils.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlockVolume.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlueFireBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlueIceBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BlueIceFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Boat.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoatFrictionHelper.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoatItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BodyControl.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BodyControlSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoneAnimationChannel.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoneOrientation.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoneOrientationTransform.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BonusChestFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BookCloningRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BookEditPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BookshelfBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoolOption.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoostItem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoostableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoostableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoostableSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BorderBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BossComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BossDefinition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BossEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BossSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BottleItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BoundingBox.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/Bounds.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BowEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BowItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakBlockDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakBlockNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakBlocksComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakBlocksDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakBlocksSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakDoorAnnotationComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakDoorAnnotationDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakDoorAnnotationSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreakDoorGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreathableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreathableDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreathableSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreatheAirGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreedGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreedableComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreedableDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreedableSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BreedableType.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/BrewingStandBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BrewingStandBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/BrewingStandContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BribeableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BribeableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BribeableSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Brightness.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BubbleColumnBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BucketItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/BucketableComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BucketableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BuoyancyComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BuoyancyDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BuoyancySystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BuriedTreasureFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BuriedTreasurePiece.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BuriedTreasureStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BurnsInDaylightSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/BurstReactionComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BushBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ButtonBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ByteArrayTag.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ByteTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/BytesDataInput.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/BytesDataOutput.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CDScopedEvent.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/CSHA1.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CactusBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CactusFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CakeBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CameraBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CameraItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CameraItemComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CameraPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CampfireBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CampfireBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CanClimbDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CanFlyDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CanPowerJumpDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CanyonFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CapacitorComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CarrotBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CarrotOnAStickItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CartographyContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CartographyTableBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Cat.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CatchFireSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CauldronBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CauldronBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CaveSpider.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CelebrateHuntDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CelebrateHuntSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CelebrateHuntSystemInternal.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/CentralSpikedFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Certificate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChainBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChalkboardBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChanceInformation.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChangeDimensionPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChangeSettingCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChargeAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChargeAttackGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChargeHeldItemDefinition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChargeHeldItemGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemicalHeatBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemistryAuxDataBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemistryIngredient.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemistryItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemistryRecipes.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemistryStickItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemistryTableBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChemistryTableBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChestBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChestBlockActor.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChestContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Chicken.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChorusFlowerBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChorusPlantBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChunkBlockPos.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChunkBuildOrderPolicy.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChunkBuildOrderPolicyBase.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChunkPos.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChunkRadiusUpdatedPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChunkSource.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ChunkViewSource.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CircleAroundAnchorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CircleAroundAnchorGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CircuitComponentList.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CircuitSceneGraph.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CircuitSystem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CircuitTrackingInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClassroomModeListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClassroomModeNetworkHandler.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClayBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClayFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClearCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClientAutomationCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClientCacheBlobStatusPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClientCacheMissResponsePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClientCacheStatusPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClientToServerHandshakePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClientboundMapItemDataPacket.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClockSpriteCalculator.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CloneCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CloseWebSocketCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClothBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ClothBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoalItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CocoaBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CodeBuilderCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CodeBuilderPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CollisionBoxDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Color.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Color2Description.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ColorDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ColorFormat.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ColorPaletteAttributes.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ColoredBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ColoredTorchBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Command.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandAreaFactory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandBlockComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandBlockDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandBlockSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandBlockUpdatePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandContext.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandDispatcher.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandFlag.hpp (100%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandFunctionEntry.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandIntegerRange.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandItem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandLexer.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandMessage.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandOrigin.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandOriginData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandOutput.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandOutputMessage.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandOutputPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandOutputParameter.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandOutputSender.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandParameterData.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandPosition.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandPositionFloat.hpp (100%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandPropertyBag.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandRawText.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandRegistry.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandRequestPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandSelector.hpp (100%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandSelectorBase.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandSoftEnumRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandSyntaxInformation.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandUtils.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CommandVersion.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Common.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompactionListenerEnv.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ComparatorBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ComparatorBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ComparatorCapacitor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompassItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompassSpriteCalculator.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompletedUsingItemPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ComplexInventoryTransaction.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ComplexItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ComponentDescription.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompositeDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompositePackSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ComposterBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundCreatorContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundTag.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundTagEditHelper.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundTagUpdater.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundTagUpdaterBuilder.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundTagUpdaterContext.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompoundTagVariant.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CompressedNetworkPeer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConcreteBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConcretePowderBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConduitBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConduitBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConnectionRequest.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Connector.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConsoleChunkBlender.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConsumeItemDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConsumeItemNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ConsumerComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Container.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerClosePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerContentChangeListener.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerManagerController.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerManagerModel.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerModel.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerOpenPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerScreenContext.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerSetDataPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerSizeChangeListener.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerValidation.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContainerWeakRef.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContentIdentity.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContentLog.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContentLogEndPoint.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContentLogFileEndPoint.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContextAccessor.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContextMessageLogger.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ContextMessageLoggerOptions.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Control.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ControlledByPlayerGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Coral.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoralBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoralCrustFeature.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoralFan.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoralFanBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoralFanHang.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoralFeature.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CoralHangFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Core.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftHandleNonImplemented_DEPRECATEDASKTYLAING.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftHandlerBase.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftHandlerCrafting.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftHandlerEnchant.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftHandlerTrade.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftableCompounds.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftingContainer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftingDataEntry.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftingDataPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftingEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CraftingTag.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpAssertData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpEventData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpFrameData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpGameplayData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpGlobalData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpKeyValueData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpLog.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpPlayerData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDumpRenderData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashDump_AllData.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashHandler.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrashHelper.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/CreativeContentPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CreativeItemEntry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Creeper.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CropBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrossbowEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CrossbowItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CryingObsidianBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/CryptoUtils.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/CurseBindingEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CurseVanishingEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/CustomScriptEventData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DBChunkStorage.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DBStorage.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DBStorageConfig.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DBStorageEnvironmentChain.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DamageCondition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DamageOverTimeSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DamageSensorComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DamageSensorDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DamageSensorTrigger.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DanceComponentListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DanceSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DataItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DatagramHeaderFormat.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DateManager.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DayLockCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DaylightDetectorBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DaylightDetectorBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DeOpCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DeadBush.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DeadBushFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DebugAssertException.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DebugEndPoint.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DebugInfoComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DebugInfoPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DebugUtils.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DecoratorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DedicatedServer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DedicatedServerCommands.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DedicatedWSServerCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefaultDataLoadHelper.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefaultEmptyActorAnimationPlayer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefaultLookAngleDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefaultMobSpawner.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefaultScreenCapabilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefendTrustedTargetGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefendVillageTargetDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefendVillageTargetGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefinitionEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefinitionEventLoader.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefinitionModifier.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DefinitionTrigger.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DelayedAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DelayedAttackGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DeltaFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DeprecatedSlabBlockItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Description.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DesertPyramidPiece.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DesertWellFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DespawnComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DespawnDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DespawnSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DetectorRailBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DifficultyCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DiggerItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DiggingEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Dimension.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DimensionBrightnessRamp.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DiodeBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/Direction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DirectoryPackAccessStrategy.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DirectoryPackSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DirectoryPackWithEncryptionAccessStrategy.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DirtBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DirtyTicksCounter.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/DisconnectPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DispenserBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DispenserBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DispenserContainerManagerModel.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DisplayObjective.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Dolphin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DolphinMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DoorBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DoorInteractGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DoorItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DoublePlantBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DoublePlantFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DoubleTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DouseFireSubcomponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonBaseGoalDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonChargePlayerDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonChargePlayerGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonDeathGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonEggBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonFireball.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonFlamingDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonFlamingGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonHoldingPatternGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonLandingGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonScanningGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonStrafePlayerDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonStrafePlayerGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DragonTakeoffGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DriedKelpBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DrinkPotionData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DrinkPotionGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DropItemForGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DropperBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/DropperBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DropperContainerManagerModel.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DwellerComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DwellerDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DwellerSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/DyeColorUtil.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/DyePowderItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/DyeableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/DynamicJumpControl.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/DynamicJumpControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EDUWorldsScreenCapabilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Easing.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EatBlockDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EatBlockGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EatCarriedItemGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EconomyTradeableComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EconomyTradeableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EduAppConfigs.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EducationLevelSettings.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EducationLocalLevelSettings.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EducationMetadata.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EducationMetadataError.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EducationMetadataUtils.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/EducationOptions.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EducationSettingsPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EffectCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EggItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ElementBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ElementBlockItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ElementConstructorContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EmoteListPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EmotePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EmptyLootItem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EmptyMapItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnableEncryptionCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Enchant.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantBookForTradingFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantRandomEquipmentFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantRandomlyFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantUtils.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantWithLevelsFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantedBookItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantingContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantingTableBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantingTableBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnchantmentInstance.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EncryptedFileAccessStrategy.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EncryptedNetworkPeer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EncryptedProxyEnv.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EncryptedZipTransforms.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndCityFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndCityPieces.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndCityStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndCrystalItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndDragonFight.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndGatewayBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndGatewayBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndGatewayFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndIslandFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndPodiumFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndPortalBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndPortalBlockActor.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndPortalFrameBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndPortalShape.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndRodBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderChestBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderChestBlockActor.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderChestContainer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderCrystal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderDragon.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderEyeItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderMan.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndermanLeaveBlockGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EndermanTakeBlockGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Endermite.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnderpearlItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntityComponentFactory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntityGoalFactory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntityGoalUtility.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntitySensorComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntitySensorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntitySensorSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntityServerPacket.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntitySystems.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EntityTypes.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnvironmentRequirement.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnvironmentSensorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EnvironmentSensorSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EquipItemComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EquipItemGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EquipmentTableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/EquippableComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EquippableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ErrorPathStack.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/EventInfo.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/EventPacket.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EvocationFang.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/EvocationIllager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExecuteCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExhaustionAttributeDelegate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExperienceOrb.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExperiencePotion.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExperiencePotionItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExperienceRewardComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExperienceRewardDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExplodeComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExplodeDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExplodeSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExplorationMapFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExploreOutskirtsGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Explosion.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExplosionDecayFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExpressionNode.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExtendedCertificate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExtendedStreamReadResult.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExternalFileLevelStorage.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ExternalFileLevelStorageSource.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/EyeOfEnder.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FaceDirectionalActorBlock.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FaceDirectionalBlock.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Facing.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FallenTreeTrunk.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FallingBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FamilyTypeDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FancyTreeCanopy.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FancyTreeTrunk.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FarmBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Feature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FeatureHelper.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/FeaturePoolElement.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FeatureRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FeatureToggles.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FeatureTypeFactory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FeedItem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FenceBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FenceGateBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FertilizerItem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FileAccessTransforms.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FileArchiver.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FileChunkManager.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FileInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FileSystemFileAccess.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FileUploadManager.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FillCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FillContainerFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FillingContainer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterContext.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterGroup.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterInput.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterInputDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterInputs.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterList.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterParamDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterStringMap.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTest.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestAltitude.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestBiome.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestBiomeHasTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestBiomeHumid.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestBiomeSnowCovered.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestBrightness.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestClock.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestDaytime.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestDifficulty.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestDimensionWeather.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestDistanceToNearestPlayer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestGameRule.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestHasTradeSupply.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestHourlyClock.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestLightLevel.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestMoonIntensity.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestMoonPhase.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestTemperatureType.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FilterTestTemperatureValue.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FindActorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FindActorNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FindBlockDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FindBlockNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FindCoverGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FindMountGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FindUnderwaterTreasureGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FireBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FireChargeItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FireImmuneDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Fireball.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FireworkChargeItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FireworksItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FireworksRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FireworksRocketActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Fish.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FishingEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FishingHook.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FishingRodItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FitDoubleXRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FitDoubleXYRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FitDoubleYRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FitDoubleYZRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FitDoubleZRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FitSimpleRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FitSimpleTopRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FixedBiomeSource.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlatWorldGenerator.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlatWorldGeneratorOptions.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FleeSunGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlintAndSteelItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FloatGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FloatNavigation.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FloatRange.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FloatTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FloatWanderGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FloatsInLiquidDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlockingComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlockingDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlockingSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlockingUtility.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlowerBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlowerFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlowerHelper.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlowerPotBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlowerPotBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlushableEnv.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlushableStorageAreaEnv.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlyDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlyMoveControl.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlyNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlyingPathNavigation.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FlyingSpeedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FoliageColor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FollowCaravanGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FollowFlockGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FollowMobGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FollowOwnerGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FollowParentGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FollowTargetCaptainGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FoodConstants.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FoodItemComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FootSizeDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FormJsonValidator.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FossilFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FreezeOnHitSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FrictionModifierDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FrostWalkerEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FrostedIceBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FullPlayerInventoryWrapper.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/FunctionCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/FunctionEntry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/FunctionManager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FungusStem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/FurnaceBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FurnaceBlockActor.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/FurnaceContainerManagerModel.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameCallbacks.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameMasterEntityServerCommandOrigin.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameMode.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameModeCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameModuleServer.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameRule.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameRuleCommand.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameRules.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameRulesChangedPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameRulesChangedPacketData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameSession.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameSpecificNetEventCallback.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameTypeConv.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/GameVersion.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GeneDefinition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/GenericMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GenericMoveControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GenericPathNavigation.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GeneticVariant.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/GeneticsComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GeneticsDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GetChunkDataCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GetChunksCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GetEduServerInfoCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GetInteractionPositionForBlockDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GetInteractionPositionForBlockNode.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GetSpawnPointCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GetTopSolidBlockCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Ghast.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GildedBlackstone.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GiveCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GiveableComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/GiveableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GiveableTrigger.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/GlassBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GlazedTerracottaBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GlideMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GlideMoveControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GlobalPauseCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GlowStickItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/GlowStoneFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GoHomeGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Goal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GoalDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GoalSelectorComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GoalSelectorSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GoalSelectorUtility.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/GrantXPSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GrassBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/GrassPathBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GravelBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GrindstoneBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/GrindstoneContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/GroundOffsetDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GroundedConstraint.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GroupSizeDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GroupSizeSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GrowCropSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Guardian.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/GuardianAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GuardianAttackGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/GuiDataPickItemPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HangingActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HangingActorItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HardcodedSpawnAreaRegistry.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HarvestFarmBlockGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HashedString.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HatchetItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HayBlockBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HealableComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/HealableDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HealthAttributeDelegate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HeavyBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HellFireFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HellSpringFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HelpCommand.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HideComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/HideDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HideGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HistoricPredictionData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/HitResult.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HitboxComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/HitboxDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HoeItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HoldGroundGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HomeComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/HoneyBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HoneycombBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HopMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Hopper.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HopperBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/HopperBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HopperComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/HopperContainerManagerModel.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HopperSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Horse.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/HorseArmorItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HorseContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HoverGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HoverMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HoverPathNavigation.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HttpHeaders.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HudContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HudContainerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HudScreenCapabilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HugeFungusFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HugeMushroomBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HugeMushroomFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/HumanoidMonster.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/HungerAttributeDelegate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HurtArmorPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HurtByTargetGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HurtOnConditionDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/HurtOnConditionSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/HurtOwnerSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/I18n.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/I18nObserver.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IContainerManager.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IContentKeyProvider.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IDataInput.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IDataOutput.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IDefinitionInstance.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IDefinitionSerializer.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/IFileAccess.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IFileChunkUploader.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/IFilePicker.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IFileReadAccess.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IFileWriteAccess.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IJsonSerializable.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IMinecraftApp.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IMinecraftEventing.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/IPackTelemetry.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IPacketHandlerDispatcher.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ISecureStorageKeySystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ISubChunkBlockStoragePaletted.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ITextObject.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ITickingArea.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ITickingAreaView.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ITreeFeature.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/IWebviewTelemetry.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IceBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/IceBombItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/IcePatchFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IceSpikeFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IcebergFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/IdentifierDescription.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/IdentifierResult.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/IdentityDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IdentityDictionary.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IdleState.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Igloo.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/IgniteSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IllagerBeast.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/IllagerBeastBlockedComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IllagerBeastBlockedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ImmutableWorldCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ImpactDamageSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ImprovedNoise.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InMemoryEnv.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/InMemoryFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InMemoryFileStorage.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InMemoryRandomAccessFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InMemorySequentialFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InMemoryWritableFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InPackagePackSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/IndexSet.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/InsomniaSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/InspectBookshelfGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/InstantDespawnDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InstantDespawnSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/InstantaneousAttributeBuff.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InstantaneousMobEffect.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Int64Tag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/IntArrayTag.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/IntRange.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/IntTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InteractActionDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InteractActionNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InteractComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/InteractDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InteractPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InteractSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Interaction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InternalTaskGroup.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Inventory.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryAction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryContainerModel.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryContentPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryMenu.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventorySlotPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventorySource.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryTransaction.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryTransactionItemGroup.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryTransactionManager.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InventoryTransactionPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/InverterDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/InverterNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/InvisibleBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/IronGolem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsBabyDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsChargedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsChestedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsExperimentalDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsHiddenWhenInvisibleDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsIgnitedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsIllagerCaptainDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsSaddledDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsShakingDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsShearedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsSpawnableDescription.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsStackableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsStunnedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsSummonableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IsTamedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/IslandLayer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Item.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemAcquisitionMethodMap.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemColorUtil.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemData.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemDescriptor.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemDescriptorCount.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemEnchantOption.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemEnchants.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemEventCoordinator.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemFrameBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemFrameBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemFrameDropItemPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemGroup.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemInstance.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemListSerializer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemPack.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemReactionComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemRegistry.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemReleaseInventoryTransaction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStack.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackBase.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackNetIdVariant.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackNetManagerBase.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackNetManagerClient.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackNetManagerServer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestAction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionBeaconPayment.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionConsume.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionCraftBase.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionCraftHandler.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionCraftNonImplemented_DEPRECATEDASKTYLAING.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionCraftResults_DEPRECATEDASKTYLAING.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionCreate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionDestroy.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionDrop.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionHandler.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionPlace.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionSwap.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionTake.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestActionTransferBase.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackRequestSlotInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackResponseContainerInfo.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackResponseInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStackResponsePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemState.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemStateInstance.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemUseInventoryTransaction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemUseMethodMap.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ItemUseOnActorInventoryTransaction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawBlockInfo.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawEditorData.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawPlacement.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawStructureActorRulesRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawStructureBlockRulesRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawStructureBlockTagRulesRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawStructureElementRegistry.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/JigsawStructureRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JournaledFile.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Json.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/JsonHelpers.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/JsonPackUtils.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JsonUtil.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/JsonValidator.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/JukeboxBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/JukeboxBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/JumpControl.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/JumpControlComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/JumpControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/JumpControlSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/JunglePyramidPiece.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/KelpBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/KelpFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/KeyFrameLerpMode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/KeyFrameTransform.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/KeyFrameTransformData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/KeyManager.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/KeyOrNameResult.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/KickCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/KillCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/KnockbackArmorUpdater.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/KnockbackRoarGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/KnockbackRules.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/LabTableContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LabTablePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LabTableReaction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LabTableReactionComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LadderBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LakeFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LanternBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LargeCaveFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LargeFireball.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LargeHellCaveFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LavaSlime.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LayDownGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LayEggGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LayerBiomeSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeadItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeafBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeafBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeapAtTargetGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeashFenceKnotActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeashableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeashableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeashableSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LecternBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LecternBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LecternUpdatePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyBlockPlacementProcessor.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyBodyControl.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyChunkStorage.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyEmeraldOreFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyFlowerFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyForestFoliageFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyForestRockFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyIceFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyJigsawPlacement.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyPackIdVersion.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacySmallMushroomsFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacySpringsFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyStructureActorInfo.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyStructureBlockInfo.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyStructureBlockPalette.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyStructureSettings.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyStructureTemplate.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacySwampFoliageFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyTradeableComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyTreeFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LegacyTreeFeatureHelpers.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/Level.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelChunk.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelChunkBuilderData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelChunkFinalDeleter.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelChunkGarbageCollector.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelChunkPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelChunkPhase1Deleter.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelContainerModel.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelData.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDataKeys.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDataValue.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDataWrapper.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDbEnv.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDbFileLock.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDbLogger.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDbRandomAccessFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDbSequentialFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelDbWritableFile.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelEventCoordinator.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelEventGenericPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelEventListener.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelListener.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelSettings.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelSoundEventMap.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelSoundEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelSoundEventPacketV1.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelSoundEventPacketV2.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelStorage.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelStorageSource.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelStorageWriteBatch.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LevelSummary.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LeverBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LibraryItemScreenCapabilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LightBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LightGemBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LightningBolt.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LingeringPotionItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LiquidBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LiquidBlockDynamic.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LiquidBlockStatic.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ListCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ListDCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ListTag.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ListTagFloatAdder.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ListTagIntAdder.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ListenerInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Llama.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LlamaSpit.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LocalConnector.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Localization.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LocateCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LodestoneBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/LodestoneBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LodestoneCompassComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LodestoneCompassComponentCalculator.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LodestoneCompassItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LogBlock.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LoginPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtActorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtActorGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtActorNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtBlockDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtBlockNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtEntityGoal.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtPlayerGoal.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtTargetGoal.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookAtTradingPlayerGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookControl.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookControlComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LookControlSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LoomBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LoomContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LoopbackPacketSender.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootComponentDescription.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemActorHasMarkVariantCondition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemCondition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemConditions.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemFunction.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemFunctions.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemKilledByActorCondition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemKilledByPlayerCondition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemKilledByPlayerOrPetsCondition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemRandomChanceCondition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemRandomChanceWithLootingCondition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemRandomChanceWithSpecialModifierCondition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootItemRandomDifficultyChanceCondition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootPool.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootPoolEntry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootPoolTiers.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootTable.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootTableContext.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootTableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootTableEntry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootTableReference.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootTables.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/LootingEnchantFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/LowMemoryWatcher.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MCRESULT.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MagmaBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MainChunkSource.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MakeLoveGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ManagedWanderingTraderDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapCloningRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapConstants.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapCreateLockedCopyPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapDecoration.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapExtendingRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapInfoRequestPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapItemSavedData.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapItemTrackedActor.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapLockingRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MapUpgradingRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MarkVariantDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MarketplaceSkinValidator.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Material.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MaterialReducerContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MeCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MedicineItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MegaPineTreeCanopy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MegaTreeCanopy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MegaTreeTrunk.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MeleeAttackDefinition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MeleeAttackGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MeleeWeaponEnchant.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MelonBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MelonFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MemoryMappedFileAccess.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MemorySecureStorage.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MendingEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MerchantRecipe.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MerchantRecipeList.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MessagingCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MetalBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Minecart.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecartBlockCommandOrigin.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecartChest.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecartCommandBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecartHopper.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecartItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecartRideable.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecartTNT.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Minecraft.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecraftCommands.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecraftEventing.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecraftPackets.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecraftScheduler.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecraftServerScriptEngine.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MinecraftWorkerPool.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftCorridor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftCrossing.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftData.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftPiece.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftRoom.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftStairs.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MineshaftStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MingleGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MissingTextureAtlasItem.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/Mob.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobArmorEquipmentPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobDescriptor.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffect.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffectChangeDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffectComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffectDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffectInstance.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffectPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffectSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEffectSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEquipmentPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEvent.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEventCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobEvents.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobPredicates.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobSpawnHerdInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobSpawnRules.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobSpawnerBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobSpawnerBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobSpawnerData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MobSpawnerPermutation.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ModalFormRequestPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ModalFormResponsePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangArrayVariable.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangDataDrivenGeometry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangEntityVariable.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangGenericQueryFunction.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangGenericQueryFunctionPtr.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangGeometryVariable.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangMaterialVariable.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangQueryFunction.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangQueryFunctionPtr.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangScriptArg.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangTempVariable.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangTextureVariable.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MolangVariableMap.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Monster.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MonsterEggBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MonsterRoomFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MonumentBuilding.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MonumentRoomFitter.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MossStoneSelector.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Motive.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MountPathingGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MountTameableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MountTamingComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MountTamingSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveActorAbsoluteData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveActorAbsolutePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveActorDeltaPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControl.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlBasicDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlDolphinDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlFlyDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlHoverDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlSkipDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlSwayDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveControlSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveIndoorsGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveInput.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveInputHandler.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MovePlayerPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveThroughVillageGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToBlockGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToLandGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToLavaGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToLiquidGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToPOIGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToRandomBlockGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToVillageGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveToWaterGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveTowardsRestrictionGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MoveTowardsTargetGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MovementInterpolator.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MovingBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/MovingBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MultiRecipe.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/MultiplayerSettingsPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MultiplyValueAmplifier.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/MushroomBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MushroomCow.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/MusicBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/MyceliumBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBBridgeCrossing.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBBridgeEndFiller.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBBridgeStraight.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleCorridorStairsPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleCorridorTBalconyPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleEntrance.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleSmallCorridorCrossingPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleSmallCorridorLeftTurnPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleSmallCorridorPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleSmallCorridorRightTurnPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBCastleStalkRoom.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBMonsterThrone.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBRoomCrossing.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBStairsRoom.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NBStartPiece.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NameAction.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NameableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NameableDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NapGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationClimbDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationFloatDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationFlyDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationGenericDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationHoverDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationSwimDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationUtility.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NavigationWalkDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NbtIo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NearestAttackableTargetDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NearestAttackableTargetGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NearestPrioritizedAttackableTargetGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetEventCallback.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherBrightnessRamp.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherDimension.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherFortressFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherFortressPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherFortressStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherFossilFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherFungusBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherGenerator.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherReactorBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherReactorBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherSprouts.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherStructureFeatureHelper.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherWartBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetheriteArmorEquippedListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetherrackBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkAddress.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkChunkPublisher.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkChunkPublisherUpdatePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkChunkSource.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkDebugManager.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkHandler.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkIdentifier.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkPacketEventListener.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkPeer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkSettingsPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkStackLatencyPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NetworkStatistics.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NewLeafBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NewLogBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NoSurfaceOreFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NormalNoiseLayer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NoteBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/Npc.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NpcAction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NpcCommandAction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NpcComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NpcGUIOffset.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NpcI18nObserver.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NpcRequestPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/NpcUrlAction.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NullLogger.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/NullSecureStorage.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/NullSoundPlayer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/NyliumBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OSInformation.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/Objective.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ObjectiveCriteria.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ObserverBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ObsidianBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMixerLayer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentCoreRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentDoubleXRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentDoubleXYRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentDoubleYRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentDoubleYZRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentDoubleZRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentEntryRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentPenthouse.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentSimpleRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentSimpleTopRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanMonumentWingRoom.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanRuinFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanRuinPieces.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OceanRuinStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Ocelot.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OcelotAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OcelotAttackGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OcelotSitOnBlockGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OculusPlatformMessagePump.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/OfferFlowerGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OldLeafBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/OldLogBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnDeathDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnFriendlyAngerDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnHitSubcomponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnHurtByPlayerDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnHurtDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnIgniteDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnScreenTextureAnimationPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnStartLandingDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnStartTakeoffDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnTargetAcquiredDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnTargetEscapeDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OnWakeWithOwnerDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OpCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OpenDoorAnnotationComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OpenDoorAnnotationDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OpenDoorAnnotationSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OpenDoorGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Option.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OptionalString.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/OreBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OreFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/OverworldBrightnessRamp.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OverworldDimension.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/OverworldGenerator.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/OwnerHurtByTargetGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OwnerHurtTargetGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/OwnerStorageEntity.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/POIBlueprint.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/POIInstance.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Pack.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackAccessStrategy.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackAccessStrategyFactory.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackDependencyManager.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackDiscoveryError.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackError.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackIdVersion.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackInstance.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackInstanceId.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackLoadError.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackManifest.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackManifestFactory.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackReport.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSetting.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSettings.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSettingsError.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSettingsFactory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSettingsJsonValidator.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSource.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSourceFactory.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackSourceReport.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PackUploadContent.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/Packet.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PacketSender.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/PacketViolationDetectedTelemetryData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PacketViolationHandler.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PacketViolationWarningPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PageContent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Painting.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Palette.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Panda.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PanicGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Parrot.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Parser.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ParticleCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ParticleOnHitSubcomponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ParticleTypeMap.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ParticlesBlockExplosionEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ParticlesTeleportTrailEvent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Path.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PathFinder.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PathNavigation.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PauseScreenCapabilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PeekSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PendingArea.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PerfContextTracker.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PerfContextTrackerReport.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PerfTimer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Performance.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/PerlinNoise.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PerlinSimplexNoise.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PermissionCommand.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PermissionsFile.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PermissionsHandler.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PersistentDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PetSleepWithOwnerGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PetSleepWithOwnerState.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Phantom.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PhotoStorage.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PhotoTransferPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PickaxeItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PickupItemsGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PieceWeight.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/Pig.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PigZombie.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Piglin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Pillager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PillagerOutpostFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PillagerOutpostPieces.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PillagerOutpostStart.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PineTreeCanopy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PingedCompatibleServer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PistonArmBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/PistonBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/PistonBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PistonConsumer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlaceBlockDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlaceBlockNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlanksBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlaySoundCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlaySoundPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlaySoundReactionComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayStatusPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Player.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerActionPacket.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerArmorDamagePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerAuthInputPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerDataSystem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerEnchantOptionsPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerEventCoordinator.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerEventListener.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerHotbarPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerInputPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerInteractionSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerInventory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerListEntry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerListPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerMovement.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerRespawnBlockRadiusRandomizer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerRespawnTelemetryData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerRideTamedGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerScoreboardId.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerSkinPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerStorageIds.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerUIContainer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerUIContainerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PlayerUIContainerModelBase.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PodzolAreaFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PodzolBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PolarBear.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PoolElementStructurePiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PortalBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/PortalForcer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PortalShape.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PosibleTransformation.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PositionTrackingDBClientRequestPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PositionTrackingDBServerBroadcastPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PositionTrackingId.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PostprocessingManager.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PotatoBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Potion.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/PotionBrewing.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PotionItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PoweredBlockComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PoweredRailBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PrecompiledCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Predicate.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/PreferredPathDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PressurePlateBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PrettySnbtFormat.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PrimedTnt.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PrintStream.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/PrioritizedGoal.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PrismarineBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PrivateKeyManager.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ProducerComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ProfilerLite.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ProjectileComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ProjectileDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ProjectileFactory.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ProjectileSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/PropertiesSettings.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PropertyBag.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/PropertyDescription.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ProtectionEnchant.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Pufferfish.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/PulseCapacitor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PumpkinBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/PumpkinBlockItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/PurchaseReceiptPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PushThroughDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PushableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/PushableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/QuartzBlockBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/QueryTargetCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Rabbit.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RabbitPanicGoal.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Raid.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RaidBossComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RaidBossSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RaidGardenGoal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RaidTriggerComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RaidTriggerDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RaiderCelebrationGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RailActivatorComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RailActivatorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RailActivatorSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RailBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RailMovement.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RailMovementComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakDataInput.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakDataOutput.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakNet.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakNetInstance.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakNetServerLocator.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakPeerHelper.hpp (84%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakTcpProxy.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakWebSocket.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakWebSocketClient.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakWebSocketDataFrame.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RakWebSocketDataFrameParser.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Random.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomAuxValueFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomBlockStateFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomBreachingGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomDyeFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomFlyingGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomHoverGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomLookAroundAndSitGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomLookAroundGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomPos.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomScatteredLargeFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomSitGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomStrollGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomSwimmingGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomThreadCheckManager.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomValueBounds.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomizableBlockActorContainer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomizableBlockActorContainerBase.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RandomizableBlockActorFillingContainer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RangedAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RangedAttackGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RangedWeaponItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RapidFertilizerItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ReadOnlyBinaryStream.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RealmsUnknownPackSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ReceiveLoveGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Recipe.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RecipeIngredient.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Recipes.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/RecordItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RedStoneDustItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RedStoneOreBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/RedStoneWireBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/RedstoneBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RedstoneLampBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RedstoneTorchBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/RedstoneTorchCapacitor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ReedBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ReedsFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RegionFile.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/RegionHillsLayer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RegistryKey.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RelativeFloat.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ReloadCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RemoveActorPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RemoveEntityPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RemoveObjectivePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RemoveOnHitSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RenderParams.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RepairItemRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RepeatUntilFailureDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RepeatUntilFailureNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RepeatUntilSuccessDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RepeatUntilSuccessNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RepeaterBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/RepeaterCapacitor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ReplaceItemCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RequestChunkRadiusPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResetEventObj.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceDefinition.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceHelper.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceInformation.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceLoadManager.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceLoader.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceLoaders.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceLocation.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceMetadata.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePack.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackChunkDataPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackChunkRequestPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackClientResponsePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackDataInfoPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackFileUploadManager.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackInfoData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackListener.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackManager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackRepository.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackStack.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackStackPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePackTransmissionManager.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePacksInfoPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourcePath.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ResourceSignature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RespawnAnchorBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/RespawnPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RestrictOpenDoorGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RestrictSunGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RideableComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RideableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RiderJumpPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RiseToLiquidLevelGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RiverFollowingGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RoleChecker.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RoleCheckerCallback.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RollGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RoofedTreeCanopy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RoomDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RopeAABB.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/RopePoints.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/RopeSystem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RotateState.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RotatedPillarBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RotationDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RotationUtil.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/RuinedPortalFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/RuinedPortalPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/RuinedPortalStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RunAroundLikeCrazyGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RuntimeIdentifierDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/RuntimeLightingManager.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHChestCorridor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHFillerCorridor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHFiveCrossing.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHLeftTurn.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHLibrary.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHPortalRoom.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHPrisonHall.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHRightTurn.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHRoomCrossing.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHStairsDown.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHStartPiece.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHStraight.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SHStraightStairsDown.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Salmon.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SandBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SandFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SandStoneBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Sapling.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SaplingBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SaveCommand.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SaveTransactionManager.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SavedData.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/SavedDataStorage.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SayCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaffoldingBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaffoldingBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaffoldingClimberComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaffoldingClimberSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaleByAgeComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaleByAgeSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaleDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScaredGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScatterFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScatterParams.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScatteredFeaturePiece.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScatteredFeatureStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Scheduler.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SchedulerDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SchedulerSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScorePacketInfo.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Scoreboard.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScoreboardCommand.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScoreboardId.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScoreboardIdentityRef.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScreenCapabilitiesRepo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScreenHandlerBase.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScreenHandlerBeacon.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScreenHandlerLabTable.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptActorAreaBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptActorUniqueIdBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptApi.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptArmorContainerComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptAttackComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderActorTemplate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderActorTickingAreaTemplate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderBlockTemplate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderComponentTemplate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderEventDataTemplate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderItemActorTemplate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderItemStackTemplate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderLevelTemplate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderLevelTickingAreaTemplate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderPureEcsTemplate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderQueryTemplate.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderTemplate.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBinderTemplateController.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBlockContainerComponent.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBlockPositionBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptBlockStateComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptCollisionBoxComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptCommand.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptCommandCallbackData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptCommandFactory.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptComponentBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptCustomEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptDamageSensorComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptDimensionBinderComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEcsBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEngine.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEquipmentComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEquippableComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEventCoordinator.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEventData.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEventDataBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptEventListener.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptExplodeComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptHandContainerComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptHealableComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptHealthComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptHotbarContainerComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptIdentifierBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptInteractComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptInventoryComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptInventoryContainerComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptItemStackBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptLevelAreaBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptLevelBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptLevelTickingAreasComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptLevelWeatherComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptLevelWeatherEventListener.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptLookAtComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptNameableComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptObjectBinder.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptPositionComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptQueries.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptQueryBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptQueryComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptRotationComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorAcquiredItemEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorAttackEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorCarriedItemChangedEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorCreatedEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorDeathEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorDefinitionEventTriggeredEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorDroppedItemEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorEquippedArmorEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorEventListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorHurtEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorMoveEvent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorRemovedEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorSneakChangedEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorStartRidingEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorStopRidingEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorTickEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerActorUseItemEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBlockDestructionStartedEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBlockDestructionStoppedEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBlockEventListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBlockExplodedEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBlockInteractedWithEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBlockMovedByPistonEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBroadcastActorDefinitionEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerBroadcastReceived.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerChatReceived.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerCommandReceived.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerLevelEventListener.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerLoggerConfigReceivedEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerPacketEventListener.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerPlaySoundEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerPlayerAttackedActorEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerPlayerDestroyedBlockEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerPlayerPlacedBlockEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerProjectileHitEvent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerSpawnParticleAttachedToActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerSpawnParticleInWorldEvent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptServerWeatherEventData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptShooterComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptSpawnActorComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptTagComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptTelemetryEventListener.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptTeleportComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptTickWorldComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptTickingAreaBinderComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ScriptTickingAreaDescriptionComponent.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeaAnemoneFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeaGrass.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeaLanternBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeaPickle.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeaPickleBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeaPickleFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeagrassFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SearchFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Seasons.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeatDescription.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SecureStorage.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/SeedItemComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SelectorBehaviorNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SelectorDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SemVersion.hpp (67%) rename LiteLoader/{Header/MC => include/llapi/mc}/SendEventData.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/SendEventGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SendEventStage.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/SensingComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SensingSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SequenceBehaviorNode.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SequenceDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SerializedSkin.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerCommand.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerCommands.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerCommunicationInterface.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerContentKeyProvider.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerFileChunkUploader.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerInstance.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerInstanceEventCoordinator.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerInstanceEventListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerLevel.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerLocator.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerMetrics.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerMetricsImpl.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerMoveInputHandler.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerNetworkHandler.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerPlayer.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerScoreboard.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerSettingsRequestPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerSettingsResponsePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ServerToClientHandshakePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetActorDataPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetActorLinkPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetActorMotionPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetBannerDetailsFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetBlockCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetBlockReactionComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetBookContentsFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetCommandsEnabledPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetDataFromColorIndexFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetDefaultGameTypePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetDifficultyPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetDisplayObjectivePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetHealthPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetItemCountFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetItemDamageFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetItemDataFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetItemLoreFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetItemNameFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetLastHurtByPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetLocalPlayerAsInitializedPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetMaxPlayersCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetPlayerGameTypePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetScorePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetScoreboardIdentityPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetSpawnEggFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetSpawnPositionPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetTimePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetTitlePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SetWorldSpawnCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SettingsCommandPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SettingsScreenCapabilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShapedChemistryRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShapedRecipe.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShapelessChemistryRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShapelessRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShareItemsGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Shareable.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShareableComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShareableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SharedAmplifiers.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SharedAttributes.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SharedBuffs.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SharedConstants.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SharedModifiers.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShearsItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Sheep.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShieldItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShieldItemUtils.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShiftedDurationAmplifier.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShiftedValueAmplifier.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShipwreckFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShipwreckPiece.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShipwreckStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShootBowDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShootBowNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShooterComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShooterDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShortTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShovelItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShowCreditsPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShowProfilePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShowStoreOfferPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Shulker.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShulkerBoxBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShulkerBoxBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShulkerBoxBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShulkerBoxRecipe.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShulkerBullet.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ShulkerPeekGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SignBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SignBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SignItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Silverfish.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SilverfishMergeWithStoneGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SilverfishWakeUpFriendsGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleBoolFilterTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleContainer.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleEventPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleFloatFilterTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleHashStringFilterTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleIntFilterTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimplePlayerContainer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleTagIDFilterTest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleTreeCanopy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimpleTreeTrunk.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SimplexNoise.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SingleBlockFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SitComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SitGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SittableDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Skeleton.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SkeletonHorseTrapGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SkinIDDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SkinInfoData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SkullBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SkullBlockActor.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SkullItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlabBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlabBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SleepGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SleepState.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Slime.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeAttackGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeFloatDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeFloatGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeKeepOnJumpingDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeKeepOnJumpingGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeMoveControlDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeRandomDirectionDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlimeRandomDirectionGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlotData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SlotDescriptor.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmallFireball.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmeltItemFunction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmithingTableBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmithingTableContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmokerBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmokerBlockActor.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmokerContainerManagerModel.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SmoothStoneSelector.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SnackGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SnapshotEnv.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SnapshotFilenameAndLength.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SnapshotWritableFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SneezeGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SnowBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Snowball.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SnowballItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Social.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SortItemInstanceIdAux.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SoulSandBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SoulSpeedEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SoulTorchBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SoundPlayerInterface.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SoundVolumeDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SparklerItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SparseContainer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpatialActorNetworkData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnActorComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnActorDefinition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnActorEntry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnActorParameters.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnActorSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnAoECloudSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnChanceSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnExperienceOrbPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnFinder.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnGroupRegistry.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnParticleEffectPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnPointCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpawnSettings.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Spawner.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpecificEnchantFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Spider.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpikeFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpinLock.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SplashPotionEffectSubcomponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SplashPotionItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpongeBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpreadPlayersCommand.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpringFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SpruceTreeCanopy.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Squid.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SquidDiveGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SquidFleeGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SquidIdleGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SquidMoveAwayFromGroundGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SquidOutOfWaterGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StackResultStorageFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StainedGlassBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StainedGlassPaneBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StairBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/StalkAndPounceOnTargetGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StartGamePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StartScreenCapabilities.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StateSerializationUtils.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/StemBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/StickInGroundSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StompAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StompAttackGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StompBlockGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StompEggGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneBrickBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneButtonBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneSlabBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneSlabBlock2.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneSlabBlock3.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneSlabBlock4.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StoneSlabBlockItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StonecutterBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StonecutterContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StopCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StopSoundCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StopSoundPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Stopwatch.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/StrengthDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Strider.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StringByteInput.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StringByteOutput.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StringKey.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/StringTag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StrippedLogBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StrollTowardsVillageGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StrongholdFeature.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StrongholdPiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StrongholdStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureBlockActor.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureBlockPalette.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureBlockUpdatePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureDataLoadHelper.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureEditorData.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureFeature.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureHelpers.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureIntegrityProcessor.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureManager.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePiece.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolActorPredicateActorMatch.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolBlockPredicateAlwaysTrue.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolBlockPredicateAxisAlignedPosition.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolBlockPredicateBlockMatch.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolBlockPredicateBlockMatchRandom.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolBlockTagPredicateBlockTagStringMatches.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolBlockTagRule.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructurePoolElement.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureSettings.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureTag.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureTemplate.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureTemplateData.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureTemplateDataRequestPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureTemplateDataResponsePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureTemplateFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureTemplatePool.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/StructureVoid.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubChunk.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubChunkBlockStorage.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubChunkPos.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubChunkRelighter.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubClientConnectionRequest.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubClientLoginPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubpackInfo.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubpackInfoCollection.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubtreeDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SubtreeNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SummonActorGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SummonCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SummonSpellData.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SummonSpellStage.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SurfaceBuilderRegistry.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SurfaceMaterialAdjustmentAttributes.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SurfaceMaterialAdjustmentEvaluated.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SurvivalMode.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SuspiciousStewItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwamplandHut.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/SweetBerryBushBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwellGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimIdleDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimIdleGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimMoveControl.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimWanderDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimWanderGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimWithEntityDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwimWithEntityGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwoopAttackDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SwoopAttackGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/SyncedAttribute.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/SynchedActorData.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/SystemFilePicker.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Tag.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TagCommand.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TagMemoryChunk.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TakeFlowerGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TakeItemActorPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TakePictureCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TallGrass.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/TallGrassFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TameableComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TameableDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TargetBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TargetGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TargetGoalDefinition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TargetNearbyDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TargetNearbySystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TargetWhenPushedGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TaskGroup.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TaskResult.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TaskStartInfo.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TcpProxy.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TeleportCommand.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TeleportComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TeleportDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TeleportRotationData.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TeleportSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TeleportTarget.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TeleportToSubcomponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TellCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TellRawCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TemplateStructurePiece.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TemporalAttributeBuff.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TemptGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TerrainBurstReactionComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TestForBlockCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TestForBlocksCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TestForCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TextObjectLocalizedText.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TextObjectLocalizedTextWithParams.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TextObjectParser.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TextObjectRoot.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TextObjectText.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TextPacket.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TextureUVCoordinateSet.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TheEndDimension.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TheEndGenerator.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TheEndSpikeHelper.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThinFenceBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThirdPartyInfo.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/Throwable.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThrownEgg.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThrownEnderpearl.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThrownIceBomb.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThrownPotion.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThrownPotionEffectSubcomponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ThrownTrident.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/Tick.hpp (100%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickSyncPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickWorldComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickWorldDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickingArea.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickingAreaCommand.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickingAreaDescription.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickingAreaList.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickingAreaListBase.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickingAreaView.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TickingAreasManager.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TimeCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Timer.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TimerComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TimerDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TimerSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TitleCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TitleInfo.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/TitleRawCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TntBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/ToggleDownfallCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Token.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/ToolRecipes.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TopSnowBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/TopSnowBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TorchBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/Trade.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/Trade2ContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeContainerManagerModel.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeGroup.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeInterestGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeItem.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeResupplyDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeTable.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeTables.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeTier.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeWithPlayerGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TradeableSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TraderMaterialTypeFunction.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrailDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrailSystem.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TransactionalWorldBlockTarget.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TransferPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TransformationComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TransformationDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TransformationSystem.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TransporterComponent.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrapDoorBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/TreeHelper.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TridentChannelingEnchant.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/TridentImpalerEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TridentItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TridentLoyaltyEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TridentRiptideEnchant.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TriggerDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TripWireBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/TripWireHookBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/TripodCamera.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TripodCameraDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TropicalFish.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TropicalFishInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrustComponent.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrustDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrustedKeys.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrustingComponent.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/TrustingDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Turtle.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/TurtleEggBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/TwistingVinesBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/TwistingVinesClusterFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Types.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/UnburiedConstraint.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/UnderwaterCanyonFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/UnderwaterLargeCaveFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/UnderwaterTorchBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/UndyedShulkerBoxBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/UnverifiedCertificate.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdateAttributesPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdateBlockPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdateBlockPropertiesPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdateBlockSyncedPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdateEquipPacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdatePlayerGameTypePacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdateSoftEnumPacket.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/UpdateTradePacket.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/UriListener.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/UseActorDefinition.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/UseActorNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Util.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaActorRendererId.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaActors.hpp (89%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaAppConfigs.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBastionJigsawStructureBlockRules.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBastionJigsawStructureElements.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBastionJigsawStructures.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBiomes.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBlockConversion.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBlockStateTransformUtils.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBlockTypes.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBlockUpdater.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBlocks.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaBuiltInEntities.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaDimensionFactory.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaDimensions.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaFeatures.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaGameModuleDedicatedServer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaGameModuleServer.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaGameVersions.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaGoalDefinition.hpp (89%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaGoalUtility.hpp (90%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaInPackagePacks.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaItemTiers.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaItems.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaLevelChunkUpgrade.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaOverworldBiomeSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaServerGameplayEventListener.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaServerNetworkHandler.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaStates.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaSystemsRegistration.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaTreeFeature.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaVillageJigsawStructureActorRules.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaVillageJigsawStructureBlockRules.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaVillageJigsawStructureBlockTagRules.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaVillageJigsawStructureElements.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaVillageJigsawStructures.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VanillaWorldSystems.hpp (92%) rename LiteLoader/{Header/MC => include/llapi/mc}/VarIntDataInput.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/VarIntDataOutput.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/VariantDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Vec2.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Vec3.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/Vex.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VexCopyOwnerTargetGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/VexRandomMoveGoal.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Village.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VillageFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/VillageManager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VillagePiece.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VillageStart.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/Villager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VillagerBase.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VillagerV2.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VindicationIllager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/VineBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/VinesFeature.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/VirtualCommandOrigin.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WASDControlledDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WSAStartupSingleton.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/WSServerCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaitDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaitNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaitTicksDefinition.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaitTicksNode.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/WalkAnimationSpeedDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WalkState.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/WallBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/WallClimberPathNavigation.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WanderingTrader.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WanderingTraderScheduler.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WantsJockeyDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WarpedFungusOnAStickItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaterAnimal.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaterBoundPathNavigation.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaterLilyBlockItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaterMovementDescription.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaterlilyBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WaterlilyFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeaponItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeaponRecipes.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Weather.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeatherCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeatherHelpers.hpp (91%) rename LiteLoader/{Header/MC => include/llapi/mc}/WebBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WebToken.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WebviewObserver.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeepingVinesBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeepingVinesClusterFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeightedPressurePlateBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WeightedRandomFeature.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WellKnownBiomeTags.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Whitelist.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WhitelistCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WhitelistEntry.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WhitelistFile.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/WinStackTrace.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/WireframeQueue.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Witch.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WitherBoss.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/WitherBossSpawnUtilities.hpp (93%) rename LiteLoader/{Header/MC => include/llapi/mc}/WitherRandomAttackPosGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WitherRoseBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WitherSkull.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WitherTargetHighestDamage.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/Wolf.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoodBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoodButtonBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoodSlabBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoodSlabBlockItem.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoodlandMansionFeature.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoodlandMansionPieces.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoodlandMansionStart.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WoolCarpetBlock.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorkGoal.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorkbenchBlock.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorkerPool.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldBlockTarget.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldBuilderCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldChangeTransaction.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldGenerator.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldHistoryPackSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldLimitChunkSource.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldPackHistory.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldPacksHistoryFile.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldSessionEndPoint.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldTemplateInfo.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldTemplateLevelData.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldTemplateManager.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldTemplateManagerProxyCallbacks.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldTemplatePackManifest.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WorldTemplatePackSource.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/WritableBookItem.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/WrittenBookItem.hpp (99%) rename LiteLoader/{Header/MC => include/llapi/mc}/XPCommand.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/ZipPackAccessStrategy.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ZipPackAccessStrategyOwningFileAcccess.hpp (97%) rename LiteLoader/{Header/MC => include/llapi/mc}/ZlibFileAccessWrapper.hpp (95%) rename LiteLoader/{Header/MC => include/llapi/mc}/Zombie.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/ZombieVillager.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/_ProfilerLiteTimer.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/_TickPtr.hpp (94%) rename LiteLoader/{Header/MC => include/llapi/mc}/glTFExporter.hpp (96%) rename LiteLoader/{Header/MC => include/llapi/mc}/persona.hpp (98%) rename LiteLoader/{Header/MC => include/llapi/mc}/port.hpp (92%) rename LiteLoader/{Header/PERM => include/llapi/perm}/Foundation.hpp (99%) rename LiteLoader/{Header/PERM => include/llapi/perm}/Member.hpp (88%) rename LiteLoader/{Header/PERM => include/llapi/perm}/Permission.hpp (96%) rename LiteLoader/{Header/PERM => include/llapi/perm}/Role.hpp (99%) rename LiteLoader/{Header/Utils => include/llapi/utils}/Bstream.h (100%) rename LiteLoader/{Header/Utils => include/llapi/utils}/CryptHelper.h (51%) rename LiteLoader/{Header/Utils => include/llapi/utils}/CsLock.h (91%) rename LiteLoader/{Header/Utils => include/llapi/utils}/DbgHelper.h (94%) rename LiteLoader/{Header/Utils => include/llapi/utils}/FileHelper.h (86%) rename LiteLoader/{Header/Utils => include/llapi/utils}/Hash.h (100%) rename LiteLoader/{Header/Utils => include/llapi/utils}/Json.h (99%) rename LiteLoader/{Header/Utils => include/llapi/utils}/NetworkHelper.h (90%) rename LiteLoader/{Header/Utils => include/llapi/utils}/Optional.h (100%) rename LiteLoader/{Header/Utils => include/llapi/utils}/PatchHelper.h (100%) rename LiteLoader/{Header/Utils => include/llapi/utils}/PlayerMap.h (97%) rename LiteLoader/{Header/Utils => include/llapi/utils}/PluginOwnData.h (98%) rename LiteLoader/{Header/Utils => include/llapi/utils}/RNG.h (98%) rename LiteLoader/{Header/Utils => include/llapi/utils}/SRWLock.h (93%) rename LiteLoader/{Header/Utils => include/llapi/utils}/STLHelper.h (100%) rename LiteLoader/{Header/Utils => include/llapi/utils}/ShellLinkFile.h (99%) rename LiteLoader/{Header/Utils => include/llapi/utils}/StringHelper.h (98%) rename LiteLoader/{Header/Utils => include/llapi/utils}/StringReader.h (98%) rename LiteLoader/{Header/Utils => include/llapi/utils}/TypeConversionHelper.hpp (94%) rename LiteLoader/{Header/Utils => include/llapi/utils}/VarInt.h (100%) rename LiteLoader/{Header/Utils => include/llapi/utils}/ViewHelper.h (100%) rename LiteLoader/{Header/Utils => include/llapi/utils}/WinHelper.h (97%) rename LiteLoader/{Main => src/liteloader}/AddonsHelper.cpp (96%) rename LiteLoader/{Main => src/liteloader}/BStats.cpp (94%) rename LiteLoader/{Main => src/liteloader}/BuiltinBugFix.cpp (93%) rename LiteLoader/{Main => src/liteloader}/BuiltinCommands.cpp (94%) rename LiteLoader/{Main => src/liteloader}/BuiltinUnlockCmd.cpp (91%) rename LiteLoader/{Main => src/liteloader}/Config.cpp (94%) rename LiteLoader/{Main => src/liteloader}/CrashLogger.cpp (89%) rename LiteLoader/{Main => src/liteloader}/LiteLoader.cpp (90%) rename LiteLoader/{Main => src/liteloader}/Loader.cpp (93%) rename LiteLoader/{Main => src/liteloader}/ModifyInfomation.cpp (87%) rename LiteLoader/{Main => src/liteloader}/ModifyPack.cpp (100%) rename LiteLoader/{Main => src/liteloader}/PluginManager.cpp (87%) rename LiteLoader/{Main => src/liteloader}/SEHProtection.cpp (92%) rename LiteLoader/{Main => src/liteloader}/SimpleServerLogger.cpp (76%) rename LiteLoader/{Main => src/liteloader}/dllmain.cpp (97%) rename LiteLoader/{Kernel => src/llapi}/AllowListAPI.cpp (100%) rename LiteLoader/{Kernel => src/llapi}/Compatibility.cpp (97%) rename LiteLoader/{Kernel => src/llapi}/EventAPI.cpp (95%) rename LiteLoader/{Kernel => src/llapi}/FormPacketHelper.cpp (94%) rename LiteLoader/{Kernel => src/llapi}/FormUI.cpp (97%) rename LiteLoader/{Kernel => src/llapi}/I18nAPI.cpp (97%) rename LiteLoader/{Kernel => src/llapi}/KVDBAPI.cpp (96%) rename LiteLoader/{Kernel => src/llapi}/LLAPI.cpp (60%) rename LiteLoader/{Kernel => src/llapi}/LoggerAPI.cpp (92%) rename LiteLoader/{Kernel => src/llapi}/ObjectivePacketHelper.cpp (84%) create mode 100644 LiteLoader/src/llapi/ParticleAPI.cpp create mode 100644 LiteLoader/src/llapi/PermissionAPI.cpp rename LiteLoader/{Kernel => src/llapi}/PlayerInfoAPI.cpp (94%) rename LiteLoader/{Kernel => src/llapi}/RemoteCallAPI.cpp (97%) rename LiteLoader/{Kernel => src/llapi}/ScheduleAPI.cpp (92%) rename LiteLoader/{Kernel => src/llapi}/ServerAPI.cpp (66%) rename LiteLoader/{Kernel/Command => src/llapi/command}/CommandOriginAPI.cpp (73%) create mode 100644 LiteLoader/src/llapi/command/CommandOutputAPI.cpp rename LiteLoader/{Kernel/Command => src/llapi/command}/CommandRegistryAPI.cpp (97%) rename LiteLoader/{Kernel/Command => src/llapi/command}/DynamicCommandAPI.cpp (98%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Any.cpp (99%) rename LiteLoader/{Kernel/DB => src/llapi/db}/ConnParams.cpp (98%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Impl/MySQL/Session.cpp (98%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Impl/MySQL/Stmt.cpp (99%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Impl/SQLite/Session.cpp (96%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Impl/SQLite/Stmt.cpp (98%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Row.cpp (99%) rename LiteLoader/{Kernel/DB => src/llapi/db}/RowSet.cpp (98%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Session.cpp (95%) rename LiteLoader/{Kernel/DB => src/llapi/db}/Stmt.cpp (94%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/ActorAPI.cpp (88%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/ActorDamageSource.cpp (64%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/BiomeAPI.cpp (89%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/BlockAPI.cpp (78%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/BlockActorAPI.cpp (67%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/BlockInstanceAPI.cpp (84%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/BlockLegacyAPI.cpp (81%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/BlockSourceAPI.cpp (60%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/ColorFormatAPI.cpp (99%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/ContainerAPI.cpp (88%) create mode 100644 LiteLoader/src/llapi/mc/GameModeAPI.cpp rename LiteLoader/{Kernel/MC => src/llapi/mc}/HitResultAPI.cpp (90%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/I18nAPI.cpp (83%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/ItemActorAPI.cpp (52%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/ItemStackAPI.cpp (87%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/JsonHelpers.cpp (90%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/LevelAPI.cpp (93%) create mode 100644 LiteLoader/src/llapi/mc/MobAPI.cpp rename LiteLoader/{Kernel/MC => src/llapi/mc}/MolangAPI.cpp (100%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/NetworkIdentifierAPI.cpp (71%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/PlayerAPI.cpp (93%) create mode 100644 LiteLoader/src/llapi/mc/ResourcePackRepositoryAPI.cpp rename LiteLoader/{Kernel/MC => src/llapi/mc}/SpawnerAPI.cpp (76%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/StaticVanillaBlocksAPI.cpp (100%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/StructureTemplateAPI.cpp (86%) rename LiteLoader/{Kernel/MC => src/llapi/mc}/Types.cpp (98%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/ByteArrayTagAPI.cpp (93%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/ByteTagAPI.cpp (91%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/CompoundTagAPI.cpp (98%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/DoubleTagAPI.cpp (91%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/EndTagAPI.cpp (91%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/FloatTagAPI.cpp (91%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/Int64TagAPI.cpp (91%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/IntArrayTagAPI.cpp (93%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/IntTagAPI.cpp (90%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/ListTagAPI.cpp (80%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/PrettySnbtFormatAPI.cpp (99%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/ShortTagAPI.cpp (91%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/StringTagAPI.cpp (91%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/TagAPI.cpp (94%) rename LiteLoader/{Kernel/NBT => src/llapi/nbt}/TagMemoryChunk.cpp (94%) rename LiteLoader/{Kernel/Network => src/llapi/network}/BinaryStreamAPI.cpp (93%) rename LiteLoader/{Kernel/Network => src/llapi/network}/PacketAPI.cpp (88%) rename LiteLoader/{Kernel/Network => src/llapi/network}/ReadOnlyBinaryStreamAPI.cpp (80%) rename LiteLoader/{Kernel/Scoreboard => src/llapi/scoreboard}/ObjectiveAPI.cpp (83%) rename LiteLoader/{Kernel/Scoreboard => src/llapi/scoreboard}/ScoreboardAPI.cpp (95%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/CryptHelper.cpp (97%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/CsLock.cpp (94%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/DbgHelper.cpp (96%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/FileHelper.cpp (94%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/GlobalService.cpp (90%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/NetworkHelper.cpp (94%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/PlayerMap.cpp (89%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/PluginOwnData.cpp (65%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/SRWLock.cpp (94%) create mode 100644 LiteLoader/src/llapi/utils/STLHelper.cpp rename LiteLoader/{Kernel/Utils => src/llapi/utils}/ShellLinkFile.cpp (99%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/StringHelper.cpp (97%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/StringReader.cpp (99%) rename LiteLoader/{Kernel/Utils => src/llapi/utils}/WinHelper.cpp (95%) rename LiteLoader/{Header/third-party => third-party/include}/Base64/Base64.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/args.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/chrono.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/color.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/compile.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/core.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/format-inl.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/format.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/locale.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/os.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/ostream.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/printf.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/ranges.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/FMT/xchar.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/ModUtils/ModUtils.h (99%) rename LiteLoader/{Header/third-party => third-party/include}/Nlohmann/fifo_json.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/Nlohmann/fifo_map.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/Nlohmann/json.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Assertion.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Backup.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Column.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Database.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Exception.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/SQLiteCpp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Statement.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Transaction.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/Utils.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/SQLiteCpp/VariadicBind.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/compact_enc_det.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/compact_enc_det_generated_tables.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/compact_enc_det_generated_tables2.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/compact_enc_det_hint_code.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/detail_head_string.inc (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/basictypes.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/case_insensitive_hash.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/commandlineflags.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/encodings/encodings.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/encodings/encodings.pb.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/languages/languages.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/languages/languages.pb.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/logging.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/port.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/string_util.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/compact_enc_det/util/varsetter.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dbghelp/dbghelp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/detours/detours.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/detours/detver.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_alloc.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_alloc_wx.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_args.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_callback.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_callf.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_callvm.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_config.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_macros.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_signature.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_struct.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_thunk.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_types.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_utils.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_value.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_vector.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dyncall_version.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dynload.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/dyncall/dynload_alloc.h (100%) create mode 100644 LiteLoader/third-party/include/entt/config/config.h create mode 100644 LiteLoader/third-party/include/entt/config/macro.h create mode 100644 LiteLoader/third-party/include/entt/config/version.h create mode 100644 LiteLoader/third-party/include/entt/container/dense_map.hpp create mode 100644 LiteLoader/third-party/include/entt/container/dense_set.hpp create mode 100644 LiteLoader/third-party/include/entt/container/fwd.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/core/algorithm.hpp (96%) create mode 100644 LiteLoader/third-party/include/entt/core/any.hpp create mode 100644 LiteLoader/third-party/include/entt/core/attribute.h create mode 100644 LiteLoader/third-party/include/entt/core/compressed_pair.hpp create mode 100644 LiteLoader/third-party/include/entt/core/enum.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/core/family.hpp (86%) rename LiteLoader/{Header/third-party => third-party/include}/entt/core/fwd.hpp (81%) create mode 100644 LiteLoader/third-party/include/entt/core/hashed_string.hpp create mode 100644 LiteLoader/third-party/include/entt/core/ident.hpp create mode 100644 LiteLoader/third-party/include/entt/core/iterator.hpp create mode 100644 LiteLoader/third-party/include/entt/core/memory.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/core/monostate.hpp (93%) create mode 100644 LiteLoader/third-party/include/entt/core/tuple.hpp create mode 100644 LiteLoader/third-party/include/entt/core/type_info.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/core/type_traits.hpp (67%) rename LiteLoader/{Header/third-party => third-party/include}/entt/core/utility.hpp (69%) create mode 100644 LiteLoader/third-party/include/entt/entity/component.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/entity/entity.hpp (53%) create mode 100644 LiteLoader/third-party/include/entt/entity/fwd.hpp create mode 100644 LiteLoader/third-party/include/entt/entity/group.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/entity/handle.hpp (54%) create mode 100644 LiteLoader/third-party/include/entt/entity/helper.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/entity/observer.hpp (79%) rename LiteLoader/{Header/third-party => third-party/include}/entt/entity/organizer.hpp (51%) create mode 100644 LiteLoader/third-party/include/entt/entity/registry.hpp create mode 100644 LiteLoader/third-party/include/entt/entity/runtime_view.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/entity/snapshot.hpp (74%) create mode 100644 LiteLoader/third-party/include/entt/entity/sparse_set.hpp create mode 100644 LiteLoader/third-party/include/entt/entity/storage.hpp create mode 100644 LiteLoader/third-party/include/entt/entity/storage_mixin.hpp create mode 100644 LiteLoader/third-party/include/entt/entity/view.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/entt.hpp (73%) create mode 100644 LiteLoader/third-party/include/entt/fwd.hpp create mode 100644 LiteLoader/third-party/include/entt/graph/adjacency_matrix.hpp create mode 100644 LiteLoader/third-party/include/entt/graph/dot.hpp create mode 100644 LiteLoader/third-party/include/entt/graph/flow.hpp create mode 100644 LiteLoader/third-party/include/entt/graph/fwd.hpp create mode 100644 LiteLoader/third-party/include/entt/locator/locator.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/meta/adl_pointer.hpp (97%) create mode 100644 LiteLoader/third-party/include/entt/meta/container.hpp create mode 100644 LiteLoader/third-party/include/entt/meta/context.hpp create mode 100644 LiteLoader/third-party/include/entt/meta/factory.hpp create mode 100644 LiteLoader/third-party/include/entt/meta/fwd.hpp create mode 100644 LiteLoader/third-party/include/entt/meta/meta.hpp create mode 100644 LiteLoader/third-party/include/entt/meta/node.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/meta/pointer.hpp (86%) create mode 100644 LiteLoader/third-party/include/entt/meta/policy.hpp create mode 100644 LiteLoader/third-party/include/entt/meta/range.hpp create mode 100644 LiteLoader/third-party/include/entt/meta/resolve.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/meta/template.hpp (84%) rename LiteLoader/{Header/third-party => third-party/include}/entt/meta/type_traits.hpp (61%) create mode 100644 LiteLoader/third-party/include/entt/meta/utility.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/platform/android-ndk-r17.hpp (86%) rename LiteLoader/{Header/third-party => third-party/include}/entt/poly/fwd.hpp (55%) rename LiteLoader/{Header/third-party => third-party/include}/entt/poly/poly.hpp (67%) create mode 100644 LiteLoader/third-party/include/entt/process/fwd.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/process/process.hpp (73%) rename LiteLoader/{Header/third-party => third-party/include}/entt/process/scheduler.hpp (81%) create mode 100644 LiteLoader/third-party/include/entt/resource/cache.hpp create mode 100644 LiteLoader/third-party/include/entt/resource/fwd.hpp create mode 100644 LiteLoader/third-party/include/entt/resource/loader.hpp create mode 100644 LiteLoader/third-party/include/entt/resource/resource.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/signal/delegate.hpp (78%) create mode 100644 LiteLoader/third-party/include/entt/signal/dispatcher.hpp create mode 100644 LiteLoader/third-party/include/entt/signal/emitter.hpp create mode 100644 LiteLoader/third-party/include/entt/signal/fwd.hpp rename LiteLoader/{Header/third-party => third-party/include}/entt/signal/sigh.hpp (60%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/gsl (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/gsl_algorithm (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/gsl_assert (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/gsl_byte (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/gsl_util (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/multi_span (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/pointers (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/span (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/span_ext (100%) rename LiteLoader/{Header/third-party => third-party/include}/gsl/string_span (100%) rename LiteLoader/{Header/third-party => third-party/include}/httplib/httplib.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/c.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/cache.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/comparator.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/db.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/dumpfile.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/env.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/export.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/filter_policy.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/iterator.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/options.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/slice.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/status.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/table.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/table_builder.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/leveldb/write_batch.h (100%) create mode 100644 LiteLoader/third-party/include/magic_enum/magic_enum.hpp rename LiteLoader/{Header/third-party => third-party/include}/mysql/errmsg.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/field_types.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/my_command.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/my_compress.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/my_list.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysql.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysql/client_plugin.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysql/plugin_auth_common.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysql/udf_registration_types.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysql_com.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysql_time.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysql_version.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysqld_error.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysqlx_ername.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysqlx_error.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/mysql/mysqlx_version.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/nbt-cpp/nbt.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/__DECC_INCLUDE_EPILOGUE.H (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/__DECC_INCLUDE_PROLOGUE.H (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/aes.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/asn1.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/asn1.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/asn1_mac.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/asn1err.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/asn1t.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/asn1t.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/async.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/asyncerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/bio.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/bio.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/bioerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/blowfish.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/bn.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/bnerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/buffer.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/buffererr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/camellia.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cast.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cmac.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cmp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cmp.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cmp_util.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cmperr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cms.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cms.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cmserr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/comp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/comperr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/conf.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/conf.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/conf_api.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/conferr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/configuration.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/configuration.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/conftypes.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/core.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/core_dispatch.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/core_names.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/core_object.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/crmf.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/crmf.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/crmferr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/crypto.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/crypto.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cryptoerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cryptoerr_legacy.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ct.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ct.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/cterr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/decoder.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/decodererr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/des.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/dh.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/dherr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/dsa.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/dsaerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/dtls1.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/e_os2.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ebcdic.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ec.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ecdh.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ecdsa.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ecerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/encoder.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/encodererr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/engine.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/engineerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/err.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/err.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ess.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ess.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/esserr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/evp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/evperr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/fips_names.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/fipskey.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/fipskey.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/hmac.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/http.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/httperr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/idea.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/kdf.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/kdferr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/lhash.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/lhash.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/macros.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/md2.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/md4.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/md5.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/mdc2.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/modes.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/obj_mac.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/objects.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/objectserr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ocsp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ocsp.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ocsperr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/opensslconf.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/opensslv.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/opensslv.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ossl_typ.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/param_build.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/params.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pem.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pem2.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pemerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pkcs12.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pkcs12.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pkcs12err.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pkcs7.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pkcs7.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/pkcs7err.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/prov_ssl.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/proverr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/provider.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/rand.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/randerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/rc2.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/rc4.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/rc5.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ripemd.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/rsa.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/rsaerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/safestack.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/safestack.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/seed.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/self_test.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/sha.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/srp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/srp.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/srtp.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ssl.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ssl.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ssl2.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ssl3.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/sslerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/sslerr_legacy.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/stack.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/store.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/storeerr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/symhacks.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/tls1.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/trace.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ts.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/tserr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/txt_db.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/types.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ui.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/ui.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/uierr.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/whrlpool.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509_vfy.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509_vfy.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509err.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509v3.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509v3.h.in (100%) rename LiteLoader/{Header/third-party => third-party/include}/openssl/x509v3err.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/btree.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/meminfo.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/phmap.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/phmap_base.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/phmap_bits.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/phmap_config.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/phmap_dump.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/phmap_fwd_decl.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/parallel_hashmap/phmap_utils.h (100%) rename LiteLoader/{Header/third-party => third-party/include}/pcg/pcg_extras.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/pcg/pcg_random.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/pcg/pcg_uint128.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/seh_exception/seh_exception.hpp (100%) rename LiteLoader/{Header/third-party => third-party/include}/sqlite3/sqlite3.h (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/SQLiteCpp/SQLiteCpp.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/SQLiteCpp/sqlite3.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/compact_enc_det/ced.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/dbghelp/dbghelp.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/detours/detours.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/detours/detours.pdb (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/dyncall/dyncall_s.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/dyncall/dyncallback_s.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/dyncall/dynload_s.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/leveldb/leveldb.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/mysql/libmysql.pdb (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/mysql/mysqlclient.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/openssl/libcrypto.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/openssl/libssl.lib (100%) rename LiteLoader/{Lib/third-party => third-party/lib}/sqlite3/sqlite3.lib (100%) rename LiteLoader/{Lib/third-party => third-party/src}/nbt-cpp/nbt.cpp (98%) rename LiteLoader/{Lib/third-party => third-party/src}/nbt-cpp/nbt_internal.hpp (98%) create mode 160000 ParticleAPI-1.16.40 create mode 160000 PermissionAPI-1.16.40 delete mode 100644 PreLoader/CMakeLists.txt delete mode 100644 RELEASE/plugins/LLMoney.dll delete mode 100644 RELEASE/plugins/LiteLoader/CrashLogger.dll delete mode 100644 RELEASE/plugins/LiteLoader/ParticleAPI.dll delete mode 100644 RELEASE/plugins/LiteLoader/PermissionAPI.dll delete mode 100644 RELEASE/plugins/LiteLoader/PermissionAPI.pdb delete mode 100644 ScriptEngine/.gitignore delete mode 100644 ScriptEngine/API/SimulatedPlayerAPI.cpp delete mode 100644 ScriptEngine/Resource/ScriptEngine.rc delete mode 100644 ScriptEngine/Resource/resource.h rename ScriptEngine/{BaseLib => assets}/BaseLib.js (100%) rename ScriptEngine/{BaseLib => assets}/BaseLib.lua (100%) rename ScriptEngine/{API => src/api}/APIHelp.cpp (97%) rename ScriptEngine/{API => src/api}/APIHelp.h (96%) rename ScriptEngine/{API => src/api}/BaseAPI.cpp (96%) rename ScriptEngine/{API => src/api}/BaseAPI.h (97%) rename ScriptEngine/{API => src/api}/BlockAPI.cpp (98%) rename ScriptEngine/{API => src/api}/BlockAPI.h (93%) rename ScriptEngine/{API => src/api}/BlockEntityAPI.cpp (96%) rename ScriptEngine/{API => src/api}/BlockEntityAPI.h (100%) rename ScriptEngine/{API => src/api}/CommandAPI.cpp (98%) rename ScriptEngine/{API => src/api}/CommandAPI.h (98%) rename ScriptEngine/{API => src/api}/CommandCompatibleAPI.cpp (96%) rename ScriptEngine/{API => src/api}/CommandCompatibleAPI.h (100%) rename ScriptEngine/{API => src/api}/CommandOriginAPI.cpp (93%) rename ScriptEngine/{API => src/api}/CommandOriginAPI.h (95%) rename ScriptEngine/{API => src/api}/CommandOutputAPI.cpp (100%) rename ScriptEngine/{API => src/api}/CommandOutputAPI.h (98%) rename ScriptEngine/{API => src/api}/ContainerAPI.cpp (98%) rename ScriptEngine/{API => src/api}/ContainerAPI.h (100%) rename ScriptEngine/{API => src/api}/DataAPI.cpp (99%) rename ScriptEngine/{API => src/api}/DataAPI.h (97%) rename ScriptEngine/{API => src/api}/DatabaseAPI.cpp (100%) rename ScriptEngine/{API => src/api}/DatabaseAPI.h (97%) rename ScriptEngine/{API => src/api}/DeviceAPI.cpp (97%) rename ScriptEngine/{API => src/api}/DeviceAPI.h (100%) rename ScriptEngine/{API => src/api}/EntityAPI.cpp (99%) rename ScriptEngine/{API => src/api}/EntityAPI.h (100%) rename ScriptEngine/{API => src/api}/EventAPI.cpp (98%) rename ScriptEngine/{API => src/api}/EventAPI.h (92%) rename ScriptEngine/{API => src/api}/FileSystemAPI.cpp (98%) rename ScriptEngine/{API => src/api}/FileSystemAPI.h (100%) rename ScriptEngine/{API => src/api}/GameUtilsAPI.cpp (100%) rename ScriptEngine/{API => src/api}/GameUtilsAPI.h (100%) rename ScriptEngine/{API => src/api}/GlobalNativePointer.cpp (100%) rename ScriptEngine/{API => src/api}/GuiAPI.cpp (97%) rename ScriptEngine/{API => src/api}/GuiAPI.h (94%) rename ScriptEngine/{API => src/api}/InternationalAPI.cpp (99%) rename ScriptEngine/{API => src/api}/InternationalAPI.h (100%) rename ScriptEngine/{API => src/api}/ItemAPI.cpp (99%) rename ScriptEngine/{API => src/api}/ItemAPI.h (100%) rename ScriptEngine/{API => src/api}/LlAPI.cpp (93%) rename ScriptEngine/{API => src/api}/LlAPI.h (100%) rename ScriptEngine/{API => src/api}/LoggerAPI.cpp (98%) rename ScriptEngine/{API => src/api}/LoggerAPI.h (100%) rename ScriptEngine/{API => src/api}/McAPI.cpp (100%) rename ScriptEngine/{API => src/api}/McAPI.h (100%) rename ScriptEngine/{API => src/api}/NativeAPI.cpp (99%) rename ScriptEngine/{API => src/api}/NativeAPI.h (100%) rename ScriptEngine/{API => src/api}/NativePatch.cpp (96%) rename ScriptEngine/{API => src/api}/NativePointer.cpp (99%) rename ScriptEngine/{API => src/api}/NativeStdString.cpp (100%) rename ScriptEngine/{API => src/api}/NativeStdString.h (100%) rename ScriptEngine/{API => src/api}/NbtAPI.cpp (99%) rename ScriptEngine/{API => src/api}/NbtAPI.h (96%) rename ScriptEngine/{API => src/api}/NetworkAPI.cpp (95%) rename ScriptEngine/{API => src/api}/NetworkAPI.h (96%) rename ScriptEngine/{API => src/api}/PacketAPI.cpp (99%) rename ScriptEngine/{API => src/api}/PacketAPI.h (93%) rename ScriptEngine/{API => src/api}/ParticleAPI.cpp (100%) rename ScriptEngine/{API => src/api}/ParticleAPI.h (92%) rename ScriptEngine/{API => src/api}/PermissionAPI.cpp (100%) rename ScriptEngine/{API => src/api}/PermissionAPI.h (96%) rename ScriptEngine/{API => src/api}/PlayerAPI.cpp (99%) rename ScriptEngine/{API => src/api}/PlayerAPI.h (82%) rename ScriptEngine/{API => src/api}/RemoteCallAPI.cpp (97%) rename ScriptEngine/{API => src/api}/RemoteCallAPI.h (100%) rename ScriptEngine/{API => src/api}/ScoreboardAPI.cpp (98%) rename ScriptEngine/{API => src/api}/ScoreboardAPI.h (100%) rename ScriptEngine/{API => src/api}/ScriptAPI.cpp (96%) rename ScriptEngine/{API => src/api}/ScriptAPI.h (100%) rename ScriptEngine/{API => src/api}/ServerAPI.cpp (83%) rename ScriptEngine/{API => src/api}/ServerAPI.h (100%) rename ScriptEngine/{API => src/api}/StructureAPI.cpp (95%) rename ScriptEngine/{API => src/api}/SystemAPI.cpp (94%) rename ScriptEngine/{API => src/api}/SystemAPI.h (100%) rename ScriptEngine/{Engine => src/engine}/EngineManager.cpp (97%) rename ScriptEngine/{Engine => src/engine}/EngineManager.h (91%) rename ScriptEngine/{Engine => src/engine}/EngineOwnData.h (94%) rename ScriptEngine/{Engine => src/engine}/GlobalShareData.cpp (93%) rename ScriptEngine/{Engine => src/engine}/GlobalShareData.h (94%) rename ScriptEngine/{Engine => src/engine}/LocalShareData.cpp (93%) rename ScriptEngine/{Engine => src/engine}/LocalShareData.h (93%) rename ScriptEngine/{Engine => src/engine}/MessageSystem.cpp (97%) rename ScriptEngine/{Engine => src/engine}/MessageSystem.h (97%) rename ScriptEngine/{Engine => src/engine}/OperationCount.cpp (96%) rename ScriptEngine/{Engine => src/engine}/OperationCount.h (100%) rename ScriptEngine/{Engine => src/engine}/RemoteCall.cpp (95%) rename ScriptEngine/{Engine => src/engine}/RemoteCall.h (81%) rename ScriptEngine/{Engine => src/engine}/TimeTaskSystem.cpp (96%) rename ScriptEngine/{Engine => src/engine}/TimeTaskSystem.h (89%) rename ScriptEngine/{Main => src/main}/BindAPIs.cpp (84%) rename ScriptEngine/{Main => src/main}/BuiltinCommands.cpp (94%) rename ScriptEngine/{Main => src/main}/BuiltinCommands.h (100%) rename ScriptEngine/{Main => src/main}/Configs.h (100%) rename ScriptEngine/{Main => src/main}/EconomicSystem.h (100%) rename ScriptEngine/{Main => src/main}/EconomySystem.cpp (97%) rename ScriptEngine/{Main => src/main}/Global.cpp (79%) rename ScriptEngine/{Main => src/main}/Global.hpp (89%) rename ScriptEngine/{Main => src/main}/Loader.cpp (95%) rename ScriptEngine/{Main => src/main}/Loader.h (100%) rename ScriptEngine/{Main => src/main}/NodeJsHelper.cpp (96%) rename ScriptEngine/{Main => src/main}/NodeJsHelper.h (93%) rename ScriptEngine/{Main => src/main}/PluginManager.cpp (90%) rename ScriptEngine/{Main => src/main}/PluginManager.h (69%) rename ScriptEngine/{Main => src/main}/SafeGuardRecord.cpp (95%) rename ScriptEngine/{Main => src/main}/SafeGuardRecord.h (100%) rename ScriptEngine/{Main => src/main}/ScriptEngine.cpp (61%) rename ScriptEngine/{Main => src/main}/dllmain.cpp (99%) rename ScriptEngine/{Tools => src/utils}/IniHelper.cpp (97%) rename ScriptEngine/{Tools => src/utils}/IniHelper.h (100%) rename ScriptEngine/{Tools => src/utils}/JsonHelper.h (96%) create mode 100644 ScriptEngine/src/utils/UsingScriptX.inc rename ScriptEngine/{Tools => src/utils}/Utils.cpp (97%) rename ScriptEngine/{Tools => src/utils}/Utils.h (94%) delete mode 100644 ScriptEngine/third-party/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt delete mode 100644 ScriptEngine/third-party/SimpleIni/SimpleIni.h rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lapi.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lauxlib.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lcode.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lctype.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/ldebug.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/ldo.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lfunc.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lgc.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/ljumptab.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/llex.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/llimits.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lmem.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lobject.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lopcodes.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lopnames.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lparser.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lprefix.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lstate.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lstring.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/ltable.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/ltm.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lua.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lua.hpp (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/luaconf.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lualib.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lundump.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lvm.h (100%) rename ScriptEngine/third-party/{Lua/include => backend/include/Lua}/lzio.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/aliased_buffer.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/aliased_struct-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/aliased_struct.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/allocated_buffer-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/allocated_buffer.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/async_wrap-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/async_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/base64-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/base64.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/base_object-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/base_object.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/callback_queue-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/callback_queue.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/cares_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/connect_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/connection_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_aes.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_bio.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_cipher.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_clienthello-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_clienthello.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_common.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_context.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_dh.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_dsa.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_ec.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_groups.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_hash.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_hkdf.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_hmac.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_keygen.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_keys.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_pbkdf2.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_random.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_rsa.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_scrypt.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_sig.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_spkac.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_timing.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_tls.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_util.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/crypto/crypto_x509.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/debug_utils-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/debug_utils.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/diagnosticfilename-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/env-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/env.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/handle_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/histogram-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/histogram.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector/main_thread_interface.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector/node_string.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector/runtime_agent.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector/tracing_agent.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector/worker_agent.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector/worker_inspector.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector_agent.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector_io.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector_profiler.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector_socket.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/inspector_socket_server.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/js_native_api.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/js_native_api_types.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/js_native_api_v8.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/js_native_api_v8_internals.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/js_stream.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/json_utils.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/large_pages/node_large_page.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/memory_tracker-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/memory_tracker.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/module_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_api.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_api_internals.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_api_types.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_binding.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_blob.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_bob-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_bob.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_buffer.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_constants.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_context_data.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_contextify.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_crypto.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_dir.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_dtrace.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_errors.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_external_reference.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_file-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_file.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_http2.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_http2_state.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_http_common-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_http_common.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_i18n.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_internals.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_main_instance.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_mem-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_mem.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_messaging.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_metadata.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_mutex.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_native_module.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_native_module_env.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_object_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_options-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_options.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_perf.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_perf_common.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_platform.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_process-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_process.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_report.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_revert.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_root_certs.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_snapshotable.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_sockaddr-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_sockaddr.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_stat_watcher.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_union_bytes.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_url.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_v8.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_v8_platform-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_version.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_wasi.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_watchdog.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_win32_etw_provider-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_win32_etw_provider.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/node_worker.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/pipe_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/req_wrap-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/req_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/spawn_sync.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/stream_base-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/stream_base.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/stream_pipe.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/stream_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/string_bytes.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/string_decoder-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/string_decoder.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/string_search.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tcp_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/threadpoolwork-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/timer_wrap-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/timer_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tracing/agent.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tracing/node_trace_buffer.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tracing/node_trace_writer.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tracing/trace_event.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tracing/trace_event_common.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tracing/traced_value.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/tty_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/udp_wrap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/util-inl.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/util.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/aix.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/android-ifaddrs.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/bsd.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/darwin.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/errno.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/linux.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/os390.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/posix.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/stdint-msvc2008.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/sunos.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/threadpool.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/tree.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/unix.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/version.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/uv/uv/win.h (99%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/APIDesign.md (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/DEPS (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/DIR_METADATA (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/OWNERS (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/DEPS (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/OWNERS (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/README.md (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/allocation.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/common.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/cross-thread-persistent.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/custom-space.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/default-platform.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/ephemeron-pair.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/explicit-management.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/garbage-collected.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/heap-consistency.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/heap-state.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/heap-statistics.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/heap.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/api-constants.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/atomic-entry-flag.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/caged-heap-local-data.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/compiler-specific.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/finalizer-trait.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/gc-info.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/logging.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/name-trait.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/persistent-node.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/pointer-policies.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/prefinalizer-handler.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/internal/write-barrier.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/liveness-broker.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/macros.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/member.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/name-provider.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/object-size-trait.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/persistent.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/platform.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/prefinalizer.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/process-heap-statistics.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/sentinel-pointer.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/source-location.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/testing.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/trace-trait.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/type-traits.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/cppgc/visitor.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/js_protocol-1.2.json (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/js_protocol-1.3.json (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/js_protocol.pdl (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/libplatform/DEPS (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/libplatform/libplatform-export.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/libplatform/libplatform.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/libplatform/v8-tracing.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-cppgc.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-fast-api-calls.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-inspector-protocol.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-inspector.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-internal.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-metrics.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-platform.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-profiler.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-unwinder-state.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-util.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-value-serializer-version.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-version-string.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-version.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-wasm-trap-handler-posix.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8-wasm-trap-handler-win.h (99%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8/v8config.h (100%) rename ScriptEngine/third-party/{NodeJs/include => backend/include/NodeJs}/v8abbr.h (100%) create mode 100644 ScriptEngine/third-party/backend/include/QuickJs/quickjs-libc.h rename ScriptEngine/third-party/{QuickJs/include => backend/include/QuickJs}/quickjs.h (100%) rename ScriptEngine/third-party/{Lua/lib => backend/lib/Lua}/lua.lib (100%) rename ScriptEngine/third-party/{NodeJs/lib => backend/lib/NodeJs}/libnode.lib (100%) rename ScriptEngine/third-party/{QuickJs/lib => backend/lib/QuickJs}/quickjs.lib (100%) delete mode 100644 ScriptEngine/third-party/cpp-base64/include/base64.h delete mode 100644 ScriptEngine/third-party/cpp-base64/lib/cpp-base64.lib rename ScriptEngine/third-party/{ => include}/LLMoney/LLMoney.h (100%) rename ScriptEngine/third-party/{LightWebSocketClient/include => include/LightWebSocketClient}/WebSocketClient.h (100%) rename ScriptEngine/third-party/{ => include}/Nlohmann/fifo_map.hpp (100%) rename ScriptEngine/third-party/{ => include}/Nlohmann/json.hpp (100%) rename {LiteLoader/Header/third-party => ScriptEngine/third-party/include}/SimpleIni/SimpleIni.h (99%) rename ScriptEngine/third-party/{ => include}/ThreadPool/ThreadPool.hpp (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_alloc_wx.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_args.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_callback.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_callf.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_config.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_macros.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_signature.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_types.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dyncall_value.h (100%) rename ScriptEngine/third-party/{dyncall/include => include/dyncall}/dynload.h (100%) rename ScriptEngine/third-party/{ => include}/gsl/gsl (100%) rename ScriptEngine/third-party/{ => include}/gsl/gsl_algorithm (100%) rename ScriptEngine/third-party/{ => include}/gsl/gsl_assert (100%) rename ScriptEngine/third-party/{ => include}/gsl/gsl_byte (100%) rename ScriptEngine/third-party/{ => include}/gsl/gsl_util (100%) rename ScriptEngine/third-party/{ => include}/gsl/multi_span (100%) rename ScriptEngine/third-party/{ => include}/gsl/pointers (100%) rename ScriptEngine/third-party/{ => include}/gsl/span (100%) rename ScriptEngine/third-party/{ => include}/gsl/span_ext (100%) rename ScriptEngine/third-party/{ => include}/gsl/string_span (100%) rename ScriptEngine/third-party/{nbt-cpp/include => include/nbt-cpp}/nbt.hpp (100%) rename ScriptEngine/third-party/{nbt-cpp/include => include/nbt-cpp}/nbt_internal.hpp (100%) rename ScriptEngine/third-party/{LightWebSocketClient/lib => lib/LightWebSocketClient}/LightWSClient.lib (100%) rename ScriptEngine/third-party/{dyncall/lib => lib/dyncall}/libdyncall_s.lib (100%) rename ScriptEngine/third-party/{dyncall/lib => lib/dyncall}/libdyncallback_s.lib (100%) rename ScriptEngine/third-party/{dyncall/lib => lib/dyncall}/libdynload_s.lib (100%) rename ScriptEngine/third-party/{nbt-cpp/lib => lib/nbt-cpp}/nbt-cpp.lib (100%) delete mode 100644 ScriptEngine/third-party/seh_exception/seh_exception.hpp delete mode 100644 Scripts/PackReleaseWithPDB.cmd create mode 100644 Scripts/PrepareLibraries.cmd rename {ScriptEngine/third-party => Tools}/ScriptX/.clang-format (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.clang-tidy (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.devtools/LicenseHeader.template (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.devtools/appendLicenseHeader.sh (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.devtools/hooks/pre-commit (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.devtools/install.sh (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.devtools/new_backend.sh (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.github/stale.yml (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.github/workflows/coverage.yml (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.github/workflows/sync_to_tencent_code.yml (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.github/workflows/unit_tests.yml (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/.gitignore (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/CHANGELOG.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/CMake/ScriptX-Lua/CMakeLists.txt (56%) create mode 100644 Tools/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt rename {ScriptEngine/third-party => Tools}/ScriptX/CMake/ScriptX-QuickJs/CMakeLists.txt (56%) rename {ScriptEngine/third-party => Tools}/ScriptX/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/CONTRIBUTING.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/LICENSE (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/README-zh.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/README.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/VERSION (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscEngine.cc (94%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscEngine.h (99%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscEngine.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscException.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscHelper.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscHelper.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscHelper.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscLocalReference.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscNative.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscNative.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscReference.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscScope.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscScope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscUtils.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscValue.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscWeakRef.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscWeakRef.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/JscWeakRef.mm (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/trait/TraitEngine.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/trait/TraitException.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/trait/TraitIncludes.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/trait/TraitNative.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/trait/TraitReference.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/trait/TraitScope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/JavaScriptCore/trait/TraitUtils.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaByteBufferImpl.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaByteBufferImpl.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaEngine.cc (95%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaEngine.h (98%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaEngine.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaException.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaHelper.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaHelper.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaHelper.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaLocalReference.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaNative.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaNative.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaReference.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaScope.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaScope.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaUtils.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/LuaValue.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/trait/TraitEngine.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/trait/TraitException.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/trait/TraitIncludes.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/trait/TraitNative.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/trait/TraitReference.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/trait/TraitScope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Lua/trait/TraitUtils.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Python/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsEngine.cc (89%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsEngine.h (98%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsEngine.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsException.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsHelper.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsHelper.h (98%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsHelper.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsLocalReference.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsNative.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsNative.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsReference.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsScope.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsUtils.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/QjsValue.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/patch/0001-Add-new-APIs-for-ScriptX-for-QuickJs-2021-03-27.patch (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/trait/TraitEngine.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/trait/TraitException.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/trait/TraitIncludes.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/trait/TraitNative.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/trait/TraitReference.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/trait/TraitScope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/QuickJs/trait/TraitUtils.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Ruby/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/SpiderMonkey/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/README.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateEngine.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateEngine.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateException.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateLocalReference.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateNative.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateNative.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateReference.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateUtils.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/TemplateValue.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/trait/TraitEngine.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/trait/TraitException.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/trait/TraitIncludes.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/trait/TraitNative.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/trait/TraitReference.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/trait/TraitScope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/Template/trait/TraitUtils.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/CMakeLists.txt (96%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Engine.cc (93%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Engine.h (99%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Engine.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Exception.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Helper.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Helper.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Helper.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Inspector.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8LocalReference.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Native.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Native.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Platform.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Platform.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Reference.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Scope.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Scope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Scope.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Utils.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/V8Value.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/thirdparty/utfcpp/utf8-min.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/trait/TraitEngine.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/trait/TraitException.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/trait/TraitIncludes.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/trait/TraitNative.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/trait/TraitReference.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/trait/TraitScope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/V8/trait/TraitUtils.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WKWebView/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmEngine.cc (86%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmEngine.h (97%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmEngine.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmException.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmHelper.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmHelper.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmLocalReference.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmNative.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmNative.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmReference.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmScope.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmScope.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmUtils.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/WasmValue.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/trait/TraitEngine.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/trait/TraitException.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/trait/TraitIncludes.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/trait/TraitNative.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/trait/TraitReference.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/trait/TraitScope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/backend/WebAssembly/trait/TraitUtils.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/doxygen/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/doxygen/Doxyfile.in (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/Basics.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/Exception.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/FAQ.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/ImportScriptX.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/Interop.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/JavaScript.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/Lua.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/NativeBinding.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/NodeJs.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/Performance.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/PureCpp2020.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/QuickJs.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/QuickStart.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/TOC.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/en/WebAssembly.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/banner.webp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/multilingual_structure.svg (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/multilingual_structure_zh.svg (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/performance.webp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/scriptx_logo.svg (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/webassembly_non_shared_bytebuffer.svg (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/webassembly_shared_bytebuffer.svg (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/webassembly_v8_jscore.svg (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/media/webassembly_webassembly.svg (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/Basics.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/Exception.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/FAQ.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/ImportScriptX.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/Interop.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/JavaScript.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/Lua.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/NativeBinding.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/NodeJs.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/Performance.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/PureCpp2020.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/QuickJs.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/QuickStart.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/TOC.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/docs/zh/WebAssembly.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Engine.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Engine.h (95%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Engine.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Exception.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Includes.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Inspector.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Native.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Native.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/NativeConverter.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Reference.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Reference.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Scope.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Scope.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Utils.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Utils.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/Value.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/foundation.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/include/ScriptX/ScriptX.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/types.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/GlobalWeakBookkeeping.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/Helper.cc (80%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/Helper.hpp (94%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/MemoryPool.hpp (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/MessageQueue.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/MessageQueue.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/ThreadLocal.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/ThreadPool.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/ThreadPool.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/utils/TypeInformation.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/src/version.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/cmake/TestEnv.cmake (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/cmake/gtest/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/cmake/gtest/CMakeLists.txt.in (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/cmake/test_libs/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/cmake/test_libs/CMakeLists.txt.in (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/node_addon/.gitignore (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/node_addon/CMakeLists.txt (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/node_addon/README.md (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/node_addon/hello.js (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/node_addon/package.json (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/node_addon/src/addon.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/BookKeepingTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ByteBufferTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/CustomConverterTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/Demo.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/EngineTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ExceptionTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/InspectorTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/InteroperateTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ManagedObjectTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/MessageQueueTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/NativeTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/PressureTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ReferenceTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ScopeTests.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ShowCaseTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ThreadPoolTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/UtilsTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/ValueTest.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/gtest_main.cc (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/test.h (100%) rename {ScriptEngine/third-party => Tools}/ScriptX/test/src/wasm/run_test.html (100%) rename {RELEASE => assets}/plugins/LiteLoader/7z/7za.dll (100%) rename {RELEASE => assets}/plugins/LiteLoader/7z/7za.exe (100%) rename {RELEASE => assets}/plugins/LiteLoader/CrashLogger_Daemon.exe (100%) rename {RELEASE => assets}/plugins/LiteLoader/LangPack/en.json (100%) create mode 100644 assets/plugins/LiteLoader/LangPack/fr.json rename {RELEASE => assets}/plugins/LiteLoader/LangPack/id.json (100%) rename {RELEASE => assets}/plugins/LiteLoader/LangPack/it.json (100%) rename {RELEASE => assets}/plugins/LiteLoader/LangPack/ja.json (100%) create mode 100644 assets/plugins/LiteLoader/LangPack/ko.json rename {RELEASE => assets}/plugins/LiteLoader/LangPack/ru.json (100%) rename {RELEASE => assets}/plugins/LiteLoader/LangPack/th.json (100%) create mode 100644 assets/plugins/LiteLoader/LangPack/tr.json rename {RELEASE => assets}/plugins/LiteLoader/LangPack/vi.json (100%) rename {RELEASE => assets}/plugins/LiteLoader/LangPack/zh_CN.json (100%) rename {RELEASE => assets}/plugins/LiteLoader/LangPack/zh_TW.json (100%) create mode 160000 assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI rename {RELEASE => assets}/plugins/lib/DO NOT UPGRADE NPM IN THIS DIRECTORY!! (100%) rename {RELEASE => assets}/plugins/lib/libcrypto-1_1-x64.dll (100%) rename {RELEASE => assets}/plugins/lib/libcrypto-3-x64.dll (100%) rename {RELEASE => assets}/plugins/lib/libnode.dll (100%) rename {RELEASE => assets}/plugins/lib/libssl-1_1-x64.dll (100%) rename {RELEASE => assets}/plugins/lib/libssl-3-x64.dll (100%) rename {RELEASE => assets}/plugins/lib/lua5.4.3.dll (100%) rename {RELEASE => assets}/plugins/lib/node_modules.tar (100%) rename {RELEASE => assets}/plugins/lib/package.json (100%) rename {RELEASE => assets}/plugins/lib/sqlite3.dll (100%) diff --git a/.clang-format b/.clang-format index 87c6c85..1290f65 100644 --- a/.clang-format +++ b/.clang-format @@ -1,55 +1,53 @@ # Documents: https://clang.llvm.org/docs/ClangFormatStyleOptions.html Language: Cpp -# BasedOnStyle: LLVM +BasedOnStyle: LLVM AccessModifierOffset: -4 AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: false -AlignConsecutiveDeclarations: false -AlignEscapedNewlinesLeft: true +AlignConsecutiveAssignments: None +AlignConsecutiveDeclarations: None AlignOperands: Align -AlwaysBreakTemplateDeclarations : true +AlwaysBreakTemplateDeclarations: Yes AlignTrailingComments: true -AllowAllArgumentsOnNextLine : true +AllowAllArgumentsOnNextLine: true AllowAllParametersOfDeclarationOnNextLine: true -AllowShortBlocksOnASingleLine : true +AllowShortBlocksOnASingleLine: Always AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: Inline AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false -AllowShortFunctionsOnASingleLine: false -AllowShortLambdasOnASingleLine: true +AllowShortFunctionsOnASingleLine: Empty +AllowShortLambdasOnASingleLine: All AllowShortEnumsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None BinPackArguments: true BinPackParameters: true ConstructorInitializerIndentWidth: 0 ConstructorInitializerAllOnOneLineOrOnePerLine: true -ColumnLimit: 0 +BreakBeforeConceptDeclarations: Always +RequiresClausePosition: OwnLine +ColumnLimit: 120 CommentPragmas: '^ IWYU pragma:' PointerAlignment: Left IndentWidth: 4 -SortIncludes: false +SortIncludes: Never MaxEmptyLinesToKeep: 2 SpacesInSquareBrackets: false -SpacesInParentheses : false +SpacesInParentheses: false SpaceBeforeAssignmentOperators: true SpacesInContainerLiterals: true IndentWrappedFunctionNames: true KeepEmptyLinesAtTheStartOfBlocks: true +SeparateDefinitionBlocks: Always BreakConstructorInitializersBeforeComma: true SpaceAfterCStyleCast: false IndentCaseLabels: true TabWidth: 4 UseTab: Never - BreakBeforeBraces: Custom BraceWrapping: # case 语句后面 AfterCaseLabel: false # class定义后面 AfterClass: false - # 控制语句后面 - AfterControlStatement: false # enum定义后面 AfterEnum: false # 函数定义后面 diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..a6d90db --- /dev/null +++ b/.clangd @@ -0,0 +1,4 @@ +Diagnostics: + Suppress: ["-Wmicrosoft-enum-forward-reference", "-Wc++11-narrowing"] +CompileFlags: + Add: ["-ferror-limit=0", "-D__FUNCTION__=\"dummy\"", "-D_CRT_USE_BUILTIN_OFFSETOF"] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..6f96f6a --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,194 @@ +name: Build + +on: + workflow_dispatch: + pull_request: + push: + +env: + BUILD_TYPE: Release + +jobs: + build: + name: Build +# runs-on: self-hosted + runs-on: windows-2022 + steps: + - name: Checkout repository + uses: actions/checkout@v3.2.0 + with: + fetch-depth: 1 + submodules: 'true' + + - name: Cache BDS libraries + id: cache-bds-lib + uses: actions/cache@v3 + env: + cache-name: cache-bds-lib + with: + path: | + ${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_api.lib + ${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_var.lib + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('scripts/LINK.txt') }} + + - name: Download BDS if not cached + if: steps.cache-bds-lib.outputs.cache-hit != 'true' + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + mkdir Tools/Server + ServerLink=$(cat 'scripts/LINK.txt') + curl -L -o Tools/Server/server.zip "$ServerLink" + unzip Tools/Server/server.zip -d Tools/Server/ > /dev/null + shell: bash + + - name: Build libraries if not cached + if: steps.cache-bds-lib.outputs.cache-hit != 'true' + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + cd Tools + LibraryBuilder.exe Server + mkdir ..\LiteLoader\lib + move bedrock_server_api.lib ..\LiteLoader\lib + move bedrock_server_var.lib ..\LiteLoader\lib + shell: cmd + + - name: Get short SHA + id: sha_short + run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Set LITELOADER_VERSION_COMMIT_SHA + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + sed -r -i 's/#define\s+LITELOADER_VERSION_COMMIT_SHA\s+.*/#define LITELOADER_VERSION_COMMIT_SHA ${{ steps.sha_short.outputs.sha_short }}\r/' LiteLoader/include/liteloader/Version.h + shell: bash + + - name: Configure CMake (MSVC) + run: | + cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + shell: cmd + + - name: Build all + run: | + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + shell: cmd + + - name: Pack output + run: | + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target PackOutput + shell: cmd + + - name: Pack SDK on push event + if: github.event_name == 'push' + run: | + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target PackSDK + shell: cmd + + - name: Configure CMake (ClangCL) + run: | + cmake -B ${{github.workspace}}/build_clang -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -T clangcl + shell: cmd + + - name: Build SymDBHelper + run: cmake --build ${{github.workspace}}/build_clang --config ${{env.BUILD_TYPE}} --target SymDBHelper + + - name: Compress resource packs for LiteLoaderBDS CUI on push event + if: github.event_name == 'push' + run: | + cd build/output/plugins/LiteLoader/ResourcePacks + 7z a LiteLoaderBDS-CUI.tar LiteLoaderBDS-CUI + rm -r LiteLoaderBDS-CUI + shell: bash + + - name: Update C++ SDK on push event + if: github.event_name == 'push' + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + cd scripts + ./UploadSDK.cmd action + env: + REPO_KEY: ${{secrets.PUSH_TOKEN}} + USERNAME: github-actions[bot] + shell: cmd + +# - name: Download LLMoney +# working-directory: ${{ env.GITHUB_WORKSPACE }} +# run: | +# git clone https://github.com/Tooth-Hub/LLMoney.git LLMoney-bin +# cp LLMoney-bin/LLMoney.dll build/output/plugins/ +# shell: bash + + - name: Upload LiteLoaderBDS + uses: actions/upload-artifact@v3.1.0 + with: + name: LiteLoaderBDS + path: | + ${{ github.workspace }}\build\output\LLPeEditor.exe + ${{ github.workspace }}\build\output\LLPreLoader.dll + ${{ github.workspace }}\build\output\LiteLoader.dll + ${{ github.workspace }}\build\output\plugins\lib\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\LangPack\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\CrashLogger_Daemon.exe + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Js.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Lua.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.NodeJs.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\7z\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\ParticleAPI.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\ResourcePacks\LiteLoaderBDS-CUI.tar + ${{ github.workspace }}\build\output\plugins\LiteLoader\PermissionAPI.dll +# ${{ github.workspace }}\build\output\plugins\LLMoney.dll + + - name: Upload PeEditor + uses: actions/upload-artifact@v3.1.0 + with: + name: PeEditor + path: ${{ github.workspace }}\build\output\LLPeEditor.exe + + - name: Upload PreLoader + uses: actions/upload-artifact@v3.1.0 + with: + name: PreLoader + path: ${{ github.workspace }}\build\output\LLPreLoader.dll + + - name: Upload LiteLoader + uses: actions/upload-artifact@v3.1.0 + with: + name: LiteLoader + path: | + ${{ github.workspace }}\build\output\LiteLoader.dll + ${{ github.workspace }}\build\output\plugins\lib\*.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LangPack\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\7z\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\CrashLogger_Daemon.exe + + - name: Upload ScriptEngine + uses: actions/upload-artifact@v3.1.0 + with: + name: ScriptEngine + path: | + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Js.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Lua.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.NodeJs.dll + ${{ github.workspace }}\build\output\plugins\lib\node_modules.tar + ${{ github.workspace }}\build\output\plugins\lib\package.json + + - name: Upload LLParticle + uses: actions/upload-artifact@v3.1.0 + with: + name: LLParticle + path: | + ${{ github.workspace }}\build\output\plugins\LiteLoader\ParticleAPI.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\ResourcePacks\LiteLoaderBDS-CUI.tar + + - name: Upload LLPermission + uses: actions/upload-artifact@v3.1.0 + with: + name: LLPermission + path: ${{ github.workspace }}\build\output\plugins\LiteLoader\PermissionAPI.dll + + - name: Upload PDB files + uses: actions/upload-artifact@v3.1.0 + with: + name: PDB + path: ${{ github.workspace }}\build\pdb\ diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml deleted file mode 100644 index c34ffa9..0000000 --- a/.github/workflows/cmake.yml +++ /dev/null @@ -1,143 +0,0 @@ -name: CMake - -on: - push: - paths: - - '**.cpp' - - '**.cc' - - '**.cxx' - - '**.c' - - '**.hpp' - - '**.hh' - - '**.hxx' - - '**.h' - - '.github/workflows/cmake.yml' - - '**/CMakeLists.txt' - -env: - BUILD_TYPE: Release - -jobs: - build: - runs-on: windows-2022 - - steps: - - uses: actions/checkout@v3.0.2 - with: - fetch-depth: 1 - #submodules: 'true' - - - name: Cache Bedrock Dedicated Server Library - id: cache-bds-lib - uses: actions/cache@v3 - env: - cache-name: cache-bds-lib - with: - path: | - ${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_api.lib - ${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_var.lib - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('Scripts/LINK.txt') }} - - - name: Download Server - if: steps.cache-bds-lib.outputs.cache-hit != 'true' - working-directory: ${{ env.GITHUB_WORKSPACE }} - run: | - mkdir Tools/Server - ServerLink=$(cat 'Scripts/LINK.txt') - curl -L -o Tools/Server/server.zip "$ServerLink" - unzip Tools/Server/server.zip -d Tools/Server/ > /dev/null - shell: bash - - - name: Build Library - if: steps.cache-bds-lib.outputs.cache-hit != 'true' - working-directory: ${{ env.GITHUB_WORKSPACE }} - run: | - cd Tools - LibraryBuilder.exe Server - shell: cmd - - - name: Change LITELOADER_VERSION_STATUS_BETA - working-directory: ${{ env.GITHUB_WORKSPACE }} - if: false == startsWith(github.ref, 'refs/tags/') - run: | - sed -r -i 's/#define\s+LITELOADER_VERSION_STATUS\s+LITELOADER_VERSION_\w+/#define LITELOADER_VERSION_STATUS LITELOADER_VERSION_BETA/' LiteLoader/Main/Version.h - sed -r -i 's/#define\s+LITELOADER_VERSION_ACTIONS\s+.*/#define LITELOADER_VERSION_ACTIONS ${{ github.run_number }}\r/' LiteLoader/Main/Version.h - cat LiteLoader/Main/Version.h - shell: bash - - - name: Change LITELOADER_VERSION_STATUS_RELEASE - working-directory: ${{ env.GITHUB_WORKSPACE }} - if: startsWith(github.ref, 'refs/tags/') - run: | - sed -r -i 's/#define\s+LITELOADER_VERSION_STATUS\s+LITELOADER_VERSION_\w+/#define LITELOADER_VERSION_STATUS LITELOADER_VERSION_RELEASE/' LiteLoader/Main/Version.h - sed -r -i 's/#define\s+LITELOADER_VERSION_ACTIONS\s+.*/#define LITELOADER_VERSION_ACTIONS ${{ github.run_number }}\r/' LiteLoader/Main/Version.h - shell: bash - - - name: Get MSVC Path - working-directory: C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\ - run: echo "MSVC_VER=$(ls | tail -n 1)" >> $GITHUB_ENV - shell: bash - - - name: Configure CMake(MSVC) - run: | - cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - shell: cmd - - - name: Build - run: | - cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - shell: cmd - - - name: Configure CMake(ClangCL) - run: | - cmake -B ${{github.workspace}}/build_clang -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -T clangcl - shell: cmd - - - name: Build SymDBHelper - run: cmake --build ${{github.workspace}}/build_clang --config ${{env.BUILD_TYPE}} --target SymDBHelper - - - name: Pack Release - working-directory: ${{ env.GITHUB_WORKSPACE }} - run: | - cd Scripts - ./PackRelease.cmd action - shell: cmd - - - name: Move PDB to path - working-directory: ${{ env.GITHUB_WORKSPACE }} - run: | - mkdir PDB - cp x64/Release/*.pdb PDB - shell: bash - - - name: Upload LiteLoader - uses: actions/upload-artifact@v3.1.0 - with: - name: LiteLoader - path: ${{ github.workspace }}\RELEASE\ - - - name: Upload PDB - uses: actions/upload-artifact@v3.1.0 - with: - name: PDB - path: ${{ github.workspace }}\PDB - - - name: Prepare for creating Release - working-directory: ${{ env.GITHUB_WORKSPACE }} - id: rel - if: startsWith(github.ref, 'refs/tags/') - run: | - echo ::set-output name=tag::${GITHUB_REF#refs/*/} - mv LiteLoader.zip LiteLoader-${GITHUB_REF#refs/*/}.zip - shell: bash - - - name: Create New Release - uses: softprops/action-gh-release@v0.1.14 - if: startsWith(github.ref, 'refs/tags/') - with: - body_path: ${{ github.workspace }}\CHANGELOG.md - files: | - ${{ github.workspace }}\LiteLoader-${{ steps.rel.outputs.tag }}.zip - ${{ github.workspace }}\PDB.zip - env: - GITHUB_REPOSITORY: quizhizhe/LiteLoaderBDS-1.16.40 \ No newline at end of file diff --git a/.github/workflows/publish_release.yml b/.github/workflows/publish_release.yml new file mode 100644 index 0000000..5700463 --- /dev/null +++ b/.github/workflows/publish_release.yml @@ -0,0 +1,267 @@ +name: Release + +on: + workflow_dispatch: + inputs: + tag: + required: true + description: 'Release Tag' + status: + required: true + description: 'Release Status (beta, stable)' + +env: + BUILD_TYPE: Release + +jobs: + build: + name: Build + runs-on: windows-2022 + steps: + - name: Checkout repository + uses: actions/checkout@v3.2.0 + with: + fetch-depth: 1 + submodules: 'true' + + - name: Create tag + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + git tag | xargs git tag -d + git tag ${{ github.event.inputs.tag }} + git push origin ${{ github.event.inputs.tag }} + shell: bash + + - name: Cache BDS libraries + id: cache-bds-lib + uses: actions/cache@v3 + env: + cache-name: cache-bds-lib + with: + path: | + ${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_api.lib + ${{ env.GITHUB_WORKSPACE }}LiteLoader/Lib/bedrock_server_var.lib + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('scripts/LINK.txt') }} + + - name: Download BDS if not cached + if: steps.cache-bds-lib.outputs.cache-hit != 'true' + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + mkdir Tools/Server + ServerLink=$(cat 'scripts/LINK.txt') + curl -L -o Tools/Server/server.zip "$ServerLink" + unzip Tools/Server/server.zip -d Tools/Server/ > /dev/null + shell: bash + + - name: Build libraries if not cached + if: steps.cache-bds-lib.outputs.cache-hit != 'true' + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + cd Tools + LibraryBuilder.exe Server + mkdir ..\LiteLoader\lib + move bedrock_server_api.lib ..\LiteLoader\lib + move bedrock_server_var.lib ..\LiteLoader\lib + shell: cmd + + - name: Get short SHA + id: sha_short + run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Set LITELOADER_VERSION_COMMIT_SHA + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + sed -r -i 's/#define\s+LITELOADER_VERSION_COMMIT_SHA\s+.*/#define LITELOADER_VERSION_COMMIT_SHA ${{ steps.sha_short.outputs.sha_short }}\r/' LiteLoader/include/liteloader/Version.h + shell: bash + + - name: Set LITELOADER_VERSION_STATUS_BETA + working-directory: ${{ env.GITHUB_WORKSPACE }} + if: github.event.inputs.status == 'beta' + run: | + sed -r -i 's/#define\s+LITELOADER_VERSION_STATUS\s+LITELOADER_VERSION_\w+/#define LITELOADER_VERSION_STATUS LITELOADER_VERSION_BETA/' LiteLoader/include/liteloader/Version.h + shell: bash + + - name: Set LITELOADER_VERSION_STATUS_RELEASE + working-directory: ${{ env.GITHUB_WORKSPACE }} + if: github.event.inputs.status == 'stable' + run: | + sed -r -i 's/#define\s+LITELOADER_VERSION_STATUS\s+LITELOADER_VERSION_\w+/#define LITELOADER_VERSION_STATUS LITELOADER_VERSION_RELEASE/' LiteLoader/include/liteloader/Version.h + shell: bash + + - name: Configure CMake (MSVC) + run: | + cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + shell: cmd + + - name: Build all + run: | + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + shell: cmd + + - name: Pack output + run: | + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target PackOutput + shell: cmd + + - name: Pack SDK + run: | + cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --target PackSDK + shell: cmd + + - name: Configure CMake (ClangCL) + run: | + cmake -B ${{github.workspace}}/build_clang -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -T clangcl + shell: cmd + + - name: Build SymDBHelper + run: cmake --build ${{github.workspace}}/build_clang --config ${{env.BUILD_TYPE}} --target SymDBHelper + + - name: Compress resource packs for LiteLoaderBDS + run: | + cd build/output/plugins/LiteLoader/ResourcePacks + 7z a LiteLoaderBDS-CUI.tar LiteLoaderBDS-CUI + rm -r LiteLoaderBDS-CUI + shell: bash + + - name: Update C++ SDK + working-directory: ${{ env.GITHUB_WORKSPACE }} + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" + cd scripts + ./UploadSDK.cmd action release + env: + REPO_KEY: ${{secrets.PUSH_TOKEN}} + USERNAME: github-actions[bot] + shell: cmd + +# - name: Download LLMoney +# working-directory: ${{ env.GITHUB_WORKSPACE }} +# run: | +# git clone https://github.com/Tooth-Hub/LLMoney.git LLMoney-bin +# cp LLMoney-bin/LLMoney.dll build/output/plugins/ +# shell: bash + + - name: Upload LiteLoaderBDS + uses: actions/upload-artifact@v3.1.0 + with: + name: LiteLoaderBDS + path: | + ${{ github.workspace }}\build\output\LLPeEditor.exe + ${{ github.workspace }}\build\output\LLPreLoader.dll + ${{ github.workspace }}\build\output\LiteLoader.dll + ${{ github.workspace }}\build\output\plugins\lib\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\LangPack\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\CrashLogger_Daemon.exe + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Js.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Lua.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.NodeJs.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\7z\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\ParticleAPI.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\ResourcePacks\LiteLoaderBDS-CUI.tar + ${{ github.workspace }}\build\output\plugins\LiteLoader\PermissionAPI.dll +# ${{ github.workspace }}\build\output\plugins\LLMoney.dll + + - name: Upload PeEditor + uses: actions/upload-artifact@v3.1.0 + with: + name: PeEditor + path: ${{ github.workspace }}\build\output\LLPeEditor.exe + + - name: Upload PreLoader + uses: actions/upload-artifact@v3.1.0 + with: + name: PreLoader + path: ${{ github.workspace }}\build\output\LLPreLoader.dll + + - name: Upload LiteLoader + uses: actions/upload-artifact@v3.1.0 + with: + name: LiteLoader + path: | + ${{ github.workspace }}\build\output\LiteLoader.dll + ${{ github.workspace }}\build\output\plugins\lib\*.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LangPack\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\7z\ + ${{ github.workspace }}\build\output\plugins\LiteLoader\CrashLogger_Daemon.exe + + - name: Upload ScriptEngine + uses: actions/upload-artifact@v3.1.0 + with: + name: ScriptEngine + path: | + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Js.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.Lua.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\LiteLoader.NodeJs.dll + ${{ github.workspace }}\build\output\plugins\lib\node_modules.tar + ${{ github.workspace }}\build\output\plugins\lib\package.json + + - name: Upload LLParticle + uses: actions/upload-artifact@v3.1.0 + with: + name: LLParticle + path: | + ${{ github.workspace }}\build\output\plugins\LiteLoader\ParticleAPI.dll + ${{ github.workspace }}\build\output\plugins\LiteLoader\ResourcePacks\LiteLoaderBDS-CUI.tar + + - name: Upload LLPermission + uses: actions/upload-artifact@v3.1.0 + with: + name: LLPermission + path: ${{ github.workspace }}\build\output\plugins\LiteLoader\PermissionAPI.dll + + - name: Upload PDB files + uses: actions/upload-artifact@v3.1.0 + with: + name: PDB + path: ${{ github.workspace }}\build\pdb\ + + publish_release: + name: Publish release + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Download artifacts + uses: actions/download-artifact@v3 + with: + path: build/ + + - name: Pack artifacts + run: | + cd build/ + zip -9r LiteLoaderBDS.zip LiteLoaderBDS/* + zip -9r PDB.zip PDB/* + zip -9r Modules.zip PeEditor PreLoader LiteLoader ScriptEngine LLParticle LLPermission + shell: bash + + - name: Create release + if: github.event.inputs.status == 'stable' + uses: ncipollo/release-action@v1 + with: + prerelease: false + tag: ${{ github.event.inputs.tag }} + bodyFile: RELEASE_NOTES.md + artifacts: | + build/LiteLoaderBDS.zip + build/Modules.zip + build/PDB.zip + env: + GITHUB_REPOSITORY: quizhizhe/LiteLoaderBDS-1.16.40 + + - name: Create pre-release + if: github.event.inputs.status != 'stable' + uses: ncipollo/release-action@v1 + with: + prerelease: true + tag: ${{ github.event.inputs.tag }} + bodyFile: RELEASE_NOTES.md + artifacts: | + build/Modules.zip + build/PDB.zip + env: + GITHUB_REPOSITORY: quizhizhe/LiteLoaderBDS-1.16.40 diff --git a/.gitignore b/.gitignore index 8fed6d9..ea54988 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ **/bedrock_server_api.lib **/bedrock_server_var.lib **/SymDB_DelayLoadHelper.lib -LiteLoader/Lib/SymDBHelper.lib +LiteLoader/lib/SymDBHelper.lib **/*.lastcodeanalysissucceeded *.zip @@ -27,8 +27,8 @@ RELEASE/plugins/LiteLoader/pdb cmake-build-release/ /out -LiteLoader/Lib/Demangler.pdb -LiteLoader/Lib/Demangler.lib +LiteLoader/lib/Demangler.pdb +LiteLoader/lib/Demangler.lib /build **/Directory.build.props diff --git a/.gitmodules b/.gitmodules index ec5c972..a8b90a7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,9 @@ -[submodule "RELEASE/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI"] - path = RELEASE/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI +[submodule "assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI"] + path = assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI url = https://github.com/OEOTYAN/LiteLoaderBDS-CUI.git +[submodule "ParticleAPI-1.16.40"] + path = ParticleAPI-1.16.40 + url = https://github.com/quizhizhe/ParticleAPI-1.16.40 +[submodule "PermissionAPI-1.16.40"] + path = PermissionAPI-1.16.40 + url = https://github.com/quizhizhe/PermissionAPI-1.16.40 diff --git a/CMake/CleanOutput.cmake b/CMake/CleanOutput.cmake new file mode 100644 index 0000000..5bed533 --- /dev/null +++ b/CMake/CleanOutput.cmake @@ -0,0 +1,8 @@ +add_custom_target( + CleanOutput + COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/output + COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/pdb + COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/sdk + COMMENT "Cleaning output/pdb/sdk directory" + VERBATIM +) diff --git a/CMake/PackOutput.cmake b/CMake/PackOutput.cmake new file mode 100644 index 0000000..ec868c4 --- /dev/null +++ b/CMake/PackOutput.cmake @@ -0,0 +1,29 @@ +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/pdb) +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/output) +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/) + +add_custom_target(PackOutput) + +# Copy assets to output after build all. +add_custom_command( + TARGET PackOutput POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/assets/plugins ${CMAKE_BINARY_DIR}/output/plugins/ + COMMENT "Copying assets to output" + VERBATIM +) + +# Copy ScriptEngine BaseLib to output after build all. +add_custom_command( + TARGET PackOutput POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/ScriptEngine/assets ${CMAKE_BINARY_DIR}/output/plugins/lib/ + COMMENT "Copying ScriptEngine BaseLib to output" + VERBATIM +) + +# Copy LLPeEditor to output after build all. +add_custom_command( + TARGET PackOutput POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/LLPeEditor.exe ${CMAKE_BINARY_DIR}/output/ + COMMENT "Copying LLPeEditor to output" + VERBATIM +) diff --git a/CMake/PackSDK.cmake b/CMake/PackSDK.cmake new file mode 100644 index 0000000..263fc5d --- /dev/null +++ b/CMake/PackSDK.cmake @@ -0,0 +1,20 @@ +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk) +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk/include) +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk/include/llapi) +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk/tools) +execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/sdk/lib) + +add_custom_target(PackSDK) + +add_custom_command( + TARGET PackSDK POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LiteLoader_SOURCE_DIR}/include/llapi ${CMAKE_BINARY_DIR}/sdk/include/llapi + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LiteLoader_SOURCE_DIR}/third-party/include ${CMAKE_BINARY_DIR}/sdk/include + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/LibraryBuilder.exe ${CMAKE_BINARY_DIR}/sdk/tools/ + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/LLPeEditor.exe ${CMAKE_BINARY_DIR}/sdk/tools/ + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/SDK-submodule-add.cmd ${CMAKE_BINARY_DIR}/sdk/tools/ + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/SDK-submodule-update.cmd ${CMAKE_BINARY_DIR}/sdk/tools/ + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/Tools/SDK-subtree.cmd ${CMAKE_BINARY_DIR}/sdk/tools/ + COMMENT "Copying SDK files" + VERBATIM +) diff --git a/CMakeLists.txt b/CMakeLists.txt index be4fb73..09c3bab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,25 @@ cmake_minimum_required(VERSION 3.21) -project(LL-Parent) +project(LiteLoaderBDS) + +set(LiteLoader_SOURCE_DIR ${CMAKE_SOURCE_DIR}/LiteLoader) +set(Demangler_SOURCE_DIR ${CMAKE_SOURCE_DIR}/Tools/Demangler) +set(SCRIPTENGINE_SOURCE_DIR ${CMAKE_SOURCE_DIR}/ScriptEngine) +set(SCRIPTX_SOURCE_DIR ${CMAKE_SOURCE_DIR}/ScriptX) # Add sub directories -add_subdirectory(PreLoader) +add_subdirectory(LLPreLoader) add_subdirectory(LiteLoader) add_subdirectory(ScriptEngine/CMake/ScriptEngine-Lua) add_subdirectory(ScriptEngine/CMake/ScriptEngine-QuickJs) add_subdirectory(ScriptEngine/CMake/ScriptEngine-NodeJs) add_subdirectory(Tools/Demangler) -add_subdirectory(ScriptEngine/third-party/ScriptX/CMake/ScriptX-Lua) -add_subdirectory(ScriptEngine/third-party/ScriptX/CMake/ScriptX-QuickJs) -add_subdirectory(ScriptEngine/third-party/ScriptX/CMake/ScriptX-NodeJs) -add_subdirectory(Tools/SymDBHelper) \ No newline at end of file +add_subdirectory(Tools/ScriptX/CMake/ScriptX-Lua) +add_subdirectory(Tools/ScriptX/CMake/ScriptX-QuickJs) +add_subdirectory(Tools/ScriptX/CMake/ScriptX-NodeJs) +add_subdirectory(Tools/SymDBHelper) +add_subdirectory(ParticleAPI-1.16.40) +add_subdirectory(PermissionAPI-1.16.40/PermissionAPI) + +include(${CMAKE_SOURCE_DIR}/CMake/PackOutput.cmake) +include(${CMAKE_SOURCE_DIR}/CMake/PackSDK.cmake) +include(${CMAKE_SOURCE_DIR}/CMake/CleanOutput.cmake) \ No newline at end of file diff --git a/LLPreLoader/CMakeLists.txt b/LLPreLoader/CMakeLists.txt new file mode 100644 index 0000000..ab10e17 --- /dev/null +++ b/LLPreLoader/CMakeLists.txt @@ -0,0 +1,45 @@ +cmake_minimum_required(VERSION 3.21) +project(LLPreLoader) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_BUILD_TYPE Release) + +add_definitions(-D"NDEBUG" -D"_WINDOWS" -D"_USRDLL" -D"_WINDLL" -D"_UNICODE" -D"UNICODE") + +add_compile_options( + /permissive- /GS /GL /W0 /Gy /Zc:wchar_t /Zi /Gm- /O2 /sdl /Zc:inline /fp:precise + /errorReport:prompt /WX- /Zc:forScope /Gd /Oi /MD /FC /EHsc /nologo /diagnostics:column +) + +add_link_options( + /MANIFEST /LTCG:incremental /NXCOMPAT /DEBUG /DLL /MACHINE:X64 /OPT:REF /INCREMENTAL:NO + /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 +) + +aux_source_directory(${PROJECT_SOURCE_DIR}/third-party/rawpdb DIR_LIB_SRCS) +aux_source_directory(${PROJECT_SOURCE_DIR}/src PROJECT_SRCS) +aux_source_directory(${PROJECT_SOURCE_DIR}/include PROJECT_INCLUDES) + +add_library(LLPreLoader SHARED ${PROJECT_INCLUDES} ${PROJECT_SRCS} ${DIR_LIB_SRCS}) +target_link_libraries( + LLPreLoader SymDBHelper Demangler + "${LiteLoader_SOURCE_DIR}/third-party/lib/detours/detours.lib" +) + +target_include_directories( + LLPreLoader + PRIVATE ${LiteLoader_SOURCE_DIR}/include + PRIVATE ${LiteLoader_SOURCE_DIR}/third-party/include + PRIVATE ${PROJECT_SOURCE_DIR}/include + PRIVATE ${PROJECT_SOURCE_DIR}/third-party + PRIVATE ${Demangler_SOURCE_DIR}/include +) + +# Copy the dll and pdb to the output directory +add_custom_command( + TARGET LLPreLoader POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/output/ + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/pdb/ + COMMENT "Copying dll and pdb to output directory" + VERBATIM +) \ No newline at end of file diff --git a/PreLoader/FakeSymbol.hpp b/LLPreLoader/include/FakeSymbol.hpp similarity index 98% rename from PreLoader/FakeSymbol.hpp rename to LLPreLoader/include/FakeSymbol.hpp index aded1c7..e5913a8 100644 --- a/PreLoader/FakeSymbol.hpp +++ b/LLPreLoader/include/FakeSymbol.hpp @@ -2,7 +2,7 @@ #include #include -#include "../Tools/Demangler/include/MicrosoftDemangle.h" +#include "MicrosoftDemangle.h" namespace FakeSymbol { diff --git a/PreLoader/Logger.h b/LLPreLoader/include/Logger.h similarity index 88% rename from PreLoader/Logger.h rename to LLPreLoader/include/Logger.h index 56d8240..c11113f 100644 --- a/PreLoader/Logger.h +++ b/LLPreLoader/include/Logger.h @@ -2,12 +2,12 @@ #ifndef FMT_HEADER_ONLY #define FMT_HEADER_ONLY #endif -#include "../LiteLoader/Header/third-party/FMT/chrono.h" -#include "../LiteLoader/Header/third-party/FMT/color.h" -#include "../LiteLoader/Header/third-party/FMT/core.h" -#include "../LiteLoader/Header/third-party/FMT/os.h" -#include "../LiteLoader/Header/third-party/FMT/format.h" -#include "../LiteLoader/Header/third-party/Nlohmann/json.hpp" +#include "FMT/chrono.h" +#include "FMT/color.h" +#include "FMT/core.h" +#include "FMT/os.h" +#include "FMT/format.h" +#include "Nlohmann/json.hpp" #include #include #include diff --git a/PreLoader/Utils.h b/LLPreLoader/include/Utils.h similarity index 100% rename from PreLoader/Utils.h rename to LLPreLoader/include/Utils.h diff --git a/PreLoader/pch.h b/LLPreLoader/include/pch.h similarity index 94% rename from PreLoader/pch.h rename to LLPreLoader/include/pch.h index df83bbe..2c75cbb 100644 --- a/PreLoader/pch.h +++ b/LLPreLoader/include/pch.h @@ -9,7 +9,7 @@ #endif #define WIN32_LEAN_AND_MEAN #define NOMINMAX -#include +#include #include #include #include diff --git a/PreLoader/PreLoader.cpp b/LLPreLoader/src/PreLoader.cpp similarity index 98% rename from PreLoader/PreLoader.cpp rename to LLPreLoader/src/PreLoader.cpp index d19310a..71317d6 100644 --- a/PreLoader/PreLoader.cpp +++ b/LLPreLoader/src/PreLoader.cpp @@ -1,9 +1,9 @@ -#include "pch.h" -#include "Logger.h" +#include "../include/pch.h" +#include "../include/Logger.h" #include #include #include -#include +#include using std::string; using std::wstring; diff --git a/PreLoader/SymDB.cpp b/LLPreLoader/src/SymDB.cpp similarity index 94% rename from PreLoader/SymDB.cpp rename to LLPreLoader/src/SymDB.cpp index 951d958..c0969af 100644 --- a/PreLoader/SymDB.cpp +++ b/LLPreLoader/src/SymDB.cpp @@ -1,4 +1,4 @@ -#include "pch.h" +#include "../include/pch.h" #include #include #include @@ -10,22 +10,22 @@ #include #include -#include "../LiteLoader/Header/Utils/Hash.h" -#include "../LiteLoader/Header/third-party/detours/detours.h" -#include "../LiteLoader/Lib/third-party/rawpdb/PDB.h" -#include "../LiteLoader/Lib/third-party/rawpdb/PDB_RawFile.h" -#include "../LiteLoader/Lib/third-party/rawpdb/PDB_InfoStream.h" -#include "../LiteLoader/Lib/third-party/rawpdb/PDB_DBIStream.h" -#include "../LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_DisableWarningsPop.h" +#include "llapi/utils/Hash.h" +#include "detours/detours.h" +#include "rawpdb/PDB.h" +#include "rawpdb/PDB_RawFile.h" +#include "rawpdb/PDB_InfoStream.h" +#include "rawpdb/PDB_DBIStream.h" +#include "rawpdb/Foundation/PDB_DisableWarningsPop.h" -#include "../LiteLoader/Header/third-party/parallel_hashmap/phmap.h" +#include "parallel_hashmap/phmap.h" #include "Logger.h" -#include "../LiteLoader/Header/third-party/FMT/printf.h" +#include "FMT/printf.h" #include #include "Utils.h" -#include "FakeSymbol.hpp" +#include "../include/FakeSymbol.hpp" using std::list; using std::string, std::string_view; diff --git a/PreLoader/Utils.cpp b/LLPreLoader/src/Utils.cpp similarity index 92% rename from PreLoader/Utils.cpp rename to LLPreLoader/src/Utils.cpp index 961f860..2773e2f 100644 --- a/PreLoader/Utils.cpp +++ b/LLPreLoader/src/Utils.cpp @@ -1,5 +1,5 @@ -#include "pch.h" -#include "Utils.h" +#include "../include/pch.h" +#include "../include/Utils.h" #include std::string GetCallerModuleFileName(unsigned long FramesToSkip) { static const int maxFrameCount = 1; diff --git a/PreLoader/dllmain.cpp b/LLPreLoader/src/dllmain.cpp similarity index 92% rename from PreLoader/dllmain.cpp rename to LLPreLoader/src/dllmain.cpp index 3c49bb4..6f3fb07 100644 --- a/PreLoader/dllmain.cpp +++ b/LLPreLoader/src/dllmain.cpp @@ -1,6 +1,6 @@ // dllmain.cpp : 定义 DLL 应用程序的入口点。 -#include "pch.h" -#include "Logger.h" +#include "../include/pch.h" +#include "../include/Logger.h" void fixUpLibDir(); void loadDlls(); #pragma comment(linker, "/export:GetServerSymbol=LLPreLoader.dlsym_real") diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_ArrayView.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_ArrayView.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_ArrayView.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_ArrayView.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Assert.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Assert.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Assert.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Assert.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_BitOperators.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_BitOperators.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_BitOperators.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_BitOperators.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_BitUtil.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_BitUtil.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_BitUtil.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_BitUtil.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_DisableWarningsPop.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_DisableWarningsPop.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_DisableWarningsPop.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_DisableWarningsPop.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_DisableWarningsPush.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_DisableWarningsPush.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_DisableWarningsPush.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_DisableWarningsPush.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Forward.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Forward.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Forward.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Forward.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Log.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Log.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Log.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Log.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Macros.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Macros.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Macros.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Macros.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Memory.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Memory.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Memory.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Memory.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Move.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Move.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Move.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Move.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Platform.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Platform.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Platform.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Platform.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_PointerUtil.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_PointerUtil.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_PointerUtil.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_PointerUtil.h diff --git a/LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Warnings.h b/LLPreLoader/third-party/rawpdb/Foundation/PDB_Warnings.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/Foundation/PDB_Warnings.h rename to LLPreLoader/third-party/rawpdb/Foundation/PDB_Warnings.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB.cpp b/LLPreLoader/third-party/rawpdb/PDB.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB.cpp rename to LLPreLoader/third-party/rawpdb/PDB.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB.h b/LLPreLoader/third-party/rawpdb/PDB.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB.h rename to LLPreLoader/third-party/rawpdb/PDB.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_CoalescedMSFStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_CoalescedMSFStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_CoalescedMSFStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_CoalescedMSFStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_CoalescedMSFStream.h b/LLPreLoader/third-party/rawpdb/PDB_CoalescedMSFStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_CoalescedMSFStream.h rename to LLPreLoader/third-party/rawpdb/PDB_CoalescedMSFStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_DBIStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_DBIStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_DBIStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_DBIStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_DBIStream.h b/LLPreLoader/third-party/rawpdb/PDB_DBIStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_DBIStream.h rename to LLPreLoader/third-party/rawpdb/PDB_DBIStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_DBITypes.cpp b/LLPreLoader/third-party/rawpdb/PDB_DBITypes.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_DBITypes.cpp rename to LLPreLoader/third-party/rawpdb/PDB_DBITypes.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_DBITypes.h b/LLPreLoader/third-party/rawpdb/PDB_DBITypes.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_DBITypes.h rename to LLPreLoader/third-party/rawpdb/PDB_DBITypes.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_DirectMSFStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_DirectMSFStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_DirectMSFStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_DirectMSFStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_DirectMSFStream.h b/LLPreLoader/third-party/rawpdb/PDB_DirectMSFStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_DirectMSFStream.h rename to LLPreLoader/third-party/rawpdb/PDB_DirectMSFStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_ErrorCodes.h b/LLPreLoader/third-party/rawpdb/PDB_ErrorCodes.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_ErrorCodes.h rename to LLPreLoader/third-party/rawpdb/PDB_ErrorCodes.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_GlobalSymbolStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_GlobalSymbolStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_GlobalSymbolStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_GlobalSymbolStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_GlobalSymbolStream.h b/LLPreLoader/third-party/rawpdb/PDB_GlobalSymbolStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_GlobalSymbolStream.h rename to LLPreLoader/third-party/rawpdb/PDB_GlobalSymbolStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_IPIStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_IPIStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_IPIStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_IPIStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_IPIStream.h b/LLPreLoader/third-party/rawpdb/PDB_IPIStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_IPIStream.h rename to LLPreLoader/third-party/rawpdb/PDB_IPIStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_IPITypes.h b/LLPreLoader/third-party/rawpdb/PDB_IPITypes.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_IPITypes.h rename to LLPreLoader/third-party/rawpdb/PDB_IPITypes.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_ImageSectionStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_ImageSectionStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_ImageSectionStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_ImageSectionStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_ImageSectionStream.h b/LLPreLoader/third-party/rawpdb/PDB_ImageSectionStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_ImageSectionStream.h rename to LLPreLoader/third-party/rawpdb/PDB_ImageSectionStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_InfoStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_InfoStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_InfoStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_InfoStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_InfoStream.h b/LLPreLoader/third-party/rawpdb/PDB_InfoStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_InfoStream.h rename to LLPreLoader/third-party/rawpdb/PDB_InfoStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_ModuleInfoStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_ModuleInfoStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_ModuleInfoStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_ModuleInfoStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_ModuleInfoStream.h b/LLPreLoader/third-party/rawpdb/PDB_ModuleInfoStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_ModuleInfoStream.h rename to LLPreLoader/third-party/rawpdb/PDB_ModuleInfoStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_ModuleSymbolStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_ModuleSymbolStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_ModuleSymbolStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_ModuleSymbolStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_ModuleSymbolStream.h b/LLPreLoader/third-party/rawpdb/PDB_ModuleSymbolStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_ModuleSymbolStream.h rename to LLPreLoader/third-party/rawpdb/PDB_ModuleSymbolStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_PCH.cpp b/LLPreLoader/third-party/rawpdb/PDB_PCH.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_PCH.cpp rename to LLPreLoader/third-party/rawpdb/PDB_PCH.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_PCH.h b/LLPreLoader/third-party/rawpdb/PDB_PCH.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_PCH.h rename to LLPreLoader/third-party/rawpdb/PDB_PCH.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_PublicSymbolStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_PublicSymbolStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_PublicSymbolStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_PublicSymbolStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_PublicSymbolStream.h b/LLPreLoader/third-party/rawpdb/PDB_PublicSymbolStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_PublicSymbolStream.h rename to LLPreLoader/third-party/rawpdb/PDB_PublicSymbolStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_RawFile.cpp b/LLPreLoader/third-party/rawpdb/PDB_RawFile.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_RawFile.cpp rename to LLPreLoader/third-party/rawpdb/PDB_RawFile.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_RawFile.h b/LLPreLoader/third-party/rawpdb/PDB_RawFile.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_RawFile.h rename to LLPreLoader/third-party/rawpdb/PDB_RawFile.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_SectionContributionStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_SectionContributionStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_SectionContributionStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_SectionContributionStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_SectionContributionStream.h b/LLPreLoader/third-party/rawpdb/PDB_SectionContributionStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_SectionContributionStream.h rename to LLPreLoader/third-party/rawpdb/PDB_SectionContributionStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_SourceFileStream.cpp b/LLPreLoader/third-party/rawpdb/PDB_SourceFileStream.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_SourceFileStream.cpp rename to LLPreLoader/third-party/rawpdb/PDB_SourceFileStream.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_SourceFileStream.h b/LLPreLoader/third-party/rawpdb/PDB_SourceFileStream.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_SourceFileStream.h rename to LLPreLoader/third-party/rawpdb/PDB_SourceFileStream.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_Types.cpp b/LLPreLoader/third-party/rawpdb/PDB_Types.cpp similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_Types.cpp rename to LLPreLoader/third-party/rawpdb/PDB_Types.cpp diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_Types.h b/LLPreLoader/third-party/rawpdb/PDB_Types.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_Types.h rename to LLPreLoader/third-party/rawpdb/PDB_Types.h diff --git a/LiteLoader/Lib/third-party/rawpdb/PDB_Util.h b/LLPreLoader/third-party/rawpdb/PDB_Util.h similarity index 100% rename from LiteLoader/Lib/third-party/rawpdb/PDB_Util.h rename to LLPreLoader/third-party/rawpdb/PDB_Util.h diff --git a/LiteLoader/.gitignore b/LiteLoader/.gitignore index 1127b8d..14ac266 100644 --- a/LiteLoader/.gitignore +++ b/LiteLoader/.gitignore @@ -2,4 +2,4 @@ /cmake-build-release/ /cmake-build-debug/ /.idea/ -Lib/LiteLoader.lib \ No newline at end of file +lib/LiteLoader.lib \ No newline at end of file diff --git a/LiteLoader/CMakeLists.txt b/LiteLoader/CMakeLists.txt index d6ffaff..4de8e0c 100644 --- a/LiteLoader/CMakeLists.txt +++ b/LiteLoader/CMakeLists.txt @@ -4,67 +4,90 @@ project(LiteLoader) set(CMAKE_CXX_STANDARD 20) set(CMAKE_BUILD_TYPE Release) # Always uses Release mode to build BDS plugin for ABI Compatibility -set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/x64/) - -set(TARGET_DIR ${CMAKE_SOURCE_DIR}/x64/Release/) - -file(GLOB_RECURSE SRC_FILES - ${PROJECT_SOURCE_DIR}/Lib/third-party/nbt-cpp/*.cpp - ${PROJECT_SOURCE_DIR}/Header/*.cpp - ${PROJECT_SOURCE_DIR}/Header/*.hpp - ${PROJECT_SOURCE_DIR}/Header/*.h - ${PROJECT_SOURCE_DIR}/Kernel/*.cpp - ${PROJECT_SOURCE_DIR}/Kernel/*.hpp - ${PROJECT_SOURCE_DIR}/Kernel/*.h - ${PROJECT_SOURCE_DIR}/Main/*.cpp - ${PROJECT_SOURCE_DIR}/Main/*.hpp - ${PROJECT_SOURCE_DIR}/Main/*.h - ${PROJECT_SOURCE_DIR}/Resource/*.rc - ${PROJECT_SOURCE_DIR}/Resource/*.h +file( + GLOB_RECURSE SRC_FILES + ${PROJECT_SOURCE_DIR}/third-party/include/*.h + ${PROJECT_SOURCE_DIR}/third-party/include/*.hpp + ${PROJECT_SOURCE_DIR}/include/*.h + ${PROJECT_SOURCE_DIR}/include/*.hpp + ${PROJECT_SOURCE_DIR}/src/*.cpp + ${PROJECT_SOURCE_DIR}/src/*.hpp + ${PROJECT_SOURCE_DIR}/src/*.h + ${PROJECT_SOURCE_DIR}/src/*.rc ) -add_definitions( - -DUNICODE -DNDEBUG -DLITELOADER_EXPORTS -DWIN32_LEAN_AND_MEAN - -DCPPHTTPLIB_OPENSSL_SUPPORT -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS - -D_USRDLL -D_AMD64_ -DNOMINMAX +# third-party source files +file(GLOB_RECURSE THIRD_PARTY_SRC_FILES ${PROJECT_SOURCE_DIR}/third-party/src/*) + +add_library(LiteLoader SHARED ${SRC_FILES} ${THIRD_PARTY_SRC_FILES}) + +# Replace Compile Flag /EHsc to /EHa +string(REPLACE "/EHsc" "/EHa" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + +target_compile_options( + LiteLoader + PRIVATE /permissive- /MD /MP /analyze:external- /GS /GL /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /sdl /Zc:inline /fp:precise /errorReport:prompt /WX- /Zc:forScope /Gd /Oi /FC /nologo /Ot /diagnostics:column /utf-8 ) -add_compile_options( - /permissive /MP /analyze:external- /GS /GL /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /sdl /Zc:inline /fp:precise - /external:W1 /errorReport:prompt /WX- /Zc:forScope /Gd /Oi /MD /FC /EHa /nologo /Ot /diagnostics:column - /utf-8 +target_compile_definitions( + LiteLoader + PRIVATE -DUNICODE -DNDEBUG -DLITELOADER_EXPORTS -DWIN32_LEAN_AND_MEAN -DCPPHTTPLIB_OPENSSL_SUPPORT -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -D_USRDLL -D_AMD64_ -DNOMINMAX ) -add_link_options( - /MANIFEST /LTCG:incremental /NXCOMPAT /DEBUG:FULL /DLL /MACHINE:X64 /OPT:REF /INCREMENTAL:NO /SUBSYSTEM:CONSOLE - /MANIFESTUAC:NO /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 - /DELAYLOAD:bedrock_server.dll # use delayload to import BDS APIs manually(bedrock_server.dll does not need to exist) +# use delayload to import BDS APIs manually(bedrock_server.dll does not need to exist) +target_link_options( + LiteLoader + PRIVATE /MANIFEST /LTCG:incremental /NXCOMPAT /DEBUG:FULL /DLL /MACHINE:X64 /OPT:REF /INCREMENTAL:NO /SUBSYSTEM:CONSOLE /MANIFESTUAC:NO /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 /DELAYLOAD:bedrock_server.dll ) -include_directories(${PROJECT_SOURCE_DIR}) -include_directories(${PROJECT_SOURCE_DIR}/Header) -include_directories(${PROJECT_SOURCE_DIR}/Header/third-party) -include_directories(${CMAKE_SOURCE_DIR}) - -link_directories(${PROJECT_SOURCE_DIR}) -link_directories(${CMAKE_SOURCE_DIR}/x64/Release) - -add_library(LiteLoader SHARED ${SRC_FILES}) - -target_link_libraries(LiteLoader LLPreLoader - "${PROJECT_SOURCE_DIR}/Lib/third-party/leveldb/leveldb.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/openssl/libcrypto.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/openssl/libssl.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/SQLiteCpp/SQLiteCpp.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/SQLiteCpp/sqlite3.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/mysql/mysqlclient.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/compact_enc_det/ced.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/dyncall/dyncall_s.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/dyncall/dyncallback_s.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/dyncall/dynload_s.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/compact_enc_det/ced.lib" - "${PROJECT_SOURCE_DIR}/Lib/third-party/dbghelp/dbghelp.lib" +target_link_libraries( + LiteLoader + "${PROJECT_SOURCE_DIR}/third-party/lib/leveldb/leveldb.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/openssl/libcrypto.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/openssl/libssl.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/SQLiteCpp/SQLiteCpp.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/SQLiteCpp/sqlite3.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/mysql/mysqlclient.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/compact_enc_det/ced.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/dyncall/dyncall_s.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/dyncall/dyncallback_s.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/dyncall/dynload_s.lib" + "${PROJECT_SOURCE_DIR}/third-party/lib/dbghelp/dbghelp.lib" # Please make sure that the BDS APIs ImportLibrary is at the bottom of the list to ensure proper linking. "${PROJECT_SOURCE_DIR}/Lib/bedrock_server_api.lib" "${PROJECT_SOURCE_DIR}/Lib/bedrock_server_var.lib" + LLPreLoader ) + +target_include_directories( + LiteLoader SYSTEM + PRIVATE ${PROJECT_SOURCE_DIR}/third-party/include +) + +target_include_directories( + LiteLoader + PRIVATE ${PROJECT_SOURCE_DIR}/include/ + PRIVATE ${CMAKE_SOURCE_DIR} +) + +add_custom_command( + TARGET LiteLoader PRE_BUILD + COMMAND ${CMAKE_SOURCE_DIR}/scripts/PrepareLibraries.cmd ${CMAKE_SOURCE_DIR} +) + +# Copy the built DLL and PDB to the output directory +add_custom_command( + TARGET LiteLoader POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/output/ + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/pdb/ + COMMENT "Copying LiteLoader DLL and PDB to output directory" + VERBATIM +) + +# Copy the built lib to the SDK directory +add_custom_command( + TARGET LiteLoader POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/sdk/lib/ + COMMENT "Copying LiteLoader Lib to SDK directory" + VERBATIM +) \ No newline at end of file diff --git a/LiteLoader/Header/Impl/ObjectivePacketHelper.h b/LiteLoader/Header/Impl/ObjectivePacketHelper.h deleted file mode 100644 index 5da8ea7..0000000 --- a/LiteLoader/Header/Impl/ObjectivePacketHelper.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#include "../Global.h" - -LIAPI uint64_t NewScoreId(); \ No newline at end of file diff --git a/LiteLoader/Header/third-party/entt/config/config.h b/LiteLoader/Header/third-party/entt/config/config.h deleted file mode 100644 index c2276c5..0000000 --- a/LiteLoader/Header/third-party/entt/config/config.h +++ /dev/null @@ -1,85 +0,0 @@ -#ifndef ENTT_CONFIG_CONFIG_H -#define ENTT_CONFIG_CONFIG_H - - -#if defined(__cpp_exceptions) && !defined(ENTT_NOEXCEPTION) -# define ENTT_NOEXCEPT noexcept -# define ENTT_THROW throw -# define ENTT_TRY try -# define ENTT_CATCH catch(...) -#else -# define ENTT_NOEXCEPT -# define ENTT_THROW -# define ENTT_TRY if(true) -# define ENTT_CATCH if(false) -#endif - - -#if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606L -# include -# define ENTT_LAUNDER(expr) std::launder(expr) -#else -# define ENTT_LAUNDER(expr) expr -#endif - - -#ifndef ENTT_USE_ATOMIC -# define ENTT_MAYBE_ATOMIC(Type) Type -#else -# include -# define ENTT_MAYBE_ATOMIC(Type) std::atomic -#endif - - -#ifndef ENTT_ID_TYPE -# include -# define ENTT_ID_TYPE std::uint32_t -#endif - - -#ifdef ENTT_SPARSE_PAGE - static_assert(ENTT_SPARSE_PAGE && ((ENTT_SPARSE_PAGE & (ENTT_SPARSE_PAGE - 1)) == 0), "ENTT_SPARSE_PAGE must be a power of two"); -#else -# define ENTT_SPARSE_PAGE 4096 -#endif - - -#ifdef ENTT_PACKED_PAGE -static_assert(ENTT_PACKED_PAGE && ((ENTT_PACKED_PAGE & (ENTT_PACKED_PAGE - 1)) == 0), "ENTT_PACKED_PAGE must be a power of two"); -#else -# define ENTT_PACKED_PAGE 1024 -#endif - - -#ifdef ENTT_DISABLE_ASSERT -# undef ENTT_ASSERT -# define ENTT_ASSERT(...) (void(0)) -#elif !defined ENTT_ASSERT -# include -# define ENTT_ASSERT(condition, ...) assert(condition) -#endif - - -#ifdef ENTT_NO_ETO -# include -# define ENTT_IGNORE_IF_EMPTY std::false_type -#else -# include -# define ENTT_IGNORE_IF_EMPTY std::true_type -#endif - - -#ifndef ENTT_STANDARD_CPP -# if defined __clang__ || defined __GNUC__ -# define ENTT_PRETTY_FUNCTION __PRETTY_FUNCTION__ -# define ENTT_PRETTY_FUNCTION_PREFIX '=' -# define ENTT_PRETTY_FUNCTION_SUFFIX ']' -# elif defined _MSC_VER -# define ENTT_PRETTY_FUNCTION __FUNCSIG__ -# define ENTT_PRETTY_FUNCTION_PREFIX '<' -# define ENTT_PRETTY_FUNCTION_SUFFIX '>' -# endif -#endif - - -#endif diff --git a/LiteLoader/Header/third-party/entt/config/version.h b/LiteLoader/Header/third-party/entt/config/version.h deleted file mode 100644 index e7b9571..0000000 --- a/LiteLoader/Header/third-party/entt/config/version.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef ENTT_CONFIG_VERSION_H -#define ENTT_CONFIG_VERSION_H - - -#define ENTT_VERSION_MAJOR 3 -#define ENTT_VERSION_MINOR 8 -#define ENTT_VERSION_PATCH 1 - - -#endif diff --git a/LiteLoader/Header/third-party/entt/core/any.hpp b/LiteLoader/Header/third-party/entt/core/any.hpp deleted file mode 100644 index af3b35b..0000000 --- a/LiteLoader/Header/third-party/entt/core/any.hpp +++ /dev/null @@ -1,456 +0,0 @@ -#ifndef ENTT_CORE_ANY_HPP -#define ENTT_CORE_ANY_HPP - - -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/utility.hpp" -#include "fwd.hpp" -#include "type_info.hpp" -#include "type_traits.hpp" - - -namespace entt { - - -/** - * @brief A SBO friendly, type-safe container for single values of any type. - * @tparam Len Size of the storage reserved for the small buffer optimization. - * @tparam Align Optional alignment requirement. - */ -template -class basic_any { - enum class operation: std::uint8_t { COPY, MOVE, DTOR, COMP, ADDR, CADDR, TYPE }; - enum class policy: std::uint8_t { OWNER, REF, CREF }; - - using storage_type = std::aligned_storage_t; - using vtable_type = const void *(const operation, const basic_any &, void *); - - template - static constexpr bool in_situ = Len && alignof(Type) <= alignof(storage_type) && sizeof(Type) <= sizeof(storage_type) && std::is_nothrow_move_constructible_v; - - template - [[nodiscard]] static constexpr policy type_to_policy() { - if constexpr(std::is_lvalue_reference_v) { - if constexpr(std::is_const_v>) { - return policy::CREF; - } else { - return policy::REF; - } - } else { - return policy::OWNER; - } - } - - template - [[nodiscard]] static bool compare(const void *lhs, const void *rhs) { - if constexpr(!std::is_function_v && is_equality_comparable_v) { - return *static_cast(lhs) == *static_cast(rhs); - } else { - return lhs == rhs; - } - } - - template - static const void * basic_vtable([[maybe_unused]] const operation op, [[maybe_unused]] const basic_any &from, [[maybe_unused]] void *to) { - static_assert(std::is_same_v>, Type>, "Invalid type"); - - if constexpr(!std::is_void_v) { - const Type *instance = (in_situ && from.mode == policy::OWNER) - ? ENTT_LAUNDER(reinterpret_cast(&from.storage)) - : static_cast(from.instance); - - switch(op) { - case operation::COPY: - if constexpr(std::is_copy_constructible_v) { - static_cast(to)->emplace(*instance); - } - break; - case operation::MOVE: - if constexpr(in_situ) { - if(from.mode == policy::OWNER) { - return new (&static_cast(to)->storage) Type{std::move(*const_cast(instance))}; - } - } - - return (static_cast(to)->instance = std::exchange(const_cast(from).instance, nullptr)); - case operation::DTOR: - if(from.mode == policy::OWNER) { - if constexpr(in_situ) { - instance->~Type(); - } else if constexpr(std::is_array_v) { - delete[] instance; - } else { - delete instance; - } - } - break; - case operation::COMP: - return compare(instance, (*static_cast(to))->data()) ? to : nullptr; - case operation::ADDR: - if(from.mode == policy::CREF) { - return nullptr; - } - [[fallthrough]]; - case operation::CADDR: - return instance; - case operation::TYPE: - *static_cast(to) = type_id(); - break; - } - } - - return nullptr; - } - - template - void initialize([[maybe_unused]] Args &&... args) { - if constexpr(!std::is_void_v) { - if constexpr(std::is_lvalue_reference_v) { - static_assert(sizeof...(Args) == 1u && (std::is_lvalue_reference_v && ...), "Invalid arguments"); - instance = (std::addressof(args), ...); - } else if constexpr(in_situ) { - if constexpr(sizeof...(Args) != 0u && std::is_aggregate_v) { - new (&storage) Type{std::forward(args)...}; - } else { - new (&storage) Type(std::forward(args)...); - } - } else { - if constexpr(sizeof...(Args) != 0u && std::is_aggregate_v) { - instance = new Type{std::forward(args)...}; - } else { - instance = new Type(std::forward(args)...); - } - } - } - } - - basic_any(const basic_any &other, const policy pol) ENTT_NOEXCEPT - : instance{other.data()}, - vtable{other.vtable}, - mode{pol} - {} - -public: - /*! @brief Size of the internal storage. */ - static constexpr auto length = Len; - /*! @brief Alignment requirement. */ - static constexpr auto alignment = Align; - - /*! @brief Default constructor. */ - basic_any() ENTT_NOEXCEPT - : instance{}, - vtable{&basic_vtable}, - mode{policy::OWNER} - {} - - /** - * @brief Constructs a wrapper by directly initializing the new object. - * @tparam Type Type of object to use to initialize the wrapper. - * @tparam Args Types of arguments to use to construct the new instance. - * @param args Parameters to use to construct the instance. - */ - template - explicit basic_any(std::in_place_type_t, Args &&... args) - : instance{}, - vtable{&basic_vtable>>}, - mode{type_to_policy()} - { - initialize(std::forward(args)...); - } - - /** - * @brief Constructs a wrapper that holds an unmanaged object. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - */ - template - basic_any(std::reference_wrapper value) ENTT_NOEXCEPT - : basic_any{} - { - // invokes deprecated assignment operator (and avoids issues with vs2017) - *this = value; - } - - /** - * @brief Constructs a wrapper from a given value. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - */ - template, basic_any>>> - basic_any(Type &&value) - : instance{}, - vtable{&basic_vtable>}, - mode{policy::OWNER} - { - initialize>(std::forward(value)); - } - - /** - * @brief Copy constructor. - * @param other The instance to copy from. - */ - basic_any(const basic_any &other) - : instance{}, - vtable{&basic_vtable}, - mode{policy::OWNER} - { - other.vtable(operation::COPY, other, this); - } - - /** - * @brief Move constructor. - * @param other The instance to move from. - */ - basic_any(basic_any &&other) ENTT_NOEXCEPT - : instance{}, - vtable{other.vtable}, - mode{other.mode} - { - vtable(operation::MOVE, other, this); - } - - /*! @brief Frees the internal storage, whatever it means. */ - ~basic_any() { - vtable(operation::DTOR, *this, nullptr); - } - - /** - * @brief Copy assignment operator. - * @param other The instance to copy from. - * @return This any object. - */ - basic_any & operator=(const basic_any &other) { - reset(); - other.vtable(operation::COPY, other, this); - return *this; - } - - /** - * @brief Move assignment operator. - * @param other The instance to move from. - * @return This any object. - */ - basic_any & operator=(basic_any &&other) ENTT_NOEXCEPT { - std::exchange(vtable, other.vtable)(operation::DTOR, *this, nullptr); - other.vtable(operation::MOVE, other, this); - mode = other.mode; - return *this; - } - - /** - * @brief Value assignment operator. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - * @return This any object. - */ - template - [[deprecated("Use std::in_place_type, entt::make_any, emplace or forward_as_any instead")]] - basic_any & operator=(std::reference_wrapper value) ENTT_NOEXCEPT { - emplace(value.get()); - return *this; - } - - /** - * @brief Value assignment operator. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - * @return This any object. - */ - template - std::enable_if_t, basic_any>, basic_any &> - operator=(Type &&value) { - emplace>(std::forward(value)); - return *this; - } - - /** - * @brief Returns the type of the contained object. - * @return The type of the contained object, if any. - */ - [[nodiscard]] type_info type() const ENTT_NOEXCEPT { - type_info info{}; - vtable(operation::TYPE, *this, &info); - return info; - } - - /** - * @brief Returns an opaque pointer to the contained instance. - * @return An opaque pointer the contained instance, if any. - */ - [[nodiscard]] const void * data() const ENTT_NOEXCEPT { - return vtable(operation::CADDR, *this, nullptr); - } - - /*! @copydoc data */ - [[nodiscard]] void * data() ENTT_NOEXCEPT { - return const_cast(vtable(operation::ADDR, *this, nullptr)); - } - - /** - * @brief Replaces the contained object by creating a new instance directly. - * @tparam Type Type of object to use to initialize the wrapper. - * @tparam Args Types of arguments to use to construct the new instance. - * @param args Parameters to use to construct the instance. - */ - template - void emplace(Args &&... args) { - std::exchange(vtable, &basic_vtable>>)(operation::DTOR, *this, nullptr); - mode = type_to_policy(); - initialize(std::forward(args)...); - } - - /*! @brief Destroys contained object */ - void reset() { - std::exchange(vtable, &basic_vtable)(operation::DTOR, *this, nullptr); - mode = policy::OWNER; - } - - /** - * @brief Returns false if a wrapper is empty, true otherwise. - * @return False if the wrapper is empty, true otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(vtable(operation::CADDR, *this, nullptr) == nullptr); - } - - /** - * @brief Checks if two wrappers differ in their content. - * @param other Wrapper with which to compare. - * @return False if the two objects differ in their content, true otherwise. - */ - bool operator==(const basic_any &other) const ENTT_NOEXCEPT { - const basic_any *trampoline = &other; - return type() == other.type() && (vtable(operation::COMP, *this, &trampoline) || !other.data()); - } - - /** - * @brief Aliasing constructor. - * @return A wrapper that shares a reference to an unmanaged object. - */ - [[nodiscard]] basic_any as_ref() ENTT_NOEXCEPT { - return basic_any{*this, (mode == policy::CREF ? policy::CREF : policy::REF)}; - } - - /*! @copydoc as_ref */ - [[nodiscard]] basic_any as_ref() const ENTT_NOEXCEPT { - return basic_any{*this, policy::CREF}; - } - - /** - * @brief Returns true if a wrapper owns its object, false otherwise. - * @return True if the wrapper owns its object, false otherwise. - */ - [[nodiscard]] bool owner() const ENTT_NOEXCEPT { - return (mode == policy::OWNER); - } - -private: - union { const void *instance; storage_type storage; }; - vtable_type *vtable; - policy mode; -}; - - -/** - * @brief Checks if two wrappers differ in their content. - * @tparam Len Size of the storage reserved for the small buffer optimization. - * @tparam Align Alignment requirement. - * @param lhs A wrapper, either empty or not. - * @param rhs A wrapper, either empty or not. - * @return True if the two wrappers differ in their content, false otherwise. - */ -template -[[nodiscard]] inline bool operator!=(const basic_any &lhs, const basic_any &rhs) ENTT_NOEXCEPT { - return !(lhs == rhs); -} - - -/** - * @brief Performs type-safe access to the contained object. - * @tparam Type Type to which conversion is required. - * @tparam Len Size of the storage reserved for the small buffer optimization. - * @tparam Align Alignment requirement. - * @param data Target any object. - * @return The element converted to the requested type. - */ -template -Type any_cast(const basic_any &data) ENTT_NOEXCEPT { - const auto * const instance = any_cast>(&data); - ENTT_ASSERT(instance, "Invalid instance"); - return static_cast(*instance); -} - - -/*! @copydoc any_cast */ -template -Type any_cast(basic_any &data) ENTT_NOEXCEPT { - // forces const on non-reference types to make them work also with wrappers for const references - auto * const instance = any_cast>(&data); - ENTT_ASSERT(instance, "Invalid instance"); - return static_cast(*instance); -} - - -/*! @copydoc any_cast */ -template -Type any_cast(basic_any &&data) ENTT_NOEXCEPT { - // forces const on non-reference types to make them work also with wrappers for const references - auto * const instance = any_cast>(&data); - ENTT_ASSERT(instance, "Invalid instance"); - return static_cast(std::move(*instance)); -} - - -/*! @copydoc any_cast */ -template -const Type * any_cast(const basic_any *data) ENTT_NOEXCEPT { - return (data->type() == type_id() ? static_cast(data->data()) : nullptr); -} - - -/*! @copydoc any_cast */ -template -Type * any_cast(basic_any *data) ENTT_NOEXCEPT { - // last attempt to make wrappers for const references return their values - return (data->type() == type_id() ? static_cast(static_cast, Type> *>(data)->data()) : nullptr); -} - - -/** - * @brief Constructs a wrapper from a given type, passing it all arguments. - * @tparam Type Type of object to use to initialize the wrapper. - * @tparam Len Size of the storage reserved for the small buffer optimization. - * @tparam Align Optional alignment requirement. - * @tparam Args Types of arguments to use to construct the new instance. - * @param args Parameters to use to construct the instance. - * @return A properly initialized wrapper for an object of the given type. - */ -template::length, std::size_t Align = basic_any::alignment, typename... Args> -basic_any make_any(Args &&... args) { - return basic_any{std::in_place_type, std::forward(args)...}; -} - - -/** - * @brief Forwards its argument and avoids copies for lvalue references. - * @tparam Len Size of the storage reserved for the small buffer optimization. - * @tparam Align Optional alignment requirement. - * @tparam Type Type of argument to use to construct the new instance. - * @param value Parameter to use to construct the instance. - * @return A properly initialized and not necessarily owning wrapper. - */ -template::length, std::size_t Align = basic_any::alignment, typename Type> -basic_any forward_as_any(Type &&value) { - return basic_any{std::in_place_type, std::decay_t, Type>>, std::forward(value)}; -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/core/attribute.h b/LiteLoader/Header/third-party/entt/core/attribute.h deleted file mode 100644 index 4a7a092..0000000 --- a/LiteLoader/Header/third-party/entt/core/attribute.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef ENTT_CORE_ATTRIBUTE_H -#define ENTT_CORE_ATTRIBUTE_H - - -#ifndef ENTT_EXPORT -# if defined _WIN32 || defined __CYGWIN__ || defined _MSC_VER -# define ENTT_EXPORT __declspec(dllexport) -# define ENTT_IMPORT __declspec(dllimport) -# define ENTT_HIDDEN -# elif defined __GNUC__ && __GNUC__ >= 4 -# define ENTT_EXPORT __attribute__((visibility("default"))) -# define ENTT_IMPORT __attribute__((visibility("default"))) -# define ENTT_HIDDEN __attribute__((visibility("hidden"))) -# else /* Unsupported compiler */ -# define ENTT_EXPORT -# define ENTT_IMPORT -# define ENTT_HIDDEN -# endif -#endif - - -#ifndef ENTT_API -# if defined ENTT_API_EXPORT -# define ENTT_API ENTT_EXPORT -# elif defined ENTT_API_IMPORT -# define ENTT_API ENTT_IMPORT -# else /* No API */ -# define ENTT_API -# endif -#endif - - -#endif diff --git a/LiteLoader/Header/third-party/entt/core/hashed_string.hpp b/LiteLoader/Header/third-party/entt/core/hashed_string.hpp deleted file mode 100644 index 978d2cb..0000000 --- a/LiteLoader/Header/third-party/entt/core/hashed_string.hpp +++ /dev/null @@ -1,269 +0,0 @@ -#ifndef ENTT_CORE_HASHED_STRING_HPP -#define ENTT_CORE_HASHED_STRING_HPP - - -#include -#include -#include "../config/config.h" -#include "fwd.hpp" - - -namespace entt { - - -/** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - - -namespace internal { - - -template -struct fnv1a_traits; - - -template<> -struct fnv1a_traits { - using type = std::uint32_t; - static constexpr std::uint32_t offset = 2166136261; - static constexpr std::uint32_t prime = 16777619; -}; - - -template<> -struct fnv1a_traits { - using type = std::uint64_t; - static constexpr std::uint64_t offset = 14695981039346656037ull; - static constexpr std::uint64_t prime = 1099511628211ull; -}; - - -} - - -/** - * Internal details not to be documented. - * @endcond - */ - - -/** - * @brief Zero overhead unique identifier. - * - * A hashed string is a compile-time tool that allows users to use - * human-readable identifers in the codebase while using their numeric - * counterparts at runtime.
- * Because of that, a hashed string can also be used in constant expressions if - * required. - * - * @tparam Char Character type. - */ -template -class basic_hashed_string { - using traits_type = internal::fnv1a_traits; - - struct const_wrapper { - // non-explicit constructor on purpose - constexpr const_wrapper(const Char *curr) ENTT_NOEXCEPT: str{curr} {} - const Char *str; - }; - - // Fowler–Noll–Vo hash function v. 1a - the good - [[nodiscard]] static constexpr id_type helper(const Char *curr) ENTT_NOEXCEPT { - auto value = traits_type::offset; - - while(*curr != 0) { - value = (value ^ static_cast(*(curr++))) * traits_type::prime; - } - - return value; - } - -public: - /*! @brief Character type. */ - using value_type = Char; - /*! @brief Unsigned integer type. */ - using hash_type = id_type; - - /** - * @brief Returns directly the numeric representation of a string view. - * @param str Human-readable identifer. - * @param size Length of the string to hash. - * @return The numeric representation of the string. - */ - [[nodiscard]] static constexpr hash_type value(const value_type *str, std::size_t size) ENTT_NOEXCEPT { - id_type partial{traits_type::offset}; - while(size--) { partial = (partial^(str++)[0])*traits_type::prime; } - return partial; - } - - /** - * @brief Returns directly the numeric representation of a string. - * - * Forcing template resolution avoids implicit conversions. An - * human-readable identifier can be anything but a plain, old bunch of - * characters.
- * Example of use: - * @code{.cpp} - * const auto value = basic_hashed_string::to_value("my.png"); - * @endcode - * - * @tparam N Number of characters of the identifier. - * @param str Human-readable identifer. - * @return The numeric representation of the string. - */ - template - [[nodiscard]] static constexpr hash_type value(const value_type (&str)[N]) ENTT_NOEXCEPT { - return helper(str); - } - - /** - * @brief Returns directly the numeric representation of a string. - * @param wrapper Helps achieving the purpose by relying on overloading. - * @return The numeric representation of the string. - */ - [[nodiscard]] static hash_type value(const_wrapper wrapper) ENTT_NOEXCEPT { - return helper(wrapper.str); - } - - /*! @brief Constructs an empty hashed string. */ - constexpr basic_hashed_string() ENTT_NOEXCEPT - : str{nullptr}, hash{} - {} - - /** - * @brief Constructs a hashed string from an array of const characters. - * - * Forcing template resolution avoids implicit conversions. An - * human-readable identifier can be anything but a plain, old bunch of - * characters.
- * Example of use: - * @code{.cpp} - * basic_hashed_string hs{"my.png"}; - * @endcode - * - * @tparam N Number of characters of the identifier. - * @param curr Human-readable identifer. - */ - template - constexpr basic_hashed_string(const value_type (&curr)[N]) ENTT_NOEXCEPT - : str{curr}, hash{helper(curr)} - {} - - /** - * @brief Explicit constructor on purpose to avoid constructing a hashed - * string directly from a `const value_type *`. - * @param wrapper Helps achieving the purpose by relying on overloading. - */ - explicit constexpr basic_hashed_string(const_wrapper wrapper) ENTT_NOEXCEPT - : str{wrapper.str}, hash{helper(wrapper.str)} - {} - - /** - * @brief Returns the human-readable representation of a hashed string. - * @return The string used to initialize the instance. - */ - [[nodiscard]] constexpr const value_type * data() const ENTT_NOEXCEPT { - return str; - } - - /** - * @brief Returns the numeric representation of a hashed string. - * @return The numeric representation of the instance. - */ - [[nodiscard]] constexpr hash_type value() const ENTT_NOEXCEPT { - return hash; - } - - /*! @copydoc data */ - [[nodiscard]] constexpr operator const value_type *() const ENTT_NOEXCEPT { return data(); } - - /** - * @brief Returns the numeric representation of a hashed string. - * @return The numeric representation of the instance. - */ - [[nodiscard]] constexpr operator hash_type() const ENTT_NOEXCEPT { return value(); } - - /** - * @brief Compares two hashed strings. - * @param other Hashed string with which to compare. - * @return True if the two hashed strings are identical, false otherwise. - */ - [[nodiscard]] constexpr bool operator==(const basic_hashed_string &other) const ENTT_NOEXCEPT { - return hash == other.hash; - } - -private: - const value_type *str; - hash_type hash; -}; - - -/** - * @brief Deduction guide. - * - * It allows to deduce the character type of the hashed string directly from a - * human-readable identifer provided to the constructor. - * - * @tparam Char Character type. - * @tparam N Number of characters of the identifier. - * @param str Human-readable identifer. - */ -template -basic_hashed_string(const Char (&str)[N]) --> basic_hashed_string; - - -/** - * @brief Compares two hashed strings. - * @tparam Char Character type. - * @param lhs A valid hashed string. - * @param rhs A valid hashed string. - * @return True if the two hashed strings are identical, false otherwise. - */ -template -[[nodiscard]] constexpr bool operator!=(const basic_hashed_string &lhs, const basic_hashed_string &rhs) ENTT_NOEXCEPT { - return !(lhs == rhs); -} - - -/*! @brief Aliases for common character types. */ -using hashed_string = basic_hashed_string; - - -/*! @brief Aliases for common character types. */ -using hashed_wstring = basic_hashed_string; - - -inline namespace literals { - - -/** - * @brief User defined literal for hashed strings. - * @param str The literal without its suffix. - * @return A properly initialized hashed string. - */ -[[nodiscard]] constexpr entt::hashed_string operator"" _hs(const char *str, std::size_t) ENTT_NOEXCEPT { - return entt::hashed_string{str}; -} - - -/** - * @brief User defined literal for hashed wstrings. - * @param str The literal without its suffix. - * @return A properly initialized hashed wstring. - */ -[[nodiscard]] constexpr entt::hashed_wstring operator"" _hws(const wchar_t *str, std::size_t) ENTT_NOEXCEPT { - return entt::hashed_wstring{str}; -} - - -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/core/ident.hpp b/LiteLoader/Header/third-party/entt/core/ident.hpp deleted file mode 100644 index 9b89d52..0000000 --- a/LiteLoader/Header/third-party/entt/core/ident.hpp +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef ENTT_CORE_IDENT_HPP -#define ENTT_CORE_IDENT_HPP - - -#include -#include -#include -#include "../config/config.h" -#include "fwd.hpp" -#include "type_traits.hpp" - - -namespace entt { - - -/** - * @brief Types identifiers. - * - * Variable template used to generate identifiers at compile-time for the given - * types. Use the `get` member function to know what's the identifier associated - * to the specific type. - * - * @note - * Identifiers are constant expression and can be used in any context where such - * an expression is required. As an example: - * @code{.cpp} - * using id = entt::identifier; - * - * switch(a_type_identifier) { - * case id::type: - * // ... - * break; - * case id::type: - * // ... - * break; - * default: - * // ... - * } - * @endcode - * - * @tparam Types List of types for which to generate identifiers. - */ -template -class identifier { - template - [[nodiscard]] static constexpr id_type get(std::index_sequence) { - static_assert(std::disjunction_v...>, "Invalid type"); - return (0 + ... + (std::is_same_v...>>> ? id_type{Index} : id_type{})); - } - -public: - /*! @brief Unsigned integer type. */ - using identifier_type = id_type; - - /*! @brief Statically generated unique identifier for the given type. */ - template - static constexpr identifier_type type = get>(std::index_sequence_for{}); -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/core/type_info.hpp b/LiteLoader/Header/third-party/entt/core/type_info.hpp deleted file mode 100644 index ea04869..0000000 --- a/LiteLoader/Header/third-party/entt/core/type_info.hpp +++ /dev/null @@ -1,260 +0,0 @@ -#ifndef ENTT_CORE_TYPE_INFO_HPP -#define ENTT_CORE_TYPE_INFO_HPP - - -#include -#include -#include "../config/config.h" -#include "../core/attribute.h" -#include "hashed_string.hpp" -#include "fwd.hpp" - - -namespace entt { - - -/** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - - -namespace internal { - - -struct ENTT_API type_seq final { - [[nodiscard]] static id_type next() ENTT_NOEXCEPT { - static ENTT_MAYBE_ATOMIC(id_type) value{}; - return value++; - } -}; - - -template -[[nodiscard]] constexpr auto stripped_type_name() ENTT_NOEXCEPT { -#if defined ENTT_PRETTY_FUNCTION - std::string_view pretty_function{ENTT_PRETTY_FUNCTION}; - auto first = pretty_function.find_first_not_of(' ', pretty_function.find_first_of(ENTT_PRETTY_FUNCTION_PREFIX)+1); - auto value = pretty_function.substr(first, pretty_function.find_last_of(ENTT_PRETTY_FUNCTION_SUFFIX) - first); - return value; -#else - return std::string_view{""}; -#endif -} - - -template().find_first_of('.')> -[[nodiscard]] static constexpr std::string_view type_name(int) ENTT_NOEXCEPT { - constexpr auto value = stripped_type_name(); - return value; -} - - -template -[[nodiscard]] static std::string_view type_name(char) ENTT_NOEXCEPT { - static const auto value = stripped_type_name(); - return value; -} - - -template().find_first_of('.')> -[[nodiscard]] static constexpr id_type type_hash(int) ENTT_NOEXCEPT { - constexpr auto stripped = stripped_type_name(); - constexpr auto value = hashed_string::value(stripped.data(), stripped.size()); - return value; -} - - -template -[[nodiscard]] static id_type type_hash(char) ENTT_NOEXCEPT { - static const auto value = [](const auto stripped) { - return hashed_string::value(stripped.data(), stripped.size()); - }(stripped_type_name()); - return value; -} - - -} - - -/** - * Internal details not to be documented. - * @endcond - */ - - -/** - * @brief Type sequential identifier. - * @tparam Type Type for which to generate a sequential identifier. - */ -template -struct ENTT_API type_seq final { - /** - * @brief Returns the sequential identifier of a given type. - * @return The sequential identifier of a given type. - */ - [[nodiscard]] static id_type value() ENTT_NOEXCEPT { - static const id_type value = internal::type_seq::next(); - return value; - } - - /*! @copydoc value */ - [[nodiscard]] constexpr operator id_type() const ENTT_NOEXCEPT { return value(); } -}; - - -/** - * @brief Type hash. - * @tparam Type Type for which to generate a hash value. - */ -template -struct type_hash final { - /** - * @brief Returns the numeric representation of a given type. - * @return The numeric representation of the given type. - */ -#if defined ENTT_PRETTY_FUNCTION - [[nodiscard]] static constexpr id_type value() ENTT_NOEXCEPT { - return internal::type_hash(0); -#else - [[nodiscard]] static constexpr id_type value() ENTT_NOEXCEPT { - return type_seq::value(); -#endif - } - - /*! @copydoc value */ - [[nodiscard]] constexpr operator id_type() const ENTT_NOEXCEPT { return value(); } -}; - - -/** - * @brief Type name. - * @tparam Type Type for which to generate a name. - */ -template -struct type_name final { - /** - * @brief Returns the name of a given type. - * @return The name of the given type. - */ - [[nodiscard]] static constexpr std::string_view value() ENTT_NOEXCEPT { - return internal::type_name(0); - } - - /*! @copydoc value */ - [[nodiscard]] constexpr operator std::string_view() const ENTT_NOEXCEPT { return value(); } -}; - - -/*! @brief Implementation specific information about a type. */ -class type_info final { - template - friend type_info type_id() ENTT_NOEXCEPT; - - type_info(id_type seq_v, id_type hash_v, std::string_view name_v) ENTT_NOEXCEPT - : seq_value{seq_v}, - hash_value{hash_v}, - name_value{name_v} - {} - -public: - /*! @brief Default constructor. */ - type_info() ENTT_NOEXCEPT - : type_info({}, {}, {}) - {} - - /*! @brief Default copy constructor. */ - type_info(const type_info &) ENTT_NOEXCEPT = default; - /*! @brief Default move constructor. */ - type_info(type_info &&) ENTT_NOEXCEPT = default; - - /** - * @brief Default copy assignment operator. - * @return This type info object. - */ - type_info & operator=(const type_info &) ENTT_NOEXCEPT = default; - - /** - * @brief Default move assignment operator. - * @return This type info object. - */ - type_info & operator=(type_info &&) ENTT_NOEXCEPT = default; - - /** - * @brief Checks if a type info object is properly initialized. - * @return True if the object is properly initialized, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return name_value.data() != nullptr; - } - - /** - * @brief Type sequential identifier. - * @return Type sequential identifier. - */ - [[nodiscard]] id_type seq() const ENTT_NOEXCEPT { - return seq_value; - } - - /** - * @brief Type hash. - * @return Type hash. - */ - [[nodiscard]] id_type hash() const ENTT_NOEXCEPT { - return hash_value; - } - - /** - * @brief Type name. - * @return Type name. - */ - [[nodiscard]] std::string_view name() const ENTT_NOEXCEPT { - return name_value; - } - - /** - * @brief Compares the contents of two type info objects. - * @param other Object with which to compare. - * @return False if the two contents differ, true otherwise. - */ - [[nodiscard]] bool operator==(const type_info &other) const ENTT_NOEXCEPT { - return hash_value == other.hash_value; - } - -private: - id_type seq_value; - id_type hash_value; - std::string_view name_value; -}; - - -/** - * @brief Compares the contents of two type info objects. - * @param lhs A type info object. - * @param rhs A type info object. - * @return True if the two contents differ, false otherwise. - */ -[[nodiscard]] inline bool operator!=(const type_info &lhs, const type_info &rhs) ENTT_NOEXCEPT { - return !(lhs == rhs); -} - - -/** - * @brief Returns the type info object for a given type. - * @tparam Type Type for which to generate a type info object. - * @return The type info object for the given type. - */ -template -[[nodiscard]] type_info type_id() ENTT_NOEXCEPT { - return type_info{ - type_seq>>::value(), - type_hash>>::value(), - type_name>>::value() - }; -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/component.hpp b/LiteLoader/Header/third-party/entt/entity/component.hpp deleted file mode 100644 index 67aa54a..0000000 --- a/LiteLoader/Header/third-party/entt/entity/component.hpp +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef ENTT_ENTITY_COMPONENT_HPP -#define ENTT_ENTITY_COMPONENT_HPP - - -#include -#include "../config/config.h" - - -namespace entt { - - -/*! @brief Commonly used default traits for all types. */ -struct basic_component_traits { - /*! @brief Pointer stability, default is `std::false_type`. */ - using in_place_delete = std::false_type; - /*! @brief Empty type optimization, default is `ENTT_IGNORE_IF_EMPTY`. */ - using ignore_if_empty = ENTT_IGNORE_IF_EMPTY; -}; - - -/** - * @brief Common way to access various properties of components. - * @tparam Type Type of component. - */ -template -struct component_traits: basic_component_traits { - static_assert(std::is_same_v, Type>, "Unsupported type"); -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/fwd.hpp b/LiteLoader/Header/third-party/entt/entity/fwd.hpp deleted file mode 100644 index cdc56c1..0000000 --- a/LiteLoader/Header/third-party/entt/entity/fwd.hpp +++ /dev/null @@ -1,147 +0,0 @@ -#ifndef ENTT_ENTITY_FWD_HPP -#define ENTT_ENTITY_FWD_HPP - - -#include -#include "../core/fwd.hpp" - - -namespace entt { - - -template> -class basic_sparse_set; - - -template> -struct basic_storage; - - -template -class basic_registry; - - -template -struct basic_view; - - -template -class basic_runtime_view; - - -template -class basic_group; - - -template -class basic_observer; - - -template -class basic_organizer; - - -template -struct basic_handle; - - -template -class basic_snapshot; - - -template -class basic_snapshot_loader; - - -template -class basic_continuous_loader; - - -/*! @brief Default entity identifier. */ -enum class entity: id_type {}; - - -/*! @brief Alias declaration for the most common use case. */ -using sparse_set = basic_sparse_set; - - -/** - * @brief Alias declaration for the most common use case. - * @tparam Args Other template parameters. - */ -template -using storage = basic_storage; - - -/*! @brief Alias declaration for the most common use case. */ -using registry = basic_registry; - - -/*! @brief Alias declaration for the most common use case. */ -using observer = basic_observer; - - -/*! @brief Alias declaration for the most common use case. */ -using organizer = basic_organizer; - - -/*! @brief Alias declaration for the most common use case. */ -using handle = basic_handle; - - -/*! @brief Alias declaration for the most common use case. */ -using const_handle = basic_handle; - - -/** - * @brief Alias declaration for the most common use case. - * @tparam Args Other template parameters. - */ -template -using handle_view = basic_handle; - - -/** - * @brief Alias declaration for the most common use case. - * @tparam Args Other template parameters. - */ -template -using const_handle_view = basic_handle; - - -/*! @brief Alias declaration for the most common use case. */ -using snapshot = basic_snapshot; - - -/*! @brief Alias declaration for the most common use case. */ -using snapshot_loader = basic_snapshot_loader; - - -/*! @brief Alias declaration for the most common use case. */ -using continuous_loader = basic_continuous_loader; - - -/** - * @brief Alias declaration for the most common use case. - * @tparam Args Other template parameters. - */ -template -using view = basic_view; - - -/*! @brief Alias declaration for the most common use case. */ -using runtime_view = basic_runtime_view; - - -/** - * @brief Alias declaration for the most common use case. - * @tparam Args Other template parameters. - */ -template -using group = basic_group; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/group.hpp b/LiteLoader/Header/third-party/entt/entity/group.hpp deleted file mode 100644 index 4883ccf..0000000 --- a/LiteLoader/Header/third-party/entt/entity/group.hpp +++ /dev/null @@ -1,969 +0,0 @@ -#ifndef ENTT_ENTITY_GROUP_HPP -#define ENTT_ENTITY_GROUP_HPP - - -#include -#include -#include -#include "../config/config.h" -#include "../core/type_traits.hpp" -#include "entity.hpp" -#include "fwd.hpp" -#include "sparse_set.hpp" -#include "storage.hpp" -#include "utility.hpp" - - -namespace entt { - - -/** - * @brief Group. - * - * Primary template isn't defined on purpose. All the specializations give a - * compile-time error, but for a few reasonable cases. - */ -template -class basic_group; - - -/** - * @brief Non-owning group. - * - * A non-owning group returns all entities and only the entities that have at - * least the given components. Moreover, it's guaranteed that the entity list - * is tightly packed in memory for fast iterations. - * - * @b Important - * - * Iterators aren't invalidated if: - * - * * New instances of the given components are created and assigned to entities. - * * The entity currently pointed is modified (as an example, if one of the - * given components is removed from the entity to which the iterator points). - * * The entity currently pointed is destroyed. - * - * In all other cases, modifying the pools iterated by the group in any way - * invalidates all the iterators and using them results in undefined behavior. - * - * @note - * Groups share references to the underlying data structures of the registry - * that generated them. Therefore any change to the entities and to the - * components made by means of the registry are immediately reflected by all the - * groups.
- * Moreover, sorting a non-owning group affects all the instances of the same - * group (it means that users don't have to call `sort` on each instance to sort - * all of them because they _share_ entities and components). - * - * @warning - * Lifetime of a group must not overcome that of the registry that generated it. - * In any other case, attempting to use a group results in undefined behavior. - * - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Exclude Types of components used to filter the group. - * @tparam Get Type of components observed by the group. - */ -template -class basic_group, get_t> final { - /*! @brief A registry is allowed to create groups. */ - friend class basic_registry; - - using basic_common_type = basic_sparse_set; - - template - using storage_type = constness_as_t>::storage_type, Component>; - - class iterable final { - template - struct iterable_iterator final { - using difference_type = std::ptrdiff_t; - using value_type = decltype(std::tuple_cat(std::tuple{}, std::declval().get({}))); - using pointer = void; - using reference = value_type; - using iterator_category = std::input_iterator_tag; - - template - iterable_iterator(It from, const std::tuple *...> &args) ENTT_NOEXCEPT - : it{from}, - pools{args} - {} - - iterable_iterator & operator++() ENTT_NOEXCEPT { - return ++it, *this; - } - - iterable_iterator operator++(int) ENTT_NOEXCEPT { - iterable_iterator orig = *this; - return ++(*this), orig; - } - - [[nodiscard]] reference operator*() const ENTT_NOEXCEPT { - const auto entt = *it; - return std::tuple_cat(std::make_tuple(entt), get_as_tuple(*std::get *>(pools), entt)...); - } - - [[nodiscard]] bool operator==(const iterable_iterator &other) const ENTT_NOEXCEPT { - return other.it == it; - } - - [[nodiscard]] bool operator!=(const iterable_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - private: - It it; - std::tuple *...> pools; - }; - - public: - using iterator = iterable_iterator; - using reverse_iterator = iterable_iterator; - - iterable(basic_common_type * const ref, const std::tuple *...> &cpools) - : handler{ref}, - pools{cpools} - {} - - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return handler ? iterator{handler->begin(), pools} : iterator{{}, pools}; - } - - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return handler ? iterator{handler->end(), pools} : iterator{{}, pools}; - } - - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return handler ? reverse_iterator{handler->rbegin(), pools} : reverse_iterator{{}, pools}; - } - - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return handler ? reverse_iterator{handler->rend(), pools} : reverse_iterator{{}, pools}; - } - - private: - basic_common_type * const handler; - const std::tuple *...> pools; - }; - - basic_group(basic_common_type &ref, storage_type &... gpool) ENTT_NOEXCEPT - : handler{&ref}, - pools{&gpool...} - {} - -public: - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Random access iterator type. */ - using iterator = typename basic_common_type::iterator; - /*! @brief Reversed iterator type. */ - using reverse_iterator = typename basic_common_type::reverse_iterator; - /*! @brief Iterable group type. */ - using iterable_group = iterable; - - /*! @brief Default constructor to use to create empty, invalid groups. */ - basic_group() ENTT_NOEXCEPT - : handler{} - {} - - /** - * @brief Returns the number of entities that have the given components. - * @return Number of entities that have the given components. - */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { - return *this ? handler->size() : size_type{}; - } - - /** - * @brief Returns the number of elements that a group has currently - * allocated space for. - * @return Capacity of the group. - */ - [[nodiscard]] size_type capacity() const ENTT_NOEXCEPT { - return *this ? handler->capacity() : size_type{}; - } - - /*! @brief Requests the removal of unused capacity. */ - void shrink_to_fit() { - if(*this) { - handler->shrink_to_fit(); - } - } - - /** - * @brief Checks whether a group is empty. - * @return True if the group is empty, false otherwise. - */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { - return !*this || handler->empty(); - } - - /** - * @brief Direct access to the list of entities. - * - * The returned pointer is such that range `[data(), data() + size())` is - * always a valid range, even if the container is empty. - * - * @return A pointer to the array of entities. - */ - [[nodiscard]] auto data() const ENTT_NOEXCEPT { - return *this ? handler->data() : nullptr; - } - - /** - * @brief Returns an iterator to the first entity of the group. - * - * The returned iterator points to the first entity of the group. If the - * group is empty, the returned iterator will be equal to `end()`. - * - * @return An iterator to the first entity of the group. - */ - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return *this ? handler->begin() : iterator{}; - } - - /** - * @brief Returns an iterator that is past the last entity of the group. - * - * The returned iterator points to the entity following the last entity of - * the group. Attempting to dereference the returned iterator results in - * undefined behavior. - * - * @return An iterator to the entity following the last entity of the - * group. - */ - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return *this ? handler->end() : iterator{}; - } - - /** - * @brief Returns an iterator to the first entity of the reversed group. - * - * The returned iterator points to the first entity of the reversed group. - * If the group is empty, the returned iterator will be equal to `rend()`. - * - * @return An iterator to the first entity of the reversed group. - */ - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return *this ? handler->rbegin() : reverse_iterator{}; - } - - /** - * @brief Returns an iterator that is past the last entity of the reversed - * group. - * - * The returned iterator points to the entity following the last entity of - * the reversed group. Attempting to dereference the returned iterator - * results in undefined behavior. - * - * @return An iterator to the entity following the last entity of the - * reversed group. - */ - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return *this ? handler->rend() : reverse_iterator{}; - } - - /** - * @brief Returns the first entity of the group, if any. - * @return The first entity of the group if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type front() const { - const auto it = begin(); - return it != end() ? *it : null; - } - - /** - * @brief Returns the last entity of the group, if any. - * @return The last entity of the group if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type back() const { - const auto it = rbegin(); - return it != rend() ? *it : null; - } - - /** - * @brief Finds an entity. - * @param entt A valid entity identifier. - * @return An iterator to the given entity if it's found, past the end - * iterator otherwise. - */ - [[nodiscard]] iterator find(const entity_type entt) const { - const auto it = *this ? handler->find(entt) : iterator{}; - return it != end() && *it == entt ? it : end(); - } - - /** - * @brief Returns the identifier that occupies the given position. - * @param pos Position of the element to return. - * @return The identifier that occupies the given position. - */ - [[nodiscard]] entity_type operator[](const size_type pos) const { - return begin()[pos]; - } - - /** - * @brief Checks if a group is properly initialized. - * @return True if the group is properly initialized, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return handler != nullptr; - } - - /** - * @brief Checks if a group contains an entity. - * @param entt A valid entity identifier. - * @return True if the group contains the given entity, false otherwise. - */ - [[nodiscard]] bool contains(const entity_type entt) const { - return *this && handler->contains(entt); - } - - /** - * @brief Returns the components assigned to the given entity. - * - * Prefer this function instead of `registry::get` during iterations. It has - * far better performance than its counterpart. - * - * @warning - * Attempting to use an invalid component type results in a compilation - * error. Attempting to use an entity that doesn't belong to the group - * results in undefined behavior. - * - * @tparam Component Types of components to get. - * @param entt A valid entity identifier. - * @return The components assigned to the entity. - */ - template - [[nodiscard]] decltype(auto) get(const entity_type entt) const { - ENTT_ASSERT(contains(entt), "Group does not contain entity"); - - if constexpr(sizeof...(Component) == 0) { - return std::tuple_cat(get_as_tuple(*std::get *>(pools), entt)...); - } else if constexpr(sizeof...(Component) == 1) { - return (std::get *>(pools)->get(entt), ...); - } else { - return std::tuple_cat(get_as_tuple(*std::get *>(pools), entt)...); - } - } - - /** - * @brief Iterates entities and components and applies the given function - * object to them. - * - * The function object is invoked for each entity. It is provided with the - * entity itself and a set of references to non-empty components. The - * _constness_ of the components is as requested.
- * The signature of the function must be equivalent to one of the following - * forms: - * - * @code{.cpp} - * void(const entity_type, Type &...); - * void(Type &...); - * @endcode - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - for(const auto entt: *this) { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { - std::apply(func, std::tuple_cat(std::make_tuple(entt), get(entt))); - } else { - std::apply(func, get(entt)); - } - } - } - - /** - * @brief Returns an iterable object to use to _visit_ the group. - * - * The iterable object returns tuples that contain the current entity and a - * set of references to its non-empty components. The _constness_ of the - * components is as requested. - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @return An iterable object to use to _visit_ the group. - */ - [[nodiscard]] iterable_group each() const ENTT_NOEXCEPT { - return iterable_group{handler, pools}; - } - - /** - * @brief Sort a group according to the given comparison function. - * - * Sort the group so that iterating it with a couple of iterators returns - * entities and components in the expected order. See `begin` and `end` for - * more details. - * - * The comparison function object must return `true` if the first element - * is _less_ than the second one, `false` otherwise. The signature of the - * comparison function should be equivalent to one of the following: - * - * @code{.cpp} - * bool(std::tuple, std::tuple); - * bool(const Component &..., const Component &...); - * bool(const Entity, const Entity); - * @endcode - * - * Where `Component` are such that they are iterated by the group.
- * Moreover, the comparison function object shall induce a - * _strict weak ordering_ on the values. - * - * The sort function oject must offer a member function template - * `operator()` that accepts three arguments: - * - * * An iterator to the first element of the range to sort. - * * An iterator past the last element of the range to sort. - * * A comparison function to use to compare the elements. - * - * @tparam Component Optional types of components to compare. - * @tparam Compare Type of comparison function object. - * @tparam Sort Type of sort function object. - * @tparam Args Types of arguments to forward to the sort function object. - * @param compare A valid comparison function object. - * @param algo A valid sort function object. - * @param args Arguments to forward to the sort function object, if any. - */ - template - void sort(Compare compare, Sort algo = Sort{}, Args &&... args) { - if(*this) { - if constexpr(sizeof...(Component) == 0) { - static_assert(std::is_invocable_v, "Invalid comparison function"); - handler->sort(std::move(compare), std::move(algo), std::forward(args)...); - } else if constexpr(sizeof...(Component) == 1) { - handler->sort([this, compare = std::move(compare)](const entity_type lhs, const entity_type rhs) { - return compare((std::get *>(pools)->get(lhs), ...), (std::get *>(pools)->get(rhs), ...)); - }, std::move(algo), std::forward(args)...); - } else { - handler->sort([this, compare = std::move(compare)](const entity_type lhs, const entity_type rhs) { - return compare(std::forward_as_tuple(std::get *>(pools)->get(lhs)...), std::forward_as_tuple(std::get *>(pools)->get(rhs)...)); - }, std::move(algo), std::forward(args)...); - } - } - } - - /** - * @brief Sort the shared pool of entities according to the given component. - * - * Non-owning groups of the same type share with the registry a pool of - * entities with its own order that doesn't depend on the order of any pool - * of components. Users can order the underlying data structure so that it - * respects the order of the pool of the given component. - * - * @note - * The shared pool of entities and thus its order is affected by the changes - * to each and every pool that it tracks. Therefore changes to those pools - * can quickly ruin the order imposed to the pool of entities shared between - * the non-owning groups. - * - * @tparam Component Type of component to use to impose the order. - */ - template - void sort() const { - if(*this) { - handler->respect(*std::get *>(pools)); - } - } - -private: - basic_common_type * const handler; - const std::tuple *...> pools; -}; - - -/** - * @brief Owning group. - * - * Owning groups return all entities and only the entities that have at least - * the given components. Moreover: - * - * * It's guaranteed that the entity list is tightly packed in memory for fast - * iterations. - * * It's guaranteed that the lists of owned components are tightly packed in - * memory for even faster iterations and to allow direct access. - * * They stay true to the order of the owned components and all instances have - * the same order in memory. - * - * The more types of components are owned by a group, the faster it is to - * iterate them. - * - * @b Important - * - * Iterators aren't invalidated if: - * - * * New instances of the given components are created and assigned to entities. - * * The entity currently pointed is modified (as an example, if one of the - * given components is removed from the entity to which the iterator points). - * * The entity currently pointed is destroyed. - * - * In all other cases, modifying the pools iterated by the group in any way - * invalidates all the iterators and using them results in undefined behavior. - * - * @note - * Groups share references to the underlying data structures of the registry - * that generated them. Therefore any change to the entities and to the - * components made by means of the registry are immediately reflected by all the - * groups. - * Moreover, sorting an owning group affects all the instance of the same group - * (it means that users don't have to call `sort` on each instance to sort all - * of them because they share the underlying data structure). - * - * @warning - * Lifetime of a group must not overcome that of the registry that generated it. - * In any other case, attempting to use a group results in undefined behavior. - * - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Exclude Types of components used to filter the group. - * @tparam Get Types of components observed by the group. - * @tparam Owned Types of components owned by the group. - */ -template -class basic_group, get_t, Owned...> final { - /*! @brief A registry is allowed to create groups. */ - friend class basic_registry; - - using basic_common_type = basic_sparse_set; - - template - using storage_type = constness_as_t>::storage_type, Component>; - - class iterable final { - template - struct iterable_iterator; - - template - struct iterable_iterator> final { - using difference_type = std::ptrdiff_t; - using value_type = decltype(std::tuple_cat(std::tuple{}, std::declval().get({}))); - using pointer = void; - using reference = value_type; - using iterator_category = std::input_iterator_tag; - - template - iterable_iterator(It from, const std::tuple &other, const std::tuple *...> &cpools) ENTT_NOEXCEPT - : it{from}, - owned{std::get(other)...}, - get{cpools} - {} - - iterable_iterator & operator++() ENTT_NOEXCEPT { - return ++it, (++std::get(owned), ...), *this; - } - - iterable_iterator operator++(int) ENTT_NOEXCEPT { - iterable_iterator orig = *this; - return ++(*this), orig; - } - - [[nodiscard]] reference operator*() const ENTT_NOEXCEPT { - return std::tuple_cat( - std::make_tuple(*it), - std::forward_as_tuple(*std::get(owned)...), - get_as_tuple(*std::get *>(get), *it)... - ); - } - - [[nodiscard]] bool operator==(const iterable_iterator &other) const ENTT_NOEXCEPT { - return other.it == it; - } - - [[nodiscard]] bool operator!=(const iterable_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - private: - It it; - std::tuple owned; - std::tuple *...> get; - }; - - public: - using iterator = iterable_iterator< - typename basic_common_type::iterator, - type_list_cat_t>().get({}))>, type_list<>, type_list>().end())>>...> - >; - using reverse_iterator = iterable_iterator< - typename basic_common_type::reverse_iterator, - type_list_cat_t>().get({}))>, type_list<>, type_list>().rbegin())>>...> - >; - - iterable(std::tuple *..., storage_type *...> cpools, const std::size_t * const extent) - : pools{cpools}, - length{extent} - {} - - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return length ? iterator{ - std::get<0>(pools)->basic_common_type::end() - *length, - std::make_tuple((std::get *>(pools)->end() - *length)...), - std::make_tuple(std::get *>(pools)...) - } : iterator{{}, std::make_tuple(decltype(std::get *>(pools)->end()){}...), std::make_tuple(std::get *>(pools)...)}; - } - - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return length ? iterator{ - std::get<0>(pools)->basic_common_type::end(), - std::make_tuple((std::get *>(pools)->end())...), - std::make_tuple(std::get *>(pools)...) - } : iterator{{}, std::make_tuple(decltype(std::get *>(pools)->end()){}...), std::make_tuple(std::get *>(pools)...)}; - } - - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return length ? reverse_iterator{ - std::get<0>(pools)->basic_common_type::rbegin(), - std::make_tuple((std::get *>(pools)->rbegin())...), - std::make_tuple(std::get *>(pools)...) - } : reverse_iterator{{}, std::make_tuple(decltype(std::get *>(pools)->rbegin()){}...), std::make_tuple(std::get *>(pools)...)}; - } - - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return length ? reverse_iterator{ - std::get<0>(pools)->basic_common_type::rbegin() + *length, - std::make_tuple((std::get *>(pools)->rbegin() + *length)...), - std::make_tuple(std::get *>(pools)...) - } : reverse_iterator{{}, std::make_tuple(decltype(std::get *>(pools)->rbegin()){}...), std::make_tuple(std::get *>(pools)...)}; - } - - private: - const std::tuple *..., storage_type *...> pools; - const std::size_t * const length; - }; - - basic_group(const std::size_t &extent, storage_type &... opool, storage_type &... gpool) ENTT_NOEXCEPT - : pools{&opool..., &gpool...}, - length{&extent} - {} - -public: - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Random access iterator type. */ - using iterator = typename basic_common_type::iterator; - /*! @brief Reversed iterator type. */ - using reverse_iterator = typename basic_common_type::reverse_iterator; - /*! @brief Iterable group type. */ - using iterable_group = iterable; - - /*! @brief Default constructor to use to create empty, invalid groups. */ - basic_group() ENTT_NOEXCEPT - : length{} - {} - - /** - * @brief Returns the number of entities that have the given components. - * @return Number of entities that have the given components. - */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { - return *this ? *length : size_type{}; - } - - /** - * @brief Checks whether a group is empty. - * @return True if the group is empty, false otherwise. - */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { - return !*this || !*length; - } - - /** - * @brief Direct access to the raw representation offered by the storage. - * - * @warning - * This function is only available for owned types. - * - * @tparam Component Type of component in which one is interested. - * @return A pointer to the array of components. - */ - template - [[nodiscard]] auto raw() const ENTT_NOEXCEPT { - static_assert((std::is_same_v || ...), "Non-owned type"); - auto *cpool = std::get *>(pools); - return cpool ? cpool->raw() : decltype(cpool->raw()){}; - } - - /** - * @brief Direct access to the list of entities. - * - * The returned pointer is such that range `[data(), data() + size())` is - * always a valid range, even if the container is empty. - * - * @return A pointer to the array of entities. - */ - [[nodiscard]] auto data() const ENTT_NOEXCEPT { - return *this ? std::get<0>(pools)->data() : nullptr; - } - - /** - * @brief Returns an iterator to the first entity of the group. - * - * The returned iterator points to the first entity of the group. If the - * group is empty, the returned iterator will be equal to `end()`. - * - * @return An iterator to the first entity of the group. - */ - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return *this ? (std::get<0>(pools)->basic_common_type::end() - *length) : iterator{}; - } - - /** - * @brief Returns an iterator that is past the last entity of the group. - * - * The returned iterator points to the entity following the last entity of - * the group. Attempting to dereference the returned iterator results in - * undefined behavior. - * - * @return An iterator to the entity following the last entity of the - * group. - */ - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return *this ? std::get<0>(pools)->basic_common_type::end() : iterator{}; - } - - /** - * @brief Returns an iterator to the first entity of the reversed group. - * - * The returned iterator points to the first entity of the reversed group. - * If the group is empty, the returned iterator will be equal to `rend()`. - * - * @return An iterator to the first entity of the reversed group. - */ - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return *this ? std::get<0>(pools)->basic_common_type::rbegin() : reverse_iterator{}; - } - - /** - * @brief Returns an iterator that is past the last entity of the reversed - * group. - * - * The returned iterator points to the entity following the last entity of - * the reversed group. Attempting to dereference the returned iterator - * results in undefined behavior. - * - * @return An iterator to the entity following the last entity of the - * reversed group. - */ - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return *this ? (std::get<0>(pools)->basic_common_type::rbegin() + *length) : reverse_iterator{}; - } - - /** - * @brief Returns the first entity of the group, if any. - * @return The first entity of the group if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type front() const { - const auto it = begin(); - return it != end() ? *it : null; - } - - /** - * @brief Returns the last entity of the group, if any. - * @return The last entity of the group if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type back() const { - const auto it = rbegin(); - return it != rend() ? *it : null; - } - - /** - * @brief Finds an entity. - * @param entt A valid entity identifier. - * @return An iterator to the given entity if it's found, past the end - * iterator otherwise. - */ - [[nodiscard]] iterator find(const entity_type entt) const { - const auto it = *this ? std::get<0>(pools)->find(entt) : iterator{}; - return it != end() && it >= begin() && *it == entt ? it : end(); - } - - /** - * @brief Returns the identifier that occupies the given position. - * @param pos Position of the element to return. - * @return The identifier that occupies the given position. - */ - [[nodiscard]] entity_type operator[](const size_type pos) const { - return begin()[pos]; - } - - /** - * @brief Checks if a group is properly initialized. - * @return True if the group is properly initialized, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return length != nullptr; - } - - /** - * @brief Checks if a group contains an entity. - * @param entt A valid entity identifier. - * @return True if the group contains the given entity, false otherwise. - */ - [[nodiscard]] bool contains(const entity_type entt) const { - return *this && std::get<0>(pools)->contains(entt) && (std::get<0>(pools)->index(entt) < (*length)); - } - - /** - * @brief Returns the components assigned to the given entity. - * - * Prefer this function instead of `registry::get` during iterations. It has - * far better performance than its counterpart. - * - * @warning - * Attempting to use an invalid component type results in a compilation - * error. Attempting to use an entity that doesn't belong to the group - * results in undefined behavior. - * - * @tparam Component Types of components to get. - * @param entt A valid entity identifier. - * @return The components assigned to the entity. - */ - template - [[nodiscard]] decltype(auto) get(const entity_type entt) const { - ENTT_ASSERT(contains(entt), "Group does not contain entity"); - - if constexpr(sizeof...(Component) == 0) { - return std::tuple_cat(get_as_tuple(*std::get *>(pools), entt)..., get_as_tuple(*std::get *>(pools), entt)...); - } else if constexpr(sizeof...(Component) == 1) { - return (std::get *>(pools)->get(entt), ...); - } else { - return std::tuple_cat(get_as_tuple(*std::get *>(pools), entt)...); - } - } - - /** - * @brief Iterates entities and components and applies the given function - * object to them. - * - * The function object is invoked for each entity. It is provided with the - * entity itself and a set of references to non-empty components. The - * _constness_ of the components is as requested.
- * The signature of the function must be equivalent to one of the following - * forms: - * - * @code{.cpp} - * void(const entity_type, Type &...); - * void(Type &...); - * @endcode - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - for(auto args: each()) { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { - std::apply(func, args); - } else { - std::apply([&func](auto, auto &&... less) { func(std::forward(less)...); }, args); - } - } - } - - /** - * @brief Returns an iterable object to use to _visit_ the group. - * - * The iterable object returns tuples that contain the current entity and a - * set of references to its non-empty components. The _constness_ of the - * components is as requested. - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @return An iterable object to use to _visit_ the group. - */ - [[nodiscard]] iterable_group each() const ENTT_NOEXCEPT { - return iterable_group{pools, length}; - } - - /** - * @brief Sort a group according to the given comparison function. - * - * Sort the group so that iterating it with a couple of iterators returns - * entities and components in the expected order. See `begin` and `end` for - * more details. - * - * The comparison function object must return `true` if the first element - * is _less_ than the second one, `false` otherwise. The signature of the - * comparison function should be equivalent to one of the following: - * - * @code{.cpp} - * bool(std::tuple, std::tuple); - * bool(const Component &, const Component &); - * bool(const Entity, const Entity); - * @endcode - * - * Where `Component` are either owned types or not but still such that they - * are iterated by the group.
- * Moreover, the comparison function object shall induce a - * _strict weak ordering_ on the values. - * - * The sort function oject must offer a member function template - * `operator()` that accepts three arguments: - * - * * An iterator to the first element of the range to sort. - * * An iterator past the last element of the range to sort. - * * A comparison function to use to compare the elements. - * - * @tparam Component Optional types of components to compare. - * @tparam Compare Type of comparison function object. - * @tparam Sort Type of sort function object. - * @tparam Args Types of arguments to forward to the sort function object. - * @param compare A valid comparison function object. - * @param algo A valid sort function object. - * @param args Arguments to forward to the sort function object, if any. - */ - template - void sort(Compare compare, Sort algo = Sort{}, Args &&... args) const { - auto *cpool = std::get<0>(pools); - - if constexpr(sizeof...(Component) == 0) { - static_assert(std::is_invocable_v, "Invalid comparison function"); - cpool->sort_n(*length, std::move(compare), std::move(algo), std::forward(args)...); - } else if constexpr(sizeof...(Component) == 1) { - cpool->sort_n(*length, [this, compare = std::move(compare)](const entity_type lhs, const entity_type rhs) { - return compare((std::get *>(pools)->get(lhs), ...), (std::get *>(pools)->get(rhs), ...)); - }, std::move(algo), std::forward(args)...); - } else { - cpool->sort_n(*length, [this, compare = std::move(compare)](const entity_type lhs, const entity_type rhs) { - return compare(std::forward_as_tuple(std::get *>(pools)->get(lhs)...), std::forward_as_tuple(std::get *>(pools)->get(rhs)...)); - }, std::move(algo), std::forward(args)...); - } - - [this](auto *head, auto *... other) { - for(auto next = *length; next; --next) { - const auto pos = next - 1; - [[maybe_unused]] const auto entt = head->data()[pos]; - (other->swap(other->data()[pos], entt), ...); - } - }(std::get *>(pools)...); - } - -private: - const std::tuple *..., storage_type *...> pools; - const size_type * const length; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/helper.hpp b/LiteLoader/Header/third-party/entt/entity/helper.hpp deleted file mode 100644 index c7e437d..0000000 --- a/LiteLoader/Header/third-party/entt/entity/helper.hpp +++ /dev/null @@ -1,168 +0,0 @@ -#ifndef ENTT_ENTITY_HELPER_HPP -#define ENTT_ENTITY_HELPER_HPP - - -#include -#include "../config/config.h" -#include "../core/fwd.hpp" -#include "../core/type_traits.hpp" -#include "../signal/delegate.hpp" -#include "registry.hpp" -#include "fwd.hpp" - - -namespace entt { - - -/** - * @brief Converts a registry to a view. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -struct as_view { - /*! @brief Underlying entity identifier. */ - using entity_type = std::remove_const_t; - /*! @brief Type of registry to convert. */ - using registry_type = constness_as_t, Entity>; - - /** - * @brief Constructs a converter for a given registry. - * @param source A valid reference to a registry. - */ - as_view(registry_type &source) ENTT_NOEXCEPT: reg{source} {} - - /** - * @brief Conversion function from a registry to a view. - * @tparam Exclude Types of components used to filter the view. - * @tparam Component Type of components used to construct the view. - * @return A newly created view. - */ - template - operator basic_view() const { - return reg.template view(Exclude{}); - } - -private: - registry_type ® -}; - - -/** - * @brief Deduction guide. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -as_view(basic_registry &) -> as_view; - - -/** - * @brief Deduction guide. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -as_view(const basic_registry &) -> as_view; - - -/** - * @brief Converts a registry to a group. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -struct as_group { - /*! @brief Underlying entity identifier. */ - using entity_type = std::remove_const_t; - /*! @brief Type of registry to convert. */ - using registry_type = constness_as_t, Entity>; - - /** - * @brief Constructs a converter for a given registry. - * @param source A valid reference to a registry. - */ - as_group(registry_type &source) ENTT_NOEXCEPT: reg{source} {} - - /** - * @brief Conversion function from a registry to a group. - * @tparam Exclude Types of components used to filter the group. - * @tparam Get Types of components observed by the group. - * @tparam Owned Types of components owned by the group. - * @return A newly created group. - */ - template - operator basic_group() const { - if constexpr(std::is_const_v) { - return reg.template group_if_exists(Get{}, Exclude{}); - } else { - return reg.template group(Get{}, Exclude{}); - } - } - -private: - registry_type ® -}; - - -/** - * @brief Deduction guide. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -as_group(basic_registry &) -> as_group; - - -/** - * @brief Deduction guide. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -as_group(const basic_registry &) -> as_group; - - - -/** - * @brief Helper to create a listener that directly invokes a member function. - * @tparam Member Member function to invoke on a component of the given type. - * @tparam Entity A valid entity type (see entt_traits for more details). - * @param reg A registry that contains the given entity and its components. - * @param entt Entity from which to get the component. - */ -template -void invoke(basic_registry ®, const Entity entt) { - static_assert(std::is_member_function_pointer_v, "Invalid pointer to non-static member function"); - delegate &, const Entity)> func; - func.template connect(reg.template get>(entt)); - func(reg, entt); -} - - -/** - * @brief Returns the entity associated with a given component. - * - * @warning - * Currently, this function only works correctly with the default pool as it - * makes assumptions about how the components are laid out. - * - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Component Type of component. - * @param reg A registry that contains the given entity and its components. - * @param instance A valid component instance. - * @return The entity associated with the given component. - */ -template -Entity to_entity(const basic_registry ®, const Component &instance) { - const auto view = reg.template view(); - const auto *addr = std::addressof(instance); - - for(auto it = view.rbegin(), last = view.rend(); it < last; it += ENTT_PACKED_PAGE) { - if(const auto dist = (addr - std::addressof(view.template get(*it))); dist >= 0 && dist < ENTT_PACKED_PAGE) { - return *(it + dist); - } - } - - return entt::null; -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/poly_storage.hpp b/LiteLoader/Header/third-party/entt/entity/poly_storage.hpp deleted file mode 100644 index a3f04fe..0000000 --- a/LiteLoader/Header/third-party/entt/entity/poly_storage.hpp +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef ENTT_ENTITY_POLY_STORAGE_HPP -#define ENTT_ENTITY_POLY_STORAGE_HPP - - -#include -#include -#include "../core/type_info.hpp" -#include "../core/type_traits.hpp" -#include "../poly/poly.hpp" -#include "fwd.hpp" - - -namespace entt { - - -/** - * @brief Basic poly storage implementation. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -struct Storage: type_list { - /** - * @brief Concept definition. - * @tparam Base Opaque base class from which to inherit. - */ - template - struct type: Base { - /** - * @brief Returns a type info for the contained objects. - * @return The type info for the contained objects. - */ - type_info value_type() const ENTT_NOEXCEPT { - return poly_call<0>(*this); - } - }; - - /** - * @brief Concept implementation. - * @tparam Type Type for which to generate an implementation. - */ - template - using impl = value_list<&type_id>; -}; - - -/** - * @brief Defines the poly storage type associate with a given entity type. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -struct poly_storage_traits { - /*! @brief Poly storage type for the given entity type. */ - using storage_type = poly>; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/registry.hpp b/LiteLoader/Header/third-party/entt/entity/registry.hpp deleted file mode 100644 index 29deaba..0000000 --- a/LiteLoader/Header/third-party/entt/entity/registry.hpp +++ /dev/null @@ -1,1713 +0,0 @@ -#ifndef ENTT_ENTITY_REGISTRY_HPP -#define ENTT_ENTITY_REGISTRY_HPP - - -#include -#include -#include -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/algorithm.hpp" -#include "../core/any.hpp" -#include "../core/fwd.hpp" -#include "../core/type_info.hpp" -#include "../core/type_traits.hpp" -#include "component.hpp" -#include "entity.hpp" -#include "fwd.hpp" -#include "group.hpp" -#include "poly_storage.hpp" -#include "runtime_view.hpp" -#include "sparse_set.hpp" -#include "storage.hpp" -#include "utility.hpp" -#include "view.hpp" - - -namespace entt { - - -/** - * @brief Fast and reliable entity-component system. - * - * The registry is the core class of the entity-component framework.
- * It stores entities and arranges pools of components on a per request basis. - * By means of a registry, users can manage entities and components, then create - * views or groups to iterate them. - * - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -class basic_registry { - using traits_type = entt_traits; - using poly_storage_type = typename poly_storage_traits::storage_type; - using basic_common_type = basic_sparse_set; - - template - using storage_type = constness_as_t>::storage_type, Component>; - - struct pool_data { - poly_storage_type poly; - std::unique_ptr pool{}; - }; - - template - struct group_handler; - - template - struct group_handler, get_t, Owned...> { - static_assert(!std::disjunction_v::in_place_delete...>, "Groups do not support in-place delete"); - static_assert(std::conjunction_v>..., std::is_same>..., std::is_same>...>, "One or more component types are invalid"); - std::conditional_t current{}; - - template - void maybe_valid_if(basic_registry &owner, const Entity entt) { - [[maybe_unused]] const auto cpools = std::make_tuple(owner.assure()...); - - const auto is_valid = ((std::is_same_v || std::get *>(cpools)->contains(entt)) && ...) - && ((std::is_same_v || owner.assure()->contains(entt)) && ...) - && ((std::is_same_v || !owner.assure()->contains(entt)) && ...); - - if constexpr(sizeof...(Owned) == 0) { - if(is_valid && !current.contains(entt)) { - current.emplace(entt); - } - } else { - if(is_valid && !(std::get<0>(cpools)->index(entt) < current)) { - const auto pos = current++; - (std::get *>(cpools)->swap(std::get *>(cpools)->data()[pos], entt), ...); - } - } - } - - void discard_if([[maybe_unused]] basic_registry &owner, const Entity entt) { - if constexpr(sizeof...(Owned) == 0) { - current.remove(entt); - } else { - if(const auto cpools = std::make_tuple(owner.assure()...); std::get<0>(cpools)->contains(entt) && (std::get<0>(cpools)->index(entt) < current)) { - const auto pos = --current; - (std::get *>(cpools)->swap(std::get *>(cpools)->data()[pos], entt), ...); - } - } - } - }; - - struct group_data { - std::size_t size; - std::unique_ptr group; - bool (* owned)(const id_type) ENTT_NOEXCEPT; - bool (* get)(const id_type) ENTT_NOEXCEPT; - bool (* exclude)(const id_type) ENTT_NOEXCEPT; - }; - - template - [[nodiscard]] storage_type * assure() const { - static_assert(std::is_same_v>, "Non-decayed types not allowed"); - const auto index = type_seq::value(); - - if(!(index < pools.size())) { - pools.resize(size_type(index)+1u); - } - - if(auto &&pdata = pools[index]; !pdata.pool) { - pdata.pool.reset(new storage_type()); - pdata.poly.template emplace &>(*static_cast *>(pdata.pool.get())); - } - - return static_cast *>(pools[index].pool.get()); - } - - template - [[nodiscard]] const storage_type * pool_if_exists() const ENTT_NOEXCEPT { - static_assert(std::is_same_v>, "Non-decayed types not allowed"); - const auto index = type_seq::value(); - return (!(index < pools.size()) || !pools[index].pool) ? nullptr : static_cast *>(pools[index].pool.get()); - } - - auto generate_identifier(const std::size_t pos) ENTT_NOEXCEPT { - ENTT_ASSERT(pos < traits_type::to_integral(null), "No entities available"); - return traits_type::construct(static_cast(pos), {}); - } - - auto recycle_identifier() ENTT_NOEXCEPT { - ENTT_ASSERT(free_list != null, "No entities available"); - const auto curr = traits_type::to_entity(free_list); - free_list = (tombstone | entities[curr]); - return (entities[curr] = traits_type::construct(curr, traits_type::to_version(entities[curr]))); - } - - auto release_entity(const Entity entity, const typename traits_type::version_type version) { - const typename traits_type::version_type vers = version + (version == traits_type::to_version(tombstone)); - entities[traits_type::to_entity(entity)] = traits_type::construct(traits_type::to_entity(free_list), vers); - free_list = (tombstone | entity); - return vers; - } - -public: - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Underlying version type. */ - using version_type = typename traits_type::version_type; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Poly storage type. */ - using poly_storage = typename poly_storage_traits::storage_type; - - /** - * @brief Returns the entity identifier without the version. - * @param entity An entity identifier, either valid or not. - * @return The entity identifier without the version. - */ - [[nodiscard]] static entity_type entity(const entity_type entity) ENTT_NOEXCEPT { - return traits_type::construct(traits_type::to_entity(entity), {}); - } - - /** - * @brief Returns the version stored along with an entity identifier. - * @param entity An entity identifier, either valid or not. - * @return The version stored along with the given entity identifier. - */ - [[nodiscard]] static version_type version(const entity_type entity) ENTT_NOEXCEPT { - return traits_type::to_version(entity); - } - - /*! @brief Default constructor. */ - basic_registry() = default; - - /*! @brief Default move constructor. */ - basic_registry(basic_registry &&) = default; - - /*! @brief Default move assignment operator. @return This registry. */ - basic_registry & operator=(basic_registry &&) = default; - - /** - * @brief Prepares a pool for the given type if required. - * @tparam Component Type of component for which to prepare a pool. - */ - template - void prepare() { - // suppress the warning due to the [[nodiscard]] attribute - static_cast(assure()); - } - - /** - * @brief Returns a poly storage for a given type. - * @param info The type for which to return a poly storage. - * @return A valid poly storage if a pool for the given type exists, an - * empty and thus invalid element otherwise. - */ - poly_storage & storage(const type_info info) { - ENTT_ASSERT(info.seq() < pools.size() && pools[info.seq()].poly, "Storage not available"); - return pools[info.seq()].poly; - } - - /*! @copydoc storage */ - const poly_storage & storage(const type_info info) const { - ENTT_ASSERT(info.seq() < pools.size() && pools[info.seq()].poly, "Storage not available"); - return pools[info.seq()].poly; - } - - /** - * @brief Returns the number of existing components of the given type. - * @tparam Component Type of component of which to return the size. - * @return Number of existing components of the given type. - */ - template - [[nodiscard]] size_type size() const { - const auto *cpool = pool_if_exists(); - return cpool ? cpool->size() : size_type{}; - } - - /** - * @brief Returns the number of entities created so far. - * @return Number of entities created so far. - */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { - return entities.size(); - } - - /** - * @brief Returns the number of entities still in use. - * @return Number of entities still in use. - */ - [[nodiscard]] size_type alive() const { - auto sz = entities.size(); - - for(auto curr = free_list; curr != null; --sz) { - curr = entities[traits_type::to_entity(curr)]; - } - - return sz; - } - - /** - * @brief Increases the capacity of the registry or of the pools for the - * given components. - * - * If no components are specified, the capacity of the registry is - * increased, that is the number of entities it contains. Otherwise the - * capacity of the pools for the given components is increased.
- * In both cases, if the new capacity is greater than the current capacity, - * new storage is allocated, otherwise the method does nothing. - * - * @tparam Component Types of components for which to reserve storage. - * @param cap Desired capacity. - */ - template - void reserve(const size_type cap) { - if constexpr(sizeof...(Component) == 0) { - entities.reserve(cap); - } else { - (assure()->reserve(cap), ...); - } - } - - /** - * @brief Reserves enough space to store `count` pools. - * @param count Number of pools to reserve space for. - */ - [[deprecated("No longer supported")]] - void reserve_pools(const size_t count) { - pools.reserve(count); - } - - /** - * @brief Returns the capacity of the pool for the given component. - * @tparam Component Type of component in which one is interested. - * @return Capacity of the pool of the given component. - */ - template - [[nodiscard]] size_type capacity() const { - const auto *cpool = pool_if_exists(); - return cpool ? cpool->capacity() : size_type{}; - } - - /** - * @brief Returns the number of entities that a registry has currently - * allocated space for. - * @return Capacity of the registry. - */ - [[nodiscard]] size_type capacity() const ENTT_NOEXCEPT { - return entities.capacity(); - } - - /** - * @brief Requests the removal of unused capacity for the given components. - * @tparam Component Types of components for which to reclaim unused - * capacity. - */ - template - void shrink_to_fit() { - (assure()->shrink_to_fit(), ...); - } - - /** - * @brief Checks whether the registry or the pools of the given components - * are empty. - * - * A registry is considered empty when it doesn't contain entities that are - * still in use. - * - * @tparam Component Types of components in which one is interested. - * @return True if the registry or the pools of the given components are - * empty, false otherwise. - */ - template - [[nodiscard]] bool empty() const { - if constexpr(sizeof...(Component) == 0) { - return !alive(); - } else { - return [](const auto *... cpool) { return ((!cpool || cpool->empty()) && ...); }(pool_if_exists()...); - } - } - - /** - * @brief Direct access to the list of entities of a registry. - * - * The returned pointer is such that range `[data(), data() + size())` is - * always a valid range, even if the container is empty. - * - * @warning - * This list contains both valid and destroyed entities and isn't suitable - * for direct use. - * - * @return A pointer to the array of entities. - */ - [[nodiscard]] const entity_type * data() const ENTT_NOEXCEPT { - return entities.data(); - } - - /** - * @brief Returns the head of the list of released entities. - * - * This function is intended for use in conjunction with `assign`.
- * The returned entity has an invalid identifier in all cases. - * - * @return The head of the list of released entities. - */ - [[nodiscard]] entity_type released() const ENTT_NOEXCEPT { - return free_list; - } - - /*! @copydoc released */ - [[deprecated("Use ::released instead")]] - [[nodiscard]] entity_type destroyed() const ENTT_NOEXCEPT { - return released(); - } - - /** - * @brief Checks if an entity identifier refers to a valid entity. - * @param entity An entity identifier, either valid or not. - * @return True if the identifier is valid, false otherwise. - */ - [[nodiscard]] bool valid(const entity_type entity) const { - const auto pos = size_type(traits_type::to_entity(entity)); - return (pos < entities.size() && entities[pos] == entity); - } - - /** - * @brief Returns the actual version for an entity identifier. - * - * @warning - * Attempting to use an entity that doesn't belong to the registry results - * in undefined behavior. An entity belongs to the registry even if it has - * been previously destroyed and/or recycled. - * - * @param entity A valid entity identifier. - * @return Actual version for the given entity identifier. - */ - [[nodiscard]] version_type current(const entity_type entity) const { - const auto pos = size_type(traits_type::to_entity(entity)); - ENTT_ASSERT(pos < entities.size(), "Entity does not exist"); - return version(entities[pos]); - } - - /** - * @brief Creates a new entity and returns it. - * - * There are two kinds of possible entity identifiers: - * - * * Newly created ones in case no entities have been previously destroyed. - * * Recycled ones with updated versions. - * - * @return A valid entity identifier. - */ - [[nodiscard]] entity_type create() { - return (free_list == null) ? entities.emplace_back(generate_identifier(entities.size())) : recycle_identifier(); - } - - /** - * @brief Creates a new entity and returns it. - * - * @sa create - * - * If the requested entity isn't in use, the suggested identifier is created - * and returned. Otherwise, a new identifier is generated. - * - * @param hint Required entity identifier. - * @return A valid entity identifier. - */ - [[nodiscard]] entity_type create(const entity_type hint) { - const auto length = entities.size(); - - if(hint == null || hint == tombstone) { - return create(); - } else if(const auto req = traits_type::to_entity(hint); !(req < length)) { - entities.resize(size_type(req) + 1u, null); - - for(auto pos = length; pos < req; ++pos) { - release_entity(generate_identifier(pos), {}); - } - - return (entities[req] = hint); - } else if(const auto curr = traits_type::to_entity(entities[req]); req == curr) { - return create(); - } else { - auto *it = &free_list; - for(; traits_type::to_entity(*it) != req; it = &entities[traits_type::to_entity(*it)]); - *it = traits_type::construct(curr, traits_type::to_version(*it)); - return (entities[req] = hint); - } - } - - /** - * @brief Assigns each element in a range an entity. - * - * @sa create - * - * @tparam It Type of forward iterator. - * @param first An iterator to the first element of the range to generate. - * @param last An iterator past the last element of the range to generate. - */ - template - void create(It first, It last) { - for(; free_list != null && first != last; ++first) { - *first = recycle_identifier(); - } - - const auto length = entities.size(); - entities.resize(length + std::distance(first, last), null); - - for(auto pos = length; first != last; ++first, ++pos) { - *first = entities[pos] = generate_identifier(pos); - } - } - - /** - * @brief Assigns entities to an empty registry. - * - * This function is intended for use in conjunction with `data`, `size` and - * `destroyed`.
- * Don't try to inject ranges of randomly generated entities nor the _wrong_ - * head for the list of destroyed entities. There is no guarantee that a - * registry will continue to work properly in this case. - * - * @warning - * There must be no entities still alive for this to work properly. - * - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param destroyed The head of the list of destroyed entities. - */ - template - void assign(It first, It last, const entity_type destroyed) { - ENTT_ASSERT(!alive(), "Entities still alive"); - entities.assign(first, last); - free_list = destroyed; - } - - /** - * @brief Releases an entity identifier. - * - * The version is updated and the identifier can be recycled at any time. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @param entity A valid entity identifier. - * @return The version of the recycled entity. - */ - version_type release(const entity_type entity) { - return release(entity, version(entity) + 1u); - } - - /** - * @brief Releases an entity identifier. - * - * The suggested version or the valid version closest to the suggested one - * is used instead of the implicitly generated version. - * - * @sa release - * - * @param entity A valid entity identifier. - * @param version A desired version upon destruction. - * @return The version actually assigned to the entity. - */ - version_type release(const entity_type entity, const version_type version) { - ENTT_ASSERT(orphan(entity), "Non-orphan entity"); - return release_entity(entity, version); - } - - /** - * @brief Releases all entity identifiers in a range. - * - * @sa release - * - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - */ - template - void release(It first, It last) { - for(; first != last; ++first) { - release(*first, version(*first) + 1u); - } - } - - /** - * @brief Destroys an entity and releases its identifier. - * - * The version is updated and the identifier can be recycled at any time. - * - * @warning - * Adding or removing components to an entity that is being destroyed can - * result in undefined behavior. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @param entity A valid entity identifier. - * @return The version of the recycled entity. - */ - version_type destroy(const entity_type entity) { - return destroy(entity, version(entity) + 1u); - } - - /** - * @brief Destroys an entity and releases its identifier. - * - * The suggested version or the valid version closest to the suggested one - * is used instead of the implicitly generated version. - * - * @sa destroy - * - * @param entity A valid entity identifier. - * @param version A desired version upon destruction. - * @return The version actually assigned to the entity. - */ - version_type destroy(const entity_type entity, const version_type version) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - - for(auto &&pdata: pools) { - pdata.pool && pdata.pool->remove(entity, this); - } - - return release_entity(entity, version); - } - - /** - * @brief Destroys all entities in a range and releases their identifiers. - * - * @sa destroy - * - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - */ - template - void destroy(It first, It last) { - if constexpr(is_iterator_type_v) { - for(; first != last; ++first) { - destroy(*first, version(*first) + 1u); - } - } else { - for(auto &&pdata: pools) { - pdata.pool && pdata.pool->remove(first, last, this); - } - - release(first, last); - } - } - - /** - * @brief Assigns the given component to an entity. - * - * A new instance of the given component is created and initialized with the - * arguments provided (the component must have a proper constructor or be of - * aggregate type). Then the component is assigned to the given entity. - * - * @warning - * Attempting to use an invalid entity or to assign a component to an entity - * that already owns it results in undefined behavior. - * - * @tparam Component Type of component to create. - * @tparam Args Types of arguments to use to construct the component. - * @param entity A valid entity identifier. - * @param args Parameters to use to initialize the component. - * @return A reference to the newly created component. - */ - template - decltype(auto) emplace(const entity_type entity, Args &&... args) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - return assure()->emplace(*this, entity, std::forward(args)...); - } - - /** - * @brief Assigns each entity in a range the given component. - * - * @sa emplace - * - * @tparam Component Type of component to create. - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param value An instance of the component to assign. - */ - template - void insert(It first, It last, const Component &value = {}) { - ENTT_ASSERT(std::all_of(first, last, [this](const auto entity) { return valid(entity); }), "Invalid entity"); - assure()->insert(*this, first, last, value); - } - - /** - * @brief Assigns each entity in a range the given components. - * - * @sa emplace - * - * @tparam Component Type of component to create. - * @tparam EIt Type of input iterator. - * @tparam CIt Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param from An iterator to the first element of the range of components. - */ - template::value_type>, Component>>> - void insert(EIt first, EIt last, CIt from) { - static_assert(std::is_constructible_v::value_type>, "Invalid value type"); - ENTT_ASSERT(std::all_of(first, last, [this](const auto entity) { return valid(entity); }), "Invalid entity"); - assure()->insert(*this, first, last, from); - } - - /** - * @brief Assigns or replaces the given component for an entity. - * - * Equivalent to the following snippet (pseudocode): - * - * @code{.cpp} - * auto &component = registry.all_of(entity) ? registry.replace(entity, args...) : registry.emplace(entity, args...); - * @endcode - * - * Prefer this function anyway because it has slightly better performance. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @tparam Component Type of component to assign or replace. - * @tparam Args Types of arguments to use to construct the component. - * @param entity A valid entity identifier. - * @param args Parameters to use to initialize the component. - * @return A reference to the newly created component. - */ - template - decltype(auto) emplace_or_replace(const entity_type entity, Args &&... args) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - auto *cpool = assure(); - - return cpool->contains(entity) - ? cpool->patch(*this, entity, [&args...](auto &... curr) { ((curr = Component{std::forward(args)...}), ...); }) - : cpool->emplace(*this, entity, std::forward(args)...); - } - - /** - * @brief Patches the given component for an entity. - * - * The signature of the functions should be equivalent to the following: - * - * @code{.cpp} - * void(Component &); - * @endcode - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned. However, this function can be used to trigger an update signal - * for them. - * - * @warning - * Attempting to use an invalid entity or to patch a component of an entity - * that doesn't own it results in undefined behavior. - * - * @tparam Component Type of component to patch. - * @tparam Func Types of the function objects to invoke. - * @param entity A valid entity identifier. - * @param func Valid function objects. - * @return A reference to the patched component. - */ - template - decltype(auto) patch(const entity_type entity, Func &&... func) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - return assure()->patch(*this, entity, std::forward(func)...); - } - - /** - * @brief Replaces the given component for an entity. - * - * A new instance of the given component is created and initialized with the - * arguments provided (the component must have a proper constructor or be of - * aggregate type). Then the component is assigned to the given entity. - * - * @warning - * Attempting to use an invalid entity or to replace a component of an - * entity that doesn't own it results in undefined behavior. - * - * @tparam Component Type of component to replace. - * @tparam Args Types of arguments to use to construct the component. - * @param entity A valid entity identifier. - * @param args Parameters to use to initialize the component. - * @return A reference to the component being replaced. - */ - template - decltype(auto) replace(const entity_type entity, Args &&... args) { - return assure()->patch(*this, entity, [&args...](auto &... curr) { ((curr = Component{std::forward(args)...}), ...); }); - } - - /** - * @brief Removes the given components from an entity. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @tparam Component Types of components to remove. - * @param entity A valid entity identifier. - * @return The number of components actually removed. - */ - template - size_type remove(const entity_type entity) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - static_assert(sizeof...(Component) > 0, "Provide one or more component types"); - return (assure()->remove(entity, this) + ... + size_type{}); - } - - /** - * @brief Removes the given components from all the entities in a range. - * - * @sa remove - * - * @tparam Component Types of components to remove. - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @return The number of components actually removed. - */ - template - size_type remove(It first, It last) { - static_assert(sizeof...(Component) > 0, "Provide one or more component types"); - const auto cpools = std::make_tuple(assure()...); - size_type count{}; - - for(; first != last; ++first) { - const auto entity = *first; - ENTT_ASSERT(valid(entity), "Invalid entity"); - count += (std::get *>(cpools)->remove(entity, this) + ...); - } - - return count; - } - - /** - * @brief Erases the given components from an entity. - * - * @warning - * Attempting to use an invalid entity or to erase a component from an - * entity that doesn't own it results in undefined behavior. - * - * @tparam Component Types of components to erase. - * @param entity A valid entity identifier. - */ - template - void erase(const entity_type entity) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - static_assert(sizeof...(Component) > 0, "Provide one or more component types"); - (assure()->erase(entity, this), ...); - } - - /** - * @brief Erases the given components from all the entities in a range. - * - * @sa erase - * - * @tparam Component Types of components to erase. - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - */ - template - void erase(It first, It last) { - static_assert(sizeof...(Component) > 0, "Provide one or more component types"); - const auto cpools = std::make_tuple(assure()...); - - for(; first != last; ++first) { - const auto entity = *first; - ENTT_ASSERT(valid(entity), "Invalid entity"); - (std::get *>(cpools)->erase(entity, this), ...); - } - } - - /** - * @brief Removes all tombstones from a registry or only the pools for the - * given components. - * @tparam Component Types of components for which to clear all tombstones. - */ - template - void compact() { - if constexpr(sizeof...(Component) == 0) { - for(auto &&pdata: pools) { - pdata.pool && (pdata.pool->compact(), true); - } - } else { - (assure()->compact(), ...); - } - } - - /*! @copydoc remove */ - template - [[deprecated("Use ::remove instead")]] - size_type remove_if_exists(const entity_type entity) { - return remove(entity); - } - - /** - * @brief Removes all the components from an entity and makes it orphaned. - * - * @warning - * In case there are listeners that observe the destruction of components - * and assign other components to the entity in their bodies, the result of - * invoking this function may not be as expected. In the worst case, it - * could lead to undefined behavior. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @param entity A valid entity identifier. - */ - [[deprecated("Use ::destroy(entity)/::create(entity) instead")]] - void remove_all(const entity_type entity) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - - for(auto &&pdata: pools) { - pdata.pool && pdata.pool->remove(entity, this); - } - } - - /** - * @brief Checks if an entity has all the given components. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @tparam Component Components for which to perform the check. - * @param entity A valid entity identifier. - * @return True if the entity has all the components, false otherwise. - */ - template - [[nodiscard]] bool all_of(const entity_type entity) const { - ENTT_ASSERT(valid(entity), "Invalid entity"); - return [entity](const auto *... cpool) { return ((cpool && cpool->contains(entity)) && ...); }(pool_if_exists()...); - } - - /** - * @brief Checks if an entity has at least one of the given components. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @tparam Component Components for which to perform the check. - * @param entity A valid entity identifier. - * @return True if the entity has at least one of the given components, - * false otherwise. - */ - template - [[nodiscard]] bool any_of(const entity_type entity) const { - ENTT_ASSERT(valid(entity), "Invalid entity"); - return [entity](const auto *... cpool) { return !((!cpool || !cpool->contains(entity)) && ...); }(pool_if_exists()...); - } - - /** - * @brief Returns references to the given components for an entity. - * - * @warning - * Attempting to use an invalid entity or to get a component from an entity - * that doesn't own it results in undefined behavior. - * - * @tparam Component Types of components to get. - * @param entity A valid entity identifier. - * @return References to the components owned by the entity. - */ - template - [[nodiscard]] decltype(auto) get([[maybe_unused]] const entity_type entity) const { - ENTT_ASSERT(valid(entity), "Invalid entity"); - - if constexpr(sizeof...(Component) == 1) { - const auto *cpool = pool_if_exists...>(); - ENTT_ASSERT(cpool, "Storage not available"); - return cpool->get(entity); - } else { - return std::forward_as_tuple(get(entity)...); - } - } - - /*! @copydoc get */ - template - [[nodiscard]] decltype(auto) get([[maybe_unused]] const entity_type entity) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - - if constexpr(sizeof...(Component) == 1) { - return (const_cast(assure>()->get(entity)), ...); - } else { - return std::forward_as_tuple(get(entity)...); - } - } - - /** - * @brief Returns a reference to the given component for an entity. - * - * In case the entity doesn't own the component, the parameters provided are - * used to construct it.
- * Equivalent to the following snippet (pseudocode): - * - * @code{.cpp} - * auto &component = registry.all_of(entity) ? registry.get(entity) : registry.emplace(entity, args...); - * @endcode - * - * Prefer this function anyway because it has slightly better performance. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @tparam Component Type of component to get. - * @tparam Args Types of arguments to use to construct the component. - * @param entity A valid entity identifier. - * @param args Parameters to use to initialize the component. - * @return Reference to the component owned by the entity. - */ - template - [[nodiscard]] decltype(auto) get_or_emplace(const entity_type entity, Args &&... args) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - auto *cpool = assure(); - return cpool->contains(entity) ? cpool->get(entity) : cpool->emplace(*this, entity, std::forward(args)...); - } - - /** - * @brief Returns pointers to the given components for an entity. - * - * @warning - * Attempting to use an invalid entity results in undefined behavior. - * - * @note - * The registry retains ownership of the pointed-to components. - * - * @tparam Component Types of components to get. - * @param entity A valid entity identifier. - * @return Pointers to the components owned by the entity. - */ - template - [[nodiscard]] auto try_get([[maybe_unused]] const entity_type entity) const { - ENTT_ASSERT(valid(entity), "Invalid entity"); - - if constexpr(sizeof...(Component) == 1) { - const auto *cpool = pool_if_exists...>(); - return (cpool && cpool->contains(entity)) ? &cpool->get(entity) : nullptr; - } else { - return std::make_tuple(try_get(entity)...); - } - } - - /*! @copydoc try_get */ - template - [[nodiscard]] auto try_get([[maybe_unused]] const entity_type entity) { - ENTT_ASSERT(valid(entity), "Invalid entity"); - - if constexpr(sizeof...(Component) == 1) { - return (const_cast(std::as_const(*this).template try_get(entity)), ...); - } else { - return std::make_tuple(try_get(entity)...); - } - } - - /** - * @brief Clears a whole registry or the pools for the given components. - * @tparam Component Types of components to remove from their entities. - */ - template - void clear() { - if constexpr(sizeof...(Component) == 0) { - for(auto &&pdata: pools) { - pdata.pool && (pdata.pool->clear(this), true); - } - - each([this](const auto entity) { release_entity(entity, version(entity) + 1u); }); - } else { - (assure()->clear(this), ...); - } - } - - /** - * @brief Iterates all the entities that are still in use. - * - * The function object is invoked for each entity that is still in use.
- * The signature of the function should be equivalent to the following: - * - * @code{.cpp} - * void(const Entity); - * @endcode - * - * This function is fairly slow and should not be used frequently. However, - * it's useful for iterating all the entities still in use, regardless of - * their components. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - if(free_list == null) { - for(auto pos = entities.size(); pos; --pos) { - func(entities[pos-1]); - } - } else { - for(auto pos = entities.size(); pos; --pos) { - if(const auto entity = entities[pos - 1]; traits_type::to_entity(entity) == (pos - 1)) { - func(entity); - } - } - } - } - - /** - * @brief Checks if an entity has components assigned. - * @param entity A valid entity identifier. - * @return True if the entity has no components assigned, false otherwise. - */ - [[nodiscard]] bool orphan(const entity_type entity) const { - ENTT_ASSERT(valid(entity), "Invalid entity"); - return std::none_of(pools.cbegin(), pools.cend(), [entity](auto &&pdata) { return pdata.pool && pdata.pool->contains(entity); }); - } - - /** - * @brief Iterates orphans and applies them the given function object. - * - * The function object is invoked for each entity that is still in use and - * has no components assigned.
- * The signature of the function should be equivalent to the following: - * - * @code{.cpp} - * void(const Entity); - * @endcode - * - * This function can be very slow and should not be used frequently. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void orphans(Func func) const { - each([this, &func](const auto entity) { - if(orphan(entity)) { - func(entity); - } - }); - } - - /** - * @brief Returns a sink object for the given component. - * - * The sink returned by this function can be used to receive notifications - * whenever a new instance of the given component is created and assigned to - * an entity.
- * The function type for a listener is equivalent to: - * - * @code{.cpp} - * void(basic_registry &, Entity); - * @endcode - * - * Listeners are invoked **after** the component has been assigned to the - * entity. - * - * @sa sink - * - * @tparam Component Type of component of which to get the sink. - * @return A temporary sink object. - */ - template - [[nodiscard]] auto on_construct() { - return assure()->on_construct(); - } - - /** - * @brief Returns a sink object for the given component. - * - * The sink returned by this function can be used to receive notifications - * whenever an instance of the given component is explicitly updated.
- * The function type for a listener is equivalent to: - * - * @code{.cpp} - * void(basic_registry &, Entity); - * @endcode - * - * Listeners are invoked **after** the component has been updated. - * - * @sa sink - * - * @tparam Component Type of component of which to get the sink. - * @return A temporary sink object. - */ - template - [[nodiscard]] auto on_update() { - return assure()->on_update(); - } - - /** - * @brief Returns a sink object for the given component. - * - * The sink returned by this function can be used to receive notifications - * whenever an instance of the given component is removed from an entity and - * thus destroyed.
- * The function type for a listener is equivalent to: - * - * @code{.cpp} - * void(basic_registry &, Entity); - * @endcode - * - * Listeners are invoked **before** the component has been removed from the - * entity. - * - * @sa sink - * - * @tparam Component Type of component of which to get the sink. - * @return A temporary sink object. - */ - template - [[nodiscard]] auto on_destroy() { - return assure()->on_destroy(); - } - - /** - * @brief Returns a view for the given components. - * - * This kind of objects are created on the fly and share with the registry - * its internal data structures.
- * Feel free to discard a view after the use. Creating and destroying a view - * is an incredibly cheap operation because they do not require any type of - * initialization.
- * As a rule of thumb, storing a view should never be an option. - * - * Views do their best to iterate the smallest set of candidate entities. - * In particular: - * - * * Single component views are incredibly fast and iterate a packed array - * of entities, all of which has the given component. - * * Multi component views look at the number of entities available for each - * component and pick up a reference to the smallest set of candidates to - * test for the given components. - * - * Views in no way affect the functionalities of the registry nor those of - * the underlying pools. - * - * @note - * Multi component views are pretty fast. However their performance tend to - * degenerate when the number of components to iterate grows up and the most - * of the entities have all the given components.
- * To get a performance boost, consider using a group instead. - * - * @tparam Component Type of components used to construct the view. - * @tparam Exclude Types of components used to filter the view. - * @return A newly created view. - */ - template - [[nodiscard]] basic_view, std::add_const_t...> view(exclude_t = {}) const { - static_assert(sizeof...(Component) > 0, "Exclusion-only views are not supported"); - return { *assure>()..., *assure()... }; - } - - /*! @copydoc view */ - template - [[nodiscard]] basic_view, Component...> view(exclude_t = {}) { - static_assert(sizeof...(Component) > 0, "Exclusion-only views are not supported"); - return { *assure>()..., *assure()... }; - } - - /** - * @brief Returns a runtime view for the given components. - * - * This kind of objects are created on the fly and share with the registry - * its internal data structures.
- * Users should throw away the view after use. Fortunately, creating and - * destroying a runtime view is an incredibly cheap operation because they - * do not require any type of initialization.
- * As a rule of thumb, storing a view should never be an option. - * - * Runtime views are to be used when users want to construct a view from - * some external inputs and don't know at compile-time what are the required - * components. - * - * @tparam ItComp Type of input iterator for the components to use to - * construct the view. - * @tparam ItExcl Type of input iterator for the components to use to filter - * the view. - * @param first An iterator to the first element of the range of components - * to use to construct the view. - * @param last An iterator past the last element of the range of components - * to use to construct the view. - * @param from An iterator to the first element of the range of components - * to use to filter the view. - * @param to An iterator past the last element of the range of components to - * use to filter the view. - * @return A newly created runtime view. - */ - template - [[nodiscard]] basic_runtime_view runtime_view(ItComp first, ItComp last, ItExcl from = {}, ItExcl to = {}) const { - std::vector component(std::distance(first, last)); - std::vector filter(std::distance(from, to)); - - std::transform(first, last, component.begin(), [this](const auto ctype) { - const auto it = std::find_if(pools.cbegin(), pools.cend(), [ctype](auto &&pdata) { return pdata.poly && pdata.poly->value_type().hash() == ctype; }); - return it == pools.cend() ? nullptr : it->pool.get(); - }); - - std::transform(from, to, filter.begin(), [this](const auto ctype) { - const auto it = std::find_if(pools.cbegin(), pools.cend(), [ctype](auto &&pdata) { return pdata.poly && pdata.poly->value_type().hash() == ctype; }); - return it == pools.cend() ? nullptr : it->pool.get(); - }); - - return { std::move(component), std::move(filter) }; - } - - /** - * @brief Returns a group for the given components. - * - * This kind of objects are created on the fly and share with the registry - * its internal data structures.
- * Feel free to discard a group after the use. Creating and destroying a - * group is an incredibly cheap operation because they do not require any - * type of initialization, but for the first time they are requested.
- * As a rule of thumb, storing a group should never be an option. - * - * Groups support exclusion lists and can own types of components. The more - * types are owned by a group, the faster it is to iterate entities and - * components.
- * However, groups also affect some features of the registry such as the - * creation and destruction of components, which will consequently be - * slightly slower (nothing that can be noticed in most cases). - * - * @note - * Pools of components that are owned by a group cannot be sorted anymore. - * The group takes the ownership of the pools and arrange components so as - * to iterate them as fast as possible. - * - * @tparam Owned Types of components owned by the group. - * @tparam Get Types of components observed by the group. - * @tparam Exclude Types of components used to filter the group. - * @return A newly created group. - */ - template - [[nodiscard]] basic_group, get_t, Owned...> group(get_t, exclude_t = {}) { - static_assert(sizeof...(Owned) + sizeof...(Get) > 0, "Exclusion-only groups are not supported"); - static_assert(sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude) > 1, "Single component groups are not allowed"); - - using handler_type = group_handler, get_t...>, std::remove_const_t...>; - - const auto cpools = std::make_tuple(assure>()..., assure>()...); - constexpr auto size = sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude); - handler_type *handler = nullptr; - - if(auto it = std::find_if(groups.cbegin(), groups.cend(), [size](const auto &gdata) { - return gdata.size == size - && (gdata.owned(type_hash>::value()) && ...) - && (gdata.get(type_hash>::value()) && ...) - && (gdata.exclude(type_hash::value()) && ...); - }); it != groups.cend()) - { - handler = static_cast(it->group.get()); - } - - if(!handler) { - group_data candidate = { - size, - { new handler_type{}, [](void *instance) { delete static_cast(instance); } }, - []([[maybe_unused]] const id_type ctype) ENTT_NOEXCEPT { return ((ctype == type_hash>::value()) || ...); }, - []([[maybe_unused]] const id_type ctype) ENTT_NOEXCEPT { return ((ctype == type_hash>::value()) || ...); }, - []([[maybe_unused]] const id_type ctype) ENTT_NOEXCEPT { return ((ctype == type_hash::value()) || ...); }, - }; - - handler = static_cast(candidate.group.get()); - - const void *maybe_valid_if = nullptr; - const void *discard_if = nullptr; - - if constexpr(sizeof...(Owned) == 0) { - groups.push_back(std::move(candidate)); - } else { - ENTT_ASSERT(std::all_of(groups.cbegin(), groups.cend(), [size](const auto &gdata) { - const auto overlapping = (0u + ... + gdata.owned(type_hash>::value())); - const auto sz = overlapping + (0u + ... + gdata.get(type_hash>::value())) + (0u + ... + gdata.exclude(type_hash::value())); - return !overlapping || ((sz == size) || (sz == gdata.size)); - }), "Conflicting groups"); - - const auto next = std::find_if_not(groups.cbegin(), groups.cend(), [size](const auto &gdata) { - return !(0u + ... + gdata.owned(type_hash>::value())) || (size > gdata.size); - }); - - const auto prev = std::find_if(std::make_reverse_iterator(next), groups.crend(), [](const auto &gdata) { - return (0u + ... + gdata.owned(type_hash>::value())); - }); - - maybe_valid_if = (next == groups.cend() ? maybe_valid_if : next->group.get()); - discard_if = (prev == groups.crend() ? discard_if : prev->group.get()); - groups.insert(next, std::move(candidate)); - } - - (on_construct>().before(maybe_valid_if).template connect<&handler_type::template maybe_valid_if>>(*handler), ...); - (on_construct>().before(maybe_valid_if).template connect<&handler_type::template maybe_valid_if>>(*handler), ...); - (on_destroy().before(maybe_valid_if).template connect<&handler_type::template maybe_valid_if>(*handler), ...); - - (on_destroy>().before(discard_if).template connect<&handler_type::discard_if>(*handler), ...); - (on_destroy>().before(discard_if).template connect<&handler_type::discard_if>(*handler), ...); - (on_construct().before(discard_if).template connect<&handler_type::discard_if>(*handler), ...); - - if constexpr(sizeof...(Owned) == 0) { - for(const auto entity: view(exclude)) { - handler->current.emplace(entity); - } - } else { - // we cannot iterate backwards because we want to leave behind valid entities in case of owned types - for(auto *first = std::get<0>(cpools)->data(), *last = first + std::get<0>(cpools)->size(); first != last; ++first) { - handler->template maybe_valid_if...>>>(*this, *first); - } - } - } - - return { handler->current, *std::get> *>(cpools)..., *std::get> *>(cpools)... }; - } - - /** - * @brief Returns a group for the given components. - * - * @sa group - * - * @tparam Owned Types of components owned by the group. - * @tparam Get Types of components observed by the group. - * @tparam Exclude Types of components used to filter the group. - * @return A newly created group. - */ - template - [[nodiscard]] basic_group, get_t...>, std::add_const_t...> group_if_exists(get_t, exclude_t = {}) const { - if(auto it = std::find_if(groups.cbegin(), groups.cend(), [](const auto &gdata) { - return gdata.size == (sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude)) - && (gdata.owned(type_hash>::value()) && ...) - && (gdata.get(type_hash>::value()) && ...) - && (gdata.exclude(type_hash::value()) && ...); - }); it == groups.cend()) - { - return {}; - } else { - using handler_type = group_handler, get_t...>, std::remove_const_t...>; - return { static_cast(it->group.get())->current, *pool_if_exists>()... , *pool_if_exists>()... }; - } - } - - /** - * @brief Returns a group for the given components. - * - * @sa group - * - * @tparam Owned Types of components owned by the group. - * @tparam Exclude Types of components used to filter the group. - * @return A newly created group. - */ - template - [[nodiscard]] basic_group, get_t<>, Owned...> group(exclude_t = {}) { - return group(get_t<>{}, exclude); - } - - /** - * @brief Returns a group for the given components. - * - * @sa group_if_exists - * - * @tparam Owned Types of components owned by the group. - * @tparam Exclude Types of components used to filter the group. - * @return A newly created group. - */ - template - [[nodiscard]] basic_group, get_t<>, std::add_const_t...> group_if_exists(exclude_t = {}) const { - return group_if_exists...>(get_t<>{}, exclude); - } - - /** - * @brief Checks whether the given components belong to any group. - * @tparam Component Types of components in which one is interested. - * @return True if the pools of the given components are sortable, false - * otherwise. - */ - template - [[nodiscard]] bool sortable() const { - return std::none_of(groups.cbegin(), groups.cend(), [](auto &&gdata) { return (gdata.owned(type_hash>::value()) || ...); }); - } - - /** - * @brief Checks whether a group can be sorted. - * @tparam Owned Types of components owned by the group. - * @tparam Get Types of components observed by the group. - * @tparam Exclude Types of components used to filter the group. - * @return True if the group can be sorted, false otherwise. - */ - template - [[nodiscard]] bool sortable(const basic_group, get_t, Owned...> &) ENTT_NOEXCEPT { - constexpr auto size = sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude); - return std::find_if(groups.cbegin(), groups.cend(), [size](const auto &gdata) { - return (0u + ... + gdata.owned(type_hash>::value())) && (size < gdata.size); - }) == groups.cend(); - } - - /** - * @brief Sorts the pool of entities for the given component. - * - * The order of the elements in a pool is highly affected by assignments - * of components to entities and deletions. Components are arranged to - * maximize the performance during iterations and users should not make any - * assumption on the order.
- * This function can be used to impose an order to the elements in the pool - * of the given component. The order is kept valid until a component of the - * given type is assigned or removed from an entity. - * - * The comparison function object must return `true` if the first element - * is _less_ than the second one, `false` otherwise. The signature of the - * comparison function should be equivalent to one of the following: - * - * @code{.cpp} - * bool(const Entity, const Entity); - * bool(const Component &, const Component &); - * @endcode - * - * Moreover, the comparison function object shall induce a - * _strict weak ordering_ on the values. - * - * The sort function oject must offer a member function template - * `operator()` that accepts three arguments: - * - * * An iterator to the first element of the range to sort. - * * An iterator past the last element of the range to sort. - * * A comparison function to use to compare the elements. - * - * The comparison funtion object received by the sort function object hasn't - * necessarily the type of the one passed along with the other parameters to - * this member function. - * - * @warning - * Pools of components owned by a group cannot be sorted. - * - * @tparam Component Type of components to sort. - * @tparam Compare Type of comparison function object. - * @tparam Sort Type of sort function object. - * @tparam Args Types of arguments to forward to the sort function object. - * @param compare A valid comparison function object. - * @param algo A valid sort function object. - * @param args Arguments to forward to the sort function object, if any. - */ - template - void sort(Compare compare, Sort algo = Sort{}, Args &&... args) { - ENTT_ASSERT(sortable(), "Cannot sort owned storage"); - assure()->sort(std::move(compare), std::move(algo), std::forward(args)...); - } - - /** - * @brief Sorts two pools of components in the same way. - * - * The order of the elements in a pool is highly affected by assignments - * of components to entities and deletions. Components are arranged to - * maximize the performance during iterations and users should not make any - * assumption on the order. - * - * It happens that different pools of components must be sorted the same way - * because of runtime and/or performance constraints. This function can be - * used to order a pool of components according to the order between the - * entities in another pool of components. - * - * @b How @b it @b works - * - * Being `A` and `B` the two sets where `B` is the master (the one the order - * of which rules) and `A` is the slave (the one to sort), after a call to - * this function an iterator for `A` will return the entities according to - * the following rules: - * - * * All the entities in `A` that are also in `B` are returned first - * according to the order they have in `B`. - * * All the entities in `A` that are not in `B` are returned in no - * particular order after all the other entities. - * - * Any subsequent change to `B` won't affect the order in `A`. - * - * @warning - * Pools of components owned by a group cannot be sorted. - * - * @tparam To Type of components to sort. - * @tparam From Type of components to use to sort. - */ - template - void sort() { - ENTT_ASSERT(sortable(), "Cannot sort owned storage"); - assure()->respect(*assure()); - } - - /** - * @brief Visits an entity and returns the type info for its components. - * - * The signature of the function should be equivalent to the following: - * - * @code{.cpp} - * void(const type_info); - * @endcode - * - * Returned identifiers are those of the components owned by the entity. - * - * @sa type_info - * - * @warning - * It's not specified whether a component attached to or removed from the - * given entity during the visit is returned or not to the caller. - * - * @tparam Func Type of the function object to invoke. - * @param entity A valid entity identifier. - * @param func A valid function object. - */ - template - void visit(entity_type entity, Func func) const { - for(auto pos = pools.size(); pos; --pos) { - if(const auto &pdata = pools[pos-1]; pdata.pool && pdata.pool->contains(entity)) { - func(pdata.poly->value_type()); - } - } - } - - /** - * @brief Visits a registry and returns the type info for its components. - * - * The signature of the function should be equivalent to the following: - * - * @code{.cpp} - * void(const type_info); - * @endcode - * - * Returned identifiers are those of the components managed by the registry. - * - * @sa type_info - * - * @warning - * It's not specified whether a component for which a pool is created during - * the visit is returned or not to the caller. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void visit(Func func) const { - for(auto pos = pools.size(); pos; --pos) { - if(const auto &pdata = pools[pos-1]; pdata.pool) { - func(pdata.poly->value_type()); - } - } - } - - /** - * @brief Binds an object to the context of the registry. - * - * If the value already exists it is overwritten, otherwise a new instance - * of the given type is created and initialized with the arguments provided. - * - * @tparam Type Type of object to set. - * @tparam Args Types of arguments to use to construct the object. - * @param args Parameters to use to initialize the value. - * @return A reference to the newly created object. - */ - template - Type & set(Args &&... args) { - unset(); - vars.emplace_back(std::in_place_type, std::forward(args)...); - return any_cast(vars.back()); - } - - /** - * @brief Unsets a context variable if it exists. - * @tparam Type Type of object to set. - */ - template - void unset() { - vars.erase(std::remove_if(vars.begin(), vars.end(), [type = type_id()](auto &&var) { return var.type() == type; }), vars.end()); - } - - /** - * @brief Binds an object to the context of the registry. - * - * In case the context doesn't contain the given object, the parameters - * provided are used to construct it. - * - * @tparam Type Type of object to set. - * @tparam Args Types of arguments to use to construct the object. - * @param args Parameters to use to initialize the object. - * @return A reference to the object in the context of the registry. - */ - template - [[nodiscard]] Type & ctx_or_set(Args &&... args) { - auto *value = try_ctx(); - return value ? *value : set(std::forward(args)...); - } - - /** - * @brief Returns a pointer to an object in the context of the registry. - * @tparam Type Type of object to get. - * @return A pointer to the object if it exists in the context of the - * registry, a null pointer otherwise. - */ - template - [[nodiscard]] std::add_const_t * try_ctx() const { - auto it = std::find_if(vars.cbegin(), vars.cend(), [type = type_id()](auto &&var) { return var.type() == type; }); - return it == vars.cend() ? nullptr : any_cast>(&*it); - } - - /*! @copydoc try_ctx */ - template - [[nodiscard]] Type * try_ctx() { - auto it = std::find_if(vars.begin(), vars.end(), [type = type_id()](auto &&var) { return var.type() == type; }); - return it == vars.end() ? nullptr : any_cast(&*it); - } - - /** - * @brief Returns a reference to an object in the context of the registry. - * - * @warning - * Attempting to get a context variable that doesn't exist results in - * undefined behavior. - * - * @tparam Type Type of object to get. - * @return A valid reference to the object in the context of the registry. - */ - template - [[nodiscard]] std::add_const_t & ctx() const { - auto it = std::find_if(vars.cbegin(), vars.cend(), [type = type_id()](auto &&var) { return var.type() == type; }); - ENTT_ASSERT(it != vars.cend(), "Invalid instance"); - return any_cast &>(*it); - } - - /*! @copydoc ctx */ - template - [[nodiscard]] Type & ctx() { - auto it = std::find_if(vars.begin(), vars.end(), [type = type_id()](auto &&var) { return var.type() == type; }); - ENTT_ASSERT(it != vars.end(), "Invalid instance"); - return any_cast(*it); - } - - /** - * @brief Visits a registry and returns the type info for its context - * variables. - * - * The signature of the function should be equivalent to the following: - * - * @code{.cpp} - * void(const type_info); - * @endcode - * - * Returned identifiers are those of the context variables currently set. - * - * @sa type_info - * - * @warning - * It's not specified whether a context variable created during the visit is - * returned or not to the caller. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void ctx(Func func) const { - for(auto pos = vars.size(); pos; --pos) { - func(vars[pos-1].type()); - } - } - -private: - std::vector> vars{}; - mutable std::vector pools{}; - std::vector groups{}; - std::vector entities{}; - entity_type free_list{tombstone}; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/runtime_view.hpp b/LiteLoader/Header/third-party/entt/entity/runtime_view.hpp deleted file mode 100644 index e653a9f..0000000 --- a/LiteLoader/Header/third-party/entt/entity/runtime_view.hpp +++ /dev/null @@ -1,245 +0,0 @@ -#ifndef ENTT_ENTITY_RUNTIME_VIEW_HPP -#define ENTT_ENTITY_RUNTIME_VIEW_HPP - - -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "entity.hpp" -#include "sparse_set.hpp" -#include "fwd.hpp" - - -namespace entt { - - -/** - * @brief Runtime view. - * - * Runtime views iterate over those entities that have at least all the given - * components in their bags. During initialization, a runtime view looks at the - * number of entities available for each component and picks up a reference to - * the smallest set of candidate entities in order to get a performance boost - * when iterate.
- * Order of elements during iterations are highly dependent on the order of the - * underlying data structures. See sparse_set and its specializations for more - * details. - * - * @b Important - * - * Iterators aren't invalidated if: - * - * * New instances of the given components are created and assigned to entities. - * * The entity currently pointed is modified (as an example, if one of the - * given components is removed from the entity to which the iterator points). - * * The entity currently pointed is destroyed. - * - * In all the other cases, modifying the pools of the given components in any - * way invalidates all the iterators and using them results in undefined - * behavior. - * - * @note - * Views share references to the underlying data structures of the registry that - * generated them. Therefore any change to the entities and to the components - * made by means of the registry are immediately reflected by the views, unless - * a pool was missing when the view was built (in this case, the view won't - * have a valid reference and won't be updated accordingly). - * - * @warning - * Lifetime of a view must not overcome that of the registry that generated it. - * In any other case, attempting to use a view results in undefined behavior. - * - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -class basic_runtime_view final { - using basic_common_type = basic_sparse_set; - using underlying_iterator = typename basic_common_type::iterator; - - class view_iterator final { - [[nodiscard]] bool valid() const { - const auto entt = *it; - - return (!stable_storage || (entt != tombstone)) - && std::all_of(pools->begin()++, pools->end(), [entt](const auto *curr) { return curr->contains(entt); }) - && std::none_of(filter->cbegin(), filter->cend(), [entt](const auto *curr) { return curr && curr->contains(entt); }); - } - - public: - using difference_type = typename underlying_iterator::difference_type; - using value_type = typename underlying_iterator::value_type; - using pointer = typename underlying_iterator::pointer; - using reference = typename underlying_iterator::reference; - using iterator_category = std::bidirectional_iterator_tag; - - view_iterator() ENTT_NOEXCEPT = default; - - view_iterator(const std::vector &cpools, const std::vector &ignore, underlying_iterator curr) ENTT_NOEXCEPT - : pools{&cpools}, - filter{&ignore}, - it{curr}, - stable_storage{std::any_of(pools->cbegin(), pools->cend(), [](const basic_common_type *cpool) { return (cpool->policy() == deletion_policy::in_place); })} - { - if(it != (*pools)[0]->end() && !valid()) { - ++(*this); - } - } - - view_iterator & operator++() { - while(++it != (*pools)[0]->end() && !valid()); - return *this; - } - - view_iterator operator++(int) { - view_iterator orig = *this; - return ++(*this), orig; - } - - view_iterator & operator--() ENTT_NOEXCEPT { - while(--it != (*pools)[0]->begin() && !valid()); - return *this; - } - - view_iterator operator--(int) ENTT_NOEXCEPT { - view_iterator orig = *this; - return operator--(), orig; - } - - [[nodiscard]] bool operator==(const view_iterator &other) const ENTT_NOEXCEPT { - return other.it == it; - } - - [[nodiscard]] bool operator!=(const view_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - [[nodiscard]] pointer operator->() const { - return it.operator->(); - } - - [[nodiscard]] reference operator*() const { - return *operator->(); - } - - private: - const std::vector *pools; - const std::vector *filter; - underlying_iterator it; - bool stable_storage; - }; - - [[nodiscard]] bool valid() const { - return !pools.empty() && pools.front(); - } - -public: - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Bidirectional iterator type. */ - using iterator = view_iterator; - - /*! @brief Default constructor to use to create empty, invalid views. */ - basic_runtime_view() ENTT_NOEXCEPT - : pools{}, - filter{} - {} - - /** - * @brief Constructs a runtime view from a set of storage classes. - * @param cpools The storage for the types to iterate. - * @param epools The storage for the types used to filter the view. - */ - basic_runtime_view(std::vector cpools, std::vector epools) ENTT_NOEXCEPT - : pools{std::move(cpools)}, - filter{std::move(epools)} - { - // brings the best candidate (if any) on front of the vector - std::rotate(pools.begin(), std::min_element(pools.begin(), pools.end(), [](const auto *lhs, const auto *rhs) { - return (!lhs && rhs) || (lhs && rhs && lhs->size() < rhs->size()); - }), pools.end()); - } - - /** - * @brief Estimates the number of entities iterated by the view. - * @return Estimated number of entities iterated by the view. - */ - [[nodiscard]] size_type size_hint() const { - return valid() ? pools.front()->size() : size_type{}; - } - - /** - * @brief Returns an iterator to the first entity that has the given - * components. - * - * The returned iterator points to the first entity that has the given - * components. If the view is empty, the returned iterator will be equal to - * `end()`. - * - * @return An iterator to the first entity that has the given components. - */ - [[nodiscard]] iterator begin() const { - return valid() ? iterator{pools, filter, pools[0]->begin()} : iterator{}; - } - - /** - * @brief Returns an iterator that is past the last entity that has the - * given components. - * - * The returned iterator points to the entity following the last entity that - * has the given components. Attempting to dereference the returned iterator - * results in undefined behavior. - * - * @return An iterator to the entity following the last entity that has the - * given components. - */ - [[nodiscard]] iterator end() const { - return valid() ? iterator{pools, filter, pools[0]->end()} : iterator{}; - } - - /** - * @brief Checks if a view contains an entity. - * @param entt A valid entity identifier. - * @return True if the view contains the given entity, false otherwise. - */ - [[nodiscard]] bool contains(const entity_type entt) const { - return valid() && std::all_of(pools.cbegin(), pools.cend(), [entt](const auto *curr) { return curr->contains(entt); }) - && std::none_of(filter.cbegin(), filter.cend(), [entt](const auto *curr) { return curr && curr->contains(entt); }); - } - - /** - * @brief Iterates entities and applies the given function object to them. - * - * The function object is invoked for each entity. It is provided only with - * the entity itself. To get the components, users can use the registry with - * which the view was built.
- * The signature of the function should be equivalent to the following: - * - * @code{.cpp} - * void(const entity_type); - * @endcode - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - for(const auto entity: *this) { - func(entity); - } - } - -private: - std::vector pools; - std::vector filter; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/sparse_set.hpp b/LiteLoader/Header/third-party/entt/entity/sparse_set.hpp deleted file mode 100644 index 1350dfa..0000000 --- a/LiteLoader/Header/third-party/entt/entity/sparse_set.hpp +++ /dev/null @@ -1,870 +0,0 @@ -#ifndef ENTT_ENTITY_SPARSE_SET_HPP -#define ENTT_ENTITY_SPARSE_SET_HPP - - -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/algorithm.hpp" -#include "../core/fwd.hpp" -#include "entity.hpp" -#include "fwd.hpp" - - -namespace entt { - - -/*! @brief Sparse set deletion policy. */ -enum class deletion_policy: std::uint8_t { - /*! @brief Swap-and-pop deletion policy. */ - swap_and_pop = 0u, - /*! @brief In-place deletion policy. */ - in_place = 1u -}; - - -/** - * @brief Basic sparse set implementation. - * - * Sparse set or packed array or whatever is the name users give it.
- * Two arrays: an _external_ one and an _internal_ one; a _sparse_ one and a - * _packed_ one; one used for direct access through contiguous memory, the other - * one used to get the data through an extra level of indirection.
- * This is largely used by the registry to offer users the fastest access ever - * to the components. Views and groups in general are almost entirely designed - * around sparse sets. - * - * This type of data structure is widely documented in the literature and on the - * web. This is nothing more than a customized implementation suitable for the - * purpose of the framework. - * - * @note - * Internal data structures arrange elements to maximize performance. There are - * no guarantees that entities are returned in the insertion order when iterate - * a sparse set. Do not make assumption on the order in any case. - * - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Allocator Type of allocator used to manage memory and elements. - */ -template -class basic_sparse_set { - static constexpr auto growth_factor = 1.5; - static constexpr auto sparse_page = ENTT_SPARSE_PAGE; - - using traits_type = entt_traits; - - using alloc_traits = typename std::allocator_traits::template rebind_traits; - using alloc_pointer = typename alloc_traits::pointer; - using alloc_const_pointer = typename alloc_traits::const_pointer; - - using bucket_alloc_traits = typename std::allocator_traits::template rebind_traits; - using bucket_alloc_pointer = typename bucket_alloc_traits::pointer; - - static_assert(alloc_traits::propagate_on_container_move_assignment::value); - static_assert(bucket_alloc_traits::propagate_on_container_move_assignment::value); - - struct sparse_set_iterator final { - using difference_type = typename traits_type::difference_type; - using value_type = Entity; - using pointer = const value_type *; - using reference = const value_type &; - using iterator_category = std::random_access_iterator_tag; - - sparse_set_iterator() ENTT_NOEXCEPT = default; - - sparse_set_iterator(const alloc_const_pointer *ref, const difference_type idx) ENTT_NOEXCEPT - : packed{ref}, - index{idx} - {} - - sparse_set_iterator & operator++() ENTT_NOEXCEPT { - return --index, *this; - } - - sparse_set_iterator operator++(int) ENTT_NOEXCEPT { - iterator orig = *this; - return ++(*this), orig; - } - - sparse_set_iterator & operator--() ENTT_NOEXCEPT { - return ++index, *this; - } - - sparse_set_iterator operator--(int) ENTT_NOEXCEPT { - sparse_set_iterator orig = *this; - return operator--(), orig; - } - - sparse_set_iterator & operator+=(const difference_type value) ENTT_NOEXCEPT { - index -= value; - return *this; - } - - sparse_set_iterator operator+(const difference_type value) const ENTT_NOEXCEPT { - sparse_set_iterator copy = *this; - return (copy += value); - } - - sparse_set_iterator & operator-=(const difference_type value) ENTT_NOEXCEPT { - return (*this += -value); - } - - sparse_set_iterator operator-(const difference_type value) const ENTT_NOEXCEPT { - return (*this + -value); - } - - difference_type operator-(const sparse_set_iterator &other) const ENTT_NOEXCEPT { - return other.index - index; - } - - [[nodiscard]] reference operator[](const difference_type value) const { - const auto pos = size_type(index-value-1u); - return (*packed)[pos]; - } - - [[nodiscard]] bool operator==(const sparse_set_iterator &other) const ENTT_NOEXCEPT { - return other.index == index; - } - - [[nodiscard]] bool operator!=(const sparse_set_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - [[nodiscard]] bool operator<(const sparse_set_iterator &other) const ENTT_NOEXCEPT { - return index > other.index; - } - - [[nodiscard]] bool operator>(const sparse_set_iterator &other) const ENTT_NOEXCEPT { - return index < other.index; - } - - [[nodiscard]] bool operator<=(const sparse_set_iterator &other) const ENTT_NOEXCEPT { - return !(*this > other); - } - - [[nodiscard]] bool operator>=(const sparse_set_iterator &other) const ENTT_NOEXCEPT { - return !(*this < other); - } - - [[nodiscard]] pointer operator->() const { - const auto pos = size_type(index-1u); - return std::addressof((*packed)[pos]); - } - - [[nodiscard]] reference operator*() const { - return *operator->(); - } - - private: - const alloc_const_pointer *packed; - difference_type index; - }; - - [[nodiscard]] static auto page(const Entity entt) ENTT_NOEXCEPT { - return static_cast(traits_type::to_entity(entt) / sparse_page); - } - - [[nodiscard]] static auto offset(const Entity entt) ENTT_NOEXCEPT { - return static_cast(traits_type::to_entity(entt) & (sparse_page - 1)); - } - - [[nodiscard]] auto assure_page(const std::size_t idx) { - if(!(idx < bucket)) { - const size_type sz = idx + 1u; - const auto mem = bucket_alloc_traits::allocate(bucket_allocator, sz); - - std::uninitialized_value_construct(mem + bucket, mem + sz); - std::uninitialized_copy(sparse, sparse + bucket, mem); - - std::destroy(sparse, sparse + bucket); - bucket_alloc_traits::deallocate(bucket_allocator, sparse, bucket); - - sparse = mem; - bucket = sz; - } - - if(!sparse[idx]) { - sparse[idx] = alloc_traits::allocate(allocator, sparse_page); - std::uninitialized_fill(sparse[idx], sparse[idx] + sparse_page, null); - } - - return sparse[idx]; - } - - void resize_packed(const std::size_t req) { - ENTT_ASSERT((req != reserved) && !(req < count), "Invalid request"); - const auto mem = alloc_traits::allocate(allocator, req); - - std::uninitialized_copy(packed, packed + count, mem); - std::uninitialized_fill(mem + count, mem + req, tombstone); - - std::destroy(packed, packed + reserved); - alloc_traits::deallocate(allocator, packed, reserved); - - packed = mem; - reserved = req; - } - - void release_memory() { - if(packed) { - for(size_type pos{}; pos < bucket; ++pos) { - if(sparse[pos]) { - std::destroy(sparse[pos], sparse[pos] + sparse_page); - alloc_traits::deallocate(allocator, sparse[pos], sparse_page); - } - } - - std::destroy(packed, packed + reserved); - std::destroy(sparse, sparse + bucket); - alloc_traits::deallocate(allocator, packed, reserved); - bucket_alloc_traits::deallocate(bucket_allocator, sparse, bucket); - } - } - -protected: - /** - * @brief Swaps two entities in the internal packed array. - * @param lhs A valid position of an entity within storage. - * @param rhs A valid position of an entity within storage. - */ - virtual void swap_at([[maybe_unused]] const std::size_t lhs, [[maybe_unused]] const std::size_t rhs) {} - - /** - * @brief Moves an entity in the internal packed array. - * @param from A valid position of an entity within storage. - * @param to A valid position of an entity within storage. - */ - virtual void move_and_pop([[maybe_unused]] const std::size_t from, [[maybe_unused]] const std::size_t to) {} - - /** - * @brief Attempts to erase an entity from the internal packed array. - * @param entt A valid entity identifier. - * @param ud Optional user data that are forwarded as-is to derived classes. - */ - virtual void swap_and_pop(const Entity entt, [[maybe_unused]] void *ud) { - auto &ref = sparse[page(entt)][offset(entt)]; - const auto pos = static_cast(traits_type::to_entity(ref)); - ENTT_ASSERT(packed[pos] == entt, "Invalid entity identifier"); - auto &last = packed[--count]; - - packed[pos] = last; - sparse[page(last)][offset(last)] = ref; - // lazy self-assignment guard - ref = null; - // unnecessary but it helps to detect nasty bugs - ENTT_ASSERT((last = tombstone, true), ""); - } - - /** - * @brief Attempts to erase an entity from the internal packed array. - * @param entt A valid entity identifier. - * @param ud Optional user data that are forwarded as-is to derived classes. - */ - virtual void in_place_pop(const Entity entt, [[maybe_unused]] void *ud) { - auto &ref = sparse[page(entt)][offset(entt)]; - const auto pos = static_cast(traits_type::to_entity(ref)); - ENTT_ASSERT(packed[pos] == entt, "Invalid entity identifier"); - - packed[pos] = std::exchange(free_list, traits_type::construct(static_cast(pos))); - // lazy self-assignment guard - ref = null; - } - -public: - /*! @brief Allocator type. */ - using allocator_type = typename alloc_traits::allocator_type; - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Pointer type to contained entities. */ - using pointer = alloc_const_pointer; - /*! @brief Random access iterator type. */ - using iterator = sparse_set_iterator; - /*! @brief Reverse iterator type. */ - using reverse_iterator = std::reverse_iterator; - - /** - * @brief Constructs an empty container with the given policy and allocator. - * @param pol Type of deletion policy. - * @param alloc Allocator to use (possibly default-constructed). - */ - explicit basic_sparse_set(deletion_policy pol, const allocator_type &alloc = {}) - : allocator{alloc}, - bucket_allocator{alloc}, - sparse{bucket_alloc_traits::allocate(bucket_allocator, 0u)}, - packed{alloc_traits::allocate(allocator, 0u)}, - bucket{0u}, - count{0u}, - reserved{0u}, - free_list{tombstone}, - mode{pol} - {} - - /** - * @brief Constructs an empty container with the given allocator. - * @param alloc Allocator to use (possibly default-constructed). - */ - explicit basic_sparse_set(const allocator_type &alloc = {}) - : basic_sparse_set{deletion_policy::swap_and_pop, alloc} - {} - - /** - * @brief Move constructor. - * @param other The instance to move from. - */ - basic_sparse_set(basic_sparse_set &&other) ENTT_NOEXCEPT - : allocator{std::move(other.allocator)}, - bucket_allocator{std::move(other.bucket_allocator)}, - sparse{std::exchange(other.sparse, bucket_alloc_pointer{})}, - packed{std::exchange(other.packed, alloc_pointer{})}, - bucket{std::exchange(other.bucket, 0u)}, - count{std::exchange(other.count, 0u)}, - reserved{std::exchange(other.reserved, 0u)}, - free_list{std::exchange(other.free_list, tombstone)}, - mode{other.mode} - {} - - /*! @brief Default destructor. */ - virtual ~basic_sparse_set() { - release_memory(); - } - - /** - * @brief Move assignment operator. - * @param other The instance to move from. - * @return This sparse set. - */ - basic_sparse_set & operator=(basic_sparse_set &&other) ENTT_NOEXCEPT { - release_memory(); - - allocator = std::move(other.allocator); - bucket_allocator = std::move(other.bucket_allocator); - sparse = std::exchange(other.sparse, bucket_alloc_pointer{}); - packed = std::exchange(other.packed, alloc_pointer{}); - bucket = std::exchange(other.bucket, 0u); - count = std::exchange(other.count, 0u); - reserved = std::exchange(other.reserved, 0u); - free_list = std::exchange(other.free_list, tombstone); - mode = other.mode; - - return *this; - } - - /** - * @brief Returns the deletion policy of a sparse set. - * @return The deletion policy of the sparse set. - */ - [[nodiscard]] deletion_policy policy() const ENTT_NOEXCEPT { - return mode; - } - - /** - * @brief Returns the next slot available for insertion. - * @return The next slot available for insertion. - */ - [[nodiscard]] size_type slot() const ENTT_NOEXCEPT { - return free_list == null ? count : static_cast(traits_type::to_entity(free_list)); - } - - /** - * @brief Increases the capacity of a sparse set. - * - * If the new capacity is greater than the current capacity, new storage is - * allocated, otherwise the method does nothing. - * - * @param cap Desired capacity. - */ - void reserve(const size_type cap) { - if(cap > reserved) { - resize_packed(cap); - } - } - - /** - * @brief Returns the number of elements that a sparse set has currently - * allocated space for. - * @return Capacity of the sparse set. - */ - [[nodiscard]] size_type capacity() const ENTT_NOEXCEPT { - return reserved; - } - - /*! @brief Requests the removal of unused capacity. */ - void shrink_to_fit() { - if(count < reserved) { - resize_packed(count); - } - } - - /** - * @brief Returns the extent of a sparse set. - * - * The extent of a sparse set is also the size of the internal sparse array. - * There is no guarantee that the internal packed array has the same size. - * Usually the size of the internal sparse array is equal or greater than - * the one of the internal packed array. - * - * @return Extent of the sparse set. - */ - [[nodiscard]] size_type extent() const ENTT_NOEXCEPT { - return bucket * sparse_page; - } - - /** - * @brief Returns the number of elements in a sparse set. - * - * The number of elements is also the size of the internal packed array. - * There is no guarantee that the internal sparse array has the same size. - * Usually the size of the internal sparse array is equal or greater than - * the one of the internal packed array. - * - * @return Number of elements. - */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { - return count; - } - - /** - * @brief Checks whether a sparse set is empty. - * @return True if the sparse set is empty, false otherwise. - */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { - return (count == size_type{}); - } - - /** - * @brief Direct access to the internal packed array. - * @return A pointer to the internal packed array. - */ - [[nodiscard]] pointer data() const ENTT_NOEXCEPT { - return packed; - } - - /** - * @brief Returns an iterator to the beginning. - * - * The returned iterator points to the first entity of the internal packed - * array. If the sparse set is empty, the returned iterator will be equal to - * `end()`. - * - * @return An iterator to the first entity of the internal packed array. - */ - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return iterator{std::addressof(packed), static_cast(count)}; - } - - /** - * @brief Returns an iterator to the end. - * - * The returned iterator points to the element following the last entity in - * the internal packed array. Attempting to dereference the returned - * iterator results in undefined behavior. - * - * @return An iterator to the element following the last entity of the - * internal packed array. - */ - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return iterator{std::addressof(packed), {}}; - } - - /** - * @brief Returns a reverse iterator to the beginning. - * - * The returned iterator points to the first entity of the reversed internal - * packed array. If the sparse set is empty, the returned iterator will be - * equal to `rend()`. - * - * @return An iterator to the first entity of the reversed internal packed - * array. - */ - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return std::make_reverse_iterator(end()); - } - - /** - * @brief Returns a reverse iterator to the end. - * - * The returned iterator points to the element following the last entity in - * the reversed internal packed array. Attempting to dereference the - * returned iterator results in undefined behavior. - * - * @return An iterator to the element following the last entity of the - * reversed internal packed array. - */ - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return std::make_reverse_iterator(begin()); - } - - /** - * @brief Finds an entity. - * @param entt A valid entity identifier. - * @return An iterator to the given entity if it's found, past the end - * iterator otherwise. - */ - [[nodiscard]] iterator find(const entity_type entt) const ENTT_NOEXCEPT { - return contains(entt) ? --(end() - index(entt)) : end(); - } - - /** - * @brief Checks if a sparse set contains an entity. - * @param entt A valid entity identifier. - * @return True if the sparse set contains the entity, false otherwise. - */ - [[nodiscard]] bool contains(const entity_type entt) const ENTT_NOEXCEPT { - ENTT_ASSERT(entt != tombstone && entt != null, "Invalid entity"); - const auto curr = page(entt); - // testing versions permits to avoid accessing the packed array - return (curr < bucket && sparse[curr] && sparse[curr][offset(entt)] != null); - } - - /** - * @brief Returns the position of an entity in a sparse set. - * - * @warning - * Attempting to get the position of an entity that doesn't belong to the - * sparse set results in undefined behavior. - * - * @param entt A valid entity identifier. - * @return The position of the entity in the sparse set. - */ - [[nodiscard]] size_type index(const entity_type entt) const ENTT_NOEXCEPT { - ENTT_ASSERT(contains(entt), "Set does not contain entity"); - return static_cast(traits_type::to_entity(sparse[page(entt)][offset(entt)])); - } - - /** - * @brief Returns the entity at specified location, with bounds checking. - * @param pos The position for which to return the entity. - * @return The entity at specified location if any, a null entity otherwise. - */ - [[nodiscard]] entity_type at(const size_type pos) const ENTT_NOEXCEPT { - return pos < count ? packed[pos] : null; - } - - /** - * @brief Returns the entity at specified location, without bounds checking. - * @param pos The position for which to return the entity. - * @return The entity at specified location. - */ - [[nodiscard]] entity_type operator[](const size_type pos) const ENTT_NOEXCEPT { - ENTT_ASSERT(pos < count, "Position is out of bounds"); - return packed[pos]; - } - - /** - * @brief Appends an entity to a sparse set. - * - * @warning - * Attempting to assign an entity that already belongs to the sparse set - * results in undefined behavior. - * - * @param entt A valid entity identifier. - * @return The slot used for insertion. - */ - size_type emplace_back(const entity_type entt) { - ENTT_ASSERT(!contains(entt), "Set already contains entity"); - - if(count == reserved) { - const size_type sz = static_cast(reserved * growth_factor); - resize_packed(sz + !(sz > reserved)); - } - - assure_page(page(entt))[offset(entt)] = traits_type::construct(static_cast(count)); - packed[count] = entt; - return count++; - } - - /** - * @brief Assigns an entity to a sparse set. - * - * @warning - * Attempting to assign an entity that already belongs to the sparse set - * results in undefined behavior. - * - * @param entt A valid entity identifier. - * @return The slot used for insertion. - */ - size_type emplace(const entity_type entt) { - if(free_list == null) { - return emplace_back(entt); - } else { - ENTT_ASSERT(!contains(entt), "Set already contains entity"); - const auto pos = static_cast(traits_type::to_entity(free_list)); - assure_page(page(entt))[offset(entt)] = traits_type::construct(static_cast(pos)); - free_list = std::exchange(packed[pos], entt); - return pos; - } - } - - /** - * @brief Assigns one or more entities to a sparse set. - * - * @warning - * Attempting to assign an entity that already belongs to the sparse set - * results in undefined behavior. - * - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - */ - template - void insert(It first, It last) { - reserve(count + std::distance(first, last)); - - for(; first != last; ++first) { - const auto entt = *first; - ENTT_ASSERT(!contains(entt), "Set already contains entity"); - assure_page(page(entt))[offset(entt)] = traits_type::construct(static_cast(count)); - packed[count++] = entt; - } - } - - /** - * @brief Erases an entity from a sparse set. - * - * @warning - * Attempting to erase an entity that doesn't belong to the sparse set - * results in undefined behavior. - * - * @param entt A valid entity identifier. - * @param ud Optional user data that are forwarded as-is to derived classes. - */ - void erase(const entity_type entt, void *ud = nullptr) { - ENTT_ASSERT(contains(entt), "Set does not contain entity"); - (mode == deletion_policy::in_place) ? in_place_pop(entt, ud) : swap_and_pop(entt, ud); - } - - /** - * @brief Erases entities from a set. - * - * @sa erase - * - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param ud Optional user data that are forwarded as-is to derived classes. - */ - template - void erase(It first, It last, void *ud = nullptr) { - for(; first != last; ++first) { - erase(*first, ud); - } - } - - /** - * @brief Removes an entity from a sparse set if it exists. - * @param entt A valid entity identifier. - * @param ud Optional user data that are forwarded as-is to derived classes. - * @return True if the entity is actually removed, false otherwise. - */ - bool remove(const entity_type entt, void *ud = nullptr) { - return contains(entt) && (erase(entt, ud), true); - } - - /** - * @brief Removes entities from a sparse set if they exist. - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param ud Optional user data that are forwarded as-is to derived classes. - * @return The number of entities actually removed. - */ - template - size_type remove(It first, It last, void *ud = nullptr) { - size_type found{}; - - for(; first != last; ++first) { - found += remove(*first, ud); - } - - return found; - } - - /*! @brief Removes all tombstones from the packed array of a sparse set. */ - void compact() { - size_type next = count; - for(; next && packed[next - 1u] == tombstone; --next); - - for(auto *it = &free_list; *it != null && next; it = std::addressof(packed[traits_type::to_entity(*it)])) { - if(const size_type pos = traits_type::to_entity(*it); pos < next) { - --next; - move_and_pop(next, pos); - std::swap(packed[next], packed[pos]); - sparse[page(packed[pos])][offset(packed[pos])] = traits_type::construct(static_cast(pos)); - *it = traits_type::construct(static_cast(next)); - for(; next && packed[next - 1u] == tombstone; --next); - } - } - - free_list = tombstone; - count = next; - } - - /** - * @copybrief swap_at - * - * For what it's worth, this function affects both the internal sparse array - * and the internal packed array. Users should not care of that anyway. - * - * @warning - * Attempting to swap entities that don't belong to the sparse set results - * in undefined behavior. - * - * @param lhs A valid entity identifier. - * @param rhs A valid entity identifier. - */ - void swap(const entity_type lhs, const entity_type rhs) { - ENTT_ASSERT(contains(lhs), "Set does not contain entity"); - ENTT_ASSERT(contains(rhs), "Set does not contain entity"); - - auto &entt = sparse[page(lhs)][offset(lhs)]; - auto &other = sparse[page(rhs)][offset(rhs)]; - - const auto from = static_cast(traits_type::to_entity(entt)); - const auto to = static_cast(traits_type::to_entity(other)); - - // basic no-leak guarantee (with invalid state) if swapping throws - swap_at(from, to); - std::swap(entt, other); - std::swap(packed[from], packed[to]); - } - - /** - * @brief Sort the first count elements according to the given comparison - * function. - * - * The comparison function object must return `true` if the first element - * is _less_ than the second one, `false` otherwise. The signature of the - * comparison function should be equivalent to the following: - * - * @code{.cpp} - * bool(const Entity, const Entity); - * @endcode - * - * Moreover, the comparison function object shall induce a - * _strict weak ordering_ on the values. - * - * The sort function object must offer a member function template - * `operator()` that accepts three arguments: - * - * * An iterator to the first element of the range to sort. - * * An iterator past the last element of the range to sort. - * * A comparison function to use to compare the elements. - * - * @tparam Compare Type of comparison function object. - * @tparam Sort Type of sort function object. - * @tparam Args Types of arguments to forward to the sort function object. - * @param length Number of elements to sort. - * @param compare A valid comparison function object. - * @param algo A valid sort function object. - * @param args Arguments to forward to the sort function object, if any. - */ - template - void sort_n(const size_type length, Compare compare, Sort algo = Sort{}, Args &&... args) { - // basic no-leak guarantee (with invalid state) if sorting throws - ENTT_ASSERT(!(length > count), "Length exceeds the number of elements"); - compact(); - - algo(std::make_reverse_iterator(packed + length), std::make_reverse_iterator(packed), std::move(compare), std::forward(args)...); - - for(size_type pos{}; pos < length; ++pos) { - auto curr = pos; - auto next = index(packed[curr]); - - while(curr != next) { - const auto idx = index(packed[next]); - const auto entt = packed[curr]; - - swap_at(next, idx); - sparse[page(entt)][offset(entt)] = traits_type::construct(static_cast(curr)); - curr = std::exchange(next, idx); - } - } - } - - /** - * @brief Sort all elements according to the given comparison function. - * - * @sa sort_n - * - * @tparam Compare Type of comparison function object. - * @tparam Sort Type of sort function object. - * @tparam Args Types of arguments to forward to the sort function object. - * @param compare A valid comparison function object. - * @param algo A valid sort function object. - * @param args Arguments to forward to the sort function object, if any. - */ - template - void sort(Compare compare, Sort algo = Sort{}, Args &&... args) { - sort_n(count, std::move(compare), std::move(algo), std::forward(args)...); - } - - /** - * @brief Sort entities according to their order in another sparse set. - * - * Entities that are part of both the sparse sets are ordered internally - * according to the order they have in `other`. All the other entities goes - * to the end of the list and there are no guarantees on their order.
- * In other terms, this function can be used to impose the same order on two - * sets by using one of them as a master and the other one as a slave. - * - * Iterating the sparse set with a couple of iterators returns elements in - * the expected order after a call to `respect`. See `begin` and `end` for - * more details. - * - * @param other The sparse sets that imposes the order of the entities. - */ - void respect(const basic_sparse_set &other) { - compact(); - - const auto to = other.end(); - auto from = other.begin(); - - for(size_type pos = count - 1; pos && from != to; ++from) { - if(contains(*from)) { - if(*from != packed[pos]) { - // basic no-leak guarantee (with invalid state) if swapping throws - swap(packed[pos], *from); - } - - --pos; - } - } - } - - /** - * @brief Clears a sparse set. - * @param ud Optional user data that are forwarded as-is to derived classes. - */ - void clear(void *ud = nullptr) { - for(auto &&entity: *this) { - if(entity != tombstone) { - in_place_pop(entity, ud); - } - } - - free_list = tombstone; - count = 0u; - } - -private: - typename alloc_traits::allocator_type allocator; - typename bucket_alloc_traits::allocator_type bucket_allocator; - bucket_alloc_pointer sparse; - alloc_pointer packed; - std::size_t bucket; - std::size_t count; - std::size_t reserved; - entity_type free_list; - deletion_policy mode; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/storage.hpp b/LiteLoader/Header/third-party/entt/entity/storage.hpp deleted file mode 100644 index e100989..0000000 --- a/LiteLoader/Header/third-party/entt/entity/storage.hpp +++ /dev/null @@ -1,1045 +0,0 @@ -#ifndef ENTT_ENTITY_STORAGE_HPP -#define ENTT_ENTITY_STORAGE_HPP - - -#include -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/algorithm.hpp" -#include "../core/fwd.hpp" -#include "../core/type_traits.hpp" -#include "../signal/sigh.hpp" -#include "component.hpp" -#include "entity.hpp" -#include "fwd.hpp" -#include "sparse_set.hpp" - - -namespace entt { - - -/** - * @brief Basic storage implementation. - * - * This class is a refinement of a sparse set that associates an object to an - * entity. The main purpose of this class is to extend sparse sets to store - * components in a registry. It guarantees fast access both to the elements and - * to the entities. - * - * @note - * Entities and objects have the same order. - * - * @note - * Internal data structures arrange elements to maximize performance. There are - * no guarantees that objects are returned in the insertion order when iterate - * a storage. Do not make assumption on the order in any case. - * - * @warning - * Empty types aren't explicitly instantiated. Therefore, many of the functions - * normally available for non-empty types will not be available for empty ones. - * - * @sa sparse_set - * - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Type Type of objects assigned to the entities. - * @tparam Allocator Type of allocator used to manage memory and elements. - */ -template -class basic_storage_impl: public basic_sparse_set::template rebind_alloc> { - static constexpr auto packed_page = ENTT_PACKED_PAGE; - - using comp_traits = component_traits; - - using underlying_type = basic_sparse_set::template rebind_alloc>; - using difference_type = typename entt_traits::difference_type; - - using alloc_traits = typename std::allocator_traits::template rebind_traits; - using alloc_pointer = typename alloc_traits::pointer; - using alloc_const_pointer = typename alloc_traits::const_pointer; - - using bucket_alloc_traits = typename std::allocator_traits::template rebind_traits; - using bucket_alloc_pointer = typename bucket_alloc_traits::pointer; - - using bucket_alloc_const_type = typename std::allocator_traits::template rebind_alloc; - using bucket_alloc_const_pointer = typename std::allocator_traits::const_pointer; - - static_assert(alloc_traits::propagate_on_container_move_assignment::value); - static_assert(bucket_alloc_traits::propagate_on_container_move_assignment::value); - - template - struct storage_iterator final { - using difference_type = typename basic_storage_impl::difference_type; - using value_type = Value; - using pointer = value_type *; - using reference = value_type &; - using iterator_category = std::random_access_iterator_tag; - - storage_iterator() ENTT_NOEXCEPT = default; - - storage_iterator(bucket_alloc_pointer const *ref, const typename basic_storage_impl::difference_type idx) ENTT_NOEXCEPT - : packed{ref}, - index{idx} - {} - - storage_iterator & operator++() ENTT_NOEXCEPT { - return --index, *this; - } - - storage_iterator operator++(int) ENTT_NOEXCEPT { - storage_iterator orig = *this; - return ++(*this), orig; - } - - storage_iterator & operator--() ENTT_NOEXCEPT { - return ++index, *this; - } - - storage_iterator operator--(int) ENTT_NOEXCEPT { - storage_iterator orig = *this; - return operator--(), orig; - } - - storage_iterator & operator+=(const difference_type value) ENTT_NOEXCEPT { - index -= value; - return *this; - } - - storage_iterator operator+(const difference_type value) const ENTT_NOEXCEPT { - storage_iterator copy = *this; - return (copy += value); - } - - storage_iterator & operator-=(const difference_type value) ENTT_NOEXCEPT { - return (*this += -value); - } - - storage_iterator operator-(const difference_type value) const ENTT_NOEXCEPT { - return (*this + -value); - } - - difference_type operator-(const storage_iterator &other) const ENTT_NOEXCEPT { - return other.index - index; - } - - [[nodiscard]] reference operator[](const difference_type value) const ENTT_NOEXCEPT { - const auto pos = size_type(index-value-1); - return (*packed)[page(pos)][offset(pos)]; - } - - [[nodiscard]] bool operator==(const storage_iterator &other) const ENTT_NOEXCEPT { - return other.index == index; - } - - [[nodiscard]] bool operator!=(const storage_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - [[nodiscard]] bool operator<(const storage_iterator &other) const ENTT_NOEXCEPT { - return index > other.index; - } - - [[nodiscard]] bool operator>(const storage_iterator &other) const ENTT_NOEXCEPT { - return index < other.index; - } - - [[nodiscard]] bool operator<=(const storage_iterator &other) const ENTT_NOEXCEPT { - return !(*this > other); - } - - [[nodiscard]] bool operator>=(const storage_iterator &other) const ENTT_NOEXCEPT { - return !(*this < other); - } - - [[nodiscard]] pointer operator->() const ENTT_NOEXCEPT { - const auto pos = size_type(index-1u); - return std::addressof((*packed)[page(pos)][offset(pos)]); - } - - [[nodiscard]] reference operator*() const ENTT_NOEXCEPT { - return *operator->(); - } - - private: - bucket_alloc_pointer const *packed; - difference_type index; - }; - - [[nodiscard]] static auto page(const std::size_t pos) ENTT_NOEXCEPT { - return pos / packed_page; - } - - [[nodiscard]] static auto offset(const std::size_t pos) ENTT_NOEXCEPT { - return pos & (packed_page - 1); - } - - void release_memory() { - if(packed) { - // no-throw stable erase iteration - underlying_type::clear(); - - for(size_type pos{}; pos < bucket; ++pos) { - alloc_traits::deallocate(allocator, packed[pos], packed_page); - bucket_alloc_traits::destroy(bucket_allocator, std::addressof(packed[pos])); - } - - bucket_alloc_traits::deallocate(bucket_allocator, packed, bucket); - } - } - - void assure_at_least(const std::size_t last) { - if(const auto idx = page(last - 1u); !(idx < bucket)) { - const size_type sz = idx + 1u; - const auto mem = bucket_alloc_traits::allocate(bucket_allocator, sz); - std::uninitialized_copy(packed, packed + bucket, mem); - size_type pos{}; - - ENTT_TRY { - for(pos = bucket; pos < sz; ++pos) { - auto pg = alloc_traits::allocate(allocator, packed_page); - bucket_alloc_traits::construct(bucket_allocator, std::addressof(mem[pos]), pg); - } - } ENTT_CATCH { - for(auto next = bucket; next < pos; ++next) { - alloc_traits::deallocate(allocator, mem[next], packed_page); - } - - std::destroy(mem, mem + pos); - bucket_alloc_traits::deallocate(bucket_allocator, mem, sz); - ENTT_THROW; - } - - std::destroy(packed, packed + bucket); - bucket_alloc_traits::deallocate(bucket_allocator, packed, bucket); - - packed = mem; - bucket = sz; - } - } - - void release_unused_pages() { - if(const auto length = underlying_type::size() / packed_page; length < bucket) { - const auto mem = bucket_alloc_traits::allocate(bucket_allocator, length); - std::uninitialized_copy(packed, packed + length, mem); - - for(auto pos = length; pos < bucket; ++pos) { - alloc_traits::deallocate(allocator, packed[pos], packed_page); - bucket_alloc_traits::destroy(bucket_allocator, std::addressof(packed[pos])); - } - - bucket_alloc_traits::deallocate(bucket_allocator, packed, bucket); - - packed = mem; - bucket = length; - } - } - - template - auto & push_at(const std::size_t pos, Args &&... args) { - ENTT_ASSERT(pos < (bucket * packed_page), "Out of bounds index"); - auto *instance = std::addressof(packed[page(pos)][offset(pos)]); - - if constexpr(std::is_aggregate_v) { - alloc_traits::construct(allocator, instance, Type{std::forward(args)...}); - } else { - alloc_traits::construct(allocator, instance, std::forward(args)...); - } - - return *instance; - } - - void pop_at(const std::size_t pos) { - alloc_traits::destroy(allocator, std::addressof(packed[page(pos)][offset(pos)])); - } - -protected: - /*! @copydoc basic_sparse_set::swap_at */ - void swap_at(const std::size_t lhs, const std::size_t rhs) final { - std::swap(packed[page(lhs)][offset(lhs)], packed[page(rhs)][offset(rhs)]); - } - - /*! @copydoc basic_sparse_set::move_and_pop */ - void move_and_pop(const std::size_t from, const std::size_t to) final { - push_at(to, std::move(packed[page(from)][offset(from)])); - pop_at(from); - } - - /*! @copydoc basic_sparse_set::swap_and_pop */ - void swap_and_pop(const Entity entt, void *ud) override { - const auto pos = underlying_type::index(entt); - const auto last = underlying_type::size() - 1u; - auto &&elem = packed[page(pos)][offset(pos)]; - - // support for nosy destructors - [[maybe_unused]] auto unused = std::move(elem); - elem = std::move(packed[page(last)][offset(last)]); - pop_at(last); - - underlying_type::swap_and_pop(entt, ud); - } - - /*! @copydoc basic_sparse_set::in_place_pop */ - void in_place_pop(const Entity entt, void *ud) override { - const auto pos = underlying_type::index(entt); - underlying_type::in_place_pop(entt, ud); - // support for nosy destructors - pop_at(pos); - } - -public: - /*! @brief Allocator type. */ - using allocator_type = typename alloc_traits::allocator_type; - /*! @brief Type of the objects assigned to entities. */ - using value_type = Type; - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Pointer type to contained elements. */ - using pointer = bucket_alloc_pointer; - /*! @brief Constant pointer type to contained elements. */ - using const_pointer = bucket_alloc_const_pointer; - /*! @brief Random access iterator type. */ - using iterator = storage_iterator; - /*! @brief Constant random access iterator type. */ - using const_iterator = storage_iterator; - /*! @brief Reverse iterator type. */ - using reverse_iterator = std::reverse_iterator; - /*! @brief Constant reverse iterator type. */ - using const_reverse_iterator = std::reverse_iterator; - - /** - * @brief Default constructor. - * @param alloc Allocator to use (possibly default-constructed). - */ - explicit basic_storage_impl(const allocator_type &alloc = {}) - : underlying_type{deletion_policy{comp_traits::in_place_delete::value}, alloc}, - allocator{alloc}, - bucket_allocator{alloc}, - packed{bucket_alloc_traits::allocate(bucket_allocator, 0u)}, - bucket{} - {} - - /** - * @brief Move constructor. - * @param other The instance to move from. - */ - basic_storage_impl(basic_storage_impl &&other) ENTT_NOEXCEPT - : underlying_type{std::move(other)}, - allocator{std::move(other.allocator)}, - bucket_allocator{std::move(other.bucket_allocator)}, - packed{std::exchange(other.packed, bucket_alloc_pointer{})}, - bucket{std::exchange(other.bucket, 0u)} - {} - - /*! @brief Default destructor. */ - ~basic_storage_impl() override { - release_memory(); - } - - /** - * @brief Move assignment operator. - * @param other The instance to move from. - * @return This sparse set. - */ - basic_storage_impl & operator=(basic_storage_impl &&other) ENTT_NOEXCEPT { - release_memory(); - - underlying_type::operator=(std::move(other)); - - allocator = std::move(other.allocator); - bucket_allocator = std::move(other.bucket_allocator); - packed = std::exchange(other.packed, bucket_alloc_pointer{}); - bucket = std::exchange(other.bucket, 0u); - - return *this; - } - - /** - * @brief Increases the capacity of a storage. - * - * If the new capacity is greater than the current capacity, new storage is - * allocated, otherwise the method does nothing. - * - * @param cap Desired capacity. - */ - void reserve(const size_type cap) { - underlying_type::reserve(cap); - - if(cap > underlying_type::size()) { - assure_at_least(cap); - } - } - - /** - * @brief Returns the number of elements that a storage has currently - * allocated space for. - * @return Capacity of the storage. - */ - [[nodiscard]] size_type capacity() const ENTT_NOEXCEPT { - return bucket * packed_page; - } - - /*! @brief Requests the removal of unused capacity. */ - void shrink_to_fit() { - underlying_type::shrink_to_fit(); - release_unused_pages(); - } - - /** - * @brief Direct access to the array of objects. - * @return A pointer to the array of objects. - */ - [[nodiscard]] const_pointer raw() const ENTT_NOEXCEPT { - return packed; - } - - /*! @copydoc raw */ - [[nodiscard]] pointer raw() ENTT_NOEXCEPT { - return packed; - } - - /** - * @brief Returns an iterator to the beginning. - * - * The returned iterator points to the first instance of the internal array. - * If the storage is empty, the returned iterator will be equal to `end()`. - * - * @return An iterator to the first instance of the internal array. - */ - [[nodiscard]] const_iterator cbegin() const ENTT_NOEXCEPT { - const difference_type pos = underlying_type::size(); - return const_iterator{std::addressof(packed), pos}; - } - - /*! @copydoc cbegin */ - [[nodiscard]] const_iterator begin() const ENTT_NOEXCEPT { - return cbegin(); - } - - /*! @copydoc begin */ - [[nodiscard]] iterator begin() ENTT_NOEXCEPT { - const difference_type pos = underlying_type::size(); - return iterator{std::addressof(packed), pos}; - } - - /** - * @brief Returns an iterator to the end. - * - * The returned iterator points to the element following the last instance - * of the internal array. Attempting to dereference the returned iterator - * results in undefined behavior. - * - * @return An iterator to the element following the last instance of the - * internal array. - */ - [[nodiscard]] const_iterator cend() const ENTT_NOEXCEPT { - return const_iterator{std::addressof(packed), {}}; - } - - /*! @copydoc cend */ - [[nodiscard]] const_iterator end() const ENTT_NOEXCEPT { - return cend(); - } - - /*! @copydoc end */ - [[nodiscard]] iterator end() ENTT_NOEXCEPT { - return iterator{std::addressof(packed), {}}; - } - - /** - * @brief Returns a reverse iterator to the beginning. - * - * The returned iterator points to the first instance of the reversed - * internal array. If the storage is empty, the returned iterator will be - * equal to `rend()`. - * - * @return An iterator to the first instance of the reversed internal array. - */ - [[nodiscard]] const_reverse_iterator crbegin() const ENTT_NOEXCEPT { - return std::make_reverse_iterator(cend()); - } - - /*! @copydoc crbegin */ - [[nodiscard]] const_reverse_iterator rbegin() const ENTT_NOEXCEPT { - return crbegin(); - } - - /*! @copydoc rbegin */ - [[nodiscard]] reverse_iterator rbegin() ENTT_NOEXCEPT { - return std::make_reverse_iterator(end()); - } - - /** - * @brief Returns a reverse iterator to the end. - * - * The returned iterator points to the element following the last instance - * of the reversed internal array. Attempting to dereference the returned - * iterator results in undefined behavior. - * - * @return An iterator to the element following the last instance of the - * reversed internal array. - */ - [[nodiscard]] const_reverse_iterator crend() const ENTT_NOEXCEPT { - return std::make_reverse_iterator(cbegin()); - } - - /*! @copydoc crend */ - [[nodiscard]] const_reverse_iterator rend() const ENTT_NOEXCEPT { - return crend(); - } - - /*! @copydoc rend */ - [[nodiscard]] reverse_iterator rend() ENTT_NOEXCEPT { - return std::make_reverse_iterator(begin()); - } - - /** - * @brief Returns the object assigned to an entity. - * - * @warning - * Attempting to use an entity that doesn't belong to the storage results in - * undefined behavior. - * - * @param entt A valid entity identifier. - * @return The object assigned to the entity. - */ - [[nodiscard]] const value_type & get(const entity_type entt) const ENTT_NOEXCEPT { - const auto idx = underlying_type::index(entt); - return packed[page(idx)][offset(idx)]; - } - - /*! @copydoc get */ - [[nodiscard]] value_type & get(const entity_type entt) ENTT_NOEXCEPT { - return const_cast(std::as_const(*this).get(entt)); - } - - /** - * @brief Assigns an entity to a storage and constructs its object. - * - * This version accept both types that can be constructed in place directly - * and types like aggregates that do not work well with a placement new as - * performed usually under the hood during an _emplace back_. - * - * @warning - * Attempting to use an entity that already belongs to the storage results - * in undefined behavior. - * - * @tparam Args Types of arguments to use to construct the object. - * @param entt A valid entity identifier. - * @param args Parameters to use to construct an object for the entity. - * @return A reference to the newly created object. - */ - template - value_type & emplace(const entity_type entt, Args &&... args) { - const auto pos = underlying_type::slot(); - assure_at_least(pos + 1u); - - auto &value = push_at(pos, std::forward(args)...); - - ENTT_TRY { - [[maybe_unused]] const auto curr = underlying_type::emplace(entt); - ENTT_ASSERT(pos == curr, "Misplaced component"); - } ENTT_CATCH { - pop_at(pos); - ENTT_THROW; - } - - return value; - } - - /** - * @brief Updates the instance assigned to a given entity in-place. - * @tparam Func Types of the function objects to invoke. - * @param entt A valid entity identifier. - * @param func Valid function objects. - * @return A reference to the updated instance. - */ - template - decltype(auto) patch(const entity_type entt, Func &&... func) { - const auto idx = underlying_type::index(entt); - auto &&elem = packed[page(idx)][offset(idx)]; - (std::forward(func)(elem), ...); - return elem; - } - - /** - * @brief Assigns one or more entities to a storage and constructs their - * objects from a given instance. - * - * @warning - * Attempting to assign an entity that already belongs to the storage - * results in undefined behavior. - * - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param value An instance of the object to construct. - */ - template - void insert(It first, It last, const value_type &value = {}) { - const auto cap = underlying_type::size() + std::distance(first, last); - underlying_type::reserve(cap); - assure_at_least(cap); - - for(; first != last; ++first) { - push_at(underlying_type::size(), value); - - ENTT_TRY { - underlying_type::emplace_back(*first); - } ENTT_CATCH { - pop_at(underlying_type::size()); - ENTT_THROW; - } - } - } - - /** - * @brief Assigns one or more entities to a storage and constructs their - * objects from a given range. - * - * @sa construct - * - * @tparam EIt Type of input iterator. - * @tparam CIt Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param from An iterator to the first element of the range of objects. - */ - template::value_type>, value_type>>> - void insert(EIt first, EIt last, CIt from) { - const auto cap = underlying_type::size() + std::distance(first, last); - underlying_type::reserve(cap); - assure_at_least(cap); - - for(; first != last; ++first, ++from) { - push_at(underlying_type::size(), *from); - - ENTT_TRY { - underlying_type::emplace_back(*first); - } ENTT_CATCH { - pop_at(underlying_type::size()); - ENTT_THROW; - } - } - } - - /** - * @brief Sort elements according to the given comparison function. - * - * The comparison function object must return `true` if the first element - * is _less_ than the second one, `false` otherwise. The signature of the - * comparison function should be equivalent to one of the following: - * - * @code{.cpp} - * bool(const Entity, const Entity); - * bool(const Type &, const Type &); - * @endcode - * - * Moreover, the comparison function object shall induce a - * _strict weak ordering_ on the values. - * - * The sort function oject must offer a member function template - * `operator()` that accepts three arguments: - * - * * An iterator to the first element of the range to sort. - * * An iterator past the last element of the range to sort. - * * A comparison function to use to compare the elements. - * - * @warning - * Empty types are never instantiated. Therefore, only comparison function - * objects that require to return entities rather than components are - * accepted. - * - * @tparam Compare Type of comparison function object. - * @tparam Sort Type of sort function object. - * @tparam Args Types of arguments to forward to the sort function object. - * @param length Number of elements to sort. - * @param compare A valid comparison function object. - * @param algo A valid sort function object. - * @param args Arguments to forward to the sort function object, if any. - */ - template - void sort_n(const size_type length, Compare compare, Sort algo = Sort{}, Args &&... args) { - if constexpr(std::is_invocable_v) { - underlying_type::sort_n(length, [this, compare = std::move(compare)](const auto lhs, const auto rhs) { - const auto ilhs = underlying_type::index(lhs), irhs = underlying_type::index(rhs); - return compare(std::as_const(packed[page(ilhs)][offset(ilhs)]), std::as_const(packed[page(irhs)][offset(irhs)])); - }, std::move(algo), std::forward(args)...); - } else { - underlying_type::sort_n(length, std::move(compare), std::move(algo), std::forward(args)...); - } - } - - /** - * @brief Sort all elements according to the given comparison function. - * - * @sa sort_n - * - * @tparam Compare Type of comparison function object. - * @tparam Sort Type of sort function object. - * @tparam Args Types of arguments to forward to the sort function object. - * @param compare A valid comparison function object. - * @param algo A valid sort function object. - * @param args Arguments to forward to the sort function object, if any. - */ - template - void sort(Compare compare, Sort algo = Sort{}, Args &&... args) { - sort_n(underlying_type::size(), std::move(compare), std::move(algo), std::forward(args)...); - } - -private: - typename alloc_traits::allocator_type allocator; - typename bucket_alloc_traits::allocator_type bucket_allocator; - bucket_alloc_pointer packed; - size_type bucket; -}; - - -/*! @copydoc basic_storage_impl */ -template -class basic_storage_impl::ignore_if_empty::value && std::is_empty_v>> - : public basic_sparse_set::template rebind_alloc> -{ - using comp_traits = component_traits; - using underlying_type = basic_sparse_set::template rebind_alloc>; - using alloc_traits = typename std::allocator_traits::template rebind_traits; - -public: - /*! @brief Allocator type. */ - using allocator_type = typename alloc_traits::allocator_type; - /*! @brief Type of the objects assigned to entities. */ - using value_type = Type; - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - - /** - * @brief Default constructor. - * @param alloc Allocator to use (possibly default-constructed). - */ - explicit basic_storage_impl(const allocator_type &alloc = {}) - : underlying_type{deletion_policy{comp_traits::in_place_delete::value}, alloc} - {} - - /** - * @brief Fake get function. - * - * @warning - * Attempting to use an entity that doesn't belong to the storage results in - * undefined behavior. - * - * @param entt A valid entity identifier. - */ - void get([[maybe_unused]] const entity_type entt) const ENTT_NOEXCEPT { - ENTT_ASSERT(underlying_type::contains(entt), "Storage does not contain entity"); - } - - /** - * @brief Assigns an entity to a storage and constructs its object. - * - * @warning - * Attempting to use an entity that already belongs to the storage results - * in undefined behavior. - * - * @tparam Args Types of arguments to use to construct the object. - * @param entt A valid entity identifier. - * @param args Parameters to use to construct an object for the entity. - */ - template - void emplace(const entity_type entt, Args &&... args) { - [[maybe_unused]] value_type instance{std::forward(args)...}; - underlying_type::emplace(entt); - } - - /** - * @brief Updates the instance assigned to a given entity in-place. - * @tparam Func Types of the function objects to invoke. - * @param entt A valid entity identifier. - * @param func Valid function objects. - */ - template - void patch([[maybe_unused]] const entity_type entt, Func &&... func) { - ENTT_ASSERT(underlying_type::contains(entt), "Storage does not contain entity"); - (std::forward(func)(), ...); - } - - /** - * @brief Assigns one or more entities to a storage. - * - * @warning - * Attempting to assign an entity that already belongs to the storage - * results in undefined behavior. - * - * @tparam It Type of input iterator. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - */ - template - void insert(It first, It last, const value_type & = {}) { - underlying_type::insert(first, last); - } -}; - - -/** - * @brief Mixin type to use to wrap basic storage classes. - * @tparam Type The type of the underlying storage. - */ -template -struct storage_adapter_mixin: Type { - static_assert(std::is_same_v>, "Invalid object type"); - - /*! @brief Type of the objects assigned to entities. */ - using value_type = typename Type::value_type; - /*! @brief Underlying entity identifier. */ - using entity_type = typename Type::entity_type; - - /*! @brief Inherited constructors. */ - using Type::Type; - - /** - * @brief Assigns entities to a storage. - * @tparam Args Types of arguments to use to construct the object. - * @param entt A valid entity identifier. - * @param args Parameters to use to initialize the object. - * @return A reference to the newly created object. - */ - template - decltype(auto) emplace(basic_registry &, const entity_type entt, Args &&... args) { - return Type::emplace(entt, std::forward(args)...); - } - - /** - * @brief Assigns entities to a storage. - * @tparam It Type of input iterator. - * @tparam Args Types of arguments to use to construct the objects assigned - * to the entities. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param args Parameters to use to initialize the objects assigned to the - * entities. - */ - template - void insert(basic_registry &, It first, It last, Args &&... args) { - Type::insert(first, last, std::forward(args)...); - } - - /** - * @brief Patches the given instance for an entity. - * @tparam Func Types of the function objects to invoke. - * @param entt A valid entity identifier. - * @param func Valid function objects. - * @return A reference to the patched instance. - */ - template - decltype(auto) patch(basic_registry &, const entity_type entt, Func &&... func) { - return Type::patch(entt, std::forward(func)...); - } -}; - - -/** - * @brief Mixin type to use to add signal support to storage types. - * @tparam Type The type of the underlying storage. - */ -template -class sigh_storage_mixin final: public Type { - /*! @copydoc basic_sparse_set::swap_and_pop */ - void swap_and_pop(const typename Type::entity_type entt, void *ud) final { - ENTT_ASSERT(ud != nullptr, "Invalid pointer to registry"); - destruction.publish(*static_cast *>(ud), entt); - Type::swap_and_pop(entt, ud); - } - - /*! @copydoc basic_sparse_set::in_place_pop */ - void in_place_pop(const typename Type::entity_type entt, void *ud) final { - ENTT_ASSERT(ud != nullptr, "Invalid pointer to registry"); - destruction.publish(*static_cast *>(ud), entt); - Type::in_place_pop(entt, ud); - } - -public: - /*! @brief Underlying value type. */ - using value_type = typename Type::value_type; - /*! @brief Underlying entity identifier. */ - using entity_type = typename Type::entity_type; - - /*! @brief Inherited constructors. */ - using Type::Type; - - /** - * @brief Returns a sink object. - * - * The sink returned by this function can be used to receive notifications - * whenever a new instance is created and assigned to an entity.
- * The function type for a listener is equivalent to: - * - * @code{.cpp} - * void(basic_registry &, entity_type); - * @endcode - * - * Listeners are invoked **after** the object has been assigned to the - * entity. - * - * @sa sink - * - * @return A temporary sink object. - */ - [[nodiscard]] auto on_construct() ENTT_NOEXCEPT { - return sink{construction}; - } - - /** - * @brief Returns a sink object. - * - * The sink returned by this function can be used to receive notifications - * whenever an instance is explicitly updated.
- * The function type for a listener is equivalent to: - * - * @code{.cpp} - * void(basic_registry &, entity_type); - * @endcode - * - * Listeners are invoked **after** the object has been updated. - * - * @sa sink - * - * @return A temporary sink object. - */ - [[nodiscard]] auto on_update() ENTT_NOEXCEPT { - return sink{update}; - } - - /** - * @brief Returns a sink object. - * - * The sink returned by this function can be used to receive notifications - * whenever an instance is removed from an entity and thus destroyed.
- * The function type for a listener is equivalent to: - * - * @code{.cpp} - * void(basic_registry &, entity_type); - * @endcode - * - * Listeners are invoked **before** the object has been removed from the - * entity. - * - * @sa sink - * - * @return A temporary sink object. - */ - [[nodiscard]] auto on_destroy() ENTT_NOEXCEPT { - return sink{destruction}; - } - - /** - * @brief Assigns entities to a storage. - * @tparam Args Types of arguments to use to construct the object. - * @param owner The registry that issued the request. - * @param entt A valid entity identifier. - * @param args Parameters to use to initialize the object. - * @return A reference to the newly created object. - */ - template - decltype(auto) emplace(basic_registry &owner, const entity_type entt, Args &&... args) { - Type::emplace(entt, std::forward(args)...); - construction.publish(owner, entt); - return this->get(entt); - } - - /** - * @brief Assigns entities to a storage. - * @tparam It Type of input iterator. - * @tparam Args Types of arguments to use to construct the objects assigned - * to the entities. - * @param owner The registry that issued the request. - * @param first An iterator to the first element of the range of entities. - * @param last An iterator past the last element of the range of entities. - * @param args Parameters to use to initialize the objects assigned to the - * entities. - */ - template - void insert(basic_registry &owner, It first, It last, Args &&... args) { - Type::insert(first, last, std::forward(args)...); - - if(!construction.empty()) { - for(; first != last; ++first) { - construction.publish(owner, *first); - } - } - } - - /** - * @brief Patches the given instance for an entity. - * @tparam Func Types of the function objects to invoke. - * @param owner The registry that issued the request. - * @param entt A valid entity identifier. - * @param func Valid function objects. - * @return A reference to the patched instance. - */ - template - decltype(auto) patch(basic_registry &owner, const entity_type entt, Func &&... func) { - Type::patch(entt, std::forward(func)...); - update.publish(owner, entt); - return this->get(entt); - } - -private: - sigh &, const entity_type)> construction{}; - sigh &, const entity_type)> destruction{}; - sigh &, const entity_type)> update{}; -}; - - -/** - * @brief Storage implementation dispatcher. - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Type Type of objects assigned to the entities. - * @tparam Allocator Type of allocator used to manage memory and elements. - */ -template -struct basic_storage: basic_storage_impl { - using basic_storage_impl::basic_storage_impl; -}; - - -/** - * @brief Provides a common way to access certain properties of storage types. - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Type Type of objects managed by the storage class. - */ -template -struct storage_traits { - /*! @brief Resulting type after component-to-storage conversion. */ - using storage_type = sigh_storage_mixin>; -}; - - -/** - * @brief Gets the element assigned to an entity from a storage, if any. - * @tparam Type Storage type. - * @param container A valid instance of a storage class. - * @param entt A valid entity identifier. - * @return A possibly empty tuple containing the requested element. - */ -template -[[nodiscard]] auto get_as_tuple([[maybe_unused]] Type &container, [[maybe_unused]] const typename Type::entity_type entt) { - static_assert(std::is_same_v, typename storage_traits::storage_type>, "Invalid storage"); - - if constexpr(std::is_void_v) { - return std::make_tuple(); - } else { - return std::forward_as_tuple(container.get(entt)); - } -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/utility.hpp b/LiteLoader/Header/third-party/entt/entity/utility.hpp deleted file mode 100644 index 84c2b3c..0000000 --- a/LiteLoader/Header/third-party/entt/entity/utility.hpp +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef ENTT_ENTITY_UTILITY_HPP -#define ENTT_ENTITY_UTILITY_HPP - - -#include "../core/type_traits.hpp" - - -namespace entt { - - -/** - * @brief Alias for exclusion lists. - * @tparam Type List of types. - */ -template -struct exclude_t: type_list {}; - - -/** - * @brief Variable template for exclusion lists. - * @tparam Type List of types. - */ -template -inline constexpr exclude_t exclude{}; - - -/** - * @brief Alias for lists of observed components. - * @tparam Type List of types. - */ -template -struct get_t: type_list{}; - - -/** - * @brief Variable template for lists of observed components. - * @tparam Type List of types. - */ -template -inline constexpr get_t get{}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/entity/view.hpp b/LiteLoader/Header/third-party/entt/entity/view.hpp deleted file mode 100644 index cdb13e1..0000000 --- a/LiteLoader/Header/third-party/entt/entity/view.hpp +++ /dev/null @@ -1,1056 +0,0 @@ -#ifndef ENTT_ENTITY_VIEW_HPP -#define ENTT_ENTITY_VIEW_HPP - - -#include -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/type_traits.hpp" -#include "component.hpp" -#include "entity.hpp" -#include "fwd.hpp" -#include "sparse_set.hpp" -#include "storage.hpp" -#include "utility.hpp" - - -namespace entt { - - -/** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - - -namespace internal { - - -template -class view_iterator final { - using basic_common_type = basic_sparse_set::value_type>; - - [[nodiscard]] bool valid() const { - const auto entt = *it; - return Policy::accept(entt) - && std::apply([entt](const auto *... curr) { return (curr->contains(entt) && ...); }, pools) - && std::apply([entt](const auto *... curr) { return (!curr->contains(entt) && ...); }, filter); - } - -public: - using iterator_type = It; - using difference_type = typename std::iterator_traits::difference_type; - using value_type = typename std::iterator_traits::value_type; - using pointer = typename std::iterator_traits::pointer; - using reference = typename std::iterator_traits::reference; - using iterator_category = std::bidirectional_iterator_tag; - - view_iterator() ENTT_NOEXCEPT - : first{}, - last{}, - it{}, - pools{}, - filter{} - {} - - view_iterator(It from, It to, It curr, std::array all_of, std::array none_of) ENTT_NOEXCEPT - : first{from}, - last{to}, - it{curr}, - pools{all_of}, - filter{none_of} - { - if(it != last && !valid()) { - ++(*this); - } - } - - view_iterator & operator++() ENTT_NOEXCEPT { - while(++it != last && !valid()); - return *this; - } - - view_iterator operator++(int) ENTT_NOEXCEPT { - view_iterator orig = *this; - return ++(*this), orig; - } - - view_iterator & operator--() ENTT_NOEXCEPT { - while(--it != first && !valid()); - return *this; - } - - view_iterator operator--(int) ENTT_NOEXCEPT { - view_iterator orig = *this; - return operator--(), orig; - } - - [[nodiscard]] bool operator==(const view_iterator &other) const ENTT_NOEXCEPT { - return other.it == it; - } - - [[nodiscard]] bool operator!=(const view_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - [[nodiscard]] pointer operator->() const { - return &*it; - } - - [[nodiscard]] reference operator*() const { - return *operator->(); - } - -private: - It first; - It last; - It it; - std::array pools; - std::array filter; -}; - - -} - - -/** - * Internal details not to be documented. - * @endcond - */ - - -/*! @brief Stable storage policy, aimed at pointer stability. */ -struct stable_storage_policy { - /** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - template - [[nodiscard]] static constexpr bool accept(const Entity entity) ENTT_NOEXCEPT { - return entity != tombstone; - } - /** - * Internal details not to be documented. - * @endcond - */ -}; - - -/*! @brief Packed storage policy, aimed at faster linear iteration. */ -struct packed_storage_policy { - /** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - template - [[nodiscard]] static constexpr bool accept(const Entity) ENTT_NOEXCEPT { - return true; - } - /** - * Internal details not to be documented. - * @endcond - */ -}; - - -/** - * @brief View implementation. - * - * Primary template isn't defined on purpose. All the specializations give a - * compile-time error, but for a few reasonable cases. - */ -template -class basic_view_impl; - - -/*! @brief View implementation dispatcher. */ -template -struct basic_view; - - -/** - * @brief Multi component view. - * - * Multi component views iterate over those entities that have at least all the - * given components in their bags. During initialization, a multi component view - * looks at the number of entities available for each component and uses the - * smallest set in order to get a performance boost when iterate. - * - * @b Important - * - * Iterators aren't invalidated if: - * - * * New instances of the given components are created and assigned to entities. - * * The entity currently pointed is modified (as an example, if one of the - * given components is removed from the entity to which the iterator points). - * * The entity currently pointed is destroyed. - * - * In all other cases, modifying the pools iterated by the view in any way - * invalidates all the iterators and using them results in undefined behavior. - * - * @note - * Views share references to the underlying data structures of the registry that - * generated them. Therefore any change to the entities and to the components - * made by means of the registry are immediately reflected by views. - * - * @warning - * Lifetime of a view must not overcome that of the registry that generated it. - * In any other case, attempting to use a view results in undefined behavior. - * - * @tparam Policy Common (stricter) storage policy. - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Exclude Types of components used to filter the view. - * @tparam Component Types of components iterated by the view. - */ -template -class basic_view_impl, Component...> { - using basic_common_type = basic_sparse_set; - - template - using storage_type = constness_as_t>::storage_type, Comp>; - - class iterable final { - template - struct iterable_iterator final { - using difference_type = std::ptrdiff_t; - using value_type = decltype(std::tuple_cat(std::tuple{}, std::declval().get({}))); - using pointer = void; - using reference = value_type; - using iterator_category = std::input_iterator_tag; - - iterable_iterator(It from, const basic_view_impl *parent) ENTT_NOEXCEPT - : it{from}, - view{parent} - {} - - iterable_iterator & operator++() ENTT_NOEXCEPT { - return ++it, *this; - } - - iterable_iterator operator++(int) ENTT_NOEXCEPT { - iterable_iterator orig = *this; - return ++(*this), orig; - } - - [[nodiscard]] reference operator*() const ENTT_NOEXCEPT { - return std::tuple_cat(std::make_tuple(*it), view->get(*it)); - } - - [[nodiscard]] bool operator==(const iterable_iterator &other) const ENTT_NOEXCEPT { - return other.it == it; - } - - [[nodiscard]] bool operator!=(const iterable_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - private: - It it; - const basic_view_impl *view; - }; - - public: - using iterator = iterable_iterator>; - using reverse_iterator = iterable_iterator>; - - iterable(const basic_view_impl &parent) - : view{parent} - {} - - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return { view.begin(), &view }; - } - - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return { view.end(), &view }; - } - - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return { view.rbegin(), &view }; - } - - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return { view.rend(), &view }; - } - - private: - const basic_view_impl view; - }; - - [[nodiscard]] const auto * candidate() const ENTT_NOEXCEPT { - return (std::min)({ static_cast(std::get *>(pools))... }, [](const auto *lhs, const auto *rhs) { - return lhs->size() < rhs->size(); - }); - } - - [[nodiscard]] auto pools_to_unchecked_array() const ENTT_NOEXCEPT { - std::size_t pos{}; - std::array other{}; - (static_cast(std::get *>(pools) == view ? void() : void(other[pos++] = std::get *>(pools))), ...); - return other; - } - - [[nodiscard]] auto filter_to_array() const ENTT_NOEXCEPT { - return std::array{std::get *>(filter)...}; - } - - template - [[nodiscard]] auto dispatch_get([[maybe_unused]] It &it, [[maybe_unused]] const Entity entt) const { - if constexpr(std::is_same_v::value_type, typename storage_type::value_type>) { - return std::forward_as_tuple(*it); - } else { - return get_as_tuple(*std::get *>(pools), entt); - } - } - - template - void traverse(Func func) const { - if constexpr(std::is_void_v *>(pools)->get({}))>) { - for(const auto entt: static_cast(*std::get *>(pools))) { - if(Policy::accept(entt) && ((std::is_same_v || std::get *>(pools)->contains(entt)) && ...) - && (!std::get *>(filter)->contains(entt) && ...)) - { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { - std::apply(func, std::tuple_cat(std::make_tuple(entt), get(entt))); - } else { - std::apply(func, get(entt)); - } - } - } - } else { - auto it = std::get *>(pools)->begin(); - - for(const auto entt: static_cast(*std::get *>(pools))) { - if(Policy::accept(entt) && ((std::is_same_v || std::get *>(pools)->contains(entt)) && ...) - && (!std::get *>(filter)->contains(entt) && ...)) - { - if constexpr(is_applicable_v{}, std::declval().get({})))>) { - std::apply(func, std::tuple_cat(std::make_tuple(entt), dispatch_get(it, entt)...)); - } else { - std::apply(func, std::tuple_cat(dispatch_get(it, entt)...)); - } - } - - ++it; - } - } - } - -public: - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Bidirectional iterator type. */ - using iterator = internal::view_iterator; - /*! @brief Reverse iterator type. */ - using reverse_iterator = internal::view_iterator; - /*! @brief Iterable view type. */ - using iterable_view = iterable; - - /*! @brief Default constructor to use to create empty, invalid views. */ - basic_view_impl() ENTT_NOEXCEPT - : view{} - {} - - /** - * @brief Constructs a multi-type view from a set of storage classes. - * @param component The storage for the types to iterate. - * @param epool The storage for the types used to filter the view. - */ - basic_view_impl(storage_type &... component, const storage_type &... epool) ENTT_NOEXCEPT - : pools{&component...}, - filter{&epool...}, - view{candidate()} - {} - - /** - * @brief Forces the type to use to drive iterations. - * @tparam Comp Type of component to use to drive the iteration. - */ - template - void use() const ENTT_NOEXCEPT { - view = std::get *>(pools); - } - - /** - * @brief Estimates the number of entities iterated by the view. - * @return Estimated number of entities iterated by the view. - */ - [[nodiscard]] size_type size_hint() const ENTT_NOEXCEPT { - return view->size(); - } - - /** - * @brief Returns an iterator to the first entity of the view. - * - * The returned iterator points to the first entity of the view. If the view - * is empty, the returned iterator will be equal to `end()`. - * - * @return An iterator to the first entity of the view. - */ - [[nodiscard]] iterator begin() const { - return iterator{view->begin(), view->end(), view->begin(), pools_to_unchecked_array(), filter_to_array()}; - } - - /** - * @brief Returns an iterator that is past the last entity of the view. - * - * The returned iterator points to the entity following the last entity of - * the view. Attempting to dereference the returned iterator results in - * undefined behavior. - * - * @return An iterator to the entity following the last entity of the view. - */ - [[nodiscard]] iterator end() const { - return iterator{view->begin(), view->end(), view->end(), pools_to_unchecked_array(), filter_to_array()}; - } - - /** - * @brief Returns an iterator to the first entity of the reversed view. - * - * The returned iterator points to the first entity of the reversed view. If - * the view is empty, the returned iterator will be equal to `rend()`. - * - * @return An iterator to the first entity of the reversed view. - */ - [[nodiscard]] reverse_iterator rbegin() const { - return reverse_iterator{view->rbegin(), view->rend(), view->rbegin(), pools_to_unchecked_array(), filter_to_array()}; - } - - /** - * @brief Returns an iterator that is past the last entity of the reversed - * view. - * - * The returned iterator points to the entity following the last entity of - * the reversed view. Attempting to dereference the returned iterator - * results in undefined behavior. - * - * @return An iterator to the entity following the last entity of the - * reversed view. - */ - [[nodiscard]] reverse_iterator rend() const { - return reverse_iterator{view->rbegin(), view->rend(), view->rend(), pools_to_unchecked_array(), filter_to_array()}; - } - - /** - * @brief Returns the first entity of the view, if any. - * @return The first entity of the view if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type front() const { - const auto it = begin(); - return it != end() ? *it : null; - } - - /** - * @brief Returns the last entity of the view, if any. - * @return The last entity of the view if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type back() const { - const auto it = rbegin(); - return it != rend() ? *it : null; - } - - /** - * @brief Finds an entity. - * @param entt A valid entity identifier. - * @return An iterator to the given entity if it's found, past the end - * iterator otherwise. - */ - [[nodiscard]] iterator find(const entity_type entt) const { - const auto it = iterator{view->begin(), view->end(), view->find(entt), pools_to_unchecked_array(), filter_to_array()}; - return (it != end() && *it == entt) ? it : end(); - } - - /** - * @brief Checks if a view is properly initialized. - * @return True if the view is properly initialized, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return view != nullptr; - } - - /** - * @brief Checks if a view contains an entity. - * @param entt A valid entity identifier. - * @return True if the view contains the given entity, false otherwise. - */ - [[nodiscard]] bool contains(const entity_type entt) const { - return (std::get *>(pools)->contains(entt) && ...) && (!std::get *>(filter)->contains(entt) && ...); - } - - /** - * @brief Returns the components assigned to the given entity. - * - * Prefer this function instead of `registry::get` during iterations. It has - * far better performance than its counterpart. - * - * @warning - * Attempting to use an invalid component type results in a compilation - * error. Attempting to use an entity that doesn't belong to the view - * results in undefined behavior. - * - * @tparam Comp Types of components to get. - * @param entt A valid entity identifier. - * @return The components assigned to the entity. - */ - template - [[nodiscard]] decltype(auto) get([[maybe_unused]] const entity_type entt) const { - ENTT_ASSERT(contains(entt), "View does not contain entity"); - - if constexpr(sizeof...(Comp) == 0) { - return std::tuple_cat(get_as_tuple(*std::get *>(pools), entt)...); - } else if constexpr(sizeof...(Comp) == 1) { - return (std::get *>(pools)->get(entt), ...); - } else { - return std::tuple_cat(get_as_tuple(*std::get *>(pools), entt)...); - } - } - - /** - * @brief Iterates entities and components and applies the given function - * object to them. - * - * The function object is invoked for each entity. It is provided with the - * entity itself and a set of references to non-empty components. The - * _constness_ of the components is as requested.
- * The signature of the function must be equivalent to one of the following - * forms: - * - * @code{.cpp} - * void(const entity_type, Type &...); - * void(Type &...); - * @endcode - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - ((std::get *>(pools) == view ? traverse(std::move(func)) : void()), ...); - } - - /** - * @brief Iterates entities and components and applies the given function - * object to them. - * - * The pool of the suggested component is used to lead the iterations. The - * returned entities will therefore respect the order of the pool associated - * with that type. - * - * @sa each - * - * @tparam Comp Type of component to use to drive the iteration. - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - use(); - traverse(std::move(func)); - } - - /** - * @brief Returns an iterable object to use to _visit_ the view. - * - * The iterable object returns tuples that contain the current entity and a - * set of references to its non-empty components. The _constness_ of the - * components is as requested. - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @return An iterable object to use to _visit_ the view. - */ - [[nodiscard]] iterable_view each() const ENTT_NOEXCEPT { - return iterable_view{*this}; - } - - /** - * @brief Returns an iterable object to use to _visit_ the view. - * - * The pool of the suggested component is used to lead the iterations. The - * returned elements will therefore respect the order of the pool associated - * with that type. - * - * @sa each - * - * @tparam Comp Type of component to use to drive the iteration. - * @return An iterable object to use to _visit_ the view. - */ - template - [[nodiscard]] iterable_view each() const ENTT_NOEXCEPT { - use(); - return iterable_view{*this}; - } - - /** - * @brief Combines two views in a _more specific_ one (friend function). - * @tparam Id A valid entity type (see entt_traits for more details). - * @tparam ELhs Filter list of the first view. - * @tparam CLhs Component list of the first view. - * @tparam ERhs Filter list of the second view. - * @tparam CRhs Component list of the second view. - * @return A more specific view. - */ - template - friend auto operator|(const basic_view, CLhs...> &, const basic_view, CRhs...> &); - -private: - const std::tuple *...> pools; - const std::tuple *...> filter; - mutable const basic_common_type *view; -}; - - -/** - * @brief Single component view specialization. - * - * Single component views are specialized in order to get a boost in terms of - * performance. This kind of views can access the underlying data structure - * directly and avoid superfluous checks. - * - * @b Important - * - * Iterators aren't invalidated if: - * - * * New instances of the given component are created and assigned to entities. - * * The entity currently pointed is modified (as an example, the given - * component is removed from the entity to which the iterator points). - * * The entity currently pointed is destroyed. - * - * In all other cases, modifying the pool iterated by the view in any way - * invalidates all the iterators and using them results in undefined behavior. - * - * @note - * Views share a reference to the underlying data structure of the registry that - * generated them. Therefore any change to the entities and to the components - * made by means of the registry are immediately reflected by views. - * - * @warning - * Lifetime of a view must not overcome that of the registry that generated it. - * In any other case, attempting to use a view results in undefined behavior. - * - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Component Type of component iterated by the view. - */ -template -class basic_view_impl, Component> { - using basic_common_type = basic_sparse_set; - using storage_type = constness_as_t>::storage_type, Component>; - - class iterable final { - template - struct iterable_iterator final { - using difference_type = std::ptrdiff_t; - using value_type = decltype(std::tuple_cat(std::tuple{}, std::declval().get({}))); - using pointer = void; - using reference = value_type; - using iterator_category = std::input_iterator_tag; - - template - iterable_iterator(It... from, Discard...) ENTT_NOEXCEPT - : it{from...} - {} - - iterable_iterator & operator++() ENTT_NOEXCEPT { - return (++std::get(it), ...), *this; - } - - iterable_iterator operator++(int) ENTT_NOEXCEPT { - iterable_iterator orig = *this; - return ++(*this), orig; - } - - [[nodiscard]] reference operator*() const ENTT_NOEXCEPT { - return { *std::get(it)... }; - } - - [[nodiscard]] bool operator==(const iterable_iterator &other) const ENTT_NOEXCEPT { - return std::get<0>(other.it) == std::get<0>(it); - } - - [[nodiscard]] bool operator!=(const iterable_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - private: - std::tuple it; - }; - - public: - using iterator = std::conditional_t< - std::is_void_v().get({}))>, - iterable_iterator, - iterable_iterator().begin())> - >; - using reverse_iterator = std::conditional_t< - std::is_void_v().get({}))>, - iterable_iterator, - iterable_iterator().rbegin())> - >; - - iterable(storage_type &ref) - : pool{&ref} - {} - - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return iterator{pool->basic_common_type::begin(), pool->begin()}; - } - - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return iterator{pool->basic_common_type::end(), pool->end()}; - } - - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return reverse_iterator{pool->basic_common_type::rbegin(), pool->rbegin()}; - } - - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return reverse_iterator{pool->basic_common_type::rend(), pool->rend()}; - } - - private: - storage_type * const pool; - }; - -public: - /*! @brief Underlying entity identifier. */ - using entity_type = Entity; - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Random access iterator type. */ - using iterator = typename basic_common_type::iterator; - /*! @brief Reversed iterator type. */ - using reverse_iterator = typename basic_common_type::reverse_iterator; - /*! @brief Iterable view type. */ - using iterable_view = iterable; - - /*! @brief Default constructor to use to create empty, invalid views. */ - basic_view_impl() ENTT_NOEXCEPT - : pools{}, - filter{} - {} - - /** - * @brief Constructs a single-type view from a storage class. - * @param ref The storage for the type to iterate. - */ - basic_view_impl(storage_type &ref) ENTT_NOEXCEPT - : pools{&ref}, - filter{} - {} - - /** - * @brief Returns the number of entities that have the given component. - * @return Number of entities that have the given component. - */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { - return std::get<0>(pools)->size(); - } - - /** - * @brief Checks whether a view is empty. - * @return True if the view is empty, false otherwise. - */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { - return std::get<0>(pools)->empty(); - } - - /** - * @brief Direct access to the raw representation offered by the storage. - * @return A pointer to the array of components. - */ - [[nodiscard]] auto raw() const ENTT_NOEXCEPT { - return std::get<0>(pools)->raw(); - } - - /** - * @brief Direct access to the list of entities. - * - * The returned pointer is such that range `[data(), data() + size())` is - * always a valid range, even if the container is empty. - * - * @return A pointer to the array of entities. - */ - [[nodiscard]] auto data() const ENTT_NOEXCEPT { - return std::get<0>(pools)->data(); - } - - /** - * @brief Returns an iterator to the first entity of the view. - * - * The returned iterator points to the first entity of the view. If the view - * is empty, the returned iterator will be equal to `end()`. - * - * @return An iterator to the first entity of the view. - */ - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return std::get<0>(pools)->basic_common_type::begin(); - } - - /** - * @brief Returns an iterator that is past the last entity of the view. - * - * The returned iterator points to the entity following the last entity of - * the view. Attempting to dereference the returned iterator results in - * undefined behavior. - * - * @return An iterator to the entity following the last entity of the view. - */ - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return std::get<0>(pools)->basic_common_type::end(); - } - - /** - * @brief Returns an iterator to the first entity of the reversed view. - * - * The returned iterator points to the first entity of the reversed view. If - * the view is empty, the returned iterator will be equal to `rend()`. - * - * @return An iterator to the first entity of the reversed view. - */ - [[nodiscard]] reverse_iterator rbegin() const ENTT_NOEXCEPT { - return std::get<0>(pools)->basic_common_type::rbegin(); - } - - /** - * @brief Returns an iterator that is past the last entity of the reversed - * view. - * - * The returned iterator points to the entity following the last entity of - * the reversed view. Attempting to dereference the returned iterator - * results in undefined behavior. - * - * @return An iterator to the entity following the last entity of the - * reversed view. - */ - [[nodiscard]] reverse_iterator rend() const ENTT_NOEXCEPT { - return std::get<0>(pools)->basic_common_type::rend(); - } - - /** - * @brief Returns the first entity of the view, if any. - * @return The first entity of the view if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type front() const { - const auto it = begin(); - return it != end() ? *it : null; - } - - /** - * @brief Returns the last entity of the view, if any. - * @return The last entity of the view if one exists, the null entity - * otherwise. - */ - [[nodiscard]] entity_type back() const { - const auto it = rbegin(); - return it != rend() ? *it : null; - } - - /** - * @brief Finds an entity. - * @param entt A valid entity identifier. - * @return An iterator to the given entity if it's found, past the end - * iterator otherwise. - */ - [[nodiscard]] iterator find(const entity_type entt) const { - const auto it = std::get<0>(pools)->find(entt); - return it != end() && *it == entt ? it : end(); - } - - /** - * @brief Returns the identifier that occupies the given position. - * @param pos Position of the element to return. - * @return The identifier that occupies the given position. - */ - [[nodiscard]] entity_type operator[](const size_type pos) const { - return begin()[pos]; - } - - /** - * @brief Checks if a view is properly initialized. - * @return True if the view is properly initialized, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return std::get<0>(pools) != nullptr; - } - - /** - * @brief Checks if a view contains an entity. - * @param entt A valid entity identifier. - * @return True if the view contains the given entity, false otherwise. - */ - [[nodiscard]] bool contains(const entity_type entt) const { - return std::get<0>(pools)->contains(entt); - } - - /** - * @brief Returns the component assigned to the given entity. - * - * Prefer this function instead of `registry::get` during iterations. It has - * far better performance than its counterpart. - * - * @warning - * Attempting to use an invalid component type results in a compilation - * error. Attempting to use an entity that doesn't belong to the view - * results in undefined behavior. - * - * @tparam Comp Types of components to get. - * @param entt A valid entity identifier. - * @return The component assigned to the entity. - */ - template - [[nodiscard]] decltype(auto) get(const entity_type entt) const { - ENTT_ASSERT(contains(entt), "View does not contain entity"); - - if constexpr(sizeof...(Comp) == 0) { - return get_as_tuple(*std::get<0>(pools), entt); - } else { - static_assert(std::is_same_v, "Invalid component type"); - return std::get<0>(pools)->get(entt); - } - } - - /** - * @brief Iterates entities and components and applies the given function - * object to them. - * - * The function object is invoked for each entity. It is provided with the - * entity itself and a reference to the component if it's a non-empty one. - * The _constness_ of the component is as requested.
- * The signature of the function must be equivalent to one of the following - * forms: - * - * @code{.cpp} - * void(const entity_type, Component &); - * void(Component &); - * @endcode - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - if constexpr(std::is_void_v(pools)->get({}))>) { - if constexpr(std::is_invocable_v) { - for(auto pos = size(); pos; --pos) { - func(); - } - } else { - for(auto entity: *this) { - func(entity); - } - } - } else { - if constexpr(is_applicable_v) { - for(const auto pack: each()) { - std::apply(func, pack); - } - } else { - for(auto &&component: *std::get<0>(pools)) { - func(component); - } - } - } - } - - /** - * @brief Returns an iterable object to use to _visit_ the view. - * - * The iterable object returns tuples that contain the current entity and a - * reference to its component if it's a non-empty one. The _constness_ of - * the component is as requested. - * - * @note - * Empty types aren't explicitly instantiated and therefore they are never - * returned during iterations. - * - * @return An iterable object to use to _visit_ the view. - */ - [[nodiscard]] iterable_view each() const ENTT_NOEXCEPT { - return iterable_view{*std::get<0>(pools)}; - } - - /** - * @brief Combines two views in a _more specific_ one (friend function). - * @tparam Id A valid entity type (see entt_traits for more details). - * @tparam ELhs Filter list of the first view. - * @tparam CLhs Component list of the first view. - * @tparam ERhs Filter list of the second view. - * @tparam CRhs Component list of the second view. - * @return A more specific view. - */ - template - friend auto operator|(const basic_view, CLhs...> &, const basic_view, CRhs...> &); - -private: - const std::tuple pools; - const std::tuple<> filter; -}; - - -/** - * @brief View implementation dispatcher. - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Exclude Types of components used to filter the view. - * @tparam Component Types of components iterated by the view. - */ -template -struct basic_view, Component...> - : basic_view_impl>::in_place_delete...>, stable_storage_policy, packed_storage_policy>, Entity, exclude_t, Component...> -{ - /*! @brief Most restrictive storage policy of all component types. */ - using storage_policy = std::conditional_t>::in_place_delete...>, stable_storage_policy, packed_storage_policy>; - using basic_view_impl, Component...>::basic_view_impl; -}; - - -/** - * @brief Deduction guide. - * @tparam Storage Type of storage classes used to create the view. - * @param storage The storage for the types to iterate. - */ -template -basic_view(Storage &... storage) --> basic_view, entt::exclude_t<>, constness_as_t...>; - - -/** - * @brief Combines two views in a _more specific_ one. - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam ELhs Filter list of the first view. - * @tparam CLhs Component list of the first view. - * @tparam ERhs Filter list of the second view. - * @tparam CRhs Component list of the second view. - * @param lhs A valid reference to the first view. - * @param rhs A valid reference to the second view. - * @return A more specific view. - */ -template -[[nodiscard]] auto operator|(const basic_view, CLhs...> &lhs, const basic_view, CRhs...> &rhs) { - using view_type = basic_view, CLhs..., CRhs...>; - return std::apply([](auto *... storage) { return view_type{*storage...}; }, std::tuple_cat(lhs.pools, rhs.pools, lhs.filter, rhs.filter)); -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/fwd.hpp b/LiteLoader/Header/third-party/entt/fwd.hpp deleted file mode 100644 index 46dfe0d..0000000 --- a/LiteLoader/Header/third-party/entt/fwd.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "core/fwd.hpp" -#include "entity/fwd.hpp" -#include "poly/fwd.hpp" -#include "resource/fwd.hpp" -#include "signal/fwd.hpp" diff --git a/LiteLoader/Header/third-party/entt/locator/locator.hpp b/LiteLoader/Header/third-party/entt/locator/locator.hpp deleted file mode 100644 index becceb1..0000000 --- a/LiteLoader/Header/third-party/entt/locator/locator.hpp +++ /dev/null @@ -1,111 +0,0 @@ -#ifndef ENTT_LOCATOR_LOCATOR_HPP -#define ENTT_LOCATOR_LOCATOR_HPP - - -#include -#include -#include "../config/config.h" - - -namespace entt { - - -/** - * @brief Service locator, nothing more. - * - * A service locator can be used to do what it promises: locate services.
- * Usually service locators are tightly bound to the services they expose and - * thus it's hard to define a general purpose class to do that. This template - * based implementation tries to fill the gap and to get rid of the burden of - * defining a different specific locator for each application. - * - * @tparam Service Type of service managed by the locator. - */ -template -struct service_locator { - /*! @brief Type of service offered. */ - using service_type = Service; - - /*! @brief Default constructor, deleted on purpose. */ - service_locator() = delete; - /*! @brief Default destructor, deleted on purpose. */ - ~service_locator() = delete; - - /** - * @brief Tests if a valid service implementation is set. - * @return True if the service is set, false otherwise. - */ - [[nodiscard]] static bool empty() ENTT_NOEXCEPT { - return !static_cast(service); - } - - /** - * @brief Returns a weak pointer to a service implementation, if any. - * - * Clients of a service shouldn't retain references to it. The recommended - * way is to retrieve the service implementation currently set each and - * every time the need of using it arises. Otherwise users can incur in - * unexpected behaviors. - * - * @return A reference to the service implementation currently set, if any. - */ - [[nodiscard]] static std::weak_ptr get() ENTT_NOEXCEPT { - return service; - } - - /** - * @brief Returns a weak reference to a service implementation, if any. - * - * Clients of a service shouldn't retain references to it. The recommended - * way is to retrieve the service implementation currently set each and - * every time the need of using it arises. Otherwise users can incur in - * unexpected behaviors. - * - * @warning - * In case no service implementation has been set, a call to this function - * results in undefined behavior. - * - * @return A reference to the service implementation currently set, if any. - */ - [[nodiscard]] static Service & ref() ENTT_NOEXCEPT { - return *service; - } - - /** - * @brief Sets or replaces a service. - * @tparam Impl Type of the new service to use. - * @tparam Args Types of arguments to use to construct the service. - * @param args Parameters to use to construct the service. - */ - template - static void set(Args &&... args) { - service = std::make_shared(std::forward(args)...); - } - - /** - * @brief Sets or replaces a service. - * @param ptr Service to use to replace the current one. - */ - static void set(std::shared_ptr ptr) { - ENTT_ASSERT(static_cast(ptr), "Null service not allowed"); - service = std::move(ptr); - } - - /** - * @brief Resets a service. - * - * The service is no longer valid after a reset. - */ - static void reset() { - service.reset(); - } - -private: - inline static std::shared_ptr service = nullptr; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/container.hpp b/LiteLoader/Header/third-party/entt/meta/container.hpp deleted file mode 100644 index e8ba546..0000000 --- a/LiteLoader/Header/third-party/entt/meta/container.hpp +++ /dev/null @@ -1,406 +0,0 @@ -#ifndef ENTT_META_CONTAINER_HPP -#define ENTT_META_CONTAINER_HPP - - -#include -#include -#include -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/type_traits.hpp" -#include "type_traits.hpp" - - -namespace entt { - - -/** - * @brief Container traits. - * @tparam Container Type of the underlying container. - * @tparam Trait Traits associated with the underlying container. - */ -template class... Trait> -struct meta_container_traits: public Trait... { - /*! @brief Type of container. */ - using type = Container; -}; - - -/** - * @brief Basic STL-compatible container traits - * @tparam Container The type of the container. - */ -template -struct basic_container { - /** - * @brief Returns the size of the given container. - * @param cont The container for which to return the size. - * @return The size of the given container. - */ - [[nodiscard]] static typename Container::size_type size(const Container &cont) ENTT_NOEXCEPT { - return cont.size(); - } - - /** - * @brief Returns an iterator to the first element of the given container. - * @param cont The container for which to return the iterator. - * @return An iterator to the first element of the given container. - */ - [[nodiscard]] static typename Container::iterator begin(Container &cont) { - return cont.begin(); - } - - /** - * @brief Returns an iterator to the first element of the given container. - * @param cont The container for which to return the iterator. - * @return An iterator to the first element of the given container. - */ - [[nodiscard]] static typename Container::const_iterator cbegin(const Container &cont) { - return cont.begin(); - } - - /** - * @brief Returns an iterator past the last element of the given container. - * @param cont The container for which to return the iterator. - * @return An iterator past the last element of the given container. - */ - [[nodiscard]] static typename Container::iterator end(Container &cont) { - return cont.end(); - } - - /** - * @brief Returns an iterator past the last element of the given container. - * @param cont The container for which to return the iterator. - * @return An iterator past the last element of the given container. - */ - [[nodiscard]] static typename Container::const_iterator cend(const Container &cont) { - return cont.end(); - } -}; - - -/** - * @brief Basic STL-compatible associative container traits - * @tparam Container The type of the container. - */ -template -struct basic_associative_container { - /** - * @brief Returns an iterator to the element with key equivalent to the - * given one, if any. - * @param cont The container in which to search for the element. - * @param key The key of the element to search. - * @return An iterator to the element with the given key, if any. - */ - [[nodiscard]] static typename Container::iterator find(Container &cont, const typename Container::key_type &key) { - return cont.find(key); - } - - /*! @copydoc find */ - [[nodiscard]] static typename Container::const_iterator cfind(const Container &cont, const typename Container::key_type &key) { - return cont.find(key); - } -}; - - -/** - * @brief Basic STL-compatible dynamic container traits - * @tparam Container The type of the container. - */ -template -struct basic_dynamic_container { - /** - * @brief Clears the content of the given container. - * @param cont The container for which to clear the content. - * @return True in case of success, false otherwise. - */ - [[nodiscard]] static bool clear([[maybe_unused]] Container &cont) { - return cont.clear(), true; - } -}; - - -/** - * @brief Basic STL-compatible dynamic associative container traits - * @tparam Container The type of the container. - */ -template -struct basic_dynamic_associative_container { - /** - * @brief Removes the specified element from the given container. - * @param cont The container from which to remove the element. - * @param key The element to remove. - * @return A bool denoting whether the removal took place. - */ - [[nodiscard]] static bool erase([[maybe_unused]] Container &cont, [[maybe_unused]] const typename Container::key_type &key) { - const auto sz = cont.size(); - return cont.erase(key) != sz; - } -}; - - -/** - * @brief Basic STL-compatible sequence container traits - * @tparam Container The type of the container. - */ -template -struct basic_sequence_container { - /** - * @brief Returns a reference to the element at the specified location of - * the given container (no bounds checking is performed). - * @param cont The container from which to get the element. - * @param pos The position of the element to return. - * @return A reference to the requested element. - */ - [[nodiscard]] static typename Container::reference get(Container &cont, typename Container::size_type pos) { - return cont[pos]; - } - - /*! @copydoc get */ - [[nodiscard]] static typename Container::const_reference cget(const Container &cont, typename Container::size_type pos) { - return cont[pos]; - } -}; - - -/** - * @brief STL-compatible dynamic associative key-only container traits - * @tparam Container The type of the container. - */ -template -struct dynamic_associative_key_only_container { - /** - * @brief Inserts an element into the given container. - * @param cont The container in which to insert the element. - * @param key The element to insert. - * @return A bool denoting whether the insertion took place. - */ - [[nodiscard]] static bool insert([[maybe_unused]] Container &cont, [[maybe_unused]] const typename Container::key_type &key) { - return cont.insert(key).second; - } -}; - - -/** - * @brief STL-compatible dynamic key-value associative container traits - * @tparam Container The type of the container. - */ -template -struct dynamic_associative_key_value_container { - /** - * @brief Inserts an element (a key/value pair) into the given container. - * @param cont The container in which to insert the element. - * @param key The key of the element to insert. - * @param value The value of the element to insert. - * @return A bool denoting whether the insertion took place. - */ - [[nodiscard]] static bool insert([[maybe_unused]] Container &cont, [[maybe_unused]] const typename Container::key_type &key, [[maybe_unused]] const typename Container::mapped_type &value) { - return cont.insert(std::make_pair(key, value)).second; - } -}; - - -/** - * @brief STL-compatible dynamic sequence container traits - * @tparam Container The type of the container. - */ -template -struct dynamic_sequence_container { - /** - * @brief Resizes the given container to contain the given number of - * elements. - * @param cont The container to resize. - * @param sz The new size of the container. - * @return True in case of success, false otherwise. - */ - [[nodiscard]] static bool resize([[maybe_unused]] Container &cont, [[maybe_unused]] typename Container::size_type sz) { - return cont.resize(sz), true; - } - - /** - * @brief Inserts an element at the specified location of the given - * container. - * @param cont The container into which to insert the element. - * @param it Iterator before which the element will be inserted. - * @param value Element value to insert. - * @return A pair consisting of an iterator to the inserted element (in case - * of success) and a bool denoting whether the insertion took place. - */ - [[nodiscard]] static std::pair insert([[maybe_unused]] Container &cont, [[maybe_unused]] typename Container::const_iterator it, [[maybe_unused]] const typename Container::value_type &value) { - return { cont.insert(it, value), true }; - } - - /** - * @brief Removes the element at the specified location from the given - * container. - * @param cont The container from which to remove the element. - * @param it Iterator to the element to remove. - * @return A pair consisting of an iterator following the last removed - * element (in case of success) and a bool denoting whether the insertion - * took place. - */ - [[nodiscard]] static std::pair erase([[maybe_unused]] Container &cont, [[maybe_unused]] typename Container::const_iterator it) { - return { cont.erase(it), true }; - } -}; - - -/** - * @brief STL-compatible fixed sequence container traits - * @tparam Container The type of the container. - */ -template -struct fixed_sequence_container { - /** - * @brief Does nothing. - * @return False to indicate failure in all cases. - */ - [[nodiscard]] static bool resize(const Container &, typename Container::size_type) { - return false; - } - - /** - * @brief Does nothing. - * @return False to indicate failure in all cases. - */ - [[nodiscard]] static bool clear(const Container &) { - return false; - } - - /** - * @brief Does nothing. - * @return A pair consisting of an invalid iterator and a false value to - * indicate failure in all cases. - */ - [[nodiscard]] static std::pair insert(const Container &, typename Container::const_iterator, const typename Container::value_type &) { - return { {}, false }; - } - - /** - * @brief Does nothing. - * @return A pair consisting of an invalid iterator and a false value to - * indicate failure in all cases. - */ - [[nodiscard]] static std::pair erase(const Container &, typename Container::const_iterator) { - return { {}, false }; - } -}; - - -/** - * @brief Meta sequence container traits for `std::vector`s of any type. - * @tparam Type The type of elements. - * @tparam Args Other arguments. - */ -template -struct meta_sequence_container_traits> - : meta_container_traits< - std::vector, - basic_container, - basic_dynamic_container, - basic_sequence_container, - dynamic_sequence_container - > -{}; - - -/** - * @brief Meta sequence container traits for `std::array`s of any type. - * @tparam Type The type of elements. - * @tparam N The number of elements. - */ -template -struct meta_sequence_container_traits> - : meta_container_traits< - std::array, - basic_container, - basic_sequence_container, - fixed_sequence_container - > -{}; - - -/** - * @brief Meta associative container traits for `std::map`s of any type. - * @tparam Key The key type of elements. - * @tparam Value The value type of elements. - * @tparam Args Other arguments. - */ -template -struct meta_associative_container_traits> - : meta_container_traits< - std::map, - basic_container, - basic_associative_container, - basic_dynamic_container, - basic_dynamic_associative_container, - dynamic_associative_key_value_container - > -{}; - - -/** - * @brief Meta associative container traits for `std::unordered_map`s of any - * type. - * @tparam Key The key type of elements. - * @tparam Value The value type of elements. - * @tparam Args Other arguments. - */ -template -struct meta_associative_container_traits> - : meta_container_traits< - std::unordered_map, - basic_container, - basic_associative_container, - basic_dynamic_container, - basic_dynamic_associative_container, - dynamic_associative_key_value_container - > -{}; - - -/** - * @brief Meta associative container traits for `std::set`s of any type. - * @tparam Key The type of elements. - * @tparam Args Other arguments. - */ -template -struct meta_associative_container_traits> - : meta_container_traits< - std::set, - basic_container, - basic_associative_container, - basic_dynamic_container, - basic_dynamic_associative_container, - dynamic_associative_key_only_container - > -{}; - - -/** - * @brief Meta associative container traits for `std::unordered_set`s of any - * type. - * @tparam Key The type of elements. - * @tparam Args Other arguments. - */ -template -struct meta_associative_container_traits> - : meta_container_traits< - std::unordered_set, - basic_container, - basic_associative_container, - basic_dynamic_container, - basic_dynamic_associative_container, - dynamic_associative_key_only_container - > -{}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/ctx.hpp b/LiteLoader/Header/third-party/entt/meta/ctx.hpp deleted file mode 100644 index 5eb1170..0000000 --- a/LiteLoader/Header/third-party/entt/meta/ctx.hpp +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef ENTT_META_CTX_HPP -#define ENTT_META_CTX_HPP - - -#include "../core/attribute.h" -#include "../config/config.h" - - -namespace entt { - - -/** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - - -namespace internal { - - -struct meta_type_node; - - -struct ENTT_API meta_context { - // we could use the lines below but VS2017 returns with an ICE if combined with ENTT_API despite the code being valid C++ - // inline static meta_type_node *local = nullptr; - // inline static meta_type_node **global = &local; - - [[nodiscard]] static meta_type_node * & local() ENTT_NOEXCEPT { - static meta_type_node *chain = nullptr; - return chain; - } - - [[nodiscard]] static meta_type_node ** & global() ENTT_NOEXCEPT { - static meta_type_node **chain = &local(); - return chain; - } -}; - - -} - - -/** - * Internal details not to be documented. - * @endcond - */ - - -/*! @brief Opaque container for a meta context. */ -struct meta_ctx { - /** - * @brief Binds the meta system to a given context. - * @param other A valid context to which to bind. - */ - static void bind(meta_ctx other) ENTT_NOEXCEPT { - internal::meta_context::global() = other.ctx; - } - -private: - internal::meta_type_node **ctx{&internal::meta_context::local()}; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/factory.hpp b/LiteLoader/Header/third-party/entt/meta/factory.hpp deleted file mode 100644 index fb44ec6..0000000 --- a/LiteLoader/Header/third-party/entt/meta/factory.hpp +++ /dev/null @@ -1,597 +0,0 @@ -#ifndef ENTT_META_FACTORY_HPP -#define ENTT_META_FACTORY_HPP - - -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/fwd.hpp" -#include "../core/type_info.hpp" -#include "../core/type_traits.hpp" -#include "meta.hpp" -#include "node.hpp" -#include "policy.hpp" -#include "utility.hpp" - - -namespace entt { - - -/** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - - -namespace internal { - - -template -[[nodiscard]] bool find_if(const Node *candidate, const Node *node) ENTT_NOEXCEPT { - return node && (node == candidate || find_if(candidate, node->next)); -} - - -template -[[nodiscard]] bool find_if_not(const Id id, Node *node, const Node *owner) ENTT_NOEXCEPT { - if constexpr(std::is_pointer_v) { - return node && ((*node->id == *id && node != owner) || find_if_not(id, node->next, owner)); - } else { - return node && ((node->id == id && node != owner) || find_if_not(id, node->next, owner)); - } -} - - -} - - -/** - * Internal details not to be documented. - * @endcond - */ - - -/** - * @brief Meta factory to be used for reflection purposes. - * - * The meta factory is an utility class used to reflect types, data members and - * functions of all sorts. This class ensures that the underlying web of types - * is built correctly and performs some checks in debug mode to ensure that - * there are no subtle errors at runtime. - */ -template -struct meta_factory; - - -/** - * @brief Extended meta factory to be used for reflection purposes. - * @tparam Type Reflected type for which the factory was created. - * @tparam Spec Property specialization pack used to disambiguate overloads. - */ -template -struct meta_factory: public meta_factory { -private: - template - void unpack(std::index_sequence, std::tuple property, Other &&... other) { - unroll(choice<3>, std::move(std::get(property))..., std::forward(other)...); - } - - template - void unroll(choice_t<3>, std::tuple property, Other &&... other) { - unpack(std::index_sequence_for{}, std::move(property), std::forward(other)...); - } - - template - void unroll(choice_t<2>, std::pair property, Other &&... other) { - assign(std::move(property.first), std::move(property.second)); - unroll(choice<3>, std::forward(other)...); - } - - template - std::enable_if_t> - unroll(choice_t<1>, Property &&property, Other &&... other) { - assign(std::forward(property)); - unroll(choice<3>, std::forward(other)...); - } - - template - void unroll(choice_t<0>, Func &&invocable, Other &&... other) { - unroll(choice<3>, std::forward(invocable)(), std::forward(other)...); - } - - template - void unroll(choice_t<0>) {} - - template - void assign(Key &&key, meta_any value = {}) { - static meta_any property[2u]{}; - - static internal::meta_prop_node node{ - nullptr, - property[0u], - property[1u] - }; - - entt::meta_any instance{std::forward(key)}; - ENTT_ASSERT(!internal::find_if_not(&instance, *curr, &node), "Duplicate key"); - property[0u] = std::move(instance); - property[1u] = std::move(value); - - if(!internal::find_if(&node, *curr)) { - node.next = *curr; - *curr = &node; - } - } - -public: - /** - * @brief Constructs an extended factory from a given node. - * @param target The underlying node to which to assign the properties. - */ - meta_factory(internal::meta_prop_node **target) ENTT_NOEXCEPT - : curr{target} - {} - - /** - * @brief Assigns a property to the last meta object created. - * - * Both the key and the value (if any) must be at least copy constructible. - * - * @tparam PropertyOrKey Type of the property or property key. - * @tparam Value Optional type of the property value. - * @param property_or_key Property or property key. - * @param value Optional property value. - * @return A meta factory for the parent type. - */ - template - auto prop(PropertyOrKey &&property_or_key, Value &&... value) && { - if constexpr(sizeof...(Value) == 0) { - unroll(choice<3>, std::forward(property_or_key)); - } else { - assign(std::forward(property_or_key), std::forward(value)...); - } - - return meta_factory{curr}; - } - - /** - * @brief Assigns properties to the last meta object created. - * - * Both the keys and the values (if any) must be at least copy - * constructible. - * - * @tparam Property Types of the properties. - * @param property Properties to assign to the last meta object created. - * @return A meta factory for the parent type. - */ - template - auto props(Property... property) && { - unroll(choice<3>, std::forward(property)...); - return meta_factory{curr}; - } - -private: - internal::meta_prop_node **curr; -}; - - -/** - * @brief Basic meta factory to be used for reflection purposes. - * @tparam Type Reflected type for which the factory was created. - */ -template -struct meta_factory { - /** - * @brief Makes a meta type _searchable_. - * @param id Optional unique identifier. - * @return An extended meta factory for the given type. - */ - auto type(const id_type id = type_hash::value()) { - auto * const node = internal::meta_info::resolve(); - - ENTT_ASSERT(!internal::find_if_not(id, *internal::meta_context::global(), node), "Duplicate identifier"); - node->id = id; - - if(!internal::find_if(node, *internal::meta_context::global())) { - node->next = *internal::meta_context::global(); - *internal::meta_context::global() = node; - } - - return meta_factory{&node->prop}; - } - - /** - * @brief Assigns a meta base to a meta type. - * - * A reflected base class must be a real base class of the reflected type. - * - * @tparam Base Type of the base class to assign to the meta type. - * @return A meta factory for the parent type. - */ - template - auto base() ENTT_NOEXCEPT { - static_assert(std::is_base_of_v, "Invalid base type"); - auto * const type = internal::meta_info::resolve(); - - static internal::meta_base_node node{ - type, - nullptr, - &internal::meta_info::resolve, - [](const void *instance) ENTT_NOEXCEPT -> const void * { - return static_cast(static_cast(instance)); - } - }; - - if(!internal::find_if(&node, type->base)) { - node.next = type->base; - type->base = &node; - } - - return meta_factory{}; - } - - /** - * @brief Assigns a meta conversion function to a meta type. - * - * Conversion functions can be either free functions or member - * functions.
- * In case of free functions, they must accept a const reference to an - * instance of the parent type as an argument. In case of member functions, - * they should have no arguments at all. - * - * @tparam Candidate The actual function to use for the conversion. - * @return A meta factory for the parent type. - */ - template - std::enable_if_t, meta_factory> conv() ENTT_NOEXCEPT { - using conv_type = std::invoke_result_t; - auto * const type = internal::meta_info::resolve(); - - static internal::meta_conv_node node{ - type, - nullptr, - &internal::meta_info::resolve, - [](const void *instance) -> meta_any { - return (static_cast(instance)->*Candidate)(); - } - }; - - if(!internal::find_if(&node, type->conv)) { - node.next = type->conv; - type->conv = &node; - } - - return meta_factory{}; - } - - /*! @copydoc conv */ - template - std::enable_if_t, meta_factory> conv() ENTT_NOEXCEPT { - using conv_type = std::invoke_result_t; - auto * const type = internal::meta_info::resolve(); - - static internal::meta_conv_node node{ - type, - nullptr, - &internal::meta_info::resolve, - [](const void *instance) -> meta_any { - return Candidate(*static_cast(instance)); - } - }; - - if(!internal::find_if(&node, type->conv)) { - node.next = type->conv; - type->conv = &node; - } - - return meta_factory{}; - } - - /** - * @brief Assigns a meta conversion function to a meta type. - * - * The given type must be such that an instance of the reflected type can be - * converted to it. - * - * @tparam To Type of the conversion function to assign to the meta type. - * @return A meta factory for the parent type. - */ - template - auto conv() ENTT_NOEXCEPT { - static_assert(std::is_convertible_v, "Could not convert to the required type"); - auto * const type = internal::meta_info::resolve(); - - static internal::meta_conv_node node{ - type, - nullptr, - &internal::meta_info::resolve, - [](const void *instance) -> meta_any { - return static_cast(*static_cast(instance)); - } - }; - - if(!internal::find_if(&node, type->conv)) { - node.next = type->conv; - type->conv = &node; - } - - return meta_factory{}; - } - - /** - * @brief Assigns a meta constructor to a meta type. - * - * Both member functions and free function can be assigned to meta types in - * the role of constructors. All that is required is that they return an - * instance of the underlying type.
- * From a client's point of view, nothing changes if a constructor of a meta - * type is a built-in one or not. - * - * @tparam Candidate The actual function to use as a constructor. - * @tparam Policy Optional policy (no policy set by default). - * @return An extended meta factory for the parent type. - */ - template - auto ctor() ENTT_NOEXCEPT { - using descriptor = meta_function_helper_t; - static_assert(std::is_same_v, Type>, "The function doesn't return an object of the required type"); - auto * const type = internal::meta_info::resolve(); - - static internal::meta_ctor_node node{ - type, - nullptr, - nullptr, - descriptor::args_type::size, - [](const typename internal::meta_ctor_node::size_type index) ENTT_NOEXCEPT { - return meta_arg(typename descriptor::args_type{}, index); - }, - [](meta_any * const args) { - return meta_invoke({}, args, std::make_index_sequence{}); - } - }; - - if(!internal::find_if(&node, type->ctor)) { - node.next = type->ctor; - type->ctor = &node; - } - - return meta_factory>{&node.prop}; - } - - /** - * @brief Assigns a meta constructor to a meta type. - * - * A meta constructor is uniquely identified by the types of its arguments - * and is such that there exists an actual constructor of the underlying - * type that can be invoked with parameters whose types are those given. - * - * @tparam Args Types of arguments to use to construct an instance. - * @return An extended meta factory for the parent type. - */ - template - auto ctor() ENTT_NOEXCEPT { - using descriptor = meta_function_helper_t; - auto * const type = internal::meta_info::resolve(); - - static internal::meta_ctor_node node{ - type, - nullptr, - nullptr, - descriptor::args_type::size, - [](const typename internal::meta_ctor_node::size_type index) ENTT_NOEXCEPT { - return meta_arg(typename descriptor::args_type{}, index); - }, - [](meta_any * const args) { - return meta_construct(args, std::make_index_sequence{}); - } - }; - - if(!internal::find_if(&node, type->ctor)) { - node.next = type->ctor; - type->ctor = &node; - } - - return meta_factory{&node.prop}; - } - - /** - * @brief Assigns a meta destructor to a meta type. - * - * Free functions can be assigned to meta types in the role of destructors. - * The signature of the function should identical to the following: - * - * @code{.cpp} - * void(Type &); - * @endcode - * - * The purpose is to give users the ability to free up resources that - * require special treatment before an object is actually destroyed. - * - * @tparam Func The actual function to use as a destructor. - * @return A meta factory for the parent type. - */ - template - auto dtor() ENTT_NOEXCEPT { - static_assert(std::is_invocable_v, "The function doesn't accept an object of the type provided"); - auto * const type = internal::meta_info::resolve(); - - type->dtor = [](void *instance) { - Func(*static_cast(instance)); - }; - - return meta_factory{}; - } - - /** - * @brief Assigns a meta data to a meta type. - * - * Both data members and static and global variables, as well as constants - * of any kind, can be assigned to a meta type.
- * From a client's point of view, all the variables associated with the - * reflected object will appear as if they were part of the type itself. - * - * @tparam Data The actual variable to attach to the meta type. - * @tparam Policy Optional policy (no policy set by default). - * @param id Unique identifier. - * @return An extended meta factory for the parent type. - */ - template - auto data(const id_type id) ENTT_NOEXCEPT { - if constexpr(std::is_member_object_pointer_v) { - return data(id); - } else { - using data_type = std::remove_pointer_t; - auto * const type = internal::meta_info::resolve(); - - static internal::meta_data_node node{ - {}, - type, - nullptr, - nullptr, - std::is_same_v || std::is_const_v, - true, - &internal::meta_info::resolve, - &meta_setter, - &meta_getter - }; - - ENTT_ASSERT(!internal::find_if_not(id, type->data, &node), "Duplicate identifier"); - node.id = id; - - if(!internal::find_if(&node, type->data)) { - node.next = type->data; - type->data = &node; - } - - return meta_factory>{&node.prop}; - } - } - - /** - * @brief Assigns a meta data to a meta type by means of its setter and - * getter. - * - * Setters and getters can be either free functions, member functions or a - * mix of them.
- * In case of free functions, setters and getters must accept a reference to - * an instance of the parent type as their first argument. A setter has then - * an extra argument of a type convertible to that of the parameter to - * set.
- * In case of member functions, getters have no arguments at all, while - * setters has an argument of a type convertible to that of the parameter to - * set. - * - * @tparam Setter The actual function to use as a setter. - * @tparam Getter The actual function to use as a getter. - * @tparam Policy Optional policy (no policy set by default). - * @param id Unique identifier. - * @return An extended meta factory for the parent type. - */ - template - auto data(const id_type id) ENTT_NOEXCEPT { - using underlying_type = std::remove_reference_t>; - auto * const type = internal::meta_info::resolve(); - - static internal::meta_data_node node{ - {}, - type, - nullptr, - nullptr, - std::is_same_v || (std::is_member_object_pointer_v && std::is_const_v), - false, - &internal::meta_info::resolve, - &meta_setter, - &meta_getter - }; - - ENTT_ASSERT(!internal::find_if_not(id, type->data, &node), "Duplicate identifier"); - node.id = id; - - if(!internal::find_if(&node, type->data)) { - node.next = type->data; - type->data = &node; - } - - return meta_factory, std::integral_constant>{&node.prop}; - } - - /** - * @brief Assigns a meta funcion to a meta type. - * - * Both member functions and free functions can be assigned to a meta - * type.
- * From a client's point of view, all the functions associated with the - * reflected object will appear as if they were part of the type itself. - * - * @tparam Candidate The actual function to attach to the meta type. - * @tparam Policy Optional policy (no policy set by default). - * @param id Unique identifier. - * @return An extended meta factory for the parent type. - */ - template - auto func(const id_type id) ENTT_NOEXCEPT { - using descriptor = meta_function_helper_t; - auto * const type = internal::meta_info::resolve(); - - static internal::meta_func_node node{ - {}, - type, - nullptr, - nullptr, - descriptor::args_type::size, - descriptor::is_const, - descriptor::is_static, - &internal::meta_info, void, typename descriptor::return_type>>::resolve, - [](const typename internal::meta_func_node::size_type index) ENTT_NOEXCEPT { - return meta_arg(typename descriptor::args_type{}, index); - }, - [](meta_handle instance, meta_any *args) { - return meta_invoke(std::move(instance), args, std::make_index_sequence{}); - } - }; - - for(auto *it = &type->func; *it; it = &(*it)->next) { - if(*it == &node) { - *it = node.next; - break; - } - } - - internal::meta_func_node **it = &type->func; - for(; *it && (*it)->id != id; it = &(*it)->next); - for(; *it && (*it)->id == id && (*it)->arity < node.arity; it = &(*it)->next); - - node.id = id; - node.next = *it; - *it = &node; - - return meta_factory>{&node.prop}; - } -}; - - -/** - * @brief Utility function to use for reflection. - * - * This is the point from which everything starts.
- * By invoking this function with a type that is not yet reflected, a meta type - * is created to which it will be possible to attach meta objects through a - * dedicated factory. - * - * @tparam Type Type to reflect. - * @return A meta factory for the given type. - */ -template -[[nodiscard]] auto meta() ENTT_NOEXCEPT { - auto * const node = internal::meta_info::resolve(); - // extended meta factory to allow assigning properties to opaque meta types - return meta_factory{&node->prop}; -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/meta.hpp b/LiteLoader/Header/third-party/entt/meta/meta.hpp deleted file mode 100644 index 52fc741..0000000 --- a/LiteLoader/Header/third-party/entt/meta/meta.hpp +++ /dev/null @@ -1,2226 +0,0 @@ -#ifndef ENTT_META_META_HPP -#define ENTT_META_META_HPP - - -#include -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/any.hpp" -#include "../core/fwd.hpp" -#include "../core/utility.hpp" -#include "../core/type_info.hpp" -#include "../core/type_traits.hpp" -#include "adl_pointer.hpp" -#include "ctx.hpp" -#include "node.hpp" -#include "range.hpp" -#include "type_traits.hpp" - - -namespace entt { - - -class meta_any; -class meta_type; - - -/*! @brief Proxy object for sequence containers. */ -class meta_sequence_container { - template - struct meta_sequence_container_proxy; - - class meta_iterator; - -public: - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Meta iterator type. */ - using iterator = meta_iterator; - - /*! @brief Default constructor. */ - meta_sequence_container() ENTT_NOEXCEPT = default; - - /** - * @brief Construct a proxy object for sequence containers. - * @tparam Type Type of container to wrap. - * @param instance The container to wrap. - */ - template - meta_sequence_container(std::in_place_type_t, any instance) ENTT_NOEXCEPT - : value_type_fn{&meta_sequence_container_proxy::value_type}, - size_fn{&meta_sequence_container_proxy::size}, - resize_fn{&meta_sequence_container_proxy::resize}, - clear_fn{&meta_sequence_container_proxy::clear}, - begin_fn{&meta_sequence_container_proxy::begin}, - end_fn{&meta_sequence_container_proxy::end}, - insert_fn{&meta_sequence_container_proxy::insert}, - erase_fn{&meta_sequence_container_proxy::erase}, - get_fn{&meta_sequence_container_proxy::get}, - storage{std::move(instance)} - {} - - [[nodiscard]] inline meta_type value_type() const ENTT_NOEXCEPT; - [[nodiscard]] inline size_type size() const ENTT_NOEXCEPT; - inline bool resize(size_type); - inline bool clear(); - [[nodiscard]] inline iterator begin(); - [[nodiscard]] inline iterator end(); - inline std::pair insert(iterator, meta_any); - inline std::pair erase(iterator); - [[nodiscard]] inline meta_any operator[](size_type); - [[nodiscard]] inline explicit operator bool() const ENTT_NOEXCEPT; - -private: - meta_type(* value_type_fn)() ENTT_NOEXCEPT = nullptr; - size_type(* size_fn)(const any &) ENTT_NOEXCEPT = nullptr; - bool(* resize_fn)(any &, size_type) = nullptr; - bool(* clear_fn)(any &) = nullptr; - iterator(* begin_fn)(any &) = nullptr; - iterator(* end_fn)(any &) = nullptr; - std::pair(* insert_fn)(any &, iterator, meta_any &) = nullptr; - std::pair(* erase_fn)(any &, iterator) = nullptr; - meta_any(* get_fn)(any &, size_type) = nullptr; - any storage{}; -}; - - -/*! @brief Proxy object for associative containers. */ -class meta_associative_container { - template - struct meta_associative_container_proxy; - - class meta_iterator; - -public: - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Meta iterator type. */ - using iterator = meta_iterator; - - /*! @brief Default constructor. */ - meta_associative_container() ENTT_NOEXCEPT = default; - - /** - * @brief Construct a proxy object for associative containers. - * @tparam Type Type of container to wrap. - * @param instance The container to wrap. - */ - template - meta_associative_container(std::in_place_type_t, any instance) ENTT_NOEXCEPT - : key_only_container{is_key_only_meta_associative_container_v}, - key_type_fn{&meta_associative_container_proxy::key_type}, - mapped_type_fn{&meta_associative_container_proxy::mapped_type}, - value_type_fn{&meta_associative_container_proxy::value_type}, - size_fn{&meta_associative_container_proxy::size}, - clear_fn{&meta_associative_container_proxy::clear}, - begin_fn{&meta_associative_container_proxy::begin}, - end_fn{&meta_associative_container_proxy::end}, - insert_fn{&meta_associative_container_proxy::insert}, - erase_fn{&meta_associative_container_proxy::erase}, - find_fn{&meta_associative_container_proxy::find}, - storage{std::move(instance)} - {} - - [[nodiscard]] inline bool key_only() const ENTT_NOEXCEPT; - [[nodiscard]] inline meta_type key_type() const ENTT_NOEXCEPT; - [[nodiscard]] inline meta_type mapped_type() const ENTT_NOEXCEPT; - [[nodiscard]] inline meta_type value_type() const ENTT_NOEXCEPT; - [[nodiscard]] inline size_type size() const ENTT_NOEXCEPT; - inline bool clear(); - [[nodiscard]] inline iterator begin(); - [[nodiscard]] inline iterator end(); - inline bool insert(meta_any, meta_any); - inline bool erase(meta_any); - [[nodiscard]] inline iterator find(meta_any); - [[nodiscard]] inline explicit operator bool() const ENTT_NOEXCEPT; - -private: - bool key_only_container{}; - meta_type(* key_type_fn)() ENTT_NOEXCEPT = nullptr; - meta_type(* mapped_type_fn)() ENTT_NOEXCEPT = nullptr; - meta_type(* value_type_fn)() ENTT_NOEXCEPT = nullptr; - size_type(* size_fn)(const any &) ENTT_NOEXCEPT = nullptr; - bool(* clear_fn)(any &) = nullptr; - iterator(* begin_fn)(any &) = nullptr; - iterator(* end_fn)(any &) = nullptr; - bool(* insert_fn)(any &, meta_any &, meta_any &) = nullptr; - bool(* erase_fn)(any &, meta_any &) = nullptr; - iterator(* find_fn)(any &, meta_any &) = nullptr; - any storage{}; -}; - - -/*! @brief Opaque wrapper for values of any type. */ -class meta_any { - enum class operation { DTOR, DEREF, SEQ, ASSOC }; - - using vtable_type = void(const operation, const any &, void *); - - template - static void basic_vtable([[maybe_unused]] const operation op, [[maybe_unused]] const any &from, [[maybe_unused]] void *to) { - static_assert(std::is_same_v>, Type>, "Invalid type"); - - if constexpr(!std::is_void_v) { - switch(op) { - case operation::DTOR: - if(auto *curr = static_cast(to); curr->dtor && from.owner()) { - curr->dtor(const_cast(from).data()); - } - break; - case operation::DEREF: - if constexpr(is_meta_pointer_like_v) { - using element_type = std::remove_const_t::element_type>; - - if constexpr(std::is_function_v) { - *static_cast(to) = any_cast(from); - } else if constexpr(!std::is_same_v::element_type>, void>) { - using in_place_type = decltype(adl_meta_pointer_like::dereference(any_cast(from))); - static_cast(to)->emplace(adl_meta_pointer_like::dereference(any_cast(from))); - } - } - break; - case operation::SEQ: - if constexpr(is_complete_v>) { - *static_cast(to) = { std::in_place_type, std::move(const_cast(from)) }; - } - break; - case operation::ASSOC: - if constexpr(is_complete_v>) { - *static_cast(to) = { std::in_place_type, std::move(const_cast(from)) }; - } - break; - } - } - } - - meta_any(const meta_any &other, any ref) ENTT_NOEXCEPT - : storage{std::move(ref)}, - node{storage ? other.node : nullptr}, - vtable{storage ? other.vtable : &basic_vtable} - {} - -public: - /*! @brief Default constructor. */ - meta_any() ENTT_NOEXCEPT - : storage{}, - node{}, - vtable{&basic_vtable} - {} - - /** - * @brief Constructs a wrapper by directly initializing the new object. - * @tparam Type Type of object to use to initialize the wrapper. - * @tparam Args Types of arguments to use to construct the new instance. - * @param args Parameters to use to construct the instance. - */ - template - explicit meta_any(std::in_place_type_t, Args &&... args) - : storage{std::in_place_type, std::forward(args)...}, - node{internal::meta_info::resolve()}, - vtable{&basic_vtable>>} - {} - - /** - * @brief Constructs a wrapper that holds an unmanaged object. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - */ - template - meta_any(std::reference_wrapper value) - : meta_any{} - { - // invokes deprecated assignment operator (and avoids issues with vs2017) - *this = value; - } - - /** - * @brief Constructs a wrapper from a given value. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - */ - template, meta_any>>> - meta_any(Type &&value) - : storage{std::forward(value)}, - node{internal::meta_info>::resolve()}, - vtable{&basic_vtable>} - {} - - /** - * @brief Copy constructor. - * @param other The instance to copy from. - */ - meta_any(const meta_any &other) = default; - - /** - * @brief Move constructor. - * @param other The instance to move from. - */ - meta_any(meta_any &&other) ENTT_NOEXCEPT - : storage{std::move(other.storage)}, - node{std::exchange(other.node, nullptr)}, - vtable{std::exchange(other.vtable, &basic_vtable)} - {} - - /*! @brief Frees the internal storage, whatever it means. */ - ~meta_any() { - vtable(operation::DTOR, storage, node); - } - - /** - * @brief Copy assignment operator. - * @param other The instance to copy from. - * @return This meta any object. - */ - meta_any & operator=(const meta_any &other) { - std::exchange(vtable, other.vtable)(operation::DTOR, storage, node); - storage = other.storage; - node = other.node; - return *this; - } - - /** - * @brief Move assignment operator. - * @param other The instance to move from. - * @return This meta any object. - */ - meta_any & operator=(meta_any &&other) ENTT_NOEXCEPT { - std::exchange(vtable, std::exchange(other.vtable, &basic_vtable))(operation::DTOR, storage, node); - storage = std::move(other.storage); - node = std::exchange(other.node, nullptr); - return *this; - } - - /** - * @brief Value assignment operator. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - * @return This meta any object. - */ - template - [[deprecated("Use std::in_place_type, entt::make_meta, emplace or forward_as_meta instead")]] - meta_any & operator=(std::reference_wrapper value) { - emplace(value.get()); - return *this; - } - - /** - * @brief Value assignment operator. - * @tparam Type Type of object to use to initialize the wrapper. - * @param value An instance of an object to use to initialize the wrapper. - * @return This meta any object. - */ - template - std::enable_if_t, meta_any>, meta_any &> - operator=(Type &&value) { - emplace>(std::forward(value)); - return *this; - } - - /** - * @brief Returns the type of the underlying object. - * @return The type of the underlying object, if any. - */ - [[nodiscard]] inline meta_type type() const ENTT_NOEXCEPT; - - /** - * @brief Returns an opaque pointer to the contained instance. - * @return An opaque pointer the contained instance, if any. - */ - [[nodiscard]] const void * data() const ENTT_NOEXCEPT { - return storage.data(); - } - - /*! @copydoc data */ - [[nodiscard]] void * data() ENTT_NOEXCEPT { - return storage.data(); - } - - /** - * @brief Invokes the underlying function, if possible. - * - * @sa meta_func::invoke - * - * @tparam Args Types of arguments to use to invoke the function. - * @param id Unique identifier. - * @param args Parameters to use to invoke the function. - * @return A wrapper containing the returned value, if any. - */ - template - meta_any invoke(const id_type id, Args &&... args) const; - - /*! @copydoc invoke */ - template - meta_any invoke(const id_type id, Args &&... args); - - /** - * @brief Sets the value of a given variable. - * - * The type of the value must be such that a cast or conversion to the type - * of the variable is possible. Otherwise, invoking the setter does nothing. - * - * @tparam Type Type of value to assign. - * @param id Unique identifier. - * @param value Parameter to use to set the underlying variable. - * @return True in case of success, false otherwise. - */ - template - bool set(const id_type id, Type &&value); - - /** - * @brief Gets the value of a given variable. - * @param id Unique identifier. - * @return A wrapper containing the value of the underlying variable. - */ - [[nodiscard]] meta_any get(const id_type id) const; - - /*! @copydoc get */ - [[nodiscard]] meta_any get(const id_type id); - - /** - * @brief Tries to cast an instance to a given type. - * @tparam Type Type to which to cast the instance. - * @return A (possibly null) pointer to the contained instance. - */ - template - [[nodiscard]] const Type * try_cast() const { - if(node) { - if(const auto info = type_id(); node->info == info) { - return any_cast(&storage); - } else if(const auto *base = internal::meta_visit<&internal::meta_type_node::base>([info](const auto *curr) { return curr->type()->info == info; }, node); base) { - return static_cast(base->cast(storage.data())); - } - } - - return nullptr; - } - - /*! @copydoc try_cast */ - template - [[nodiscard]] Type * try_cast() { - if(node) { - if(const auto info = type_id(); node->info == info) { - return any_cast(&storage); - } else if(const auto *base = internal::meta_visit<&internal::meta_type_node::base>([info](const auto *curr) { return curr->type()->info == info; }, node); base) { - return static_cast(const_cast *>(base->cast(static_cast &>(storage).data()))); - } - } - - return nullptr; - } - - /** - * @brief Tries to cast an instance to a given type. - * - * The type of the instance must be such that the cast is possible. - * - * @warning - * Attempting to perform an invalid cast results in undefined behavior. - * - * @tparam Type Type to which to cast the instance. - * @return A reference to the contained instance. - */ - template - [[nodiscard]] Type cast() const { - auto * const instance = try_cast>(); - ENTT_ASSERT(instance, "Invalid instance"); - return static_cast(*instance); - } - - /*! @copydoc cast */ - template - [[nodiscard]] Type cast() { - // forces const on non-reference types to make them work also with wrappers for const references - auto * const instance = try_cast>(); - ENTT_ASSERT(instance, "Invalid instance"); - return static_cast(*instance); - } - - /** - * @brief Converts an object in such a way that a given cast becomes viable. - * @tparam Type Type to which the cast is requested. - * @return A valid meta any object if there exists a viable conversion, an - * invalid one otherwise. - */ - template - [[nodiscard]] meta_any allow_cast() const { - if(try_cast>() != nullptr) { - return as_ref(); - } else if(node) { - if(const auto * const conv = internal::meta_visit<&internal::meta_type_node::conv>([info = type_id()](const auto *curr) { return curr->type()->info == info; }, node); conv) { - return conv->conv(storage.data()); - } - } - - return {}; - } - - /** - * @brief Converts an object in such a way that a given cast becomes viable. - * @tparam Type Type to which the cast is requested. - * @return True if there exists a viable conversion, false otherwise. - */ - template - bool allow_cast() { - // forces const on non-reference types to make them work also with wrappers for const references - if(try_cast>() != nullptr) { - return true; - } else if(node) { - if(const auto * const conv = internal::meta_visit<&internal::meta_type_node::conv>([info = type_id()](const auto *curr) { return curr->type()->info == info; }, node); conv) { - *this = conv->conv(std::as_const(storage).data()); - return true; - } - } - - return false; - } - - /** - * @brief Replaces the contained object by creating a new instance directly. - * @tparam Type Type of object to use to initialize the wrapper. - * @tparam Args Types of arguments to use to construct the new instance. - * @param args Parameters to use to construct the instance. - */ - template - void emplace(Args &&... args) { - std::exchange(vtable, &basic_vtable>>)(operation::DTOR, storage, node); - storage.emplace(std::forward(args)...); - node = internal::meta_info::resolve(); - } - - /*! @brief Destroys contained object */ - void reset() { - std::exchange(vtable, &basic_vtable)(operation::DTOR, storage, node); - storage.reset(); - node = nullptr; - } - - /** - * @brief Returns a sequence container proxy. - * @return A sequence container proxy for the underlying object. - */ - [[nodiscard]] meta_sequence_container as_sequence_container() ENTT_NOEXCEPT { - meta_sequence_container proxy; - vtable(operation::SEQ, storage.as_ref(), &proxy); - return proxy; - } - - /*! @copydoc as_sequence_container */ - [[nodiscard]] meta_sequence_container as_sequence_container() const ENTT_NOEXCEPT { - meta_sequence_container proxy; - vtable(operation::SEQ, storage.as_ref(), &proxy); - return proxy; - } - - /** - * @brief Returns an associative container proxy. - * @return An associative container proxy for the underlying object. - */ - [[nodiscard]] meta_associative_container as_associative_container() ENTT_NOEXCEPT { - meta_associative_container proxy; - vtable(operation::ASSOC, storage.as_ref(), &proxy); - return proxy; - } - - /*! @copydoc as_associative_container */ - [[nodiscard]] meta_associative_container as_associative_container() const ENTT_NOEXCEPT { - meta_associative_container proxy; - vtable(operation::ASSOC, storage.as_ref(), &proxy); - return proxy; - } - - /** - * @brief Indirection operator for dereferencing opaque objects. - * @return A wrapper that shares a reference to an unmanaged object if the - * wrapped element is dereferenceable, an invalid meta any otherwise. - */ - [[nodiscard]] meta_any operator*() const ENTT_NOEXCEPT { - meta_any ret{}; - vtable(operation::DEREF, storage, &ret); - return ret; - } - - /** - * @brief Returns false if a wrapper is invalid, true otherwise. - * @return False if the wrapper is invalid, true otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(node == nullptr); - } - - /** - * @brief Checks if two wrappers differ in their content. - * @param other Wrapper with which to compare. - * @return False if the two objects differ in their content, true otherwise. - */ - [[nodiscard]] bool operator==(const meta_any &other) const { - return (!node && !other.node) || (node && other.node && node->info == other.node->info && storage == other.storage); - } - - /** - * @brief Aliasing constructor. - * @return A wrapper that shares a reference to an unmanaged object. - */ - [[nodiscard]] meta_any as_ref() ENTT_NOEXCEPT { - return meta_any{*this, storage.as_ref()}; - } - - /*! @copydoc as_ref */ - [[nodiscard]] meta_any as_ref() const ENTT_NOEXCEPT { - return meta_any{*this, storage.as_ref()}; - } - -private: - any storage; - internal::meta_type_node *node; - vtable_type *vtable; -}; - - -/** - * @brief Checks if two wrappers differ in their content. - * @param lhs A wrapper, either empty or not. - * @param rhs A wrapper, either empty or not. - * @return True if the two wrappers differ in their content, false otherwise. - */ -[[nodiscard]] inline bool operator!=(const meta_any &lhs, const meta_any &rhs) ENTT_NOEXCEPT { - return !(lhs == rhs); -} - - -/** - * @brief Constructs a wrapper from a given type, passing it all arguments. - * @tparam Type Type of object to use to initialize the wrapper. - * @tparam Args Types of arguments to use to construct the new instance. - * @param args Parameters to use to construct the instance. - * @return A properly initialized wrapper for an object of the given type. - */ -template -meta_any make_meta(Args &&... args) { - return meta_any{std::in_place_type, std::forward(args)...}; -} - - -/** - * @brief Forwards its argument and avoids copies for lvalue references. - * @tparam Type Type of argument to use to construct the new instance. - * @param value Parameter to use to construct the instance. - * @return A properly initialized and not necessarily owning wrapper. - */ -template -meta_any forward_as_meta(Type &&value) { - return meta_any{std::in_place_type, std::decay_t, Type>>, std::forward(value)}; -} - - -/** - * @brief Opaque pointers to instances of any type. - * - * A handle doesn't perform copies and isn't responsible for the contained - * object. It doesn't prolong the lifetime of the pointed instance.
- * Handles are used to generate references to actual objects when needed. - */ -struct meta_handle { - /*! @brief Default constructor. */ - meta_handle() = default; - - - /*! @brief Default copy constructor, deleted on purpose. */ - meta_handle(const meta_handle &) = delete; - - /*! @brief Default move constructor. */ - meta_handle(meta_handle &&) = default; - - /** - * @brief Default copy assignment operator, deleted on purpose. - * @return This meta handle. - */ - meta_handle & operator=(const meta_handle &) = delete; - - /** - * @brief Default move assignment operator. - * @return This meta handle. - */ - meta_handle & operator=(meta_handle &&) = default; - - /** - * @brief Creates a handle that points to an unmanaged object. - * @tparam Type Type of object to use to initialize the handle. - * @param value An instance of an object to use to initialize the handle. - */ - template, meta_handle>>> - meta_handle(Type &value) ENTT_NOEXCEPT - : meta_handle{} - { - if constexpr(std::is_same_v, meta_any>) { - any = value.as_ref(); - } else { - any.emplace(value); - } - } - - /** - * @brief Returns false if a handle is invalid, true otherwise. - * @return False if the handle is invalid, true otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return static_cast(any); - } - - /** - * @brief Access operator for accessing the contained opaque object. - * @return A wrapper that shares a reference to an unmanaged object. - */ - [[nodiscard]] meta_any * operator->() { - return &any; - } - - /*! @copydoc operator-> */ - [[nodiscard]] const meta_any * operator->() const { - return &any; - } - -private: - meta_any any; -}; - - -/*! @brief Opaque wrapper for properties of any type. */ -struct meta_prop { - /*! @brief Node type. */ - using node_type = internal::meta_prop_node; - - /** - * @brief Constructs an instance from a given node. - * @param curr The underlying node with which to construct the instance. - */ - meta_prop(const node_type *curr = nullptr) ENTT_NOEXCEPT - : node{curr} - {} - - /** - * @brief Returns the stored key as a const reference. - * @return A wrapper containing the key stored with the property. - */ - [[nodiscard]] meta_any key() const { - return node->id.as_ref(); - } - - /** - * @brief Returns the stored value by copy. - * @return A wrapper containing the value stored with the property. - */ - [[nodiscard]] meta_any value() const { - return node->value; - } - - /** - * @brief Returns true if an object is valid, false otherwise. - * @return True if the object is valid, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(node == nullptr); - } - -private: - const node_type *node; -}; - - -/*! @brief Opaque wrapper for constructors. */ -struct meta_ctor { - /*! @brief Node type. */ - using node_type = internal::meta_ctor_node; - /*! @brief Unsigned integer type. */ - using size_type = typename node_type::size_type; - - /*! @copydoc meta_prop::meta_prop */ - meta_ctor(const node_type *curr = nullptr) ENTT_NOEXCEPT - : node{curr} - {} - - /** - * @brief Returns the type to which an object belongs. - * @return The type to which the object belongs. - */ - [[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT; - - /** - * @brief Returns the number of arguments accepted by a constructor. - * @return The number of arguments accepted by the constructor. - */ - [[nodiscard]] size_type arity() const ENTT_NOEXCEPT { - return node->arity; - } - - /** - * @brief Returns the type of the i-th argument of a constructor. - * @param index Index of the argument of which to return the type. - * @return The type of the i-th argument of a constructor. - */ - [[nodiscard]] meta_type arg(size_type index) const ENTT_NOEXCEPT; - - /** - * @brief Creates an instance of the underlying type, if possible. - * - * Parameters must be such that a cast or conversion to the required types - * is possible. Otherwise, an empty and thus invalid wrapper is returned. - * - * @param args Parameters to use to construct the instance. - * @param sz Number of parameters to use to construct the instance. - * @return A wrapper containing the new instance, if any. - */ - [[nodiscard]] meta_any invoke(meta_any * const args, const size_type sz) const { - return sz == arity() ? node->invoke(args) : meta_any{}; - } - - /** - * @copybrief invoke - * - * @sa invoke - * - * @tparam Args Types of arguments to use to construct the instance. - * @param args Parameters to use to construct the instance. - * @return A wrapper containing the new instance, if any. - */ - template - [[nodiscard]] meta_any invoke([[maybe_unused]] Args &&... args) const { - meta_any arguments[sizeof...(Args) + 1u]{std::forward(args)...}; - return invoke(arguments, sizeof...(Args)); - } - - /** - * @brief Returns a range to use to visit all properties. - * @return An iterable range to use to visit all properties. - */ - [[nodiscard]] meta_range prop() const ENTT_NOEXCEPT { - return node->prop; - } - - /** - * @brief Returns the property associated with a given key. - * @param key The key to use to search for a property. - * @return The property associated with the given key, if any. - */ - [[nodiscard]] meta_prop prop(meta_any key) const { - return internal::meta_visit<&node_type::prop>([&key](const auto *curr) { return curr->id == key; }, node); - } - - /** - * @brief Returns true if an object is valid, false otherwise. - * @return True if the object is valid, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(node == nullptr); - } - -private: - const node_type *node; -}; - - -/*! @brief Opaque wrapper for data members. */ -struct meta_data { - /*! @brief Node type. */ - using node_type = internal::meta_data_node; - - /*! @copydoc meta_prop::meta_prop */ - meta_data(const node_type *curr = nullptr) ENTT_NOEXCEPT - : node{curr} - {} - - /*! @copydoc meta_type::id */ - [[nodiscard]] id_type id() const ENTT_NOEXCEPT { - return node->id; - } - - /*! @copydoc meta_ctor::parent */ - [[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT; - - /** - * @brief Indicates whether a data member is constant or not. - * @return True if the data member is constant, false otherwise. - */ - [[nodiscard]] bool is_const() const ENTT_NOEXCEPT { - return node->is_const; - } - - /** - * @brief Indicates whether a data member is static or not. - * @return True if the data member is static, false otherwise. - */ - [[nodiscard]] bool is_static() const ENTT_NOEXCEPT { - return node->is_static; - } - - /*! @copydoc meta_any::type */ - [[nodiscard]] inline meta_type type() const ENTT_NOEXCEPT; - - /** - * @brief Sets the value of a given variable. - * - * It must be possible to cast the instance to the parent type of the data - * member. Otherwise, invoking the setter results in an undefined - * behavior.
- * The type of the value must be such that a cast or conversion to the type - * of the variable is possible. Otherwise, invoking the setter does nothing. - * - * @tparam Type Type of value to assign. - * @param instance An opaque instance of the underlying type. - * @param value Parameter to use to set the underlying variable. - * @return True in case of success, false otherwise. - */ - template - bool set(meta_handle instance, Type &&value) const { - return node->set && node->set(std::move(instance), std::forward(value)); - } - - /** - * @brief Gets the value of a given variable. - * - * It must be possible to cast the instance to the parent type of the data - * member. Otherwise, invoking the getter results in an undefined behavior. - * - * @param instance An opaque instance of the underlying type. - * @return A wrapper containing the value of the underlying variable. - */ - [[nodiscard]] meta_any get(meta_handle instance) const { - return node->get(std::move(instance)); - } - - /*! @copydoc meta_ctor::prop */ - [[nodiscard]] meta_range prop() const ENTT_NOEXCEPT { - return node->prop; - } - - /** - * @brief Returns the property associated with a given key. - * @param key The key to use to search for a property. - * @return The property associated with the given key, if any. - */ - [[nodiscard]] meta_prop prop(meta_any key) const { - return internal::meta_visit<&node_type::prop>([&key](const auto *curr) { return curr->id == key; }, node); - } - - /** - * @brief Returns true if an object is valid, false otherwise. - * @return True if the object is valid, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(node == nullptr); - } - -private: - const node_type *node; -}; - - -/*! @brief Opaque wrapper for member functions. */ -struct meta_func { - /*! @brief Node type. */ - using node_type = internal::meta_func_node; - /*! @brief Unsigned integer type. */ - using size_type = typename node_type::size_type; - - /*! @copydoc meta_prop::meta_prop */ - meta_func(const node_type *curr = nullptr) ENTT_NOEXCEPT - : node{curr} - {} - - /*! @copydoc meta_type::id */ - [[nodiscard]] id_type id() const ENTT_NOEXCEPT { - return node->id; - } - - /*! @copydoc meta_ctor::parent */ - [[nodiscard]] inline meta_type parent() const ENTT_NOEXCEPT; - - /** - * @brief Returns the number of arguments accepted by a member function. - * @return The number of arguments accepted by the member function. - */ - [[nodiscard]] size_type arity() const ENTT_NOEXCEPT { - return node->arity; - } - - /** - * @brief Indicates whether a member function is constant or not. - * @return True if the member function is constant, false otherwise. - */ - [[nodiscard]] bool is_const() const ENTT_NOEXCEPT { - return node->is_const; - } - - /** - * @brief Indicates whether a member function is static or not. - * @return True if the member function is static, false otherwise. - */ - [[nodiscard]] bool is_static() const ENTT_NOEXCEPT { - return node->is_static; - } - - /** - * @brief Returns the return type of a member function. - * @return The return type of the member function. - */ - [[nodiscard]] inline meta_type ret() const ENTT_NOEXCEPT; - - /** - * @brief Returns the type of the i-th argument of a member function. - * @param index Index of the argument of which to return the type. - * @return The type of the i-th argument of a member function. - */ - [[nodiscard]] inline meta_type arg(size_type index) const ENTT_NOEXCEPT; - - /** - * @brief Invokes the underlying function, if possible. - * - * To invoke a member function, the parameters must be such that a cast or - * conversion to the required types is possible. Otherwise, an empty and - * thus invalid wrapper is returned.
- * It must be possible to cast the instance to the parent type of the member - * function. Otherwise, invoking the underlying function results in an - * undefined behavior. - * - * @param instance An opaque instance of the underlying type. - * @param args Parameters to use to invoke the function. - * @param sz Number of parameters to use to invoke the function. - * @return A wrapper containing the returned value, if any. - */ - meta_any invoke(meta_handle instance, meta_any * const args, const size_type sz) const { - return sz == arity() ? node->invoke(std::move(instance), args) : meta_any{}; - } - - /** - * @copybrief invoke - * - * @sa invoke - * - * @tparam Args Types of arguments to use to invoke the function. - * @param instance An opaque instance of the underlying type. - * @param args Parameters to use to invoke the function. - * @return A wrapper containing the new instance, if any. - */ - template - meta_any invoke(meta_handle instance, Args &&... args) const { - meta_any arguments[sizeof...(Args) + 1u]{std::forward(args)...}; - return invoke(std::move(instance), arguments, sizeof...(Args)); - } - - /*! @copydoc meta_ctor::prop */ - [[nodiscard]] meta_range prop() const ENTT_NOEXCEPT { - return node->prop; - } - - /** - * @brief Returns the property associated with a given key. - * @param key The key to use to search for a property. - * @return The property associated with the given key, if any. - */ - [[nodiscard]] meta_prop prop(meta_any key) const { - return internal::meta_visit<&node_type::prop>([&key](const auto *curr) { return curr->id == key; }, node); - } - - /** - * @brief Returns true if an object is valid, false otherwise. - * @return True if the object is valid, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(node == nullptr); - } - -private: - const node_type *node; -}; - - -/*! @brief Opaque wrapper for types. */ -class meta_type { - static bool can_cast_or_convert(const internal::meta_type_node *type, const type_info info) ENTT_NOEXCEPT { - if(type->info == info) { - return true; - } - - for(const auto *curr = type->conv; curr; curr = curr->next) { - if(curr->type()->info == info) { - return true; - } - } - - for(const auto *curr = type->base; curr; curr = curr->next) { - if(auto *target = curr->type(); can_cast_or_convert(target, info)) { - return true; - } - } - - return false; - } - - template - [[nodiscard]] static const internal::meta_ctor_node * ctor(const internal::meta_ctor_node *curr, std::index_sequence) { - for(; curr; curr = curr->next) { - if(curr->arity == sizeof...(Args) && (can_cast_or_convert(internal::meta_info::resolve(), curr->arg(Index).info()) && ...)) { - return curr; - } - } - - return nullptr; - } - - template - void unregister_all(Node **curr) { - while(*curr) { - (unregister_all(&((*curr)->*Member)), ...); - *curr = std::exchange((*curr)->next, nullptr); - } - } - -public: - /*! @brief Node type. */ - using node_type = internal::meta_type_node; - /*! @brief Node type. */ - using base_node_type = internal::meta_base_node; - /*! @brief Unsigned integer type. */ - using size_type = typename node_type::size_type; - - /*! @copydoc meta_prop::meta_prop */ - meta_type(node_type *curr = nullptr) ENTT_NOEXCEPT - : node{curr} - {} - - /** - * @brief Constructs an instance from a given base node. - * @param curr The base node with which to construct the instance. - */ - meta_type(base_node_type *curr) ENTT_NOEXCEPT - : node{curr ? curr->type() : nullptr} - {} - - /** - * @brief Returns the type info object of the underlying type. - * @return The type info object of the underlying type. - */ - [[nodiscard]] type_info info() const ENTT_NOEXCEPT { - return node->info; - } - - /** - * @brief Returns the identifier assigned to a type. - * @return The identifier assigned to the type. - */ - [[nodiscard]] id_type id() const ENTT_NOEXCEPT { - return node->id; - } - - /** - * @brief Returns the size of the underlying type if known. - * @return The size of the underlying type if known, 0 otherwise. - */ - [[nodiscard]] size_type size_of() const ENTT_NOEXCEPT { - return node->size_of; - } - - /** - * @brief Checks whether a type refers to void or not. - * @return True if the underlying type is void, false otherwise. - */ - [[nodiscard]] bool is_void() const ENTT_NOEXCEPT { - return node->is_void; - } - - /** - * @brief Checks whether a type refers to an integral type or not. - * @return True if the underlying type is an integral type, false otherwise. - */ - [[nodiscard]] bool is_integral() const ENTT_NOEXCEPT { - return node->is_integral; - } - - /** - * @brief Checks whether a type refers to a floating-point type or not. - * @return True if the underlying type is a floating-point type, false - * otherwise. - */ - [[nodiscard]] bool is_floating_point() const ENTT_NOEXCEPT { - return node->is_floating_point; - } - - /** - * @brief Checks whether a type refers to an array type or not. - * @return True if the underlying type is an array type, false otherwise. - */ - [[nodiscard]] bool is_array() const ENTT_NOEXCEPT { - return node->is_array; - } - - /** - * @brief Checks whether a type refers to an enum or not. - * @return True if the underlying type is an enum, false otherwise. - */ - [[nodiscard]] bool is_enum() const ENTT_NOEXCEPT { - return node->is_enum; - } - - /** - * @brief Checks whether a type refers to an union or not. - * @return True if the underlying type is an union, false otherwise. - */ - [[nodiscard]] bool is_union() const ENTT_NOEXCEPT { - return node->is_union; - } - - /** - * @brief Checks whether a type refers to a class or not. - * @return True if the underlying type is a class, false otherwise. - */ - [[nodiscard]] bool is_class() const ENTT_NOEXCEPT { - return node->is_class; - } - - /** - * @brief Checks whether a type refers to a pointer or not. - * @return True if the underlying type is a pointer, false otherwise. - */ - [[nodiscard]] bool is_pointer() const ENTT_NOEXCEPT { - return node->is_pointer; - } - - /** - * @brief Checks whether a type refers to a function pointer or not. - * @return True if the underlying type is a function pointer, false - * otherwise. - */ - [[nodiscard]] bool is_function_pointer() const ENTT_NOEXCEPT { - return node->is_function_pointer; - } - - /** - * @brief Checks whether a type refers to a pointer to data member or not. - * @return True if the underlying type is a pointer to data member, false - * otherwise. - */ - [[nodiscard]] bool is_member_object_pointer() const ENTT_NOEXCEPT { - return node->is_member_object_pointer; - } - - /** - * @brief Checks whether a type refers to a pointer to member function or - * not. - * @return True if the underlying type is a pointer to member function, - * false otherwise. - */ - [[nodiscard]] bool is_member_function_pointer() const ENTT_NOEXCEPT { - return node->is_member_function_pointer; - } - - /** - * @brief Checks whether a type is a pointer-like type or not. - * @return True if the underlying type is a pointer-like one, false - * otherwise. - */ - [[nodiscard]] bool is_pointer_like() const ENTT_NOEXCEPT { - return node->is_pointer_like; - } - - /** - * @brief Checks whether a type refers to a sequence container or not. - * @return True if the type is a sequence container, false otherwise. - */ - [[nodiscard]] bool is_sequence_container() const ENTT_NOEXCEPT { - return node->is_sequence_container; - } - - /** - * @brief Checks whether a type refers to an associative container or not. - * @return True if the type is an associative container, false otherwise. - */ - [[nodiscard]] bool is_associative_container() const ENTT_NOEXCEPT { - return node->is_associative_container; - } - - /** - * @brief Checks whether a type refers to a recognized class template - * specialization or not. - * @return True if the type is a recognized class template specialization, - * false otherwise. - */ - [[nodiscard]] bool is_template_specialization() const ENTT_NOEXCEPT { - return node->template_info.is_template_specialization; - } - - /** - * @brief Returns the number of template arguments, if any. - * @return The number of template arguments, if any. - */ - [[nodiscard]] size_type template_arity() const ENTT_NOEXCEPT { - return node->template_info.arity; - } - - /** - * @brief Returns a tag for the class template of the underlying type. - * - * @sa meta_class_template_tag - * - * @return The tag for the class template of the underlying type. - */ - [[nodiscard]] inline meta_type template_type() const ENTT_NOEXCEPT { - return is_template_specialization() ? node->template_info.type() : meta_type{}; - } - - /** - * @brief Returns the type of the i-th template argument of a type. - * @param index Index of the template argument of which to return the type. - * @return The type of the i-th template argument of a type. - */ - [[nodiscard]] inline meta_type template_arg(size_type index) const ENTT_NOEXCEPT { - return index < template_arity() ? node->template_info.arg(index) : meta_type{}; - } - - /** - * @brief Provides the number of dimensions of an array type. - * @return The number of dimensions in case of array types, 0 otherwise. - */ - [[nodiscard]] size_type rank() const ENTT_NOEXCEPT { - return node->rank; - } - - /** - * @brief The number of elements along the given dimension of an array type. - * @param dim The dimension of which to return the number of elements. - * @return The number of elements along the given dimension in case of array - * types, 0 otherwise. - */ - [[nodiscard]] size_type extent(size_type dim = {}) const ENTT_NOEXCEPT { - return node->extent(dim); - } - - /** - * @brief Provides the type for which the pointer is defined. - * @return The type for which the pointer is defined or this type if it - * doesn't refer to a pointer type. - */ - [[nodiscard]] meta_type remove_pointer() const ENTT_NOEXCEPT { - return node->remove_pointer(); - } - - /** - * @brief Provides the type for which the array is defined. - * @return The type for which the array is defined or this type if it - * doesn't refer to an array type. - */ - [[nodiscard]] meta_type remove_extent() const ENTT_NOEXCEPT { - return node->remove_extent(); - } - - /** - * @brief Returns a range to use to visit top-level base meta types. - * @return An iterable range to use to visit top-level base meta types. - */ - [[nodiscard]] meta_range base() const ENTT_NOEXCEPT { - return node->base; - } - - /** - * @brief Returns the base meta type associated with a given identifier. - * @param id Unique identifier. - * @return The base meta type associated with the given identifier, if any. - */ - [[nodiscard]] meta_type base(const id_type id) const { - return internal::meta_visit<&node_type::base>([id](const auto *curr) { return curr->type()->id == id; }, node); - } - - /** - * @brief Returns a range to use to visit top-level constructors. - * @return An iterable range to use to visit top-level constructors. - */ - [[nodiscard]] meta_range ctor() const ENTT_NOEXCEPT { - return node->ctor; - } - - /** - * @brief Returns a constructor for a given list of types of arguments. - * @tparam Args Constructor arguments. - * @return The requested constructor, if any. - */ - template - [[nodiscard]] meta_ctor ctor() const { - return ctor(node->ctor, std::make_index_sequence{}); - } - - /** - * @brief Returns a range to use to visit top-level data. - * @return An iterable range to use to visit top-level data. - */ - [[nodiscard]] meta_range data() const ENTT_NOEXCEPT { - return node->data; - } - - /** - * @brief Returns the data associated with a given identifier. - * - * The data of the base classes will also be visited, if any. - * - * @param id Unique identifier. - * @return The data associated with the given identifier, if any. - */ - [[nodiscard]] meta_data data(const id_type id) const { - return internal::meta_visit<&node_type::data>([id](const auto *curr) { return curr->id == id; }, node); - } - - /** - * @brief Returns a range to use to visit top-level functions. - * @return An iterable range to use to visit top-level functions. - */ - [[nodiscard]] meta_range func() const ENTT_NOEXCEPT { - return node->func; - } - - /** - * @brief Returns the function associated with a given identifier. - * - * The functions of the base classes will also be visited, if any.
- * In the case of overloaded functions, the first one with the required - * identifier will be returned. - * - * @param id Unique identifier. - * @return The function associated with the given identifier, if any. - */ - [[nodiscard]] meta_func func(const id_type id) const { - return internal::meta_visit<&node_type::func>([id](const auto *curr) { return curr->id == id; }, node); - } - - /** - * @brief Creates an instance of the underlying type, if possible. - * - * Parameters must be such that a cast or conversion to the required types - * is possible. Otherwise, an empty and thus invalid wrapper is returned. - * - * @param args Parameters to use to construct the instance. - * @param sz Number of parameters to use to construct the instance. - * @return A wrapper containing the new instance, if any. - */ - [[nodiscard]] meta_any construct(meta_any * const args, const size_type sz) const { - meta_any ret{}; - internal::meta_visit<&node_type::ctor>([args, sz, &ret](const auto *curr) { return (curr->arity == sz) && (ret = curr->invoke(args)); }, node); - return ret; - } - - /** - * @copybrief construct - * - * @sa construct - * - * @tparam Args Types of arguments to use to construct the instance. - * @param args Parameters to use to construct the instance. - * @return A wrapper containing the new instance, if any. - */ - template - [[nodiscard]] meta_any construct(Args &&... args) const { - meta_any arguments[sizeof...(Args) + 1u]{std::forward(args)...}; - return construct(arguments, sizeof...(Args)); - } - - /** - * @brief Invokes a function given an identifier, if possible. - * - * It must be possible to cast the instance to the parent type of the member - * function. Otherwise, invoking the underlying function results in an - * undefined behavior. - * - * @sa meta_func::invoke - * - * @param id Unique identifier. - * @param instance An opaque instance of the underlying type. - * @param args Parameters to use to invoke the function. - * @param sz Number of parameters to use to invoke the function. - * @return A wrapper containing the returned value, if any. - */ - meta_any invoke(const id_type id, meta_handle instance, meta_any * const args, const size_type sz) const { - const internal::meta_func_node* candidate{}; - size_type extent{sz + 1u}; - bool ambiguous{}; - - for(auto *it = internal::meta_visit<&node_type::func>([id, sz](const auto *curr) { return curr->id == id && curr->arity == sz; }, node); it && it->id == id && it->arity == sz; it = it->next) { - size_type direct{}; - size_type ext{}; - - for(size_type next{}; next < sz && next == (direct + ext); ++next) { - const auto type = args[next].type(); - const auto req = it->arg(next).info(); - type.info() == req ? ++direct : (ext += can_cast_or_convert(type.node, req)); - } - - if((direct + ext) == sz) { - if(ext < extent) { - candidate = it; - extent = ext; - ambiguous = false; - } else if(ext == extent) { - ambiguous = true; - } - } - } - - return (candidate && !ambiguous) ? candidate->invoke(std::move(instance), args) : meta_any{}; - } - - /** - * @copybrief invoke - * - * @sa invoke - * - * @param id Unique identifier. - * @tparam Args Types of arguments to use to invoke the function. - * @param instance An opaque instance of the underlying type. - * @param args Parameters to use to invoke the function. - * @return A wrapper containing the new instance, if any. - */ - template - meta_any invoke(const id_type id, meta_handle instance, Args &&... args) const { - meta_any arguments[sizeof...(Args) + 1u]{std::forward(args)...}; - return invoke(id, std::move(instance), arguments, sizeof...(Args)); - } - - /** - * @brief Sets the value of a given variable. - * - * It must be possible to cast the instance to the parent type of the data - * member. Otherwise, invoking the setter results in an undefined - * behavior.
- * The type of the value must be such that a cast or conversion to the type - * of the variable is possible. Otherwise, invoking the setter does nothing. - * - * @tparam Type Type of value to assign. - * @param id Unique identifier. - * @param instance An opaque instance of the underlying type. - * @param value Parameter to use to set the underlying variable. - * @return True in case of success, false otherwise. - */ - template - bool set(const id_type id, meta_handle instance, Type &&value) const { - const auto candidate = data(id); - return candidate && candidate.set(std::move(instance), std::forward(value)); - } - - /** - * @brief Gets the value of a given variable. - * - * It must be possible to cast the instance to the parent type of the data - * member. Otherwise, invoking the getter results in an undefined behavior. - * - * @param id Unique identifier. - * @param instance An opaque instance of the underlying type. - * @return A wrapper containing the value of the underlying variable. - */ - [[nodiscard]] meta_any get(const id_type id, meta_handle instance) const { - const auto candidate = data(id); - return candidate ? candidate.get(std::move(instance)) : meta_any{}; - } - - /** - * @brief Returns a range to use to visit top-level properties. - * @return An iterable range to use to visit top-level properties. - */ - [[nodiscard]] meta_range prop() const ENTT_NOEXCEPT { - return node->prop; - } - - /** - * @brief Returns the property associated with a given key. - * - * Properties of the base classes will also be visited, if any. - * - * @param key The key to use to search for a property. - * @return The property associated with the given key, if any. - */ - [[nodiscard]] meta_prop prop(meta_any key) const { - return internal::meta_visit<&node_type::prop>([&key](const auto *curr) { return curr->id == key; }, node); - } - - /** - * @brief Returns true if an object is valid, false otherwise. - * @return True if the object is valid, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(node == nullptr); - } - - /** - * @brief Checks if two objects refer to the same type. - * @param other The object with which to compare. - * @return True if the objects refer to the same type, false otherwise. - */ - [[nodiscard]] bool operator==(const meta_type &other) const ENTT_NOEXCEPT { - return (!node && !other.node) || (node && other.node && node->info == other.node->info); - } - - /** - * @brief Resets a type and all its parts. - * - * This function resets a type and all its data members, member functions - * and properties, as well as its constructors, destructors and conversion - * functions if any.
- * Base classes aren't reset but the link between the two types is removed. - * - * The type is also removed from the list of searchable types. - */ - void reset() ENTT_NOEXCEPT { - for(auto** it = internal::meta_context::global(); *it; it = &(*it)->next) { - if(*it == node) { - *it = (*it)->next; - break; - } - } - - unregister_all(&node->prop); - unregister_all(&node->base); - unregister_all(&node->conv); - unregister_all<&internal::meta_ctor_node::prop>(&node->ctor); - unregister_all<&internal::meta_data_node::prop>(&node->data); - unregister_all<&internal::meta_func_node::prop>(&node->func); - - node->id = {}; - node->ctor = node->def_ctor; - node->dtor = nullptr; - } - -private: - node_type *node; -}; - - -/** - * @brief Checks if two objects refer to the same type. - * @param lhs An object, either valid or not. - * @param rhs An object, either valid or not. - * @return False if the objects refer to the same node, true otherwise. - */ -[[nodiscard]] inline bool operator!=(const meta_type &lhs, const meta_type &rhs) ENTT_NOEXCEPT { - return !(lhs == rhs); -} - - -[[nodiscard]] inline meta_type meta_any::type() const ENTT_NOEXCEPT { - return node; -} - - -template -meta_any meta_any::invoke(const id_type id, Args &&... args) const { - return type().invoke(id, *this, std::forward(args)...); -} - - -template -meta_any meta_any::invoke(const id_type id, Args &&... args) { - return type().invoke(id, *this, std::forward(args)...); -} - - -template -bool meta_any::set(const id_type id, Type &&value) { - return type().set(id, *this, std::forward(value)); -} - - -[[nodiscard]] inline meta_any meta_any::get(const id_type id) const { - return type().get(id, *this); -} - - -[[nodiscard]] inline meta_any meta_any::get(const id_type id) { - return type().get(id, *this); -} - - -[[nodiscard]] inline meta_type meta_ctor::parent() const ENTT_NOEXCEPT { - return node->parent; -} - - -[[nodiscard]] inline meta_type meta_ctor::arg(size_type index) const ENTT_NOEXCEPT { - return index < arity() ? node->arg(index) : meta_type{}; -} - - -[[nodiscard]] inline meta_type meta_data::parent() const ENTT_NOEXCEPT { - return node->parent; -} - - -[[nodiscard]] inline meta_type meta_data::type() const ENTT_NOEXCEPT { - return node->type(); -} - - -[[nodiscard]] inline meta_type meta_func::parent() const ENTT_NOEXCEPT { - return node->parent; -} - - -[[nodiscard]] inline meta_type meta_func::ret() const ENTT_NOEXCEPT { - return node->ret(); -} - - -[[nodiscard]] inline meta_type meta_func::arg(size_type index) const ENTT_NOEXCEPT { - return index < arity() ? node->arg(index) : meta_type{}; -} - - -/*! @brief Opaque iterator for sequence containers. */ -class meta_sequence_container::meta_iterator { - /*! @brief A sequence container can access the underlying iterator. */ - friend class meta_sequence_container; - - enum class operation { INCR, DEREF }; - - using vtable_type = void(const operation, const any &, void *); - - template - static void basic_vtable(const operation op, const any &from, void *to) { - switch(op) { - case operation::INCR: - ++any_cast(const_cast(from)); - break; - case operation::DEREF: - static_cast(to)->emplace::reference>(*any_cast(from)); - break; - } - } - -public: - /*! @brief Signed integer type. */ - using difference_type = std::ptrdiff_t; - /*! @brief Type of elements returned by the iterator. */ - using value_type = meta_any; - /*! @brief Pointer type, `void` on purpose. */ - using pointer = void; - /*! @brief Reference type, it is **not** an actual reference. */ - using reference = value_type; - /*! @brief Iterator category. */ - using iterator_category = std::input_iterator_tag; - - /*! @brief Default constructor. */ - meta_iterator() ENTT_NOEXCEPT = default; - - /** - * @brief Constructs a meta iterator from a given iterator. - * @tparam It Type of actual iterator with which to build the meta iterator. - * @param iter The actual iterator with which to build the meta iterator. - */ - template - meta_iterator(It iter) - : vtable{&basic_vtable}, - handle{std::move(iter)} - {} - - /*! @brief Pre-increment operator. @return This iterator. */ - meta_iterator & operator++() ENTT_NOEXCEPT { - return vtable(operation::INCR, handle, nullptr), *this; - } - - /*! @brief Post-increment operator. @return This iterator. */ - meta_iterator operator++(int) ENTT_NOEXCEPT { - meta_iterator orig = *this; - return ++(*this), orig; - } - - /** - * @brief Checks if two iterators refer to the same element. - * @param other The iterator with which to compare. - * @return True if the iterators refer to the same element, false otherwise. - */ - [[nodiscard]] bool operator==(const meta_iterator &other) const ENTT_NOEXCEPT { - return handle == other.handle; - } - - /** - * @brief Checks if two iterators refer to the same element. - * @param other The iterator with which to compare. - * @return False if the iterators refer to the same element, true otherwise. - */ - [[nodiscard]] bool operator!=(const meta_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - /** - * @brief Indirection operator. - * @return The element to which the iterator points. - */ - [[nodiscard]] reference operator*() const { - meta_any other; - vtable(operation::DEREF, handle, &other); - return other; - } - - /** - * @brief Returns false if an iterator is invalid, true otherwise. - * @return False if the iterator is invalid, true otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return static_cast(handle); - } - -private: - vtable_type *vtable{}; - any handle{}; -}; - - -template -struct meta_sequence_container::meta_sequence_container_proxy { - using traits_type = meta_sequence_container_traits; - - [[nodiscard]] static meta_type value_type() ENTT_NOEXCEPT { - return internal::meta_info::resolve(); - } - - [[nodiscard]] static size_type size(const any &container) ENTT_NOEXCEPT { - return traits_type::size(any_cast(container)); - } - - [[nodiscard]] static bool resize(any &container, size_type sz) { - auto * const cont = any_cast(&container); - return cont && traits_type::resize(*cont, sz); - } - - [[nodiscard]] static bool clear(any &container) { - auto * const cont = any_cast(&container); - return cont && traits_type::clear(*cont); - } - - [[nodiscard]] static iterator begin(any &container) { - if(auto * const cont = any_cast(&container); cont) { - return iterator{traits_type::begin(*cont)}; - } - - return iterator{traits_type::cbegin(any_cast(container))}; - } - - [[nodiscard]] static iterator end(any &container) { - if(auto * const cont = any_cast(&container); cont) { - return iterator{traits_type::end(*cont)}; - } - - return iterator{traits_type::cend(any_cast(container))}; - } - - [[nodiscard]] static std::pair insert(any &container, iterator it, meta_any &value) { - if(auto * const cont = any_cast(&container); cont) { - // this abomination is necessary because only on macos value_type and const_reference are different types for std::vector - if(value.allow_cast() || value.allow_cast()) { - const auto *element = value.try_cast>(); - auto ret = traits_type::insert(*cont, any_cast(it.handle), element ? *element : value.cast()); - return { iterator{std::move(ret.first)}, ret.second }; - } - } - - return {}; - } - - [[nodiscard]] static std::pair erase(any &container, iterator it) { - if(auto * const cont = any_cast(&container); cont) { - auto ret = traits_type::erase(*cont, any_cast(it.handle)); - return { iterator{std::move(ret.first)}, ret.second }; - } - - return {}; - } - - [[nodiscard]] static meta_any get(any &container, size_type pos) { - if(auto * const cont = any_cast(&container); cont) { - return meta_any{std::in_place_type, traits_type::get(*cont, pos)}; - } - - return meta_any{std::in_place_type, traits_type::cget(any_cast(container), pos)}; - } -}; - - -/** - * @brief Returns the meta value type of a container. - * @return The meta value type of the container. - */ -[[nodiscard]] inline meta_type meta_sequence_container::value_type() const ENTT_NOEXCEPT { - return value_type_fn(); -} - - -/** - * @brief Returns the size of a container. - * @return The size of the container. - */ -[[nodiscard]] inline meta_sequence_container::size_type meta_sequence_container::size() const ENTT_NOEXCEPT { - return size_fn(storage); -} - - -/** - * @brief Resizes a container to contain a given number of elements. - * @param sz The new size of the container. - * @return True in case of success, false otherwise. - */ -inline bool meta_sequence_container::resize(size_type sz) { - return resize_fn(storage, sz); -} - - -/** - * @brief Clears the content of a container. - * @return True in case of success, false otherwise. - */ -inline bool meta_sequence_container::clear() { - return clear_fn(storage); -} - - -/** - * @brief Returns an iterator to the first element of a container. - * @return An iterator to the first element of the container. - */ -[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::begin() { - return begin_fn(storage); -} - - -/** - * @brief Returns an iterator that is past the last element of a container. - * @return An iterator that is past the last element of the container. - */ -[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::end() { - return end_fn(storage); -} - - -/** - * @brief Inserts an element at a specified location of a container. - * @param it Iterator before which the element will be inserted. - * @param value Element value to insert. - * @return A pair consisting of an iterator to the inserted element (in case of - * success) and a bool denoting whether the insertion took place. - */ -inline std::pair meta_sequence_container::insert(iterator it, meta_any value) { - return insert_fn(storage, it, value); -} - - -/** - * @brief Removes a given element from a container. - * @param it Iterator to the element to remove. - * @return A pair consisting of an iterator following the last removed element - * (in case of success) and a bool denoting whether the insertion took place. - */ -inline std::pair meta_sequence_container::erase(iterator it) { - return erase_fn(storage, it); -} - - -/** - * @brief Returns a reference to the element at a given location of a container - * (no bounds checking is performed). - * @param pos The position of the element to return. - * @return A reference to the requested element properly wrapped. - */ -[[nodiscard]] inline meta_any meta_sequence_container::operator[](size_type pos) { - return get_fn(storage, pos); -} - - -/** - * @brief Returns false if a proxy is invalid, true otherwise. - * @return False if the proxy is invalid, true otherwise. - */ -[[nodiscard]] inline meta_sequence_container::operator bool() const ENTT_NOEXCEPT { - return static_cast(storage); -} - - -/*! @brief Opaque iterator for associative containers. */ -class meta_associative_container::meta_iterator { - enum operation { INCR, DEREF }; - - using vtable_type = void(const operation, const any &, void *); - - template - static void basic_vtable(const operation op, const any &from, void *to) { - switch(op) { - case operation::INCR: - ++any_cast(const_cast(from)); - break; - case operation::DEREF: - const auto &it = any_cast(from); - if constexpr(KeyOnly) { - static_cast *>(to)->first.emplace(*it); - } else { - static_cast *>(to)->first.emplacefirst))>(it->first); - static_cast *>(to)->second.emplacesecond))>(it->second); - } - break; - } - } - -public: - /*! @brief Signed integer type. */ - using difference_type = std::ptrdiff_t; - /*! @brief Type of elements returned by the iterator. */ - using value_type = std::pair; - /*! @brief Pointer type, `void` on purpose. */ - using pointer = void; - /*! @brief Reference type, it is **not** an actual reference. */ - using reference = value_type; - /*! @brief Iterator category. */ - using iterator_category = std::input_iterator_tag; - - /*! @brief Default constructor. */ - meta_iterator() ENTT_NOEXCEPT = default; - - /** - * @brief Constructs an meta iterator from a given iterator. - * @tparam KeyOnly True if the container is also key-only, false otherwise. - * @tparam It Type of actual iterator with which to build the meta iterator. - * @param iter The actual iterator with which to build the meta iterator. - */ - template - meta_iterator(std::integral_constant, It iter) - : vtable{&basic_vtable}, - handle{std::move(iter)} - {} - - /*! @brief Pre-increment operator. @return This iterator. */ - meta_iterator & operator++() ENTT_NOEXCEPT { - return vtable(operation::INCR, handle, nullptr), *this; - } - - /*! @brief Post-increment operator. @return This iterator. */ - meta_iterator operator++(int) ENTT_NOEXCEPT { - meta_iterator orig = *this; - return ++(*this), orig; - } - - /** - * @brief Checks if two iterators refer to the same element. - * @param other The iterator with which to compare. - * @return True if the iterators refer to the same element, false otherwise. - */ - [[nodiscard]] bool operator==(const meta_iterator &other) const ENTT_NOEXCEPT { - return handle == other.handle; - } - - /** - * @brief Checks if two iterators refer to the same element. - * @param other The iterator with which to compare. - * @return False if the iterators refer to the same element, true otherwise. - */ - [[nodiscard]] bool operator!=(const meta_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - /** - * @brief Indirection operator. - * @return The element to which the iterator points. - */ - [[nodiscard]] reference operator*() const { - reference other; - vtable(operation::DEREF, handle, &other); - return other; - } - - /** - * @brief Returns false if an iterator is invalid, true otherwise. - * @return False if the iterator is invalid, true otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return static_cast(handle); - } - -private: - vtable_type *vtable{}; - any handle{}; -}; - - -template -struct meta_associative_container::meta_associative_container_proxy { - using traits_type = meta_associative_container_traits; - - [[nodiscard]] static meta_type key_type() ENTT_NOEXCEPT { - return internal::meta_info::resolve(); - } - - [[nodiscard]] static meta_type mapped_type() ENTT_NOEXCEPT { - if constexpr(is_key_only_meta_associative_container_v) { - return meta_type{}; - } else { - return internal::meta_info::resolve(); - } - } - - [[nodiscard]] static meta_type value_type() ENTT_NOEXCEPT { - return internal::meta_info::resolve(); - } - - [[nodiscard]] static size_type size(const any &container) ENTT_NOEXCEPT { - return traits_type::size(any_cast(container)); - } - - [[nodiscard]] static bool clear(any &container) { - auto * const cont = any_cast(&container); - return cont && traits_type::clear(*cont); - } - - [[nodiscard]] static iterator begin(any &container) { - if(auto * const cont = any_cast(&container); cont) { - return iterator{is_key_only_meta_associative_container{}, traits_type::begin(*cont)}; - } - - return iterator{is_key_only_meta_associative_container{}, traits_type::cbegin(any_cast(container))}; - } - - [[nodiscard]] static iterator end(any &container) { - if(auto * const cont = any_cast(&container); cont) { - return iterator{is_key_only_meta_associative_container{}, traits_type::end(*cont)}; - } - - return iterator{is_key_only_meta_associative_container{}, traits_type::cend(any_cast(container))}; - } - - [[nodiscard]] static bool insert(any &container, meta_any &key, meta_any &value) { - if(auto * const cont = any_cast(&container); cont && key.allow_cast()) { - if constexpr(is_key_only_meta_associative_container_v) { - return traits_type::insert(*cont, key.cast()); - } else { - return value.allow_cast() - && traits_type::insert(*cont, key.cast(), value.cast()); - } - } - - return false; - } - - [[nodiscard]] static bool erase(any &container, meta_any &key) { - if(auto * const cont = any_cast(&container); cont && key.allow_cast()) { - return traits_type::erase(*cont, key.cast()); - } - - return false; - } - - [[nodiscard]] static iterator find(any &container, meta_any &key) { - if(key.allow_cast()) { - if(auto * const cont = any_cast(&container); cont) { - return iterator{is_key_only_meta_associative_container{}, traits_type::find(*cont, key.cast())}; - } - - return iterator{is_key_only_meta_associative_container{}, traits_type::cfind(any_cast(container), key.cast())}; - } - - return {}; - } -}; - - -/** - * @brief Returns true if a container is also key-only, false otherwise. - * @return True if the associative container is also key-only, false otherwise. - */ -[[nodiscard]] inline bool meta_associative_container::key_only() const ENTT_NOEXCEPT { - return key_only_container; -} - - -/** - * @brief Returns the meta key type of a container. - * @return The meta key type of the a container. - */ -[[nodiscard]] inline meta_type meta_associative_container::key_type() const ENTT_NOEXCEPT { - return key_type_fn(); -} - - -/** - * @brief Returns the meta mapped type of a container. - * @return The meta mapped type of the a container. - */ -[[nodiscard]] inline meta_type meta_associative_container::mapped_type() const ENTT_NOEXCEPT { - return mapped_type_fn(); -} - - -/*! @copydoc meta_sequence_container::value_type */ -[[nodiscard]] inline meta_type meta_associative_container::value_type() const ENTT_NOEXCEPT { - return value_type_fn(); -} - - -/*! @copydoc meta_sequence_container::size */ -[[nodiscard]] inline meta_associative_container::size_type meta_associative_container::size() const ENTT_NOEXCEPT { - return size_fn(storage); -} - - -/*! @copydoc meta_sequence_container::clear */ -inline bool meta_associative_container::clear() { - return clear_fn(storage); -} - - -/*! @copydoc meta_sequence_container::begin */ -[[nodiscard]] inline meta_associative_container::iterator meta_associative_container::begin() { - return begin_fn(storage); -} - - -/*! @copydoc meta_sequence_container::end */ -[[nodiscard]] inline meta_associative_container::iterator meta_associative_container::end() { - return end_fn(storage); -} - - -/** - * @brief Inserts an element (a key/value pair) into a container. - * @param key The key of the element to insert. - * @param value The value of the element to insert. - * @return A bool denoting whether the insertion took place. - */ -inline bool meta_associative_container::insert(meta_any key, meta_any value = {}) { - return insert_fn(storage, key, value); -} - - -/** - * @brief Removes the specified element from a container. - * @param key The key of the element to remove. - * @return A bool denoting whether the removal took place. - */ -inline bool meta_associative_container::erase(meta_any key) { - return erase_fn(storage, key); -} - - -/** - * @brief Returns an iterator to the element with a given key, if any. - * @param key The key of the element to search. - * @return An iterator to the element with the given key, if any. - */ -[[nodiscard]] inline meta_associative_container::iterator meta_associative_container::find(meta_any key) { - return find_fn(storage, key); -} - - -/** - * @brief Returns false if a proxy is invalid, true otherwise. - * @return False if the proxy is invalid, true otherwise. - */ -[[nodiscard]] inline meta_associative_container::operator bool() const ENTT_NOEXCEPT { - return static_cast(storage); -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/node.hpp b/LiteLoader/Header/third-party/entt/meta/node.hpp deleted file mode 100644 index fab1167..0000000 --- a/LiteLoader/Header/third-party/entt/meta/node.hpp +++ /dev/null @@ -1,270 +0,0 @@ -#ifndef ENTT_META_NODE_HPP -#define ENTT_META_NODE_HPP - - -#include -#include -#include -#include "../config/config.h" -#include "../core/attribute.h" -#include "../core/fwd.hpp" -#include "../core/type_info.hpp" -#include "../core/type_traits.hpp" -#include "type_traits.hpp" - - -namespace entt { - - -class meta_any; -class meta_type; -struct meta_handle; - - -/** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. - */ - - -namespace internal { - - -struct meta_type_node; - - -struct meta_prop_node { - meta_prop_node * next; - const meta_any &id; - meta_any &value; -}; - - -struct meta_base_node { - meta_type_node * const parent; - meta_base_node * next; - meta_type_node *(* const type)() ENTT_NOEXCEPT; - const void *(* const cast)(const void *) ENTT_NOEXCEPT; -}; - - -struct meta_conv_node { - meta_type_node * const parent; - meta_conv_node * next; - meta_type_node *(* const type)() ENTT_NOEXCEPT; - meta_any(* const conv)(const void *); -}; - - -struct meta_ctor_node { - using size_type = std::size_t; - meta_type_node * const parent; - meta_ctor_node * next; - meta_prop_node * prop; - const size_type arity; - meta_type(* const arg)(const size_type) ENTT_NOEXCEPT; - meta_any(* const invoke)(meta_any * const); -}; - - -struct meta_data_node { - id_type id; - meta_type_node * const parent; - meta_data_node * next; - meta_prop_node * prop; - const bool is_const; - const bool is_static; - meta_type_node *(* const type)() ENTT_NOEXCEPT; - bool(* const set)(meta_handle, meta_any); - meta_any(* const get)(meta_handle); -}; - - -struct meta_func_node { - using size_type = std::size_t; - id_type id; - meta_type_node * const parent; - meta_func_node * next; - meta_prop_node * prop; - const size_type arity; - const bool is_const; - const bool is_static; - meta_type_node *(* const ret)() ENTT_NOEXCEPT; - meta_type(* const arg)(const size_type) ENTT_NOEXCEPT; - meta_any(* const invoke)(meta_handle, meta_any *); -}; - - -struct meta_template_info { - using size_type = std::size_t; - const bool is_template_specialization; - const size_type arity; - meta_type_node *(* const type)() ENTT_NOEXCEPT; - meta_type_node *(* const arg)(const size_type) ENTT_NOEXCEPT; -}; - - -struct meta_type_node { - using size_type = std::size_t; - const type_info info; - id_type id; - meta_type_node * next; - meta_prop_node * prop; - const size_type size_of; - const bool is_void; - const bool is_integral; - const bool is_floating_point; - const bool is_array; - const bool is_enum; - const bool is_union; - const bool is_class; - const bool is_pointer; - const bool is_function_pointer; - const bool is_member_object_pointer; - const bool is_member_function_pointer; - const bool is_pointer_like; - const bool is_sequence_container; - const bool is_associative_container; - const meta_template_info template_info; - const size_type rank; - size_type(* const extent)(const size_type) ENTT_NOEXCEPT ; - meta_type_node *(* const remove_pointer)() ENTT_NOEXCEPT; - meta_type_node *(* const remove_extent)() ENTT_NOEXCEPT; - meta_ctor_node * const def_ctor; - meta_ctor_node *ctor{nullptr}; - meta_base_node *base{nullptr}; - meta_conv_node *conv{nullptr}; - meta_data_node *data{nullptr}; - meta_func_node *func{nullptr}; - void(* dtor)(void *){nullptr}; -}; - - -template -auto meta_visit(const Op &op, const Node *node) --> std::decay_t*Member)> { - for(auto *curr = node->*Member; curr; curr = curr->next) { - if(op(curr)) { - return curr; - } - } - - if constexpr(std::is_same_v) { - for(auto *curr = node->base; curr; curr = curr->next) { - if(auto *ret = meta_visit(op, curr->type()); ret) { - return ret; - } - } - } - - return nullptr; -} - - -template -meta_type_node * meta_arg_node(type_list, const std::size_t index) ENTT_NOEXCEPT; - - -template -class ENTT_API meta_node { - static_assert(std::is_same_v>>, "Invalid type"); - - template - [[nodiscard]] static auto extent(const meta_type_node::size_type dim, std::index_sequence) ENTT_NOEXCEPT { - meta_type_node::size_type ext{}; - ((ext = (dim == Index ? std::extent_v : ext)), ...); - return ext; - } - - [[nodiscard]] static meta_ctor_node * meta_default_constructor([[maybe_unused]] meta_type_node *type) ENTT_NOEXCEPT { - if constexpr(std::is_default_constructible_v) { - static meta_ctor_node node{ - type, - nullptr, - nullptr, - 0u, - nullptr, - [](meta_any * const) { return meta_any{std::in_place_type}; } - }; - - return &node; - } else { - return nullptr; - } - } - - [[nodiscard]] static meta_template_info meta_template_descriptor() ENTT_NOEXCEPT { - if constexpr(is_complete_v>) { - return { - true, - meta_template_traits::args_type::size, - &meta_node::class_type>::resolve, - [](const std::size_t index) ENTT_NOEXCEPT { - return meta_arg_node(typename meta_template_traits::args_type{}, index); - } - }; - } else { - return { false, 0u, nullptr, nullptr }; - } - } - -public: - [[nodiscard]] static meta_type_node * resolve() ENTT_NOEXCEPT { - static meta_type_node node{ - type_id(), - {}, - nullptr, - nullptr, - size_of_v, - std::is_void_v, - std::is_integral_v, - std::is_floating_point_v, - std::is_array_v, - std::is_enum_v, - std::is_union_v, - std::is_class_v, - std::is_pointer_v, - std::is_pointer_v && std::is_function_v>, - std::is_member_object_pointer_v, - std::is_member_function_pointer_v, - is_meta_pointer_like_v, - is_complete_v>, - is_complete_v>, - meta_template_descriptor(), - std::rank_v, - [](meta_type_node::size_type dim) ENTT_NOEXCEPT { return extent(dim, std::make_index_sequence>{}); }, - &meta_node>>>::resolve, - &meta_node>>>::resolve, - meta_default_constructor(&node), - meta_default_constructor(&node) - }; - - return &node; - } -}; - - -template -struct meta_info: meta_node>> {}; - - -template -meta_type_node * meta_arg_node(type_list, const std::size_t index) ENTT_NOEXCEPT { - meta_type_node *args[sizeof...(Args) + 1u]{nullptr, internal::meta_info::resolve()...}; - return args[index + 1u]; -} - - -} - - -/** - * Internal details not to be documented. - * @endcond - */ - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/policy.hpp b/LiteLoader/Header/third-party/entt/meta/policy.hpp deleted file mode 100644 index 1b7d9c8..0000000 --- a/LiteLoader/Header/third-party/entt/meta/policy.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef ENTT_META_POLICY_HPP -#define ENTT_META_POLICY_HPP - - -namespace entt { - - -/*! @brief Empty class type used to request the _as ref_ policy. */ -struct as_ref_t {}; - - -/*! @brief Empty class type used to request the _as cref_ policy. */ -struct as_cref_t {}; - - -/*! @brief Empty class type used to request the _as-is_ policy. */ -struct as_is_t {}; - - -/*! @brief Empty class type used to request the _as void_ policy. */ -struct as_void_t {}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/range.hpp b/LiteLoader/Header/third-party/entt/meta/range.hpp deleted file mode 100644 index 7b54525..0000000 --- a/LiteLoader/Header/third-party/entt/meta/range.hpp +++ /dev/null @@ -1,100 +0,0 @@ -#ifndef ENTT_META_RANGE_HPP -#define ENTT_META_RANGE_HPP - - -#include -#include - - -namespace entt { - - -/** - * @brief Iterable range to use to iterate all types of meta objects. - * @tparam Type Type of meta objects returned. - * @tparam Node Type of meta nodes iterated. - */ -template -class meta_range { - struct range_iterator { - using difference_type = std::ptrdiff_t; - using value_type = Type; - using pointer = void; - using reference = value_type; - using iterator_category = std::input_iterator_tag; - using node_type = Node; - - range_iterator() ENTT_NOEXCEPT = default; - - range_iterator(node_type *head) ENTT_NOEXCEPT - : it{head} - {} - - range_iterator & operator++() ENTT_NOEXCEPT { - return (it = it->next), *this; - } - - range_iterator operator++(int) ENTT_NOEXCEPT { - range_iterator orig = *this; - return ++(*this), orig; - } - - [[nodiscard]] reference operator*() const ENTT_NOEXCEPT { - return it; - } - - [[nodiscard]] bool operator==(const range_iterator &other) const ENTT_NOEXCEPT { - return other.it == it; - } - - [[nodiscard]] bool operator!=(const range_iterator &other) const ENTT_NOEXCEPT { - return !(*this == other); - } - - private: - node_type *it{}; - }; - -public: - /*! @brief Node type. */ - using node_type = Node; - /*! @brief Input iterator type. */ - using iterator = range_iterator; - - /*! @brief Default constructor. */ - meta_range() ENTT_NOEXCEPT = default; - - /** - * @brief Constructs a meta range from a given node. - * @param head The underlying node with which to construct the range. - */ - meta_range(node_type *head) - : node{head} - {} - - /** - * @brief Returns an iterator to the beginning. - * @return An iterator to the first meta object of the range. - */ - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return iterator{node}; - } - - /** - * @brief Returns an iterator to the end. - * @return An iterator to the element following the last meta object of the - * range. - */ - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return iterator{}; - } - -private: - node_type *node{nullptr}; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/resolve.hpp b/LiteLoader/Header/third-party/entt/meta/resolve.hpp deleted file mode 100644 index ca1fbfa..0000000 --- a/LiteLoader/Header/third-party/entt/meta/resolve.hpp +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef ENTT_META_RESOLVE_HPP -#define ENTT_META_RESOLVE_HPP - - -#include -#include "../core/type_info.hpp" -#include "ctx.hpp" -#include "meta.hpp" -#include "node.hpp" -#include "range.hpp" - - -namespace entt { - - -/** - * @brief Returns the meta type associated with a given type. - * @tparam Type Type to use to search for a meta type. - * @return The meta type associated with the given type, if any. - */ -template -[[nodiscard]] meta_type resolve() ENTT_NOEXCEPT { - return internal::meta_info::resolve(); -} - - -/** - * @brief Returns a range to use to visit all meta types. - * @return An iterable range to use to visit all meta types. - */ -[[nodiscard]] inline meta_range resolve() { - return *internal::meta_context::global(); -} - - -/** - * @brief Returns the meta type associated with a given identifier, if any. - * @param id Unique identifier. - * @return The meta type associated with the given identifier, if any. - */ -[[nodiscard]] inline meta_type resolve(const id_type id) ENTT_NOEXCEPT { - for(auto *curr = *internal::meta_context::global(); curr; curr = curr->next) { - if(curr->id == id) { - return curr; - } - } - - return {}; -} - - -/** - * @brief Returns the meta type associated with a given type info object, if - * any. - * @param info The type info object of the requested type. - * @return The meta type associated with the given type info object, if any. - */ -[[nodiscard]] inline meta_type resolve(const type_info info) ENTT_NOEXCEPT { - for(auto *curr = *internal::meta_context::global(); curr; curr = curr->next) { - if(curr->info == info) { - return curr; - } - } - - return {}; -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/meta/utility.hpp b/LiteLoader/Header/third-party/entt/meta/utility.hpp deleted file mode 100644 index e701571..0000000 --- a/LiteLoader/Header/third-party/entt/meta/utility.hpp +++ /dev/null @@ -1,333 +0,0 @@ -#ifndef ENTT_META_UTILITY_HPP -#define ENTT_META_UTILITY_HPP - - -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/type_traits.hpp" -#include "meta.hpp" -#include "node.hpp" -#include "policy.hpp" - - -namespace entt { - - -/*! @brief Primary template isn't defined on purpose. */ -template -struct meta_function_descriptor; - - -/** - * @brief Meta function descriptor. - * @tparam Type Reflected type to which the meta function is associated. - * @tparam Ret Function return type. - * @tparam Class Actual owner of the member function. - * @tparam Args Function arguments. - */ -template -struct meta_function_descriptor { - /*! @brief Meta function return type. */ - using return_type = Ret; - /*! @brief Meta function arguments. */ - using args_type = std::conditional_t, type_list, type_list>; - - /*! @brief True if the meta function is const, false otherwise. */ - static constexpr auto is_const = true; - /*! @brief True if the meta function is static, false otherwise. */ - static constexpr auto is_static = !std::is_same_v; -}; - - -/** - * @brief Meta function descriptor. - * @tparam Type Reflected type to which the meta function is associated. - * @tparam Ret Function return type. - * @tparam Class Actual owner of the member function. - * @tparam Args Function arguments. - */ -template -struct meta_function_descriptor { - /*! @brief Meta function return type. */ - using return_type = Ret; - /*! @brief Meta function arguments. */ - using args_type = std::conditional_t, type_list, type_list>; - - /*! @brief True if the meta function is const, false otherwise. */ - static constexpr auto is_const = false; - /*! @brief True if the meta function is static, false otherwise. */ - static constexpr auto is_static = !std::is_same_v; -}; - - -/** - * @brief Meta function descriptor. - * @tparam Type Reflected type to which the meta function is associated. - * @tparam Ret Function return type. - * @tparam Args Function arguments. - */ -template -struct meta_function_descriptor { - /*! @brief Meta function return type. */ - using return_type = Ret; - /*! @brief Meta function arguments. */ - using args_type = type_list; - - /*! @brief True if the meta function is const, false otherwise. */ - static constexpr auto is_const = false; - /*! @brief True if the meta function is static, false otherwise. */ - static constexpr auto is_static = true; -}; - - -/** - * @brief Meta function helper. - * - * Converts a function type to be associated with a reflected type into its meta - * function descriptor. - * - * @tparam Type Reflected type to which the meta function is associated. - * @tparam Candidate The actual function to associate with the reflected type. - */ -template -class meta_function_helper { - template - static constexpr meta_function_descriptor get_rid_of_noexcept(Ret(Class:: *)(Args...) const); - - template - static constexpr meta_function_descriptor get_rid_of_noexcept(Ret(Class:: *)(Args...)); - - template - static constexpr meta_function_descriptor get_rid_of_noexcept(Ret(*)(Args...)); - -public: - /*! @brief The meta function descriptor of the given function. */ - using type = decltype(get_rid_of_noexcept(std::declval())); -}; - - -/** - * @brief Helper type. - * @tparam Type Reflected type to which the meta function is associated. - * @tparam Candidate The actual function to associate with the reflected type. - */ -template -using meta_function_helper_t = typename meta_function_helper::type; - - -/** - * @brief Returns the meta type of the i-th element of a list of arguments. - * @tparam Args Actual types of arguments. - * @return The meta type of the i-th element of the list of arguments. - */ -template -[[nodiscard]] static meta_type meta_arg(type_list, const std::size_t index) ENTT_NOEXCEPT { - return internal::meta_arg_node(type_list{}, index); -} - - -/** - * @brief Constructs an instance given a list of erased parameters, if possible. - * @tparam Type Actual type of the instance to construct. - * @tparam Args Types of arguments expected. - * @tparam Index Indexes to use to extract erased arguments from their list. - * @param args Parameters to use to construct the instance. - * @return A meta any containing the new instance, if any. - */ -template -[[nodiscard]] meta_any meta_construct(meta_any * const args, std::index_sequence) { - if(((args+Index)->allow_cast() && ...)) { - return Type{(args+Index)->cast()...}; - } - - return {}; -} - - -/** - * @brief Sets the value of a given variable. - * @tparam Type Reflected type to which the variable is associated. - * @tparam Data The actual variable to set. - * @param instance An opaque instance of the underlying type, if required. - * @param value Parameter to use to set the variable. - * @return True in case of success, false otherwise. - */ -template -[[nodiscard]] bool meta_setter([[maybe_unused]] meta_handle instance, [[maybe_unused]] meta_any value) { - if constexpr(!std::is_same_v && !std::is_same_v) { - if constexpr(std::is_function_v>>) { - using data_type = type_list_element_t<1u, typename meta_function_helper_t::args_type>; - - if(auto * const clazz = instance->try_cast(); clazz && value.allow_cast()) { - Data(*clazz, value.cast()); - return true; - } - } else if constexpr(std::is_member_function_pointer_v) { - using data_type = type_list_element_t<0u, typename meta_function_helper_t::args_type>; - - if(auto * const clazz = instance->try_cast(); clazz && value.allow_cast()) { - (clazz->*Data)(value.cast()); - return true; - } - } else if constexpr(std::is_member_object_pointer_v) { - using data_type = std::remove_reference_t().*Data)>; - - if constexpr(!std::is_array_v && !std::is_const_v) { - if(auto * const clazz = instance->try_cast(); clazz && value.allow_cast()) { - clazz->*Data = value.cast(); - return true; - } - } - } else { - using data_type = std::remove_reference_t; - - if constexpr(!std::is_array_v && !std::is_const_v) { - if(value.allow_cast()) { - *Data = value.cast(); - return true; - } - } - } - } - - return false; -} - - -/** - * @brief Wraps a value depending on the given policy. - * @tparam Policy Optional policy (no policy set by default). - * @tparam Type Type of value to wrap. - * @param value Value to wrap. - * @return A meta any containing the returned value. - */ -template -meta_any meta_dispatch(Type &&value) { - if constexpr(std::is_same_v) { - return meta_any{std::in_place_type, std::forward(value)}; - } else if constexpr(std::is_same_v) { - return meta_any{std::in_place_type, std::forward(value)}; - } else if constexpr(std::is_same_v) { - static_assert(std::is_lvalue_reference_v, "Invalid type"); - return meta_any{std::in_place_type &>, std::as_const(value)}; - } else { - static_assert(std::is_same_v, "Policy not supported"); - return meta_any{std::forward(value)}; - } -} - - -/** - * @brief Gets the value of a given variable. - * @tparam Type Reflected type to which the variable is associated. - * @tparam Data The actual variable to get. - * @tparam Policy Optional policy (no policy set by default). - * @param instance An opaque instance of the underlying type, if required. - * @return A meta any containing the value of the underlying variable. - */ -template -[[nodiscard]] meta_any meta_getter([[maybe_unused]] meta_handle instance) { - if constexpr(std::is_function_v>>) { - auto * const clazz = instance->try_cast, const Type, Type>>(); - return clazz ? meta_dispatch(Data(*clazz)) : meta_any{}; - } else if constexpr(std::is_member_function_pointer_v) { - auto * const clazz = instance->try_cast, const Type, Type>>(); - return clazz ? meta_dispatch((clazz->*Data)()) : meta_any{}; - } else if constexpr(std::is_member_object_pointer_v) { - if constexpr(!std::is_array_v().*Data)>>>) { - if(auto * clazz = instance->try_cast(); clazz) { - return meta_dispatch(clazz->*Data); - } else if(auto * fallback = instance->try_cast(); fallback) { - return meta_dispatch(fallback->*Data); - } - } - - return meta_any{}; - } else if constexpr(std::is_pointer_v) { - if constexpr(std::is_array_v>) { - return meta_any{}; - } else { - return meta_dispatch(*Data); - } - } else { - return meta_dispatch(Data); - } -} - - -/** - * @brief Invokes a function given a list of erased parameters, if possible. - * @tparam Type Reflected type to which the function is associated. - * @tparam Candidate The actual function to invoke. - * @tparam Policy Optional policy (no policy set by default). - * @tparam Index Indexes to use to extract erased arguments from their list. - * @param instance An opaque instance of the underlying type, if required. - * @param args Parameters to use to invoke the function. - * @return A meta any containing the returned value, if any. - */ -template -[[nodiscard]] std::enable_if_t, meta_any> meta_invoke([[maybe_unused]] meta_handle instance, meta_any *args, std::index_sequence) { - using descriptor = meta_function_helper_t; - - const auto invoke = [](auto &&maybe_clazz, auto &&... other) { - if constexpr(std::is_member_function_pointer_v) { - if constexpr(std::is_void_v) { - (std::forward(maybe_clazz).*Candidate)(std::forward(other)...); - return meta_any{std::in_place_type}; - } else { - return meta_dispatch((std::forward(maybe_clazz).*Candidate)(std::forward(other)...)); - } - } else { - if constexpr(std::is_void_v) { - Candidate(std::forward(maybe_clazz), std::forward(other)...); - return meta_any{std::in_place_type}; - } else { - return meta_dispatch(Candidate(std::forward(maybe_clazz), std::forward(other)...)); - } - } - }; - - if constexpr(std::is_invocable_v...>) { - if(const auto * const clazz = instance->try_cast(); clazz && ((args+Index)->allow_cast>() && ...)) { - return invoke(*clazz, (args+Index)->cast>()...); - } - } else if constexpr(std::is_invocable_v...>) { - if(auto * const clazz = instance->try_cast(); clazz && ((args+Index)->allow_cast>() && ...)) { - return invoke(*clazz, (args+Index)->cast>()...); - } - } else { - if(((args+Index)->allow_cast>() && ...)) { - return invoke((args+Index)->cast>()...); - } - } - - return meta_any{}; -} - - -/** - * @brief Invokes a function given a list of erased parameters, if possible. - * @tparam Type Reflected type to which the function is associated. - * @tparam Candidate The actual function to invoke. - * @tparam Policy Optional policy (no policy set by default). - * @tparam Index Indexes to use to extract erased arguments from their list. - * @return A meta any containing the returned value, if any. - */ -template -[[nodiscard]] std::enable_if_t, meta_any> meta_invoke(meta_handle, meta_any *, std::index_sequence) { - if constexpr(std::is_void_v) { - Candidate(); - return meta_any{std::in_place_type}; - } else { - return meta_dispatch(Candidate()); - } -} - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/resource/cache.hpp b/LiteLoader/Header/third-party/entt/resource/cache.hpp deleted file mode 100644 index 031373c..0000000 --- a/LiteLoader/Header/third-party/entt/resource/cache.hpp +++ /dev/null @@ -1,237 +0,0 @@ -#ifndef ENTT_RESOURCE_CACHE_HPP -#define ENTT_RESOURCE_CACHE_HPP - - -#include -#include -#include -#include "../config/config.h" -#include "../core/fwd.hpp" -#include "handle.hpp" -#include "loader.hpp" -#include "fwd.hpp" - - -namespace entt { - - -/** - * @brief Simple cache for resources of a given type. - * - * Minimal implementation of a cache for resources of a given type. It doesn't - * offer much functionalities but it's suitable for small or medium sized - * applications and can be freely inherited to add targeted functionalities for - * large sized applications. - * - * @tparam Resource Type of resources managed by a cache. - */ -template -struct resource_cache { - /*! @brief Unsigned integer type. */ - using size_type = std::size_t; - /*! @brief Type of resources managed by a cache. */ - using resource_type = Resource; - - /*! @brief Default constructor. */ - resource_cache() = default; - - /*! @brief Default move constructor. */ - resource_cache(resource_cache &&) = default; - - /*! @brief Default move assignment operator. @return This cache. */ - resource_cache & operator=(resource_cache &&) = default; - - /** - * @brief Number of resources managed by a cache. - * @return Number of resources currently stored. - */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { - return resources.size(); - } - - /** - * @brief Returns true if a cache contains no resources, false otherwise. - * @return True if the cache contains no resources, false otherwise. - */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { - return resources.empty(); - } - - /** - * @brief Clears a cache and discards all its resources. - * - * Handles are not invalidated and the memory used by a resource isn't - * freed as long as at least a handle keeps the resource itself alive. - */ - void clear() ENTT_NOEXCEPT { - resources.clear(); - } - - /** - * @brief Loads the resource that corresponds to a given identifier. - * - * In case an identifier isn't already present in the cache, it loads its - * resource and stores it aside for future uses. Arguments are forwarded - * directly to the loader in order to construct properly the requested - * resource. - * - * @note - * If the identifier is already present in the cache, this function does - * nothing and the arguments are simply discarded. - * - * @warning - * If the resource cannot be loaded correctly, the returned handle will be - * invalid and any use of it will result in undefined behavior. - * - * @tparam Loader Type of loader to use to load the resource if required. - * @tparam Args Types of arguments to use to load the resource if required. - * @param id Unique resource identifier. - * @param args Arguments to use to load the resource if required. - * @return A handle for the given resource. - */ - template - resource_handle load(const id_type id, Args &&... args) { - if(auto it = resources.find(id); it == resources.cend()) { - if(auto handle = temp(std::forward(args)...); handle) { - return (resources[id] = std::move(handle)); - } - } else { - return it->second; - } - - return {}; - } - - /** - * @brief Reloads a resource or loads it for the first time if not present. - * - * Equivalent to the following snippet (pseudocode): - * - * @code{.cpp} - * cache.discard(id); - * cache.load(id, args...); - * @endcode - * - * Arguments are forwarded directly to the loader in order to construct - * properly the requested resource. - * - * @warning - * If the resource cannot be loaded correctly, the returned handle will be - * invalid and any use of it will result in undefined behavior. - * - * @tparam Loader Type of loader to use to load the resource. - * @tparam Args Types of arguments to use to load the resource. - * @param id Unique resource identifier. - * @param args Arguments to use to load the resource. - * @return A handle for the given resource. - */ - template - resource_handle reload(const id_type id, Args &&... args) { - return (discard(id), load(id, std::forward(args)...)); - } - - /** - * @brief Creates a temporary handle for a resource. - * - * Arguments are forwarded directly to the loader in order to construct - * properly the requested resource. The handle isn't stored aside and the - * cache isn't in charge of the lifetime of the resource itself. - * - * @tparam Loader Type of loader to use to load the resource. - * @tparam Args Types of arguments to use to load the resource. - * @param args Arguments to use to load the resource. - * @return A handle for the given resource. - */ - template - [[nodiscard]] resource_handle temp(Args &&... args) const { - return Loader{}.get(std::forward(args)...); - } - - /** - * @brief Creates a handle for a given resource identifier. - * - * A resource handle can be in a either valid or invalid state. In other - * terms, a resource handle is properly initialized with a resource if the - * cache contains the resource itself. Otherwise the returned handle is - * uninitialized and accessing it results in undefined behavior. - * - * @sa resource_handle - * - * @param id Unique resource identifier. - * @return A handle for the given resource. - */ - [[nodiscard]] resource_handle handle(const id_type id) const { - if(auto it = resources.find(id); it != resources.cend()) { - return it->second; - } - - return {}; - } - - /** - * @brief Checks if a cache contains a given identifier. - * @param id Unique resource identifier. - * @return True if the cache contains the resource, false otherwise. - */ - [[nodiscard]] bool contains(const id_type id) const { - return (resources.find(id) != resources.cend()); - } - - /** - * @brief Discards the resource that corresponds to a given identifier. - * - * Handles are not invalidated and the memory used by the resource isn't - * freed as long as at least a handle keeps the resource itself alive. - * - * @param id Unique resource identifier. - */ - void discard(const id_type id) { - if(auto it = resources.find(id); it != resources.end()) { - resources.erase(it); - } - } - - /** - * @brief Iterates all resources. - * - * The function object is invoked for each element. It is provided with - * either the resource identifier, the resource handle or both of them.
- * The signature of the function must be equivalent to one of the following - * forms: - * - * @code{.cpp} - * void(const entt::id_type); - * void(entt::resource_handle); - * void(const entt::id_type, entt::resource_handle); - * @endcode - * - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void each(Func func) const { - auto begin = resources.begin(); - auto end = resources.end(); - - while(begin != end) { - auto curr = begin++; - - if constexpr(std::is_invocable_v) { - func(curr->first); - } else if constexpr(std::is_invocable_v>) { - func(curr->second); - } else { - func(curr->first, curr->second); - } - } - } - -private: - std::unordered_map> resources; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/resource/fwd.hpp b/LiteLoader/Header/third-party/entt/resource/fwd.hpp deleted file mode 100644 index 8a2c9e9..0000000 --- a/LiteLoader/Header/third-party/entt/resource/fwd.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef ENTT_RESOURCE_FWD_HPP -#define ENTT_RESOURCE_FWD_HPP - - -namespace entt { - - -template -struct resource_cache; - - -template -class resource_handle; - - -template -class resource_loader; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/resource/handle.hpp b/LiteLoader/Header/third-party/entt/resource/handle.hpp deleted file mode 100644 index 37c29b3..0000000 --- a/LiteLoader/Header/third-party/entt/resource/handle.hpp +++ /dev/null @@ -1,189 +0,0 @@ -#ifndef ENTT_RESOURCE_HANDLE_HPP -#define ENTT_RESOURCE_HANDLE_HPP - - -#include -#include -#include -#include "../config/config.h" -#include "fwd.hpp" - - -namespace entt { - - -/** - * @brief Shared resource handle. - * - * A shared resource handle is a small class that wraps a resource and keeps it - * alive even if it's deleted from the cache. It can be either copied or - * moved. A handle shares a reference to the same resource with all the other - * handles constructed for the same identifier.
- * As a rule of thumb, resources should never be copied nor moved. Handles are - * the way to go to keep references to them. - * - * @tparam Resource Type of resource managed by a handle. - */ -template -class resource_handle { - /*! @brief Resource handles are friends with each other. */ - template - friend class resource_handle; - -public: - /*! @brief Default constructor. */ - resource_handle() ENTT_NOEXCEPT = default; - - /** - * @brief Creates a handle from a shared pointer, namely a resource. - * @param res A pointer to a properly initialized resource. - */ - resource_handle(std::shared_ptr res) ENTT_NOEXCEPT - : resource{std::move(res)} - {} - - /** - * @brief Copy constructor. - * @param other The instance to copy from. - */ - resource_handle(const resource_handle &other) ENTT_NOEXCEPT = default; - - /** - * @brief Move constructor. - * @param other The instance to move from. - */ - resource_handle(resource_handle &&other) ENTT_NOEXCEPT = default; - - /** - * @brief Copy constructs a handle which shares ownership of the resource. - * @tparam Other Type of resource managed by the received handle. - * @param other The handle to copy from. - */ - template && std::is_base_of_v>> - resource_handle(const resource_handle &other) ENTT_NOEXCEPT - : resource{other.resource} - {} - - /** - * @brief Move constructs a handle which takes ownership of the resource. - * @tparam Other Type of resource managed by the received handle. - * @param other The handle to move from. - */ - template && std::is_base_of_v>> - resource_handle(resource_handle &&other) ENTT_NOEXCEPT - : resource{std::move(other.resource)} - {} - - /** - * @brief Copy assignment operator. - * @param other The instance to copy from. - * @return This resource handle. - */ - resource_handle & operator=(const resource_handle &other) ENTT_NOEXCEPT = default; - - /** - * @brief Move assignment operator. - * @param other The instance to move from. - * @return This resource handle. - */ - resource_handle & operator=(resource_handle &&other) ENTT_NOEXCEPT = default; - - /** - * @brief Copy assignment operator from foreign handle. - * @tparam Other Type of resource managed by the received handle. - * @param other The handle to copy from. - * @return This resource handle. - */ - template - std::enable_if_t && std::is_base_of_v, resource_handle &> - operator=(const resource_handle &other) ENTT_NOEXCEPT { - resource = other.resource; - return *this; - } - - /** - * @brief Move assignment operator from foreign handle. - * @tparam Other Type of resource managed by the received handle. - * @param other The handle to move from. - * @return This resource handle. - */ - template - std::enable_if_t && std::is_base_of_v, resource_handle &> - operator=(resource_handle &&other) ENTT_NOEXCEPT { - resource = std::move(other.resource); - return *this; - } - - /** - * @brief Gets a reference to the managed resource. - * - * @warning - * The behavior is undefined if the handle doesn't contain a resource. - * - * @return A reference to the managed resource. - */ - [[nodiscard]] const Resource & get() const ENTT_NOEXCEPT { - ENTT_ASSERT(static_cast(resource), "Invalid resource"); - return *resource; - } - - /*! @copydoc get */ - [[nodiscard]] Resource & get() ENTT_NOEXCEPT { - return const_cast(std::as_const(*this).get()); - } - - /*! @copydoc get */ - [[nodiscard]] operator const Resource & () const ENTT_NOEXCEPT { - return get(); - } - - /*! @copydoc get */ - [[nodiscard]] operator Resource & () ENTT_NOEXCEPT { - return get(); - } - - /*! @copydoc get */ - [[nodiscard]] const Resource & operator *() const ENTT_NOEXCEPT { - return get(); - } - - /*! @copydoc get */ - [[nodiscard]] Resource & operator *() ENTT_NOEXCEPT { - return get(); - } - - /** - * @brief Gets a pointer to the managed resource. - * - * @warning - * The behavior is undefined if the handle doesn't contain a resource. - * - * @return A pointer to the managed resource or `nullptr` if the handle - * contains no resource at all. - */ - [[nodiscard]] const Resource * operator->() const ENTT_NOEXCEPT { - return resource.get(); - } - - /*! @copydoc operator-> */ - [[nodiscard]] Resource * operator->() ENTT_NOEXCEPT { - return const_cast(std::as_const(*this).operator->()); - } - - /** - * @brief Returns true if a handle contains a resource, false otherwise. - * @return True if the handle contains a resource, false otherwise. - */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return static_cast(resource); - } - -private: - std::shared_ptr resource; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/resource/loader.hpp b/LiteLoader/Header/third-party/entt/resource/loader.hpp deleted file mode 100644 index fa39d55..0000000 --- a/LiteLoader/Header/third-party/entt/resource/loader.hpp +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef ENTT_RESOURCE_LOADER_HPP -#define ENTT_RESOURCE_LOADER_HPP - - -#include "fwd.hpp" -#include "handle.hpp" - - -namespace entt { - - -/** - * @brief Base class for resource loaders. - * - * Resource loaders must inherit from this class and stay true to the CRTP - * idiom. Moreover, a resource loader must expose a public, const member - * function named `load` that accepts a variable number of arguments and returns - * a handle to the resource just created.
- * As an example: - * - * @code{.cpp} - * struct my_resource {}; - * - * struct my_loader: entt::resource_loader { - * resource_handle load(int value) const { - * // use the integer value somehow - * return std::make_shared(); - * } - * }; - * @endcode - * - * In general, resource loaders should not have a state or retain data of any - * type. They should let the cache manage their resources instead. - * - * @note - * Base class and CRTP idiom aren't strictly required with the current - * implementation. One could argue that a cache can easily work with loaders of - * any type. However, future changes won't be breaking ones by forcing the use - * of a base class today and that's why the model is already in its place. - * - * @tparam Loader Type of the derived class. - * @tparam Resource Type of resource for which to use the loader. - */ -template -class resource_loader { - /*! @brief Resource loaders are friends of their caches. */ - template - friend struct resource_cache; - - /** - * @brief Loads the resource and returns it. - * @tparam Args Types of arguments for the loader. - * @param args Arguments for the loader. - * @return The resource just loaded or an empty pointer in case of errors. - */ - template - [[nodiscard]] resource_handle get(Args &&... args) const { - return static_cast(this)->load(std::forward(args)...); - } -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/signal/dispatcher.hpp b/LiteLoader/Header/third-party/entt/signal/dispatcher.hpp deleted file mode 100644 index 15d9e47..0000000 --- a/LiteLoader/Header/third-party/entt/signal/dispatcher.hpp +++ /dev/null @@ -1,277 +0,0 @@ -#ifndef ENTT_SIGNAL_DISPATCHER_HPP -#define ENTT_SIGNAL_DISPATCHER_HPP - - -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/fwd.hpp" -#include "../core/type_info.hpp" -#include "sigh.hpp" - - -namespace entt { - - -/** - * @brief Basic dispatcher implementation. - * - * A dispatcher can be used either to trigger an immediate event or to enqueue - * events to be published all together once per tick.
- * Listeners are provided in the form of member functions. For each event of - * type `Event`, listeners are such that they can be invoked with an argument of - * type `Event &`, no matter what the return type is. - * - * The dispatcher creates instances of the `sigh` class internally. Refer to the - * documentation of the latter for more details. - */ -class dispatcher { - struct basic_pool { - virtual ~basic_pool() = default; - virtual void publish() = 0; - virtual void disconnect(void *) = 0; - virtual void clear() ENTT_NOEXCEPT = 0; - }; - - template - struct pool_handler final: basic_pool { - static_assert(std::is_same_v>, "Invalid event type"); - - using signal_type = sigh; - using sink_type = typename signal_type::sink_type; - - void publish() override { - const auto length = events.size(); - - for(std::size_t pos{}; pos < length; ++pos) { - signal.publish(events[pos]); - } - - events.erase(events.cbegin(), events.cbegin()+length); - } - - void disconnect(void *instance) override { - sink().disconnect(instance); - } - - void clear() ENTT_NOEXCEPT override { - events.clear(); - } - - [[nodiscard]] sink_type sink() ENTT_NOEXCEPT { - return entt::sink{signal}; - } - - template - void trigger(Args &&... args) { - Event instance{std::forward(args)...}; - signal.publish(instance); - } - - template - void enqueue(Args &&... args) { - if constexpr(std::is_aggregate_v) { - events.push_back(Event{std::forward(args)...}); - } else { - events.emplace_back(std::forward(args)...); - } - } - - private: - signal_type signal{}; - std::vector events; - }; - - template - [[nodiscard]] pool_handler & assure() { - const auto index = type_seq::value(); - - if(!(index < pools.size())) { - pools.resize(std::size_t(index)+1u); - } - - if(!pools[index]) { - pools[index].reset(new pool_handler{}); - } - - return static_cast &>(*pools[index]); - } - -public: - /*! @brief Default constructor. */ - dispatcher() = default; - - /*! @brief Default move constructor. */ - dispatcher(dispatcher &&) = default; - - /*! @brief Default move assignment operator. @return This dispatcher. */ - dispatcher & operator=(dispatcher &&) = default; - - /** - * @brief Returns a sink object for the given event. - * - * A sink is an opaque object used to connect listeners to events. - * - * The function type for a listener is _compatible_ with: - * @code{.cpp} - * void(Event &); - * @endcode - * - * The order of invocation of the listeners isn't guaranteed. - * - * @sa sink - * - * @tparam Event Type of event of which to get the sink. - * @return A temporary sink object. - */ - template - [[nodiscard]] auto sink() { - return assure().sink(); - } - - /** - * @brief Triggers an immediate event of the given type. - * - * All the listeners registered for the given type are immediately notified. - * The event is discarded after the execution. - * - * @tparam Event Type of event to trigger. - * @tparam Args Types of arguments to use to construct the event. - * @param args Arguments to use to construct the event. - */ - template - void trigger(Args &&... args) { - assure().trigger(std::forward(args)...); - } - - /** - * @brief Triggers an immediate event of the given type. - * - * All the listeners registered for the given type are immediately notified. - * The event is discarded after the execution. - * - * @tparam Event Type of event to trigger. - * @param event An instance of the given type of event. - */ - template - void trigger(Event &&event) { - assure>().trigger(std::forward(event)); - } - - /** - * @brief Enqueues an event of the given type. - * - * An event of the given type is queued. No listener is invoked. Use the - * `update` member function to notify listeners when ready. - * - * @tparam Event Type of event to enqueue. - * @tparam Args Types of arguments to use to construct the event. - * @param args Arguments to use to construct the event. - */ - template - void enqueue(Args &&... args) { - assure().enqueue(std::forward(args)...); - } - - /** - * @brief Enqueues an event of the given type. - * - * An event of the given type is queued. No listener is invoked. Use the - * `update` member function to notify listeners when ready. - * - * @tparam Event Type of event to enqueue. - * @param event An instance of the given type of event. - */ - template - void enqueue(Event &&event) { - assure>().enqueue(std::forward(event)); - } - - /** - * @brief Utility function to disconnect everything related to a given value - * or instance from a dispatcher. - * @tparam Type Type of class or type of payload. - * @param value_or_instance A valid object that fits the purpose. - */ - template - void disconnect(Type &value_or_instance) { - disconnect(&value_or_instance); - } - - /** - * @brief Utility function to disconnect everything related to a given value - * or instance from a dispatcher. - * @tparam Type Type of class or type of payload. - * @param value_or_instance A valid object that fits the purpose. - */ - template - void disconnect(Type *value_or_instance) { - for(auto &&cpool: pools) { - if(cpool) { - cpool->disconnect(value_or_instance); - } - } - } - - /** - * @brief Discards all the events queued so far. - * - * If no types are provided, the dispatcher will clear all the existing - * pools. - * - * @tparam Event Type of events to discard. - */ - template - void clear() { - if constexpr(sizeof...(Event) == 0) { - for(auto &&cpool: pools) { - if(cpool) { - cpool->clear(); - } - } - } else { - (assure().clear(), ...); - } - } - - /** - * @brief Delivers all the pending events of the given type. - * - * This method is blocking and it doesn't return until all the events are - * delivered to the registered listeners. It's responsibility of the users - * to reduce at a minimum the time spent in the bodies of the listeners. - * - * @tparam Event Type of events to send. - */ - template - void update() { - assure().publish(); - } - - /** - * @brief Delivers all the pending events. - * - * This method is blocking and it doesn't return until all the events are - * delivered to the registered listeners. It's responsibility of the users - * to reduce at a minimum the time spent in the bodies of the listeners. - */ - void update() const { - for(auto pos = pools.size(); pos; --pos) { - if(auto &&cpool = pools[pos-1]; cpool) { - cpool->publish(); - } - } - } - -private: - std::vector> pools; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/signal/emitter.hpp b/LiteLoader/Header/third-party/entt/signal/emitter.hpp deleted file mode 100644 index f6769ec..0000000 --- a/LiteLoader/Header/third-party/entt/signal/emitter.hpp +++ /dev/null @@ -1,327 +0,0 @@ -#ifndef ENTT_SIGNAL_EMITTER_HPP -#define ENTT_SIGNAL_EMITTER_HPP - - -#include -#include -#include -#include -#include -#include -#include -#include -#include "../config/config.h" -#include "../core/fwd.hpp" -#include "../core/type_info.hpp" - - -namespace entt { - - -/** - * @brief General purpose event emitter. - * - * The emitter class template follows the CRTP idiom. To create a custom emitter - * type, derived classes must inherit directly from the base class as: - * - * @code{.cpp} - * struct my_emitter: emitter { - * // ... - * } - * @endcode - * - * Pools for the type of events are created internally on the fly. It's not - * required to specify in advance the full list of accepted types.
- * Moreover, whenever an event is published, an emitter provides the listeners - * with a reference to itself along with a reference to the event. Therefore - * listeners have an handy way to work with it without incurring in the need of - * capturing a reference to the emitter. - * - * @tparam Derived Actual type of emitter that extends the class template. - */ -template -class emitter { - struct basic_pool { - virtual ~basic_pool() = default; - virtual bool empty() const ENTT_NOEXCEPT = 0; - virtual void clear() ENTT_NOEXCEPT = 0; - }; - - template - struct pool_handler final: basic_pool { - static_assert(std::is_same_v>, "Invalid event type"); - - using listener_type = std::function; - using element_type = std::pair; - using container_type = std::list; - using connection_type = typename container_type::iterator; - - [[nodiscard]] bool empty() const ENTT_NOEXCEPT override { - auto pred = [](auto &&element) { return element.first; }; - - return std::all_of(once_list.cbegin(), once_list.cend(), pred) && - std::all_of(on_list.cbegin(), on_list.cend(), pred); - } - - void clear() ENTT_NOEXCEPT override { - if(publishing) { - for(auto &&element: once_list) { - element.first = true; - } - - for(auto &&element: on_list) { - element.first = true; - } - } else { - once_list.clear(); - on_list.clear(); - } - } - - connection_type once(listener_type listener) { - return once_list.emplace(once_list.cend(), false, std::move(listener)); - } - - connection_type on(listener_type listener) { - return on_list.emplace(on_list.cend(), false, std::move(listener)); - } - - void erase(connection_type conn) { - conn->first = true; - - if(!publishing) { - auto pred = [](auto &&element) { return element.first; }; - once_list.remove_if(pred); - on_list.remove_if(pred); - } - } - - void publish(Event &event, Derived &ref) { - container_type swap_list; - once_list.swap(swap_list); - - publishing = true; - - for(auto &&element: on_list) { - element.first ? void() : element.second(event, ref); - } - - for(auto &&element: swap_list) { - element.first ? void() : element.second(event, ref); - } - - publishing = false; - - on_list.remove_if([](auto &&element) { return element.first; }); - } - - private: - bool publishing{false}; - container_type once_list{}; - container_type on_list{}; - }; - - template - [[nodiscard]] pool_handler * assure() { - const auto index = type_seq::value(); - - if(!(index < pools.size())) { - pools.resize(std::size_t(index)+1u); - } - - if(!pools[index]) { - pools[index].reset(new pool_handler{}); - } - - return static_cast *>(pools[index].get()); - } - - template - [[nodiscard]] const pool_handler * assure() const { - const auto index = type_seq::value(); - return (!(index < pools.size()) || !pools[index]) ? nullptr : static_cast *>(pools[index].get()); - } - -public: - /** @brief Type of listeners accepted for the given event. */ - template - using listener = typename pool_handler::listener_type; - - /** - * @brief Generic connection type for events. - * - * Type of the connection object returned by the event emitter whenever a - * listener for the given type is registered.
- * It can be used to break connections still in use. - * - * @tparam Event Type of event for which the connection is created. - */ - template - struct connection: private pool_handler::connection_type { - /** @brief Event emitters are friend classes of connections. */ - friend class emitter; - - /*! @brief Default constructor. */ - connection() = default; - - /** - * @brief Creates a connection that wraps its underlying instance. - * @param conn A connection object to wrap. - */ - connection(typename pool_handler::connection_type conn) - : pool_handler::connection_type{std::move(conn)} - {} - }; - - /*! @brief Default constructor. */ - emitter() = default; - - /*! @brief Default destructor. */ - virtual ~emitter() { - static_assert(std::is_base_of_v, Derived>, "Incorrect use of the class template"); - } - - /*! @brief Default move constructor. */ - emitter(emitter &&) = default; - - /*! @brief Default move assignment operator. @return This emitter. */ - emitter & operator=(emitter &&) = default; - - /** - * @brief Emits the given event. - * - * All the listeners registered for the specific event type are invoked with - * the given event. The event type must either have a proper constructor for - * the arguments provided or be an aggregate type. - * - * @tparam Event Type of event to publish. - * @tparam Args Types of arguments to use to construct the event. - * @param args Parameters to use to initialize the event. - */ - template - void publish(Args &&... args) { - Event instance{std::forward(args)...}; - assure()->publish(instance, *static_cast(this)); - } - - /** - * @brief Registers a long-lived listener with the event emitter. - * - * This method can be used to register a listener designed to be invoked - * more than once for the given event type.
- * The connection returned by the method can be freely discarded. It's meant - * to be used later to disconnect the listener if required. - * - * The listener is as a callable object that can be moved and the type of - * which is _compatible_ with `void(Event &, Derived &)`. - * - * @note - * Whenever an event is emitted, the emitter provides the listener with a - * reference to the derived class. Listeners don't have to capture those - * instances for later uses. - * - * @tparam Event Type of event to which to connect the listener. - * @param instance The listener to register. - * @return Connection object that can be used to disconnect the listener. - */ - template - connection on(listener instance) { - return assure()->on(std::move(instance)); - } - - /** - * @brief Registers a short-lived listener with the event emitter. - * - * This method can be used to register a listener designed to be invoked - * only once for the given event type.
- * The connection returned by the method can be freely discarded. It's meant - * to be used later to disconnect the listener if required. - * - * The listener is as a callable object that can be moved and the type of - * which is _compatible_ with `void(Event &, Derived &)`. - * - * @note - * Whenever an event is emitted, the emitter provides the listener with a - * reference to the derived class. Listeners don't have to capture those - * instances for later uses. - * - * @tparam Event Type of event to which to connect the listener. - * @param instance The listener to register. - * @return Connection object that can be used to disconnect the listener. - */ - template - connection once(listener instance) { - return assure()->once(std::move(instance)); - } - - /** - * @brief Disconnects a listener from the event emitter. - * - * Do not use twice the same connection to disconnect a listener, it results - * in undefined behavior. Once used, discard the connection object. - * - * @tparam Event Type of event of the connection. - * @param conn A valid connection. - */ - template - void erase(connection conn) { - assure()->erase(std::move(conn)); - } - - /** - * @brief Disconnects all the listeners for the given event type. - * - * All the connections previously returned for the given event are - * invalidated. Using them results in undefined behavior. - * - * @tparam Event Type of event to reset. - */ - template - void clear() { - assure()->clear(); - } - - /** - * @brief Disconnects all the listeners. - * - * All the connections previously returned are invalidated. Using them - * results in undefined behavior. - */ - void clear() ENTT_NOEXCEPT { - for(auto &&cpool: pools) { - if(cpool) { - cpool->clear(); - } - } - } - - /** - * @brief Checks if there are listeners registered for the specific event. - * @tparam Event Type of event to test. - * @return True if there are no listeners registered, false otherwise. - */ - template - [[nodiscard]] bool empty() const { - const auto *cpool = assure(); - return !cpool || cpool->empty(); - } - - /** - * @brief Checks if there are listeners registered with the event emitter. - * @return True if there are no listeners registered, false otherwise. - */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { - return std::all_of(pools.cbegin(), pools.cend(), [](auto &&cpool) { - return !cpool || cpool->empty(); - }); - } - -private: - std::vector> pools{}; -}; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/entt/signal/fwd.hpp b/LiteLoader/Header/third-party/entt/signal/fwd.hpp deleted file mode 100644 index 950a1d5..0000000 --- a/LiteLoader/Header/third-party/entt/signal/fwd.hpp +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef ENTT_SIGNAL_FWD_HPP -#define ENTT_SIGNAL_FWD_HPP - - -namespace entt { - - -template -class delegate; - - -class dispatcher; - - -template -class emitter; - - -class connection; - - -struct scoped_connection; - - -template -class sink; - - -template -class sigh; - - -} - - -#endif diff --git a/LiteLoader/Header/third-party/magic_enum/magic_enum.hpp b/LiteLoader/Header/third-party/magic_enum/magic_enum.hpp deleted file mode 100644 index 4464026..0000000 --- a/LiteLoader/Header/third-party/magic_enum/magic_enum.hpp +++ /dev/null @@ -1,985 +0,0 @@ -// __ __ _ ______ _____ -// | \/ | (_) | ____| / ____|_ _ -// | \ / | __ _ __ _ _ ___ | |__ _ __ _ _ _ __ ___ | | _| |_ _| |_ -// | |\/| |/ _` |/ _` | |/ __| | __| | '_ \| | | | '_ ` _ \ | | |_ _|_ _| -// | | | | (_| | (_| | | (__ | |____| | | | |_| | | | | | | | |____|_| |_| -// |_| |_|\__,_|\__, |_|\___| |______|_| |_|\__,_|_| |_| |_| \_____| -// __/ | https://github.com/Neargye/magic_enum -// |___/ version 0.7.3 -// -// Licensed under the MIT License . -// SPDX-License-Identifier: MIT -// Copyright (c) 2019 - 2021 Daniil Goncharov . -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. - -#ifndef NEARGYE_MAGIC_ENUM_HPP -#define NEARGYE_MAGIC_ENUM_HPP - -#define MAGIC_ENUM_VERSION_MAJOR 0 -#define MAGIC_ENUM_VERSION_MINOR 7 -#define MAGIC_ENUM_VERSION_PATCH 3 - -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(MAGIC_ENUM_CONFIG_FILE) -#include MAGIC_ENUM_CONFIG_FILE -#endif - -#if !defined(MAGIC_ENUM_USING_ALIAS_OPTIONAL) -#include -#endif -#if !defined(MAGIC_ENUM_USING_ALIAS_STRING) -#include -#endif -#if !defined(MAGIC_ENUM_USING_ALIAS_STRING_VIEW) -#include -#endif - -#if defined(__clang__) -# pragma clang diagnostic push -#elif defined(__GNUC__) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wmaybe-uninitialized" // May be used uninitialized 'return {};'. -#elif defined(_MSC_VER) -# pragma warning(push) -# pragma warning(disable : 26495) // Variable 'static_string::chars_' is uninitialized. -# pragma warning(disable : 28020) // Arithmetic overflow: Using operator '-' on a 4 byte value and then casting the result to a 8 byte value. -# pragma warning(disable : 26451) // The expression '0<=_Param_(1)&&_Param_(1)<=1-1' is not true at this call. -#endif - -// Checks magic_enum compiler compatibility. -#if defined(__clang__) && __clang_major__ >= 5 || defined(__GNUC__) && __GNUC__ >= 9 || defined(_MSC_VER) && _MSC_VER >= 1910 -# undef MAGIC_ENUM_SUPPORTED -# define MAGIC_ENUM_SUPPORTED 1 -#endif - -// Checks magic_enum compiler aliases compatibility. -#if defined(__clang__) && __clang_major__ >= 5 || defined(__GNUC__) && __GNUC__ >= 9 || defined(_MSC_VER) && _MSC_VER >= 1920 -# undef MAGIC_ENUM_SUPPORTED_ALIASES -# define MAGIC_ENUM_SUPPORTED_ALIASES 1 -#endif - -// Enum value must be greater or equals than MAGIC_ENUM_RANGE_MIN. By default MAGIC_ENUM_RANGE_MIN = -128. -// If need another min range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MIN. -#if !defined(MAGIC_ENUM_RANGE_MIN) -# define MAGIC_ENUM_RANGE_MIN -128 -#endif - -// Enum value must be less or equals than MAGIC_ENUM_RANGE_MAX. By default MAGIC_ENUM_RANGE_MAX = 128. -// If need another max range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MAX. -#if !defined(MAGIC_ENUM_RANGE_MAX) -# define MAGIC_ENUM_RANGE_MAX 128 -#endif - -namespace magic_enum { - -// If need another optional type, define the macro MAGIC_ENUM_USING_ALIAS_OPTIONAL. -#if defined(MAGIC_ENUM_USING_ALIAS_OPTIONAL) -MAGIC_ENUM_USING_ALIAS_OPTIONAL -#else -using std::optional; -#endif - -// If need another string_view type, define the macro MAGIC_ENUM_USING_ALIAS_STRING_VIEW. -#if defined(MAGIC_ENUM_USING_ALIAS_STRING_VIEW) -MAGIC_ENUM_USING_ALIAS_STRING_VIEW -#else -using std::string_view; -#endif - -// If need another string type, define the macro MAGIC_ENUM_USING_ALIAS_STRING. -#if defined(MAGIC_ENUM_USING_ALIAS_STRING) -MAGIC_ENUM_USING_ALIAS_STRING -#else -using std::string; -#endif - -namespace customize { - -// Enum value must be in range [MAGIC_ENUM_RANGE_MIN, MAGIC_ENUM_RANGE_MAX]. By default MAGIC_ENUM_RANGE_MIN = -128, MAGIC_ENUM_RANGE_MAX = 128. -// If need another range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MIN and MAGIC_ENUM_RANGE_MAX. -// If need another range for specific enum type, add specialization enum_range for necessary enum type. -template -struct enum_range { - static_assert(std::is_enum_v, "magic_enum::customize::enum_range requires enum type."); - static constexpr int min = MAGIC_ENUM_RANGE_MIN; - static constexpr int max = MAGIC_ENUM_RANGE_MAX; - static_assert(max > min, "magic_enum::customize::enum_range requires max > min."); -}; - -static_assert(MAGIC_ENUM_RANGE_MAX > MAGIC_ENUM_RANGE_MIN, "MAGIC_ENUM_RANGE_MAX must be greater than MAGIC_ENUM_RANGE_MIN."); -static_assert((MAGIC_ENUM_RANGE_MAX - MAGIC_ENUM_RANGE_MIN) < (std::numeric_limits::max)(), "MAGIC_ENUM_RANGE must be less than UINT16_MAX."); - -// If need custom names for enum, add specialization enum_name for necessary enum type. -template -constexpr string_view enum_name(E) noexcept { - static_assert(std::is_enum_v, "magic_enum::customize::enum_name requires enum type."); - - return {}; -} - -} // namespace magic_enum::customize - -namespace detail { - -template -struct supported -#if defined(MAGIC_ENUM_SUPPORTED) && MAGIC_ENUM_SUPPORTED || defined(MAGIC_ENUM_NO_CHECK_SUPPORT) - : std::true_type {}; -#else - : std::false_type {}; -#endif - -template -struct has_is_flags : std::false_type {}; - -template -struct has_is_flags::is_flags)>> : std::bool_constant::is_flags)>>> {}; - -template -struct range_min : std::integral_constant {}; - -template -struct range_min::min)>> : std::integral_constant::min), customize::enum_range::min> {}; - -template -struct range_max : std::integral_constant {}; - -template -struct range_max::max)>> : std::integral_constant::max), customize::enum_range::max> {}; - -struct char_equal_to { - constexpr bool operator()(char lhs, char rhs) const noexcept { - return lhs == rhs; - } -}; - -template -class static_string { - public: - constexpr explicit static_string(string_view str) noexcept : static_string{str, std::make_index_sequence{}} { - assert(str.size() == N); - } - - constexpr const char* data() const noexcept { return chars_; } - - constexpr std::size_t size() const noexcept { return N; } - - constexpr operator string_view() const noexcept { return {data(), size()}; } - - private: - template - constexpr static_string(string_view str, std::index_sequence) noexcept : chars_{str[I]..., '\0'} {} - - char chars_[N + 1]; -}; - -template <> -class static_string<0> { - public: - constexpr explicit static_string(string_view) noexcept {} - - constexpr const char* data() const noexcept { return nullptr; } - - constexpr std::size_t size() const noexcept { return 0; } - - constexpr operator string_view() const noexcept { return {}; } -}; - -constexpr string_view pretty_name(string_view name) noexcept { - for (std::size_t i = name.size(); i > 0; --i) { - if (!((name[i - 1] >= '0' && name[i - 1] <= '9') || - (name[i - 1] >= 'a' && name[i - 1] <= 'z') || - (name[i - 1] >= 'A' && name[i - 1] <= 'Z') || -#if defined(MAGIC_ENUM_ENABLE_NONASCII) - (name[i - 1] & 0x80) || -#endif - (name[i - 1] == '_'))) { - name.remove_prefix(i); - break; - } - } - - if (name.size() > 0 && ((name.front() >= 'a' && name.front() <= 'z') || - (name.front() >= 'A' && name.front() <= 'Z') || -#if defined(MAGIC_ENUM_ENABLE_NONASCII) - (name.front() & 0x80) || -#endif - (name.front() == '_'))) { - return name; - } - - return {}; // Invalid name. -} - -constexpr std::size_t find(string_view str, char c) noexcept { -#if defined(__clang__) && __clang_major__ < 9 && defined(__GLIBCXX__) || defined(_MSC_VER) && _MSC_VER < 1920 && !defined(__clang__) -// https://stackoverflow.com/questions/56484834/constexpr-stdstring-viewfind-last-of-doesnt-work-on-clang-8-with-libstdc -// https://developercommunity.visualstudio.com/content/problem/360432/vs20178-regression-c-failed-in-test.html - constexpr bool workaround = true; -#else - constexpr bool workaround = false; -#endif - - if constexpr (workaround) { - for (std::size_t i = 0; i < str.size(); ++i) { - if (str[i] == c) { - return i; - } - } - - return string_view::npos; - } else { - return str.find_first_of(c); - } -} - -template -constexpr std::array, N> to_array(T (&a)[N], std::index_sequence) { - return {{a[I]...}}; -} - -template -constexpr bool cmp_equal(string_view lhs, string_view rhs, BinaryPredicate&& p) noexcept(std::is_nothrow_invocable_r_v) { -#if defined(_MSC_VER) && _MSC_VER < 1920 && !defined(__clang__) - // https://developercommunity.visualstudio.com/content/problem/360432/vs20178-regression-c-failed-in-test.html - // https://developercommunity.visualstudio.com/content/problem/232218/c-constexpr-string-view.html - constexpr bool workaround = true; -#else - constexpr bool workaround = false; -#endif - constexpr bool custom_predicate = std::negation_v, char_equal_to>>; - - if constexpr (custom_predicate || workaround) { - if (lhs.size() != rhs.size()) { - return false; - } - - const auto size = lhs.size(); - for (std::size_t i = 0; i < size; ++i) { - if (!p(lhs[i], rhs[i])) { - return false; - } - } - - return true; - } else { - static_cast(p); - - return lhs == rhs; - } -} - -template -constexpr bool cmp_less(L lhs, R rhs) noexcept { - static_assert(std::is_integral_v && std::is_integral_v, "magic_enum::detail::cmp_less requires integral type."); - - if constexpr (std::is_signed_v == std::is_signed_v) { - // If same signedness (both signed or both unsigned). - return lhs < rhs; - } else if constexpr (std::is_same_v) { // bool special case - return static_cast(lhs) < rhs; - } else if constexpr (std::is_same_v) { // bool special case - return lhs < static_cast(rhs); - } else if constexpr (std::is_signed_v) { - // If 'right' is negative, then result is 'false', otherwise cast & compare. - return rhs > 0 && lhs < static_cast>(rhs); - } else { - // If 'left' is negative, then result is 'true', otherwise cast & compare. - return lhs < 0 || static_cast>(lhs) < rhs; - } -} - -template -constexpr I log2(I value) noexcept { - static_assert(std::is_integral_v, "magic_enum::detail::log2 requires integral type."); - - auto ret = I{0}; - for (; value > I{1}; value >>= I{1}, ++ret) {} - - return ret; -} - -template -inline constexpr bool is_enum_v = std::is_enum_v && std::is_same_v>; - -template -constexpr auto n() noexcept { - static_assert(is_enum_v, "magic_enum::detail::n requires enum type."); -#if defined(MAGIC_ENUM_SUPPORTED) && MAGIC_ENUM_SUPPORTED -# if defined(__clang__) - constexpr string_view name{__PRETTY_FUNCTION__ + 34, sizeof(__PRETTY_FUNCTION__) - 36}; -# elif defined(__GNUC__) - constexpr string_view name{__PRETTY_FUNCTION__ + 49, sizeof(__PRETTY_FUNCTION__) - 51}; -# elif defined(_MSC_VER) - constexpr string_view name{__FUNCSIG__ + 40, sizeof(__FUNCSIG__) - 57}; -# endif - return static_string{name}; -#else - return string_view{}; // Unsupported compiler. -#endif -} - -template -inline constexpr auto type_name_v = n(); - -template -constexpr auto n() noexcept { - static_assert(is_enum_v, "magic_enum::detail::n requires enum type."); - constexpr auto custom_name = customize::enum_name(V); - - if constexpr (custom_name.empty()) { - static_cast(custom_name); -#if defined(MAGIC_ENUM_SUPPORTED) && MAGIC_ENUM_SUPPORTED -# if defined(__clang__) || defined(__GNUC__) - constexpr auto name = pretty_name({__PRETTY_FUNCTION__, sizeof(__PRETTY_FUNCTION__) - 2}); -# elif defined(_MSC_VER) - constexpr auto name = pretty_name({__FUNCSIG__, sizeof(__FUNCSIG__) - 17}); -# endif - return static_string{name}; -#else - return string_view{}; // Unsupported compiler. -#endif - } else { - return static_string{custom_name}; - } -} - -template -inline constexpr auto enum_name_v = n(); - -template -constexpr bool is_valid() noexcept { - static_assert(is_enum_v, "magic_enum::detail::is_valid requires enum type."); - - return n(V)>().size() != 0; -} - -template > -constexpr E value(std::size_t i) noexcept { - static_assert(is_enum_v, "magic_enum::detail::value requires enum type."); - - if constexpr (std::is_same_v) { // bool special case - static_assert(O == 0, "magic_enum::detail::value requires valid offset."); - - return static_cast(i); - } else if constexpr (IsFlags) { - return static_cast(U{1} << static_cast(static_cast(i) + O)); - } else { - return static_cast(static_cast(i) + O); - } -} - -template > -constexpr int reflected_min() noexcept { - static_assert(is_enum_v, "magic_enum::detail::reflected_min requires enum type."); - - if constexpr (IsFlags) { - return 0; - } else { - constexpr auto lhs = range_min::value; - constexpr auto rhs = (std::numeric_limits::min)(); - - if constexpr (cmp_less(rhs, lhs)) { - return lhs; - } else { - return rhs; - } - } -} - -template > -constexpr int reflected_max() noexcept { - static_assert(is_enum_v, "magic_enum::detail::reflected_max requires enum type."); - - if constexpr (IsFlags) { - return std::numeric_limits::digits - 1; - } else { - constexpr auto lhs = range_max::value; - constexpr auto rhs = (std::numeric_limits::max)(); - - if constexpr (cmp_less(lhs, rhs)) { - return lhs; - } else { - return rhs; - } - } -} - -template -inline constexpr auto reflected_min_v = reflected_min(); - -template -inline constexpr auto reflected_max_v = reflected_max(); - -template -constexpr std::size_t values_count(const bool (&valid)[N]) noexcept { - auto count = std::size_t{0}; - for (std::size_t i = 0; i < N; ++i) { - if (valid[i]) { - ++count; - } - } - - return count; -} - -template -constexpr auto values(std::index_sequence) noexcept { - static_assert(is_enum_v, "magic_enum::detail::values requires enum type."); - constexpr bool valid[sizeof...(I)] = {is_valid(I)>()...}; - constexpr std::size_t count = values_count(valid); - - if constexpr (count > 0) { - E values[count] = {}; - for (std::size_t i = 0, v = 0; v < count; ++i) { - if (valid[i]) { - values[v++] = value(i); - } - } - - return to_array(values, std::make_index_sequence{}); - } else { - return std::array{}; - } -} - -template > -constexpr auto values() noexcept { - static_assert(is_enum_v, "magic_enum::detail::values requires enum type."); - constexpr auto min = reflected_min_v; - constexpr auto max = reflected_max_v; - constexpr auto range_size = max - min + 1; - static_assert(range_size > 0, "magic_enum::enum_range requires valid size."); - static_assert(range_size < (std::numeric_limits::max)(), "magic_enum::enum_range requires valid size."); - - return values>(std::make_index_sequence{}); -} - -template > -constexpr bool is_flags_enum() noexcept { - static_assert(is_enum_v, "magic_enum::detail::is_flags_enum requires enum type."); - - if constexpr (has_is_flags::value) { - return customize::enum_range::is_flags; - } else if constexpr (std::is_same_v) { // bool special case - return false; - } else { -#if defined(MAGIC_ENUM_NO_CHECK_FLAGS) - return false; -#else - constexpr auto flags_values = values(); - constexpr auto default_values = values(); - if (flags_values.size() == 0 || default_values.size() > flags_values.size()) { - return false; - } - for (std::size_t i = 0; i < default_values.size(); ++i) { - const auto v = static_cast(default_values[i]); - if (v != 0 && (v & (v - 1)) != 0) { - return false; - } - } - return flags_values.size() > 0; -#endif - } -} - -template -inline constexpr bool is_flags_v = is_flags_enum(); - -template -inline constexpr auto values_v = values>(); - -template > -using values_t = decltype((values_v)); - -template -inline constexpr auto count_v = values_v.size(); - -template > -inline constexpr auto min_v = (count_v > 0) ? static_cast(values_v.front()) : U{0}; - -template > -inline constexpr auto max_v = (count_v > 0) ? static_cast(values_v.back()) : U{0}; - -template -constexpr auto names(std::index_sequence) noexcept { - static_assert(is_enum_v, "magic_enum::detail::names requires enum type."); - - return std::array{{enum_name_v[I]>...}}; -} - -template -inline constexpr auto names_v = names(std::make_index_sequence>{}); - -template > -using names_t = decltype((names_v)); - -template -constexpr auto entries(std::index_sequence) noexcept { - static_assert(is_enum_v, "magic_enum::detail::entries requires enum type."); - - return std::array, sizeof...(I)>{{{values_v[I], enum_name_v[I]>}...}}; -} - -template -inline constexpr auto entries_v = entries(std::make_index_sequence>{}); - -template > -using entries_t = decltype((entries_v)); - -template > -constexpr bool is_sparse() noexcept { - static_assert(is_enum_v, "magic_enum::detail::is_sparse requires enum type."); - constexpr auto max = is_flags_v ? log2(max_v) : max_v; - constexpr auto min = is_flags_v ? log2(min_v) : min_v; - constexpr auto range_size = max - min + 1; - - return range_size != count_v; -} - -template -inline constexpr bool is_sparse_v = is_sparse(); - -template > -constexpr U values_ors() noexcept { - static_assert(is_enum_v, "magic_enum::detail::values_ors requires enum type."); - - auto ors = U{0}; - for (std::size_t i = 0; i < count_v; ++i) { - ors |= static_cast(values_v[i]); - } - - return ors; -} - -template -struct enable_if_enum {}; - -template -struct enable_if_enum { - using type = R; - using D = std::decay_t; - static_assert(supported::value, "magic_enum unsupported compiler (https://github.com/Neargye/magic_enum#compiler-compatibility)."); -}; - -template -using enable_if_enum_t = std::enable_if_t>, R>; - -template >>> -using enum_concept = T; - -template > -struct is_scoped_enum : std::false_type {}; - -template -struct is_scoped_enum : std::bool_constant>> {}; - -template > -struct is_unscoped_enum : std::false_type {}; - -template -struct is_unscoped_enum : std::bool_constant>> {}; - -template >> -struct underlying_type {}; - -template -struct underlying_type : std::underlying_type> {}; - -} // namespace magic_enum::detail - -// Checks is magic_enum supported compiler. -inline constexpr bool is_magic_enum_supported = detail::supported::value; - -template -using Enum = detail::enum_concept; - -// Checks whether T is an Unscoped enumeration type. -// Provides the member constant value which is equal to true, if T is an [Unscoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Unscoped_enumeration) type. Otherwise, value is equal to false. -template -struct is_unscoped_enum : detail::is_unscoped_enum {}; - -template -inline constexpr bool is_unscoped_enum_v = is_unscoped_enum::value; - -// Checks whether T is an Scoped enumeration type. -// Provides the member constant value which is equal to true, if T is an [Scoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Scoped_enumerations) type. Otherwise, value is equal to false. -template -struct is_scoped_enum : detail::is_scoped_enum {}; - -template -inline constexpr bool is_scoped_enum_v = is_scoped_enum::value; - -// If T is a complete enumeration type, provides a member typedef type that names the underlying type of T. -// Otherwise, if T is not an enumeration type, there is no member type. Otherwise (T is an incomplete enumeration type), the program is ill-formed. -template -struct underlying_type : detail::underlying_type {}; - -template -using underlying_type_t = typename underlying_type::type; - -// Returns type name of enum. -template -[[nodiscard]] constexpr auto enum_type_name() noexcept -> detail::enable_if_enum_t { - constexpr string_view name = detail::type_name_v>; - static_assert(name.size() > 0, "Enum type does not have a name."); - - return name; -} - -// Returns number of enum values. -template -[[nodiscard]] constexpr auto enum_count() noexcept -> detail::enable_if_enum_t { - return detail::count_v>; -} - -// Returns enum value at specified index. -// No bounds checking is performed: the behavior is undefined if index >= number of enum values. -template -[[nodiscard]] constexpr auto enum_value(std::size_t index) noexcept -> detail::enable_if_enum_t> { - using D = std::decay_t; - - if constexpr (detail::is_sparse_v) { - return assert((index < detail::count_v)), detail::values_v[index]; - } else { - constexpr bool is_flag = detail::is_flags_v; - constexpr auto min = is_flag ? detail::log2(detail::min_v) : detail::min_v; - - return assert((index < detail::count_v)), detail::value(index); - } -} - -// Returns enum value at specified index. -template -[[nodiscard]] constexpr auto enum_value() noexcept -> detail::enable_if_enum_t> { - return enum_value>(I); -} - -// Returns std::array with enum values, sorted by enum value. -template -[[nodiscard]] constexpr auto enum_values() noexcept -> detail::enable_if_enum_t> { - return detail::values_v>; -} - -// Returns name from static storage enum variable. -// This version is much lighter on the compile times and is not restricted to the enum_range limitation. -template -[[nodiscard]] constexpr auto enum_name() noexcept -> detail::enable_if_enum_t { - constexpr string_view name = detail::enum_name_v, V>; - static_assert(name.size() > 0, "Enum value does not have a name."); - - return name; -} - -// Returns name from enum value. -// If enum value does not have name or value out of range, returns empty string. -template -[[nodiscard]] constexpr auto enum_name(E value) noexcept -> detail::enable_if_enum_t { - using D = std::decay_t; - using U = underlying_type_t; - - if constexpr (detail::is_sparse_v || detail::is_flags_v) { - for (std::size_t i = 0; i < detail::count_v; ++i) { - if (enum_value(i) == value) { - return detail::names_v[i]; - } - } - } else { - const auto v = static_cast(value); - if (v >= detail::min_v && v <= detail::max_v) { - return detail::names_v[static_cast(v - detail::min_v)]; - } - } - - return {}; // Invalid value or out of range. -} - -// Returns name from enum-flags value. -// If enum-flags value does not have name or value out of range, returns empty string. -template -[[nodiscard]] auto enum_flags_name(E value) -> detail::enable_if_enum_t { - using D = std::decay_t; - using U = underlying_type_t; - - if constexpr (detail::is_flags_v) { - string name; - auto check_value = U{0}; - for (std::size_t i = 0; i < detail::count_v; ++i) { - if (const auto v = static_cast(enum_value(i)); (static_cast(value) & v) != 0) { - check_value |= v; - const auto n = detail::names_v[i]; - if (!name.empty()) { - name.append(1, '|'); - } - name.append(n.data(), n.size()); - } - } - - if (check_value != 0 && check_value == static_cast(value)) { - return name; - } - - return {}; // Invalid value or out of range. - } else { - return string{enum_name(value)}; - } -} - -// Returns std::array with names, sorted by enum value. -template -[[nodiscard]] constexpr auto enum_names() noexcept -> detail::enable_if_enum_t> { - return detail::names_v>; -} - -// Returns std::array with pairs (value, name), sorted by enum value. -template -[[nodiscard]] constexpr auto enum_entries() noexcept -> detail::enable_if_enum_t> { - return detail::entries_v>; -} - -// Obtains enum value from integer value. -// Returns optional with enum value. -template -[[nodiscard]] constexpr auto enum_cast(underlying_type_t value) noexcept -> detail::enable_if_enum_t>> { - using D = std::decay_t; - using U = underlying_type_t; - - if constexpr (detail::is_sparse_v) { - constexpr auto count = detail::count_v; - if constexpr (detail::is_flags_v) { - auto check_value = U{0}; - for (std::size_t i = 0; i < count; ++i) { - if (const auto v = static_cast(enum_value(i)); (value & v) != 0) { - check_value |= v; - } - } - - if (check_value != 0 && check_value == value) { - return static_cast(value); - } - } else { - for (std::size_t i = 0; i < count; ++i) { - if (value == static_cast(enum_value(i))) { - return static_cast(value); - } - } - } - } else { - constexpr auto min = detail::min_v; - constexpr auto max = detail::is_flags_v ? detail::values_ors() : detail::max_v; - - if (value >= min && value <= max) { - return static_cast(value); - } - } - - return {}; // Invalid value or out of range. -} - -// Obtains enum value from name. -// Returns optional with enum value. -template -[[nodiscard]] constexpr auto enum_cast(string_view value, BinaryPredicate p) noexcept(std::is_nothrow_invocable_r_v) -> detail::enable_if_enum_t>> { - static_assert(std::is_invocable_r_v, "magic_enum::enum_cast requires bool(char, char) invocable predicate."); - using D = std::decay_t; - using U = underlying_type_t; - - if constexpr (detail::is_flags_v) { - auto result = U{0}; - while (!value.empty()) { - const auto d = detail::find(value, '|'); - const auto s = (d == string_view::npos) ? value : value.substr(0, d); - auto f = U{0}; - for (std::size_t i = 0; i < detail::count_v; ++i) { - if (detail::cmp_equal(s, detail::names_v[i], p)) { - f = static_cast(enum_value(i)); - result |= f; - break; - } - } - if (f == U{0}) { - return {}; // Invalid value or out of range. - } - value.remove_prefix((d == string_view::npos) ? value.size() : d + 1); - } - - if (result != U{0}) { - return static_cast(result); - } - } else { - for (std::size_t i = 0; i < detail::count_v; ++i) { - if (detail::cmp_equal(value, detail::names_v[i], p)) { - return enum_value(i); - } - } - } - - return {}; // Invalid value or out of range. -} - -// Obtains enum value from name. -// Returns optional with enum value. -template -[[nodiscard]] constexpr auto enum_cast(string_view value) noexcept -> detail::enable_if_enum_t>> { - using D = std::decay_t; - - return enum_cast(value, detail::char_equal_to{}); -} - -// Returns integer value from enum value. -template -[[nodiscard]] constexpr auto enum_integer(E value) noexcept -> detail::enable_if_enum_t> { - return static_cast>(value); -} - -// Obtains index in enum values from enum value. -// Returns optional with index. -template -[[nodiscard]] constexpr auto enum_index(E value) noexcept -> detail::enable_if_enum_t> { - using D = std::decay_t; - using U = underlying_type_t; - - if constexpr (detail::is_sparse_v || detail::is_flags_v) { - for (std::size_t i = 0; i < detail::count_v; ++i) { - if (enum_value(i) == value) { - return i; - } - } - } else { - const auto v = static_cast(value); - if (v >= detail::min_v && v <= detail::max_v) { - return static_cast(v - detail::min_v); - } - } - - return {}; // Invalid value or out of range. -} - -// Checks whether enum contains enumerator with such enum value. -template -[[nodiscard]] constexpr auto enum_contains(E value) noexcept -> detail::enable_if_enum_t { - using D = std::decay_t; - using U = underlying_type_t; - - return enum_cast(static_cast(value)).has_value(); -} - -// Checks whether enum contains enumerator with such integer value. -template -[[nodiscard]] constexpr auto enum_contains(underlying_type_t value) noexcept -> detail::enable_if_enum_t { - return enum_cast>(value).has_value(); -} - -// Checks whether enum contains enumerator with such name. -template -[[nodiscard]] constexpr auto enum_contains(string_view value, BinaryPredicate p) noexcept(std::is_nothrow_invocable_r_v) -> detail::enable_if_enum_t { - static_assert(std::is_invocable_r_v, "magic_enum::enum_contains requires bool(char, char) invocable predicate."); - - return enum_cast>(value, std::move_if_noexcept(p)).has_value(); -} - -// Checks whether enum contains enumerator with such name. -template -[[nodiscard]] constexpr auto enum_contains(string_view value) noexcept -> detail::enable_if_enum_t { - return enum_cast>(value).has_value(); -} - -namespace ostream_operators { - -template = 0> -std::basic_ostream& operator<<(std::basic_ostream& os, E value) { - using D = std::decay_t; - using U = underlying_type_t; -#if defined(MAGIC_ENUM_SUPPORTED) && MAGIC_ENUM_SUPPORTED - if (const auto name = magic_enum::enum_flags_name(value); !name.empty()) { - for (const auto c : name) { - os.put(c); - } - return os; - } -#endif - return (os << static_cast(value)); -} - -template = 0> -std::basic_ostream& operator<<(std::basic_ostream& os, optional value) { - return value.has_value() ? (os << value.value()) : os; -} - -} // namespace magic_enum::ostream_operators - -namespace bitwise_operators { - -template = 0> -constexpr E operator~(E rhs) noexcept { - return static_cast(~static_cast>(rhs)); -} - -template = 0> -constexpr E operator|(E lhs, E rhs) noexcept { - return static_cast(static_cast>(lhs) | static_cast>(rhs)); -} - -template = 0> -constexpr E operator&(E lhs, E rhs) noexcept { - return static_cast(static_cast>(lhs) & static_cast>(rhs)); -} - -template = 0> -constexpr E operator^(E lhs, E rhs) noexcept { - return static_cast(static_cast>(lhs) ^ static_cast>(rhs)); -} - -template = 0> -constexpr E& operator|=(E& lhs, E rhs) noexcept { - return lhs = (lhs | rhs); -} - -template = 0> -constexpr E& operator&=(E& lhs, E rhs) noexcept { - return lhs = (lhs & rhs); -} - -template = 0> -constexpr E& operator^=(E& lhs, E rhs) noexcept { - return lhs = (lhs ^ rhs); -} - -} // namespace magic_enum::bitwise_operators - -} // namespace magic_enum - -#if defined(__clang__) -# pragma clang diagnostic pop -#elif defined(__GNUC__) -# pragma GCC diagnostic pop -#elif defined(_MSC_VER) -# pragma warning(pop) -#endif - -#endif // NEARGYE_MAGIC_ENUM_HPP diff --git a/LiteLoader/Kernel/Command/CommandOutputAPI.cpp b/LiteLoader/Kernel/Command/CommandOutputAPI.cpp deleted file mode 100644 index b6ddd47..0000000 --- a/LiteLoader/Kernel/Command/CommandOutputAPI.cpp +++ /dev/null @@ -1,13 +0,0 @@ - #include - - void CommandOutput::addMessage(const std::string& str) { - this->addMessage(str, {}, (CommandOutputMessageType)0); - } - - void CommandOutput::success(const std::string& str) { - this->success(str, {}); - } - - void CommandOutput::error(const std::string& str) { - this->error(str, {}); - } \ No newline at end of file diff --git a/LiteLoader/Kernel/MC/GameModeAPI.cpp b/LiteLoader/Kernel/MC/GameModeAPI.cpp deleted file mode 100644 index 20d6ced..0000000 --- a/LiteLoader/Kernel/MC/GameModeAPI.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include -#include - -ServerPlayer* GameMode::getPlayer() { - return dAccess(this); -} \ No newline at end of file diff --git a/LiteLoader/Kernel/MC/MobAPI.cpp b/LiteLoader/Kernel/MC/MobAPI.cpp deleted file mode 100644 index eea73da..0000000 --- a/LiteLoader/Kernel/MC/MobAPI.cpp +++ /dev/null @@ -1,13 +0,0 @@ -//#include "MobAPI.h" -#include -#include -#include -#include -#include - -bool Mob::refreshInventory() { - sendInventory(true); - std::bitset<4> bits("1111"); - sendArmor(bits); - return true; -} diff --git a/LiteLoader/Kernel/MC/ResourcePackRepositoryAPI.cpp b/LiteLoader/Kernel/MC/ResourcePackRepositoryAPI.cpp deleted file mode 100644 index 0f147d4..0000000 --- a/LiteLoader/Kernel/MC/ResourcePackRepositoryAPI.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include -#include -#include -#include -#include - - void ResourcePackRepository::setCustomResourcePackPath(PackType type, const std::string& path) { - auto CompositePack = dAccess(this, 48); - auto& PackSourceFactory = getPackSourceFactory(); - auto& DirectoryPackSource = PackSourceFactory.createDirectoryPackSource(Core::Path(path), type, PackOrigin::PackOrigin_Dev, 0); - CompositePack->addPackSource((PackSource*)&DirectoryPackSource); - refreshPacks(); - } \ No newline at end of file diff --git a/LiteLoader/Kernel/ParticleAPI.cpp b/LiteLoader/Kernel/ParticleAPI.cpp deleted file mode 100644 index 6f1c8ec..0000000 --- a/LiteLoader/Kernel/ParticleAPI.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// -// Created by OEOTYAN on 2022/08/27. -// -#include "ParticleAPI.h" -#include "MC/Player.hpp" -#include "MC/Dimension.hpp" -#include "MC/Level.hpp" -#include -#include -#include -#include -//void InitParticle() { -// Event::ResourcePackInitEvent::subscribe([](const Event::ResourcePackInitEvent& ev) { -// ev.mRepo->setCustomResourcePackPath(PackType::PackType_Resources, R"(plugins/LiteLoader/ResourcePacks)"); -// return true; -// }); -//} - -ParticleAPI ParticleCUI::api{}; \ No newline at end of file diff --git a/LiteLoader/Kernel/PermissionAPI.cpp b/LiteLoader/Kernel/PermissionAPI.cpp deleted file mode 100644 index fc94e14..0000000 --- a/LiteLoader/Kernel/PermissionAPI.cpp +++ /dev/null @@ -1,3 +0,0 @@ -#include - -DynPermissionAPI Permission::api{}; \ No newline at end of file diff --git a/LiteLoader/Kernel/SimulatedPlayerAPI.cpp b/LiteLoader/Kernel/SimulatedPlayerAPI.cpp deleted file mode 100644 index 09e48bf..0000000 --- a/LiteLoader/Kernel/SimulatedPlayerAPI.cpp +++ /dev/null @@ -1,110 +0,0 @@ -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include - -// // static_assert(sizeof(ScriptNavigationResult) == 32); - -// // For compatibility -// bool SimulatedPlayer::simulateDestory() { -// return SimulatedPlayer::simulateDestroy(); -// } - -// bool SimulatedPlayer::simulateDestroy() { -// FaceID face = FaceID::Unknown; -// auto blockIns = getBlockFromViewVector(face); -// if (blockIns.isNull()) -// return false; -// return simulateDestroyBlock(blockIns.getPosition(), (ScriptModuleMinecraft::ScriptFacing)face); -// } - -// bool SimulatedPlayer::simulateUseItem() { -// auto slot = getSelectedItemSlot(); -// return simulateUseItemInSlot(slot); -// } - -// bool SimulatedPlayer::simulateSneak() { -// setSneaking(true); -// return isSneaking(); -// } - -// bool SimulatedPlayer::simulateStopSneaking() { -// setSneaking(false); -// return !isSneaking(); -// } - -// template <> -// class OwnerPtrT { -// char filler[24]; - -// public: -// MCAPI ~OwnerPtrT(); - -// inline OwnerPtrT(OwnerPtrT&& right) noexcept { -// void (OwnerPtrT::*rv)(OwnerPtrT && right); -// *((void**)&rv) = dlsym("??0OwnerStorageEntity@@IEAA@$$QEAV0@@Z"); -// (this->*rv)(std::move(right)); -// } -// inline OwnerPtrT& operator=(OwnerPtrT&& right) noexcept { -// void (OwnerPtrT::*rv)(OwnerPtrT && right); -// *((void**)&rv) = dlsym("??4OwnerStorageEntity@@IEAAAEAV0@$$QEAV0@@Z"); -// (this->*rv)(std::move(right)); -// } - -// inline SimulatedPlayer* tryGetSimulatedPlayer(bool b = false) { -// auto& context = dAccess(this).getStackRef(); -// return SimulatedPlayer::tryGetFromEntity(context, b); -// } - -// inline bool hasValue() const { -// if (!this) -// return false; -// return dAccess(this); -// } -// // inline bool isValid() -// }; - -// class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class BlockPos const& position, class AutomaticID dimensionId) { -// // auto handler = Global->getServerNetworkHandler(); -// // return create(name, position, dimensionId, Global->getServerNetworkHandler()); -// OwnerPtrT ownerPtr = Global->createSimulatedPlayer(name, dimensionId, ""); -// auto player = ownerPtr.tryGetSimulatedPlayer(); - -// if (player /* && player->isSimulatedPlayer() */) { -// player->postLoad(/* isNewPlayer */ true); -// Level& level = player->getLevel(); -// level.addUser(std::move(ownerPtr)); -// auto pos = position.bottomCenter(); -// pos.y = pos.y + 1.62001f; -// player->setPos(pos); -// player->setRespawnReady(pos); -// player->setSpawnBlockRespawnPosition(position, dimensionId); -// player->setLocalPlayerAsInitialized(); -// player->doInitialSpawn(); -// } -// return player; -// } - - -// class SimulatedPlayer* SimulatedPlayer::create(std::string const& name, class AutomaticID dimensionId) { -// OwnerPtrT ownerPtr = Global->createSimulatedPlayer(name, dimensionId, ""); -// auto player = ownerPtr.tryGetSimulatedPlayer(); - -// if (player /* && player->isSimulatedPlayer() */) { -// player->postLoad(/* isNewPlayer */ true); -// Level& level = player->getLevel(); -// level.addUser(std::move(ownerPtr)); -// // auto pos = bpos.bottomCenter(); -// // pos.y = pos.y + 1.62001; -// // player->setPos(pos); -// // player->setRespawnReady(pos); -// // player->setSpawnBlockRespawnPosition(bpos, dimId); -// player->setLocalPlayerAsInitialized(); -// player->doInitialSpawn(); -// } -// return player; -// } diff --git a/LiteLoader/Kernel/Utils/STLHelper.cpp b/LiteLoader/Kernel/Utils/STLHelper.cpp deleted file mode 100644 index b9f5273..0000000 --- a/LiteLoader/Kernel/Utils/STLHelper.cpp +++ /dev/null @@ -1 +0,0 @@ -#include \ No newline at end of file diff --git a/LiteLoader/Resource/LiteLoader.aps b/LiteLoader/Resource/LiteLoader.aps deleted file mode 100644 index 27191bdfd66ffb8da43cb32d84c0ba22c07599bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3152 zcmc&$TW;G%6g`R+L~-D@=;L2W^I-!GEu}`18bu0Pq#U-CD3G+00t5s_Vr-$d=s&d1O0EiiU3_ecM$d5At}-_?Vvz`3_)_{zUIuCnL7gjRlbWw{IYtkblAGf z_X(b2kN?G@l<3Qqq=MJ$fUz5#jrx<9gQLKh4CW`{cs338N3$pM=Yc(%h4!RB45K~6 z%e4YGoKEJ^Ak4|MXn}p+QS5uQ|1||Y@Bis& zJUE^Y!|I(^qcMYNM|U>XGohw!xB8>;b~lWsqsdrlvG!J+Vgcm)*&tUPimQ|_79TA6 z%-eL<1br7CdiKp&RVoPSJ%qJcx8%g<XsAMTbb|)CqF2 z%lfG*>=C7V^cXVogz>*)TlyN(V?a!TZb+HOe?(mJ1(9v!uyvJmN{A#!3+<8ZjL6kl;cDU|#_2H5glOkvZep3mp7KLi^4Dp%6| zaa&1lBbP@?Ku_;@y|($x@42Su9Jmd$*VXL<6ZKjhH}d+1(`xB$BT?_vYBXSi%mOr= zw(mOj(x3X9dA;{-%S_!RI`c$|Da}YEqSW~SAdY-TQRs);& z>Ra44CFRTSg~TO6Y|A%oM>kA&8O$)dc@S zS;x6JP0Qw5NM@pG>-(sk)os}{ml=7!Yqj^`J4?4%vYB&811i$AB8Bi(q)4eM(j_ca zWz1XnI9nX}o2PzUUURjd-y?r2MShPgl2Wc1%$WhsxX=3B@h_Pjj@UL>A23%)hLL9+4rv#yNHq2>XK7r@m4?C=XPiTo7fw)J z=8h@rn?(Ky53t2(Pl<2L3^&0m_EW_-3a=oqb5#W@vk#b6=CqOCMJicJW9Lo?S_3|FbOK{ zU2>n7-Y=AXzLeG<&~Y`5{h!yzhaALWAus#1FRbf0tPAaFyf4P&& zEv~};FZao?&{P$TD4J diff --git a/LiteLoader/Resource/LiteLoader.rc b/LiteLoader/Resource/LiteLoader.rc deleted file mode 100644 index c0be274..0000000 --- a/LiteLoader/Resource/LiteLoader.rc +++ /dev/null @@ -1,97 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" -#include "../Main/Version.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// (壬й) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED -#pragma code_page(936) - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION LITELOADER_VERSION_MAJOR,LITELOADER_VERSION_MINOR,LITELOADER_VERSION_REVISION,LITELOADER_VERSION_ACTIONS - PRODUCTVERSION LITELOADER_VERSION_MAJOR,LITELOADER_VERSION_MINOR,LITELOADER_VERSION_REVISION,LITELOADER_VERSION_ACTIONS - FILEFLAGSMASK 0x3fL - FILEFLAGS LITELOADER_FILE_VERSION_FLAG - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "080404b0" - BEGIN - VALUE "CompanyName", "LiteLoaderDev" - VALUE "FileDescription", "A Light-Weight Plugin Loader for Bedrock Dedicated Server" - VALUE "FileVersion", LITELOADER_FILE_VERSION_STRING - VALUE "InternalName", "LiteLoader.dll" - VALUE "LegalCopyright", "LiteLoader Developer" - VALUE "OriginalFilename", "LiteLoader.dll" - VALUE "ProductName", "LiteLoader For BDS" - VALUE "ProductVersion", LITELOADER_FILE_VERSION_STRING - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x804, 1200 - END -END - -#endif // (壬й) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/LiteLoader/Resource/resource.h b/LiteLoader/Resource/resource.h deleted file mode 100644 index 550e0f6..0000000 --- a/LiteLoader/Resource/resource.h +++ /dev/null @@ -1,13 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by LiteLoader.rc - -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif - diff --git a/LiteLoader/cpp.hint b/LiteLoader/cpp.hint deleted file mode 100644 index 30e696e..0000000 --- a/LiteLoader/cpp.hint +++ /dev/null @@ -1,7 +0,0 @@ -// 提示文件帮助 Visual Studio IDE 解释 Visual C++ 标识符, -// 如函数和宏的名称。 -// 有关详细信息,请参见 https://go.microsoft.com/fwlink/?linkid=865984 -#define LIAPI __declspec(dllexport) -#define MCAPI __declspec(dllimport) -#define IF_LISTENED(EVENT) if(EVENT::hasListener()) { try -#define IF_LISTENED_END(EVENT) catch(...) { Logger::Error("Event Callback Failed!"); Logger::Error("Uncaught Exception Detected!"); Logger::Error("In Event: " #EVENT ""); } } diff --git a/LiteLoader/Main/AddonsHelper.h b/LiteLoader/include/liteloader/AddonsHelper.h similarity index 92% rename from LiteLoader/Main/AddonsHelper.h rename to LiteLoader/include/liteloader/AddonsHelper.h index 34796b2..8675c2d 100644 --- a/LiteLoader/Main/AddonsHelper.h +++ b/LiteLoader/include/liteloader/AddonsHelper.h @@ -1,7 +1,7 @@ #pragma once #include #include -#include +#include "llapi/LLAPI.h" void InitAddonsHelper(); @@ -13,7 +13,7 @@ struct Addon { std::string name; std::string description; Type type; - LL::Version version; + ll::Version version; std::string uuid; std::string directory; bool enable = false; diff --git a/LiteLoader/Main/Config.h b/LiteLoader/include/liteloader/Config.h similarity index 97% rename from LiteLoader/Main/Config.h rename to LiteLoader/include/liteloader/Config.h index 3940d18..1344ea3 100644 --- a/LiteLoader/Main/Config.h +++ b/LiteLoader/include/liteloader/Config.h @@ -4,7 +4,7 @@ #include #include -#include +#include "llapi/LLAPI.h" /////////////////////// CrashLogger /////////////////////// // When comes with these plugins, disable builtin CrashLogger since they will cause crash @@ -15,7 +15,7 @@ constexpr const char* NoCrashLogger[] = {"AntiCheats"}; /////////////////////// LL Configs /////////////////////// #define LITELOADER_CONFIG_FILE "plugins/LiteLoader/LiteLoader.json" -namespace LL { +namespace ll { struct CommandLineOption { bool noColorOption = false; }; @@ -77,7 +77,7 @@ void inline from_json(const nlohmann::json& j, LLConfig& conf); bool LoadLLConfig(); bool SaveLLConfig(); -} // namespace LL +} // namespace ll /////////////////////// Addon Helper /////////////////////// diff --git a/LiteLoader/Main/CrashLogger.h b/LiteLoader/include/liteloader/CrashLogger.h similarity index 73% rename from LiteLoader/Main/CrashLogger.h rename to LiteLoader/include/liteloader/CrashLogger.h index baad10b..f49fb8b 100644 --- a/LiteLoader/Main/CrashLogger.h +++ b/LiteLoader/include/liteloader/CrashLogger.h @@ -1,6 +1,6 @@ #pragma once -namespace LL { +namespace ll { bool StartCrashLoggerProcess(); void InitCrashLogger(bool enableCrashLogger); -} // namespace LL +} // namespace ll diff --git a/LiteLoader/Main/LiteLoader.h b/LiteLoader/include/liteloader/LiteLoader.h similarity index 74% rename from LiteLoader/Main/LiteLoader.h rename to LiteLoader/include/liteloader/LiteLoader.h index fad991d..f40534a 100644 --- a/LiteLoader/Main/LiteLoader.h +++ b/LiteLoader/include/liteloader/LiteLoader.h @@ -1,6 +1,6 @@ #pragma once -#include +#include "llapi/LoggerAPI.h" extern Logger logger; extern time_t startTime; extern time_t endTime; diff --git a/LiteLoader/Main/Loader.h b/LiteLoader/include/liteloader/Loader.h similarity index 60% rename from LiteLoader/Main/Loader.h rename to LiteLoader/include/liteloader/Loader.h index 5541df0..0401e8e 100644 --- a/LiteLoader/Main/Loader.h +++ b/LiteLoader/include/liteloader/Loader.h @@ -1,6 +1,6 @@ #pragma once #include -namespace LL { +namespace ll { void LoadMain(); -} // namespace LL +} // namespace ll diff --git a/LiteLoader/Main/PluginManager.h b/LiteLoader/include/liteloader/PluginManager.h similarity index 74% rename from LiteLoader/Main/PluginManager.h rename to LiteLoader/include/liteloader/PluginManager.h index bd95728..007aa2c 100644 --- a/LiteLoader/Main/PluginManager.h +++ b/LiteLoader/include/liteloader/PluginManager.h @@ -1,10 +1,9 @@ #pragma once -#include -#include +#include "llapi/Global.h" #include #include -namespace LL { +namespace ll { struct Plugin; struct Version; @@ -14,12 +13,12 @@ class PluginManager { public: static LIAPI bool registerPlugin(HMODULE handle, std::string name, std::string desc, - LL::Version version, std::map others); + ll::Version version, std::map others); - static LIAPI LL::Plugin* getPlugin(HMODULE handle); - static LIAPI LL::Plugin* getPlugin(std::string name, bool includeScriptPlugin = true); + static LIAPI ll::Plugin* getPlugin(HMODULE handle); + static LIAPI ll::Plugin* getPlugin(std::string name, bool includeScriptPlugin = true); static LIAPI bool hasPlugin(std::string name, bool includeScriptPlugin = true); - static LIAPI std::unordered_map getAllPlugins(bool includeScriptPlugin = true); + static LIAPI std::unordered_map getAllPlugins(bool includeScriptPlugin = true); static bool loadPlugin(std::string pluginFilePath, bool outputStatus = false, bool isHotLoad = false); static bool unloadPlugin(std::string pluginName, bool outputStatus = false); @@ -28,7 +27,7 @@ public: static LIAPI bool unRegisterPlugin(std::string name); }; -} // namespace LL +} // namespace ll -LIAPI bool RegisterPlugin(HMODULE handle, std::string name, std::string desc, LL::Version version, +LIAPI bool RegisterPlugin(HMODULE handle, std::string name, std::string desc, ll::Version version, std::map others); diff --git a/LiteLoader/Main/Version.h b/LiteLoader/include/liteloader/Version.h similarity index 96% rename from LiteLoader/Main/Version.h rename to LiteLoader/include/liteloader/Version.h index 9b0ec4c..7a8c335 100644 --- a/LiteLoader/Main/Version.h +++ b/LiteLoader/include/liteloader/Version.h @@ -12,7 +12,7 @@ #define TARGET_BDS_PROTOCOL_VERSION 408 -#define LITELOADER_VERSION LL::getLoaderVersion() +#define LITELOADER_VERSION ll::getLoaderVersion() #define __TO_VERSION_STRING(ver) #ver diff --git a/LiteLoader/Header/AllowListAPI.h b/LiteLoader/include/llapi/AllowListAPI.h similarity index 97% rename from LiteLoader/Header/AllowListAPI.h rename to LiteLoader/include/llapi/AllowListAPI.h index 84f4a43..546f545 100644 --- a/LiteLoader/Header/AllowListAPI.h +++ b/LiteLoader/include/llapi/AllowListAPI.h @@ -1,6 +1,6 @@ #pragma once #include "Global.h" -#include "third-party/Nlohmann/json.hpp" +#include "Nlohmann/json.hpp" ////////////////////////////////////////////////////// // For managing AllowList diff --git a/LiteLoader/Header/DynamicCommandAPI.h b/LiteLoader/include/llapi/DynamicCommandAPI.h similarity index 98% rename from LiteLoader/Header/DynamicCommandAPI.h rename to LiteLoader/include/llapi/DynamicCommandAPI.h index d19b617..a9a9a15 100644 --- a/LiteLoader/Header/DynamicCommandAPI.h +++ b/LiteLoader/include/llapi/DynamicCommandAPI.h @@ -3,15 +3,15 @@ class Actor; #define USE_PARSE_ENUM_STRING //#define ENABLE_PARAMETER_TYPE_POSTFIX - #include "MC/Command.hpp" - #include "MC/CommandOrigin.hpp" - #include "MC/CommandOutput.hpp" - #include "MC/CommandParameterData.hpp" - #include "MC/CommandRegistry.hpp" - #include "MC/CommandSelector.hpp" - #include "MC/CommandPosition.hpp" - #include "Utils/WinHelper.h" - #include + #include "llapi/mc/Command.hpp" + #include "llapi/mc/CommandOrigin.hpp" + #include "llapi/mc/CommandOutput.hpp" + #include "llapi/mc/CommandParameterData.hpp" + #include "llapi/mc/CommandRegistry.hpp" + #include "llapi/mc/CommandSelector.hpp" + #include "llapi/mc/CommandPosition.hpp" + #include "llapi/utils/WinHelper.h" + #include "magic_enum/magic_enum.hpp" /////////////////////////////////////////////////////// // Dynamic Command Registry diff --git a/LiteLoader/Header/EventAPI.h b/LiteLoader/include/llapi/EventAPI.h similarity index 98% rename from LiteLoader/Header/EventAPI.h rename to LiteLoader/include/llapi/EventAPI.h index 37de7ac..cfe92c9 100644 --- a/LiteLoader/Header/EventAPI.h +++ b/LiteLoader/include/llapi/EventAPI.h @@ -26,18 +26,17 @@ // //////////////////////////////////////////////////////////////////////// - -#include "Global.h" -#include "LoggerAPI.h" -#include "MC/BlockInstance.hpp" -#include "MC/MCRESULT.hpp" #include #include #include #include #include -#include -#include +#include "Global.h" +#include "LoggerAPI.h" +#include "llapi/mc/BlockInstance.hpp" +#include "llapi/mc/MCRESULT.hpp" +#include "LLAPI.h" +#include "utils/WinHelper.h" class Actor; class ServerPlayer; @@ -96,12 +95,12 @@ template class EventTemplate { public: static EventListener subscribe(std::function callback) { - auto plugin = LL::getPlugin(GetCurrentModule()); + auto plugin = ll::getPlugin(GetCurrentModule()); return EventListener(EventManager::addEventListener(plugin ? plugin->name : "", callback)); } static EventListener subscribe_ref(std::function callback) { - auto plugin = LL::getPlugin(GetCurrentModule()); + auto plugin = ll::getPlugin(GetCurrentModule()); return EventListener(EventManager::addEventListenerRef(plugin ? plugin->name : "", callback)); } diff --git a/LiteLoader/Header/FormUI.h b/LiteLoader/include/llapi/FormUI.h similarity index 100% rename from LiteLoader/Header/FormUI.h rename to LiteLoader/include/llapi/FormUI.h diff --git a/LiteLoader/Header/Global.h b/LiteLoader/include/llapi/Global.h similarity index 83% rename from LiteLoader/Header/Global.h rename to LiteLoader/include/llapi/Global.h index 3c6ebfe..bd32f82 100644 --- a/LiteLoader/Header/Global.h +++ b/LiteLoader/include/llapi/Global.h @@ -56,20 +56,20 @@ // windows types #include -#include "third-party/entt/entt.hpp" -#include "third-party/gsl/gsl" -#include "third-party/seh_exception/seh_exception.hpp" -#include "third-party/FMT/chrono.h" -#include "third-party/FMT/color.h" -#include "third-party/FMT/core.h" -#include "third-party/FMT/os.h" -#include "third-party/FMT/printf.h" +#include "entt/entt.hpp" +#include "gsl/gsl" +#include +#include "FMT/chrono.h" +#include "FMT/color.h" +#include "FMT/core.h" +#include "FMT/os.h" +#include "FMT/printf.h" #include "GlobalServiceAPI.h" -#include "Utils/Optional.h" +#include "llapi/utils/Optional.h" // basic mc types -#include "MC/Types.hpp" +#include "llapi/mc/Types.hpp" // clang-format off #define M_E 2.71828182845904523536 // e #define M_LOG2E 1.44269504088896340736 // log2(e) diff --git a/LiteLoader/Header/GlobalServiceAPI.h b/LiteLoader/include/llapi/GlobalServiceAPI.h similarity index 100% rename from LiteLoader/Header/GlobalServiceAPI.h rename to LiteLoader/include/llapi/GlobalServiceAPI.h diff --git a/LiteLoader/Header/HookAPI.h b/LiteLoader/include/llapi/HookAPI.h similarity index 99% rename from LiteLoader/Header/HookAPI.h rename to LiteLoader/include/llapi/HookAPI.h index 63fd816..49d05f1 100644 --- a/LiteLoader/Header/HookAPI.h +++ b/LiteLoader/include/llapi/HookAPI.h @@ -1,10 +1,10 @@ #pragma once #include "Global.h" -#include "Utils/Hash.h" +#include "utils/Hash.h" +#include #include #include #include -#include "third-party/ModUtils/ModUtils.h" // The core api of the hook function //__declspec(dllimport) int HookFunction(void* oldfunc, void** poutold, void* newfunc); diff --git a/LiteLoader/Header/I18nAPI.h b/LiteLoader/include/llapi/I18nAPI.h similarity index 97% rename from LiteLoader/Header/I18nAPI.h rename to LiteLoader/include/llapi/I18nAPI.h index 8619c67..ce5c99e 100644 --- a/LiteLoader/Header/I18nAPI.h +++ b/LiteLoader/include/llapi/I18nAPI.h @@ -35,13 +35,13 @@ #include "Global.h" #include "LLAPI.h" -#include "Utils/FileHelper.h" -#include "Utils/PluginOwnData.h" -#include "third-party/Nlohmann/json.hpp" -#include "third-party/FMT/core.h" -#include "third-party/FMT/os.h" +#include "llapi/utils/FileHelper.h" +#include "llapi/utils/PluginOwnData.h" +#include "Nlohmann/json.hpp" +#include "FMT/core.h" +#include "FMT/os.h" #include -#include "Utils/StringHelper.h" +#include "llapi/utils/StringHelper.h" /** * @brief I18nBase API class. @@ -189,7 +189,7 @@ public: }; #ifdef UNICODE -#include "third-party/compact_enc_det/compact_enc_det.h" +#include #define UNICODE #else #include "third-party/compact_enc_det/compact_enc_det.h" @@ -338,8 +338,8 @@ inline I18nBase* load(Args&&... args) { * @return I18nBase* The pointer to the I18nBase object in PluginOwnData, null if failed */ inline I18nBase* loadFrom(const std::string& plugin) { - if (LL::hasPlugin(plugin)) { - auto p = LL::getPlugin(plugin); + if (ll::hasPlugin(plugin)) { + auto p = ll::getPlugin(plugin); if (p) { return loadFromImpl(GetCurrentModule(), p->handle); } diff --git a/LiteLoader/Header/KVDBAPI.h b/LiteLoader/include/llapi/KVDBAPI.h similarity index 86% rename from LiteLoader/Header/KVDBAPI.h rename to LiteLoader/include/llapi/KVDBAPI.h index c8ba608..acdee4f 100644 --- a/LiteLoader/Header/KVDBAPI.h +++ b/LiteLoader/include/llapi/KVDBAPI.h @@ -1,10 +1,10 @@ #pragma once -#include "third-party/leveldb/c.h" -#include "third-party/leveldb/cache.h" -#include "third-party/leveldb/db.h" -#include "third-party/leveldb/filter_policy.h" -#include "third-party/leveldb/iterator.h" -#include +#include "leveldb/c.h" +#include "leveldb/cache.h" +#include "leveldb/db.h" +#include "leveldb/filter_policy.h" +#include "leveldb/iterator.h" +#include "Global.h" #include #include #include diff --git a/LiteLoader/Header/LLAPI.h b/LiteLoader/include/llapi/LLAPI.h similarity index 81% rename from LiteLoader/Header/LLAPI.h rename to LiteLoader/include/llapi/LLAPI.h index a192e1c..7bda1c7 100644 --- a/LiteLoader/Header/LLAPI.h +++ b/LiteLoader/include/llapi/LLAPI.h @@ -11,14 +11,14 @@ #define NOMINMAX #endif -#include +#include #include "Global.h" -#include "Utils/WinHelper.h" -#include "Utils/PluginOwnData.h" +#include "llapi/utils/WinHelper.h" +#include "llapi/utils/PluginOwnData.h" // LL types -namespace LL { +namespace ll { struct Version { enum Status { @@ -67,23 +67,23 @@ struct Plugin { } }; -} // namespace LL -inline bool operator<=(LL::Version a, LL::Version b) { +} // namespace ll +inline bool operator<=(ll::Version a, ll::Version b) { return a < b || a == b; } -inline bool operator>(LL::Version a, LL::Version b) { +inline bool operator>(ll::Version a, ll::Version b) { return b < a; } -inline bool operator>=(LL::Version a, LL::Version b) { +inline bool operator>=(ll::Version a, ll::Version b) { return b < a || b == a; } // helper -LIAPI bool RegisterPlugin(HMODULE hPlugin, std::string name, std::string desc, LL::Version version, +LIAPI bool RegisterPlugin(HMODULE hPlugin, std::string name, std::string desc, ll::Version version, std::map others); // Loader APIs -namespace LL { +namespace ll { /** * @brief Get the loader version as a string @@ -94,7 +94,7 @@ LIAPI std::string getLoaderVersionString(); /** * @brief Get the loader version as a Version object * - * @return LL::Version The loader version + * @return ll::Version The loader version */ LIAPI Version getLoaderVersion(); /** @@ -117,14 +117,14 @@ LIAPI std::string getDataPath(const std::string& pluginName); * * @param name The name of the plugin * @param desc The description(introduction) of the plugin - * @param version The version of the plugin(LL::Version) + * @param version The version of the plugin(ll::Version) * @param git The git information of the plugin * @param license The license of the plugin * @param website The website * @return bool True if the plugin is registered successfully * @note The implementation of this function must be in header file(because of `GetCurrentModule`) */ -inline bool registerPlugin(std::string name, std::string desc, LL::Version version, +inline bool registerPlugin(std::string name, std::string desc, ll::Version version, std::string git = "", std::string license = "", std::string website = "") { std::map others; if (!git.empty()) @@ -141,17 +141,17 @@ inline bool registerPlugin(std::string name, std::string desc, LL::Version versi * * @param name The name of the plugin * @param desc The descirption(introduction) of the plugin - * @param version The version of the plugin(LL::Version) + * @param version The version of the plugin(ll::Version) * @param others The other information of the plugin(key-value) * @return bool True if the plugin is registered successfully * @note The implementation of this function must be in header file(because of `GetCurrentModule`) * * @par Example * @code - * LL::registerPlugin("Test", "A test plugin", Version(0, 0, 1, Version::Dev), {{"Note","This is Note"}}); + * ll::registerPlugin("Test", "A test plugin", Version(0, 0, 1, Version::Dev), {{"Note","This is Note"}}); * @endcode */ -inline bool registerPlugin(std::string name, std::string desc, LL::Version version, +inline bool registerPlugin(std::string name, std::string desc, ll::Version version, std::map others) { return ::RegisterPlugin(GetCurrentModule(), name, desc, version, others); } @@ -160,16 +160,16 @@ inline bool registerPlugin(std::string name, std::string desc, LL::Version versi * @brief Get a loaded plugin by name * * @param name The name of the plugin - * @return LL::Plugin* The plugin(nullptr if not found) + * @return ll::Plugin* The plugin(nullptr if not found) */ -LIAPI LL::Plugin* getPlugin(std::string name); +LIAPI ll::Plugin* getPlugin(std::string name); /** * @brief Get a loaded plugin by HMODULE handle * * @param name The name of the plugin - * @return LL::Plugin* The plugin(nullptr if not found) + * @return ll::Plugin* The plugin(nullptr if not found) */ -LIAPI LL::Plugin* getPlugin(HMODULE handle); +LIAPI ll::Plugin* getPlugin(HMODULE handle); /** * @brief Get whether the plugin is loaded @@ -182,9 +182,9 @@ LIAPI bool hasPlugin(std::string name); /** * @brief Get the All the loaded plugins * - * @return std::unordered_map The loaded plugins(name-plugin) + * @return std::unordered_map The loaded plugins(name-plugin) */ -LIAPI std::unordered_map getAllPlugins(); +LIAPI std::unordered_map getAllPlugins(); /** * @breif Get the handle of LiteLoader.dll. @@ -209,4 +209,4 @@ LIAPI bool isServerStopping(); * @return std::string Language(such as: en, zh_CN, ja, ru) */ std::string getLanguage(); -}; // namespace LL +}; // namespace ll diff --git a/LiteLoader/Header/LoggerAPI.h b/LiteLoader/include/llapi/LoggerAPI.h similarity index 94% rename from LiteLoader/Header/LoggerAPI.h rename to LiteLoader/include/llapi/LoggerAPI.h index 06e68cb..b7ff80c 100644 --- a/LiteLoader/Header/LoggerAPI.h +++ b/LiteLoader/include/llapi/LoggerAPI.h @@ -30,16 +30,16 @@ #endif #include -#include "third-party/FMT/chrono.h" -#include "third-party/FMT/color.h" -#include "third-party/FMT/core.h" -#include "third-party/FMT/os.h" -#include "third-party/FMT/printf.h" -#include "Utils/CsLock.h" -#include "Utils/WinHelper.h" -#include "Utils/FileHelper.h" -#include "Utils/PluginOwnData.h" -#include "Utils/StringHelper.h" +#include "FMT/chrono.h" +#include "FMT/color.h" +#include "FMT/core.h" +#include "FMT/os.h" +#include "FMT/printf.h" +#include "llapi/utils/CsLock.h" +#include "llapi/utils/WinHelper.h" +#include "llapi/utils/FileHelper.h" +#include "llapi/utils/PluginOwnData.h" +#include "llapi/utils/StringHelper.h" #include "I18nAPI.h" #include #include diff --git a/LiteLoader/Header/ParticleAPI.h b/LiteLoader/include/llapi/ParticleAPI.h similarity index 99% rename from LiteLoader/Header/ParticleAPI.h rename to LiteLoader/include/llapi/ParticleAPI.h index 878d486..0317515 100644 --- a/LiteLoader/Header/ParticleAPI.h +++ b/LiteLoader/include/llapi/ParticleAPI.h @@ -7,7 +7,7 @@ * */ #pragma once -#include +#include "LLAPI.h" #include "Global.h" class ParticleAPI { @@ -37,7 +37,7 @@ public: void inline init(HMODULE hModule = nullptr) { if (!hModule) { - auto pPtr = LL::getPlugin("ParticleAPI"); + auto pPtr = ll::getPlugin("ParticleAPI"); if (!pPtr) { throw std::runtime_error("Cannot get ParticleAPI.dll"); } diff --git a/LiteLoader/Header/PermissionAPI.h b/LiteLoader/include/llapi/PermissionAPI.h similarity index 99% rename from LiteLoader/Header/PermissionAPI.h rename to LiteLoader/include/llapi/PermissionAPI.h index 7189dea..09eea4a 100644 --- a/LiteLoader/Header/PermissionAPI.h +++ b/LiteLoader/include/llapi/PermissionAPI.h @@ -7,7 +7,7 @@ * */ #pragma once -#include +#include "LLAPI.h" #include "PERM/Role.hpp" /** @@ -60,7 +60,7 @@ public: */ void init(HMODULE hModule = nullptr) { if (!hModule) { - auto pPtr = LL::getPlugin("PermissionAPI"); + auto pPtr = ll::getPlugin("PermissionAPI"); if (!pPtr) { throw std::runtime_error("Cannot get the plugin object"); } diff --git a/LiteLoader/Header/PlayerInfoAPI.h b/LiteLoader/include/llapi/PlayerInfoAPI.h similarity index 97% rename from LiteLoader/Header/PlayerInfoAPI.h rename to LiteLoader/include/llapi/PlayerInfoAPI.h index 1636699..c2ba410 100644 --- a/LiteLoader/Header/PlayerInfoAPI.h +++ b/LiteLoader/include/llapi/PlayerInfoAPI.h @@ -7,7 +7,7 @@ * */ #pragma once -#include +#include "Global.h" #include namespace PlayerInfo { diff --git a/LiteLoader/Header/RegCommandAPI.h b/LiteLoader/include/llapi/RegCommandAPI.h similarity index 87% rename from LiteLoader/Header/RegCommandAPI.h rename to LiteLoader/include/llapi/RegCommandAPI.h index 150d661..1aed1b5 100644 --- a/LiteLoader/Header/RegCommandAPI.h +++ b/LiteLoader/include/llapi/RegCommandAPI.h @@ -1,14 +1,14 @@ #pragma once #include "Global.h" -#include "MC/Actor.hpp" -#include "MC/Player.hpp" -#include "MC/Command.hpp" -#include "MC/CommandMessage.hpp" -#include "MC/CommandOutput.hpp" -#include "MC/CommandParameterData.hpp" -#include "MC/CommandPosition.hpp" -#include "MC/CommandSelector.hpp" -#include "MC/CommandRegistry.hpp" +#include "llapi/mc/Actor.hpp" +#include "llapi/mc/Player.hpp" +#include "llapi/mc/Command.hpp" +#include "llapi/mc/CommandMessage.hpp" +#include "llapi/mc/CommandOutput.hpp" +#include "llapi/mc/CommandParameterData.hpp" +#include "llapi/mc/CommandPosition.hpp" +#include "llapi/mc/CommandSelector.hpp" +#include "llapi/mc/CommandRegistry.hpp" #include namespace RegisterCommandHelper { diff --git a/LiteLoader/Header/RemoteCallAPI.h b/LiteLoader/include/llapi/RemoteCallAPI.h similarity index 98% rename from LiteLoader/Header/RemoteCallAPI.h rename to LiteLoader/include/llapi/RemoteCallAPI.h index 5e4ecfc..8d543a1 100644 --- a/LiteLoader/Header/RemoteCallAPI.h +++ b/LiteLoader/include/llapi/RemoteCallAPI.h @@ -1,15 +1,15 @@ #pragma once #include "Global.h" -#include "Utils/WinHelper.h" -#include "third-party/Nlohmann/json.hpp" -#include "MC/CompoundTag.hpp" -#include "MC/Container.hpp" -#include "MC/ItemStack.hpp" -#include "MC/BlockInstance.hpp" -#include "MC/VanillaDimensions.hpp" -#include "MC/Player.hpp" -#include "MC/Block.hpp" -#include "MC/BlockActor.hpp" +#include "llapi/utils/WinHelper.h" +#include "Nlohmann/json.hpp" +#include "llapi/mc/CompoundTag.hpp" +#include "llapi/mc/Container.hpp" +#include "llapi/mc/ItemStack.hpp" +#include "llapi/mc/BlockInstance.hpp" +#include "llapi/mc/VanillaDimensions.hpp" +#include "llapi/mc/Player.hpp" +#include "llapi/mc/Block.hpp" +#include "llapi/mc/BlockActor.hpp" #define TEST_NEW_VALUE_TYPE /////////////////////////////////////////////////////// diff --git a/LiteLoader/Header/ScheduleAPI.h b/LiteLoader/include/llapi/ScheduleAPI.h similarity index 96% rename from LiteLoader/Header/ScheduleAPI.h rename to LiteLoader/include/llapi/ScheduleAPI.h index 8162bd1..51fc018 100644 --- a/LiteLoader/Header/ScheduleAPI.h +++ b/LiteLoader/include/llapi/ScheduleAPI.h @@ -1,7 +1,7 @@ #pragma once #include "Global.h" #include -#include "Utils/WinHelper.h" +#include "llapi/utils/WinHelper.h" /////////////////////////////////////////////////////// // Schedule future callback plans diff --git a/LiteLoader/Header/SendPacketAPI.h b/LiteLoader/include/llapi/SendPacketAPI.h similarity index 93% rename from LiteLoader/Header/SendPacketAPI.h rename to LiteLoader/include/llapi/SendPacketAPI.h index 2f12598..c83529d 100644 --- a/LiteLoader/Header/SendPacketAPI.h +++ b/LiteLoader/include/llapi/SendPacketAPI.h @@ -1,6 +1,6 @@ #pragma once -#include "MC/BinaryStream.hpp" -#include "MC/Packet.hpp" +#include "llapi/mc/BinaryStream.hpp" +#include "llapi/mc/Packet.hpp" template class NetworkPacket : public Packet { diff --git a/LiteLoader/Header/ServerAPI.h b/LiteLoader/include/llapi/ServerAPI.h similarity index 74% rename from LiteLoader/Header/ServerAPI.h rename to LiteLoader/include/llapi/ServerAPI.h index a00f284..ce1f863 100644 --- a/LiteLoader/Header/ServerAPI.h +++ b/LiteLoader/include/llapi/ServerAPI.h @@ -1,9 +1,9 @@ #pragma once #include -#include +#include "Global.h" -namespace LL { +namespace ll { LIAPI std::string getBdsVersion(); LIAPI int getServerProtocolVersion(); LIAPI bool setServerMotd(const std::string& motd); -} // namespace LL +} // namespace ll diff --git a/LiteLoader/Header/TranslationAPI.h b/LiteLoader/include/llapi/TranslationAPI.h similarity index 100% rename from LiteLoader/Header/TranslationAPI.h rename to LiteLoader/include/llapi/TranslationAPI.h diff --git a/LiteLoader/Header/DB/Any.h b/LiteLoader/include/llapi/db/Any.h similarity index 97% rename from LiteLoader/Header/DB/Any.h rename to LiteLoader/include/llapi/db/Any.h index f944d55..0461858 100644 --- a/LiteLoader/Header/DB/Any.h +++ b/LiteLoader/include/llapi/db/Any.h @@ -1,5 +1,5 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include "Types.h" #pragma region AnyConversion @@ -8,7 +8,7 @@ namespace DB { // Declare Any class class Any; -} // namespace DB +} // namespace db /** * @brief Function to convert Any to T. @@ -605,9 +605,9 @@ public: /** * @brief Get the value as Date * - * @tparam T = DB::Date - * @return DB::Date The value - * @throws std::bad_cast If the value cannot be converted to DB::Date + * @tparam T = db::Date + * @return db::Date The value + * @throws std::bad_cast If the value cannot be converted to db::Date */ template <> Date get() const @@ -631,9 +631,9 @@ public: /** * @brief Get the value as Time * - * @tparam T = DB::Time - * @return DB::Time The value - * @throws std::bad_cast If the value cannot be converted to DB::Time + * @tparam T = db::Time + * @return db::Time The value + * @throws std::bad_cast If the value cannot be converted to db::Time */ template <> Time get() const @@ -657,9 +657,9 @@ public: /** * @brief Get the value as DateTime * - * @tparam T = DB::DateTime - * @return DB::DateTime The value - * @throws std::bad_cast If the value cannot be converted to DB::DateTime + * @tparam T = db::DateTime + * @return db::DateTime The value + * @throws std::bad_cast If the value cannot be converted to db::DateTime */ template <> DateTime get() const @@ -682,9 +682,9 @@ public: /** * @brief Get the value as ByteArray * - * @tparam T = DB::ByteArray - * @return DB::ByteArray The value - * @throws std::bad_cast If the value cannot be converted to DB::ByteArray + * @tparam T = db::ByteArray + * @return db::ByteArray The value + * @throws std::bad_cast If the value cannot be converted to db::ByteArray */ template <> ByteArray get() const @@ -725,4 +725,4 @@ public: }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/ConnParams.h b/LiteLoader/include/llapi/db/ConnParams.h similarity index 99% rename from LiteLoader/Header/DB/ConnParams.h rename to LiteLoader/include/llapi/db/ConnParams.h index c6dda03..bce49bb 100644 --- a/LiteLoader/Header/DB/ConnParams.h +++ b/LiteLoader/include/llapi/db/ConnParams.h @@ -137,4 +137,4 @@ public: } }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Impl/MySQL/Session.h b/LiteLoader/include/llapi/db/Impl/mysql/Session.h similarity index 95% rename from LiteLoader/Header/DB/Impl/MySQL/Session.h rename to LiteLoader/include/llapi/db/Impl/mysql/Session.h index ea5850f..aa1c1f8 100644 --- a/LiteLoader/Header/DB/Impl/MySQL/Session.h +++ b/LiteLoader/include/llapi/db/Impl/mysql/Session.h @@ -1,5 +1,5 @@ #pragma once -#include "../../Session.h" +#include "llapi/db/Session.h" struct MYSQL; @@ -37,4 +37,4 @@ public: }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Impl/MySQL/Stmt.h b/LiteLoader/include/llapi/db/Impl/mysql/Stmt.h similarity index 97% rename from LiteLoader/Header/DB/Impl/MySQL/Stmt.h rename to LiteLoader/include/llapi/db/Impl/mysql/Stmt.h index 28b3e45..1be61a7 100644 --- a/LiteLoader/Header/DB/Impl/MySQL/Stmt.h +++ b/LiteLoader/include/llapi/db/Impl/mysql/Stmt.h @@ -1,5 +1,5 @@ #pragma once -#include "../../Stmt.h" +#include "llapi/db/Stmt.h" struct MYSQL_STMT; @@ -68,4 +68,4 @@ public: LIAPI static SharedPointer create(const std::weak_ptr& sess, const std::string& sql, bool autoExecute = false); }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Impl/SQLite/Session.h b/LiteLoader/include/llapi/db/Impl/sqlite/Session.h similarity index 94% rename from LiteLoader/Header/DB/Impl/SQLite/Session.h rename to LiteLoader/include/llapi/db/Impl/sqlite/Session.h index ee52a3c..6dfcc2b 100644 --- a/LiteLoader/Header/DB/Impl/SQLite/Session.h +++ b/LiteLoader/include/llapi/db/Impl/sqlite/Session.h @@ -1,5 +1,5 @@ #pragma once -#include "../../Session.h" +#include "llapi/db/Session.h" struct sqlite3; namespace DB @@ -31,4 +31,4 @@ public: friend class SQLiteStmt; }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Impl/SQLite/Stmt.h b/LiteLoader/include/llapi/db/Impl/sqlite/Stmt.h similarity index 96% rename from LiteLoader/Header/DB/Impl/SQLite/Stmt.h rename to LiteLoader/include/llapi/db/Impl/sqlite/Stmt.h index 64058f6..f94c1ae 100644 --- a/LiteLoader/Header/DB/Impl/SQLite/Stmt.h +++ b/LiteLoader/include/llapi/db/Impl/sqlite/Stmt.h @@ -1,5 +1,5 @@ #pragma once -#include "../../Stmt.h" +#include "llapi/db/Stmt.h" struct sqlite3_stmt; @@ -54,4 +54,4 @@ public: LIAPI static SharedPointer create(const std::weak_ptr& sess, const std::string& sql, bool autoExecute = false); }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Pointer.h b/LiteLoader/include/llapi/db/Pointer.h similarity index 99% rename from LiteLoader/Header/DB/Pointer.h rename to LiteLoader/include/llapi/db/Pointer.h index 8021c19..276b2a6 100644 --- a/LiteLoader/Header/DB/Pointer.h +++ b/LiteLoader/include/llapi/db/Pointer.h @@ -65,4 +65,4 @@ public: }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Row.h b/LiteLoader/include/llapi/db/Row.h similarity index 99% rename from LiteLoader/Header/DB/Row.h rename to LiteLoader/include/llapi/db/Row.h index 0eab378..fca8e93 100644 --- a/LiteLoader/Header/DB/Row.h +++ b/LiteLoader/include/llapi/db/Row.h @@ -247,7 +247,7 @@ public: LIAPI void forEach(std::function cb) const; }; -} // namespace DB +} // namespace db /** * @brief Function to convert a row to T. diff --git a/LiteLoader/Header/DB/RowSet.h b/LiteLoader/include/llapi/db/RowSet.h similarity index 99% rename from LiteLoader/Header/DB/RowSet.h rename to LiteLoader/include/llapi/db/RowSet.h index 5a6cc32..1796193 100644 --- a/LiteLoader/Header/DB/RowSet.h +++ b/LiteLoader/include/llapi/db/RowSet.h @@ -75,4 +75,4 @@ public: using ResultSet = RowSet; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Session.h b/LiteLoader/include/llapi/db/Session.h similarity index 98% rename from LiteLoader/Header/DB/Session.h rename to LiteLoader/include/llapi/db/Session.h index 6d8af65..5a3fbfa 100644 --- a/LiteLoader/Header/DB/Session.h +++ b/LiteLoader/include/llapi/db/Session.h @@ -143,7 +143,7 @@ public: * ResultSet res; * session << "SELECT * FROM table WHERE id = ?", bind(114514), into(res); * @endcode - * @note It is not recommended to store the DB::Stmt reference returned by this method, + * @note It is not recommended to store the db::Stmt reference returned by this method, * it will be closed on the next execution. */ virtual SharedPointer operator<<(const std::string& query); @@ -228,4 +228,4 @@ public: }; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Stmt.h b/LiteLoader/include/llapi/db/Stmt.h similarity index 95% rename from LiteLoader/Header/DB/Stmt.h rename to LiteLoader/include/llapi/db/Stmt.h index 214bb07..1b0ae5e 100644 --- a/LiteLoader/Header/DB/Stmt.h +++ b/LiteLoader/include/llapi/db/Stmt.h @@ -17,7 +17,7 @@ class Session; * @brief Structure to store a single value to bind to a prepared statement. * * @tparam T Type of sequence container, must have begin() and end() methods - * @tparam The value type of the container must be DB::Any. + * @tparam The value type of the container must be db::Any. */ struct BindType { @@ -31,13 +31,13 @@ struct BindType * to bind multiple parameters at once. * * @tparam T Type of sequence container, must have begin() and end() methods - * @tparam The value type of the container must be DB::Any. + * @tparam The value type of the container must be db::Any. */ template struct BindSequenceType { T values; - static_assert(std::is_same::value, "Container value type must be DB::Any"); + static_assert(std::is_same::value, "Container value type must be db::Any"); }; /** * @brief Structure to store a map(relevance) container @@ -45,14 +45,14 @@ struct BindSequenceType * * @tparam T Type of map container, must have begin() and end() methods * @note The key type of the map must be std::string, - * and the value type of the map must be DB::Any. + * and the value type of the map must be db::Any. */ template struct BindMapType { T values; static_assert(std::is_same::value, "Map key type must be std::string"); - static_assert(std::is_same::value, "Map value type must be DB::Any"); + static_assert(std::is_same::value, "Map value type must be db::Any"); }; template @@ -401,7 +401,7 @@ public: /** * @brief Get the session type * - * @return DB::DBType The database type + * @return db::DBType The database type * * @par Impletementation * @see SQLiteStmt::getType @@ -458,14 +458,14 @@ public: /** * @brief Operator, to bind single values. * - * @param b The return value of DB::use + * @param b The return value of db::use * @return SharedPointer this */ virtual SharedPointer operator,(const BindType& b); /** * @brief Operator, to bind a sequence container. * - * @param b The return value of DB::use + * @param b The return value of db::use * @return SharedPointer this */ template @@ -480,7 +480,7 @@ public: /** * @brief Operator, to bind a row. * - * @param b The return value of DB::use + * @param b The return value of db::use * @return SharedPointer this */ template <> @@ -505,7 +505,7 @@ public: /** * @brief Operator, to bind a map container. * - * @param b The return value of DB::bind + * @param b The return value of db::bind * @return SharedPointer this */ template @@ -520,7 +520,7 @@ public: /** * @brief Operator, to store a row of results. * - * @param i The return value of DB::into + * @param i The return value of db::into * @return SharedPointer this */ template @@ -532,7 +532,7 @@ public: /** * @brief Operator, to store a set of results. * - * @param i The return value of DB::into + * @param i The return value of db::into * @return SharedPointer this */ template @@ -544,7 +544,7 @@ public: /** * @brief Operator, to store a set of results. * - * @param i The return value of DB::into + * @param i The return value of db::into * @return SharedPointer this */ template <> @@ -556,7 +556,7 @@ public: /** * @brief Operator, to store a row of results. * - * @param i The return value of DB::into + * @param i The return value of db::into * @return SharedPointer this */ template <> @@ -670,4 +670,4 @@ inline IntoType into(T& out) return IntoType{out}; } -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/DB/Types.h b/LiteLoader/include/llapi/db/Types.h similarity index 96% rename from LiteLoader/Header/DB/Types.h rename to LiteLoader/include/llapi/db/Types.h index 5ccae49..2e1987c 100644 --- a/LiteLoader/Header/DB/Types.h +++ b/LiteLoader/include/llapi/db/Types.h @@ -41,4 +41,4 @@ struct Decimal using ByteArray = std::vector; -} // namespace DB \ No newline at end of file +} // namespace db \ No newline at end of file diff --git a/LiteLoader/Header/Impl/FormPacketHelper.h b/LiteLoader/include/llapi/impl/FormPacketHelper.h similarity index 89% rename from LiteLoader/Header/Impl/FormPacketHelper.h rename to LiteLoader/include/llapi/impl/FormPacketHelper.h index a5c1a88..5e02e98 100644 --- a/LiteLoader/Header/Impl/FormPacketHelper.h +++ b/LiteLoader/include/llapi/impl/FormPacketHelper.h @@ -1,9 +1,9 @@ #pragma once #include -#include "../Global.h" -#include "../FormUI.h" -#include +#include "llapi/Global.h" +#include "llapi/FormUI.h" +#include "llapi/mc/Player.hpp" LIAPI unsigned NewFormId(); diff --git a/LiteLoader/include/llapi/impl/ObjectivePacketHelper.h b/LiteLoader/include/llapi/impl/ObjectivePacketHelper.h new file mode 100644 index 0000000..44ec0c3 --- /dev/null +++ b/LiteLoader/include/llapi/impl/ObjectivePacketHelper.h @@ -0,0 +1,5 @@ +#pragma once + +#include "llapi/Global.h" + +LIAPI uint64_t NewScoreId(); \ No newline at end of file diff --git a/LiteLoader/Header/MC/AABB.hpp b/LiteLoader/include/llapi/mc/AABB.hpp similarity index 98% rename from LiteLoader/Header/MC/AABB.hpp rename to LiteLoader/include/llapi/mc/AABB.hpp index b29a030..af7e4db 100644 --- a/LiteLoader/Header/MC/AABB.hpp +++ b/LiteLoader/include/llapi/mc/AABB.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA @@ -12,6 +12,7 @@ class AABB { public: Vec3 min; Vec3 max; + bool empty; #define AFTER_EXTRA diff --git a/LiteLoader/Header/MC/AABBBucket.hpp b/LiteLoader/include/llapi/mc/AABBBucket.hpp similarity index 94% rename from LiteLoader/Header/MC/AABBBucket.hpp rename to LiteLoader/include/llapi/mc/AABBBucket.hpp index cca7558..4c8e8ab 100644 --- a/LiteLoader/Header/MC/AABBBucket.hpp +++ b/LiteLoader/include/llapi/mc/AABBBucket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AABBPred.hpp b/LiteLoader/include/llapi/mc/AABBPred.hpp similarity index 94% rename from LiteLoader/Header/MC/AABBPred.hpp rename to LiteLoader/include/llapi/mc/AABBPred.hpp index 48b52bf..bcf377b 100644 --- a/LiteLoader/Header/MC/AABBPred.hpp +++ b/LiteLoader/include/llapi/mc/AABBPred.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Abilities.hpp b/LiteLoader/include/llapi/mc/Abilities.hpp similarity index 96% rename from LiteLoader/Header/MC/Abilities.hpp rename to LiteLoader/include/llapi/mc/Abilities.hpp index 19c34c0..ec0e92d 100644 --- a/LiteLoader/Header/MC/Abilities.hpp +++ b/LiteLoader/include/llapi/mc/Abilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Ability.hpp b/LiteLoader/include/llapi/mc/Ability.hpp similarity index 94% rename from LiteLoader/Header/MC/Ability.hpp rename to LiteLoader/include/llapi/mc/Ability.hpp index fd25c66..813412e 100644 --- a/LiteLoader/Header/MC/Ability.hpp +++ b/LiteLoader/include/llapi/mc/Ability.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AbilityCommand.hpp b/LiteLoader/include/llapi/mc/AbilityCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/AbilityCommand.hpp rename to LiteLoader/include/llapi/mc/AbilityCommand.hpp index 51be37e..c73e110 100644 --- a/LiteLoader/Header/MC/AbilityCommand.hpp +++ b/LiteLoader/include/llapi/mc/AbilityCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AbsorptionMobEffect.hpp b/LiteLoader/include/llapi/mc/AbsorptionMobEffect.hpp similarity index 96% rename from LiteLoader/Header/MC/AbsorptionMobEffect.hpp rename to LiteLoader/include/llapi/mc/AbsorptionMobEffect.hpp index 09a7a17..d841c32 100644 --- a/LiteLoader/Header/MC/AbsorptionMobEffect.hpp +++ b/LiteLoader/include/llapi/mc/AbsorptionMobEffect.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MobEffect.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AbstractArrow.hpp b/LiteLoader/include/llapi/mc/AbstractArrow.hpp similarity index 98% rename from LiteLoader/Header/MC/AbstractArrow.hpp rename to LiteLoader/include/llapi/mc/AbstractArrow.hpp index df20071..5d67776 100644 --- a/LiteLoader/Header/MC/AbstractArrow.hpp +++ b/LiteLoader/include/llapi/mc/AbstractArrow.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AcaciaTreeCanopy.hpp b/LiteLoader/include/llapi/mc/AcaciaTreeCanopy.hpp similarity index 96% rename from LiteLoader/Header/MC/AcaciaTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/AcaciaTreeCanopy.hpp index 7b02e22..5340164 100644 --- a/LiteLoader/Header/MC/AcaciaTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/AcaciaTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AcaciaTreeTrunk.hpp b/LiteLoader/include/llapi/mc/AcaciaTreeTrunk.hpp similarity index 97% rename from LiteLoader/Header/MC/AcaciaTreeTrunk.hpp rename to LiteLoader/include/llapi/mc/AcaciaTreeTrunk.hpp index 34fd4ab..e95cafe 100644 --- a/LiteLoader/Header/MC/AcaciaTreeTrunk.hpp +++ b/LiteLoader/include/llapi/mc/AcaciaTreeTrunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AchievementData.hpp b/LiteLoader/include/llapi/mc/AchievementData.hpp similarity index 95% rename from LiteLoader/Header/MC/AchievementData.hpp rename to LiteLoader/include/llapi/mc/AchievementData.hpp index 4d4bbe2..df4a6ce 100644 --- a/LiteLoader/Header/MC/AchievementData.hpp +++ b/LiteLoader/include/llapi/mc/AchievementData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActivateToolDefinition.hpp b/LiteLoader/include/llapi/mc/ActivateToolDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/ActivateToolDefinition.hpp rename to LiteLoader/include/llapi/mc/ActivateToolDefinition.hpp index c07f210..cf4d777 100644 --- a/LiteLoader/Header/MC/ActivateToolDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ActivateToolDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/ActivateToolNode.hpp b/LiteLoader/include/llapi/mc/ActivateToolNode.hpp similarity index 96% rename from LiteLoader/Header/MC/ActivateToolNode.hpp rename to LiteLoader/include/llapi/mc/ActivateToolNode.hpp index bc3ce81..23d3b79 100644 --- a/LiteLoader/Header/MC/ActivateToolNode.hpp +++ b/LiteLoader/include/llapi/mc/ActivateToolNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActivatorRailBlock.hpp b/LiteLoader/include/llapi/mc/ActivatorRailBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ActivatorRailBlock.hpp rename to LiteLoader/include/llapi/mc/ActivatorRailBlock.hpp index 4f99a5d..70892e6 100644 --- a/LiteLoader/Header/MC/ActivatorRailBlock.hpp +++ b/LiteLoader/include/llapi/mc/ActivatorRailBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseRailBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActiveDirectoryIdentity.hpp b/LiteLoader/include/llapi/mc/ActiveDirectoryIdentity.hpp similarity index 97% rename from LiteLoader/Header/MC/ActiveDirectoryIdentity.hpp rename to LiteLoader/include/llapi/mc/ActiveDirectoryIdentity.hpp index 971b0d3..b0a3d55 100644 --- a/LiteLoader/Header/MC/ActiveDirectoryIdentity.hpp +++ b/LiteLoader/include/llapi/mc/ActiveDirectoryIdentity.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Actor.hpp b/LiteLoader/include/llapi/mc/Actor.hpp similarity index 99% rename from LiteLoader/Header/MC/Actor.hpp rename to LiteLoader/include/llapi/mc/Actor.hpp index 85a6177..380456b 100644 --- a/LiteLoader/Header/MC/Actor.hpp +++ b/LiteLoader/include/llapi/mc/Actor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Add include headers & pre-declares diff --git a/LiteLoader/Header/MC/ActorAnimationController.hpp b/LiteLoader/include/llapi/mc/ActorAnimationController.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorAnimationController.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationController.hpp index d411413..0d3af7b 100644 --- a/LiteLoader/Header/MC/ActorAnimationController.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationController.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorAnimationControllerGroup.hpp b/LiteLoader/include/llapi/mc/ActorAnimationControllerGroup.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorAnimationControllerGroup.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationControllerGroup.hpp index 9823d49..5bce9d6 100644 --- a/LiteLoader/Header/MC/ActorAnimationControllerGroup.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationControllerGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "JsonUtil.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorAnimationControllerPlayer.hpp b/LiteLoader/include/llapi/mc/ActorAnimationControllerPlayer.hpp similarity index 99% rename from LiteLoader/Header/MC/ActorAnimationControllerPlayer.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationControllerPlayer.hpp index c1bfd91..293cc86 100644 --- a/LiteLoader/Header/MC/ActorAnimationControllerPlayer.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationControllerPlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorAnimationControllerPtr.hpp b/LiteLoader/include/llapi/mc/ActorAnimationControllerPtr.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorAnimationControllerPtr.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationControllerPtr.hpp index c6e5939..fa21039 100644 --- a/LiteLoader/Header/MC/ActorAnimationControllerPtr.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationControllerPtr.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorAnimationControllerState.hpp b/LiteLoader/include/llapi/mc/ActorAnimationControllerState.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorAnimationControllerState.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationControllerState.hpp index 26270be..bcf0f03 100644 --- a/LiteLoader/Header/MC/ActorAnimationControllerState.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationControllerState.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorAnimationControllerStatePlayer.hpp b/LiteLoader/include/llapi/mc/ActorAnimationControllerStatePlayer.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorAnimationControllerStatePlayer.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationControllerStatePlayer.hpp index 13c56b6..e064226 100644 --- a/LiteLoader/Header/MC/ActorAnimationControllerStatePlayer.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationControllerStatePlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorAnimationEvent.hpp b/LiteLoader/include/llapi/mc/ActorAnimationEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorAnimationEvent.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationEvent.hpp index f0c5650..82e11cf 100644 --- a/LiteLoader/Header/MC/ActorAnimationEvent.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorAnimationGroup.hpp b/LiteLoader/include/llapi/mc/ActorAnimationGroup.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorAnimationGroup.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationGroup.hpp index 549ba54..614877f 100644 --- a/LiteLoader/Header/MC/ActorAnimationGroup.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorAnimationPlayer.hpp b/LiteLoader/include/llapi/mc/ActorAnimationPlayer.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorAnimationPlayer.hpp rename to LiteLoader/include/llapi/mc/ActorAnimationPlayer.hpp index 4b55dbc..9da2f2a 100644 --- a/LiteLoader/Header/MC/ActorAnimationPlayer.hpp +++ b/LiteLoader/include/llapi/mc/ActorAnimationPlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorBlock.hpp b/LiteLoader/include/llapi/mc/ActorBlock.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorBlock.hpp rename to LiteLoader/include/llapi/mc/ActorBlock.hpp index 6e8067e..cfa3754 100644 --- a/LiteLoader/Header/MC/ActorBlock.hpp +++ b/LiteLoader/include/llapi/mc/ActorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorClassTree.hpp b/LiteLoader/include/llapi/mc/ActorClassTree.hpp similarity index 95% rename from LiteLoader/Header/MC/ActorClassTree.hpp rename to LiteLoader/include/llapi/mc/ActorClassTree.hpp index 13692f9..dd6e9de 100644 --- a/LiteLoader/Header/MC/ActorClassTree.hpp +++ b/LiteLoader/include/llapi/mc/ActorClassTree.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorCommandOrigin.hpp b/LiteLoader/include/llapi/mc/ActorCommandOrigin.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/ActorCommandOrigin.hpp index f69ab38..58c312f 100644 --- a/LiteLoader/Header/MC/ActorCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/ActorCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/ActorComponentFactory.hpp b/LiteLoader/include/llapi/mc/ActorComponentFactory.hpp similarity index 95% rename from LiteLoader/Header/MC/ActorComponentFactory.hpp rename to LiteLoader/include/llapi/mc/ActorComponentFactory.hpp index 8a00ba8..4669821 100644 --- a/LiteLoader/Header/MC/ActorComponentFactory.hpp +++ b/LiteLoader/include/llapi/mc/ActorComponentFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDamageByActorSource.hpp b/LiteLoader/include/llapi/mc/ActorDamageByActorSource.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorDamageByActorSource.hpp rename to LiteLoader/include/llapi/mc/ActorDamageByActorSource.hpp index 15a7dd6..8da6bd7 100644 --- a/LiteLoader/Header/MC/ActorDamageByActorSource.hpp +++ b/LiteLoader/include/llapi/mc/ActorDamageByActorSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorDamageSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDamageByBlockSource.hpp b/LiteLoader/include/llapi/mc/ActorDamageByBlockSource.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorDamageByBlockSource.hpp rename to LiteLoader/include/llapi/mc/ActorDamageByBlockSource.hpp index d215d52..61acc66 100644 --- a/LiteLoader/Header/MC/ActorDamageByBlockSource.hpp +++ b/LiteLoader/include/llapi/mc/ActorDamageByBlockSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorDamageSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDamageByChildActorSource.hpp b/LiteLoader/include/llapi/mc/ActorDamageByChildActorSource.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorDamageByChildActorSource.hpp rename to LiteLoader/include/llapi/mc/ActorDamageByChildActorSource.hpp index fe49d20..cf0b548 100644 --- a/LiteLoader/Header/MC/ActorDamageByChildActorSource.hpp +++ b/LiteLoader/include/llapi/mc/ActorDamageByChildActorSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorDamageByActorSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDamageSource.hpp b/LiteLoader/include/llapi/mc/ActorDamageSource.hpp similarity index 99% rename from LiteLoader/Header/MC/ActorDamageSource.hpp rename to LiteLoader/include/llapi/mc/ActorDamageSource.hpp index a08781b..1e28d71 100644 --- a/LiteLoader/Header/MC/ActorDamageSource.hpp +++ b/LiteLoader/include/llapi/mc/ActorDamageSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/ActorDefinition.hpp b/LiteLoader/include/llapi/mc/ActorDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorDefinition.hpp rename to LiteLoader/include/llapi/mc/ActorDefinition.hpp index 385134d..23d56aa 100644 --- a/LiteLoader/Header/MC/ActorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDefinitionAttribute.hpp b/LiteLoader/include/llapi/mc/ActorDefinitionAttribute.hpp similarity index 95% rename from LiteLoader/Header/MC/ActorDefinitionAttribute.hpp rename to LiteLoader/include/llapi/mc/ActorDefinitionAttribute.hpp index ae13be2..e2a2e27 100644 --- a/LiteLoader/Header/MC/ActorDefinitionAttribute.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinitionAttribute.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDefinitionDescriptor.hpp b/LiteLoader/include/llapi/mc/ActorDefinitionDescriptor.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorDefinitionDescriptor.hpp rename to LiteLoader/include/llapi/mc/ActorDefinitionDescriptor.hpp index 1222960..5263dc4 100644 --- a/LiteLoader/Header/MC/ActorDefinitionDescriptor.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinitionDescriptor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDefinitionDiffList.hpp b/LiteLoader/include/llapi/mc/ActorDefinitionDiffList.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorDefinitionDiffList.hpp rename to LiteLoader/include/llapi/mc/ActorDefinitionDiffList.hpp index fcdcf7d..9aa7f40 100644 --- a/LiteLoader/Header/MC/ActorDefinitionDiffList.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinitionDiffList.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDefinitionEventSubcomponent.hpp b/LiteLoader/include/llapi/mc/ActorDefinitionEventSubcomponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorDefinitionEventSubcomponent.hpp rename to LiteLoader/include/llapi/mc/ActorDefinitionEventSubcomponent.hpp index ee7c8ec..cbf446d 100644 --- a/LiteLoader/Header/MC/ActorDefinitionEventSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinitionEventSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorDefinitionGroup.hpp b/LiteLoader/include/llapi/mc/ActorDefinitionGroup.hpp similarity index 99% rename from LiteLoader/Header/MC/ActorDefinitionGroup.hpp rename to LiteLoader/include/llapi/mc/ActorDefinitionGroup.hpp index 55d6e23..3735d79 100644 --- a/LiteLoader/Header/MC/ActorDefinitionGroup.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinitionGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorDefinitionIdentifier.hpp b/LiteLoader/include/llapi/mc/ActorDefinitionIdentifier.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorDefinitionIdentifier.hpp rename to LiteLoader/include/llapi/mc/ActorDefinitionIdentifier.hpp index bcfeb13..b34a2db 100644 --- a/LiteLoader/Header/MC/ActorDefinitionIdentifier.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinitionIdentifier.hpp @@ -1,10 +1,10 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA -#include "MC/HashedString.hpp" +#include "HashedString.hpp" #undef BEFORE_EXTRA struct ActorDefinitionIdentifier { diff --git a/LiteLoader/Header/MC/ActorDefinitionPtr.hpp b/LiteLoader/include/llapi/mc/ActorDefinitionPtr.hpp similarity index 95% rename from LiteLoader/Header/MC/ActorDefinitionPtr.hpp rename to LiteLoader/include/llapi/mc/ActorDefinitionPtr.hpp index dc2849b..8d996d3 100644 --- a/LiteLoader/Header/MC/ActorDefinitionPtr.hpp +++ b/LiteLoader/include/llapi/mc/ActorDefinitionPtr.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorEventCoordinator.hpp b/LiteLoader/include/llapi/mc/ActorEventCoordinator.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorEventCoordinator.hpp rename to LiteLoader/include/llapi/mc/ActorEventCoordinator.hpp index da32284..2c8c01c 100644 --- a/LiteLoader/Header/MC/ActorEventCoordinator.hpp +++ b/LiteLoader/include/llapi/mc/ActorEventCoordinator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorEventListener.hpp b/LiteLoader/include/llapi/mc/ActorEventListener.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorEventListener.hpp rename to LiteLoader/include/llapi/mc/ActorEventListener.hpp index e83fd0e..6bd40cf 100644 --- a/LiteLoader/Header/MC/ActorEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ActorEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorEventPacket.hpp b/LiteLoader/include/llapi/mc/ActorEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorEventPacket.hpp rename to LiteLoader/include/llapi/mc/ActorEventPacket.hpp index 68f19ee..e423d87 100644 --- a/LiteLoader/Header/MC/ActorEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/ActorEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorFactory.hpp b/LiteLoader/include/llapi/mc/ActorFactory.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorFactory.hpp rename to LiteLoader/include/llapi/mc/ActorFactory.hpp index baf839d..e1ed909 100644 --- a/LiteLoader/Header/MC/ActorFactory.hpp +++ b/LiteLoader/include/llapi/mc/ActorFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorFactoryData.hpp b/LiteLoader/include/llapi/mc/ActorFactoryData.hpp similarity index 95% rename from LiteLoader/Header/MC/ActorFactoryData.hpp rename to LiteLoader/include/llapi/mc/ActorFactoryData.hpp index e99fc35..51530ad 100644 --- a/LiteLoader/Header/MC/ActorFactoryData.hpp +++ b/LiteLoader/include/llapi/mc/ActorFactoryData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorFallPacket.hpp b/LiteLoader/include/llapi/mc/ActorFallPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorFallPacket.hpp rename to LiteLoader/include/llapi/mc/ActorFallPacket.hpp index 969255f..1ca9488 100644 --- a/LiteLoader/Header/MC/ActorFallPacket.hpp +++ b/LiteLoader/include/llapi/mc/ActorFallPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorFilterGroup.hpp b/LiteLoader/include/llapi/mc/ActorFilterGroup.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorFilterGroup.hpp rename to LiteLoader/include/llapi/mc/ActorFilterGroup.hpp index fbc4b8e..07f229f 100644 --- a/LiteLoader/Header/MC/ActorFilterGroup.hpp +++ b/LiteLoader/include/llapi/mc/ActorFilterGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterGroup.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasAbilityTest.hpp b/LiteLoader/include/llapi/mc/ActorHasAbilityTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorHasAbilityTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasAbilityTest.hpp index 54273d1..1e3b04c 100644 --- a/LiteLoader/Header/MC/ActorHasAbilityTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasAbilityTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasComponentTest.hpp b/LiteLoader/include/llapi/mc/ActorHasComponentTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorHasComponentTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasComponentTest.hpp index d66455c..25ed4fd 100644 --- a/LiteLoader/Header/MC/ActorHasComponentTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasComponentTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasContainerOpenTest.hpp b/LiteLoader/include/llapi/mc/ActorHasContainerOpenTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorHasContainerOpenTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasContainerOpenTest.hpp index 60401ef..562fb5f 100644 --- a/LiteLoader/Header/MC/ActorHasContainerOpenTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasContainerOpenTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasDamageTest.hpp b/LiteLoader/include/llapi/mc/ActorHasDamageTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorHasDamageTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasDamageTest.hpp index 86fefe0..79c9467 100644 --- a/LiteLoader/Header/MC/ActorHasDamageTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasDamageTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasEquipmentTest.hpp b/LiteLoader/include/llapi/mc/ActorHasEquipmentTest.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorHasEquipmentTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasEquipmentTest.hpp index 156a590..d20f2f9 100644 --- a/LiteLoader/Header/MC/ActorHasEquipmentTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasEquipmentTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasMobEffect.hpp b/LiteLoader/include/llapi/mc/ActorHasMobEffect.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorHasMobEffect.hpp rename to LiteLoader/include/llapi/mc/ActorHasMobEffect.hpp index 040af89..99f2414 100644 --- a/LiteLoader/Header/MC/ActorHasMobEffect.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasMobEffect.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasRangedWeaponTest.hpp b/LiteLoader/include/llapi/mc/ActorHasRangedWeaponTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorHasRangedWeaponTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasRangedWeaponTest.hpp index 39c08c0..9f2c1d5 100644 --- a/LiteLoader/Header/MC/ActorHasRangedWeaponTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasRangedWeaponTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasTagTest.hpp b/LiteLoader/include/llapi/mc/ActorHasTagTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorHasTagTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasTagTest.hpp index 238786e..99a5d30 100644 --- a/LiteLoader/Header/MC/ActorHasTagTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasTagTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorHasTargetTest.hpp b/LiteLoader/include/llapi/mc/ActorHasTargetTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorHasTargetTest.hpp rename to LiteLoader/include/llapi/mc/ActorHasTargetTest.hpp index e4df3d4..f610091 100644 --- a/LiteLoader/Header/MC/ActorHasTargetTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorHasTargetTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInCaravanTest.hpp b/LiteLoader/include/llapi/mc/ActorInCaravanTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInCaravanTest.hpp rename to LiteLoader/include/llapi/mc/ActorInCaravanTest.hpp index 1913cdb..db77fdc 100644 --- a/LiteLoader/Header/MC/ActorInCaravanTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInCaravanTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInCloudsTest.hpp b/LiteLoader/include/llapi/mc/ActorInCloudsTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInCloudsTest.hpp rename to LiteLoader/include/llapi/mc/ActorInCloudsTest.hpp index 1a435ae..d1d01aa 100644 --- a/LiteLoader/Header/MC/ActorInCloudsTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInCloudsTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInLavaTest.hpp b/LiteLoader/include/llapi/mc/ActorInLavaTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInLavaTest.hpp rename to LiteLoader/include/llapi/mc/ActorInLavaTest.hpp index c7db392..f64fc89 100644 --- a/LiteLoader/Header/MC/ActorInLavaTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInLavaTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInNetherTest.hpp b/LiteLoader/include/llapi/mc/ActorInNetherTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInNetherTest.hpp rename to LiteLoader/include/llapi/mc/ActorInNetherTest.hpp index 5cc9836..1ec2728 100644 --- a/LiteLoader/Header/MC/ActorInNetherTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInNetherTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInVillageTest.hpp b/LiteLoader/include/llapi/mc/ActorInVillageTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInVillageTest.hpp rename to LiteLoader/include/llapi/mc/ActorInVillageTest.hpp index 463f044..9ed0ad1 100644 --- a/LiteLoader/Header/MC/ActorInVillageTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInVillageTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInWaterOrRainTest.hpp b/LiteLoader/include/llapi/mc/ActorInWaterOrRainTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInWaterOrRainTest.hpp rename to LiteLoader/include/llapi/mc/ActorInWaterOrRainTest.hpp index 5638544..504987d 100644 --- a/LiteLoader/Header/MC/ActorInWaterOrRainTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInWaterOrRainTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInWaterTest.hpp b/LiteLoader/include/llapi/mc/ActorInWaterTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInWaterTest.hpp rename to LiteLoader/include/llapi/mc/ActorInWaterTest.hpp index 22b4496..07bb191 100644 --- a/LiteLoader/Header/MC/ActorInWaterTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInWaterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInWeatherTest.hpp b/LiteLoader/include/llapi/mc/ActorInWeatherTest.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorInWeatherTest.hpp rename to LiteLoader/include/llapi/mc/ActorInWeatherTest.hpp index 71418c8..3f47065 100644 --- a/LiteLoader/Header/MC/ActorInWeatherTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInWeatherTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInactivityTimerTest.hpp b/LiteLoader/include/llapi/mc/ActorInactivityTimerTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorInactivityTimerTest.hpp rename to LiteLoader/include/llapi/mc/ActorInactivityTimerTest.hpp index 29c51ad..7dd1f87 100644 --- a/LiteLoader/Header/MC/ActorInactivityTimerTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorInactivityTimerTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorInfo.hpp b/LiteLoader/include/llapi/mc/ActorInfo.hpp similarity index 94% rename from LiteLoader/Header/MC/ActorInfo.hpp rename to LiteLoader/include/llapi/mc/ActorInfo.hpp index 3307113..fce3273 100644 --- a/LiteLoader/Header/MC/ActorInfo.hpp +++ b/LiteLoader/include/llapi/mc/ActorInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorInfoRegistry.hpp b/LiteLoader/include/llapi/mc/ActorInfoRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorInfoRegistry.hpp rename to LiteLoader/include/llapi/mc/ActorInfoRegistry.hpp index b0b4760..f5a3d10 100644 --- a/LiteLoader/Header/MC/ActorInfoRegistry.hpp +++ b/LiteLoader/include/llapi/mc/ActorInfoRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorInteraction.hpp b/LiteLoader/include/llapi/mc/ActorInteraction.hpp similarity index 95% rename from LiteLoader/Header/MC/ActorInteraction.hpp rename to LiteLoader/include/llapi/mc/ActorInteraction.hpp index d8c8fab..a902d9c 100644 --- a/LiteLoader/Header/MC/ActorInteraction.hpp +++ b/LiteLoader/include/llapi/mc/ActorInteraction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorIsAvoidingMobsTest.hpp b/LiteLoader/include/llapi/mc/ActorIsAvoidingMobsTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsAvoidingMobsTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsAvoidingMobsTest.hpp index 98111cf..ac1e024 100644 --- a/LiteLoader/Header/MC/ActorIsAvoidingMobsTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsAvoidingMobsTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsClimbingTest.hpp b/LiteLoader/include/llapi/mc/ActorIsClimbingTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsClimbingTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsClimbingTest.hpp index b14cd06..f5bf52e 100644 --- a/LiteLoader/Header/MC/ActorIsClimbingTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsClimbingTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsColorTest.hpp b/LiteLoader/include/llapi/mc/ActorIsColorTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsColorTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsColorTest.hpp index 4a9b9f2..f953fb5 100644 --- a/LiteLoader/Header/MC/ActorIsColorTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsColorTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsFamilyTest.hpp b/LiteLoader/include/llapi/mc/ActorIsFamilyTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsFamilyTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsFamilyTest.hpp index bf6e8bf..fb772e4 100644 --- a/LiteLoader/Header/MC/ActorIsFamilyTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsFamilyTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsImmobileTest.hpp b/LiteLoader/include/llapi/mc/ActorIsImmobileTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsImmobileTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsImmobileTest.hpp index ab68b1a..00c6cc9 100644 --- a/LiteLoader/Header/MC/ActorIsImmobileTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsImmobileTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsLeashedTest.hpp b/LiteLoader/include/llapi/mc/ActorIsLeashedTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsLeashedTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsLeashedTest.hpp index 63daeda..8b7bf77 100644 --- a/LiteLoader/Header/MC/ActorIsLeashedTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsLeashedTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsLeashedToTest.hpp b/LiteLoader/include/llapi/mc/ActorIsLeashedToTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsLeashedToTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsLeashedToTest.hpp index 5ff2287..396f6b3 100644 --- a/LiteLoader/Header/MC/ActorIsLeashedToTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsLeashedToTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsMarkVariantTest.hpp b/LiteLoader/include/llapi/mc/ActorIsMarkVariantTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsMarkVariantTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsMarkVariantTest.hpp index 3d3d6d0..77104e3 100644 --- a/LiteLoader/Header/MC/ActorIsMarkVariantTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsMarkVariantTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsMovingTest.hpp b/LiteLoader/include/llapi/mc/ActorIsMovingTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsMovingTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsMovingTest.hpp index ae87702..32ac178 100644 --- a/LiteLoader/Header/MC/ActorIsMovingTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsMovingTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsOwnerTest.hpp b/LiteLoader/include/llapi/mc/ActorIsOwnerTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsOwnerTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsOwnerTest.hpp index 174f545..ee320a0 100644 --- a/LiteLoader/Header/MC/ActorIsOwnerTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsOwnerTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsPersistentTest.hpp b/LiteLoader/include/llapi/mc/ActorIsPersistentTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsPersistentTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsPersistentTest.hpp index 96bcad1..6e537f6 100644 --- a/LiteLoader/Header/MC/ActorIsPersistentTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsPersistentTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsRidingTest.hpp b/LiteLoader/include/llapi/mc/ActorIsRidingTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsRidingTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsRidingTest.hpp index 5d75be4..f7ce00a 100644 --- a/LiteLoader/Header/MC/ActorIsRidingTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsRidingTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsSkinIDTest.hpp b/LiteLoader/include/llapi/mc/ActorIsSkinIDTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsSkinIDTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsSkinIDTest.hpp index 67f6e34..e814811 100644 --- a/LiteLoader/Header/MC/ActorIsSkinIDTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsSkinIDTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsSleepingTest.hpp b/LiteLoader/include/llapi/mc/ActorIsSleepingTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsSleepingTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsSleepingTest.hpp index 35576b6..6899c34 100644 --- a/LiteLoader/Header/MC/ActorIsSleepingTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsSleepingTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsSneakingTest.hpp b/LiteLoader/include/llapi/mc/ActorIsSneakingTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsSneakingTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsSneakingTest.hpp index 7099610..76212a6 100644 --- a/LiteLoader/Header/MC/ActorIsSneakingTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsSneakingTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsTargetTest.hpp b/LiteLoader/include/llapi/mc/ActorIsTargetTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsTargetTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsTargetTest.hpp index ccab613..6341a2f 100644 --- a/LiteLoader/Header/MC/ActorIsTargetTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsTargetTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsVariantTest.hpp b/LiteLoader/include/llapi/mc/ActorIsVariantTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsVariantTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsVariantTest.hpp index a32a0e2..d2975ec 100644 --- a/LiteLoader/Header/MC/ActorIsVariantTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsVariantTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorIsVisibleTest.hpp b/LiteLoader/include/llapi/mc/ActorIsVisibleTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorIsVisibleTest.hpp rename to LiteLoader/include/llapi/mc/ActorIsVisibleTest.hpp index de297d4..b45c24b 100644 --- a/LiteLoader/Header/MC/ActorIsVisibleTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorIsVisibleTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorLegacySaveConverter.hpp b/LiteLoader/include/llapi/mc/ActorLegacySaveConverter.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorLegacySaveConverter.hpp rename to LiteLoader/include/llapi/mc/ActorLegacySaveConverter.hpp index 39cf172..30eb01a 100644 --- a/LiteLoader/Header/MC/ActorLegacySaveConverter.hpp +++ b/LiteLoader/include/llapi/mc/ActorLegacySaveConverter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorMapping.hpp b/LiteLoader/include/llapi/mc/ActorMapping.hpp similarity index 95% rename from LiteLoader/Header/MC/ActorMapping.hpp rename to LiteLoader/include/llapi/mc/ActorMapping.hpp index bbe76e6..4e0ca9f 100644 --- a/LiteLoader/Header/MC/ActorMapping.hpp +++ b/LiteLoader/include/llapi/mc/ActorMapping.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorOnGroundTest.hpp b/LiteLoader/include/llapi/mc/ActorOnGroundTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorOnGroundTest.hpp rename to LiteLoader/include/llapi/mc/ActorOnGroundTest.hpp index b50bed9..da34247 100644 --- a/LiteLoader/Header/MC/ActorOnGroundTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorOnGroundTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorOnLadderTest.hpp b/LiteLoader/include/llapi/mc/ActorOnLadderTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorOnLadderTest.hpp rename to LiteLoader/include/llapi/mc/ActorOnLadderTest.hpp index 8700cea..22fb7f8 100644 --- a/LiteLoader/Header/MC/ActorOnLadderTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorOnLadderTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorParticleEffectEvent.hpp b/LiteLoader/include/llapi/mc/ActorParticleEffectEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorParticleEffectEvent.hpp rename to LiteLoader/include/llapi/mc/ActorParticleEffectEvent.hpp index 7f94af2..1c51518 100644 --- a/LiteLoader/Header/MC/ActorParticleEffectEvent.hpp +++ b/LiteLoader/include/llapi/mc/ActorParticleEffectEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorPickRequestPacket.hpp b/LiteLoader/include/llapi/mc/ActorPickRequestPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorPickRequestPacket.hpp rename to LiteLoader/include/llapi/mc/ActorPickRequestPacket.hpp index e235056..63d67d4 100644 --- a/LiteLoader/Header/MC/ActorPickRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/ActorPickRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorPlacerItem.hpp b/LiteLoader/include/llapi/mc/ActorPlacerItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorPlacerItem.hpp rename to LiteLoader/include/llapi/mc/ActorPlacerItem.hpp index 230191c..0d2e7f7 100644 --- a/LiteLoader/Header/MC/ActorPlacerItem.hpp +++ b/LiteLoader/include/llapi/mc/ActorPlacerItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorRandomChanceTest.hpp b/LiteLoader/include/llapi/mc/ActorRandomChanceTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorRandomChanceTest.hpp rename to LiteLoader/include/llapi/mc/ActorRandomChanceTest.hpp index 4a1d5e7..7f44ebb 100644 --- a/LiteLoader/Header/MC/ActorRandomChanceTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorRandomChanceTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorRiderCountTest.hpp b/LiteLoader/include/llapi/mc/ActorRiderCountTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorRiderCountTest.hpp rename to LiteLoader/include/llapi/mc/ActorRiderCountTest.hpp index 01a0cf5..3acd1f7 100644 --- a/LiteLoader/Header/MC/ActorRiderCountTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorRiderCountTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorServerCommandOrigin.hpp b/LiteLoader/include/llapi/mc/ActorServerCommandOrigin.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorServerCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/ActorServerCommandOrigin.hpp index c0e823c..6cd6dfc 100644 --- a/LiteLoader/Header/MC/ActorServerCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/ActorServerCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "ActorCommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/ActorSkeletalAnimation.hpp b/LiteLoader/include/llapi/mc/ActorSkeletalAnimation.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorSkeletalAnimation.hpp rename to LiteLoader/include/llapi/mc/ActorSkeletalAnimation.hpp index cfcbb13..f493589 100644 --- a/LiteLoader/Header/MC/ActorSkeletalAnimation.hpp +++ b/LiteLoader/include/llapi/mc/ActorSkeletalAnimation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorSkeletalAnimationPlayer.hpp b/LiteLoader/include/llapi/mc/ActorSkeletalAnimationPlayer.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorSkeletalAnimationPlayer.hpp rename to LiteLoader/include/llapi/mc/ActorSkeletalAnimationPlayer.hpp index 312d797..26c599c 100644 --- a/LiteLoader/Header/MC/ActorSkeletalAnimationPlayer.hpp +++ b/LiteLoader/include/llapi/mc/ActorSkeletalAnimationPlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorSkeletalAnimationPtr.hpp b/LiteLoader/include/llapi/mc/ActorSkeletalAnimationPtr.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorSkeletalAnimationPtr.hpp rename to LiteLoader/include/llapi/mc/ActorSkeletalAnimationPtr.hpp index 084d477..070b60c 100644 --- a/LiteLoader/Header/MC/ActorSkeletalAnimationPtr.hpp +++ b/LiteLoader/include/llapi/mc/ActorSkeletalAnimationPtr.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorSpawnRuleBase.hpp b/LiteLoader/include/llapi/mc/ActorSpawnRuleBase.hpp similarity index 98% rename from LiteLoader/Header/MC/ActorSpawnRuleBase.hpp rename to LiteLoader/include/llapi/mc/ActorSpawnRuleBase.hpp index acd2533..ce6e5cb 100644 --- a/LiteLoader/Header/MC/ActorSpawnRuleBase.hpp +++ b/LiteLoader/include/llapi/mc/ActorSpawnRuleBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorSpawnRuleGroup.hpp b/LiteLoader/include/llapi/mc/ActorSpawnRuleGroup.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorSpawnRuleGroup.hpp rename to LiteLoader/include/llapi/mc/ActorSpawnRuleGroup.hpp index f15481a..38c8ede 100644 --- a/LiteLoader/Header/MC/ActorSpawnRuleGroup.hpp +++ b/LiteLoader/include/llapi/mc/ActorSpawnRuleGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorSurfaceMobTest.hpp b/LiteLoader/include/llapi/mc/ActorSurfaceMobTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorSurfaceMobTest.hpp rename to LiteLoader/include/llapi/mc/ActorSurfaceMobTest.hpp index bc794e4..ac99dc9 100644 --- a/LiteLoader/Header/MC/ActorSurfaceMobTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorSurfaceMobTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorTargetFilter.hpp b/LiteLoader/include/llapi/mc/ActorTargetFilter.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorTargetFilter.hpp rename to LiteLoader/include/llapi/mc/ActorTargetFilter.hpp index d341fc2..beb699e 100644 --- a/LiteLoader/Header/MC/ActorTargetFilter.hpp +++ b/LiteLoader/include/llapi/mc/ActorTargetFilter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorTerrainInterlockData.hpp b/LiteLoader/include/llapi/mc/ActorTerrainInterlockData.hpp similarity index 97% rename from LiteLoader/Header/MC/ActorTerrainInterlockData.hpp rename to LiteLoader/include/llapi/mc/ActorTerrainInterlockData.hpp index 9603da6..57f5585 100644 --- a/LiteLoader/Header/MC/ActorTerrainInterlockData.hpp +++ b/LiteLoader/include/llapi/mc/ActorTerrainInterlockData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ActorTrustsSubjectTest.hpp b/LiteLoader/include/llapi/mc/ActorTrustsSubjectTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorTrustsSubjectTest.hpp rename to LiteLoader/include/llapi/mc/ActorTrustsSubjectTest.hpp index e9593f0..0a3bf5c 100644 --- a/LiteLoader/Header/MC/ActorTrustsSubjectTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorTrustsSubjectTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorUndergroundTest.hpp b/LiteLoader/include/llapi/mc/ActorUndergroundTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorUndergroundTest.hpp rename to LiteLoader/include/llapi/mc/ActorUndergroundTest.hpp index b490f8a..32e5f82 100644 --- a/LiteLoader/Header/MC/ActorUndergroundTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorUndergroundTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorUnderwaterTest.hpp b/LiteLoader/include/llapi/mc/ActorUnderwaterTest.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorUnderwaterTest.hpp rename to LiteLoader/include/llapi/mc/ActorUnderwaterTest.hpp index 7a34481..d7eb2b3 100644 --- a/LiteLoader/Header/MC/ActorUnderwaterTest.hpp +++ b/LiteLoader/include/llapi/mc/ActorUnderwaterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ActorUniqueID.hpp b/LiteLoader/include/llapi/mc/ActorUniqueID.hpp similarity index 96% rename from LiteLoader/Header/MC/ActorUniqueID.hpp rename to LiteLoader/include/llapi/mc/ActorUniqueID.hpp index e7b8176..d97000d 100644 --- a/LiteLoader/Header/MC/ActorUniqueID.hpp +++ b/LiteLoader/include/llapi/mc/ActorUniqueID.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddActorBasePacket.hpp b/LiteLoader/include/llapi/mc/AddActorBasePacket.hpp similarity index 95% rename from LiteLoader/Header/MC/AddActorBasePacket.hpp rename to LiteLoader/include/llapi/mc/AddActorBasePacket.hpp index c5f9f4a..bd9e401 100644 --- a/LiteLoader/Header/MC/AddActorBasePacket.hpp +++ b/LiteLoader/include/llapi/mc/AddActorBasePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddActorPacket.hpp b/LiteLoader/include/llapi/mc/AddActorPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/AddActorPacket.hpp rename to LiteLoader/include/llapi/mc/AddActorPacket.hpp index 25029f7..956ee03 100644 --- a/LiteLoader/Header/MC/AddActorPacket.hpp +++ b/LiteLoader/include/llapi/mc/AddActorPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddBehaviorTreePacket.hpp b/LiteLoader/include/llapi/mc/AddBehaviorTreePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/AddBehaviorTreePacket.hpp rename to LiteLoader/include/llapi/mc/AddBehaviorTreePacket.hpp index 99402c3..6ec940b 100644 --- a/LiteLoader/Header/MC/AddBehaviorTreePacket.hpp +++ b/LiteLoader/include/llapi/mc/AddBehaviorTreePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddEntityPacket.hpp b/LiteLoader/include/llapi/mc/AddEntityPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/AddEntityPacket.hpp rename to LiteLoader/include/llapi/mc/AddEntityPacket.hpp index 4b00702..882ad54 100644 --- a/LiteLoader/Header/MC/AddEntityPacket.hpp +++ b/LiteLoader/include/llapi/mc/AddEntityPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddItemActorPacket.hpp b/LiteLoader/include/llapi/mc/AddItemActorPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/AddItemActorPacket.hpp rename to LiteLoader/include/llapi/mc/AddItemActorPacket.hpp index 8e9931f..adf2417 100644 --- a/LiteLoader/Header/MC/AddItemActorPacket.hpp +++ b/LiteLoader/include/llapi/mc/AddItemActorPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddOceanTemperatureLayer.hpp b/LiteLoader/include/llapi/mc/AddOceanTemperatureLayer.hpp similarity index 96% rename from LiteLoader/Header/MC/AddOceanTemperatureLayer.hpp rename to LiteLoader/include/llapi/mc/AddOceanTemperatureLayer.hpp index 3c8c677..1ca70be 100644 --- a/LiteLoader/Header/MC/AddOceanTemperatureLayer.hpp +++ b/LiteLoader/include/llapi/mc/AddOceanTemperatureLayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddPaintingPacket.hpp b/LiteLoader/include/llapi/mc/AddPaintingPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/AddPaintingPacket.hpp rename to LiteLoader/include/llapi/mc/AddPaintingPacket.hpp index 58d2346..fcc3ca1 100644 --- a/LiteLoader/Header/MC/AddPaintingPacket.hpp +++ b/LiteLoader/include/llapi/mc/AddPaintingPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddPlayerPacket.hpp b/LiteLoader/include/llapi/mc/AddPlayerPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/AddPlayerPacket.hpp rename to LiteLoader/include/llapi/mc/AddPlayerPacket.hpp index 4e6230b..2e80085 100644 --- a/LiteLoader/Header/MC/AddPlayerPacket.hpp +++ b/LiteLoader/include/llapi/mc/AddPlayerPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AddRiderComponent.hpp b/LiteLoader/include/llapi/mc/AddRiderComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/AddRiderComponent.hpp rename to LiteLoader/include/llapi/mc/AddRiderComponent.hpp index 918765a..e22c19e 100644 --- a/LiteLoader/Header/MC/AddRiderComponent.hpp +++ b/LiteLoader/include/llapi/mc/AddRiderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AdmireItemComponent.hpp b/LiteLoader/include/llapi/mc/AdmireItemComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/AdmireItemComponent.hpp rename to LiteLoader/include/llapi/mc/AdmireItemComponent.hpp index 2e9f08d..e3a6248 100644 --- a/LiteLoader/Header/MC/AdmireItemComponent.hpp +++ b/LiteLoader/include/llapi/mc/AdmireItemComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AdmireItemDefinition.hpp b/LiteLoader/include/llapi/mc/AdmireItemDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/AdmireItemDefinition.hpp rename to LiteLoader/include/llapi/mc/AdmireItemDefinition.hpp index 58b9cbf..b74c456 100644 --- a/LiteLoader/Header/MC/AdmireItemDefinition.hpp +++ b/LiteLoader/include/llapi/mc/AdmireItemDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AdmireItemGoal.hpp b/LiteLoader/include/llapi/mc/AdmireItemGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/AdmireItemGoal.hpp rename to LiteLoader/include/llapi/mc/AdmireItemGoal.hpp index ee47b65..60ff0c6 100644 --- a/LiteLoader/Header/MC/AdmireItemGoal.hpp +++ b/LiteLoader/include/llapi/mc/AdmireItemGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AdventureSettingsPacket.hpp b/LiteLoader/include/llapi/mc/AdventureSettingsPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/AdventureSettingsPacket.hpp rename to LiteLoader/include/llapi/mc/AdventureSettingsPacket.hpp index 76c5264..1f5fddd 100644 --- a/LiteLoader/Header/MC/AdventureSettingsPacket.hpp +++ b/LiteLoader/include/llapi/mc/AdventureSettingsPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AgeableComponent.hpp b/LiteLoader/include/llapi/mc/AgeableComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/AgeableComponent.hpp rename to LiteLoader/include/llapi/mc/AgeableComponent.hpp index b57e1ce..08df6ba 100644 --- a/LiteLoader/Header/MC/AgeableComponent.hpp +++ b/LiteLoader/include/llapi/mc/AgeableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AgeableDefinition.hpp b/LiteLoader/include/llapi/mc/AgeableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/AgeableDefinition.hpp rename to LiteLoader/include/llapi/mc/AgeableDefinition.hpp index ab25044..e4aab22 100644 --- a/LiteLoader/Header/MC/AgeableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/AgeableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AgeableSystem.hpp b/LiteLoader/include/llapi/mc/AgeableSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/AgeableSystem.hpp rename to LiteLoader/include/llapi/mc/AgeableSystem.hpp index dd4cf06..d08bc12 100644 --- a/LiteLoader/Header/MC/AgeableSystem.hpp +++ b/LiteLoader/include/llapi/mc/AgeableSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Agent.hpp b/LiteLoader/include/llapi/mc/Agent.hpp similarity index 99% rename from LiteLoader/Header/MC/Agent.hpp rename to LiteLoader/include/llapi/mc/Agent.hpp index f9dedd4..3554802 100644 --- a/LiteLoader/Header/MC/Agent.hpp +++ b/LiteLoader/include/llapi/mc/Agent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/AgentBodyControl.hpp b/LiteLoader/include/llapi/mc/AgentBodyControl.hpp similarity index 95% rename from LiteLoader/Header/MC/AgentBodyControl.hpp rename to LiteLoader/include/llapi/mc/AgentBodyControl.hpp index f19ec6c..1a0defa 100644 --- a/LiteLoader/Header/MC/AgentBodyControl.hpp +++ b/LiteLoader/include/llapi/mc/AgentBodyControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AgentCommand.hpp b/LiteLoader/include/llapi/mc/AgentCommand.hpp similarity index 98% rename from LiteLoader/Header/MC/AgentCommand.hpp rename to LiteLoader/include/llapi/mc/AgentCommand.hpp index 382996a..c4f2f72 100644 --- a/LiteLoader/Header/MC/AgentCommand.hpp +++ b/LiteLoader/include/llapi/mc/AgentCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AgentCommandExecutionGoal.hpp b/LiteLoader/include/llapi/mc/AgentCommandExecutionGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/AgentCommandExecutionGoal.hpp rename to LiteLoader/include/llapi/mc/AgentCommandExecutionGoal.hpp index 8c7b414..c3268e5 100644 --- a/LiteLoader/Header/MC/AgentCommandExecutionGoal.hpp +++ b/LiteLoader/include/llapi/mc/AgentCommandExecutionGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AgentCommandSystem.hpp b/LiteLoader/include/llapi/mc/AgentCommandSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/AgentCommandSystem.hpp rename to LiteLoader/include/llapi/mc/AgentCommandSystem.hpp index 03ff49c..9b710e3 100644 --- a/LiteLoader/Header/MC/AgentCommandSystem.hpp +++ b/LiteLoader/include/llapi/mc/AgentCommandSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AgentLookControl.hpp b/LiteLoader/include/llapi/mc/AgentLookControl.hpp similarity index 96% rename from LiteLoader/Header/MC/AgentLookControl.hpp rename to LiteLoader/include/llapi/mc/AgentLookControl.hpp index 5e6bc20..2e93675 100644 --- a/LiteLoader/Header/MC/AgentLookControl.hpp +++ b/LiteLoader/include/llapi/mc/AgentLookControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AirBlock.hpp b/LiteLoader/include/llapi/mc/AirBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/AirBlock.hpp rename to LiteLoader/include/llapi/mc/AirBlock.hpp index eccf6eb..2b795dd 100644 --- a/LiteLoader/Header/MC/AirBlock.hpp +++ b/LiteLoader/include/llapi/mc/AirBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AirBlockItem.hpp b/LiteLoader/include/llapi/mc/AirBlockItem.hpp similarity index 97% rename from LiteLoader/Header/MC/AirBlockItem.hpp rename to LiteLoader/include/llapi/mc/AirBlockItem.hpp index f4bc43d..1950eff 100644 --- a/LiteLoader/Header/MC/AirBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/AirBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AllWorkerConfigurations.hpp b/LiteLoader/include/llapi/mc/AllWorkerConfigurations.hpp similarity index 95% rename from LiteLoader/Header/MC/AllWorkerConfigurations.hpp rename to LiteLoader/include/llapi/mc/AllWorkerConfigurations.hpp index bc7ee78..71d011a 100644 --- a/LiteLoader/Header/MC/AllWorkerConfigurations.hpp +++ b/LiteLoader/include/llapi/mc/AllWorkerConfigurations.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AmbientSoundIntervalDescription.hpp b/LiteLoader/include/llapi/mc/AmbientSoundIntervalDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/AmbientSoundIntervalDescription.hpp rename to LiteLoader/include/llapi/mc/AmbientSoundIntervalDescription.hpp index f308a81..2057610 100644 --- a/LiteLoader/Header/MC/AmbientSoundIntervalDescription.hpp +++ b/LiteLoader/include/llapi/mc/AmbientSoundIntervalDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AmphibiousMoveControl.hpp b/LiteLoader/include/llapi/mc/AmphibiousMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/AmphibiousMoveControl.hpp rename to LiteLoader/include/llapi/mc/AmphibiousMoveControl.hpp index 36daaa8..bfd16f9 100644 --- a/LiteLoader/Header/MC/AmphibiousMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/AmphibiousMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AmphibiousMoveControlDescription.hpp b/LiteLoader/include/llapi/mc/AmphibiousMoveControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/AmphibiousMoveControlDescription.hpp rename to LiteLoader/include/llapi/mc/AmphibiousMoveControlDescription.hpp index a86716c..b12b0ce 100644 --- a/LiteLoader/Header/MC/AmphibiousMoveControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/AmphibiousMoveControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Amplifier.hpp b/LiteLoader/include/llapi/mc/Amplifier.hpp similarity index 95% rename from LiteLoader/Header/MC/Amplifier.hpp rename to LiteLoader/include/llapi/mc/Amplifier.hpp index 2d37d88..e570fae 100644 --- a/LiteLoader/Header/MC/Amplifier.hpp +++ b/LiteLoader/include/llapi/mc/Amplifier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AngryComponent.hpp b/LiteLoader/include/llapi/mc/AngryComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/AngryComponent.hpp rename to LiteLoader/include/llapi/mc/AngryComponent.hpp index 442996b..53e5339 100644 --- a/LiteLoader/Header/MC/AngryComponent.hpp +++ b/LiteLoader/include/llapi/mc/AngryComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AngryDefinition.hpp b/LiteLoader/include/llapi/mc/AngryDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/AngryDefinition.hpp rename to LiteLoader/include/llapi/mc/AngryDefinition.hpp index 07a2240..6471db1 100644 --- a/LiteLoader/Header/MC/AngryDefinition.hpp +++ b/LiteLoader/include/llapi/mc/AngryDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AngrySystem.hpp b/LiteLoader/include/llapi/mc/AngrySystem.hpp similarity index 96% rename from LiteLoader/Header/MC/AngrySystem.hpp rename to LiteLoader/include/llapi/mc/AngrySystem.hpp index ca096b2..5f823de 100644 --- a/LiteLoader/Header/MC/AngrySystem.hpp +++ b/LiteLoader/include/llapi/mc/AngrySystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Animal.hpp b/LiteLoader/include/llapi/mc/Animal.hpp similarity index 98% rename from LiteLoader/Header/MC/Animal.hpp rename to LiteLoader/include/llapi/mc/Animal.hpp index c9bde86..df7e306 100644 --- a/LiteLoader/Header/MC/Animal.hpp +++ b/LiteLoader/include/llapi/mc/Animal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/AnimatePacket.hpp b/LiteLoader/include/llapi/mc/AnimatePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/AnimatePacket.hpp rename to LiteLoader/include/llapi/mc/AnimatePacket.hpp index 44e8ab9..8653357 100644 --- a/LiteLoader/Header/MC/AnimatePacket.hpp +++ b/LiteLoader/include/llapi/mc/AnimatePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnimatedImageData.hpp b/LiteLoader/include/llapi/mc/AnimatedImageData.hpp similarity index 95% rename from LiteLoader/Header/MC/AnimatedImageData.hpp rename to LiteLoader/include/llapi/mc/AnimatedImageData.hpp index 36039bd..67ef944 100644 --- a/LiteLoader/Header/MC/AnimatedImageData.hpp +++ b/LiteLoader/include/llapi/mc/AnimatedImageData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "persona.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnimationComponent.hpp b/LiteLoader/include/llapi/mc/AnimationComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/AnimationComponent.hpp rename to LiteLoader/include/llapi/mc/AnimationComponent.hpp index b58ed58..79e6b6d 100644 --- a/LiteLoader/Header/MC/AnimationComponent.hpp +++ b/LiteLoader/include/llapi/mc/AnimationComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnimationResourceDefinitionMap.hpp b/LiteLoader/include/llapi/mc/AnimationResourceDefinitionMap.hpp similarity index 96% rename from LiteLoader/Header/MC/AnimationResourceDefinitionMap.hpp rename to LiteLoader/include/llapi/mc/AnimationResourceDefinitionMap.hpp index 6952a38..e68a092 100644 --- a/LiteLoader/Header/MC/AnimationResourceDefinitionMap.hpp +++ b/LiteLoader/include/llapi/mc/AnimationResourceDefinitionMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnimationScriptsDescription.hpp b/LiteLoader/include/llapi/mc/AnimationScriptsDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/AnimationScriptsDescription.hpp rename to LiteLoader/include/llapi/mc/AnimationScriptsDescription.hpp index 64e088a..f8ade17 100644 --- a/LiteLoader/Header/MC/AnimationScriptsDescription.hpp +++ b/LiteLoader/include/llapi/mc/AnimationScriptsDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnimationsDescription.hpp b/LiteLoader/include/llapi/mc/AnimationsDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/AnimationsDescription.hpp rename to LiteLoader/include/llapi/mc/AnimationsDescription.hpp index d20f24c..80be0ea 100644 --- a/LiteLoader/Header/MC/AnimationsDescription.hpp +++ b/LiteLoader/include/llapi/mc/AnimationsDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnvilBlock.hpp b/LiteLoader/include/llapi/mc/AnvilBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/AnvilBlock.hpp rename to LiteLoader/include/llapi/mc/AnvilBlock.hpp index 276ff9a..3487943 100644 --- a/LiteLoader/Header/MC/AnvilBlock.hpp +++ b/LiteLoader/include/llapi/mc/AnvilBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnvilContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/AnvilContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/AnvilContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/AnvilContainerManagerModel.hpp index 5b2d18a..80e4c92 100644 --- a/LiteLoader/Header/MC/AnvilContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/AnvilContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AnvilDamagePacket.hpp b/LiteLoader/include/llapi/mc/AnvilDamagePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/AnvilDamagePacket.hpp rename to LiteLoader/include/llapi/mc/AnvilDamagePacket.hpp index 32c230a..b3ff0f0 100644 --- a/LiteLoader/Header/MC/AnvilDamagePacket.hpp +++ b/LiteLoader/include/llapi/mc/AnvilDamagePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AppConfigs.hpp b/LiteLoader/include/llapi/mc/AppConfigs.hpp similarity index 99% rename from LiteLoader/Header/MC/AppConfigs.hpp rename to LiteLoader/include/llapi/mc/AppConfigs.hpp index 513e5de..b399893 100644 --- a/LiteLoader/Header/MC/AppConfigs.hpp +++ b/LiteLoader/include/llapi/mc/AppConfigs.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AppPlatform.hpp b/LiteLoader/include/llapi/mc/AppPlatform.hpp similarity index 99% rename from LiteLoader/Header/MC/AppPlatform.hpp rename to LiteLoader/include/llapi/mc/AppPlatform.hpp index 336b3ab..b13a979 100644 --- a/LiteLoader/Header/MC/AppPlatform.hpp +++ b/LiteLoader/include/llapi/mc/AppPlatform.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AppPlatformListener.hpp b/LiteLoader/include/llapi/mc/AppPlatformListener.hpp similarity index 97% rename from LiteLoader/Header/MC/AppPlatformListener.hpp rename to LiteLoader/include/llapi/mc/AppPlatformListener.hpp index 63e78b5..6fd3784 100644 --- a/LiteLoader/Header/MC/AppPlatformListener.hpp +++ b/LiteLoader/include/llapi/mc/AppPlatformListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AppPlatformWindows.hpp b/LiteLoader/include/llapi/mc/AppPlatformWindows.hpp similarity index 98% rename from LiteLoader/Header/MC/AppPlatformWindows.hpp rename to LiteLoader/include/llapi/mc/AppPlatformWindows.hpp index e654913..b6c1459 100644 --- a/LiteLoader/Header/MC/AppPlatformWindows.hpp +++ b/LiteLoader/include/llapi/mc/AppPlatformWindows.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AppPlatform_win32.hpp b/LiteLoader/include/llapi/mc/AppPlatform_win32.hpp similarity index 99% rename from LiteLoader/Header/MC/AppPlatform_win32.hpp rename to LiteLoader/include/llapi/mc/AppPlatform_win32.hpp index 6f44713..8aa1abf 100644 --- a/LiteLoader/Header/MC/AppPlatform_win32.hpp +++ b/LiteLoader/include/llapi/mc/AppPlatform_win32.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ApplyItemBinding.hpp b/LiteLoader/include/llapi/mc/ApplyItemBinding.hpp similarity index 96% rename from LiteLoader/Header/MC/ApplyItemBinding.hpp rename to LiteLoader/include/llapi/mc/ApplyItemBinding.hpp index 8baae72..1b88258 100644 --- a/LiteLoader/Header/MC/ApplyItemBinding.hpp +++ b/LiteLoader/include/llapi/mc/ApplyItemBinding.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ApplyLegacyEntityBinding.hpp b/LiteLoader/include/llapi/mc/ApplyLegacyEntityBinding.hpp similarity index 96% rename from LiteLoader/Header/MC/ApplyLegacyEntityBinding.hpp rename to LiteLoader/include/llapi/mc/ApplyLegacyEntityBinding.hpp index 360b2d2..5f83d14 100644 --- a/LiteLoader/Header/MC/ApplyLegacyEntityBinding.hpp +++ b/LiteLoader/include/llapi/mc/ApplyLegacyEntityBinding.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ArbitraryBiomeComponent.hpp b/LiteLoader/include/llapi/mc/ArbitraryBiomeComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/ArbitraryBiomeComponent.hpp rename to LiteLoader/include/llapi/mc/ArbitraryBiomeComponent.hpp index 8dea2a8..57ec246 100644 --- a/LiteLoader/Header/MC/ArbitraryBiomeComponent.hpp +++ b/LiteLoader/include/llapi/mc/ArbitraryBiomeComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AreaAttackComponent.hpp b/LiteLoader/include/llapi/mc/AreaAttackComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/AreaAttackComponent.hpp rename to LiteLoader/include/llapi/mc/AreaAttackComponent.hpp index d824b8c..8d56087 100644 --- a/LiteLoader/Header/MC/AreaAttackComponent.hpp +++ b/LiteLoader/include/llapi/mc/AreaAttackComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AreaAttackDefinition.hpp b/LiteLoader/include/llapi/mc/AreaAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/AreaAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/AreaAttackDefinition.hpp index eda2fd1..0d03a06 100644 --- a/LiteLoader/Header/MC/AreaAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/AreaAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AreaAttackSystem.hpp b/LiteLoader/include/llapi/mc/AreaAttackSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/AreaAttackSystem.hpp rename to LiteLoader/include/llapi/mc/AreaAttackSystem.hpp index 6c3516d..656a057 100644 --- a/LiteLoader/Header/MC/AreaAttackSystem.hpp +++ b/LiteLoader/include/llapi/mc/AreaAttackSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AreaEffectCloud.hpp b/LiteLoader/include/llapi/mc/AreaEffectCloud.hpp similarity index 98% rename from LiteLoader/Header/MC/AreaEffectCloud.hpp rename to LiteLoader/include/llapi/mc/AreaEffectCloud.hpp index 6bcc646..8160a37 100644 --- a/LiteLoader/Header/MC/AreaEffectCloud.hpp +++ b/LiteLoader/include/llapi/mc/AreaEffectCloud.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ArmorItem.hpp b/LiteLoader/include/llapi/mc/ArmorItem.hpp similarity index 99% rename from LiteLoader/Header/MC/ArmorItem.hpp rename to LiteLoader/include/llapi/mc/ArmorItem.hpp index b834223..24587dc 100644 --- a/LiteLoader/Header/MC/ArmorItem.hpp +++ b/LiteLoader/include/llapi/mc/ArmorItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ArmorStand.hpp b/LiteLoader/include/llapi/mc/ArmorStand.hpp similarity index 98% rename from LiteLoader/Header/MC/ArmorStand.hpp rename to LiteLoader/include/llapi/mc/ArmorStand.hpp index 120f624..d156a4a 100644 --- a/LiteLoader/Header/MC/ArmorStand.hpp +++ b/LiteLoader/include/llapi/mc/ArmorStand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" @@ -12,7 +12,7 @@ class ArmorStand : public Mob { #define AFTER_EXTRA - +struct Pose; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_ARMORSTAND public: diff --git a/LiteLoader/Header/MC/ArmorStandItem.hpp b/LiteLoader/include/llapi/mc/ArmorStandItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ArmorStandItem.hpp rename to LiteLoader/include/llapi/mc/ArmorStandItem.hpp index 19f556f..3d927de 100644 --- a/LiteLoader/Header/MC/ArmorStandItem.hpp +++ b/LiteLoader/include/llapi/mc/ArmorStandItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Arrow.hpp b/LiteLoader/include/llapi/mc/Arrow.hpp similarity index 98% rename from LiteLoader/Header/MC/Arrow.hpp rename to LiteLoader/include/llapi/mc/Arrow.hpp index dd0cced..ddd28bf 100644 --- a/LiteLoader/Header/MC/Arrow.hpp +++ b/LiteLoader/include/llapi/mc/Arrow.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "AbstractArrow.hpp" diff --git a/LiteLoader/Header/MC/ArrowEffectSubcomponent.hpp b/LiteLoader/include/llapi/mc/ArrowEffectSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/ArrowEffectSubcomponent.hpp rename to LiteLoader/include/llapi/mc/ArrowEffectSubcomponent.hpp index e39a910..166ce8a 100644 --- a/LiteLoader/Header/MC/ArrowEffectSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/ArrowEffectSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "MobEffectSubcomponent.hpp" diff --git a/LiteLoader/Header/MC/ArrowItem.hpp b/LiteLoader/include/llapi/mc/ArrowItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ArrowItem.hpp rename to LiteLoader/include/llapi/mc/ArrowItem.hpp index 93665f0..cd5a439 100644 --- a/LiteLoader/Header/MC/ArrowItem.hpp +++ b/LiteLoader/include/llapi/mc/ArrowItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AsyncTracker.hpp b/LiteLoader/include/llapi/mc/AsyncTracker.hpp similarity index 95% rename from LiteLoader/Header/MC/AsyncTracker.hpp rename to LiteLoader/include/llapi/mc/AsyncTracker.hpp index b5c3ac4..d5495c8 100644 --- a/LiteLoader/Header/MC/AsyncTracker.hpp +++ b/LiteLoader/include/llapi/mc/AsyncTracker.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AsynchronousIPResolver.hpp b/LiteLoader/include/llapi/mc/AsynchronousIPResolver.hpp similarity index 95% rename from LiteLoader/Header/MC/AsynchronousIPResolver.hpp rename to LiteLoader/include/llapi/mc/AsynchronousIPResolver.hpp index a9407f3..537cc7a 100644 --- a/LiteLoader/Header/MC/AsynchronousIPResolver.hpp +++ b/LiteLoader/include/llapi/mc/AsynchronousIPResolver.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AtlasItemManager.hpp b/LiteLoader/include/llapi/mc/AtlasItemManager.hpp similarity index 95% rename from LiteLoader/Header/MC/AtlasItemManager.hpp rename to LiteLoader/include/llapi/mc/AtlasItemManager.hpp index 7138622..0b48b4a 100644 --- a/LiteLoader/Header/MC/AtlasItemManager.hpp +++ b/LiteLoader/include/llapi/mc/AtlasItemManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttackCooldownComponent.hpp b/LiteLoader/include/llapi/mc/AttackCooldownComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/AttackCooldownComponent.hpp rename to LiteLoader/include/llapi/mc/AttackCooldownComponent.hpp index cf111c6..5716f97 100644 --- a/LiteLoader/Header/MC/AttackCooldownComponent.hpp +++ b/LiteLoader/include/llapi/mc/AttackCooldownComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttackCooldownSystem.hpp b/LiteLoader/include/llapi/mc/AttackCooldownSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/AttackCooldownSystem.hpp rename to LiteLoader/include/llapi/mc/AttackCooldownSystem.hpp index 6a7b7a8..7753694 100644 --- a/LiteLoader/Header/MC/AttackCooldownSystem.hpp +++ b/LiteLoader/include/llapi/mc/AttackCooldownSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttackDamageMobEffect.hpp b/LiteLoader/include/llapi/mc/AttackDamageMobEffect.hpp similarity index 96% rename from LiteLoader/Header/MC/AttackDamageMobEffect.hpp rename to LiteLoader/include/llapi/mc/AttackDamageMobEffect.hpp index a12bbe3..b2d3858 100644 --- a/LiteLoader/Header/MC/AttackDamageMobEffect.hpp +++ b/LiteLoader/include/llapi/mc/AttackDamageMobEffect.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MobEffect.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttackDefinition.hpp b/LiteLoader/include/llapi/mc/AttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/AttackDefinition.hpp rename to LiteLoader/include/llapi/mc/AttackDefinition.hpp index 6a37ea7..6a61a2f 100644 --- a/LiteLoader/Header/MC/AttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/AttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/AttackDescription.hpp b/LiteLoader/include/llapi/mc/AttackDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/AttackDescription.hpp rename to LiteLoader/include/llapi/mc/AttackDescription.hpp index f2d0374..749ed45 100644 --- a/LiteLoader/Header/MC/AttackDescription.hpp +++ b/LiteLoader/include/llapi/mc/AttackDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttackNode.hpp b/LiteLoader/include/llapi/mc/AttackNode.hpp similarity index 95% rename from LiteLoader/Header/MC/AttackNode.hpp rename to LiteLoader/include/llapi/mc/AttackNode.hpp index 0804852..8c3b735 100644 --- a/LiteLoader/Header/MC/AttackNode.hpp +++ b/LiteLoader/include/llapi/mc/AttackNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Attribute.hpp b/LiteLoader/include/llapi/mc/Attribute.hpp similarity index 96% rename from LiteLoader/Header/MC/Attribute.hpp rename to LiteLoader/include/llapi/mc/Attribute.hpp index 41ba48e..8b8526e 100644 --- a/LiteLoader/Header/MC/Attribute.hpp +++ b/LiteLoader/include/llapi/mc/Attribute.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttributeBuff.hpp b/LiteLoader/include/llapi/mc/AttributeBuff.hpp similarity index 96% rename from LiteLoader/Header/MC/AttributeBuff.hpp rename to LiteLoader/include/llapi/mc/AttributeBuff.hpp index 6a41c9f..cceeb0c 100644 --- a/LiteLoader/Header/MC/AttributeBuff.hpp +++ b/LiteLoader/include/llapi/mc/AttributeBuff.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttributeCollection.hpp b/LiteLoader/include/llapi/mc/AttributeCollection.hpp similarity index 95% rename from LiteLoader/Header/MC/AttributeCollection.hpp rename to LiteLoader/include/llapi/mc/AttributeCollection.hpp index cd236d0..310325c 100644 --- a/LiteLoader/Header/MC/AttributeCollection.hpp +++ b/LiteLoader/include/llapi/mc/AttributeCollection.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttributeInstance.hpp b/LiteLoader/include/llapi/mc/AttributeInstance.hpp similarity index 99% rename from LiteLoader/Header/MC/AttributeInstance.hpp rename to LiteLoader/include/llapi/mc/AttributeInstance.hpp index ac047d1..e915c61 100644 --- a/LiteLoader/Header/MC/AttributeInstance.hpp +++ b/LiteLoader/include/llapi/mc/AttributeInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "AttributeInstanceDelegate.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AttributeInstanceDelegate.hpp b/LiteLoader/include/llapi/mc/AttributeInstanceDelegate.hpp similarity index 93% rename from LiteLoader/Header/MC/AttributeInstanceDelegate.hpp rename to LiteLoader/include/llapi/mc/AttributeInstanceDelegate.hpp index 928f318..9171146 100644 --- a/LiteLoader/Header/MC/AttributeInstanceDelegate.hpp +++ b/LiteLoader/include/llapi/mc/AttributeInstanceDelegate.hpp @@ -1,12 +1,13 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA class BaseAttributeMap; -struct AttributeInstanceHandle +class AttributeInstanceHandle { +public: unsigned int mAttributeID; BaseAttributeMap *mAttributeMap; }; diff --git a/LiteLoader/Header/MC/AttributeModifier.hpp b/LiteLoader/include/llapi/mc/AttributeModifier.hpp similarity index 96% rename from LiteLoader/Header/MC/AttributeModifier.hpp rename to LiteLoader/include/llapi/mc/AttributeModifier.hpp index fce7f93..5e0af78 100644 --- a/LiteLoader/Header/MC/AttributeModifier.hpp +++ b/LiteLoader/include/llapi/mc/AttributeModifier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AutomaticFeatureRules.hpp b/LiteLoader/include/llapi/mc/AutomaticFeatureRules.hpp similarity index 93% rename from LiteLoader/Header/MC/AutomaticFeatureRules.hpp rename to LiteLoader/include/llapi/mc/AutomaticFeatureRules.hpp index 2e186b6..e7b2415 100644 --- a/LiteLoader/Header/MC/AutomaticFeatureRules.hpp +++ b/LiteLoader/include/llapi/mc/AutomaticFeatureRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Automation.hpp b/LiteLoader/include/llapi/mc/Automation.hpp similarity index 95% rename from LiteLoader/Header/MC/Automation.hpp rename to LiteLoader/include/llapi/mc/Automation.hpp index df764c8..b2a2ae8 100644 --- a/LiteLoader/Header/MC/Automation.hpp +++ b/LiteLoader/include/llapi/mc/Automation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AutomationClientConnectPacket.hpp b/LiteLoader/include/llapi/mc/AutomationClientConnectPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/AutomationClientConnectPacket.hpp rename to LiteLoader/include/llapi/mc/AutomationClientConnectPacket.hpp index 3f25f5a..da88761 100644 --- a/LiteLoader/Header/MC/AutomationClientConnectPacket.hpp +++ b/LiteLoader/include/llapi/mc/AutomationClientConnectPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AutomationPlayerCommandOrigin.hpp b/LiteLoader/include/llapi/mc/AutomationPlayerCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/AutomationPlayerCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/AutomationPlayerCommandOrigin.hpp index dd2fb9c..b6c536e 100644 --- a/LiteLoader/Header/MC/AutomationPlayerCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/AutomationPlayerCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "PlayerCommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/AuxDataBlockItem.hpp b/LiteLoader/include/llapi/mc/AuxDataBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/AuxDataBlockItem.hpp rename to LiteLoader/include/llapi/mc/AuxDataBlockItem.hpp index a054767..7e766b7 100644 --- a/LiteLoader/Header/MC/AuxDataBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/AuxDataBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AvailableActorIdentifiersPacket.hpp b/LiteLoader/include/llapi/mc/AvailableActorIdentifiersPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/AvailableActorIdentifiersPacket.hpp rename to LiteLoader/include/llapi/mc/AvailableActorIdentifiersPacket.hpp index 58c9bbe..54f898b 100644 --- a/LiteLoader/Header/MC/AvailableActorIdentifiersPacket.hpp +++ b/LiteLoader/include/llapi/mc/AvailableActorIdentifiersPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AvailableCommandsPacket.hpp b/LiteLoader/include/llapi/mc/AvailableCommandsPacket.hpp similarity index 99% rename from LiteLoader/Header/MC/AvailableCommandsPacket.hpp rename to LiteLoader/include/llapi/mc/AvailableCommandsPacket.hpp index 0fe9535..546a007 100644 --- a/LiteLoader/Header/MC/AvailableCommandsPacket.hpp +++ b/LiteLoader/include/llapi/mc/AvailableCommandsPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AvoidBlockGoal.hpp b/LiteLoader/include/llapi/mc/AvoidBlockGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/AvoidBlockGoal.hpp rename to LiteLoader/include/llapi/mc/AvoidBlockGoal.hpp index 7989e51..0d0b8c3 100644 --- a/LiteLoader/Header/MC/AvoidBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/AvoidBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AvoidMobTypeDefinition.hpp b/LiteLoader/include/llapi/mc/AvoidMobTypeDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/AvoidMobTypeDefinition.hpp rename to LiteLoader/include/llapi/mc/AvoidMobTypeDefinition.hpp index eb60fff..6fd96bb 100644 --- a/LiteLoader/Header/MC/AvoidMobTypeDefinition.hpp +++ b/LiteLoader/include/llapi/mc/AvoidMobTypeDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/AvoidMobTypeGoal.hpp b/LiteLoader/include/llapi/mc/AvoidMobTypeGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/AvoidMobTypeGoal.hpp rename to LiteLoader/include/llapi/mc/AvoidMobTypeGoal.hpp index 0c363d0..0f2e7d4 100644 --- a/LiteLoader/Header/MC/AvoidMobTypeGoal.hpp +++ b/LiteLoader/include/llapi/mc/AvoidMobTypeGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BackgroundTask.hpp b/LiteLoader/include/llapi/mc/BackgroundTask.hpp similarity index 98% rename from LiteLoader/Header/MC/BackgroundTask.hpp rename to LiteLoader/include/llapi/mc/BackgroundTask.hpp index a101e6c..28e273b 100644 --- a/LiteLoader/Header/MC/BackgroundTask.hpp +++ b/LiteLoader/include/llapi/mc/BackgroundTask.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BackgroundTaskQueue.hpp b/LiteLoader/include/llapi/mc/BackgroundTaskQueue.hpp similarity index 96% rename from LiteLoader/Header/MC/BackgroundTaskQueue.hpp rename to LiteLoader/include/llapi/mc/BackgroundTaskQueue.hpp index eea28b4..9df0527 100644 --- a/LiteLoader/Header/MC/BackgroundTaskQueue.hpp +++ b/LiteLoader/include/llapi/mc/BackgroundTaskQueue.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BackgroundWorker.hpp b/LiteLoader/include/llapi/mc/BackgroundWorker.hpp similarity index 97% rename from LiteLoader/Header/MC/BackgroundWorker.hpp rename to LiteLoader/include/llapi/mc/BackgroundWorker.hpp index d61e2f6..e361ada 100644 --- a/LiteLoader/Header/MC/BackgroundWorker.hpp +++ b/LiteLoader/include/llapi/mc/BackgroundWorker.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BackwardsCompatTextureGroup.hpp b/LiteLoader/include/llapi/mc/BackwardsCompatTextureGroup.hpp similarity index 96% rename from LiteLoader/Header/MC/BackwardsCompatTextureGroup.hpp rename to LiteLoader/include/llapi/mc/BackwardsCompatTextureGroup.hpp index 589c00f..c0a4aa4 100644 --- a/LiteLoader/Header/MC/BackwardsCompatTextureGroup.hpp +++ b/LiteLoader/include/llapi/mc/BackwardsCompatTextureGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Balloon.hpp b/LiteLoader/include/llapi/mc/Balloon.hpp similarity index 98% rename from LiteLoader/Header/MC/Balloon.hpp rename to LiteLoader/include/llapi/mc/Balloon.hpp index 5665246..3029f4a 100644 --- a/LiteLoader/Header/MC/Balloon.hpp +++ b/LiteLoader/include/llapi/mc/Balloon.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BalloonComponent.hpp b/LiteLoader/include/llapi/mc/BalloonComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/BalloonComponent.hpp rename to LiteLoader/include/llapi/mc/BalloonComponent.hpp index a78683a..591caec 100644 --- a/LiteLoader/Header/MC/BalloonComponent.hpp +++ b/LiteLoader/include/llapi/mc/BalloonComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BalloonItem.hpp b/LiteLoader/include/llapi/mc/BalloonItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BalloonItem.hpp rename to LiteLoader/include/llapi/mc/BalloonItem.hpp index c9ea32f..2b8362b 100644 --- a/LiteLoader/Header/MC/BalloonItem.hpp +++ b/LiteLoader/include/llapi/mc/BalloonItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BalloonSystem.hpp b/LiteLoader/include/llapi/mc/BalloonSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BalloonSystem.hpp rename to LiteLoader/include/llapi/mc/BalloonSystem.hpp index 443ab20..d2aa039 100644 --- a/LiteLoader/Header/MC/BalloonSystem.hpp +++ b/LiteLoader/include/llapi/mc/BalloonSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BalloonableComponent.hpp b/LiteLoader/include/llapi/mc/BalloonableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BalloonableComponent.hpp rename to LiteLoader/include/llapi/mc/BalloonableComponent.hpp index 2bb6d81..6b34732 100644 --- a/LiteLoader/Header/MC/BalloonableComponent.hpp +++ b/LiteLoader/include/llapi/mc/BalloonableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BalloonableDefinition.hpp b/LiteLoader/include/llapi/mc/BalloonableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BalloonableDefinition.hpp rename to LiteLoader/include/llapi/mc/BalloonableDefinition.hpp index fd46470..d306b26 100644 --- a/LiteLoader/Header/MC/BalloonableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BalloonableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BambooBlock.hpp b/LiteLoader/include/llapi/mc/BambooBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BambooBlock.hpp rename to LiteLoader/include/llapi/mc/BambooBlock.hpp index 10af52f..f815c9d 100644 --- a/LiteLoader/Header/MC/BambooBlock.hpp +++ b/LiteLoader/include/llapi/mc/BambooBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BambooBlockItem.hpp b/LiteLoader/include/llapi/mc/BambooBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BambooBlockItem.hpp rename to LiteLoader/include/llapi/mc/BambooBlockItem.hpp index d210d93..aa90c5c 100644 --- a/LiteLoader/Header/MC/BambooBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/BambooBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BambooFeature.hpp b/LiteLoader/include/llapi/mc/BambooFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/BambooFeature.hpp rename to LiteLoader/include/llapi/mc/BambooFeature.hpp index bc1fbe0..5f871a3 100644 --- a/LiteLoader/Header/MC/BambooFeature.hpp +++ b/LiteLoader/include/llapi/mc/BambooFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BambooSapling.hpp b/LiteLoader/include/llapi/mc/BambooSapling.hpp similarity index 99% rename from LiteLoader/Header/MC/BambooSapling.hpp rename to LiteLoader/include/llapi/mc/BambooSapling.hpp index 0f7e897..9293936 100644 --- a/LiteLoader/Header/MC/BambooSapling.hpp +++ b/LiteLoader/include/llapi/mc/BambooSapling.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Sapling.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BannerAddPatternRecipe.hpp b/LiteLoader/include/llapi/mc/BannerAddPatternRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/BannerAddPatternRecipe.hpp rename to LiteLoader/include/llapi/mc/BannerAddPatternRecipe.hpp index aba200e..668f218 100644 --- a/LiteLoader/Header/MC/BannerAddPatternRecipe.hpp +++ b/LiteLoader/include/llapi/mc/BannerAddPatternRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BannerBlock.hpp b/LiteLoader/include/llapi/mc/BannerBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BannerBlock.hpp rename to LiteLoader/include/llapi/mc/BannerBlock.hpp index 85ecc53..af62760 100644 --- a/LiteLoader/Header/MC/BannerBlock.hpp +++ b/LiteLoader/include/llapi/mc/BannerBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BannerBlockActor.hpp b/LiteLoader/include/llapi/mc/BannerBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/BannerBlockActor.hpp rename to LiteLoader/include/llapi/mc/BannerBlockActor.hpp index 4495121..becc265 100644 --- a/LiteLoader/Header/MC/BannerBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BannerBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BannerDuplicateRecipe.hpp b/LiteLoader/include/llapi/mc/BannerDuplicateRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/BannerDuplicateRecipe.hpp rename to LiteLoader/include/llapi/mc/BannerDuplicateRecipe.hpp index b84f1cd..9f7fd16 100644 --- a/LiteLoader/Header/MC/BannerDuplicateRecipe.hpp +++ b/LiteLoader/include/llapi/mc/BannerDuplicateRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BannerItem.hpp b/LiteLoader/include/llapi/mc/BannerItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BannerItem.hpp rename to LiteLoader/include/llapi/mc/BannerItem.hpp index f0273d1..21e4e20 100644 --- a/LiteLoader/Header/MC/BannerItem.hpp +++ b/LiteLoader/include/llapi/mc/BannerItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BannerPattern.hpp b/LiteLoader/include/llapi/mc/BannerPattern.hpp similarity index 96% rename from LiteLoader/Header/MC/BannerPattern.hpp rename to LiteLoader/include/llapi/mc/BannerPattern.hpp index 4a76e64..9333fdd 100644 --- a/LiteLoader/Header/MC/BannerPattern.hpp +++ b/LiteLoader/include/llapi/mc/BannerPattern.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BannerPatternItem.hpp b/LiteLoader/include/llapi/mc/BannerPatternItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BannerPatternItem.hpp rename to LiteLoader/include/llapi/mc/BannerPatternItem.hpp index 10bd772..f03a311 100644 --- a/LiteLoader/Header/MC/BannerPatternItem.hpp +++ b/LiteLoader/include/llapi/mc/BannerPatternItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BarrelBlock.hpp b/LiteLoader/include/llapi/mc/BarrelBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/BarrelBlock.hpp rename to LiteLoader/include/llapi/mc/BarrelBlock.hpp index 9d8a46e..12779b7 100644 --- a/LiteLoader/Header/MC/BarrelBlock.hpp +++ b/LiteLoader/include/llapi/mc/BarrelBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BarrelBlockActor.hpp b/LiteLoader/include/llapi/mc/BarrelBlockActor.hpp similarity index 96% rename from LiteLoader/Header/MC/BarrelBlockActor.hpp rename to LiteLoader/include/llapi/mc/BarrelBlockActor.hpp index 17951f5..cfa3989 100644 --- a/LiteLoader/Header/MC/BarrelBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BarrelBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BarrierBlock.hpp b/LiteLoader/include/llapi/mc/BarrierBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/BarrierBlock.hpp rename to LiteLoader/include/llapi/mc/BarrierBlock.hpp index 9508a74..aa8ab5a 100644 --- a/LiteLoader/Header/MC/BarrierBlock.hpp +++ b/LiteLoader/include/llapi/mc/BarrierBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BarterComponent.hpp b/LiteLoader/include/llapi/mc/BarterComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/BarterComponent.hpp rename to LiteLoader/include/llapi/mc/BarterComponent.hpp index 61273e5..f691540 100644 --- a/LiteLoader/Header/MC/BarterComponent.hpp +++ b/LiteLoader/include/llapi/mc/BarterComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BarterDefinition.hpp b/LiteLoader/include/llapi/mc/BarterDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BarterDefinition.hpp rename to LiteLoader/include/llapi/mc/BarterDefinition.hpp index 15de372..c54e978 100644 --- a/LiteLoader/Header/MC/BarterDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BarterDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BarterGoal.hpp b/LiteLoader/include/llapi/mc/BarterGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/BarterGoal.hpp rename to LiteLoader/include/llapi/mc/BarterGoal.hpp index 90b5a8a..4dfd51f 100644 --- a/LiteLoader/Header/MC/BarterGoal.hpp +++ b/LiteLoader/include/llapi/mc/BarterGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BasaltColumnsFeature.hpp b/LiteLoader/include/llapi/mc/BasaltColumnsFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/BasaltColumnsFeature.hpp rename to LiteLoader/include/llapi/mc/BasaltColumnsFeature.hpp index 21c147f..19155f8 100644 --- a/LiteLoader/Header/MC/BasaltColumnsFeature.hpp +++ b/LiteLoader/include/llapi/mc/BasaltColumnsFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BasaltPillarFeature.hpp b/LiteLoader/include/llapi/mc/BasaltPillarFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/BasaltPillarFeature.hpp rename to LiteLoader/include/llapi/mc/BasaltPillarFeature.hpp index b9f6a1c..de16657 100644 --- a/LiteLoader/Header/MC/BasaltPillarFeature.hpp +++ b/LiteLoader/include/llapi/mc/BasaltPillarFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseAttributeMap.hpp b/LiteLoader/include/llapi/mc/BaseAttributeMap.hpp similarity index 96% rename from LiteLoader/Header/MC/BaseAttributeMap.hpp rename to LiteLoader/include/llapi/mc/BaseAttributeMap.hpp index e54992a..84f5458 100644 --- a/LiteLoader/Header/MC/BaseAttributeMap.hpp +++ b/LiteLoader/include/llapi/mc/BaseAttributeMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseCircuitComponent.hpp b/LiteLoader/include/llapi/mc/BaseCircuitComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/BaseCircuitComponent.hpp rename to LiteLoader/include/llapi/mc/BaseCircuitComponent.hpp index 0672ec8..6789a21 100644 --- a/LiteLoader/Header/MC/BaseCircuitComponent.hpp +++ b/LiteLoader/include/llapi/mc/BaseCircuitComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseCommandBlock.hpp b/LiteLoader/include/llapi/mc/BaseCommandBlock.hpp similarity index 97% rename from LiteLoader/Header/MC/BaseCommandBlock.hpp rename to LiteLoader/include/llapi/mc/BaseCommandBlock.hpp index 7460ff6..79e0469 100644 --- a/LiteLoader/Header/MC/BaseCommandBlock.hpp +++ b/LiteLoader/include/llapi/mc/BaseCommandBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseContainerMenu.hpp b/LiteLoader/include/llapi/mc/BaseContainerMenu.hpp similarity index 97% rename from LiteLoader/Header/MC/BaseContainerMenu.hpp rename to LiteLoader/include/llapi/mc/BaseContainerMenu.hpp index 968b5be..2271094 100644 --- a/LiteLoader/Header/MC/BaseContainerMenu.hpp +++ b/LiteLoader/include/llapi/mc/BaseContainerMenu.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseGamePackSlices.hpp b/LiteLoader/include/llapi/mc/BaseGamePackSlices.hpp similarity index 95% rename from LiteLoader/Header/MC/BaseGamePackSlices.hpp rename to LiteLoader/include/llapi/mc/BaseGamePackSlices.hpp index da52e5f..330097c 100644 --- a/LiteLoader/Header/MC/BaseGamePackSlices.hpp +++ b/LiteLoader/include/llapi/mc/BaseGamePackSlices.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseGameVersion.hpp b/LiteLoader/include/llapi/mc/BaseGameVersion.hpp similarity index 97% rename from LiteLoader/Header/MC/BaseGameVersion.hpp rename to LiteLoader/include/llapi/mc/BaseGameVersion.hpp index ad0584e..cc30f82 100644 --- a/LiteLoader/Header/MC/BaseGameVersion.hpp +++ b/LiteLoader/include/llapi/mc/BaseGameVersion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SemVersion.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseGameVersioning.hpp b/LiteLoader/include/llapi/mc/BaseGameVersioning.hpp similarity index 93% rename from LiteLoader/Header/MC/BaseGameVersioning.hpp rename to LiteLoader/include/llapi/mc/BaseGameVersioning.hpp index 1ecb57e..6e20e88 100644 --- a/LiteLoader/Header/MC/BaseGameVersioning.hpp +++ b/LiteLoader/include/llapi/mc/BaseGameVersioning.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseGoalDefinition.hpp b/LiteLoader/include/llapi/mc/BaseGoalDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BaseGoalDefinition.hpp rename to LiteLoader/include/llapi/mc/BaseGoalDefinition.hpp index 7e119ca..257ceb2 100644 --- a/LiteLoader/Header/MC/BaseGoalDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BaseGoalDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseMobSpawner.hpp b/LiteLoader/include/llapi/mc/BaseMobSpawner.hpp similarity index 97% rename from LiteLoader/Header/MC/BaseMobSpawner.hpp rename to LiteLoader/include/llapi/mc/BaseMobSpawner.hpp index a960be8..28d8160 100644 --- a/LiteLoader/Header/MC/BaseMobSpawner.hpp +++ b/LiteLoader/include/llapi/mc/BaseMobSpawner.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseMoveToBlockGoal.hpp b/LiteLoader/include/llapi/mc/BaseMoveToBlockGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/BaseMoveToBlockGoal.hpp rename to LiteLoader/include/llapi/mc/BaseMoveToBlockGoal.hpp index 355b405..0f37742 100644 --- a/LiteLoader/Header/MC/BaseMoveToBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/BaseMoveToBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseMoveToGoal.hpp b/LiteLoader/include/llapi/mc/BaseMoveToGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/BaseMoveToGoal.hpp rename to LiteLoader/include/llapi/mc/BaseMoveToGoal.hpp index 4908073..560d70d 100644 --- a/LiteLoader/Header/MC/BaseMoveToGoal.hpp +++ b/LiteLoader/include/llapi/mc/BaseMoveToGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BasePressurePlateBlock.hpp b/LiteLoader/include/llapi/mc/BasePressurePlateBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BasePressurePlateBlock.hpp rename to LiteLoader/include/llapi/mc/BasePressurePlateBlock.hpp index e3ce883..0ad6350 100644 --- a/LiteLoader/Header/MC/BasePressurePlateBlock.hpp +++ b/LiteLoader/include/llapi/mc/BasePressurePlateBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseRailBlock.hpp b/LiteLoader/include/llapi/mc/BaseRailBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BaseRailBlock.hpp rename to LiteLoader/include/llapi/mc/BaseRailBlock.hpp index 46f59ea..545b116 100644 --- a/LiteLoader/Header/MC/BaseRailBlock.hpp +++ b/LiteLoader/include/llapi/mc/BaseRailBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BaseRailTransporter.hpp b/LiteLoader/include/llapi/mc/BaseRailTransporter.hpp similarity index 97% rename from LiteLoader/Header/MC/BaseRailTransporter.hpp rename to LiteLoader/include/llapi/mc/BaseRailTransporter.hpp index 9cd328c..5c49be1 100644 --- a/LiteLoader/Header/MC/BaseRailTransporter.hpp +++ b/LiteLoader/include/llapi/mc/BaseRailTransporter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseCircuitComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BasicTimer.hpp b/LiteLoader/include/llapi/mc/BasicTimer.hpp similarity index 95% rename from LiteLoader/Header/MC/BasicTimer.hpp rename to LiteLoader/include/llapi/mc/BasicTimer.hpp index 46b5b36..624d490 100644 --- a/LiteLoader/Header/MC/BasicTimer.hpp +++ b/LiteLoader/include/llapi/mc/BasicTimer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BastionFeature.hpp b/LiteLoader/include/llapi/mc/BastionFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/BastionFeature.hpp rename to LiteLoader/include/llapi/mc/BastionFeature.hpp index ea536c0..a8ad290 100644 --- a/LiteLoader/Header/MC/BastionFeature.hpp +++ b/LiteLoader/include/llapi/mc/BastionFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BastionPiece.hpp b/LiteLoader/include/llapi/mc/BastionPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/BastionPiece.hpp rename to LiteLoader/include/llapi/mc/BastionPiece.hpp index 02bcd96..40b5615 100644 --- a/LiteLoader/Header/MC/BastionPiece.hpp +++ b/LiteLoader/include/llapi/mc/BastionPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PoolElementStructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BastionStart.hpp b/LiteLoader/include/llapi/mc/BastionStart.hpp similarity index 96% rename from LiteLoader/Header/MC/BastionStart.hpp rename to LiteLoader/include/llapi/mc/BastionStart.hpp index 54c0a12..6af97ab 100644 --- a/LiteLoader/Header/MC/BastionStart.hpp +++ b/LiteLoader/include/llapi/mc/BastionStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Bat.hpp b/LiteLoader/include/llapi/mc/Bat.hpp similarity index 98% rename from LiteLoader/Header/MC/Bat.hpp rename to LiteLoader/include/llapi/mc/Bat.hpp index 52aa2b0..3926cf6 100644 --- a/LiteLoader/Header/MC/Bat.hpp +++ b/LiteLoader/include/llapi/mc/Bat.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/BatchedNetworkPeer.hpp b/LiteLoader/include/llapi/mc/BatchedNetworkPeer.hpp similarity index 97% rename from LiteLoader/Header/MC/BatchedNetworkPeer.hpp rename to LiteLoader/include/llapi/mc/BatchedNetworkPeer.hpp index f00072c..bf118cf 100644 --- a/LiteLoader/Header/MC/BatchedNetworkPeer.hpp +++ b/LiteLoader/include/llapi/mc/BatchedNetworkPeer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetworkPeer.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeaconBlock.hpp b/LiteLoader/include/llapi/mc/BeaconBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BeaconBlock.hpp rename to LiteLoader/include/llapi/mc/BeaconBlock.hpp index 8404b9b..23a892d 100644 --- a/LiteLoader/Header/MC/BeaconBlock.hpp +++ b/LiteLoader/include/llapi/mc/BeaconBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeaconBlockActor.hpp b/LiteLoader/include/llapi/mc/BeaconBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/BeaconBlockActor.hpp rename to LiteLoader/include/llapi/mc/BeaconBlockActor.hpp index d59f21b..2414402 100644 --- a/LiteLoader/Header/MC/BeaconBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BeaconBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeaconContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/BeaconContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/BeaconContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/BeaconContainerManagerModel.hpp index 06a1dda..792a6c2 100644 --- a/LiteLoader/Header/MC/BeaconContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/BeaconContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LevelContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeardAndShaverDescription.hpp b/LiteLoader/include/llapi/mc/BeardAndShaverDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/BeardAndShaverDescription.hpp rename to LiteLoader/include/llapi/mc/BeardAndShaverDescription.hpp index 6f1b1dd..cf4c4c6 100644 --- a/LiteLoader/Header/MC/BeardAndShaverDescription.hpp +++ b/LiteLoader/include/llapi/mc/BeardAndShaverDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeardAndShaverStorage.hpp b/LiteLoader/include/llapi/mc/BeardAndShaverStorage.hpp similarity index 96% rename from LiteLoader/Header/MC/BeardAndShaverStorage.hpp rename to LiteLoader/include/llapi/mc/BeardAndShaverStorage.hpp index 945eca4..0c1d9e0 100644 --- a/LiteLoader/Header/MC/BeardAndShaverStorage.hpp +++ b/LiteLoader/include/llapi/mc/BeardAndShaverStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeardKernel.hpp b/LiteLoader/include/llapi/mc/BeardKernel.hpp similarity index 95% rename from LiteLoader/Header/MC/BeardKernel.hpp rename to LiteLoader/include/llapi/mc/BeardKernel.hpp index f08af7e..a23b2d4 100644 --- a/LiteLoader/Header/MC/BeardKernel.hpp +++ b/LiteLoader/include/llapi/mc/BeardKernel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedBlock.hpp b/LiteLoader/include/llapi/mc/BedBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BedBlock.hpp rename to LiteLoader/include/llapi/mc/BedBlock.hpp index bb3b746..1d699ff 100644 --- a/LiteLoader/Header/MC/BedBlock.hpp +++ b/LiteLoader/include/llapi/mc/BedBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedBlockActor.hpp b/LiteLoader/include/llapi/mc/BedBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/BedBlockActor.hpp rename to LiteLoader/include/llapi/mc/BedBlockActor.hpp index 9f83f94..728ce67 100644 --- a/LiteLoader/Header/MC/BedBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BedBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedItem.hpp b/LiteLoader/include/llapi/mc/BedItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BedItem.hpp rename to LiteLoader/include/llapi/mc/BedItem.hpp index bc58b83..9f6a226 100644 --- a/LiteLoader/Header/MC/BedItem.hpp +++ b/LiteLoader/include/llapi/mc/BedItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Bedrock.hpp b/LiteLoader/include/llapi/mc/Bedrock.hpp similarity index 98% rename from LiteLoader/Header/MC/Bedrock.hpp rename to LiteLoader/include/llapi/mc/Bedrock.hpp index 00c6d9e..9ace3a6 100644 --- a/LiteLoader/Header/MC/Bedrock.hpp +++ b/LiteLoader/include/llapi/mc/Bedrock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedrockBlock.hpp b/LiteLoader/include/llapi/mc/BedrockBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/BedrockBlock.hpp rename to LiteLoader/include/llapi/mc/BedrockBlock.hpp index 08ed53e..b457cc1 100644 --- a/LiteLoader/Header/MC/BedrockBlock.hpp +++ b/LiteLoader/include/llapi/mc/BedrockBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedrockBlockTypes.hpp b/LiteLoader/include/llapi/mc/BedrockBlockTypes.hpp similarity index 90% rename from LiteLoader/Header/MC/BedrockBlockTypes.hpp rename to LiteLoader/include/llapi/mc/BedrockBlockTypes.hpp index df62ce3..92fd241 100644 --- a/LiteLoader/Header/MC/BedrockBlockTypes.hpp +++ b/LiteLoader/include/llapi/mc/BedrockBlockTypes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedrockBlocks.hpp b/LiteLoader/include/llapi/mc/BedrockBlocks.hpp similarity index 89% rename from LiteLoader/Header/MC/BedrockBlocks.hpp rename to LiteLoader/include/llapi/mc/BedrockBlocks.hpp index cf39a41..5c5fd70 100644 --- a/LiteLoader/Header/MC/BedrockBlocks.hpp +++ b/LiteLoader/include/llapi/mc/BedrockBlocks.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedrockItems.hpp b/LiteLoader/include/llapi/mc/BedrockItems.hpp similarity index 95% rename from LiteLoader/Header/MC/BedrockItems.hpp rename to LiteLoader/include/llapi/mc/BedrockItems.hpp index 2af154c..0583623 100644 --- a/LiteLoader/Header/MC/BedrockItems.hpp +++ b/LiteLoader/include/llapi/mc/BedrockItems.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BedrockLog.hpp b/LiteLoader/include/llapi/mc/BedrockLog.hpp similarity index 98% rename from LiteLoader/Header/MC/BedrockLog.hpp rename to LiteLoader/include/llapi/mc/BedrockLog.hpp index 25603b7..c68edab 100644 --- a/LiteLoader/Header/MC/BedrockLog.hpp +++ b/LiteLoader/include/llapi/mc/BedrockLog.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Bee.hpp b/LiteLoader/include/llapi/mc/Bee.hpp similarity index 98% rename from LiteLoader/Header/MC/Bee.hpp rename to LiteLoader/include/llapi/mc/Bee.hpp index fc0ee33..335379e 100644 --- a/LiteLoader/Header/MC/Bee.hpp +++ b/LiteLoader/include/llapi/mc/Bee.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/BeehiveBlock.hpp b/LiteLoader/include/llapi/mc/BeehiveBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BeehiveBlock.hpp rename to LiteLoader/include/llapi/mc/BeehiveBlock.hpp index 96e947e..1301705 100644 --- a/LiteLoader/Header/MC/BeehiveBlock.hpp +++ b/LiteLoader/include/llapi/mc/BeehiveBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeehiveBlockActor.hpp b/LiteLoader/include/llapi/mc/BeehiveBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/BeehiveBlockActor.hpp rename to LiteLoader/include/llapi/mc/BeehiveBlockActor.hpp index ceafa27..61e561d 100644 --- a/LiteLoader/Header/MC/BeehiveBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BeehiveBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BeetrootBlock.hpp b/LiteLoader/include/llapi/mc/BeetrootBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/BeetrootBlock.hpp rename to LiteLoader/include/llapi/mc/BeetrootBlock.hpp index 120b469..a9d46e5 100644 --- a/LiteLoader/Header/MC/BeetrootBlock.hpp +++ b/LiteLoader/include/llapi/mc/BeetrootBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "CropBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BegGoal.hpp b/LiteLoader/include/llapi/mc/BegGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/BegGoal.hpp rename to LiteLoader/include/llapi/mc/BegGoal.hpp index bc3bfbc..cb3d3d3 100644 --- a/LiteLoader/Header/MC/BegGoal.hpp +++ b/LiteLoader/include/llapi/mc/BegGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorComponent.hpp b/LiteLoader/include/llapi/mc/BehaviorComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/BehaviorComponent.hpp rename to LiteLoader/include/llapi/mc/BehaviorComponent.hpp index 4489d05..e16f95d 100644 --- a/LiteLoader/Header/MC/BehaviorComponent.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorData.hpp b/LiteLoader/include/llapi/mc/BehaviorData.hpp similarity index 95% rename from LiteLoader/Header/MC/BehaviorData.hpp rename to LiteLoader/include/llapi/mc/BehaviorData.hpp index 65b88d1..bf2bd1f 100644 --- a/LiteLoader/Header/MC/BehaviorData.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorDefinition.hpp b/LiteLoader/include/llapi/mc/BehaviorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BehaviorDefinition.hpp rename to LiteLoader/include/llapi/mc/BehaviorDefinition.hpp index dc8ab7f..9583d14 100644 --- a/LiteLoader/Header/MC/BehaviorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorFactory.hpp b/LiteLoader/include/llapi/mc/BehaviorFactory.hpp similarity index 97% rename from LiteLoader/Header/MC/BehaviorFactory.hpp rename to LiteLoader/include/llapi/mc/BehaviorFactory.hpp index 4bc2acc..7472b22 100644 --- a/LiteLoader/Header/MC/BehaviorFactory.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorNode.hpp b/LiteLoader/include/llapi/mc/BehaviorNode.hpp similarity index 95% rename from LiteLoader/Header/MC/BehaviorNode.hpp rename to LiteLoader/include/llapi/mc/BehaviorNode.hpp index 64b4f3c..7f6f1d5 100644 --- a/LiteLoader/Header/MC/BehaviorNode.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorNodeUtils.hpp b/LiteLoader/include/llapi/mc/BehaviorNodeUtils.hpp similarity index 91% rename from LiteLoader/Header/MC/BehaviorNodeUtils.hpp rename to LiteLoader/include/llapi/mc/BehaviorNodeUtils.hpp index fbf8a93..57c4e3f 100644 --- a/LiteLoader/Header/MC/BehaviorNodeUtils.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorNodeUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorSystem.hpp b/LiteLoader/include/llapi/mc/BehaviorSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BehaviorSystem.hpp rename to LiteLoader/include/llapi/mc/BehaviorSystem.hpp index ecdbe48..6e86d86 100644 --- a/LiteLoader/Header/MC/BehaviorSystem.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorTreeDefinitionPtr.hpp b/LiteLoader/include/llapi/mc/BehaviorTreeDefinitionPtr.hpp similarity index 96% rename from LiteLoader/Header/MC/BehaviorTreeDefinitionPtr.hpp rename to LiteLoader/include/llapi/mc/BehaviorTreeDefinitionPtr.hpp index bf95302..2fbab56 100644 --- a/LiteLoader/Header/MC/BehaviorTreeDefinitionPtr.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorTreeDefinitionPtr.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorTreeDescription.hpp b/LiteLoader/include/llapi/mc/BehaviorTreeDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/BehaviorTreeDescription.hpp rename to LiteLoader/include/llapi/mc/BehaviorTreeDescription.hpp index b35ce53..198eccf 100644 --- a/LiteLoader/Header/MC/BehaviorTreeDescription.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorTreeDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BehaviorTreeGroup.hpp b/LiteLoader/include/llapi/mc/BehaviorTreeGroup.hpp similarity index 96% rename from LiteLoader/Header/MC/BehaviorTreeGroup.hpp rename to LiteLoader/include/llapi/mc/BehaviorTreeGroup.hpp index 9b1d453..4d560f7 100644 --- a/LiteLoader/Header/MC/BehaviorTreeGroup.hpp +++ b/LiteLoader/include/llapi/mc/BehaviorTreeGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BellBlock.hpp b/LiteLoader/include/llapi/mc/BellBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BellBlock.hpp rename to LiteLoader/include/llapi/mc/BellBlock.hpp index c2a8b78..d755b7a 100644 --- a/LiteLoader/Header/MC/BellBlock.hpp +++ b/LiteLoader/include/llapi/mc/BellBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BellBlockActor.hpp b/LiteLoader/include/llapi/mc/BellBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/BellBlockActor.hpp rename to LiteLoader/include/llapi/mc/BellBlockActor.hpp index 4525547..c3affd4 100644 --- a/LiteLoader/Header/MC/BellBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BellBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Direction.hpp" #include "BlockActor.hpp" diff --git a/LiteLoader/Header/MC/BellBlockItem.hpp b/LiteLoader/include/llapi/mc/BellBlockItem.hpp similarity index 97% rename from LiteLoader/Header/MC/BellBlockItem.hpp rename to LiteLoader/include/llapi/mc/BellBlockItem.hpp index 29ba74b..3be194b 100644 --- a/LiteLoader/Header/MC/BellBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/BellBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BigEndianStringByteInput.hpp b/LiteLoader/include/llapi/mc/BigEndianStringByteInput.hpp similarity index 97% rename from LiteLoader/Header/MC/BigEndianStringByteInput.hpp rename to LiteLoader/include/llapi/mc/BigEndianStringByteInput.hpp index c88378a..0f343ec 100644 --- a/LiteLoader/Header/MC/BigEndianStringByteInput.hpp +++ b/LiteLoader/include/llapi/mc/BigEndianStringByteInput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StringByteInput.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BinaryHeap.hpp b/LiteLoader/include/llapi/mc/BinaryHeap.hpp similarity index 95% rename from LiteLoader/Header/MC/BinaryHeap.hpp rename to LiteLoader/include/llapi/mc/BinaryHeap.hpp index a42db59..00f5bc8 100644 --- a/LiteLoader/Header/MC/BinaryHeap.hpp +++ b/LiteLoader/include/llapi/mc/BinaryHeap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BinaryStream.hpp b/LiteLoader/include/llapi/mc/BinaryStream.hpp similarity index 98% rename from LiteLoader/Header/MC/BinaryStream.hpp rename to LiteLoader/include/llapi/mc/BinaryStream.hpp index d70f75b..b0f2ae6 100644 --- a/LiteLoader/Header/MC/BinaryStream.hpp +++ b/LiteLoader/include/llapi/mc/BinaryStream.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ReadOnlyBinaryStream.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Biome.hpp b/LiteLoader/include/llapi/mc/Biome.hpp similarity index 98% rename from LiteLoader/Header/MC/Biome.hpp rename to LiteLoader/include/llapi/mc/Biome.hpp index 52d628e..2c9c10a 100644 --- a/LiteLoader/Header/MC/Biome.hpp +++ b/LiteLoader/include/llapi/mc/Biome.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/BiomeArea.hpp b/LiteLoader/include/llapi/mc/BiomeArea.hpp similarity index 95% rename from LiteLoader/Header/MC/BiomeArea.hpp rename to LiteLoader/include/llapi/mc/BiomeArea.hpp index 2d8c5a6..814f145 100644 --- a/LiteLoader/Header/MC/BiomeArea.hpp +++ b/LiteLoader/include/llapi/mc/BiomeArea.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeClimateSelectorLayer.hpp b/LiteLoader/include/llapi/mc/BiomeClimateSelectorLayer.hpp similarity index 97% rename from LiteLoader/Header/MC/BiomeClimateSelectorLayer.hpp rename to LiteLoader/include/llapi/mc/BiomeClimateSelectorLayer.hpp index cc9d0a0..c52e493 100644 --- a/LiteLoader/Header/MC/BiomeClimateSelectorLayer.hpp +++ b/LiteLoader/include/llapi/mc/BiomeClimateSelectorLayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeComponentLoading.hpp b/LiteLoader/include/llapi/mc/BiomeComponentLoading.hpp similarity index 94% rename from LiteLoader/Header/MC/BiomeComponentLoading.hpp rename to LiteLoader/include/llapi/mc/BiomeComponentLoading.hpp index cacf314..9942c19 100644 --- a/LiteLoader/Header/MC/BiomeComponentLoading.hpp +++ b/LiteLoader/include/llapi/mc/BiomeComponentLoading.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeDecorationFeature.hpp b/LiteLoader/include/llapi/mc/BiomeDecorationFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/BiomeDecorationFeature.hpp rename to LiteLoader/include/llapi/mc/BiomeDecorationFeature.hpp index a769501..98e2023 100644 --- a/LiteLoader/Header/MC/BiomeDecorationFeature.hpp +++ b/LiteLoader/include/llapi/mc/BiomeDecorationFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeDecorationSystem.hpp b/LiteLoader/include/llapi/mc/BiomeDecorationSystem.hpp similarity index 97% rename from LiteLoader/Header/MC/BiomeDecorationSystem.hpp rename to LiteLoader/include/llapi/mc/BiomeDecorationSystem.hpp index 06be007..3a7ef30 100644 --- a/LiteLoader/Header/MC/BiomeDecorationSystem.hpp +++ b/LiteLoader/include/llapi/mc/BiomeDecorationSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeDefinitionListPacket.hpp b/LiteLoader/include/llapi/mc/BiomeDefinitionListPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/BiomeDefinitionListPacket.hpp rename to LiteLoader/include/llapi/mc/BiomeDefinitionListPacket.hpp index b06d7a6..f38ce10 100644 --- a/LiteLoader/Header/MC/BiomeDefinitionListPacket.hpp +++ b/LiteLoader/include/llapi/mc/BiomeDefinitionListPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeFilterGroup.hpp b/LiteLoader/include/llapi/mc/BiomeFilterGroup.hpp similarity index 96% rename from LiteLoader/Header/MC/BiomeFilterGroup.hpp rename to LiteLoader/include/llapi/mc/BiomeFilterGroup.hpp index d8737a1..1dbd661 100644 --- a/LiteLoader/Header/MC/BiomeFilterGroup.hpp +++ b/LiteLoader/include/llapi/mc/BiomeFilterGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterGroup.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/BiomeIdCompatibility.hpp b/LiteLoader/include/llapi/mc/BiomeIdCompatibility.hpp similarity index 92% rename from LiteLoader/Header/MC/BiomeIdCompatibility.hpp rename to LiteLoader/include/llapi/mc/BiomeIdCompatibility.hpp index 73d6009..b25766d 100644 --- a/LiteLoader/Header/MC/BiomeIdCompatibility.hpp +++ b/LiteLoader/include/llapi/mc/BiomeIdCompatibility.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeMetadata.hpp b/LiteLoader/include/llapi/mc/BiomeMetadata.hpp similarity index 94% rename from LiteLoader/Header/MC/BiomeMetadata.hpp rename to LiteLoader/include/llapi/mc/BiomeMetadata.hpp index e22f936..8616491 100644 --- a/LiteLoader/Header/MC/BiomeMetadata.hpp +++ b/LiteLoader/include/llapi/mc/BiomeMetadata.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeRegistry.hpp b/LiteLoader/include/llapi/mc/BiomeRegistry.hpp similarity index 98% rename from LiteLoader/Header/MC/BiomeRegistry.hpp rename to LiteLoader/include/llapi/mc/BiomeRegistry.hpp index acee590..d09749c 100644 --- a/LiteLoader/Header/MC/BiomeRegistry.hpp +++ b/LiteLoader/include/llapi/mc/BiomeRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeRegistryMergeStrategy.hpp b/LiteLoader/include/llapi/mc/BiomeRegistryMergeStrategy.hpp similarity index 96% rename from LiteLoader/Header/MC/BiomeRegistryMergeStrategy.hpp rename to LiteLoader/include/llapi/mc/BiomeRegistryMergeStrategy.hpp index 2922c9a..3ecaed2 100644 --- a/LiteLoader/Header/MC/BiomeRegistryMergeStrategy.hpp +++ b/LiteLoader/include/llapi/mc/BiomeRegistryMergeStrategy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BiomeSurfaceSystem.hpp b/LiteLoader/include/llapi/mc/BiomeSurfaceSystem.hpp similarity index 93% rename from LiteLoader/Header/MC/BiomeSurfaceSystem.hpp rename to LiteLoader/include/llapi/mc/BiomeSurfaceSystem.hpp index 8cb7c19..e4f63af 100644 --- a/LiteLoader/Header/MC/BiomeSurfaceSystem.hpp +++ b/LiteLoader/include/llapi/mc/BiomeSurfaceSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Blacklist.hpp b/LiteLoader/include/llapi/mc/Blacklist.hpp similarity index 97% rename from LiteLoader/Header/MC/Blacklist.hpp rename to LiteLoader/include/llapi/mc/Blacklist.hpp index e54b138..0b4e8d7 100644 --- a/LiteLoader/Header/MC/Blacklist.hpp +++ b/LiteLoader/include/llapi/mc/Blacklist.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlastFurnaceBlock.hpp b/LiteLoader/include/llapi/mc/BlastFurnaceBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BlastFurnaceBlock.hpp rename to LiteLoader/include/llapi/mc/BlastFurnaceBlock.hpp index f9788b3..43e2bc1 100644 --- a/LiteLoader/Header/MC/BlastFurnaceBlock.hpp +++ b/LiteLoader/include/llapi/mc/BlastFurnaceBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FurnaceBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlastFurnaceBlockActor.hpp b/LiteLoader/include/llapi/mc/BlastFurnaceBlockActor.hpp similarity index 95% rename from LiteLoader/Header/MC/BlastFurnaceBlockActor.hpp rename to LiteLoader/include/llapi/mc/BlastFurnaceBlockActor.hpp index 7dfb53d..7396547 100644 --- a/LiteLoader/Header/MC/BlastFurnaceBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BlastFurnaceBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlastFurnaceContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/BlastFurnaceContainerManagerModel.hpp similarity index 96% rename from LiteLoader/Header/MC/BlastFurnaceContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/BlastFurnaceContainerManagerModel.hpp index 0e14101..1dd8dae 100644 --- a/LiteLoader/Header/MC/BlastFurnaceContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/BlastFurnaceContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FurnaceContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Blaze.hpp b/LiteLoader/include/llapi/mc/Blaze.hpp similarity index 98% rename from LiteLoader/Header/MC/Blaze.hpp rename to LiteLoader/include/llapi/mc/Blaze.hpp index f583452..8c04982 100644 --- a/LiteLoader/Header/MC/Blaze.hpp +++ b/LiteLoader/include/llapi/mc/Blaze.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/Block.hpp b/LiteLoader/include/llapi/mc/Block.hpp similarity index 70% rename from LiteLoader/Header/MC/Block.hpp rename to LiteLoader/include/llapi/mc/Block.hpp index fa71030..dfcdd76 100644 --- a/LiteLoader/Header/MC/Block.hpp +++ b/LiteLoader/include/llapi/mc/Block.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Add include headers & pre-declares @@ -14,6 +14,12 @@ class Block { #define AFTER_EXTRA // Add new members to class public: + const unsigned short mData; + WeakPtr mLegacyBlock; + CompoundTag mSerializationId; + unsigned int mRuntimeId; + bool mHasRuntimeId; + LIAPI static Block* create(const string& str, unsigned short tileData); LIAPI static Block* create(CompoundTag* nbt); @@ -32,22 +38,27 @@ public: }; inline bool operator==(class Block const& a2) const { - __int64 v2; // r8 - __int64 v3; // rax - v2 = *(__int64*)(this + 16); - if (!v2 || (v3 = *(__int64*)(&a2 + 16)) == 0) - return false; - return v2 == v3 && *(unsigned short*)(this + 8) == *(unsigned short*)(&a2 + 8); +// __int64 v2; // r8 +// __int64 v3; // rax +// v2 = *(__int64*)(this + 16); +// if (!v2 || (v3 = *(__int64*)(&a2 + 16)) == 0) +// return false; +// return v2 == v3 && *(unsigned short*)(this + 8) == *(unsigned short*)(&a2 + 8); + return !(*this != a2); } inline bool operator!=(class Block const& a2) const { - __int64 v2; // r8 - __int64 v3; // rax - - v2 = *(__int64*)(this + 16); - if (!v2 || (v3 = *(__int64*)(&a2 + 16)) == 0) - return false; - return v2 != v3 || *(unsigned short*)(this + 8) != *(unsigned short*)(&a2 + 8); +// __int64 v2; // r8 +// __int64 v3; // rax +// +// v2 = *(__int64*)(this + 16); +// if (!v2 || (v3 = *(__int64*)(&a2 + 16)) == 0) +// return false; +// return v2 != v3 || *(unsigned short*)(this + 8) != *(unsigned short*)(&a2 + 8); + auto& rhs = a2.getLegacyBlock(); + if(this->getLegacyBlock() == rhs) + return this->mData != a2.mData; + return true; } #undef AFTER_EXTRA diff --git a/LiteLoader/Header/MC/BlockActor.hpp b/LiteLoader/include/llapi/mc/BlockActor.hpp similarity index 75% rename from LiteLoader/Header/MC/BlockActor.hpp rename to LiteLoader/include/llapi/mc/BlockActor.hpp index e41afde..28e9a3d 100644 --- a/LiteLoader/Header/MC/BlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BlockActor.hpp @@ -1,26 +1,72 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Add include headers & pre-declares #include "BlockActorDataPacket.hpp" +#include "ActorTerrainInterlockData.hpp" class Block; class Container; class CompoundTag; class BlockSource; +enum BlockActorRendererId : int +{ + TR_DEFAULT_RENDERER = 0x0, + TR_CHEST_RENDERER = 0x1, + TR_SIGN_RENDERER = 0x2, + TR_MOBSPAWNER_RENDERER = 0x3, + TR_SKULL_RENDERER = 0x4, + TR_ENCHANTER_RENDERER = 0x5, + TR_PISTONARM_RENDERER = 0x6, + TR_ITEMFRAME_RENDERER = 0x7, + TR_MOVINGBLOCK_RENDERER = 0x8, + TR_CHALKBOARD_RENDERER = 0x9, + TR_BEACON_RENDERER = 0xA, + TR_ENDGATEWAY_RENDERER = 0xB, + TR_ENDERCHEST_RENDERER = 0xC, + TR_SHULKERBOX_RENDERER = 0xD, + TR_COMMANDBLOCK_RENDERER = 0xE, + TR_BED_RENDERER = 0xF, + TR_BANNER_RENDERER = 0x10, + TR_CONDUIT_RENDERER = 0x11, + TR_LECTERN_RENDERER = 0x12, + TR_BELL_RENDERER = 0x13, + TR_CAMPFIRE_RENDERER = 0x14, +}; + #undef BEFORE_EXTRA class BlockActor { #define AFTER_EXTRA // Add new members to class +public: + int mTickCount; + const Block *mBlock; + float mDestroyTimer; + Vec3 mDestroyDirection; + float mDestroyProgress; + BlockPos mPosition; + AABB mBB; + const BlockActorType mType; + BlockActorRendererId mRendererId; + std::string mCustomName; + std::string mFilteredCustomName; + int mRepairCost; + bool mClientSideOnly; + bool mIsMovable; + bool mSaveCustomName; + bool mCanRenderCustomName; + const float signShadowRadius; + ActorTerrainInterlockData mTerrainInterlockData; + bool mChanged; public: LIAPI bool refreshData(); - LIAPI bool refreshData(BlockSource* bs); + LIAPI bool refreshData(BlockSource* bs); LIAPI std::unique_ptr getNbt(); LIAPI bool setNbt(CompoundTag* nbt); LIAPI bool setNbt(CompoundTag* nbt, BlockSource* bs); @@ -28,16 +74,19 @@ public: inline void setChanged(){ //EndGatewayBlockActor::teleportEntity Line115 - dAccess(this) = 1; + //dAccess(this) = 1; + this->mChanged = true; } inline BlockPos const & getPosition() const{ //EndGatewayBlockActor::teleportEntity Line114 - return dAccess(this,44); + //return dAccess(this,44); + return this->mPosition; }; inline enum BlockActorType getType(){ //FlowerPotBlock::playerWillDestroy Line16 - return dAccess(this,21); + //return dAccess(this,21*4); + return this->mType; } inline std::unique_ptr getServerUpdatePacket(BlockSource &bs){ diff --git a/LiteLoader/Header/MC/BlockActorDataPacket.hpp b/LiteLoader/include/llapi/mc/BlockActorDataPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockActorDataPacket.hpp rename to LiteLoader/include/llapi/mc/BlockActorDataPacket.hpp index e36237e..dce1ae4 100644 --- a/LiteLoader/Header/MC/BlockActorDataPacket.hpp +++ b/LiteLoader/include/llapi/mc/BlockActorDataPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockActorFactory.hpp b/LiteLoader/include/llapi/mc/BlockActorFactory.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockActorFactory.hpp rename to LiteLoader/include/llapi/mc/BlockActorFactory.hpp index 2d9f7ef..c3eb882 100644 --- a/LiteLoader/Header/MC/BlockActorFactory.hpp +++ b/LiteLoader/include/llapi/mc/BlockActorFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockActorLevelListener.hpp b/LiteLoader/include/llapi/mc/BlockActorLevelListener.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockActorLevelListener.hpp rename to LiteLoader/include/llapi/mc/BlockActorLevelListener.hpp index a4399bb..87261b8 100644 --- a/LiteLoader/Header/MC/BlockActorLevelListener.hpp +++ b/LiteLoader/include/llapi/mc/BlockActorLevelListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockSourceListener.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockBlobFeature.hpp b/LiteLoader/include/llapi/mc/BlockBlobFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockBlobFeature.hpp rename to LiteLoader/include/llapi/mc/BlockBlobFeature.hpp index 8904d6e..6941b49 100644 --- a/LiteLoader/Header/MC/BlockBlobFeature.hpp +++ b/LiteLoader/include/llapi/mc/BlockBlobFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockBreakSensorComponent.hpp b/LiteLoader/include/llapi/mc/BlockBreakSensorComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockBreakSensorComponent.hpp rename to LiteLoader/include/llapi/mc/BlockBreakSensorComponent.hpp index d9ac285..8a3f92b 100644 --- a/LiteLoader/Header/MC/BlockBreakSensorComponent.hpp +++ b/LiteLoader/include/llapi/mc/BlockBreakSensorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockBreakSensorDefinition.hpp b/LiteLoader/include/llapi/mc/BlockBreakSensorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockBreakSensorDefinition.hpp rename to LiteLoader/include/llapi/mc/BlockBreakSensorDefinition.hpp index be56002..4292e8c 100644 --- a/LiteLoader/Header/MC/BlockBreakSensorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BlockBreakSensorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockBreakSensorSystem.hpp b/LiteLoader/include/llapi/mc/BlockBreakSensorSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockBreakSensorSystem.hpp rename to LiteLoader/include/llapi/mc/BlockBreakSensorSystem.hpp index 851de8d..974f8ef 100644 --- a/LiteLoader/Header/MC/BlockBreakSensorSystem.hpp +++ b/LiteLoader/include/llapi/mc/BlockBreakSensorSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockColorUtil.hpp b/LiteLoader/include/llapi/mc/BlockColorUtil.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockColorUtil.hpp rename to LiteLoader/include/llapi/mc/BlockColorUtil.hpp index 362107a..c427939 100644 --- a/LiteLoader/Header/MC/BlockColorUtil.hpp +++ b/LiteLoader/include/llapi/mc/BlockColorUtil.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockCommandOrigin.hpp b/LiteLoader/include/llapi/mc/BlockCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/BlockCommandOrigin.hpp index 45aa9dd..183a657 100644 --- a/LiteLoader/Header/MC/BlockCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/BlockCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/BlockComponentDescription.hpp b/LiteLoader/include/llapi/mc/BlockComponentDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockComponentDescription.hpp rename to LiteLoader/include/llapi/mc/BlockComponentDescription.hpp index a881e6f..a914b72 100644 --- a/LiteLoader/Header/MC/BlockComponentDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockComponentDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockComponentFactory.hpp b/LiteLoader/include/llapi/mc/BlockComponentFactory.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockComponentFactory.hpp rename to LiteLoader/include/llapi/mc/BlockComponentFactory.hpp index 1352887..82f8873 100644 --- a/LiteLoader/Header/MC/BlockComponentFactory.hpp +++ b/LiteLoader/include/llapi/mc/BlockComponentFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockDefinition.hpp b/LiteLoader/include/llapi/mc/BlockDefinition.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockDefinition.hpp rename to LiteLoader/include/llapi/mc/BlockDefinition.hpp index 13f40a2..c768a1b 100644 --- a/LiteLoader/Header/MC/BlockDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BlockDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockDefinitionGroup.hpp b/LiteLoader/include/llapi/mc/BlockDefinitionGroup.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockDefinitionGroup.hpp rename to LiteLoader/include/llapi/mc/BlockDefinitionGroup.hpp index 27778c1..48c8e15 100644 --- a/LiteLoader/Header/MC/BlockDefinitionGroup.hpp +++ b/LiteLoader/include/llapi/mc/BlockDefinitionGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/BlockDescription.hpp b/LiteLoader/include/llapi/mc/BlockDescription.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockDescription.hpp rename to LiteLoader/include/llapi/mc/BlockDescription.hpp index dc50bfd..f3456df 100644 --- a/LiteLoader/Header/MC/BlockDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockDestroyTimeDescription.hpp b/LiteLoader/include/llapi/mc/BlockDestroyTimeDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockDestroyTimeDescription.hpp rename to LiteLoader/include/llapi/mc/BlockDestroyTimeDescription.hpp index a41f10c..5d040d0 100644 --- a/LiteLoader/Header/MC/BlockDestroyTimeDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockDestroyTimeDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockEventCoordinator.hpp b/LiteLoader/include/llapi/mc/BlockEventCoordinator.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockEventCoordinator.hpp rename to LiteLoader/include/llapi/mc/BlockEventCoordinator.hpp index 66a2c80..83ae737 100644 --- a/LiteLoader/Header/MC/BlockEventCoordinator.hpp +++ b/LiteLoader/include/llapi/mc/BlockEventCoordinator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockEventDispatcher.hpp b/LiteLoader/include/llapi/mc/BlockEventDispatcher.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockEventDispatcher.hpp rename to LiteLoader/include/llapi/mc/BlockEventDispatcher.hpp index d289816..9f0fbce 100644 --- a/LiteLoader/Header/MC/BlockEventDispatcher.hpp +++ b/LiteLoader/include/llapi/mc/BlockEventDispatcher.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockEventDispatcherToken.hpp b/LiteLoader/include/llapi/mc/BlockEventDispatcherToken.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockEventDispatcherToken.hpp rename to LiteLoader/include/llapi/mc/BlockEventDispatcherToken.hpp index 20ab8f2..1dc4fa8 100644 --- a/LiteLoader/Header/MC/BlockEventDispatcherToken.hpp +++ b/LiteLoader/include/llapi/mc/BlockEventDispatcherToken.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockEventListener.hpp b/LiteLoader/include/llapi/mc/BlockEventListener.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockEventListener.hpp rename to LiteLoader/include/llapi/mc/BlockEventListener.hpp index 2782fcb..2b8874e 100644 --- a/LiteLoader/Header/MC/BlockEventListener.hpp +++ b/LiteLoader/include/llapi/mc/BlockEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockEventPacket.hpp b/LiteLoader/include/llapi/mc/BlockEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockEventPacket.hpp rename to LiteLoader/include/llapi/mc/BlockEventPacket.hpp index 9e1b368..c3886ad 100644 --- a/LiteLoader/Header/MC/BlockEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/BlockEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockExplodeableDescription.hpp b/LiteLoader/include/llapi/mc/BlockExplodeableDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockExplodeableDescription.hpp rename to LiteLoader/include/llapi/mc/BlockExplodeableDescription.hpp index c971db2..76de8eb 100644 --- a/LiteLoader/Header/MC/BlockExplodeableDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockExplodeableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockFlammableDescription.hpp b/LiteLoader/include/llapi/mc/BlockFlammableDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockFlammableDescription.hpp rename to LiteLoader/include/llapi/mc/BlockFlammableDescription.hpp index 50acafa..193f2ef 100644 --- a/LiteLoader/Header/MC/BlockFlammableDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockFlammableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockFrictionDescription.hpp b/LiteLoader/include/llapi/mc/BlockFrictionDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockFrictionDescription.hpp rename to LiteLoader/include/llapi/mc/BlockFrictionDescription.hpp index 6ac5eca..35f4863 100644 --- a/LiteLoader/Header/MC/BlockFrictionDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockFrictionDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockGraphics.hpp b/LiteLoader/include/llapi/mc/BlockGraphics.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockGraphics.hpp rename to LiteLoader/include/llapi/mc/BlockGraphics.hpp index 91e10cb..45a4ba4 100644 --- a/LiteLoader/Header/MC/BlockGraphics.hpp +++ b/LiteLoader/include/llapi/mc/BlockGraphics.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockID.hpp b/LiteLoader/include/llapi/mc/BlockID.hpp similarity index 94% rename from LiteLoader/Header/MC/BlockID.hpp rename to LiteLoader/include/llapi/mc/BlockID.hpp index 32bdf48..159e5b5 100644 --- a/LiteLoader/Header/MC/BlockID.hpp +++ b/LiteLoader/include/llapi/mc/BlockID.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockInstance.hpp b/LiteLoader/include/llapi/mc/BlockInstance.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockInstance.hpp rename to LiteLoader/include/llapi/mc/BlockInstance.hpp index e572e3c..d3ab5c9 100644 --- a/LiteLoader/Header/MC/BlockInstance.hpp +++ b/LiteLoader/include/llapi/mc/BlockInstance.hpp @@ -1,5 +1,5 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" class BlockSource; class Block; class ItemStack; diff --git a/LiteLoader/Header/MC/BlockIntersectionConstraint.hpp b/LiteLoader/include/llapi/mc/BlockIntersectionConstraint.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockIntersectionConstraint.hpp rename to LiteLoader/include/llapi/mc/BlockIntersectionConstraint.hpp index 71cf177..7021405 100644 --- a/LiteLoader/Header/MC/BlockIntersectionConstraint.hpp +++ b/LiteLoader/include/llapi/mc/BlockIntersectionConstraint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockIsNameTest.hpp b/LiteLoader/include/llapi/mc/BlockIsNameTest.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockIsNameTest.hpp rename to LiteLoader/include/llapi/mc/BlockIsNameTest.hpp index 049dbcc..621e621 100644 --- a/LiteLoader/Header/MC/BlockIsNameTest.hpp +++ b/LiteLoader/include/llapi/mc/BlockIsNameTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/BlockItem.hpp b/LiteLoader/include/llapi/mc/BlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockItem.hpp rename to LiteLoader/include/llapi/mc/BlockItem.hpp index 2f97d52..f6a6648 100644 --- a/LiteLoader/Header/MC/BlockItem.hpp +++ b/LiteLoader/include/llapi/mc/BlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockLegacy.hpp b/LiteLoader/include/llapi/mc/BlockLegacy.hpp similarity index 81% rename from LiteLoader/Header/MC/BlockLegacy.hpp rename to LiteLoader/include/llapi/mc/BlockLegacy.hpp index f973fe1..80c7a8a 100644 --- a/LiteLoader/Header/MC/BlockLegacy.hpp +++ b/LiteLoader/include/llapi/mc/BlockLegacy.hpp @@ -1,14 +1,96 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Add include headers & pre-declares +#include "SemVersion.hpp" +#include "Types.hpp" +#include "Brightness.hpp" +#include "LootComponent.hpp" +#include "ItemStateInstance.hpp" +#include "HashedString.hpp" + class Block; class BlockSource; class ItemStack; +class Material; +enum BlockRenderLayer : int +{ + RENDERLAYER_DOUBLE_SIDED = 0x0, + RENDERLAYER_BLEND_WATER = 0x1, + RENDERLAYER_ALPHATEST_MICRO_BLOCK = 0x2, + RENDERLAYER_RAY_TRACED_WATER = 0x3, + RENDERLAYER_BLEND = 0x4, + RENDERLAYER_OPAQUE = 0x5, + RENDERLAYER_OPTIONAL_ALPHATEST = 0x6, + RENDERLAYER_ALPHATEST = 0x7, + RENDERLAYER_SEASONS_OPAQUE = 0x8, + RENDERLAYER_SEASONS_OPTIONAL_ALPHATEST = 0x9, + RENDERLAYER_ALPHATEST_SINGLE_SIDE = 0xA, + RENDERLAYER_ENDPORTAL = 0xB, + RENDERLAYER_BARRIER = 0xC, + RENDERLAYER_STRUCTURE_VOID = 0xD, + _RENDERLAYER_COUNT = 0xE, +}; + +enum BlockProperty : __int64 +{ + None_43 = 0x0, + Stair = 0x1, + HalfSlab = 0x2, + Hopper_0 = 0x4, + TopSnow_0 = 0x8, + FenceGate = 0x10, + Leaf = 0x20, + ThinConnects2D = 0x40, + Connects2D = 0x80, + Carpet_0 = 0x100, + Button_0 = 0x200, + Door = 0x400, + Portal_3 = 0x800, + Heavy = 0x1000, + Snow_1 = 0x2000, + Trap = 0x4000, + Sign_0 = 0x8000, + Walkable = 0x10000, + PressurePlate = 0x20000, + PistonBlockGrabber = 0x40000, + TopSolidBlocking = 0x80000, + SolidBlocking = 0x100000, + CubeShaped = 0x200000, + Power_NO = 0x400000, + Power_BlockDown = 0x800000, + Immovable = 0x1000000, + BreakOnPush = 0x2000000, + Piston_1 = 0x4000000, + InfiniBurn = 0x8000000, + RequiresWorldBuilder = 0x10000000, + CausesDamage = 0x20000000, + BreaksWhenFallenOnByHeavy = 0x40000000, + OnlyPistonPush = 0x80000000, + Liquid_0 = 0x100000000, + CanBeBuiltOver = 0x200000000, + SnowRecoverable = 0x400000000, + Scaffolding = 0x800000000, + CanSupportCenterHangingBlock = 0x1000000000, + BreaksWhenHitByArrow = 0x2000000000, + Unwalkable = 0x4000000000, + Impenetrable = 0x8000000000, + Hollow = 0x10000000000, + OperatorBlock = 0x20000000000, + SupportedByFlowerPot = 0x40000000000, + PreventsJumping = 0x80000000000, + ContainsHoney = 0x100000000000, + Slime_2 = 0x200000000000, +}; + +class BaseGameVersion +{ + SemVersion mSemVersion; +}; #undef BEFORE_EXTRA class BlockLegacy { @@ -16,7 +98,63 @@ class BlockLegacy { #define AFTER_EXTRA // Add new members to class public: - struct NameInfo; +// std::string mDescriptionId; +// std::string mRawNameId; +// HashedString mNamespace; +// std::string mFullName; +// bool mFancy; +// BlockRenderLayer mRenderLayer; +// bool mRenderLayerCanRenderAsOpaque; +// BlockProperty mProperties; +// BlockActorType mBlockEntityType; +// bool mAnimatedTexture; +// float mBrightnessGamma; +// float mThickness; +// bool mCanSlide; +// bool mCanInstatick; +// bool mIsInteraction; +// float mGravity; +// const Material *mMaterial; +// Color mMapColor; +// float mFriction; +// bool mHeavy; +// float mParticleQuantityScalar; +// float mDestroySpeed; +// float mExplosionResistance; +// CreativeItemCategory mCreativeCategory; +// bool mAllowsRunes; +// bool mCanBeBrokenFromFalling; +// bool mSolid; +// bool mPushesOutItems; +// bool mIgnoreBlockForInsideCubeRenderer; +// bool mIsTrapdoor; +// bool mIsDoor; +// float mTranslucency; +// Brightness mLightBlock; +// Brightness mLightEmission; +// bool mShouldRandomTick; +// bool mShouldRandomTickExtraLayer; +// int mFlameOdds; +// int mBurnOdds; +// bool mIsMobPiece; +// bool mCanBeExtraBlock; +// bool mCanPropagateBrightness; +// unsigned int mID; +// BaseGameVersion mMinRequiredBaseGameVersion; +// bool mExperimental; +// bool mIsVanilla; +// std::unique_ptr mLootComponent; +// AABB mVisualShape; +// unsigned int mBitsUsed; +// unsigned int mTotalBitsUsed; +// std::array mStates; +// std::vector> mBlockPermutations; +// const Block *mDefaultState; +// std::mutex mLegacyDataLookupTableMutex; +// std::vector mLegacyDataLookupTable; +// +// +// struct NameInfo; LIAPI Block* toBlock(unsigned short tileData); LIAPI string getTypeName(); @@ -26,6 +164,7 @@ public: inline int getBlockItemId() const{ //ItemStackBase::init(ItemStackBase *this, const struct BlockLegacy *a2, int a3) Line14 unsigned int id = dAccess(this,268);//mID + // unsigned int id = this->mID; if(id < 256u) return id; else @@ -33,11 +172,12 @@ public: }; inline bool hasBlockEntity() const{ // LevelChunk::_removeCallbacks Line28 - return getBlockEntityType(); + return getBlockEntityType() == BlockActorType::UnKnow; } inline enum BlockActorType getBlockEntityType() const{ // LevelChunk::_removeCallbacks Line28 - return dAccess(this,168);; + return dAccess(this,168); + //return this->mBlockEntityType; }; #undef AFTER_EXTRA diff --git a/LiteLoader/Header/MC/BlockLightDescription.hpp b/LiteLoader/include/llapi/mc/BlockLightDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockLightDescription.hpp rename to LiteLoader/include/llapi/mc/BlockLightDescription.hpp index e193fb1..d3ec17b 100644 --- a/LiteLoader/Header/MC/BlockLightDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockLightDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockLightEmissionDescription.hpp b/LiteLoader/include/llapi/mc/BlockLightEmissionDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockLightEmissionDescription.hpp rename to LiteLoader/include/llapi/mc/BlockLightEmissionDescription.hpp index b0babb2..27a9fba 100644 --- a/LiteLoader/Header/MC/BlockLightEmissionDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockLightEmissionDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockListEventMap.hpp b/LiteLoader/include/llapi/mc/BlockListEventMap.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockListEventMap.hpp rename to LiteLoader/include/llapi/mc/BlockListEventMap.hpp index b9a819e..db68f79 100644 --- a/LiteLoader/Header/MC/BlockListEventMap.hpp +++ b/LiteLoader/include/llapi/mc/BlockListEventMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockListSerializer.hpp b/LiteLoader/include/llapi/mc/BlockListSerializer.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockListSerializer.hpp rename to LiteLoader/include/llapi/mc/BlockListSerializer.hpp index 4327535..f2ccb6e 100644 --- a/LiteLoader/Header/MC/BlockListSerializer.hpp +++ b/LiteLoader/include/llapi/mc/BlockListSerializer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockMapColorDescription.hpp b/LiteLoader/include/llapi/mc/BlockMapColorDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockMapColorDescription.hpp rename to LiteLoader/include/llapi/mc/BlockMapColorDescription.hpp index 9ce05a5..745d4d3 100644 --- a/LiteLoader/Header/MC/BlockMapColorDescription.hpp +++ b/LiteLoader/include/llapi/mc/BlockMapColorDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockPalette.hpp b/LiteLoader/include/llapi/mc/BlockPalette.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockPalette.hpp rename to LiteLoader/include/llapi/mc/BlockPalette.hpp index 2b1b91a..4928faf 100644 --- a/LiteLoader/Header/MC/BlockPalette.hpp +++ b/LiteLoader/include/llapi/mc/BlockPalette.hpp @@ -1,11 +1,11 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA class BlockLegacy; -#include +#include "Bedrock.hpp" #undef BEFORE_EXTRA class BlockPalette { diff --git a/LiteLoader/Header/MC/BlockPatternBuilder.hpp b/LiteLoader/include/llapi/mc/BlockPatternBuilder.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockPatternBuilder.hpp rename to LiteLoader/include/llapi/mc/BlockPatternBuilder.hpp index fc270ca..8878843 100644 --- a/LiteLoader/Header/MC/BlockPatternBuilder.hpp +++ b/LiteLoader/include/llapi/mc/BlockPatternBuilder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockPickRequestPacket.hpp b/LiteLoader/include/llapi/mc/BlockPickRequestPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockPickRequestPacket.hpp rename to LiteLoader/include/llapi/mc/BlockPickRequestPacket.hpp index 2193bfe..f4c96ea 100644 --- a/LiteLoader/Header/MC/BlockPickRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/BlockPickRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockPileFeature.hpp b/LiteLoader/include/llapi/mc/BlockPileFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockPileFeature.hpp rename to LiteLoader/include/llapi/mc/BlockPileFeature.hpp index 6876b25..32cb65c 100644 --- a/LiteLoader/Header/MC/BlockPileFeature.hpp +++ b/LiteLoader/include/llapi/mc/BlockPileFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockPlanterItem.hpp b/LiteLoader/include/llapi/mc/BlockPlanterItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockPlanterItem.hpp rename to LiteLoader/include/llapi/mc/BlockPlanterItem.hpp index 64499ed..247261c 100644 --- a/LiteLoader/Header/MC/BlockPlanterItem.hpp +++ b/LiteLoader/include/llapi/mc/BlockPlanterItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockPos.hpp b/LiteLoader/include/llapi/mc/BlockPos.hpp similarity index 99% rename from LiteLoader/Header/MC/BlockPos.hpp rename to LiteLoader/include/llapi/mc/BlockPos.hpp index 8e52ae3..1bcd96e 100644 --- a/LiteLoader/Header/MC/BlockPos.hpp +++ b/LiteLoader/include/llapi/mc/BlockPos.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" class Vec3; diff --git a/LiteLoader/Header/MC/BlockReducer.hpp b/LiteLoader/include/llapi/mc/BlockReducer.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockReducer.hpp rename to LiteLoader/include/llapi/mc/BlockReducer.hpp index 35b2fbb..3e74824 100644 --- a/LiteLoader/Header/MC/BlockReducer.hpp +++ b/LiteLoader/include/llapi/mc/BlockReducer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockSelector.hpp b/LiteLoader/include/llapi/mc/BlockSelector.hpp similarity index 94% rename from LiteLoader/Header/MC/BlockSelector.hpp rename to LiteLoader/include/llapi/mc/BlockSelector.hpp index 020b0b2..d45fd0e 100644 --- a/LiteLoader/Header/MC/BlockSelector.hpp +++ b/LiteLoader/include/llapi/mc/BlockSelector.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockSerializationUtils.hpp b/LiteLoader/include/llapi/mc/BlockSerializationUtils.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockSerializationUtils.hpp rename to LiteLoader/include/llapi/mc/BlockSerializationUtils.hpp index 54fc9c8..3278f05 100644 --- a/LiteLoader/Header/MC/BlockSerializationUtils.hpp +++ b/LiteLoader/include/llapi/mc/BlockSerializationUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockSet.hpp b/LiteLoader/include/llapi/mc/BlockSet.hpp similarity index 94% rename from LiteLoader/Header/MC/BlockSet.hpp rename to LiteLoader/include/llapi/mc/BlockSet.hpp index d6542b1..08387dc 100644 --- a/LiteLoader/Header/MC/BlockSet.hpp +++ b/LiteLoader/include/llapi/mc/BlockSet.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockSource.hpp b/LiteLoader/include/llapi/mc/BlockSource.hpp similarity index 99% rename from LiteLoader/Header/MC/BlockSource.hpp rename to LiteLoader/include/llapi/mc/BlockSource.hpp index ea72848..9c996a1 100644 --- a/LiteLoader/Header/MC/BlockSource.hpp +++ b/LiteLoader/include/llapi/mc/BlockSource.hpp @@ -1,15 +1,15 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "BlockInstance.hpp" #include "Dimension.hpp" #undef BEFORE_EXTRA -#include "MC/LevelChunk.hpp" -#include "MC/ChunkPos.hpp" +#include "LevelChunk.hpp" +#include "ChunkPos.hpp" class BlockSource { #define AFTER_EXTRA diff --git a/LiteLoader/Header/MC/BlockSourceListener.hpp b/LiteLoader/include/llapi/mc/BlockSourceListener.hpp similarity index 98% rename from LiteLoader/Header/MC/BlockSourceListener.hpp rename to LiteLoader/include/llapi/mc/BlockSourceListener.hpp index 9edc69d..84791b2 100644 --- a/LiteLoader/Header/MC/BlockSourceListener.hpp +++ b/LiteLoader/include/llapi/mc/BlockSourceListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockTickingQueue.hpp b/LiteLoader/include/llapi/mc/BlockTickingQueue.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockTickingQueue.hpp rename to LiteLoader/include/llapi/mc/BlockTickingQueue.hpp index 7d57688..de5f372 100644 --- a/LiteLoader/Header/MC/BlockTickingQueue.hpp +++ b/LiteLoader/include/llapi/mc/BlockTickingQueue.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockTypeRegistry.hpp b/LiteLoader/include/llapi/mc/BlockTypeRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/BlockTypeRegistry.hpp rename to LiteLoader/include/llapi/mc/BlockTypeRegistry.hpp index 6236699..7f93389 100644 --- a/LiteLoader/Header/MC/BlockTypeRegistry.hpp +++ b/LiteLoader/include/llapi/mc/BlockTypeRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockUtils.hpp b/LiteLoader/include/llapi/mc/BlockUtils.hpp similarity index 95% rename from LiteLoader/Header/MC/BlockUtils.hpp rename to LiteLoader/include/llapi/mc/BlockUtils.hpp index 2e07458..34d0a4a 100644 --- a/LiteLoader/Header/MC/BlockUtils.hpp +++ b/LiteLoader/include/llapi/mc/BlockUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlockVolume.hpp b/LiteLoader/include/llapi/mc/BlockVolume.hpp similarity index 96% rename from LiteLoader/Header/MC/BlockVolume.hpp rename to LiteLoader/include/llapi/mc/BlockVolume.hpp index 57dd8f9..a73949c 100644 --- a/LiteLoader/Header/MC/BlockVolume.hpp +++ b/LiteLoader/include/llapi/mc/BlockVolume.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlueFireBlock.hpp b/LiteLoader/include/llapi/mc/BlueFireBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BlueFireBlock.hpp rename to LiteLoader/include/llapi/mc/BlueFireBlock.hpp index 8717cdf..e137224 100644 --- a/LiteLoader/Header/MC/BlueFireBlock.hpp +++ b/LiteLoader/include/llapi/mc/BlueFireBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlueIceBlock.hpp b/LiteLoader/include/llapi/mc/BlueIceBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/BlueIceBlock.hpp rename to LiteLoader/include/llapi/mc/BlueIceBlock.hpp index 70b575d..6f721c5 100644 --- a/LiteLoader/Header/MC/BlueIceBlock.hpp +++ b/LiteLoader/include/llapi/mc/BlueIceBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BlueIceFeature.hpp b/LiteLoader/include/llapi/mc/BlueIceFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/BlueIceFeature.hpp rename to LiteLoader/include/llapi/mc/BlueIceFeature.hpp index 656ff28..fdd047a 100644 --- a/LiteLoader/Header/MC/BlueIceFeature.hpp +++ b/LiteLoader/include/llapi/mc/BlueIceFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Boat.hpp b/LiteLoader/include/llapi/mc/Boat.hpp similarity index 99% rename from LiteLoader/Header/MC/Boat.hpp rename to LiteLoader/include/llapi/mc/Boat.hpp index 287da4e..97085e1 100644 --- a/LiteLoader/Header/MC/Boat.hpp +++ b/LiteLoader/include/llapi/mc/Boat.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoatFrictionHelper.hpp b/LiteLoader/include/llapi/mc/BoatFrictionHelper.hpp similarity index 91% rename from LiteLoader/Header/MC/BoatFrictionHelper.hpp rename to LiteLoader/include/llapi/mc/BoatFrictionHelper.hpp index f2855fe..bafd4bd 100644 --- a/LiteLoader/Header/MC/BoatFrictionHelper.hpp +++ b/LiteLoader/include/llapi/mc/BoatFrictionHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoatItem.hpp b/LiteLoader/include/llapi/mc/BoatItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BoatItem.hpp rename to LiteLoader/include/llapi/mc/BoatItem.hpp index 313fc64..8283c29 100644 --- a/LiteLoader/Header/MC/BoatItem.hpp +++ b/LiteLoader/include/llapi/mc/BoatItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BodyControl.hpp b/LiteLoader/include/llapi/mc/BodyControl.hpp similarity index 95% rename from LiteLoader/Header/MC/BodyControl.hpp rename to LiteLoader/include/llapi/mc/BodyControl.hpp index 1253b88..1354419 100644 --- a/LiteLoader/Header/MC/BodyControl.hpp +++ b/LiteLoader/include/llapi/mc/BodyControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BodyControlSystem.hpp b/LiteLoader/include/llapi/mc/BodyControlSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BodyControlSystem.hpp rename to LiteLoader/include/llapi/mc/BodyControlSystem.hpp index 69cc1e9..12a4520 100644 --- a/LiteLoader/Header/MC/BodyControlSystem.hpp +++ b/LiteLoader/include/llapi/mc/BodyControlSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoneAnimationChannel.hpp b/LiteLoader/include/llapi/mc/BoneAnimationChannel.hpp similarity index 95% rename from LiteLoader/Header/MC/BoneAnimationChannel.hpp rename to LiteLoader/include/llapi/mc/BoneAnimationChannel.hpp index c789fdc..dcbebca 100644 --- a/LiteLoader/Header/MC/BoneAnimationChannel.hpp +++ b/LiteLoader/include/llapi/mc/BoneAnimationChannel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoneOrientation.hpp b/LiteLoader/include/llapi/mc/BoneOrientation.hpp similarity index 94% rename from LiteLoader/Header/MC/BoneOrientation.hpp rename to LiteLoader/include/llapi/mc/BoneOrientation.hpp index 862f8e4..8175a60 100644 --- a/LiteLoader/Header/MC/BoneOrientation.hpp +++ b/LiteLoader/include/llapi/mc/BoneOrientation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoneOrientationTransform.hpp b/LiteLoader/include/llapi/mc/BoneOrientationTransform.hpp similarity index 95% rename from LiteLoader/Header/MC/BoneOrientationTransform.hpp rename to LiteLoader/include/llapi/mc/BoneOrientationTransform.hpp index 23b6682..4824016 100644 --- a/LiteLoader/Header/MC/BoneOrientationTransform.hpp +++ b/LiteLoader/include/llapi/mc/BoneOrientationTransform.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BonusChestFeature.hpp b/LiteLoader/include/llapi/mc/BonusChestFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/BonusChestFeature.hpp rename to LiteLoader/include/llapi/mc/BonusChestFeature.hpp index f071006..387e9a2 100644 --- a/LiteLoader/Header/MC/BonusChestFeature.hpp +++ b/LiteLoader/include/llapi/mc/BonusChestFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BookCloningRecipe.hpp b/LiteLoader/include/llapi/mc/BookCloningRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/BookCloningRecipe.hpp rename to LiteLoader/include/llapi/mc/BookCloningRecipe.hpp index d3bdc52..db0b1a2 100644 --- a/LiteLoader/Header/MC/BookCloningRecipe.hpp +++ b/LiteLoader/include/llapi/mc/BookCloningRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BookEditPacket.hpp b/LiteLoader/include/llapi/mc/BookEditPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/BookEditPacket.hpp rename to LiteLoader/include/llapi/mc/BookEditPacket.hpp index dbebfe2..b1da118 100644 --- a/LiteLoader/Header/MC/BookEditPacket.hpp +++ b/LiteLoader/include/llapi/mc/BookEditPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BookshelfBlock.hpp b/LiteLoader/include/llapi/mc/BookshelfBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/BookshelfBlock.hpp rename to LiteLoader/include/llapi/mc/BookshelfBlock.hpp index ef68655..5bc73f7 100644 --- a/LiteLoader/Header/MC/BookshelfBlock.hpp +++ b/LiteLoader/include/llapi/mc/BookshelfBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoolOption.hpp b/LiteLoader/include/llapi/mc/BoolOption.hpp similarity index 96% rename from LiteLoader/Header/MC/BoolOption.hpp rename to LiteLoader/include/llapi/mc/BoolOption.hpp index 3023a39..8bc44b2 100644 --- a/LiteLoader/Header/MC/BoolOption.hpp +++ b/LiteLoader/include/llapi/mc/BoolOption.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "Option.hpp" diff --git a/LiteLoader/Header/MC/BoostItem.hpp b/LiteLoader/include/llapi/mc/BoostItem.hpp similarity index 95% rename from LiteLoader/Header/MC/BoostItem.hpp rename to LiteLoader/include/llapi/mc/BoostItem.hpp index e705f36..243fadf 100644 --- a/LiteLoader/Header/MC/BoostItem.hpp +++ b/LiteLoader/include/llapi/mc/BoostItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoostableComponent.hpp b/LiteLoader/include/llapi/mc/BoostableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BoostableComponent.hpp rename to LiteLoader/include/llapi/mc/BoostableComponent.hpp index f887cf9..1ebe8f3 100644 --- a/LiteLoader/Header/MC/BoostableComponent.hpp +++ b/LiteLoader/include/llapi/mc/BoostableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoostableDefinition.hpp b/LiteLoader/include/llapi/mc/BoostableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BoostableDefinition.hpp rename to LiteLoader/include/llapi/mc/BoostableDefinition.hpp index 1a2ffea..fe642cf 100644 --- a/LiteLoader/Header/MC/BoostableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BoostableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoostableSystem.hpp b/LiteLoader/include/llapi/mc/BoostableSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BoostableSystem.hpp rename to LiteLoader/include/llapi/mc/BoostableSystem.hpp index c2c6053..09732cf 100644 --- a/LiteLoader/Header/MC/BoostableSystem.hpp +++ b/LiteLoader/include/llapi/mc/BoostableSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BorderBlock.hpp b/LiteLoader/include/llapi/mc/BorderBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BorderBlock.hpp rename to LiteLoader/include/llapi/mc/BorderBlock.hpp index 3eeb953..74bd7ed 100644 --- a/LiteLoader/Header/MC/BorderBlock.hpp +++ b/LiteLoader/include/llapi/mc/BorderBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "WallBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BossComponent.hpp b/LiteLoader/include/llapi/mc/BossComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BossComponent.hpp rename to LiteLoader/include/llapi/mc/BossComponent.hpp index 3a3d2b0..cb71598 100644 --- a/LiteLoader/Header/MC/BossComponent.hpp +++ b/LiteLoader/include/llapi/mc/BossComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BossDefinition.hpp b/LiteLoader/include/llapi/mc/BossDefinition.hpp similarity index 95% rename from LiteLoader/Header/MC/BossDefinition.hpp rename to LiteLoader/include/llapi/mc/BossDefinition.hpp index 9516e7e..9ed794b 100644 --- a/LiteLoader/Header/MC/BossDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BossDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BossEventPacket.hpp b/LiteLoader/include/llapi/mc/BossEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/BossEventPacket.hpp rename to LiteLoader/include/llapi/mc/BossEventPacket.hpp index 8a58ea3..d5c4905 100644 --- a/LiteLoader/Header/MC/BossEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/BossEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BossSystem.hpp b/LiteLoader/include/llapi/mc/BossSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BossSystem.hpp rename to LiteLoader/include/llapi/mc/BossSystem.hpp index 032ad4a..384faa7 100644 --- a/LiteLoader/Header/MC/BossSystem.hpp +++ b/LiteLoader/include/llapi/mc/BossSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BottleItem.hpp b/LiteLoader/include/llapi/mc/BottleItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BottleItem.hpp rename to LiteLoader/include/llapi/mc/BottleItem.hpp index 311b2e0..d8c74b9 100644 --- a/LiteLoader/Header/MC/BottleItem.hpp +++ b/LiteLoader/include/llapi/mc/BottleItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BoundingBox.hpp b/LiteLoader/include/llapi/mc/BoundingBox.hpp similarity index 99% rename from LiteLoader/Header/MC/BoundingBox.hpp rename to LiteLoader/include/llapi/mc/BoundingBox.hpp index 3e14146..cc80966 100644 --- a/LiteLoader/Header/MC/BoundingBox.hpp +++ b/LiteLoader/include/llapi/mc/BoundingBox.hpp @@ -1,6 +1,6 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once -#include "../Global.h" +#include "llapi/Global.h" class BoundingBox { diff --git a/LiteLoader/Header/MC/Bounds.hpp b/LiteLoader/include/llapi/mc/Bounds.hpp similarity index 95% rename from LiteLoader/Header/MC/Bounds.hpp rename to LiteLoader/include/llapi/mc/Bounds.hpp index 4b20eb8..88e4a9c 100644 --- a/LiteLoader/Header/MC/Bounds.hpp +++ b/LiteLoader/include/llapi/mc/Bounds.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BowEnchant.hpp b/LiteLoader/include/llapi/mc/BowEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/BowEnchant.hpp rename to LiteLoader/include/llapi/mc/BowEnchant.hpp index d4187a1..21cfd08 100644 --- a/LiteLoader/Header/MC/BowEnchant.hpp +++ b/LiteLoader/include/llapi/mc/BowEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BowItem.hpp b/LiteLoader/include/llapi/mc/BowItem.hpp similarity index 98% rename from LiteLoader/Header/MC/BowItem.hpp rename to LiteLoader/include/llapi/mc/BowItem.hpp index 8a1324b..4e8c349 100644 --- a/LiteLoader/Header/MC/BowItem.hpp +++ b/LiteLoader/include/llapi/mc/BowItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakBlockDefinition.hpp b/LiteLoader/include/llapi/mc/BreakBlockDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BreakBlockDefinition.hpp rename to LiteLoader/include/llapi/mc/BreakBlockDefinition.hpp index 92157d4..488f583 100644 --- a/LiteLoader/Header/MC/BreakBlockDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BreakBlockDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/BreakBlockNode.hpp b/LiteLoader/include/llapi/mc/BreakBlockNode.hpp similarity index 95% rename from LiteLoader/Header/MC/BreakBlockNode.hpp rename to LiteLoader/include/llapi/mc/BreakBlockNode.hpp index b5c9801..3a31d47 100644 --- a/LiteLoader/Header/MC/BreakBlockNode.hpp +++ b/LiteLoader/include/llapi/mc/BreakBlockNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakBlocksComponent.hpp b/LiteLoader/include/llapi/mc/BreakBlocksComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BreakBlocksComponent.hpp rename to LiteLoader/include/llapi/mc/BreakBlocksComponent.hpp index 5974a79..3a91442 100644 --- a/LiteLoader/Header/MC/BreakBlocksComponent.hpp +++ b/LiteLoader/include/llapi/mc/BreakBlocksComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakBlocksDescription.hpp b/LiteLoader/include/llapi/mc/BreakBlocksDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/BreakBlocksDescription.hpp rename to LiteLoader/include/llapi/mc/BreakBlocksDescription.hpp index 1e4e5dc..5a639ac 100644 --- a/LiteLoader/Header/MC/BreakBlocksDescription.hpp +++ b/LiteLoader/include/llapi/mc/BreakBlocksDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakBlocksSystem.hpp b/LiteLoader/include/llapi/mc/BreakBlocksSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BreakBlocksSystem.hpp rename to LiteLoader/include/llapi/mc/BreakBlocksSystem.hpp index 27d54d7..0e410a5 100644 --- a/LiteLoader/Header/MC/BreakBlocksSystem.hpp +++ b/LiteLoader/include/llapi/mc/BreakBlocksSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakDoorAnnotationComponent.hpp b/LiteLoader/include/llapi/mc/BreakDoorAnnotationComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BreakDoorAnnotationComponent.hpp rename to LiteLoader/include/llapi/mc/BreakDoorAnnotationComponent.hpp index 4bf790c..15858e0 100644 --- a/LiteLoader/Header/MC/BreakDoorAnnotationComponent.hpp +++ b/LiteLoader/include/llapi/mc/BreakDoorAnnotationComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakDoorAnnotationDescription.hpp b/LiteLoader/include/llapi/mc/BreakDoorAnnotationDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/BreakDoorAnnotationDescription.hpp rename to LiteLoader/include/llapi/mc/BreakDoorAnnotationDescription.hpp index 7f78634..7cded82 100644 --- a/LiteLoader/Header/MC/BreakDoorAnnotationDescription.hpp +++ b/LiteLoader/include/llapi/mc/BreakDoorAnnotationDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakDoorAnnotationSystem.hpp b/LiteLoader/include/llapi/mc/BreakDoorAnnotationSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/BreakDoorAnnotationSystem.hpp rename to LiteLoader/include/llapi/mc/BreakDoorAnnotationSystem.hpp index 588c4ec..341778b 100644 --- a/LiteLoader/Header/MC/BreakDoorAnnotationSystem.hpp +++ b/LiteLoader/include/llapi/mc/BreakDoorAnnotationSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreakDoorGoal.hpp b/LiteLoader/include/llapi/mc/BreakDoorGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/BreakDoorGoal.hpp rename to LiteLoader/include/llapi/mc/BreakDoorGoal.hpp index 60bc3c8..87b9503 100644 --- a/LiteLoader/Header/MC/BreakDoorGoal.hpp +++ b/LiteLoader/include/llapi/mc/BreakDoorGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreathableComponent.hpp b/LiteLoader/include/llapi/mc/BreathableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BreathableComponent.hpp rename to LiteLoader/include/llapi/mc/BreathableComponent.hpp index 3429271..2793dde 100644 --- a/LiteLoader/Header/MC/BreathableComponent.hpp +++ b/LiteLoader/include/llapi/mc/BreathableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreathableDefinition.hpp b/LiteLoader/include/llapi/mc/BreathableDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/BreathableDefinition.hpp rename to LiteLoader/include/llapi/mc/BreathableDefinition.hpp index 06c2f97..1507795 100644 --- a/LiteLoader/Header/MC/BreathableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BreathableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreathableSystem.hpp b/LiteLoader/include/llapi/mc/BreathableSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BreathableSystem.hpp rename to LiteLoader/include/llapi/mc/BreathableSystem.hpp index 0c53181..3af0713 100644 --- a/LiteLoader/Header/MC/BreathableSystem.hpp +++ b/LiteLoader/include/llapi/mc/BreathableSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreatheAirGoal.hpp b/LiteLoader/include/llapi/mc/BreatheAirGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/BreatheAirGoal.hpp rename to LiteLoader/include/llapi/mc/BreatheAirGoal.hpp index 04f9389..893d49a 100644 --- a/LiteLoader/Header/MC/BreatheAirGoal.hpp +++ b/LiteLoader/include/llapi/mc/BreatheAirGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreedGoal.hpp b/LiteLoader/include/llapi/mc/BreedGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/BreedGoal.hpp rename to LiteLoader/include/llapi/mc/BreedGoal.hpp index da82280..e37871e 100644 --- a/LiteLoader/Header/MC/BreedGoal.hpp +++ b/LiteLoader/include/llapi/mc/BreedGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreedableComponent.hpp b/LiteLoader/include/llapi/mc/BreedableComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/BreedableComponent.hpp rename to LiteLoader/include/llapi/mc/BreedableComponent.hpp index b6b3633..2fedf94 100644 --- a/LiteLoader/Header/MC/BreedableComponent.hpp +++ b/LiteLoader/include/llapi/mc/BreedableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreedableDefinition.hpp b/LiteLoader/include/llapi/mc/BreedableDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/BreedableDefinition.hpp rename to LiteLoader/include/llapi/mc/BreedableDefinition.hpp index 2bdccfa..d7094c6 100644 --- a/LiteLoader/Header/MC/BreedableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BreedableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreedableSystem.hpp b/LiteLoader/include/llapi/mc/BreedableSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BreedableSystem.hpp rename to LiteLoader/include/llapi/mc/BreedableSystem.hpp index c4c9d3d..c60985e 100644 --- a/LiteLoader/Header/MC/BreedableSystem.hpp +++ b/LiteLoader/include/llapi/mc/BreedableSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BreedableType.hpp b/LiteLoader/include/llapi/mc/BreedableType.hpp similarity index 94% rename from LiteLoader/Header/MC/BreedableType.hpp rename to LiteLoader/include/llapi/mc/BreedableType.hpp index 7359893..a9d586c 100644 --- a/LiteLoader/Header/MC/BreedableType.hpp +++ b/LiteLoader/include/llapi/mc/BreedableType.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BrewingStandBlock.hpp b/LiteLoader/include/llapi/mc/BrewingStandBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BrewingStandBlock.hpp rename to LiteLoader/include/llapi/mc/BrewingStandBlock.hpp index ff0ebe6..9ec0154 100644 --- a/LiteLoader/Header/MC/BrewingStandBlock.hpp +++ b/LiteLoader/include/llapi/mc/BrewingStandBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BrewingStandBlockActor.hpp b/LiteLoader/include/llapi/mc/BrewingStandBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/BrewingStandBlockActor.hpp rename to LiteLoader/include/llapi/mc/BrewingStandBlockActor.hpp index f14f954..b21cf4f 100644 --- a/LiteLoader/Header/MC/BrewingStandBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/BrewingStandBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BrewingStandContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/BrewingStandContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/BrewingStandContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/BrewingStandContainerManagerModel.hpp index e3f8f16..22eb363 100644 --- a/LiteLoader/Header/MC/BrewingStandContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/BrewingStandContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BribeableComponent.hpp b/LiteLoader/include/llapi/mc/BribeableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BribeableComponent.hpp rename to LiteLoader/include/llapi/mc/BribeableComponent.hpp index a8af4c5..cb689b9 100644 --- a/LiteLoader/Header/MC/BribeableComponent.hpp +++ b/LiteLoader/include/llapi/mc/BribeableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BribeableDefinition.hpp b/LiteLoader/include/llapi/mc/BribeableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/BribeableDefinition.hpp rename to LiteLoader/include/llapi/mc/BribeableDefinition.hpp index 9f26164..02a3712 100644 --- a/LiteLoader/Header/MC/BribeableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BribeableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BribeableSystem.hpp b/LiteLoader/include/llapi/mc/BribeableSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BribeableSystem.hpp rename to LiteLoader/include/llapi/mc/BribeableSystem.hpp index b4d9b50..90b5b2b 100644 --- a/LiteLoader/Header/MC/BribeableSystem.hpp +++ b/LiteLoader/include/llapi/mc/BribeableSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Brightness.hpp b/LiteLoader/include/llapi/mc/Brightness.hpp similarity index 95% rename from LiteLoader/Header/MC/Brightness.hpp rename to LiteLoader/include/llapi/mc/Brightness.hpp index 4a9bf74..f631b15 100644 --- a/LiteLoader/Header/MC/Brightness.hpp +++ b/LiteLoader/include/llapi/mc/Brightness.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BubbleColumnBlock.hpp b/LiteLoader/include/llapi/mc/BubbleColumnBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/BubbleColumnBlock.hpp rename to LiteLoader/include/llapi/mc/BubbleColumnBlock.hpp index 884e1e0..4dc2984 100644 --- a/LiteLoader/Header/MC/BubbleColumnBlock.hpp +++ b/LiteLoader/include/llapi/mc/BubbleColumnBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BucketItem.hpp b/LiteLoader/include/llapi/mc/BucketItem.hpp similarity index 99% rename from LiteLoader/Header/MC/BucketItem.hpp rename to LiteLoader/include/llapi/mc/BucketItem.hpp index 908e59e..b2fd93b 100644 --- a/LiteLoader/Header/MC/BucketItem.hpp +++ b/LiteLoader/include/llapi/mc/BucketItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BucketableComponent.hpp b/LiteLoader/include/llapi/mc/BucketableComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/BucketableComponent.hpp rename to LiteLoader/include/llapi/mc/BucketableComponent.hpp index f7dff9e..e9d19be 100644 --- a/LiteLoader/Header/MC/BucketableComponent.hpp +++ b/LiteLoader/include/llapi/mc/BucketableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BucketableDescription.hpp b/LiteLoader/include/llapi/mc/BucketableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/BucketableDescription.hpp rename to LiteLoader/include/llapi/mc/BucketableDescription.hpp index 68d9c27..94d937e 100644 --- a/LiteLoader/Header/MC/BucketableDescription.hpp +++ b/LiteLoader/include/llapi/mc/BucketableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BuoyancyComponent.hpp b/LiteLoader/include/llapi/mc/BuoyancyComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/BuoyancyComponent.hpp rename to LiteLoader/include/llapi/mc/BuoyancyComponent.hpp index 48f61fc..730170c 100644 --- a/LiteLoader/Header/MC/BuoyancyComponent.hpp +++ b/LiteLoader/include/llapi/mc/BuoyancyComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BuoyancyDefinition.hpp b/LiteLoader/include/llapi/mc/BuoyancyDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/BuoyancyDefinition.hpp rename to LiteLoader/include/llapi/mc/BuoyancyDefinition.hpp index 5563596..b9718c2 100644 --- a/LiteLoader/Header/MC/BuoyancyDefinition.hpp +++ b/LiteLoader/include/llapi/mc/BuoyancyDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/BuoyancySystem.hpp b/LiteLoader/include/llapi/mc/BuoyancySystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BuoyancySystem.hpp rename to LiteLoader/include/llapi/mc/BuoyancySystem.hpp index 32edf46..065f9d4 100644 --- a/LiteLoader/Header/MC/BuoyancySystem.hpp +++ b/LiteLoader/include/llapi/mc/BuoyancySystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BuriedTreasureFeature.hpp b/LiteLoader/include/llapi/mc/BuriedTreasureFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/BuriedTreasureFeature.hpp rename to LiteLoader/include/llapi/mc/BuriedTreasureFeature.hpp index 54af08a..571d90e 100644 --- a/LiteLoader/Header/MC/BuriedTreasureFeature.hpp +++ b/LiteLoader/include/llapi/mc/BuriedTreasureFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BuriedTreasurePiece.hpp b/LiteLoader/include/llapi/mc/BuriedTreasurePiece.hpp similarity index 97% rename from LiteLoader/Header/MC/BuriedTreasurePiece.hpp rename to LiteLoader/include/llapi/mc/BuriedTreasurePiece.hpp index 2a05db7..8a192b9 100644 --- a/LiteLoader/Header/MC/BuriedTreasurePiece.hpp +++ b/LiteLoader/include/llapi/mc/BuriedTreasurePiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BuriedTreasureStart.hpp b/LiteLoader/include/llapi/mc/BuriedTreasureStart.hpp similarity index 96% rename from LiteLoader/Header/MC/BuriedTreasureStart.hpp rename to LiteLoader/include/llapi/mc/BuriedTreasureStart.hpp index 4bb24c8..78cf825 100644 --- a/LiteLoader/Header/MC/BuriedTreasureStart.hpp +++ b/LiteLoader/include/llapi/mc/BuriedTreasureStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BurnsInDaylightSystem.hpp b/LiteLoader/include/llapi/mc/BurnsInDaylightSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/BurnsInDaylightSystem.hpp rename to LiteLoader/include/llapi/mc/BurnsInDaylightSystem.hpp index 982234b..49f13b3 100644 --- a/LiteLoader/Header/MC/BurnsInDaylightSystem.hpp +++ b/LiteLoader/include/llapi/mc/BurnsInDaylightSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BurstReactionComponent.hpp b/LiteLoader/include/llapi/mc/BurstReactionComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/BurstReactionComponent.hpp rename to LiteLoader/include/llapi/mc/BurstReactionComponent.hpp index 4a9883b..696a373 100644 --- a/LiteLoader/Header/MC/BurstReactionComponent.hpp +++ b/LiteLoader/include/llapi/mc/BurstReactionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BushBlock.hpp b/LiteLoader/include/llapi/mc/BushBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/BushBlock.hpp rename to LiteLoader/include/llapi/mc/BushBlock.hpp index ef8343b..056c7d2 100644 --- a/LiteLoader/Header/MC/BushBlock.hpp +++ b/LiteLoader/include/llapi/mc/BushBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ButtonBlock.hpp b/LiteLoader/include/llapi/mc/ButtonBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ButtonBlock.hpp rename to LiteLoader/include/llapi/mc/ButtonBlock.hpp index cddf850..edfb34a 100644 --- a/LiteLoader/Header/MC/ButtonBlock.hpp +++ b/LiteLoader/include/llapi/mc/ButtonBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ByteArrayTag.hpp b/LiteLoader/include/llapi/mc/ByteArrayTag.hpp similarity index 98% rename from LiteLoader/Header/MC/ByteArrayTag.hpp rename to LiteLoader/include/llapi/mc/ByteArrayTag.hpp index 8db3025..b5f3ee2 100644 --- a/LiteLoader/Header/MC/ByteArrayTag.hpp +++ b/LiteLoader/include/llapi/mc/ByteArrayTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ByteTag.hpp b/LiteLoader/include/llapi/mc/ByteTag.hpp similarity index 97% rename from LiteLoader/Header/MC/ByteTag.hpp rename to LiteLoader/include/llapi/mc/ByteTag.hpp index a3d14cd..84c8aff 100644 --- a/LiteLoader/Header/MC/ByteTag.hpp +++ b/LiteLoader/include/llapi/mc/ByteTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BytesDataInput.hpp b/LiteLoader/include/llapi/mc/BytesDataInput.hpp similarity index 96% rename from LiteLoader/Header/MC/BytesDataInput.hpp rename to LiteLoader/include/llapi/mc/BytesDataInput.hpp index cc6e467..affcb6f 100644 --- a/LiteLoader/Header/MC/BytesDataInput.hpp +++ b/LiteLoader/include/llapi/mc/BytesDataInput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/BytesDataOutput.hpp b/LiteLoader/include/llapi/mc/BytesDataOutput.hpp similarity index 96% rename from LiteLoader/Header/MC/BytesDataOutput.hpp rename to LiteLoader/include/llapi/mc/BytesDataOutput.hpp index a54fe26..47fedc8 100644 --- a/LiteLoader/Header/MC/BytesDataOutput.hpp +++ b/LiteLoader/include/llapi/mc/BytesDataOutput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CDScopedEvent.hpp b/LiteLoader/include/llapi/mc/CDScopedEvent.hpp similarity index 94% rename from LiteLoader/Header/MC/CDScopedEvent.hpp rename to LiteLoader/include/llapi/mc/CDScopedEvent.hpp index 478c00d..e4514a0 100644 --- a/LiteLoader/Header/MC/CDScopedEvent.hpp +++ b/LiteLoader/include/llapi/mc/CDScopedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CSHA1.hpp b/LiteLoader/include/llapi/mc/CSHA1.hpp similarity index 95% rename from LiteLoader/Header/MC/CSHA1.hpp rename to LiteLoader/include/llapi/mc/CSHA1.hpp index 9782401..f7b37d1 100644 --- a/LiteLoader/Header/MC/CSHA1.hpp +++ b/LiteLoader/include/llapi/mc/CSHA1.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CactusBlock.hpp b/LiteLoader/include/llapi/mc/CactusBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/CactusBlock.hpp rename to LiteLoader/include/llapi/mc/CactusBlock.hpp index a00111a..d1a77ff 100644 --- a/LiteLoader/Header/MC/CactusBlock.hpp +++ b/LiteLoader/include/llapi/mc/CactusBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CactusFeature.hpp b/LiteLoader/include/llapi/mc/CactusFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/CactusFeature.hpp rename to LiteLoader/include/llapi/mc/CactusFeature.hpp index 4d4c5c3..d778a07 100644 --- a/LiteLoader/Header/MC/CactusFeature.hpp +++ b/LiteLoader/include/llapi/mc/CactusFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CakeBlock.hpp b/LiteLoader/include/llapi/mc/CakeBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/CakeBlock.hpp rename to LiteLoader/include/llapi/mc/CakeBlock.hpp index aecf86f..c446921 100644 --- a/LiteLoader/Header/MC/CakeBlock.hpp +++ b/LiteLoader/include/llapi/mc/CakeBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CameraBlock.hpp b/LiteLoader/include/llapi/mc/CameraBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/CameraBlock.hpp rename to LiteLoader/include/llapi/mc/CameraBlock.hpp index 73bf929..ab5a6f3 100644 --- a/LiteLoader/Header/MC/CameraBlock.hpp +++ b/LiteLoader/include/llapi/mc/CameraBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CameraItem.hpp b/LiteLoader/include/llapi/mc/CameraItem.hpp similarity index 97% rename from LiteLoader/Header/MC/CameraItem.hpp rename to LiteLoader/include/llapi/mc/CameraItem.hpp index e065a54..54fdb5b 100644 --- a/LiteLoader/Header/MC/CameraItem.hpp +++ b/LiteLoader/include/llapi/mc/CameraItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CameraItemComponent.hpp b/LiteLoader/include/llapi/mc/CameraItemComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/CameraItemComponent.hpp rename to LiteLoader/include/llapi/mc/CameraItemComponent.hpp index 71f8b52..163e3d7 100644 --- a/LiteLoader/Header/MC/CameraItemComponent.hpp +++ b/LiteLoader/include/llapi/mc/CameraItemComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CameraPacket.hpp b/LiteLoader/include/llapi/mc/CameraPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/CameraPacket.hpp rename to LiteLoader/include/llapi/mc/CameraPacket.hpp index f02c008..1eee4fe 100644 --- a/LiteLoader/Header/MC/CameraPacket.hpp +++ b/LiteLoader/include/llapi/mc/CameraPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CampfireBlock.hpp b/LiteLoader/include/llapi/mc/CampfireBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/CampfireBlock.hpp rename to LiteLoader/include/llapi/mc/CampfireBlock.hpp index d70c67d..e2afbcb 100644 --- a/LiteLoader/Header/MC/CampfireBlock.hpp +++ b/LiteLoader/include/llapi/mc/CampfireBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CampfireBlockActor.hpp b/LiteLoader/include/llapi/mc/CampfireBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/CampfireBlockActor.hpp rename to LiteLoader/include/llapi/mc/CampfireBlockActor.hpp index 32d38e9..16551a5 100644 --- a/LiteLoader/Header/MC/CampfireBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/CampfireBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CanClimbDescription.hpp b/LiteLoader/include/llapi/mc/CanClimbDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/CanClimbDescription.hpp rename to LiteLoader/include/llapi/mc/CanClimbDescription.hpp index 2739082..a3468db 100644 --- a/LiteLoader/Header/MC/CanClimbDescription.hpp +++ b/LiteLoader/include/llapi/mc/CanClimbDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CanFlyDescription.hpp b/LiteLoader/include/llapi/mc/CanFlyDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/CanFlyDescription.hpp rename to LiteLoader/include/llapi/mc/CanFlyDescription.hpp index 954791f..a7fcf54 100644 --- a/LiteLoader/Header/MC/CanFlyDescription.hpp +++ b/LiteLoader/include/llapi/mc/CanFlyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CanPowerJumpDescription.hpp b/LiteLoader/include/llapi/mc/CanPowerJumpDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/CanPowerJumpDescription.hpp rename to LiteLoader/include/llapi/mc/CanPowerJumpDescription.hpp index 3abe516..adf2ca7 100644 --- a/LiteLoader/Header/MC/CanPowerJumpDescription.hpp +++ b/LiteLoader/include/llapi/mc/CanPowerJumpDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CanyonFeature.hpp b/LiteLoader/include/llapi/mc/CanyonFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/CanyonFeature.hpp rename to LiteLoader/include/llapi/mc/CanyonFeature.hpp index 3fd2a7a..2efd9b3 100644 --- a/LiteLoader/Header/MC/CanyonFeature.hpp +++ b/LiteLoader/include/llapi/mc/CanyonFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CapacitorComponent.hpp b/LiteLoader/include/llapi/mc/CapacitorComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/CapacitorComponent.hpp rename to LiteLoader/include/llapi/mc/CapacitorComponent.hpp index 479acdd..5f23f2d 100644 --- a/LiteLoader/Header/MC/CapacitorComponent.hpp +++ b/LiteLoader/include/llapi/mc/CapacitorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CarrotBlock.hpp b/LiteLoader/include/llapi/mc/CarrotBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/CarrotBlock.hpp rename to LiteLoader/include/llapi/mc/CarrotBlock.hpp index 7ed98b1..6f66061 100644 --- a/LiteLoader/Header/MC/CarrotBlock.hpp +++ b/LiteLoader/include/llapi/mc/CarrotBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "CropBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CarrotOnAStickItem.hpp b/LiteLoader/include/llapi/mc/CarrotOnAStickItem.hpp similarity index 98% rename from LiteLoader/Header/MC/CarrotOnAStickItem.hpp rename to LiteLoader/include/llapi/mc/CarrotOnAStickItem.hpp index 5783483..86c7edc 100644 --- a/LiteLoader/Header/MC/CarrotOnAStickItem.hpp +++ b/LiteLoader/include/llapi/mc/CarrotOnAStickItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CartographyContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/CartographyContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/CartographyContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/CartographyContainerManagerModel.hpp index cfed539..394ec9b 100644 --- a/LiteLoader/Header/MC/CartographyContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/CartographyContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CartographyTableBlock.hpp b/LiteLoader/include/llapi/mc/CartographyTableBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/CartographyTableBlock.hpp rename to LiteLoader/include/llapi/mc/CartographyTableBlock.hpp index 51ef95c..46aea93 100644 --- a/LiteLoader/Header/MC/CartographyTableBlock.hpp +++ b/LiteLoader/include/llapi/mc/CartographyTableBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Cat.hpp b/LiteLoader/include/llapi/mc/Cat.hpp similarity index 98% rename from LiteLoader/Header/MC/Cat.hpp rename to LiteLoader/include/llapi/mc/Cat.hpp index 52f28d0..a0478eb 100644 --- a/LiteLoader/Header/MC/Cat.hpp +++ b/LiteLoader/include/llapi/mc/Cat.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/CatchFireSubcomponent.hpp b/LiteLoader/include/llapi/mc/CatchFireSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/CatchFireSubcomponent.hpp rename to LiteLoader/include/llapi/mc/CatchFireSubcomponent.hpp index 22c60d9..27fb373 100644 --- a/LiteLoader/Header/MC/CatchFireSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/CatchFireSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CauldronBlock.hpp b/LiteLoader/include/llapi/mc/CauldronBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/CauldronBlock.hpp rename to LiteLoader/include/llapi/mc/CauldronBlock.hpp index 84ff695..e291f7a 100644 --- a/LiteLoader/Header/MC/CauldronBlock.hpp +++ b/LiteLoader/include/llapi/mc/CauldronBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MinecraftEventing.hpp" #include "ActorBlock.hpp" diff --git a/LiteLoader/Header/MC/CauldronBlockActor.hpp b/LiteLoader/include/llapi/mc/CauldronBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/CauldronBlockActor.hpp rename to LiteLoader/include/llapi/mc/CauldronBlockActor.hpp index ef49876..152f556 100644 --- a/LiteLoader/Header/MC/CauldronBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/CauldronBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CaveSpider.hpp b/LiteLoader/include/llapi/mc/CaveSpider.hpp similarity index 98% rename from LiteLoader/Header/MC/CaveSpider.hpp rename to LiteLoader/include/llapi/mc/CaveSpider.hpp index 75b50e6..1d97dc1 100644 --- a/LiteLoader/Header/MC/CaveSpider.hpp +++ b/LiteLoader/include/llapi/mc/CaveSpider.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Spider.hpp" diff --git a/LiteLoader/Header/MC/CelebrateHuntDefinition.hpp b/LiteLoader/include/llapi/mc/CelebrateHuntDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/CelebrateHuntDefinition.hpp rename to LiteLoader/include/llapi/mc/CelebrateHuntDefinition.hpp index d30bdb6..9638b6b 100644 --- a/LiteLoader/Header/MC/CelebrateHuntDefinition.hpp +++ b/LiteLoader/include/llapi/mc/CelebrateHuntDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CelebrateHuntSystem.hpp b/LiteLoader/include/llapi/mc/CelebrateHuntSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/CelebrateHuntSystem.hpp rename to LiteLoader/include/llapi/mc/CelebrateHuntSystem.hpp index 42ed00c..c97c78c 100644 --- a/LiteLoader/Header/MC/CelebrateHuntSystem.hpp +++ b/LiteLoader/include/llapi/mc/CelebrateHuntSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CelebrateHuntSystemInternal.hpp b/LiteLoader/include/llapi/mc/CelebrateHuntSystemInternal.hpp similarity index 94% rename from LiteLoader/Header/MC/CelebrateHuntSystemInternal.hpp rename to LiteLoader/include/llapi/mc/CelebrateHuntSystemInternal.hpp index 01e77e4..12b4350 100644 --- a/LiteLoader/Header/MC/CelebrateHuntSystemInternal.hpp +++ b/LiteLoader/include/llapi/mc/CelebrateHuntSystemInternal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CentralSpikedFeature.hpp b/LiteLoader/include/llapi/mc/CentralSpikedFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/CentralSpikedFeature.hpp rename to LiteLoader/include/llapi/mc/CentralSpikedFeature.hpp index 73c1274..27fae26 100644 --- a/LiteLoader/Header/MC/CentralSpikedFeature.hpp +++ b/LiteLoader/include/llapi/mc/CentralSpikedFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Certificate.hpp b/LiteLoader/include/llapi/mc/Certificate.hpp similarity index 96% rename from LiteLoader/Header/MC/Certificate.hpp rename to LiteLoader/include/llapi/mc/Certificate.hpp index b60c104..164a20f 100644 --- a/LiteLoader/Header/MC/Certificate.hpp +++ b/LiteLoader/include/llapi/mc/Certificate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChainBlock.hpp b/LiteLoader/include/llapi/mc/ChainBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ChainBlock.hpp rename to LiteLoader/include/llapi/mc/ChainBlock.hpp index afcd9cc..a7bac39 100644 --- a/LiteLoader/Header/MC/ChainBlock.hpp +++ b/LiteLoader/include/llapi/mc/ChainBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChalkboardBlockActor.hpp b/LiteLoader/include/llapi/mc/ChalkboardBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/ChalkboardBlockActor.hpp rename to LiteLoader/include/llapi/mc/ChalkboardBlockActor.hpp index cabc678..1bfadd4 100644 --- a/LiteLoader/Header/MC/ChalkboardBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/ChalkboardBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChanceInformation.hpp b/LiteLoader/include/llapi/mc/ChanceInformation.hpp similarity index 95% rename from LiteLoader/Header/MC/ChanceInformation.hpp rename to LiteLoader/include/llapi/mc/ChanceInformation.hpp index 5c75243..969b0af 100644 --- a/LiteLoader/Header/MC/ChanceInformation.hpp +++ b/LiteLoader/include/llapi/mc/ChanceInformation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChangeDimensionPacket.hpp b/LiteLoader/include/llapi/mc/ChangeDimensionPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ChangeDimensionPacket.hpp rename to LiteLoader/include/llapi/mc/ChangeDimensionPacket.hpp index 302f4df..78f90fb 100644 --- a/LiteLoader/Header/MC/ChangeDimensionPacket.hpp +++ b/LiteLoader/include/llapi/mc/ChangeDimensionPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChangeSettingCommand.hpp b/LiteLoader/include/llapi/mc/ChangeSettingCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ChangeSettingCommand.hpp rename to LiteLoader/include/llapi/mc/ChangeSettingCommand.hpp index d585ac2..4da8a8d 100644 --- a/LiteLoader/Header/MC/ChangeSettingCommand.hpp +++ b/LiteLoader/include/llapi/mc/ChangeSettingCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChargeAttackDefinition.hpp b/LiteLoader/include/llapi/mc/ChargeAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/ChargeAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/ChargeAttackDefinition.hpp index d2de680..8193dd7 100644 --- a/LiteLoader/Header/MC/ChargeAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ChargeAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChargeAttackGoal.hpp b/LiteLoader/include/llapi/mc/ChargeAttackGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/ChargeAttackGoal.hpp rename to LiteLoader/include/llapi/mc/ChargeAttackGoal.hpp index 724304e..1fb9cb1 100644 --- a/LiteLoader/Header/MC/ChargeAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/ChargeAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChargeHeldItemDefinition.hpp b/LiteLoader/include/llapi/mc/ChargeHeldItemDefinition.hpp similarity index 95% rename from LiteLoader/Header/MC/ChargeHeldItemDefinition.hpp rename to LiteLoader/include/llapi/mc/ChargeHeldItemDefinition.hpp index ece5da3..5fc725c 100644 --- a/LiteLoader/Header/MC/ChargeHeldItemDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ChargeHeldItemDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChargeHeldItemGoal.hpp b/LiteLoader/include/llapi/mc/ChargeHeldItemGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/ChargeHeldItemGoal.hpp rename to LiteLoader/include/llapi/mc/ChargeHeldItemGoal.hpp index 7a1042b..ba2211d 100644 --- a/LiteLoader/Header/MC/ChargeHeldItemGoal.hpp +++ b/LiteLoader/include/llapi/mc/ChargeHeldItemGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemicalHeatBlock.hpp b/LiteLoader/include/llapi/mc/ChemicalHeatBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ChemicalHeatBlock.hpp rename to LiteLoader/include/llapi/mc/ChemicalHeatBlock.hpp index 0e9243a..24eaf3b 100644 --- a/LiteLoader/Header/MC/ChemicalHeatBlock.hpp +++ b/LiteLoader/include/llapi/mc/ChemicalHeatBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemistryAuxDataBlockItem.hpp b/LiteLoader/include/llapi/mc/ChemistryAuxDataBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ChemistryAuxDataBlockItem.hpp rename to LiteLoader/include/llapi/mc/ChemistryAuxDataBlockItem.hpp index b11a3a1..5c67734 100644 --- a/LiteLoader/Header/MC/ChemistryAuxDataBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/ChemistryAuxDataBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "AuxDataBlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemistryIngredient.hpp b/LiteLoader/include/llapi/mc/ChemistryIngredient.hpp similarity index 95% rename from LiteLoader/Header/MC/ChemistryIngredient.hpp rename to LiteLoader/include/llapi/mc/ChemistryIngredient.hpp index 92efffe..fb23f7a 100644 --- a/LiteLoader/Header/MC/ChemistryIngredient.hpp +++ b/LiteLoader/include/llapi/mc/ChemistryIngredient.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemistryItem.hpp b/LiteLoader/include/llapi/mc/ChemistryItem.hpp similarity index 97% rename from LiteLoader/Header/MC/ChemistryItem.hpp rename to LiteLoader/include/llapi/mc/ChemistryItem.hpp index af6e475..dd8a1e8 100644 --- a/LiteLoader/Header/MC/ChemistryItem.hpp +++ b/LiteLoader/include/llapi/mc/ChemistryItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemistryRecipes.hpp b/LiteLoader/include/llapi/mc/ChemistryRecipes.hpp similarity index 95% rename from LiteLoader/Header/MC/ChemistryRecipes.hpp rename to LiteLoader/include/llapi/mc/ChemistryRecipes.hpp index 93b6e59..d30e9f9 100644 --- a/LiteLoader/Header/MC/ChemistryRecipes.hpp +++ b/LiteLoader/include/llapi/mc/ChemistryRecipes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemistryStickItem.hpp b/LiteLoader/include/llapi/mc/ChemistryStickItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ChemistryStickItem.hpp rename to LiteLoader/include/llapi/mc/ChemistryStickItem.hpp index 333f404..a3fab71 100644 --- a/LiteLoader/Header/MC/ChemistryStickItem.hpp +++ b/LiteLoader/include/llapi/mc/ChemistryStickItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemistryTableBlock.hpp b/LiteLoader/include/llapi/mc/ChemistryTableBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ChemistryTableBlock.hpp rename to LiteLoader/include/llapi/mc/ChemistryTableBlock.hpp index cec5295..1ef6d6d 100644 --- a/LiteLoader/Header/MC/ChemistryTableBlock.hpp +++ b/LiteLoader/include/llapi/mc/ChemistryTableBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChemistryTableBlockActor.hpp b/LiteLoader/include/llapi/mc/ChemistryTableBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/ChemistryTableBlockActor.hpp rename to LiteLoader/include/llapi/mc/ChemistryTableBlockActor.hpp index 1385bb0..19d1b1f 100644 --- a/LiteLoader/Header/MC/ChemistryTableBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/ChemistryTableBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChestBlock.hpp b/LiteLoader/include/llapi/mc/ChestBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ChestBlock.hpp rename to LiteLoader/include/llapi/mc/ChestBlock.hpp index dde9197..149e3e7 100644 --- a/LiteLoader/Header/MC/ChestBlock.hpp +++ b/LiteLoader/include/llapi/mc/ChestBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChestBlockActor.hpp b/LiteLoader/include/llapi/mc/ChestBlockActor.hpp similarity index 99% rename from LiteLoader/Header/MC/ChestBlockActor.hpp rename to LiteLoader/include/llapi/mc/ChestBlockActor.hpp index 630841e..7ef4cc5 100644 --- a/LiteLoader/Header/MC/ChestBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/ChestBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChestContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/ChestContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/ChestContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/ChestContainerManagerModel.hpp index d7fa577..a4db67b 100644 --- a/LiteLoader/Header/MC/ChestContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/ChestContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LevelContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Chicken.hpp b/LiteLoader/include/llapi/mc/Chicken.hpp similarity index 98% rename from LiteLoader/Header/MC/Chicken.hpp rename to LiteLoader/include/llapi/mc/Chicken.hpp index 7d7bcda..16579b4 100644 --- a/LiteLoader/Header/MC/Chicken.hpp +++ b/LiteLoader/include/llapi/mc/Chicken.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/ChorusFlowerBlock.hpp b/LiteLoader/include/llapi/mc/ChorusFlowerBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ChorusFlowerBlock.hpp rename to LiteLoader/include/llapi/mc/ChorusFlowerBlock.hpp index 3171167..63a51ed 100644 --- a/LiteLoader/Header/MC/ChorusFlowerBlock.hpp +++ b/LiteLoader/include/llapi/mc/ChorusFlowerBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChorusPlantBlock.hpp b/LiteLoader/include/llapi/mc/ChorusPlantBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ChorusPlantBlock.hpp rename to LiteLoader/include/llapi/mc/ChorusPlantBlock.hpp index c2c87ef..24e60e1 100644 --- a/LiteLoader/Header/MC/ChorusPlantBlock.hpp +++ b/LiteLoader/include/llapi/mc/ChorusPlantBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChunkBlockPos.hpp b/LiteLoader/include/llapi/mc/ChunkBlockPos.hpp similarity index 98% rename from LiteLoader/Header/MC/ChunkBlockPos.hpp rename to LiteLoader/include/llapi/mc/ChunkBlockPos.hpp index ba52ff8..8de77d8 100644 --- a/LiteLoader/Header/MC/ChunkBlockPos.hpp +++ b/LiteLoader/include/llapi/mc/ChunkBlockPos.hpp @@ -5,7 +5,7 @@ */ #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/ChunkBuildOrderPolicy.hpp b/LiteLoader/include/llapi/mc/ChunkBuildOrderPolicy.hpp similarity index 97% rename from LiteLoader/Header/MC/ChunkBuildOrderPolicy.hpp rename to LiteLoader/include/llapi/mc/ChunkBuildOrderPolicy.hpp index d8bc0e6..b51886e 100644 --- a/LiteLoader/Header/MC/ChunkBuildOrderPolicy.hpp +++ b/LiteLoader/include/llapi/mc/ChunkBuildOrderPolicy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChunkBuildOrderPolicyBase.hpp b/LiteLoader/include/llapi/mc/ChunkBuildOrderPolicyBase.hpp similarity index 96% rename from LiteLoader/Header/MC/ChunkBuildOrderPolicyBase.hpp rename to LiteLoader/include/llapi/mc/ChunkBuildOrderPolicyBase.hpp index 8b0e9bd..73ed832 100644 --- a/LiteLoader/Header/MC/ChunkBuildOrderPolicyBase.hpp +++ b/LiteLoader/include/llapi/mc/ChunkBuildOrderPolicyBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChunkPos.hpp b/LiteLoader/include/llapi/mc/ChunkPos.hpp similarity index 96% rename from LiteLoader/Header/MC/ChunkPos.hpp rename to LiteLoader/include/llapi/mc/ChunkPos.hpp index 9288238..04159c3 100644 --- a/LiteLoader/Header/MC/ChunkPos.hpp +++ b/LiteLoader/include/llapi/mc/ChunkPos.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChunkRadiusUpdatedPacket.hpp b/LiteLoader/include/llapi/mc/ChunkRadiusUpdatedPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ChunkRadiusUpdatedPacket.hpp rename to LiteLoader/include/llapi/mc/ChunkRadiusUpdatedPacket.hpp index 2623ef8..e2166d8 100644 --- a/LiteLoader/Header/MC/ChunkRadiusUpdatedPacket.hpp +++ b/LiteLoader/include/llapi/mc/ChunkRadiusUpdatedPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChunkSource.hpp b/LiteLoader/include/llapi/mc/ChunkSource.hpp similarity index 99% rename from LiteLoader/Header/MC/ChunkSource.hpp rename to LiteLoader/include/llapi/mc/ChunkSource.hpp index f879bb4..bc10f3f 100644 --- a/LiteLoader/Header/MC/ChunkSource.hpp +++ b/LiteLoader/include/llapi/mc/ChunkSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ChunkViewSource.hpp b/LiteLoader/include/llapi/mc/ChunkViewSource.hpp similarity index 98% rename from LiteLoader/Header/MC/ChunkViewSource.hpp rename to LiteLoader/include/llapi/mc/ChunkViewSource.hpp index cb9d5f1..b9e2f0c 100644 --- a/LiteLoader/Header/MC/ChunkViewSource.hpp +++ b/LiteLoader/include/llapi/mc/ChunkViewSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChunkSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CircleAroundAnchorDefinition.hpp b/LiteLoader/include/llapi/mc/CircleAroundAnchorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/CircleAroundAnchorDefinition.hpp rename to LiteLoader/include/llapi/mc/CircleAroundAnchorDefinition.hpp index f93bd0e..02cfba0 100644 --- a/LiteLoader/Header/MC/CircleAroundAnchorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/CircleAroundAnchorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CircleAroundAnchorGoal.hpp b/LiteLoader/include/llapi/mc/CircleAroundAnchorGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/CircleAroundAnchorGoal.hpp rename to LiteLoader/include/llapi/mc/CircleAroundAnchorGoal.hpp index 077eebd..2fd43d1 100644 --- a/LiteLoader/Header/MC/CircleAroundAnchorGoal.hpp +++ b/LiteLoader/include/llapi/mc/CircleAroundAnchorGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CircuitComponentList.hpp b/LiteLoader/include/llapi/mc/CircuitComponentList.hpp similarity index 96% rename from LiteLoader/Header/MC/CircuitComponentList.hpp rename to LiteLoader/include/llapi/mc/CircuitComponentList.hpp index 2d27677..6309188 100644 --- a/LiteLoader/Header/MC/CircuitComponentList.hpp +++ b/LiteLoader/include/llapi/mc/CircuitComponentList.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CircuitSceneGraph.hpp b/LiteLoader/include/llapi/mc/CircuitSceneGraph.hpp similarity index 98% rename from LiteLoader/Header/MC/CircuitSceneGraph.hpp rename to LiteLoader/include/llapi/mc/CircuitSceneGraph.hpp index 3d146a0..4517c3e 100644 --- a/LiteLoader/Header/MC/CircuitSceneGraph.hpp +++ b/LiteLoader/include/llapi/mc/CircuitSceneGraph.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CircuitSystem.hpp b/LiteLoader/include/llapi/mc/CircuitSystem.hpp similarity index 97% rename from LiteLoader/Header/MC/CircuitSystem.hpp rename to LiteLoader/include/llapi/mc/CircuitSystem.hpp index 29bde20..498cf23 100644 --- a/LiteLoader/Header/MC/CircuitSystem.hpp +++ b/LiteLoader/include/llapi/mc/CircuitSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CircuitTrackingInfo.hpp b/LiteLoader/include/llapi/mc/CircuitTrackingInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/CircuitTrackingInfo.hpp rename to LiteLoader/include/llapi/mc/CircuitTrackingInfo.hpp index 8237f1d..ef4a9ef 100644 --- a/LiteLoader/Header/MC/CircuitTrackingInfo.hpp +++ b/LiteLoader/include/llapi/mc/CircuitTrackingInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClassroomModeListener.hpp b/LiteLoader/include/llapi/mc/ClassroomModeListener.hpp similarity index 98% rename from LiteLoader/Header/MC/ClassroomModeListener.hpp rename to LiteLoader/include/llapi/mc/ClassroomModeListener.hpp index 489b5ec..8452109 100644 --- a/LiteLoader/Header/MC/ClassroomModeListener.hpp +++ b/LiteLoader/include/llapi/mc/ClassroomModeListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockSourceListener.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClassroomModeNetworkHandler.hpp b/LiteLoader/include/llapi/mc/ClassroomModeNetworkHandler.hpp similarity index 96% rename from LiteLoader/Header/MC/ClassroomModeNetworkHandler.hpp rename to LiteLoader/include/llapi/mc/ClassroomModeNetworkHandler.hpp index a8b74de..676b3f1 100644 --- a/LiteLoader/Header/MC/ClassroomModeNetworkHandler.hpp +++ b/LiteLoader/include/llapi/mc/ClassroomModeNetworkHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClayBlock.hpp b/LiteLoader/include/llapi/mc/ClayBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ClayBlock.hpp rename to LiteLoader/include/llapi/mc/ClayBlock.hpp index 24ad508..59677f2 100644 --- a/LiteLoader/Header/MC/ClayBlock.hpp +++ b/LiteLoader/include/llapi/mc/ClayBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClayFeature.hpp b/LiteLoader/include/llapi/mc/ClayFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/ClayFeature.hpp rename to LiteLoader/include/llapi/mc/ClayFeature.hpp index 91886c6..ffdbf7b 100644 --- a/LiteLoader/Header/MC/ClayFeature.hpp +++ b/LiteLoader/include/llapi/mc/ClayFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClearCommand.hpp b/LiteLoader/include/llapi/mc/ClearCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ClearCommand.hpp rename to LiteLoader/include/llapi/mc/ClearCommand.hpp index e994b4c..b238dfe 100644 --- a/LiteLoader/Header/MC/ClearCommand.hpp +++ b/LiteLoader/include/llapi/mc/ClearCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClientAutomationCommandOrigin.hpp b/LiteLoader/include/llapi/mc/ClientAutomationCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/ClientAutomationCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/ClientAutomationCommandOrigin.hpp index 41847c1..9fb0a5e 100644 --- a/LiteLoader/Header/MC/ClientAutomationCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/ClientAutomationCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/ClientCacheBlobStatusPacket.hpp b/LiteLoader/include/llapi/mc/ClientCacheBlobStatusPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ClientCacheBlobStatusPacket.hpp rename to LiteLoader/include/llapi/mc/ClientCacheBlobStatusPacket.hpp index 7908dc5..6058a4b 100644 --- a/LiteLoader/Header/MC/ClientCacheBlobStatusPacket.hpp +++ b/LiteLoader/include/llapi/mc/ClientCacheBlobStatusPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClientCacheMissResponsePacket.hpp b/LiteLoader/include/llapi/mc/ClientCacheMissResponsePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ClientCacheMissResponsePacket.hpp rename to LiteLoader/include/llapi/mc/ClientCacheMissResponsePacket.hpp index b0c6c61..83a7a80 100644 --- a/LiteLoader/Header/MC/ClientCacheMissResponsePacket.hpp +++ b/LiteLoader/include/llapi/mc/ClientCacheMissResponsePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClientCacheStatusPacket.hpp b/LiteLoader/include/llapi/mc/ClientCacheStatusPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ClientCacheStatusPacket.hpp rename to LiteLoader/include/llapi/mc/ClientCacheStatusPacket.hpp index f9ec1b7..720bc59 100644 --- a/LiteLoader/Header/MC/ClientCacheStatusPacket.hpp +++ b/LiteLoader/include/llapi/mc/ClientCacheStatusPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClientToServerHandshakePacket.hpp b/LiteLoader/include/llapi/mc/ClientToServerHandshakePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ClientToServerHandshakePacket.hpp rename to LiteLoader/include/llapi/mc/ClientToServerHandshakePacket.hpp index a7bcfdb..161dc91 100644 --- a/LiteLoader/Header/MC/ClientToServerHandshakePacket.hpp +++ b/LiteLoader/include/llapi/mc/ClientToServerHandshakePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClientboundMapItemDataPacket.hpp b/LiteLoader/include/llapi/mc/ClientboundMapItemDataPacket.hpp similarity index 98% rename from LiteLoader/Header/MC/ClientboundMapItemDataPacket.hpp rename to LiteLoader/include/llapi/mc/ClientboundMapItemDataPacket.hpp index 2987b92..8d52d7f 100644 --- a/LiteLoader/Header/MC/ClientboundMapItemDataPacket.hpp +++ b/LiteLoader/include/llapi/mc/ClientboundMapItemDataPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MapItemTrackedActor.hpp" #include "Packet.hpp" diff --git a/LiteLoader/Header/MC/ClockItem.hpp b/LiteLoader/include/llapi/mc/ClockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ClockItem.hpp rename to LiteLoader/include/llapi/mc/ClockItem.hpp index 8112615..9d0bcf1 100644 --- a/LiteLoader/Header/MC/ClockItem.hpp +++ b/LiteLoader/include/llapi/mc/ClockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClockSpriteCalculator.hpp b/LiteLoader/include/llapi/mc/ClockSpriteCalculator.hpp similarity index 95% rename from LiteLoader/Header/MC/ClockSpriteCalculator.hpp rename to LiteLoader/include/llapi/mc/ClockSpriteCalculator.hpp index 7b7525d..9ff307b 100644 --- a/LiteLoader/Header/MC/ClockSpriteCalculator.hpp +++ b/LiteLoader/include/llapi/mc/ClockSpriteCalculator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CloneCommand.hpp b/LiteLoader/include/llapi/mc/CloneCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/CloneCommand.hpp rename to LiteLoader/include/llapi/mc/CloneCommand.hpp index 5b4ff25..83cc4f5 100644 --- a/LiteLoader/Header/MC/CloneCommand.hpp +++ b/LiteLoader/include/llapi/mc/CloneCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CloseWebSocketCommand.hpp b/LiteLoader/include/llapi/mc/CloseWebSocketCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/CloseWebSocketCommand.hpp rename to LiteLoader/include/llapi/mc/CloseWebSocketCommand.hpp index b3faea4..07df8a8 100644 --- a/LiteLoader/Header/MC/CloseWebSocketCommand.hpp +++ b/LiteLoader/include/llapi/mc/CloseWebSocketCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClothBlock.hpp b/LiteLoader/include/llapi/mc/ClothBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ClothBlock.hpp rename to LiteLoader/include/llapi/mc/ClothBlock.hpp index 1daf442..3fcf1ab 100644 --- a/LiteLoader/Header/MC/ClothBlock.hpp +++ b/LiteLoader/include/llapi/mc/ClothBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ClothBlockItem.hpp b/LiteLoader/include/llapi/mc/ClothBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ClothBlockItem.hpp rename to LiteLoader/include/llapi/mc/ClothBlockItem.hpp index 2fccf47..bfe0d3c 100644 --- a/LiteLoader/Header/MC/ClothBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/ClothBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoalItem.hpp b/LiteLoader/include/llapi/mc/CoalItem.hpp similarity index 98% rename from LiteLoader/Header/MC/CoalItem.hpp rename to LiteLoader/include/llapi/mc/CoalItem.hpp index 3372f35..c0fb1cb 100644 --- a/LiteLoader/Header/MC/CoalItem.hpp +++ b/LiteLoader/include/llapi/mc/CoalItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CocoaBlock.hpp b/LiteLoader/include/llapi/mc/CocoaBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/CocoaBlock.hpp rename to LiteLoader/include/llapi/mc/CocoaBlock.hpp index 2dc8600..f12d6c0 100644 --- a/LiteLoader/Header/MC/CocoaBlock.hpp +++ b/LiteLoader/include/llapi/mc/CocoaBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CodeBuilderCommand.hpp b/LiteLoader/include/llapi/mc/CodeBuilderCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/CodeBuilderCommand.hpp rename to LiteLoader/include/llapi/mc/CodeBuilderCommand.hpp index 02c0469..8659291 100644 --- a/LiteLoader/Header/MC/CodeBuilderCommand.hpp +++ b/LiteLoader/include/llapi/mc/CodeBuilderCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CodeBuilderPacket.hpp b/LiteLoader/include/llapi/mc/CodeBuilderPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/CodeBuilderPacket.hpp rename to LiteLoader/include/llapi/mc/CodeBuilderPacket.hpp index 5ba043b..a4dd624 100644 --- a/LiteLoader/Header/MC/CodeBuilderPacket.hpp +++ b/LiteLoader/include/llapi/mc/CodeBuilderPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CollisionBoxDescription.hpp b/LiteLoader/include/llapi/mc/CollisionBoxDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/CollisionBoxDescription.hpp rename to LiteLoader/include/llapi/mc/CollisionBoxDescription.hpp index 4b22436..5757bf5 100644 --- a/LiteLoader/Header/MC/CollisionBoxDescription.hpp +++ b/LiteLoader/include/llapi/mc/CollisionBoxDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Color.hpp b/LiteLoader/include/llapi/mc/Color.hpp similarity index 98% rename from LiteLoader/Header/MC/Color.hpp rename to LiteLoader/include/llapi/mc/Color.hpp index b073a5f..2b09a3a 100644 --- a/LiteLoader/Header/MC/Color.hpp +++ b/LiteLoader/include/llapi/mc/Color.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Color2Description.hpp b/LiteLoader/include/llapi/mc/Color2Description.hpp similarity index 96% rename from LiteLoader/Header/MC/Color2Description.hpp rename to LiteLoader/include/llapi/mc/Color2Description.hpp index 948d100..d0c5427 100644 --- a/LiteLoader/Header/MC/Color2Description.hpp +++ b/LiteLoader/include/llapi/mc/Color2Description.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ColorDescription.hpp b/LiteLoader/include/llapi/mc/ColorDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/ColorDescription.hpp rename to LiteLoader/include/llapi/mc/ColorDescription.hpp index 71a2495..78cf485 100644 --- a/LiteLoader/Header/MC/ColorDescription.hpp +++ b/LiteLoader/include/llapi/mc/ColorDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ColorFormat.hpp b/LiteLoader/include/llapi/mc/ColorFormat.hpp similarity index 98% rename from LiteLoader/Header/MC/ColorFormat.hpp rename to LiteLoader/include/llapi/mc/ColorFormat.hpp index cbeb991..6b17698 100644 --- a/LiteLoader/Header/MC/ColorFormat.hpp +++ b/LiteLoader/include/llapi/mc/ColorFormat.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA //using mce::Color; diff --git a/LiteLoader/Header/MC/ColorPaletteAttributes.hpp b/LiteLoader/include/llapi/mc/ColorPaletteAttributes.hpp similarity index 95% rename from LiteLoader/Header/MC/ColorPaletteAttributes.hpp rename to LiteLoader/include/llapi/mc/ColorPaletteAttributes.hpp index 4b371da..d9abcd1 100644 --- a/LiteLoader/Header/MC/ColorPaletteAttributes.hpp +++ b/LiteLoader/include/llapi/mc/ColorPaletteAttributes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ColoredBlock.hpp b/LiteLoader/include/llapi/mc/ColoredBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ColoredBlock.hpp rename to LiteLoader/include/llapi/mc/ColoredBlock.hpp index 3dc5e81..c941106 100644 --- a/LiteLoader/Header/MC/ColoredBlock.hpp +++ b/LiteLoader/include/llapi/mc/ColoredBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ColoredTorchBlock.hpp b/LiteLoader/include/llapi/mc/ColoredTorchBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ColoredTorchBlock.hpp rename to LiteLoader/include/llapi/mc/ColoredTorchBlock.hpp index 40d6833..6ce13f1 100644 --- a/LiteLoader/Header/MC/ColoredTorchBlock.hpp +++ b/LiteLoader/include/llapi/mc/ColoredTorchBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TorchBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Command.hpp b/LiteLoader/include/llapi/mc/Command.hpp similarity index 99% rename from LiteLoader/Header/MC/Command.hpp rename to LiteLoader/include/llapi/mc/Command.hpp index 8c6fdee..223bb78 100644 --- a/LiteLoader/Header/MC/Command.hpp +++ b/LiteLoader/include/llapi/mc/Command.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/CommandAreaFactory.hpp b/LiteLoader/include/llapi/mc/CommandAreaFactory.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandAreaFactory.hpp rename to LiteLoader/include/llapi/mc/CommandAreaFactory.hpp index 7caa296..213b1c4 100644 --- a/LiteLoader/Header/MC/CommandAreaFactory.hpp +++ b/LiteLoader/include/llapi/mc/CommandAreaFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandBlock.hpp b/LiteLoader/include/llapi/mc/CommandBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/CommandBlock.hpp rename to LiteLoader/include/llapi/mc/CommandBlock.hpp index d5ca67a..c10a588 100644 --- a/LiteLoader/Header/MC/CommandBlock.hpp +++ b/LiteLoader/include/llapi/mc/CommandBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandBlockActor.hpp b/LiteLoader/include/llapi/mc/CommandBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/CommandBlockActor.hpp rename to LiteLoader/include/llapi/mc/CommandBlockActor.hpp index dafaed8..7f21d8b 100644 --- a/LiteLoader/Header/MC/CommandBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/CommandBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandBlockComponent.hpp b/LiteLoader/include/llapi/mc/CommandBlockComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandBlockComponent.hpp rename to LiteLoader/include/llapi/mc/CommandBlockComponent.hpp index f3718a2..5b7fa1c 100644 --- a/LiteLoader/Header/MC/CommandBlockComponent.hpp +++ b/LiteLoader/include/llapi/mc/CommandBlockComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandBlockDescription.hpp b/LiteLoader/include/llapi/mc/CommandBlockDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandBlockDescription.hpp rename to LiteLoader/include/llapi/mc/CommandBlockDescription.hpp index 5be2b0f..a143261 100644 --- a/LiteLoader/Header/MC/CommandBlockDescription.hpp +++ b/LiteLoader/include/llapi/mc/CommandBlockDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandBlockSystem.hpp b/LiteLoader/include/llapi/mc/CommandBlockSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/CommandBlockSystem.hpp rename to LiteLoader/include/llapi/mc/CommandBlockSystem.hpp index d8980e8..aef02a5 100644 --- a/LiteLoader/Header/MC/CommandBlockSystem.hpp +++ b/LiteLoader/include/llapi/mc/CommandBlockSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandBlockUpdatePacket.hpp b/LiteLoader/include/llapi/mc/CommandBlockUpdatePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/CommandBlockUpdatePacket.hpp rename to LiteLoader/include/llapi/mc/CommandBlockUpdatePacket.hpp index 358bf0f..e881bcc 100644 --- a/LiteLoader/Header/MC/CommandBlockUpdatePacket.hpp +++ b/LiteLoader/include/llapi/mc/CommandBlockUpdatePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandContext.hpp b/LiteLoader/include/llapi/mc/CommandContext.hpp similarity index 97% rename from LiteLoader/Header/MC/CommandContext.hpp rename to LiteLoader/include/llapi/mc/CommandContext.hpp index 560fb6a..83d7e7b 100644 --- a/LiteLoader/Header/MC/CommandContext.hpp +++ b/LiteLoader/include/llapi/mc/CommandContext.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/CommandDispatcher.hpp b/LiteLoader/include/llapi/mc/CommandDispatcher.hpp similarity index 95% rename from LiteLoader/Header/MC/CommandDispatcher.hpp rename to LiteLoader/include/llapi/mc/CommandDispatcher.hpp index fb889ae..ba74089 100644 --- a/LiteLoader/Header/MC/CommandDispatcher.hpp +++ b/LiteLoader/include/llapi/mc/CommandDispatcher.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandFlag.hpp b/LiteLoader/include/llapi/mc/CommandFlag.hpp similarity index 100% rename from LiteLoader/Header/MC/CommandFlag.hpp rename to LiteLoader/include/llapi/mc/CommandFlag.hpp diff --git a/LiteLoader/Header/MC/CommandFunctionEntry.hpp b/LiteLoader/include/llapi/mc/CommandFunctionEntry.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandFunctionEntry.hpp rename to LiteLoader/include/llapi/mc/CommandFunctionEntry.hpp index dbb5233..8855e0d 100644 --- a/LiteLoader/Header/MC/CommandFunctionEntry.hpp +++ b/LiteLoader/include/llapi/mc/CommandFunctionEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandIntegerRange.hpp b/LiteLoader/include/llapi/mc/CommandIntegerRange.hpp similarity index 98% rename from LiteLoader/Header/MC/CommandIntegerRange.hpp rename to LiteLoader/include/llapi/mc/CommandIntegerRange.hpp index 559ca6d..834f529 100644 --- a/LiteLoader/Header/MC/CommandIntegerRange.hpp +++ b/LiteLoader/include/llapi/mc/CommandIntegerRange.hpp @@ -4,7 +4,7 @@ * */ #pragma once -#include "../Global.h" +#include "llapi/Global.h" class CommandIntegerRange { diff --git a/LiteLoader/Header/MC/CommandItem.hpp b/LiteLoader/include/llapi/mc/CommandItem.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandItem.hpp rename to LiteLoader/include/llapi/mc/CommandItem.hpp index f5939e7..d53448d 100644 --- a/LiteLoader/Header/MC/CommandItem.hpp +++ b/LiteLoader/include/llapi/mc/CommandItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandLexer.hpp b/LiteLoader/include/llapi/mc/CommandLexer.hpp similarity index 95% rename from LiteLoader/Header/MC/CommandLexer.hpp rename to LiteLoader/include/llapi/mc/CommandLexer.hpp index 5d47db9..136bb90 100644 --- a/LiteLoader/Header/MC/CommandLexer.hpp +++ b/LiteLoader/include/llapi/mc/CommandLexer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandMessage.hpp b/LiteLoader/include/llapi/mc/CommandMessage.hpp similarity index 97% rename from LiteLoader/Header/MC/CommandMessage.hpp rename to LiteLoader/include/llapi/mc/CommandMessage.hpp index 5360a16..c1f17ab 100644 --- a/LiteLoader/Header/MC/CommandMessage.hpp +++ b/LiteLoader/include/llapi/mc/CommandMessage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "CommandSelector.hpp" diff --git a/LiteLoader/Header/MC/CommandOrigin.hpp b/LiteLoader/include/llapi/mc/CommandOrigin.hpp similarity index 99% rename from LiteLoader/Header/MC/CommandOrigin.hpp rename to LiteLoader/include/llapi/mc/CommandOrigin.hpp index b8e9301..73543bc 100644 --- a/LiteLoader/Header/MC/CommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/CommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "Bedrock.hpp" diff --git a/LiteLoader/Header/MC/CommandOriginData.hpp b/LiteLoader/include/llapi/mc/CommandOriginData.hpp similarity index 95% rename from LiteLoader/Header/MC/CommandOriginData.hpp rename to LiteLoader/include/llapi/mc/CommandOriginData.hpp index d5f30fa..d1d8768 100644 --- a/LiteLoader/Header/MC/CommandOriginData.hpp +++ b/LiteLoader/include/llapi/mc/CommandOriginData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandOutput.hpp b/LiteLoader/include/llapi/mc/CommandOutput.hpp similarity index 98% rename from LiteLoader/Header/MC/CommandOutput.hpp rename to LiteLoader/include/llapi/mc/CommandOutput.hpp index a49f5d4..87cb5cd 100644 --- a/LiteLoader/Header/MC/CommandOutput.hpp +++ b/LiteLoader/include/llapi/mc/CommandOutput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here @@ -9,8 +9,8 @@ #include "CommandOrigin.hpp" #include "Command.hpp" #include "ServerPlayer.hpp" -#include "../Utils/PluginOwnData.h" -#include "../I18nAPI.h" +#include "llapi/utils/PluginOwnData.h" +#include #define POD_COMMANDOUTPUT_LANGCODE ("_ll_plugin_cmdoutp_langcode_" + std::to_string((uint64_t)this)) #undef BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandOutputMessage.hpp b/LiteLoader/include/llapi/mc/CommandOutputMessage.hpp similarity index 95% rename from LiteLoader/Header/MC/CommandOutputMessage.hpp rename to LiteLoader/include/llapi/mc/CommandOutputMessage.hpp index 362c168..b90d172 100644 --- a/LiteLoader/Header/MC/CommandOutputMessage.hpp +++ b/LiteLoader/include/llapi/mc/CommandOutputMessage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandOutputPacket.hpp b/LiteLoader/include/llapi/mc/CommandOutputPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandOutputPacket.hpp rename to LiteLoader/include/llapi/mc/CommandOutputPacket.hpp index f007c97..10cb10b 100644 --- a/LiteLoader/Header/MC/CommandOutputPacket.hpp +++ b/LiteLoader/include/llapi/mc/CommandOutputPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandOutputParameter.hpp b/LiteLoader/include/llapi/mc/CommandOutputParameter.hpp similarity index 97% rename from LiteLoader/Header/MC/CommandOutputParameter.hpp rename to LiteLoader/include/llapi/mc/CommandOutputParameter.hpp index fd35f44..3d17802 100644 --- a/LiteLoader/Header/MC/CommandOutputParameter.hpp +++ b/LiteLoader/include/llapi/mc/CommandOutputParameter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandOutputSender.hpp b/LiteLoader/include/llapi/mc/CommandOutputSender.hpp similarity index 97% rename from LiteLoader/Header/MC/CommandOutputSender.hpp rename to LiteLoader/include/llapi/mc/CommandOutputSender.hpp index 5cdd108..fe457e0 100644 --- a/LiteLoader/Header/MC/CommandOutputSender.hpp +++ b/LiteLoader/include/llapi/mc/CommandOutputSender.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandParameterData.hpp b/LiteLoader/include/llapi/mc/CommandParameterData.hpp similarity index 98% rename from LiteLoader/Header/MC/CommandParameterData.hpp rename to LiteLoader/include/llapi/mc/CommandParameterData.hpp index f3f3276..54910cc 100644 --- a/LiteLoader/Header/MC/CommandParameterData.hpp +++ b/LiteLoader/include/llapi/mc/CommandParameterData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/CommandPosition.hpp b/LiteLoader/include/llapi/mc/CommandPosition.hpp similarity index 98% rename from LiteLoader/Header/MC/CommandPosition.hpp rename to LiteLoader/include/llapi/mc/CommandPosition.hpp index 85f3a8a..675879f 100644 --- a/LiteLoader/Header/MC/CommandPosition.hpp +++ b/LiteLoader/include/llapi/mc/CommandPosition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "CompoundTag.hpp" diff --git a/LiteLoader/Header/MC/CommandPositionFloat.hpp b/LiteLoader/include/llapi/mc/CommandPositionFloat.hpp similarity index 100% rename from LiteLoader/Header/MC/CommandPositionFloat.hpp rename to LiteLoader/include/llapi/mc/CommandPositionFloat.hpp diff --git a/LiteLoader/Header/MC/CommandPropertyBag.hpp b/LiteLoader/include/llapi/mc/CommandPropertyBag.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandPropertyBag.hpp rename to LiteLoader/include/llapi/mc/CommandPropertyBag.hpp index 36a31f2..f571d2a 100644 --- a/LiteLoader/Header/MC/CommandPropertyBag.hpp +++ b/LiteLoader/include/llapi/mc/CommandPropertyBag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandRawText.hpp b/LiteLoader/include/llapi/mc/CommandRawText.hpp similarity index 95% rename from LiteLoader/Header/MC/CommandRawText.hpp rename to LiteLoader/include/llapi/mc/CommandRawText.hpp index c43d49a..69e30c3 100644 --- a/LiteLoader/Header/MC/CommandRawText.hpp +++ b/LiteLoader/include/llapi/mc/CommandRawText.hpp @@ -4,7 +4,7 @@ * */ #pragma once -#include "../Global.h" +#include "llapi/Global.h" class CommandRawText { diff --git a/LiteLoader/Header/MC/CommandRegistry.hpp b/LiteLoader/include/llapi/mc/CommandRegistry.hpp similarity index 99% rename from LiteLoader/Header/MC/CommandRegistry.hpp rename to LiteLoader/include/llapi/mc/CommandRegistry.hpp index 1ee3bd6..13a6b28 100644 --- a/LiteLoader/Header/MC/CommandRegistry.hpp +++ b/LiteLoader/include/llapi/mc/CommandRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/CommandRequestPacket.hpp b/LiteLoader/include/llapi/mc/CommandRequestPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/CommandRequestPacket.hpp rename to LiteLoader/include/llapi/mc/CommandRequestPacket.hpp index 760ccbf..92333bb 100644 --- a/LiteLoader/Header/MC/CommandRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/CommandRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandSelector.hpp b/LiteLoader/include/llapi/mc/CommandSelector.hpp similarity index 100% rename from LiteLoader/Header/MC/CommandSelector.hpp rename to LiteLoader/include/llapi/mc/CommandSelector.hpp diff --git a/LiteLoader/Header/MC/CommandSelectorBase.hpp b/LiteLoader/include/llapi/mc/CommandSelectorBase.hpp similarity index 98% rename from LiteLoader/Header/MC/CommandSelectorBase.hpp rename to LiteLoader/include/llapi/mc/CommandSelectorBase.hpp index 18cb45d..8aad4f2 100644 --- a/LiteLoader/Header/MC/CommandSelectorBase.hpp +++ b/LiteLoader/include/llapi/mc/CommandSelectorBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/CommandSoftEnumRegistry.hpp b/LiteLoader/include/llapi/mc/CommandSoftEnumRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/CommandSoftEnumRegistry.hpp rename to LiteLoader/include/llapi/mc/CommandSoftEnumRegistry.hpp index 93c148d..919d7ec 100644 --- a/LiteLoader/Header/MC/CommandSoftEnumRegistry.hpp +++ b/LiteLoader/include/llapi/mc/CommandSoftEnumRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/CommandSyntaxInformation.hpp b/LiteLoader/include/llapi/mc/CommandSyntaxInformation.hpp similarity index 95% rename from LiteLoader/Header/MC/CommandSyntaxInformation.hpp rename to LiteLoader/include/llapi/mc/CommandSyntaxInformation.hpp index f20cce1..9e3e1bc 100644 --- a/LiteLoader/Header/MC/CommandSyntaxInformation.hpp +++ b/LiteLoader/include/llapi/mc/CommandSyntaxInformation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandUtils.hpp b/LiteLoader/include/llapi/mc/CommandUtils.hpp similarity index 98% rename from LiteLoader/Header/MC/CommandUtils.hpp rename to LiteLoader/include/llapi/mc/CommandUtils.hpp index 9548443..135aa43 100644 --- a/LiteLoader/Header/MC/CommandUtils.hpp +++ b/LiteLoader/include/llapi/mc/CommandUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CommandVersion.hpp b/LiteLoader/include/llapi/mc/CommandVersion.hpp similarity index 96% rename from LiteLoader/Header/MC/CommandVersion.hpp rename to LiteLoader/include/llapi/mc/CommandVersion.hpp index 02bdbb0..f6da5a8 100644 --- a/LiteLoader/Header/MC/CommandVersion.hpp +++ b/LiteLoader/include/llapi/mc/CommandVersion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Common.hpp b/LiteLoader/include/llapi/mc/Common.hpp similarity index 93% rename from LiteLoader/Header/MC/Common.hpp rename to LiteLoader/include/llapi/mc/Common.hpp index a7d7b92..dadb823 100644 --- a/LiteLoader/Header/MC/Common.hpp +++ b/LiteLoader/include/llapi/mc/Common.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompactionListenerEnv.hpp b/LiteLoader/include/llapi/mc/CompactionListenerEnv.hpp similarity index 97% rename from LiteLoader/Header/MC/CompactionListenerEnv.hpp rename to LiteLoader/include/llapi/mc/CompactionListenerEnv.hpp index 9a34489..4aa0e9a 100644 --- a/LiteLoader/Header/MC/CompactionListenerEnv.hpp +++ b/LiteLoader/include/llapi/mc/CompactionListenerEnv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TransactionalWorldBlockTarget.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ComparatorBlock.hpp b/LiteLoader/include/llapi/mc/ComparatorBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ComparatorBlock.hpp rename to LiteLoader/include/llapi/mc/ComparatorBlock.hpp index 169612a..b8d7fde 100644 --- a/LiteLoader/Header/MC/ComparatorBlock.hpp +++ b/LiteLoader/include/llapi/mc/ComparatorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ComparatorBlockActor.hpp b/LiteLoader/include/llapi/mc/ComparatorBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/ComparatorBlockActor.hpp rename to LiteLoader/include/llapi/mc/ComparatorBlockActor.hpp index 92c2a36..5550c02 100644 --- a/LiteLoader/Header/MC/ComparatorBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/ComparatorBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ComparatorCapacitor.hpp b/LiteLoader/include/llapi/mc/ComparatorCapacitor.hpp similarity index 98% rename from LiteLoader/Header/MC/ComparatorCapacitor.hpp rename to LiteLoader/include/llapi/mc/ComparatorCapacitor.hpp index 9a9ea73..b57a2ea 100644 --- a/LiteLoader/Header/MC/ComparatorCapacitor.hpp +++ b/LiteLoader/include/llapi/mc/ComparatorCapacitor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ProducerComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompassItem.hpp b/LiteLoader/include/llapi/mc/CompassItem.hpp similarity index 98% rename from LiteLoader/Header/MC/CompassItem.hpp rename to LiteLoader/include/llapi/mc/CompassItem.hpp index daa4498..1441504 100644 --- a/LiteLoader/Header/MC/CompassItem.hpp +++ b/LiteLoader/include/llapi/mc/CompassItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompassSpriteCalculator.hpp b/LiteLoader/include/llapi/mc/CompassSpriteCalculator.hpp similarity index 96% rename from LiteLoader/Header/MC/CompassSpriteCalculator.hpp rename to LiteLoader/include/llapi/mc/CompassSpriteCalculator.hpp index 4566612..6056d2d 100644 --- a/LiteLoader/Header/MC/CompassSpriteCalculator.hpp +++ b/LiteLoader/include/llapi/mc/CompassSpriteCalculator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompletedUsingItemPacket.hpp b/LiteLoader/include/llapi/mc/CompletedUsingItemPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/CompletedUsingItemPacket.hpp rename to LiteLoader/include/llapi/mc/CompletedUsingItemPacket.hpp index 56ff48a..883fca5 100644 --- a/LiteLoader/Header/MC/CompletedUsingItemPacket.hpp +++ b/LiteLoader/include/llapi/mc/CompletedUsingItemPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ComplexInventoryTransaction.hpp b/LiteLoader/include/llapi/mc/ComplexInventoryTransaction.hpp similarity index 98% rename from LiteLoader/Header/MC/ComplexInventoryTransaction.hpp rename to LiteLoader/include/llapi/mc/ComplexInventoryTransaction.hpp index 6f98d82..58627f6 100644 --- a/LiteLoader/Header/MC/ComplexInventoryTransaction.hpp +++ b/LiteLoader/include/llapi/mc/ComplexInventoryTransaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/ComplexItem.hpp b/LiteLoader/include/llapi/mc/ComplexItem.hpp similarity index 97% rename from LiteLoader/Header/MC/ComplexItem.hpp rename to LiteLoader/include/llapi/mc/ComplexItem.hpp index 1f1010d..43de7c4 100644 --- a/LiteLoader/Header/MC/ComplexItem.hpp +++ b/LiteLoader/include/llapi/mc/ComplexItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ComponentDescription.hpp b/LiteLoader/include/llapi/mc/ComponentDescription.hpp similarity index 95% rename from LiteLoader/Header/MC/ComponentDescription.hpp rename to LiteLoader/include/llapi/mc/ComponentDescription.hpp index 31b718e..64919e4 100644 --- a/LiteLoader/Header/MC/ComponentDescription.hpp +++ b/LiteLoader/include/llapi/mc/ComponentDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompositeDefinition.hpp b/LiteLoader/include/llapi/mc/CompositeDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/CompositeDefinition.hpp rename to LiteLoader/include/llapi/mc/CompositeDefinition.hpp index 0b8e7fc..a3708cc 100644 --- a/LiteLoader/Header/MC/CompositeDefinition.hpp +++ b/LiteLoader/include/llapi/mc/CompositeDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompositePackSource.hpp b/LiteLoader/include/llapi/mc/CompositePackSource.hpp similarity index 97% rename from LiteLoader/Header/MC/CompositePackSource.hpp rename to LiteLoader/include/llapi/mc/CompositePackSource.hpp index a1a86b3..83de426 100644 --- a/LiteLoader/Header/MC/CompositePackSource.hpp +++ b/LiteLoader/include/llapi/mc/CompositePackSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ComposterBlock.hpp b/LiteLoader/include/llapi/mc/ComposterBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ComposterBlock.hpp rename to LiteLoader/include/llapi/mc/ComposterBlock.hpp index 0a19298..9b4227d 100644 --- a/LiteLoader/Header/MC/ComposterBlock.hpp +++ b/LiteLoader/include/llapi/mc/ComposterBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MinecraftEventing.hpp" #include "BlockLegacy.hpp" diff --git a/LiteLoader/Header/MC/CompoundCreatorContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/CompoundCreatorContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/CompoundCreatorContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/CompoundCreatorContainerManagerModel.hpp index 2dfda30..cce0206 100644 --- a/LiteLoader/Header/MC/CompoundCreatorContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/CompoundCreatorContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompoundItem.hpp b/LiteLoader/include/llapi/mc/CompoundItem.hpp similarity index 98% rename from LiteLoader/Header/MC/CompoundItem.hpp rename to LiteLoader/include/llapi/mc/CompoundItem.hpp index f328b3d..f3fdb6a 100644 --- a/LiteLoader/Header/MC/CompoundItem.hpp +++ b/LiteLoader/include/llapi/mc/CompoundItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompoundTag.hpp b/LiteLoader/include/llapi/mc/CompoundTag.hpp similarity index 99% rename from LiteLoader/Header/MC/CompoundTag.hpp rename to LiteLoader/include/llapi/mc/CompoundTag.hpp index 658dc66..fdbba8c 100644 --- a/LiteLoader/Header/MC/CompoundTag.hpp +++ b/LiteLoader/include/llapi/mc/CompoundTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompoundTagEditHelper.hpp b/LiteLoader/include/llapi/mc/CompoundTagEditHelper.hpp similarity index 96% rename from LiteLoader/Header/MC/CompoundTagEditHelper.hpp rename to LiteLoader/include/llapi/mc/CompoundTagEditHelper.hpp index b1b85fe..e2b080b 100644 --- a/LiteLoader/Header/MC/CompoundTagEditHelper.hpp +++ b/LiteLoader/include/llapi/mc/CompoundTagEditHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompoundTagUpdater.hpp b/LiteLoader/include/llapi/mc/CompoundTagUpdater.hpp similarity index 95% rename from LiteLoader/Header/MC/CompoundTagUpdater.hpp rename to LiteLoader/include/llapi/mc/CompoundTagUpdater.hpp index 6f7afb0..891e425 100644 --- a/LiteLoader/Header/MC/CompoundTagUpdater.hpp +++ b/LiteLoader/include/llapi/mc/CompoundTagUpdater.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompoundTagUpdaterBuilder.hpp b/LiteLoader/include/llapi/mc/CompoundTagUpdaterBuilder.hpp similarity index 97% rename from LiteLoader/Header/MC/CompoundTagUpdaterBuilder.hpp rename to LiteLoader/include/llapi/mc/CompoundTagUpdaterBuilder.hpp index 8417b81..fc84dc4 100644 --- a/LiteLoader/Header/MC/CompoundTagUpdaterBuilder.hpp +++ b/LiteLoader/include/llapi/mc/CompoundTagUpdaterBuilder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompoundTagUpdaterContext.hpp b/LiteLoader/include/llapi/mc/CompoundTagUpdaterContext.hpp similarity index 96% rename from LiteLoader/Header/MC/CompoundTagUpdaterContext.hpp rename to LiteLoader/include/llapi/mc/CompoundTagUpdaterContext.hpp index 45806ac..a072032 100644 --- a/LiteLoader/Header/MC/CompoundTagUpdaterContext.hpp +++ b/LiteLoader/include/llapi/mc/CompoundTagUpdaterContext.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompoundTagVariant.hpp b/LiteLoader/include/llapi/mc/CompoundTagVariant.hpp similarity index 98% rename from LiteLoader/Header/MC/CompoundTagVariant.hpp rename to LiteLoader/include/llapi/mc/CompoundTagVariant.hpp index 13b70b7..f3c6666 100644 --- a/LiteLoader/Header/MC/CompoundTagVariant.hpp +++ b/LiteLoader/include/llapi/mc/CompoundTagVariant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CompressedNetworkPeer.hpp b/LiteLoader/include/llapi/mc/CompressedNetworkPeer.hpp similarity index 97% rename from LiteLoader/Header/MC/CompressedNetworkPeer.hpp rename to LiteLoader/include/llapi/mc/CompressedNetworkPeer.hpp index d5d4da2..2865cf7 100644 --- a/LiteLoader/Header/MC/CompressedNetworkPeer.hpp +++ b/LiteLoader/include/llapi/mc/CompressedNetworkPeer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetworkPeer.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConcreteBlock.hpp b/LiteLoader/include/llapi/mc/ConcreteBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ConcreteBlock.hpp rename to LiteLoader/include/llapi/mc/ConcreteBlock.hpp index 35fc473..0bd19c1 100644 --- a/LiteLoader/Header/MC/ConcreteBlock.hpp +++ b/LiteLoader/include/llapi/mc/ConcreteBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConcretePowderBlock.hpp b/LiteLoader/include/llapi/mc/ConcretePowderBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ConcretePowderBlock.hpp rename to LiteLoader/include/llapi/mc/ConcretePowderBlock.hpp index 46b11c8..9350ac1 100644 --- a/LiteLoader/Header/MC/ConcretePowderBlock.hpp +++ b/LiteLoader/include/llapi/mc/ConcretePowderBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConduitBlock.hpp b/LiteLoader/include/llapi/mc/ConduitBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ConduitBlock.hpp rename to LiteLoader/include/llapi/mc/ConduitBlock.hpp index 1f74132..fc5936d 100644 --- a/LiteLoader/Header/MC/ConduitBlock.hpp +++ b/LiteLoader/include/llapi/mc/ConduitBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConduitBlockActor.hpp b/LiteLoader/include/llapi/mc/ConduitBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/ConduitBlockActor.hpp rename to LiteLoader/include/llapi/mc/ConduitBlockActor.hpp index 0324d11..c03eec4 100644 --- a/LiteLoader/Header/MC/ConduitBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/ConduitBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConnectionRequest.hpp b/LiteLoader/include/llapi/mc/ConnectionRequest.hpp similarity index 98% rename from LiteLoader/Header/MC/ConnectionRequest.hpp rename to LiteLoader/include/llapi/mc/ConnectionRequest.hpp index a26d65d..cb4b123 100644 --- a/LiteLoader/Header/MC/ConnectionRequest.hpp +++ b/LiteLoader/include/llapi/mc/ConnectionRequest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "persona.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/Connector.hpp b/LiteLoader/include/llapi/mc/Connector.hpp similarity index 94% rename from LiteLoader/Header/MC/Connector.hpp rename to LiteLoader/include/llapi/mc/Connector.hpp index 310de25..e450784 100644 --- a/LiteLoader/Header/MC/Connector.hpp +++ b/LiteLoader/include/llapi/mc/Connector.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConsoleChunkBlender.hpp b/LiteLoader/include/llapi/mc/ConsoleChunkBlender.hpp similarity index 97% rename from LiteLoader/Header/MC/ConsoleChunkBlender.hpp rename to LiteLoader/include/llapi/mc/ConsoleChunkBlender.hpp index a738f9b..be2d3b3 100644 --- a/LiteLoader/Header/MC/ConsoleChunkBlender.hpp +++ b/LiteLoader/include/llapi/mc/ConsoleChunkBlender.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConsumeItemDefinition.hpp b/LiteLoader/include/llapi/mc/ConsumeItemDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/ConsumeItemDefinition.hpp rename to LiteLoader/include/llapi/mc/ConsumeItemDefinition.hpp index 6711b54..c7bc228 100644 --- a/LiteLoader/Header/MC/ConsumeItemDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ConsumeItemDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/ConsumeItemNode.hpp b/LiteLoader/include/llapi/mc/ConsumeItemNode.hpp similarity index 95% rename from LiteLoader/Header/MC/ConsumeItemNode.hpp rename to LiteLoader/include/llapi/mc/ConsumeItemNode.hpp index 5d3818b..ef0849a 100644 --- a/LiteLoader/Header/MC/ConsumeItemNode.hpp +++ b/LiteLoader/include/llapi/mc/ConsumeItemNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ConsumerComponent.hpp b/LiteLoader/include/llapi/mc/ConsumerComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ConsumerComponent.hpp rename to LiteLoader/include/llapi/mc/ConsumerComponent.hpp index ac86a74..784626e 100644 --- a/LiteLoader/Header/MC/ConsumerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ConsumerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseCircuitComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Container.hpp b/LiteLoader/include/llapi/mc/Container.hpp similarity index 99% rename from LiteLoader/Header/MC/Container.hpp rename to LiteLoader/include/llapi/mc/Container.hpp index ba0a16a..e949789 100644 --- a/LiteLoader/Header/MC/Container.hpp +++ b/LiteLoader/include/llapi/mc/Container.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Add include headers & pre-declares diff --git a/LiteLoader/Header/MC/ContainerClosePacket.hpp b/LiteLoader/include/llapi/mc/ContainerClosePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ContainerClosePacket.hpp rename to LiteLoader/include/llapi/mc/ContainerClosePacket.hpp index 97136b2..acb780e 100644 --- a/LiteLoader/Header/MC/ContainerClosePacket.hpp +++ b/LiteLoader/include/llapi/mc/ContainerClosePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerComponent.hpp b/LiteLoader/include/llapi/mc/ContainerComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ContainerComponent.hpp rename to LiteLoader/include/llapi/mc/ContainerComponent.hpp index cb5161b..c263df3 100644 --- a/LiteLoader/Header/MC/ContainerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ContainerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerContentChangeListener.hpp b/LiteLoader/include/llapi/mc/ContainerContentChangeListener.hpp similarity index 95% rename from LiteLoader/Header/MC/ContainerContentChangeListener.hpp rename to LiteLoader/include/llapi/mc/ContainerContentChangeListener.hpp index 2407b22..edb6fdf 100644 --- a/LiteLoader/Header/MC/ContainerContentChangeListener.hpp +++ b/LiteLoader/include/llapi/mc/ContainerContentChangeListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerDescription.hpp b/LiteLoader/include/llapi/mc/ContainerDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/ContainerDescription.hpp rename to LiteLoader/include/llapi/mc/ContainerDescription.hpp index 5e9f0ab..9dbf338 100644 --- a/LiteLoader/Header/MC/ContainerDescription.hpp +++ b/LiteLoader/include/llapi/mc/ContainerDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerManagerController.hpp b/LiteLoader/include/llapi/mc/ContainerManagerController.hpp similarity index 96% rename from LiteLoader/Header/MC/ContainerManagerController.hpp rename to LiteLoader/include/llapi/mc/ContainerManagerController.hpp index 888e70e..3b70413 100644 --- a/LiteLoader/Header/MC/ContainerManagerController.hpp +++ b/LiteLoader/include/llapi/mc/ContainerManagerController.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/ContainerManagerModel.hpp similarity index 98% rename from LiteLoader/Header/MC/ContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/ContainerManagerModel.hpp index 812aa0f..2612658 100644 --- a/LiteLoader/Header/MC/ContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/ContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerModel.hpp b/LiteLoader/include/llapi/mc/ContainerModel.hpp similarity index 98% rename from LiteLoader/Header/MC/ContainerModel.hpp rename to LiteLoader/include/llapi/mc/ContainerModel.hpp index 6bbe310..44532e2 100644 --- a/LiteLoader/Header/MC/ContainerModel.hpp +++ b/LiteLoader/include/llapi/mc/ContainerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerOpenPacket.hpp b/LiteLoader/include/llapi/mc/ContainerOpenPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ContainerOpenPacket.hpp rename to LiteLoader/include/llapi/mc/ContainerOpenPacket.hpp index b0eb0f6..3cb53ff 100644 --- a/LiteLoader/Header/MC/ContainerOpenPacket.hpp +++ b/LiteLoader/include/llapi/mc/ContainerOpenPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerScreenContext.hpp b/LiteLoader/include/llapi/mc/ContainerScreenContext.hpp similarity index 95% rename from LiteLoader/Header/MC/ContainerScreenContext.hpp rename to LiteLoader/include/llapi/mc/ContainerScreenContext.hpp index af8a788..2425b64 100644 --- a/LiteLoader/Header/MC/ContainerScreenContext.hpp +++ b/LiteLoader/include/llapi/mc/ContainerScreenContext.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerSetDataPacket.hpp b/LiteLoader/include/llapi/mc/ContainerSetDataPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ContainerSetDataPacket.hpp rename to LiteLoader/include/llapi/mc/ContainerSetDataPacket.hpp index d1c0897..1e9da2f 100644 --- a/LiteLoader/Header/MC/ContainerSetDataPacket.hpp +++ b/LiteLoader/include/llapi/mc/ContainerSetDataPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerSizeChangeListener.hpp b/LiteLoader/include/llapi/mc/ContainerSizeChangeListener.hpp similarity index 95% rename from LiteLoader/Header/MC/ContainerSizeChangeListener.hpp rename to LiteLoader/include/llapi/mc/ContainerSizeChangeListener.hpp index 57d4644..eefe8ea 100644 --- a/LiteLoader/Header/MC/ContainerSizeChangeListener.hpp +++ b/LiteLoader/include/llapi/mc/ContainerSizeChangeListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerValidation.hpp b/LiteLoader/include/llapi/mc/ContainerValidation.hpp similarity index 96% rename from LiteLoader/Header/MC/ContainerValidation.hpp rename to LiteLoader/include/llapi/mc/ContainerValidation.hpp index 8f70ad4..0d630ef 100644 --- a/LiteLoader/Header/MC/ContainerValidation.hpp +++ b/LiteLoader/include/llapi/mc/ContainerValidation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContainerWeakRef.hpp b/LiteLoader/include/llapi/mc/ContainerWeakRef.hpp similarity index 96% rename from LiteLoader/Header/MC/ContainerWeakRef.hpp rename to LiteLoader/include/llapi/mc/ContainerWeakRef.hpp index 018f11f..3894d62 100644 --- a/LiteLoader/Header/MC/ContainerWeakRef.hpp +++ b/LiteLoader/include/llapi/mc/ContainerWeakRef.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContentIdentity.hpp b/LiteLoader/include/llapi/mc/ContentIdentity.hpp similarity index 95% rename from LiteLoader/Header/MC/ContentIdentity.hpp rename to LiteLoader/include/llapi/mc/ContentIdentity.hpp index 12523b2..797a6c1 100644 --- a/LiteLoader/Header/MC/ContentIdentity.hpp +++ b/LiteLoader/include/llapi/mc/ContentIdentity.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContentLog.hpp b/LiteLoader/include/llapi/mc/ContentLog.hpp similarity index 96% rename from LiteLoader/Header/MC/ContentLog.hpp rename to LiteLoader/include/llapi/mc/ContentLog.hpp index b0ce8cd..c4d4ec6 100644 --- a/LiteLoader/Header/MC/ContentLog.hpp +++ b/LiteLoader/include/llapi/mc/ContentLog.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContentLogEndPoint.hpp b/LiteLoader/include/llapi/mc/ContentLogEndPoint.hpp similarity index 95% rename from LiteLoader/Header/MC/ContentLogEndPoint.hpp rename to LiteLoader/include/llapi/mc/ContentLogEndPoint.hpp index 035acec..b9263d4 100644 --- a/LiteLoader/Header/MC/ContentLogEndPoint.hpp +++ b/LiteLoader/include/llapi/mc/ContentLogEndPoint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContentLogFileEndPoint.hpp b/LiteLoader/include/llapi/mc/ContentLogFileEndPoint.hpp similarity index 97% rename from LiteLoader/Header/MC/ContentLogFileEndPoint.hpp rename to LiteLoader/include/llapi/mc/ContentLogFileEndPoint.hpp index 39cd45b..fa4aca1 100644 --- a/LiteLoader/Header/MC/ContentLogFileEndPoint.hpp +++ b/LiteLoader/include/llapi/mc/ContentLogFileEndPoint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContextAccessor.hpp b/LiteLoader/include/llapi/mc/ContextAccessor.hpp similarity index 95% rename from LiteLoader/Header/MC/ContextAccessor.hpp rename to LiteLoader/include/llapi/mc/ContextAccessor.hpp index f1820e3..47f5b2f 100644 --- a/LiteLoader/Header/MC/ContextAccessor.hpp +++ b/LiteLoader/include/llapi/mc/ContextAccessor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContextMessageLogger.hpp b/LiteLoader/include/llapi/mc/ContextMessageLogger.hpp similarity index 95% rename from LiteLoader/Header/MC/ContextMessageLogger.hpp rename to LiteLoader/include/llapi/mc/ContextMessageLogger.hpp index fe18860..eeb7b6a 100644 --- a/LiteLoader/Header/MC/ContextMessageLogger.hpp +++ b/LiteLoader/include/llapi/mc/ContextMessageLogger.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ContextMessageLoggerOptions.hpp b/LiteLoader/include/llapi/mc/ContextMessageLoggerOptions.hpp similarity index 95% rename from LiteLoader/Header/MC/ContextMessageLoggerOptions.hpp rename to LiteLoader/include/llapi/mc/ContextMessageLoggerOptions.hpp index b968d2a..b09cefd 100644 --- a/LiteLoader/Header/MC/ContextMessageLoggerOptions.hpp +++ b/LiteLoader/include/llapi/mc/ContextMessageLoggerOptions.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Control.hpp b/LiteLoader/include/llapi/mc/Control.hpp similarity index 94% rename from LiteLoader/Header/MC/Control.hpp rename to LiteLoader/include/llapi/mc/Control.hpp index c24cf5e..5102a42 100644 --- a/LiteLoader/Header/MC/Control.hpp +++ b/LiteLoader/include/llapi/mc/Control.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ControlledByPlayerGoal.hpp b/LiteLoader/include/llapi/mc/ControlledByPlayerGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/ControlledByPlayerGoal.hpp rename to LiteLoader/include/llapi/mc/ControlledByPlayerGoal.hpp index a131b0b..88a77d7 100644 --- a/LiteLoader/Header/MC/ControlledByPlayerGoal.hpp +++ b/LiteLoader/include/llapi/mc/ControlledByPlayerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Coral.hpp b/LiteLoader/include/llapi/mc/Coral.hpp similarity index 99% rename from LiteLoader/Header/MC/Coral.hpp rename to LiteLoader/include/llapi/mc/Coral.hpp index c6b5931..eb3ef04 100644 --- a/LiteLoader/Header/MC/Coral.hpp +++ b/LiteLoader/include/llapi/mc/Coral.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoralBlock.hpp b/LiteLoader/include/llapi/mc/CoralBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/CoralBlock.hpp rename to LiteLoader/include/llapi/mc/CoralBlock.hpp index 35ea441..70979f9 100644 --- a/LiteLoader/Header/MC/CoralBlock.hpp +++ b/LiteLoader/include/llapi/mc/CoralBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoralCrustFeature.hpp b/LiteLoader/include/llapi/mc/CoralCrustFeature.hpp similarity index 98% rename from LiteLoader/Header/MC/CoralCrustFeature.hpp rename to LiteLoader/include/llapi/mc/CoralCrustFeature.hpp index e940ef3..294d78c 100644 --- a/LiteLoader/Header/MC/CoralCrustFeature.hpp +++ b/LiteLoader/include/llapi/mc/CoralCrustFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoralFan.hpp b/LiteLoader/include/llapi/mc/CoralFan.hpp similarity index 99% rename from LiteLoader/Header/MC/CoralFan.hpp rename to LiteLoader/include/llapi/mc/CoralFan.hpp index ea2eae6..cca3cf8 100644 --- a/LiteLoader/Header/MC/CoralFan.hpp +++ b/LiteLoader/include/llapi/mc/CoralFan.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoralFanBlockItem.hpp b/LiteLoader/include/llapi/mc/CoralFanBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/CoralFanBlockItem.hpp rename to LiteLoader/include/llapi/mc/CoralFanBlockItem.hpp index 34b50c8..720da32 100644 --- a/LiteLoader/Header/MC/CoralFanBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/CoralFanBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoralFanHang.hpp b/LiteLoader/include/llapi/mc/CoralFanHang.hpp similarity index 99% rename from LiteLoader/Header/MC/CoralFanHang.hpp rename to LiteLoader/include/llapi/mc/CoralFanHang.hpp index 8862bec..51aea6b 100644 --- a/LiteLoader/Header/MC/CoralFanHang.hpp +++ b/LiteLoader/include/llapi/mc/CoralFanHang.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "CoralFan.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoralFeature.hpp b/LiteLoader/include/llapi/mc/CoralFeature.hpp similarity index 99% rename from LiteLoader/Header/MC/CoralFeature.hpp rename to LiteLoader/include/llapi/mc/CoralFeature.hpp index 9940e3c..79a9f28 100644 --- a/LiteLoader/Header/MC/CoralFeature.hpp +++ b/LiteLoader/include/llapi/mc/CoralFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CoralHangFeature.hpp b/LiteLoader/include/llapi/mc/CoralHangFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/CoralHangFeature.hpp rename to LiteLoader/include/llapi/mc/CoralHangFeature.hpp index 5ad9d3b..dec0790 100644 --- a/LiteLoader/Header/MC/CoralHangFeature.hpp +++ b/LiteLoader/include/llapi/mc/CoralHangFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Core.hpp b/LiteLoader/include/llapi/mc/Core.hpp similarity index 99% rename from LiteLoader/Header/MC/Core.hpp rename to LiteLoader/include/llapi/mc/Core.hpp index 1b08249..24cd35a 100644 --- a/LiteLoader/Header/MC/Core.hpp +++ b/LiteLoader/include/llapi/mc/Core.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftHandleNonImplemented_DEPRECATEDASKTYLAING.hpp b/LiteLoader/include/llapi/mc/CraftHandleNonImplemented_DEPRECATEDASKTYLAING.hpp similarity index 97% rename from LiteLoader/Header/MC/CraftHandleNonImplemented_DEPRECATEDASKTYLAING.hpp rename to LiteLoader/include/llapi/mc/CraftHandleNonImplemented_DEPRECATEDASKTYLAING.hpp index f0515cf..53e0ffb 100644 --- a/LiteLoader/Header/MC/CraftHandleNonImplemented_DEPRECATEDASKTYLAING.hpp +++ b/LiteLoader/include/llapi/mc/CraftHandleNonImplemented_DEPRECATEDASKTYLAING.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftHandlerBase.hpp b/LiteLoader/include/llapi/mc/CraftHandlerBase.hpp similarity index 95% rename from LiteLoader/Header/MC/CraftHandlerBase.hpp rename to LiteLoader/include/llapi/mc/CraftHandlerBase.hpp index e880190..3d44c2a 100644 --- a/LiteLoader/Header/MC/CraftHandlerBase.hpp +++ b/LiteLoader/include/llapi/mc/CraftHandlerBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftHandlerCrafting.hpp b/LiteLoader/include/llapi/mc/CraftHandlerCrafting.hpp similarity index 97% rename from LiteLoader/Header/MC/CraftHandlerCrafting.hpp rename to LiteLoader/include/llapi/mc/CraftHandlerCrafting.hpp index 052dccd..6b5ab81 100644 --- a/LiteLoader/Header/MC/CraftHandlerCrafting.hpp +++ b/LiteLoader/include/llapi/mc/CraftHandlerCrafting.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftHandlerEnchant.hpp b/LiteLoader/include/llapi/mc/CraftHandlerEnchant.hpp similarity index 97% rename from LiteLoader/Header/MC/CraftHandlerEnchant.hpp rename to LiteLoader/include/llapi/mc/CraftHandlerEnchant.hpp index 243e5a3..541b355 100644 --- a/LiteLoader/Header/MC/CraftHandlerEnchant.hpp +++ b/LiteLoader/include/llapi/mc/CraftHandlerEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftHandlerTrade.hpp b/LiteLoader/include/llapi/mc/CraftHandlerTrade.hpp similarity index 96% rename from LiteLoader/Header/MC/CraftHandlerTrade.hpp rename to LiteLoader/include/llapi/mc/CraftHandlerTrade.hpp index 47b37d0..ca3fe22 100644 --- a/LiteLoader/Header/MC/CraftHandlerTrade.hpp +++ b/LiteLoader/include/llapi/mc/CraftHandlerTrade.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftableCompounds.hpp b/LiteLoader/include/llapi/mc/CraftableCompounds.hpp similarity index 97% rename from LiteLoader/Header/MC/CraftableCompounds.hpp rename to LiteLoader/include/llapi/mc/CraftableCompounds.hpp index a52512b..948847a 100644 --- a/LiteLoader/Header/MC/CraftableCompounds.hpp +++ b/LiteLoader/include/llapi/mc/CraftableCompounds.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftingContainer.hpp b/LiteLoader/include/llapi/mc/CraftingContainer.hpp similarity index 97% rename from LiteLoader/Header/MC/CraftingContainer.hpp rename to LiteLoader/include/llapi/mc/CraftingContainer.hpp index 02e3973..4e2e517 100644 --- a/LiteLoader/Header/MC/CraftingContainer.hpp +++ b/LiteLoader/include/llapi/mc/CraftingContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Container.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftingDataEntry.hpp b/LiteLoader/include/llapi/mc/CraftingDataEntry.hpp similarity index 96% rename from LiteLoader/Header/MC/CraftingDataEntry.hpp rename to LiteLoader/include/llapi/mc/CraftingDataEntry.hpp index a8fc664..c37d6fb 100644 --- a/LiteLoader/Header/MC/CraftingDataEntry.hpp +++ b/LiteLoader/include/llapi/mc/CraftingDataEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftingDataPacket.hpp b/LiteLoader/include/llapi/mc/CraftingDataPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/CraftingDataPacket.hpp rename to LiteLoader/include/llapi/mc/CraftingDataPacket.hpp index 6672b86..176467b 100644 --- a/LiteLoader/Header/MC/CraftingDataPacket.hpp +++ b/LiteLoader/include/llapi/mc/CraftingDataPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftingEventPacket.hpp b/LiteLoader/include/llapi/mc/CraftingEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/CraftingEventPacket.hpp rename to LiteLoader/include/llapi/mc/CraftingEventPacket.hpp index 61206a5..ed00176 100644 --- a/LiteLoader/Header/MC/CraftingEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/CraftingEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CraftingTag.hpp b/LiteLoader/include/llapi/mc/CraftingTag.hpp similarity index 93% rename from LiteLoader/Header/MC/CraftingTag.hpp rename to LiteLoader/include/llapi/mc/CraftingTag.hpp index fd36a49..3532e62 100644 --- a/LiteLoader/Header/MC/CraftingTag.hpp +++ b/LiteLoader/include/llapi/mc/CraftingTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpAssertData.hpp b/LiteLoader/include/llapi/mc/CrashDumpAssertData.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashDumpAssertData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpAssertData.hpp index aab23d8..5812970 100644 --- a/LiteLoader/Header/MC/CrashDumpAssertData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpAssertData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpEventData.hpp b/LiteLoader/include/llapi/mc/CrashDumpEventData.hpp similarity index 96% rename from LiteLoader/Header/MC/CrashDumpEventData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpEventData.hpp index 3be8bda..6f85cc0 100644 --- a/LiteLoader/Header/MC/CrashDumpEventData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpEventData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpFrameData.hpp b/LiteLoader/include/llapi/mc/CrashDumpFrameData.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashDumpFrameData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpFrameData.hpp index f83a58d..80fb253 100644 --- a/LiteLoader/Header/MC/CrashDumpFrameData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpFrameData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpGameplayData.hpp b/LiteLoader/include/llapi/mc/CrashDumpGameplayData.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashDumpGameplayData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpGameplayData.hpp index 9758435..2e1a6c1 100644 --- a/LiteLoader/Header/MC/CrashDumpGameplayData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpGameplayData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpGlobalData.hpp b/LiteLoader/include/llapi/mc/CrashDumpGlobalData.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashDumpGlobalData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpGlobalData.hpp index 337396e..5df8d4b 100644 --- a/LiteLoader/Header/MC/CrashDumpGlobalData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpGlobalData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpKeyValueData.hpp b/LiteLoader/include/llapi/mc/CrashDumpKeyValueData.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashDumpKeyValueData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpKeyValueData.hpp index 15f1aaf..ddd458a 100644 --- a/LiteLoader/Header/MC/CrashDumpKeyValueData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpKeyValueData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpLog.hpp b/LiteLoader/include/llapi/mc/CrashDumpLog.hpp similarity index 98% rename from LiteLoader/Header/MC/CrashDumpLog.hpp rename to LiteLoader/include/llapi/mc/CrashDumpLog.hpp index df8cbed..5617747 100644 --- a/LiteLoader/Header/MC/CrashDumpLog.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpLog.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpPlayerData.hpp b/LiteLoader/include/llapi/mc/CrashDumpPlayerData.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashDumpPlayerData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpPlayerData.hpp index 8277d4f..08d9d39 100644 --- a/LiteLoader/Header/MC/CrashDumpPlayerData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpPlayerData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDumpRenderData.hpp b/LiteLoader/include/llapi/mc/CrashDumpRenderData.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashDumpRenderData.hpp rename to LiteLoader/include/llapi/mc/CrashDumpRenderData.hpp index 1f69213..c9ac6f6 100644 --- a/LiteLoader/Header/MC/CrashDumpRenderData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDumpRenderData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashDump_AllData.hpp b/LiteLoader/include/llapi/mc/CrashDump_AllData.hpp similarity index 94% rename from LiteLoader/Header/MC/CrashDump_AllData.hpp rename to LiteLoader/include/llapi/mc/CrashDump_AllData.hpp index cc36240..f3d566d 100644 --- a/LiteLoader/Header/MC/CrashDump_AllData.hpp +++ b/LiteLoader/include/llapi/mc/CrashDump_AllData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashHandler.hpp b/LiteLoader/include/llapi/mc/CrashHandler.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashHandler.hpp rename to LiteLoader/include/llapi/mc/CrashHandler.hpp index 0957b7b..a9ff3d8 100644 --- a/LiteLoader/Header/MC/CrashHandler.hpp +++ b/LiteLoader/include/llapi/mc/CrashHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrashHelper.hpp b/LiteLoader/include/llapi/mc/CrashHelper.hpp similarity index 95% rename from LiteLoader/Header/MC/CrashHelper.hpp rename to LiteLoader/include/llapi/mc/CrashHelper.hpp index a22aef2..7675221 100644 --- a/LiteLoader/Header/MC/CrashHelper.hpp +++ b/LiteLoader/include/llapi/mc/CrashHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CreativeContentPacket.hpp b/LiteLoader/include/llapi/mc/CreativeContentPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/CreativeContentPacket.hpp rename to LiteLoader/include/llapi/mc/CreativeContentPacket.hpp index 3032547..c6f8544 100644 --- a/LiteLoader/Header/MC/CreativeContentPacket.hpp +++ b/LiteLoader/include/llapi/mc/CreativeContentPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CreativeItemEntry.hpp b/LiteLoader/include/llapi/mc/CreativeItemEntry.hpp similarity index 95% rename from LiteLoader/Header/MC/CreativeItemEntry.hpp rename to LiteLoader/include/llapi/mc/CreativeItemEntry.hpp index 38b4c69..aaef271 100644 --- a/LiteLoader/Header/MC/CreativeItemEntry.hpp +++ b/LiteLoader/include/llapi/mc/CreativeItemEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Creeper.hpp b/LiteLoader/include/llapi/mc/Creeper.hpp similarity index 98% rename from LiteLoader/Header/MC/Creeper.hpp rename to LiteLoader/include/llapi/mc/Creeper.hpp index 566278d..7580a29 100644 --- a/LiteLoader/Header/MC/Creeper.hpp +++ b/LiteLoader/include/llapi/mc/Creeper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/CropBlock.hpp b/LiteLoader/include/llapi/mc/CropBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/CropBlock.hpp rename to LiteLoader/include/llapi/mc/CropBlock.hpp index a104de4..e458608 100644 --- a/LiteLoader/Header/MC/CropBlock.hpp +++ b/LiteLoader/include/llapi/mc/CropBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrossbowEnchant.hpp b/LiteLoader/include/llapi/mc/CrossbowEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/CrossbowEnchant.hpp rename to LiteLoader/include/llapi/mc/CrossbowEnchant.hpp index 757fc94..7dc0085 100644 --- a/LiteLoader/Header/MC/CrossbowEnchant.hpp +++ b/LiteLoader/include/llapi/mc/CrossbowEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CrossbowItem.hpp b/LiteLoader/include/llapi/mc/CrossbowItem.hpp similarity index 98% rename from LiteLoader/Header/MC/CrossbowItem.hpp rename to LiteLoader/include/llapi/mc/CrossbowItem.hpp index 9e75dc8..d792043 100644 --- a/LiteLoader/Header/MC/CrossbowItem.hpp +++ b/LiteLoader/include/llapi/mc/CrossbowItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CryingObsidianBlock.hpp b/LiteLoader/include/llapi/mc/CryingObsidianBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/CryingObsidianBlock.hpp rename to LiteLoader/include/llapi/mc/CryingObsidianBlock.hpp index 9c29080..6c9257d 100644 --- a/LiteLoader/Header/MC/CryingObsidianBlock.hpp +++ b/LiteLoader/include/llapi/mc/CryingObsidianBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CryptoUtils.hpp b/LiteLoader/include/llapi/mc/CryptoUtils.hpp similarity index 92% rename from LiteLoader/Header/MC/CryptoUtils.hpp rename to LiteLoader/include/llapi/mc/CryptoUtils.hpp index 155b1ee..53f0880 100644 --- a/LiteLoader/Header/MC/CryptoUtils.hpp +++ b/LiteLoader/include/llapi/mc/CryptoUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CurseBindingEnchant.hpp b/LiteLoader/include/llapi/mc/CurseBindingEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/CurseBindingEnchant.hpp rename to LiteLoader/include/llapi/mc/CurseBindingEnchant.hpp index 9e7b22b..ad40f40 100644 --- a/LiteLoader/Header/MC/CurseBindingEnchant.hpp +++ b/LiteLoader/include/llapi/mc/CurseBindingEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CurseVanishingEnchant.hpp b/LiteLoader/include/llapi/mc/CurseVanishingEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/CurseVanishingEnchant.hpp rename to LiteLoader/include/llapi/mc/CurseVanishingEnchant.hpp index 1ac0398..f8b87b0 100644 --- a/LiteLoader/Header/MC/CurseVanishingEnchant.hpp +++ b/LiteLoader/include/llapi/mc/CurseVanishingEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/CustomScriptEventData.hpp b/LiteLoader/include/llapi/mc/CustomScriptEventData.hpp similarity index 96% rename from LiteLoader/Header/MC/CustomScriptEventData.hpp rename to LiteLoader/include/llapi/mc/CustomScriptEventData.hpp index 9c48780..b5010bd 100644 --- a/LiteLoader/Header/MC/CustomScriptEventData.hpp +++ b/LiteLoader/include/llapi/mc/CustomScriptEventData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DBChunkStorage.hpp b/LiteLoader/include/llapi/mc/DBChunkStorage.hpp similarity index 98% rename from LiteLoader/Header/MC/DBChunkStorage.hpp rename to LiteLoader/include/llapi/mc/DBChunkStorage.hpp index 9b8de13..9a404d2 100644 --- a/LiteLoader/Header/MC/DBChunkStorage.hpp +++ b/LiteLoader/include/llapi/mc/DBChunkStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChunkSource.hpp" #include "Bedrock.hpp" diff --git a/LiteLoader/Header/MC/DBStorage.hpp b/LiteLoader/include/llapi/mc/DBStorage.hpp similarity index 98% rename from LiteLoader/Header/MC/DBStorage.hpp rename to LiteLoader/include/llapi/mc/DBStorage.hpp index 5856e93..9c560c0 100644 --- a/LiteLoader/Header/MC/DBStorage.hpp +++ b/LiteLoader/include/llapi/mc/DBStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "Bedrock.hpp" #include "LevelStorageWriteBatch.hpp" @@ -9,7 +9,7 @@ #define BEFORE_EXTRA // Include Headers or Declare Types Here -#include "third-party/leveldb/status.h" +#include #undef BEFORE_EXTRA class DBStorage : public LevelStorage { diff --git a/LiteLoader/Header/MC/DBStorageConfig.hpp b/LiteLoader/include/llapi/mc/DBStorageConfig.hpp similarity index 95% rename from LiteLoader/Header/MC/DBStorageConfig.hpp rename to LiteLoader/include/llapi/mc/DBStorageConfig.hpp index 4f94230..02fd60e 100644 --- a/LiteLoader/Header/MC/DBStorageConfig.hpp +++ b/LiteLoader/include/llapi/mc/DBStorageConfig.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DBStorageEnvironmentChain.hpp b/LiteLoader/include/llapi/mc/DBStorageEnvironmentChain.hpp similarity index 97% rename from LiteLoader/Header/MC/DBStorageEnvironmentChain.hpp rename to LiteLoader/include/llapi/mc/DBStorageEnvironmentChain.hpp index 1c54cce..cee3239 100644 --- a/LiteLoader/Header/MC/DBStorageEnvironmentChain.hpp +++ b/LiteLoader/include/llapi/mc/DBStorageEnvironmentChain.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DamageCondition.hpp b/LiteLoader/include/llapi/mc/DamageCondition.hpp similarity index 95% rename from LiteLoader/Header/MC/DamageCondition.hpp rename to LiteLoader/include/llapi/mc/DamageCondition.hpp index c53a81c..ac8072e 100644 --- a/LiteLoader/Header/MC/DamageCondition.hpp +++ b/LiteLoader/include/llapi/mc/DamageCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DamageOverTimeSystem.hpp b/LiteLoader/include/llapi/mc/DamageOverTimeSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/DamageOverTimeSystem.hpp rename to LiteLoader/include/llapi/mc/DamageOverTimeSystem.hpp index a5822cc..5be23c0 100644 --- a/LiteLoader/Header/MC/DamageOverTimeSystem.hpp +++ b/LiteLoader/include/llapi/mc/DamageOverTimeSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DamageSensorComponent.hpp b/LiteLoader/include/llapi/mc/DamageSensorComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/DamageSensorComponent.hpp rename to LiteLoader/include/llapi/mc/DamageSensorComponent.hpp index bb47355..8b13b4f 100644 --- a/LiteLoader/Header/MC/DamageSensorComponent.hpp +++ b/LiteLoader/include/llapi/mc/DamageSensorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DamageSensorDefinition.hpp b/LiteLoader/include/llapi/mc/DamageSensorDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/DamageSensorDefinition.hpp rename to LiteLoader/include/llapi/mc/DamageSensorDefinition.hpp index a5ae154..48c25dc 100644 --- a/LiteLoader/Header/MC/DamageSensorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DamageSensorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/DamageSensorTrigger.hpp b/LiteLoader/include/llapi/mc/DamageSensorTrigger.hpp similarity index 95% rename from LiteLoader/Header/MC/DamageSensorTrigger.hpp rename to LiteLoader/include/llapi/mc/DamageSensorTrigger.hpp index 4afed05..733c902 100644 --- a/LiteLoader/Header/MC/DamageSensorTrigger.hpp +++ b/LiteLoader/include/llapi/mc/DamageSensorTrigger.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DanceComponentListener.hpp b/LiteLoader/include/llapi/mc/DanceComponentListener.hpp similarity index 98% rename from LiteLoader/Header/MC/DanceComponentListener.hpp rename to LiteLoader/include/llapi/mc/DanceComponentListener.hpp index 0b9e07a..d16b06f 100644 --- a/LiteLoader/Header/MC/DanceComponentListener.hpp +++ b/LiteLoader/include/llapi/mc/DanceComponentListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockSourceListener.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DanceSystem.hpp b/LiteLoader/include/llapi/mc/DanceSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/DanceSystem.hpp rename to LiteLoader/include/llapi/mc/DanceSystem.hpp index 32b0ccf..08d95bf 100644 --- a/LiteLoader/Header/MC/DanceSystem.hpp +++ b/LiteLoader/include/llapi/mc/DanceSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DataItem.hpp b/LiteLoader/include/llapi/mc/DataItem.hpp similarity index 99% rename from LiteLoader/Header/MC/DataItem.hpp rename to LiteLoader/include/llapi/mc/DataItem.hpp index 972b618..6d5b062 100644 --- a/LiteLoader/Header/MC/DataItem.hpp +++ b/LiteLoader/include/llapi/mc/DataItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DatagramHeaderFormat.hpp b/LiteLoader/include/llapi/mc/DatagramHeaderFormat.hpp similarity index 96% rename from LiteLoader/Header/MC/DatagramHeaderFormat.hpp rename to LiteLoader/include/llapi/mc/DatagramHeaderFormat.hpp index 03d884d..3793720 100644 --- a/LiteLoader/Header/MC/DatagramHeaderFormat.hpp +++ b/LiteLoader/include/llapi/mc/DatagramHeaderFormat.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DateManager.hpp b/LiteLoader/include/llapi/mc/DateManager.hpp similarity index 95% rename from LiteLoader/Header/MC/DateManager.hpp rename to LiteLoader/include/llapi/mc/DateManager.hpp index 54e5481..ab9d7d9 100644 --- a/LiteLoader/Header/MC/DateManager.hpp +++ b/LiteLoader/include/llapi/mc/DateManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DayLockCommand.hpp b/LiteLoader/include/llapi/mc/DayLockCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/DayLockCommand.hpp rename to LiteLoader/include/llapi/mc/DayLockCommand.hpp index b84467e..541bb67 100644 --- a/LiteLoader/Header/MC/DayLockCommand.hpp +++ b/LiteLoader/include/llapi/mc/DayLockCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DaylightDetectorBlock.hpp b/LiteLoader/include/llapi/mc/DaylightDetectorBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/DaylightDetectorBlock.hpp rename to LiteLoader/include/llapi/mc/DaylightDetectorBlock.hpp index f15eab3..616cb37 100644 --- a/LiteLoader/Header/MC/DaylightDetectorBlock.hpp +++ b/LiteLoader/include/llapi/mc/DaylightDetectorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DaylightDetectorBlockActor.hpp b/LiteLoader/include/llapi/mc/DaylightDetectorBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/DaylightDetectorBlockActor.hpp rename to LiteLoader/include/llapi/mc/DaylightDetectorBlockActor.hpp index 3639c3c..3805e19 100644 --- a/LiteLoader/Header/MC/DaylightDetectorBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/DaylightDetectorBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DeOpCommand.hpp b/LiteLoader/include/llapi/mc/DeOpCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/DeOpCommand.hpp rename to LiteLoader/include/llapi/mc/DeOpCommand.hpp index 88b0b2e..5781dde 100644 --- a/LiteLoader/Header/MC/DeOpCommand.hpp +++ b/LiteLoader/include/llapi/mc/DeOpCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DeadBush.hpp b/LiteLoader/include/llapi/mc/DeadBush.hpp similarity index 98% rename from LiteLoader/Header/MC/DeadBush.hpp rename to LiteLoader/include/llapi/mc/DeadBush.hpp index 98caa57..28da26a 100644 --- a/LiteLoader/Header/MC/DeadBush.hpp +++ b/LiteLoader/include/llapi/mc/DeadBush.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DeadBushFeature.hpp b/LiteLoader/include/llapi/mc/DeadBushFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/DeadBushFeature.hpp rename to LiteLoader/include/llapi/mc/DeadBushFeature.hpp index 24dcd50..cab1a83 100644 --- a/LiteLoader/Header/MC/DeadBushFeature.hpp +++ b/LiteLoader/include/llapi/mc/DeadBushFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DebugAssertException.hpp b/LiteLoader/include/llapi/mc/DebugAssertException.hpp similarity index 96% rename from LiteLoader/Header/MC/DebugAssertException.hpp rename to LiteLoader/include/llapi/mc/DebugAssertException.hpp index 2fd0760..b99fff7 100644 --- a/LiteLoader/Header/MC/DebugAssertException.hpp +++ b/LiteLoader/include/llapi/mc/DebugAssertException.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DebugEndPoint.hpp b/LiteLoader/include/llapi/mc/DebugEndPoint.hpp similarity index 96% rename from LiteLoader/Header/MC/DebugEndPoint.hpp rename to LiteLoader/include/llapi/mc/DebugEndPoint.hpp index d4efb45..5ad7d76 100644 --- a/LiteLoader/Header/MC/DebugEndPoint.hpp +++ b/LiteLoader/include/llapi/mc/DebugEndPoint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DebugInfoComponent.hpp b/LiteLoader/include/llapi/mc/DebugInfoComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/DebugInfoComponent.hpp rename to LiteLoader/include/llapi/mc/DebugInfoComponent.hpp index 1906416..765a009 100644 --- a/LiteLoader/Header/MC/DebugInfoComponent.hpp +++ b/LiteLoader/include/llapi/mc/DebugInfoComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DebugInfoPacket.hpp b/LiteLoader/include/llapi/mc/DebugInfoPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/DebugInfoPacket.hpp rename to LiteLoader/include/llapi/mc/DebugInfoPacket.hpp index 1053129..9d224ce 100644 --- a/LiteLoader/Header/MC/DebugInfoPacket.hpp +++ b/LiteLoader/include/llapi/mc/DebugInfoPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DebugUtils.hpp b/LiteLoader/include/llapi/mc/DebugUtils.hpp similarity index 96% rename from LiteLoader/Header/MC/DebugUtils.hpp rename to LiteLoader/include/llapi/mc/DebugUtils.hpp index 85c8904..cb5d10c 100644 --- a/LiteLoader/Header/MC/DebugUtils.hpp +++ b/LiteLoader/include/llapi/mc/DebugUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DecoratorDefinition.hpp b/LiteLoader/include/llapi/mc/DecoratorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DecoratorDefinition.hpp rename to LiteLoader/include/llapi/mc/DecoratorDefinition.hpp index 4ad50ed..1ecebcb 100644 --- a/LiteLoader/Header/MC/DecoratorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DecoratorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DedicatedServer.hpp b/LiteLoader/include/llapi/mc/DedicatedServer.hpp similarity index 97% rename from LiteLoader/Header/MC/DedicatedServer.hpp rename to LiteLoader/include/llapi/mc/DedicatedServer.hpp index 80bb15d..dbb564b 100644 --- a/LiteLoader/Header/MC/DedicatedServer.hpp +++ b/LiteLoader/include/llapi/mc/DedicatedServer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DedicatedServerCommands.hpp b/LiteLoader/include/llapi/mc/DedicatedServerCommands.hpp similarity index 96% rename from LiteLoader/Header/MC/DedicatedServerCommands.hpp rename to LiteLoader/include/llapi/mc/DedicatedServerCommands.hpp index 54f8cf5..5d824f1 100644 --- a/LiteLoader/Header/MC/DedicatedServerCommands.hpp +++ b/LiteLoader/include/llapi/mc/DedicatedServerCommands.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DedicatedWSServerCommand.hpp b/LiteLoader/include/llapi/mc/DedicatedWSServerCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/DedicatedWSServerCommand.hpp rename to LiteLoader/include/llapi/mc/DedicatedWSServerCommand.hpp index eef796f..90ce088 100644 --- a/LiteLoader/Header/MC/DedicatedWSServerCommand.hpp +++ b/LiteLoader/include/llapi/mc/DedicatedWSServerCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefaultDataLoadHelper.hpp b/LiteLoader/include/llapi/mc/DefaultDataLoadHelper.hpp similarity index 98% rename from LiteLoader/Header/MC/DefaultDataLoadHelper.hpp rename to LiteLoader/include/llapi/mc/DefaultDataLoadHelper.hpp index 76da607..0241fd0 100644 --- a/LiteLoader/Header/MC/DefaultDataLoadHelper.hpp +++ b/LiteLoader/include/llapi/mc/DefaultDataLoadHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefaultEmptyActorAnimationPlayer.hpp b/LiteLoader/include/llapi/mc/DefaultEmptyActorAnimationPlayer.hpp similarity index 98% rename from LiteLoader/Header/MC/DefaultEmptyActorAnimationPlayer.hpp rename to LiteLoader/include/llapi/mc/DefaultEmptyActorAnimationPlayer.hpp index 436a70b..c983d7b 100644 --- a/LiteLoader/Header/MC/DefaultEmptyActorAnimationPlayer.hpp +++ b/LiteLoader/include/llapi/mc/DefaultEmptyActorAnimationPlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefaultLookAngleDescription.hpp b/LiteLoader/include/llapi/mc/DefaultLookAngleDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/DefaultLookAngleDescription.hpp rename to LiteLoader/include/llapi/mc/DefaultLookAngleDescription.hpp index d1a96db..b7518f0 100644 --- a/LiteLoader/Header/MC/DefaultLookAngleDescription.hpp +++ b/LiteLoader/include/llapi/mc/DefaultLookAngleDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefaultMobSpawner.hpp b/LiteLoader/include/llapi/mc/DefaultMobSpawner.hpp similarity index 96% rename from LiteLoader/Header/MC/DefaultMobSpawner.hpp rename to LiteLoader/include/llapi/mc/DefaultMobSpawner.hpp index a30bdff..a89903a 100644 --- a/LiteLoader/Header/MC/DefaultMobSpawner.hpp +++ b/LiteLoader/include/llapi/mc/DefaultMobSpawner.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMobSpawner.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefaultScreenCapabilities.hpp b/LiteLoader/include/llapi/mc/DefaultScreenCapabilities.hpp similarity index 96% rename from LiteLoader/Header/MC/DefaultScreenCapabilities.hpp rename to LiteLoader/include/llapi/mc/DefaultScreenCapabilities.hpp index 1f05f95..38abab6 100644 --- a/LiteLoader/Header/MC/DefaultScreenCapabilities.hpp +++ b/LiteLoader/include/llapi/mc/DefaultScreenCapabilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefendTrustedTargetGoal.hpp b/LiteLoader/include/llapi/mc/DefendTrustedTargetGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DefendTrustedTargetGoal.hpp rename to LiteLoader/include/llapi/mc/DefendTrustedTargetGoal.hpp index b27242f..2a1abdc 100644 --- a/LiteLoader/Header/MC/DefendTrustedTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/DefendTrustedTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NearestAttackableTargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefendVillageTargetDefinition.hpp b/LiteLoader/include/llapi/mc/DefendVillageTargetDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DefendVillageTargetDefinition.hpp rename to LiteLoader/include/llapi/mc/DefendVillageTargetDefinition.hpp index c5a41e0..66872b5 100644 --- a/LiteLoader/Header/MC/DefendVillageTargetDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DefendVillageTargetDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefendVillageTargetGoal.hpp b/LiteLoader/include/llapi/mc/DefendVillageTargetGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DefendVillageTargetGoal.hpp rename to LiteLoader/include/llapi/mc/DefendVillageTargetGoal.hpp index b2c46a8..55d8f60 100644 --- a/LiteLoader/Header/MC/DefendVillageTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/DefendVillageTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefinitionEvent.hpp b/LiteLoader/include/llapi/mc/DefinitionEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/DefinitionEvent.hpp rename to LiteLoader/include/llapi/mc/DefinitionEvent.hpp index 793f6bc..b5d646e 100644 --- a/LiteLoader/Header/MC/DefinitionEvent.hpp +++ b/LiteLoader/include/llapi/mc/DefinitionEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefinitionEventLoader.hpp b/LiteLoader/include/llapi/mc/DefinitionEventLoader.hpp similarity index 96% rename from LiteLoader/Header/MC/DefinitionEventLoader.hpp rename to LiteLoader/include/llapi/mc/DefinitionEventLoader.hpp index e9b9de7..2350675 100644 --- a/LiteLoader/Header/MC/DefinitionEventLoader.hpp +++ b/LiteLoader/include/llapi/mc/DefinitionEventLoader.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefinitionModifier.hpp b/LiteLoader/include/llapi/mc/DefinitionModifier.hpp similarity index 95% rename from LiteLoader/Header/MC/DefinitionModifier.hpp rename to LiteLoader/include/llapi/mc/DefinitionModifier.hpp index 0567213..e5b3847 100644 --- a/LiteLoader/Header/MC/DefinitionModifier.hpp +++ b/LiteLoader/include/llapi/mc/DefinitionModifier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DefinitionTrigger.hpp b/LiteLoader/include/llapi/mc/DefinitionTrigger.hpp similarity index 96% rename from LiteLoader/Header/MC/DefinitionTrigger.hpp rename to LiteLoader/include/llapi/mc/DefinitionTrigger.hpp index bb6ac04..845d075 100644 --- a/LiteLoader/Header/MC/DefinitionTrigger.hpp +++ b/LiteLoader/include/llapi/mc/DefinitionTrigger.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DelayedAttackDefinition.hpp b/LiteLoader/include/llapi/mc/DelayedAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DelayedAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/DelayedAttackDefinition.hpp index cb32773..9a49992 100644 --- a/LiteLoader/Header/MC/DelayedAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DelayedAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DelayedAttackGoal.hpp b/LiteLoader/include/llapi/mc/DelayedAttackGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DelayedAttackGoal.hpp rename to LiteLoader/include/llapi/mc/DelayedAttackGoal.hpp index bf02208..9a94dd2 100644 --- a/LiteLoader/Header/MC/DelayedAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/DelayedAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MeleeAttackGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DeltaFeature.hpp b/LiteLoader/include/llapi/mc/DeltaFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/DeltaFeature.hpp rename to LiteLoader/include/llapi/mc/DeltaFeature.hpp index 9188daa..5015042 100644 --- a/LiteLoader/Header/MC/DeltaFeature.hpp +++ b/LiteLoader/include/llapi/mc/DeltaFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DeprecatedSlabBlockItem.hpp b/LiteLoader/include/llapi/mc/DeprecatedSlabBlockItem.hpp similarity index 97% rename from LiteLoader/Header/MC/DeprecatedSlabBlockItem.hpp rename to LiteLoader/include/llapi/mc/DeprecatedSlabBlockItem.hpp index 19cb698..2359116 100644 --- a/LiteLoader/Header/MC/DeprecatedSlabBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/DeprecatedSlabBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Description.hpp b/LiteLoader/include/llapi/mc/Description.hpp similarity index 96% rename from LiteLoader/Header/MC/Description.hpp rename to LiteLoader/include/llapi/mc/Description.hpp index 38858d2..4c3d7ee 100644 --- a/LiteLoader/Header/MC/Description.hpp +++ b/LiteLoader/include/llapi/mc/Description.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DesertPyramidPiece.hpp b/LiteLoader/include/llapi/mc/DesertPyramidPiece.hpp similarity index 96% rename from LiteLoader/Header/MC/DesertPyramidPiece.hpp rename to LiteLoader/include/llapi/mc/DesertPyramidPiece.hpp index 63ba50e..9a42a9a 100644 --- a/LiteLoader/Header/MC/DesertPyramidPiece.hpp +++ b/LiteLoader/include/llapi/mc/DesertPyramidPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DesertWellFeature.hpp b/LiteLoader/include/llapi/mc/DesertWellFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/DesertWellFeature.hpp rename to LiteLoader/include/llapi/mc/DesertWellFeature.hpp index 27e982d..6d94139 100644 --- a/LiteLoader/Header/MC/DesertWellFeature.hpp +++ b/LiteLoader/include/llapi/mc/DesertWellFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DespawnComponent.hpp b/LiteLoader/include/llapi/mc/DespawnComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/DespawnComponent.hpp rename to LiteLoader/include/llapi/mc/DespawnComponent.hpp index a79884e..8ddd397 100644 --- a/LiteLoader/Header/MC/DespawnComponent.hpp +++ b/LiteLoader/include/llapi/mc/DespawnComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DespawnDefinition.hpp b/LiteLoader/include/llapi/mc/DespawnDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DespawnDefinition.hpp rename to LiteLoader/include/llapi/mc/DespawnDefinition.hpp index 36d5f09..91735e7 100644 --- a/LiteLoader/Header/MC/DespawnDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DespawnDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DespawnSystem.hpp b/LiteLoader/include/llapi/mc/DespawnSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/DespawnSystem.hpp rename to LiteLoader/include/llapi/mc/DespawnSystem.hpp index 1ace6fe..c67eb3d 100644 --- a/LiteLoader/Header/MC/DespawnSystem.hpp +++ b/LiteLoader/include/llapi/mc/DespawnSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DetectorRailBlock.hpp b/LiteLoader/include/llapi/mc/DetectorRailBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/DetectorRailBlock.hpp rename to LiteLoader/include/llapi/mc/DetectorRailBlock.hpp index 946a39a..50a2d74 100644 --- a/LiteLoader/Header/MC/DetectorRailBlock.hpp +++ b/LiteLoader/include/llapi/mc/DetectorRailBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseRailBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DifficultyCommand.hpp b/LiteLoader/include/llapi/mc/DifficultyCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/DifficultyCommand.hpp rename to LiteLoader/include/llapi/mc/DifficultyCommand.hpp index 5e3fe5b..50f67b8 100644 --- a/LiteLoader/Header/MC/DifficultyCommand.hpp +++ b/LiteLoader/include/llapi/mc/DifficultyCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DiggerItem.hpp b/LiteLoader/include/llapi/mc/DiggerItem.hpp similarity index 98% rename from LiteLoader/Header/MC/DiggerItem.hpp rename to LiteLoader/include/llapi/mc/DiggerItem.hpp index ea065fa..9694ea9 100644 --- a/LiteLoader/Header/MC/DiggerItem.hpp +++ b/LiteLoader/include/llapi/mc/DiggerItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DiggingEnchant.hpp b/LiteLoader/include/llapi/mc/DiggingEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/DiggingEnchant.hpp rename to LiteLoader/include/llapi/mc/DiggingEnchant.hpp index d32d10b..6f9096b 100644 --- a/LiteLoader/Header/MC/DiggingEnchant.hpp +++ b/LiteLoader/include/llapi/mc/DiggingEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Dimension.hpp b/LiteLoader/include/llapi/mc/Dimension.hpp similarity index 99% rename from LiteLoader/Header/MC/Dimension.hpp rename to LiteLoader/include/llapi/mc/Dimension.hpp index 0be90cc..31fd74e 100644 --- a/LiteLoader/Header/MC/Dimension.hpp +++ b/LiteLoader/include/llapi/mc/Dimension.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA class BlockSource; diff --git a/LiteLoader/Header/MC/DimensionBrightnessRamp.hpp b/LiteLoader/include/llapi/mc/DimensionBrightnessRamp.hpp similarity index 96% rename from LiteLoader/Header/MC/DimensionBrightnessRamp.hpp rename to LiteLoader/include/llapi/mc/DimensionBrightnessRamp.hpp index f5b7131..f4878a1 100644 --- a/LiteLoader/Header/MC/DimensionBrightnessRamp.hpp +++ b/LiteLoader/include/llapi/mc/DimensionBrightnessRamp.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DiodeBlock.hpp b/LiteLoader/include/llapi/mc/DiodeBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/DiodeBlock.hpp rename to LiteLoader/include/llapi/mc/DiodeBlock.hpp index 688537b..9217e77 100644 --- a/LiteLoader/Header/MC/DiodeBlock.hpp +++ b/LiteLoader/include/llapi/mc/DiodeBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Direction.hpp b/LiteLoader/include/llapi/mc/Direction.hpp similarity index 96% rename from LiteLoader/Header/MC/Direction.hpp rename to LiteLoader/include/llapi/mc/Direction.hpp index 5e73708..1586127 100644 --- a/LiteLoader/Header/MC/Direction.hpp +++ b/LiteLoader/include/llapi/mc/Direction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DirectoryPackAccessStrategy.hpp b/LiteLoader/include/llapi/mc/DirectoryPackAccessStrategy.hpp similarity index 98% rename from LiteLoader/Header/MC/DirectoryPackAccessStrategy.hpp rename to LiteLoader/include/llapi/mc/DirectoryPackAccessStrategy.hpp index 639268b..2a90946 100644 --- a/LiteLoader/Header/MC/DirectoryPackAccessStrategy.hpp +++ b/LiteLoader/include/llapi/mc/DirectoryPackAccessStrategy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "PackAccessStrategy.hpp" diff --git a/LiteLoader/Header/MC/DirectoryPackSource.hpp b/LiteLoader/include/llapi/mc/DirectoryPackSource.hpp similarity index 97% rename from LiteLoader/Header/MC/DirectoryPackSource.hpp rename to LiteLoader/include/llapi/mc/DirectoryPackSource.hpp index 102d429..d92fa3e 100644 --- a/LiteLoader/Header/MC/DirectoryPackSource.hpp +++ b/LiteLoader/include/llapi/mc/DirectoryPackSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DirectoryPackWithEncryptionAccessStrategy.hpp b/LiteLoader/include/llapi/mc/DirectoryPackWithEncryptionAccessStrategy.hpp similarity index 98% rename from LiteLoader/Header/MC/DirectoryPackWithEncryptionAccessStrategy.hpp rename to LiteLoader/include/llapi/mc/DirectoryPackWithEncryptionAccessStrategy.hpp index 742a13d..bc24418 100644 --- a/LiteLoader/Header/MC/DirectoryPackWithEncryptionAccessStrategy.hpp +++ b/LiteLoader/include/llapi/mc/DirectoryPackWithEncryptionAccessStrategy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "PackAccessStrategy.hpp" diff --git a/LiteLoader/Header/MC/DirtBlock.hpp b/LiteLoader/include/llapi/mc/DirtBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/DirtBlock.hpp rename to LiteLoader/include/llapi/mc/DirtBlock.hpp index 1f1f9d6..d28b6f2 100644 --- a/LiteLoader/Header/MC/DirtBlock.hpp +++ b/LiteLoader/include/llapi/mc/DirtBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DirtyTicksCounter.hpp b/LiteLoader/include/llapi/mc/DirtyTicksCounter.hpp similarity index 94% rename from LiteLoader/Header/MC/DirtyTicksCounter.hpp rename to LiteLoader/include/llapi/mc/DirtyTicksCounter.hpp index cffcdea..8ee1d8f 100644 --- a/LiteLoader/Header/MC/DirtyTicksCounter.hpp +++ b/LiteLoader/include/llapi/mc/DirtyTicksCounter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DisconnectPacket.hpp b/LiteLoader/include/llapi/mc/DisconnectPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/DisconnectPacket.hpp rename to LiteLoader/include/llapi/mc/DisconnectPacket.hpp index e26b372..1acdf2e 100644 --- a/LiteLoader/Header/MC/DisconnectPacket.hpp +++ b/LiteLoader/include/llapi/mc/DisconnectPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DispenserBlock.hpp b/LiteLoader/include/llapi/mc/DispenserBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/DispenserBlock.hpp rename to LiteLoader/include/llapi/mc/DispenserBlock.hpp index 11f11ec..2caea9b 100644 --- a/LiteLoader/Header/MC/DispenserBlock.hpp +++ b/LiteLoader/include/llapi/mc/DispenserBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DispenserBlockActor.hpp b/LiteLoader/include/llapi/mc/DispenserBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/DispenserBlockActor.hpp rename to LiteLoader/include/llapi/mc/DispenserBlockActor.hpp index 231accd..5878dee 100644 --- a/LiteLoader/Header/MC/DispenserBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/DispenserBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DispenserContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/DispenserContainerManagerModel.hpp similarity index 96% rename from LiteLoader/Header/MC/DispenserContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/DispenserContainerManagerModel.hpp index 723c090..888a366 100644 --- a/LiteLoader/Header/MC/DispenserContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/DispenserContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LevelContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DisplayObjective.hpp b/LiteLoader/include/llapi/mc/DisplayObjective.hpp similarity index 96% rename from LiteLoader/Header/MC/DisplayObjective.hpp rename to LiteLoader/include/llapi/mc/DisplayObjective.hpp index f9d3713..ea1b7d0 100644 --- a/LiteLoader/Header/MC/DisplayObjective.hpp +++ b/LiteLoader/include/llapi/mc/DisplayObjective.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Dolphin.hpp b/LiteLoader/include/llapi/mc/Dolphin.hpp similarity index 98% rename from LiteLoader/Header/MC/Dolphin.hpp rename to LiteLoader/include/llapi/mc/Dolphin.hpp index 45142a2..04df75b 100644 --- a/LiteLoader/Header/MC/Dolphin.hpp +++ b/LiteLoader/include/llapi/mc/Dolphin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "WaterAnimal.hpp" diff --git a/LiteLoader/Header/MC/DolphinMoveControl.hpp b/LiteLoader/include/llapi/mc/DolphinMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/DolphinMoveControl.hpp rename to LiteLoader/include/llapi/mc/DolphinMoveControl.hpp index ad2a177..d4ff54d 100644 --- a/LiteLoader/Header/MC/DolphinMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/DolphinMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DoorBlock.hpp b/LiteLoader/include/llapi/mc/DoorBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/DoorBlock.hpp rename to LiteLoader/include/llapi/mc/DoorBlock.hpp index 815464d..fc8fa24 100644 --- a/LiteLoader/Header/MC/DoorBlock.hpp +++ b/LiteLoader/include/llapi/mc/DoorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Direction.hpp" #include "BlockLegacy.hpp" diff --git a/LiteLoader/Header/MC/DoorInteractGoal.hpp b/LiteLoader/include/llapi/mc/DoorInteractGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DoorInteractGoal.hpp rename to LiteLoader/include/llapi/mc/DoorInteractGoal.hpp index 9df25a0..7d57ca2 100644 --- a/LiteLoader/Header/MC/DoorInteractGoal.hpp +++ b/LiteLoader/include/llapi/mc/DoorInteractGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Direction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DoorItem.hpp b/LiteLoader/include/llapi/mc/DoorItem.hpp similarity index 98% rename from LiteLoader/Header/MC/DoorItem.hpp rename to LiteLoader/include/llapi/mc/DoorItem.hpp index 1257979..6ae5231 100644 --- a/LiteLoader/Header/MC/DoorItem.hpp +++ b/LiteLoader/include/llapi/mc/DoorItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DoublePlantBlock.hpp b/LiteLoader/include/llapi/mc/DoublePlantBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/DoublePlantBlock.hpp rename to LiteLoader/include/llapi/mc/DoublePlantBlock.hpp index b0268d8..f7910b2 100644 --- a/LiteLoader/Header/MC/DoublePlantBlock.hpp +++ b/LiteLoader/include/llapi/mc/DoublePlantBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DoublePlantFeature.hpp b/LiteLoader/include/llapi/mc/DoublePlantFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/DoublePlantFeature.hpp rename to LiteLoader/include/llapi/mc/DoublePlantFeature.hpp index 91d4054..56ae3dd 100644 --- a/LiteLoader/Header/MC/DoublePlantFeature.hpp +++ b/LiteLoader/include/llapi/mc/DoublePlantFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DoubleTag.hpp b/LiteLoader/include/llapi/mc/DoubleTag.hpp similarity index 97% rename from LiteLoader/Header/MC/DoubleTag.hpp rename to LiteLoader/include/llapi/mc/DoubleTag.hpp index 9596fe9..a75ecb9 100644 --- a/LiteLoader/Header/MC/DoubleTag.hpp +++ b/LiteLoader/include/llapi/mc/DoubleTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DouseFireSubcomponent.hpp b/LiteLoader/include/llapi/mc/DouseFireSubcomponent.hpp similarity index 97% rename from LiteLoader/Header/MC/DouseFireSubcomponent.hpp rename to LiteLoader/include/llapi/mc/DouseFireSubcomponent.hpp index 65a4a59..cd8ad34 100644 --- a/LiteLoader/Header/MC/DouseFireSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/DouseFireSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonBaseGoalDefinition.hpp b/LiteLoader/include/llapi/mc/DragonBaseGoalDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonBaseGoalDefinition.hpp rename to LiteLoader/include/llapi/mc/DragonBaseGoalDefinition.hpp index f3bf08a..372203c 100644 --- a/LiteLoader/Header/MC/DragonBaseGoalDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DragonBaseGoalDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonChargePlayerDefinition.hpp b/LiteLoader/include/llapi/mc/DragonChargePlayerDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonChargePlayerDefinition.hpp rename to LiteLoader/include/llapi/mc/DragonChargePlayerDefinition.hpp index c1f5ab2..805bc39 100644 --- a/LiteLoader/Header/MC/DragonChargePlayerDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DragonChargePlayerDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonChargePlayerGoal.hpp b/LiteLoader/include/llapi/mc/DragonChargePlayerGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonChargePlayerGoal.hpp rename to LiteLoader/include/llapi/mc/DragonChargePlayerGoal.hpp index bc7b90d..1700122 100644 --- a/LiteLoader/Header/MC/DragonChargePlayerGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonChargePlayerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonDeathGoal.hpp b/LiteLoader/include/llapi/mc/DragonDeathGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonDeathGoal.hpp rename to LiteLoader/include/llapi/mc/DragonDeathGoal.hpp index d8b5056..58dc2d9 100644 --- a/LiteLoader/Header/MC/DragonDeathGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonDeathGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonEggBlock.hpp b/LiteLoader/include/llapi/mc/DragonEggBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/DragonEggBlock.hpp rename to LiteLoader/include/llapi/mc/DragonEggBlock.hpp index f79ab5c..e790d00 100644 --- a/LiteLoader/Header/MC/DragonEggBlock.hpp +++ b/LiteLoader/include/llapi/mc/DragonEggBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonFireball.hpp b/LiteLoader/include/llapi/mc/DragonFireball.hpp similarity index 98% rename from LiteLoader/Header/MC/DragonFireball.hpp rename to LiteLoader/include/llapi/mc/DragonFireball.hpp index 2617024..b9f0754 100644 --- a/LiteLoader/Header/MC/DragonFireball.hpp +++ b/LiteLoader/include/llapi/mc/DragonFireball.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Fireball.hpp" diff --git a/LiteLoader/Header/MC/DragonFlamingDefinition.hpp b/LiteLoader/include/llapi/mc/DragonFlamingDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonFlamingDefinition.hpp rename to LiteLoader/include/llapi/mc/DragonFlamingDefinition.hpp index 60fe6b8..0bfb342 100644 --- a/LiteLoader/Header/MC/DragonFlamingDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DragonFlamingDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonFlamingGoal.hpp b/LiteLoader/include/llapi/mc/DragonFlamingGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonFlamingGoal.hpp rename to LiteLoader/include/llapi/mc/DragonFlamingGoal.hpp index 1dd42a1..fcd21d3 100644 --- a/LiteLoader/Header/MC/DragonFlamingGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonFlamingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonHoldingPatternGoal.hpp b/LiteLoader/include/llapi/mc/DragonHoldingPatternGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DragonHoldingPatternGoal.hpp rename to LiteLoader/include/llapi/mc/DragonHoldingPatternGoal.hpp index 93432fe..9739f79 100644 --- a/LiteLoader/Header/MC/DragonHoldingPatternGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonHoldingPatternGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonLandingGoal.hpp b/LiteLoader/include/llapi/mc/DragonLandingGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonLandingGoal.hpp rename to LiteLoader/include/llapi/mc/DragonLandingGoal.hpp index 97dc73e..2882a07 100644 --- a/LiteLoader/Header/MC/DragonLandingGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonLandingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonScanningGoal.hpp b/LiteLoader/include/llapi/mc/DragonScanningGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DragonScanningGoal.hpp rename to LiteLoader/include/llapi/mc/DragonScanningGoal.hpp index c1868ea..e6cbc85 100644 --- a/LiteLoader/Header/MC/DragonScanningGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonScanningGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonStrafePlayerDefinition.hpp b/LiteLoader/include/llapi/mc/DragonStrafePlayerDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonStrafePlayerDefinition.hpp rename to LiteLoader/include/llapi/mc/DragonStrafePlayerDefinition.hpp index f06ce06..b10b88f 100644 --- a/LiteLoader/Header/MC/DragonStrafePlayerDefinition.hpp +++ b/LiteLoader/include/llapi/mc/DragonStrafePlayerDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonStrafePlayerGoal.hpp b/LiteLoader/include/llapi/mc/DragonStrafePlayerGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DragonStrafePlayerGoal.hpp rename to LiteLoader/include/llapi/mc/DragonStrafePlayerGoal.hpp index 747750c..632bb5c 100644 --- a/LiteLoader/Header/MC/DragonStrafePlayerGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonStrafePlayerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DragonTakeoffGoal.hpp b/LiteLoader/include/llapi/mc/DragonTakeoffGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/DragonTakeoffGoal.hpp rename to LiteLoader/include/llapi/mc/DragonTakeoffGoal.hpp index 62188bd..42c10e1 100644 --- a/LiteLoader/Header/MC/DragonTakeoffGoal.hpp +++ b/LiteLoader/include/llapi/mc/DragonTakeoffGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DriedKelpBlock.hpp b/LiteLoader/include/llapi/mc/DriedKelpBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/DriedKelpBlock.hpp rename to LiteLoader/include/llapi/mc/DriedKelpBlock.hpp index ef65acf..ce1757c 100644 --- a/LiteLoader/Header/MC/DriedKelpBlock.hpp +++ b/LiteLoader/include/llapi/mc/DriedKelpBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DrinkPotionData.hpp b/LiteLoader/include/llapi/mc/DrinkPotionData.hpp similarity index 95% rename from LiteLoader/Header/MC/DrinkPotionData.hpp rename to LiteLoader/include/llapi/mc/DrinkPotionData.hpp index bc3b974..833950a 100644 --- a/LiteLoader/Header/MC/DrinkPotionData.hpp +++ b/LiteLoader/include/llapi/mc/DrinkPotionData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DrinkPotionGoal.hpp b/LiteLoader/include/llapi/mc/DrinkPotionGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/DrinkPotionGoal.hpp rename to LiteLoader/include/llapi/mc/DrinkPotionGoal.hpp index 3579305..2d406f0 100644 --- a/LiteLoader/Header/MC/DrinkPotionGoal.hpp +++ b/LiteLoader/include/llapi/mc/DrinkPotionGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DropItemForGoal.hpp b/LiteLoader/include/llapi/mc/DropItemForGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/DropItemForGoal.hpp rename to LiteLoader/include/llapi/mc/DropItemForGoal.hpp index 770a60c..f7c26f5 100644 --- a/LiteLoader/Header/MC/DropItemForGoal.hpp +++ b/LiteLoader/include/llapi/mc/DropItemForGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DropperBlock.hpp b/LiteLoader/include/llapi/mc/DropperBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/DropperBlock.hpp rename to LiteLoader/include/llapi/mc/DropperBlock.hpp index 5bea862..b72970e 100644 --- a/LiteLoader/Header/MC/DropperBlock.hpp +++ b/LiteLoader/include/llapi/mc/DropperBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "DispenserBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DropperBlockActor.hpp b/LiteLoader/include/llapi/mc/DropperBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/DropperBlockActor.hpp rename to LiteLoader/include/llapi/mc/DropperBlockActor.hpp index 928ba1f..3524c10 100644 --- a/LiteLoader/Header/MC/DropperBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/DropperBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DropperContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/DropperContainerManagerModel.hpp similarity index 96% rename from LiteLoader/Header/MC/DropperContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/DropperContainerManagerModel.hpp index cdc621c..35b493e 100644 --- a/LiteLoader/Header/MC/DropperContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/DropperContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LevelContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DwellerComponent.hpp b/LiteLoader/include/llapi/mc/DwellerComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/DwellerComponent.hpp rename to LiteLoader/include/llapi/mc/DwellerComponent.hpp index 9adb693..817ca31 100644 --- a/LiteLoader/Header/MC/DwellerComponent.hpp +++ b/LiteLoader/include/llapi/mc/DwellerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DwellerDescription.hpp b/LiteLoader/include/llapi/mc/DwellerDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/DwellerDescription.hpp rename to LiteLoader/include/llapi/mc/DwellerDescription.hpp index ac741bc..2718b77 100644 --- a/LiteLoader/Header/MC/DwellerDescription.hpp +++ b/LiteLoader/include/llapi/mc/DwellerDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DwellerSystem.hpp b/LiteLoader/include/llapi/mc/DwellerSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/DwellerSystem.hpp rename to LiteLoader/include/llapi/mc/DwellerSystem.hpp index 8a253ac..3a19672 100644 --- a/LiteLoader/Header/MC/DwellerSystem.hpp +++ b/LiteLoader/include/llapi/mc/DwellerSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DyeColorUtil.hpp b/LiteLoader/include/llapi/mc/DyeColorUtil.hpp similarity index 91% rename from LiteLoader/Header/MC/DyeColorUtil.hpp rename to LiteLoader/include/llapi/mc/DyeColorUtil.hpp index 4a976ab..4dfa61e 100644 --- a/LiteLoader/Header/MC/DyeColorUtil.hpp +++ b/LiteLoader/include/llapi/mc/DyeColorUtil.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DyePowderItem.hpp b/LiteLoader/include/llapi/mc/DyePowderItem.hpp similarity index 98% rename from LiteLoader/Header/MC/DyePowderItem.hpp rename to LiteLoader/include/llapi/mc/DyePowderItem.hpp index bf03e39..b149530 100644 --- a/LiteLoader/Header/MC/DyePowderItem.hpp +++ b/LiteLoader/include/llapi/mc/DyePowderItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DyeableDescription.hpp b/LiteLoader/include/llapi/mc/DyeableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/DyeableDescription.hpp rename to LiteLoader/include/llapi/mc/DyeableDescription.hpp index 87c03a7..e30b6d8 100644 --- a/LiteLoader/Header/MC/DyeableDescription.hpp +++ b/LiteLoader/include/llapi/mc/DyeableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DynamicJumpControl.hpp b/LiteLoader/include/llapi/mc/DynamicJumpControl.hpp similarity index 97% rename from LiteLoader/Header/MC/DynamicJumpControl.hpp rename to LiteLoader/include/llapi/mc/DynamicJumpControl.hpp index d97093c..7bd6d54 100644 --- a/LiteLoader/Header/MC/DynamicJumpControl.hpp +++ b/LiteLoader/include/llapi/mc/DynamicJumpControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/DynamicJumpControlDescription.hpp b/LiteLoader/include/llapi/mc/DynamicJumpControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/DynamicJumpControlDescription.hpp rename to LiteLoader/include/llapi/mc/DynamicJumpControlDescription.hpp index 9eb6691..09bf87d 100644 --- a/LiteLoader/Header/MC/DynamicJumpControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/DynamicJumpControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EDUWorldsScreenCapabilities.hpp b/LiteLoader/include/llapi/mc/EDUWorldsScreenCapabilities.hpp similarity index 96% rename from LiteLoader/Header/MC/EDUWorldsScreenCapabilities.hpp rename to LiteLoader/include/llapi/mc/EDUWorldsScreenCapabilities.hpp index fd37024..31bfec4 100644 --- a/LiteLoader/Header/MC/EDUWorldsScreenCapabilities.hpp +++ b/LiteLoader/include/llapi/mc/EDUWorldsScreenCapabilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Easing.hpp b/LiteLoader/include/llapi/mc/Easing.hpp similarity index 95% rename from LiteLoader/Header/MC/Easing.hpp rename to LiteLoader/include/llapi/mc/Easing.hpp index 6032ebb..60c97ff 100644 --- a/LiteLoader/Header/MC/Easing.hpp +++ b/LiteLoader/include/llapi/mc/Easing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EatBlockDefinition.hpp b/LiteLoader/include/llapi/mc/EatBlockDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/EatBlockDefinition.hpp rename to LiteLoader/include/llapi/mc/EatBlockDefinition.hpp index 8511ef0..1a96a87 100644 --- a/LiteLoader/Header/MC/EatBlockDefinition.hpp +++ b/LiteLoader/include/llapi/mc/EatBlockDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EatBlockGoal.hpp b/LiteLoader/include/llapi/mc/EatBlockGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/EatBlockGoal.hpp rename to LiteLoader/include/llapi/mc/EatBlockGoal.hpp index d1d9bf8..1455887 100644 --- a/LiteLoader/Header/MC/EatBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/EatBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EatCarriedItemGoal.hpp b/LiteLoader/include/llapi/mc/EatCarriedItemGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/EatCarriedItemGoal.hpp rename to LiteLoader/include/llapi/mc/EatCarriedItemGoal.hpp index c025a4f..64e1551 100644 --- a/LiteLoader/Header/MC/EatCarriedItemGoal.hpp +++ b/LiteLoader/include/llapi/mc/EatCarriedItemGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EconomyTradeableComponent.hpp b/LiteLoader/include/llapi/mc/EconomyTradeableComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/EconomyTradeableComponent.hpp rename to LiteLoader/include/llapi/mc/EconomyTradeableComponent.hpp index 6d8f732..7d4ae8b 100644 --- a/LiteLoader/Header/MC/EconomyTradeableComponent.hpp +++ b/LiteLoader/include/llapi/mc/EconomyTradeableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EconomyTradeableDescription.hpp b/LiteLoader/include/llapi/mc/EconomyTradeableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/EconomyTradeableDescription.hpp rename to LiteLoader/include/llapi/mc/EconomyTradeableDescription.hpp index 6059c4d..7e86f41 100644 --- a/LiteLoader/Header/MC/EconomyTradeableDescription.hpp +++ b/LiteLoader/include/llapi/mc/EconomyTradeableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EduAppConfigs.hpp b/LiteLoader/include/llapi/mc/EduAppConfigs.hpp similarity index 95% rename from LiteLoader/Header/MC/EduAppConfigs.hpp rename to LiteLoader/include/llapi/mc/EduAppConfigs.hpp index fe8b0e0..18f696f 100644 --- a/LiteLoader/Header/MC/EduAppConfigs.hpp +++ b/LiteLoader/include/llapi/mc/EduAppConfigs.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EducationLevelSettings.hpp b/LiteLoader/include/llapi/mc/EducationLevelSettings.hpp similarity index 95% rename from LiteLoader/Header/MC/EducationLevelSettings.hpp rename to LiteLoader/include/llapi/mc/EducationLevelSettings.hpp index d649411..126a33b 100644 --- a/LiteLoader/Header/MC/EducationLevelSettings.hpp +++ b/LiteLoader/include/llapi/mc/EducationLevelSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EducationLocalLevelSettings.hpp b/LiteLoader/include/llapi/mc/EducationLocalLevelSettings.hpp similarity index 95% rename from LiteLoader/Header/MC/EducationLocalLevelSettings.hpp rename to LiteLoader/include/llapi/mc/EducationLocalLevelSettings.hpp index 1a81ad8..df69c08 100644 --- a/LiteLoader/Header/MC/EducationLocalLevelSettings.hpp +++ b/LiteLoader/include/llapi/mc/EducationLocalLevelSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EducationMetadata.hpp b/LiteLoader/include/llapi/mc/EducationMetadata.hpp similarity index 97% rename from LiteLoader/Header/MC/EducationMetadata.hpp rename to LiteLoader/include/llapi/mc/EducationMetadata.hpp index e3403c4..a1a3e08 100644 --- a/LiteLoader/Header/MC/EducationMetadata.hpp +++ b/LiteLoader/include/llapi/mc/EducationMetadata.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EducationMetadataError.hpp b/LiteLoader/include/llapi/mc/EducationMetadataError.hpp similarity index 97% rename from LiteLoader/Header/MC/EducationMetadataError.hpp rename to LiteLoader/include/llapi/mc/EducationMetadataError.hpp index c915d3a..d8a308a 100644 --- a/LiteLoader/Header/MC/EducationMetadataError.hpp +++ b/LiteLoader/include/llapi/mc/EducationMetadataError.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PackError.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EducationMetadataUtils.hpp b/LiteLoader/include/llapi/mc/EducationMetadataUtils.hpp similarity index 94% rename from LiteLoader/Header/MC/EducationMetadataUtils.hpp rename to LiteLoader/include/llapi/mc/EducationMetadataUtils.hpp index 4c223d9..4db7e1d 100644 --- a/LiteLoader/Header/MC/EducationMetadataUtils.hpp +++ b/LiteLoader/include/llapi/mc/EducationMetadataUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EducationOptions.hpp b/LiteLoader/include/llapi/mc/EducationOptions.hpp similarity index 97% rename from LiteLoader/Header/MC/EducationOptions.hpp rename to LiteLoader/include/llapi/mc/EducationOptions.hpp index d7a604a..95d27d2 100644 --- a/LiteLoader/Header/MC/EducationOptions.hpp +++ b/LiteLoader/include/llapi/mc/EducationOptions.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EducationSettingsPacket.hpp b/LiteLoader/include/llapi/mc/EducationSettingsPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/EducationSettingsPacket.hpp rename to LiteLoader/include/llapi/mc/EducationSettingsPacket.hpp index 775d59b..e06130d 100644 --- a/LiteLoader/Header/MC/EducationSettingsPacket.hpp +++ b/LiteLoader/include/llapi/mc/EducationSettingsPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EffectCommand.hpp b/LiteLoader/include/llapi/mc/EffectCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/EffectCommand.hpp rename to LiteLoader/include/llapi/mc/EffectCommand.hpp index 64ca386..e2bf7a7 100644 --- a/LiteLoader/Header/MC/EffectCommand.hpp +++ b/LiteLoader/include/llapi/mc/EffectCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EggItem.hpp b/LiteLoader/include/llapi/mc/EggItem.hpp similarity index 98% rename from LiteLoader/Header/MC/EggItem.hpp rename to LiteLoader/include/llapi/mc/EggItem.hpp index 04837b2..9c764fe 100644 --- a/LiteLoader/Header/MC/EggItem.hpp +++ b/LiteLoader/include/llapi/mc/EggItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ElementBlock.hpp b/LiteLoader/include/llapi/mc/ElementBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ElementBlock.hpp rename to LiteLoader/include/llapi/mc/ElementBlock.hpp index 90e4b67..560701e 100644 --- a/LiteLoader/Header/MC/ElementBlock.hpp +++ b/LiteLoader/include/llapi/mc/ElementBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ElementBlockItem.hpp b/LiteLoader/include/llapi/mc/ElementBlockItem.hpp similarity index 97% rename from LiteLoader/Header/MC/ElementBlockItem.hpp rename to LiteLoader/include/llapi/mc/ElementBlockItem.hpp index 530a076..5364391 100644 --- a/LiteLoader/Header/MC/ElementBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/ElementBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "AuxDataBlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ElementConstructorContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/ElementConstructorContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/ElementConstructorContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/ElementConstructorContainerManagerModel.hpp index dc44c04..67acb15 100644 --- a/LiteLoader/Header/MC/ElementConstructorContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/ElementConstructorContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EmoteListPacket.hpp b/LiteLoader/include/llapi/mc/EmoteListPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/EmoteListPacket.hpp rename to LiteLoader/include/llapi/mc/EmoteListPacket.hpp index 11ecaf0..6f1e7b5 100644 --- a/LiteLoader/Header/MC/EmoteListPacket.hpp +++ b/LiteLoader/include/llapi/mc/EmoteListPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EmotePacket.hpp b/LiteLoader/include/llapi/mc/EmotePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/EmotePacket.hpp rename to LiteLoader/include/llapi/mc/EmotePacket.hpp index 94c0da0..344911a 100644 --- a/LiteLoader/Header/MC/EmotePacket.hpp +++ b/LiteLoader/include/llapi/mc/EmotePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EmptyLootItem.hpp b/LiteLoader/include/llapi/mc/EmptyLootItem.hpp similarity index 95% rename from LiteLoader/Header/MC/EmptyLootItem.hpp rename to LiteLoader/include/llapi/mc/EmptyLootItem.hpp index b3641d7..7d35d1d 100644 --- a/LiteLoader/Header/MC/EmptyLootItem.hpp +++ b/LiteLoader/include/llapi/mc/EmptyLootItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EmptyMapItem.hpp b/LiteLoader/include/llapi/mc/EmptyMapItem.hpp similarity index 98% rename from LiteLoader/Header/MC/EmptyMapItem.hpp rename to LiteLoader/include/llapi/mc/EmptyMapItem.hpp index dbafa8b..3e007a6 100644 --- a/LiteLoader/Header/MC/EmptyMapItem.hpp +++ b/LiteLoader/include/llapi/mc/EmptyMapItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnableEncryptionCommand.hpp b/LiteLoader/include/llapi/mc/EnableEncryptionCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/EnableEncryptionCommand.hpp rename to LiteLoader/include/llapi/mc/EnableEncryptionCommand.hpp index f0e3f3e..0174506 100644 --- a/LiteLoader/Header/MC/EnableEncryptionCommand.hpp +++ b/LiteLoader/include/llapi/mc/EnableEncryptionCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Enchant.hpp b/LiteLoader/include/llapi/mc/Enchant.hpp similarity index 98% rename from LiteLoader/Header/MC/Enchant.hpp rename to LiteLoader/include/llapi/mc/Enchant.hpp index a64d058..5e32735 100644 --- a/LiteLoader/Header/MC/Enchant.hpp +++ b/LiteLoader/include/llapi/mc/Enchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantBookForTradingFunction.hpp b/LiteLoader/include/llapi/mc/EnchantBookForTradingFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/EnchantBookForTradingFunction.hpp rename to LiteLoader/include/llapi/mc/EnchantBookForTradingFunction.hpp index 1c6a3a1..2044e55 100644 --- a/LiteLoader/Header/MC/EnchantBookForTradingFunction.hpp +++ b/LiteLoader/include/llapi/mc/EnchantBookForTradingFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantCommand.hpp b/LiteLoader/include/llapi/mc/EnchantCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/EnchantCommand.hpp rename to LiteLoader/include/llapi/mc/EnchantCommand.hpp index 3aceb8b..806d5f9 100644 --- a/LiteLoader/Header/MC/EnchantCommand.hpp +++ b/LiteLoader/include/llapi/mc/EnchantCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantRandomEquipmentFunction.hpp b/LiteLoader/include/llapi/mc/EnchantRandomEquipmentFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/EnchantRandomEquipmentFunction.hpp rename to LiteLoader/include/llapi/mc/EnchantRandomEquipmentFunction.hpp index 82bb26c..2b74c39 100644 --- a/LiteLoader/Header/MC/EnchantRandomEquipmentFunction.hpp +++ b/LiteLoader/include/llapi/mc/EnchantRandomEquipmentFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantRandomlyFunction.hpp b/LiteLoader/include/llapi/mc/EnchantRandomlyFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/EnchantRandomlyFunction.hpp rename to LiteLoader/include/llapi/mc/EnchantRandomlyFunction.hpp index dacc6ab..2b638d6 100644 --- a/LiteLoader/Header/MC/EnchantRandomlyFunction.hpp +++ b/LiteLoader/include/llapi/mc/EnchantRandomlyFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantUtils.hpp b/LiteLoader/include/llapi/mc/EnchantUtils.hpp similarity index 99% rename from LiteLoader/Header/MC/EnchantUtils.hpp rename to LiteLoader/include/llapi/mc/EnchantUtils.hpp index 752a5b5..98cd988 100644 --- a/LiteLoader/Header/MC/EnchantUtils.hpp +++ b/LiteLoader/include/llapi/mc/EnchantUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantWithLevelsFunction.hpp b/LiteLoader/include/llapi/mc/EnchantWithLevelsFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/EnchantWithLevelsFunction.hpp rename to LiteLoader/include/llapi/mc/EnchantWithLevelsFunction.hpp index 0b4bf4e..19b128f 100644 --- a/LiteLoader/Header/MC/EnchantWithLevelsFunction.hpp +++ b/LiteLoader/include/llapi/mc/EnchantWithLevelsFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantedBookItem.hpp b/LiteLoader/include/llapi/mc/EnchantedBookItem.hpp similarity index 98% rename from LiteLoader/Header/MC/EnchantedBookItem.hpp rename to LiteLoader/include/llapi/mc/EnchantedBookItem.hpp index b04792f..b6d194c 100644 --- a/LiteLoader/Header/MC/EnchantedBookItem.hpp +++ b/LiteLoader/include/llapi/mc/EnchantedBookItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantingContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/EnchantingContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/EnchantingContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/EnchantingContainerManagerModel.hpp index e6ffdde..adad685 100644 --- a/LiteLoader/Header/MC/EnchantingContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/EnchantingContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantingTableBlock.hpp b/LiteLoader/include/llapi/mc/EnchantingTableBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/EnchantingTableBlock.hpp rename to LiteLoader/include/llapi/mc/EnchantingTableBlock.hpp index 1d7a4b7..297d893 100644 --- a/LiteLoader/Header/MC/EnchantingTableBlock.hpp +++ b/LiteLoader/include/llapi/mc/EnchantingTableBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantingTableBlockActor.hpp b/LiteLoader/include/llapi/mc/EnchantingTableBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/EnchantingTableBlockActor.hpp rename to LiteLoader/include/llapi/mc/EnchantingTableBlockActor.hpp index f32961b..fdb48e6 100644 --- a/LiteLoader/Header/MC/EnchantingTableBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/EnchantingTableBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnchantmentInstance.hpp b/LiteLoader/include/llapi/mc/EnchantmentInstance.hpp similarity index 95% rename from LiteLoader/Header/MC/EnchantmentInstance.hpp rename to LiteLoader/include/llapi/mc/EnchantmentInstance.hpp index 67091ce..dd2aa54 100644 --- a/LiteLoader/Header/MC/EnchantmentInstance.hpp +++ b/LiteLoader/include/llapi/mc/EnchantmentInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EncryptedFileAccessStrategy.hpp b/LiteLoader/include/llapi/mc/EncryptedFileAccessStrategy.hpp similarity index 98% rename from LiteLoader/Header/MC/EncryptedFileAccessStrategy.hpp rename to LiteLoader/include/llapi/mc/EncryptedFileAccessStrategy.hpp index 7c3e779..42cc394 100644 --- a/LiteLoader/Header/MC/EncryptedFileAccessStrategy.hpp +++ b/LiteLoader/include/llapi/mc/EncryptedFileAccessStrategy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "DirectoryPackAccessStrategy.hpp" diff --git a/LiteLoader/Header/MC/EncryptedNetworkPeer.hpp b/LiteLoader/include/llapi/mc/EncryptedNetworkPeer.hpp similarity index 97% rename from LiteLoader/Header/MC/EncryptedNetworkPeer.hpp rename to LiteLoader/include/llapi/mc/EncryptedNetworkPeer.hpp index 732dfa2..7b900ab 100644 --- a/LiteLoader/Header/MC/EncryptedNetworkPeer.hpp +++ b/LiteLoader/include/llapi/mc/EncryptedNetworkPeer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetworkPeer.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EncryptedProxyEnv.hpp b/LiteLoader/include/llapi/mc/EncryptedProxyEnv.hpp similarity index 97% rename from LiteLoader/Header/MC/EncryptedProxyEnv.hpp rename to LiteLoader/include/llapi/mc/EncryptedProxyEnv.hpp index 02962b3..f20c589 100644 --- a/LiteLoader/Header/MC/EncryptedProxyEnv.hpp +++ b/LiteLoader/include/llapi/mc/EncryptedProxyEnv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TransactionalWorldBlockTarget.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EncryptedZipTransforms.hpp b/LiteLoader/include/llapi/mc/EncryptedZipTransforms.hpp similarity index 96% rename from LiteLoader/Header/MC/EncryptedZipTransforms.hpp rename to LiteLoader/include/llapi/mc/EncryptedZipTransforms.hpp index 4ffbca1..07846bf 100644 --- a/LiteLoader/Header/MC/EncryptedZipTransforms.hpp +++ b/LiteLoader/include/llapi/mc/EncryptedZipTransforms.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndCityFeature.hpp b/LiteLoader/include/llapi/mc/EndCityFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/EndCityFeature.hpp rename to LiteLoader/include/llapi/mc/EndCityFeature.hpp index b606bef..f44ce86 100644 --- a/LiteLoader/Header/MC/EndCityFeature.hpp +++ b/LiteLoader/include/llapi/mc/EndCityFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndCityPieces.hpp b/LiteLoader/include/llapi/mc/EndCityPieces.hpp similarity index 98% rename from LiteLoader/Header/MC/EndCityPieces.hpp rename to LiteLoader/include/llapi/mc/EndCityPieces.hpp index be6f064..238c9d5 100644 --- a/LiteLoader/Header/MC/EndCityPieces.hpp +++ b/LiteLoader/include/llapi/mc/EndCityPieces.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndCityStart.hpp b/LiteLoader/include/llapi/mc/EndCityStart.hpp similarity index 96% rename from LiteLoader/Header/MC/EndCityStart.hpp rename to LiteLoader/include/llapi/mc/EndCityStart.hpp index 02c3a9d..a5d21e1 100644 --- a/LiteLoader/Header/MC/EndCityStart.hpp +++ b/LiteLoader/include/llapi/mc/EndCityStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndCrystalItem.hpp b/LiteLoader/include/llapi/mc/EndCrystalItem.hpp similarity index 98% rename from LiteLoader/Header/MC/EndCrystalItem.hpp rename to LiteLoader/include/llapi/mc/EndCrystalItem.hpp index e985d1a..07b0d5b 100644 --- a/LiteLoader/Header/MC/EndCrystalItem.hpp +++ b/LiteLoader/include/llapi/mc/EndCrystalItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndDragonFight.hpp b/LiteLoader/include/llapi/mc/EndDragonFight.hpp similarity index 98% rename from LiteLoader/Header/MC/EndDragonFight.hpp rename to LiteLoader/include/llapi/mc/EndDragonFight.hpp index 41b9832..b340dd3 100644 --- a/LiteLoader/Header/MC/EndDragonFight.hpp +++ b/LiteLoader/include/llapi/mc/EndDragonFight.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndGatewayBlock.hpp b/LiteLoader/include/llapi/mc/EndGatewayBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/EndGatewayBlock.hpp rename to LiteLoader/include/llapi/mc/EndGatewayBlock.hpp index 3fbe410..dec1aa4 100644 --- a/LiteLoader/Header/MC/EndGatewayBlock.hpp +++ b/LiteLoader/include/llapi/mc/EndGatewayBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndGatewayBlockActor.hpp b/LiteLoader/include/llapi/mc/EndGatewayBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/EndGatewayBlockActor.hpp rename to LiteLoader/include/llapi/mc/EndGatewayBlockActor.hpp index d9fd6a5..1efdd1b 100644 --- a/LiteLoader/Header/MC/EndGatewayBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/EndGatewayBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndGatewayFeature.hpp b/LiteLoader/include/llapi/mc/EndGatewayFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/EndGatewayFeature.hpp rename to LiteLoader/include/llapi/mc/EndGatewayFeature.hpp index 2235229..4a8aa87 100644 --- a/LiteLoader/Header/MC/EndGatewayFeature.hpp +++ b/LiteLoader/include/llapi/mc/EndGatewayFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndIslandFeature.hpp b/LiteLoader/include/llapi/mc/EndIslandFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/EndIslandFeature.hpp rename to LiteLoader/include/llapi/mc/EndIslandFeature.hpp index b67e8f8..c85dc24 100644 --- a/LiteLoader/Header/MC/EndIslandFeature.hpp +++ b/LiteLoader/include/llapi/mc/EndIslandFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndPodiumFeature.hpp b/LiteLoader/include/llapi/mc/EndPodiumFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/EndPodiumFeature.hpp rename to LiteLoader/include/llapi/mc/EndPodiumFeature.hpp index 5db0fb3..8b5100f 100644 --- a/LiteLoader/Header/MC/EndPodiumFeature.hpp +++ b/LiteLoader/include/llapi/mc/EndPodiumFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndPortalBlock.hpp b/LiteLoader/include/llapi/mc/EndPortalBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/EndPortalBlock.hpp rename to LiteLoader/include/llapi/mc/EndPortalBlock.hpp index 6fbd8e9..11f19b9 100644 --- a/LiteLoader/Header/MC/EndPortalBlock.hpp +++ b/LiteLoader/include/llapi/mc/EndPortalBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndPortalBlockActor.hpp b/LiteLoader/include/llapi/mc/EndPortalBlockActor.hpp similarity index 96% rename from LiteLoader/Header/MC/EndPortalBlockActor.hpp rename to LiteLoader/include/llapi/mc/EndPortalBlockActor.hpp index fae32d2..dfffbc4 100644 --- a/LiteLoader/Header/MC/EndPortalBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/EndPortalBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndPortalFrameBlock.hpp b/LiteLoader/include/llapi/mc/EndPortalFrameBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/EndPortalFrameBlock.hpp rename to LiteLoader/include/llapi/mc/EndPortalFrameBlock.hpp index d37acbe..5f9f250 100644 --- a/LiteLoader/Header/MC/EndPortalFrameBlock.hpp +++ b/LiteLoader/include/llapi/mc/EndPortalFrameBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndPortalShape.hpp b/LiteLoader/include/llapi/mc/EndPortalShape.hpp similarity index 96% rename from LiteLoader/Header/MC/EndPortalShape.hpp rename to LiteLoader/include/llapi/mc/EndPortalShape.hpp index 034d774..5e45ff8 100644 --- a/LiteLoader/Header/MC/EndPortalShape.hpp +++ b/LiteLoader/include/llapi/mc/EndPortalShape.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndRodBlock.hpp b/LiteLoader/include/llapi/mc/EndRodBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/EndRodBlock.hpp rename to LiteLoader/include/llapi/mc/EndRodBlock.hpp index 8cd9831..9363a87 100644 --- a/LiteLoader/Header/MC/EndRodBlock.hpp +++ b/LiteLoader/include/llapi/mc/EndRodBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndTag.hpp b/LiteLoader/include/llapi/mc/EndTag.hpp similarity index 97% rename from LiteLoader/Header/MC/EndTag.hpp rename to LiteLoader/include/llapi/mc/EndTag.hpp index 75fd252..ad33548 100644 --- a/LiteLoader/Header/MC/EndTag.hpp +++ b/LiteLoader/include/llapi/mc/EndTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnderChestBlock.hpp b/LiteLoader/include/llapi/mc/EnderChestBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/EnderChestBlock.hpp rename to LiteLoader/include/llapi/mc/EnderChestBlock.hpp index ef0e03b..c9b16a0 100644 --- a/LiteLoader/Header/MC/EnderChestBlock.hpp +++ b/LiteLoader/include/llapi/mc/EnderChestBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChestBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnderChestBlockActor.hpp b/LiteLoader/include/llapi/mc/EnderChestBlockActor.hpp similarity index 96% rename from LiteLoader/Header/MC/EnderChestBlockActor.hpp rename to LiteLoader/include/llapi/mc/EnderChestBlockActor.hpp index 1beb05b..4c58daa 100644 --- a/LiteLoader/Header/MC/EnderChestBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/EnderChestBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnderChestContainer.hpp b/LiteLoader/include/llapi/mc/EnderChestContainer.hpp similarity index 96% rename from LiteLoader/Header/MC/EnderChestContainer.hpp rename to LiteLoader/include/llapi/mc/EnderChestContainer.hpp index ea8ee16..69c565c 100644 --- a/LiteLoader/Header/MC/EnderChestContainer.hpp +++ b/LiteLoader/include/llapi/mc/EnderChestContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FillingContainer.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnderCrystal.hpp b/LiteLoader/include/llapi/mc/EnderCrystal.hpp similarity index 98% rename from LiteLoader/Header/MC/EnderCrystal.hpp rename to LiteLoader/include/llapi/mc/EnderCrystal.hpp index 4004712..b25c1d8 100644 --- a/LiteLoader/Header/MC/EnderCrystal.hpp +++ b/LiteLoader/include/llapi/mc/EnderCrystal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnderDragon.hpp b/LiteLoader/include/llapi/mc/EnderDragon.hpp similarity index 99% rename from LiteLoader/Header/MC/EnderDragon.hpp rename to LiteLoader/include/llapi/mc/EnderDragon.hpp index 71db315..fada3bf 100644 --- a/LiteLoader/Header/MC/EnderDragon.hpp +++ b/LiteLoader/include/llapi/mc/EnderDragon.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/EnderEyeItem.hpp b/LiteLoader/include/llapi/mc/EnderEyeItem.hpp similarity index 97% rename from LiteLoader/Header/MC/EnderEyeItem.hpp rename to LiteLoader/include/llapi/mc/EnderEyeItem.hpp index a43b656..075edd3 100644 --- a/LiteLoader/Header/MC/EnderEyeItem.hpp +++ b/LiteLoader/include/llapi/mc/EnderEyeItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnderMan.hpp b/LiteLoader/include/llapi/mc/EnderMan.hpp similarity index 99% rename from LiteLoader/Header/MC/EnderMan.hpp rename to LiteLoader/include/llapi/mc/EnderMan.hpp index 31a77e3..00ea340 100644 --- a/LiteLoader/Header/MC/EnderMan.hpp +++ b/LiteLoader/include/llapi/mc/EnderMan.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/EndermanLeaveBlockGoal.hpp b/LiteLoader/include/llapi/mc/EndermanLeaveBlockGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/EndermanLeaveBlockGoal.hpp rename to LiteLoader/include/llapi/mc/EndermanLeaveBlockGoal.hpp index f2d849e..1b0e93e 100644 --- a/LiteLoader/Header/MC/EndermanLeaveBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/EndermanLeaveBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EndermanTakeBlockGoal.hpp b/LiteLoader/include/llapi/mc/EndermanTakeBlockGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/EndermanTakeBlockGoal.hpp rename to LiteLoader/include/llapi/mc/EndermanTakeBlockGoal.hpp index 8839f67..94a0163 100644 --- a/LiteLoader/Header/MC/EndermanTakeBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/EndermanTakeBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Endermite.hpp b/LiteLoader/include/llapi/mc/Endermite.hpp similarity index 98% rename from LiteLoader/Header/MC/Endermite.hpp rename to LiteLoader/include/llapi/mc/Endermite.hpp index 5e71e68..2788f6d 100644 --- a/LiteLoader/Header/MC/Endermite.hpp +++ b/LiteLoader/include/llapi/mc/Endermite.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/EnderpearlItem.hpp b/LiteLoader/include/llapi/mc/EnderpearlItem.hpp similarity index 98% rename from LiteLoader/Header/MC/EnderpearlItem.hpp rename to LiteLoader/include/llapi/mc/EnderpearlItem.hpp index 2c2e81a..80c1a5d 100644 --- a/LiteLoader/Header/MC/EnderpearlItem.hpp +++ b/LiteLoader/include/llapi/mc/EnderpearlItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntityComponentFactory.hpp b/LiteLoader/include/llapi/mc/EntityComponentFactory.hpp similarity index 96% rename from LiteLoader/Header/MC/EntityComponentFactory.hpp rename to LiteLoader/include/llapi/mc/EntityComponentFactory.hpp index ac67259..6416316 100644 --- a/LiteLoader/Header/MC/EntityComponentFactory.hpp +++ b/LiteLoader/include/llapi/mc/EntityComponentFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntityGoalFactory.hpp b/LiteLoader/include/llapi/mc/EntityGoalFactory.hpp similarity index 96% rename from LiteLoader/Header/MC/EntityGoalFactory.hpp rename to LiteLoader/include/llapi/mc/EntityGoalFactory.hpp index e064404..4e278bc 100644 --- a/LiteLoader/Header/MC/EntityGoalFactory.hpp +++ b/LiteLoader/include/llapi/mc/EntityGoalFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntityGoalUtility.hpp b/LiteLoader/include/llapi/mc/EntityGoalUtility.hpp similarity index 90% rename from LiteLoader/Header/MC/EntityGoalUtility.hpp rename to LiteLoader/include/llapi/mc/EntityGoalUtility.hpp index 6adfe27..eb20777 100644 --- a/LiteLoader/Header/MC/EntityGoalUtility.hpp +++ b/LiteLoader/include/llapi/mc/EntityGoalUtility.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntitySensorComponent.hpp b/LiteLoader/include/llapi/mc/EntitySensorComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/EntitySensorComponent.hpp rename to LiteLoader/include/llapi/mc/EntitySensorComponent.hpp index 744ba6a..4fd2fe1 100644 --- a/LiteLoader/Header/MC/EntitySensorComponent.hpp +++ b/LiteLoader/include/llapi/mc/EntitySensorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntitySensorDefinition.hpp b/LiteLoader/include/llapi/mc/EntitySensorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/EntitySensorDefinition.hpp rename to LiteLoader/include/llapi/mc/EntitySensorDefinition.hpp index 7c77562..ade1c52 100644 --- a/LiteLoader/Header/MC/EntitySensorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/EntitySensorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntitySensorSystem.hpp b/LiteLoader/include/llapi/mc/EntitySensorSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/EntitySensorSystem.hpp rename to LiteLoader/include/llapi/mc/EntitySensorSystem.hpp index 8bd64f4..826922f 100644 --- a/LiteLoader/Header/MC/EntitySensorSystem.hpp +++ b/LiteLoader/include/llapi/mc/EntitySensorSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntityServerPacket.hpp b/LiteLoader/include/llapi/mc/EntityServerPacket.hpp similarity index 95% rename from LiteLoader/Header/MC/EntityServerPacket.hpp rename to LiteLoader/include/llapi/mc/EntityServerPacket.hpp index a86aed9..424c8a4 100644 --- a/LiteLoader/Header/MC/EntityServerPacket.hpp +++ b/LiteLoader/include/llapi/mc/EntityServerPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntitySystems.hpp b/LiteLoader/include/llapi/mc/EntitySystems.hpp similarity index 95% rename from LiteLoader/Header/MC/EntitySystems.hpp rename to LiteLoader/include/llapi/mc/EntitySystems.hpp index 7bb0b77..65e8308 100644 --- a/LiteLoader/Header/MC/EntitySystems.hpp +++ b/LiteLoader/include/llapi/mc/EntitySystems.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EntityTypes.hpp b/LiteLoader/include/llapi/mc/EntityTypes.hpp similarity index 95% rename from LiteLoader/Header/MC/EntityTypes.hpp rename to LiteLoader/include/llapi/mc/EntityTypes.hpp index 228f64e..8cb5d36 100644 --- a/LiteLoader/Header/MC/EntityTypes.hpp +++ b/LiteLoader/include/llapi/mc/EntityTypes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnvironmentRequirement.hpp b/LiteLoader/include/llapi/mc/EnvironmentRequirement.hpp similarity index 95% rename from LiteLoader/Header/MC/EnvironmentRequirement.hpp rename to LiteLoader/include/llapi/mc/EnvironmentRequirement.hpp index 07d915a..5748db4 100644 --- a/LiteLoader/Header/MC/EnvironmentRequirement.hpp +++ b/LiteLoader/include/llapi/mc/EnvironmentRequirement.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnvironmentSensorDefinition.hpp b/LiteLoader/include/llapi/mc/EnvironmentSensorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/EnvironmentSensorDefinition.hpp rename to LiteLoader/include/llapi/mc/EnvironmentSensorDefinition.hpp index 49031d2..fa577be 100644 --- a/LiteLoader/Header/MC/EnvironmentSensorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/EnvironmentSensorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EnvironmentSensorSystem.hpp b/LiteLoader/include/llapi/mc/EnvironmentSensorSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/EnvironmentSensorSystem.hpp rename to LiteLoader/include/llapi/mc/EnvironmentSensorSystem.hpp index 994d848..8d27c25 100644 --- a/LiteLoader/Header/MC/EnvironmentSensorSystem.hpp +++ b/LiteLoader/include/llapi/mc/EnvironmentSensorSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EquipItemComponent.hpp b/LiteLoader/include/llapi/mc/EquipItemComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/EquipItemComponent.hpp rename to LiteLoader/include/llapi/mc/EquipItemComponent.hpp index 493e1f3..ab0c1d9 100644 --- a/LiteLoader/Header/MC/EquipItemComponent.hpp +++ b/LiteLoader/include/llapi/mc/EquipItemComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EquipItemGoal.hpp b/LiteLoader/include/llapi/mc/EquipItemGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/EquipItemGoal.hpp rename to LiteLoader/include/llapi/mc/EquipItemGoal.hpp index 758220d..330cbf6 100644 --- a/LiteLoader/Header/MC/EquipItemGoal.hpp +++ b/LiteLoader/include/llapi/mc/EquipItemGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EquipmentTableDescription.hpp b/LiteLoader/include/llapi/mc/EquipmentTableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/EquipmentTableDescription.hpp rename to LiteLoader/include/llapi/mc/EquipmentTableDescription.hpp index 94900a7..21ba403 100644 --- a/LiteLoader/Header/MC/EquipmentTableDescription.hpp +++ b/LiteLoader/include/llapi/mc/EquipmentTableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EquippableComponent.hpp b/LiteLoader/include/llapi/mc/EquippableComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/EquippableComponent.hpp rename to LiteLoader/include/llapi/mc/EquippableComponent.hpp index f1441a6..77f77dd 100644 --- a/LiteLoader/Header/MC/EquippableComponent.hpp +++ b/LiteLoader/include/llapi/mc/EquippableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EquippableDefinition.hpp b/LiteLoader/include/llapi/mc/EquippableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/EquippableDefinition.hpp rename to LiteLoader/include/llapi/mc/EquippableDefinition.hpp index 8a3c414..f914bfa 100644 --- a/LiteLoader/Header/MC/EquippableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/EquippableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/ErrorPathStack.hpp b/LiteLoader/include/llapi/mc/ErrorPathStack.hpp similarity index 95% rename from LiteLoader/Header/MC/ErrorPathStack.hpp rename to LiteLoader/include/llapi/mc/ErrorPathStack.hpp index e3c5dab..d9a5dd7 100644 --- a/LiteLoader/Header/MC/ErrorPathStack.hpp +++ b/LiteLoader/include/llapi/mc/ErrorPathStack.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EventInfo.hpp b/LiteLoader/include/llapi/mc/EventInfo.hpp similarity index 94% rename from LiteLoader/Header/MC/EventInfo.hpp rename to LiteLoader/include/llapi/mc/EventInfo.hpp index 6f3af0a..4b65c61 100644 --- a/LiteLoader/Header/MC/EventInfo.hpp +++ b/LiteLoader/include/llapi/mc/EventInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EventPacket.hpp b/LiteLoader/include/llapi/mc/EventPacket.hpp similarity index 98% rename from LiteLoader/Header/MC/EventPacket.hpp rename to LiteLoader/include/llapi/mc/EventPacket.hpp index efcb760..aa93e02 100644 --- a/LiteLoader/Header/MC/EventPacket.hpp +++ b/LiteLoader/include/llapi/mc/EventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MinecraftEventing.hpp" #include "Packet.hpp" diff --git a/LiteLoader/Header/MC/EvocationFang.hpp b/LiteLoader/include/llapi/mc/EvocationFang.hpp similarity index 98% rename from LiteLoader/Header/MC/EvocationFang.hpp rename to LiteLoader/include/llapi/mc/EvocationFang.hpp index 92b5bb8..46482ff 100644 --- a/LiteLoader/Header/MC/EvocationFang.hpp +++ b/LiteLoader/include/llapi/mc/EvocationFang.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EvocationIllager.hpp b/LiteLoader/include/llapi/mc/EvocationIllager.hpp similarity index 98% rename from LiteLoader/Header/MC/EvocationIllager.hpp rename to LiteLoader/include/llapi/mc/EvocationIllager.hpp index 7354ebb..7bb5341 100644 --- a/LiteLoader/Header/MC/EvocationIllager.hpp +++ b/LiteLoader/include/llapi/mc/EvocationIllager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "HumanoidMonster.hpp" diff --git a/LiteLoader/Header/MC/ExecuteCommand.hpp b/LiteLoader/include/llapi/mc/ExecuteCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ExecuteCommand.hpp rename to LiteLoader/include/llapi/mc/ExecuteCommand.hpp index 802fb4e..e9bbd12 100644 --- a/LiteLoader/Header/MC/ExecuteCommand.hpp +++ b/LiteLoader/include/llapi/mc/ExecuteCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExhaustionAttributeDelegate.hpp b/LiteLoader/include/llapi/mc/ExhaustionAttributeDelegate.hpp similarity index 96% rename from LiteLoader/Header/MC/ExhaustionAttributeDelegate.hpp rename to LiteLoader/include/llapi/mc/ExhaustionAttributeDelegate.hpp index 0a6023b..596d988 100644 --- a/LiteLoader/Header/MC/ExhaustionAttributeDelegate.hpp +++ b/LiteLoader/include/llapi/mc/ExhaustionAttributeDelegate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "AttributeInstanceDelegate.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExperienceOrb.hpp b/LiteLoader/include/llapi/mc/ExperienceOrb.hpp similarity index 98% rename from LiteLoader/Header/MC/ExperienceOrb.hpp rename to LiteLoader/include/llapi/mc/ExperienceOrb.hpp index b7bf30d..3e80ed3 100644 --- a/LiteLoader/Header/MC/ExperienceOrb.hpp +++ b/LiteLoader/include/llapi/mc/ExperienceOrb.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExperiencePotion.hpp b/LiteLoader/include/llapi/mc/ExperiencePotion.hpp similarity index 98% rename from LiteLoader/Header/MC/ExperiencePotion.hpp rename to LiteLoader/include/llapi/mc/ExperiencePotion.hpp index be09a1b..498a8e0 100644 --- a/LiteLoader/Header/MC/ExperiencePotion.hpp +++ b/LiteLoader/include/llapi/mc/ExperiencePotion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Throwable.hpp" diff --git a/LiteLoader/Header/MC/ExperiencePotionItem.hpp b/LiteLoader/include/llapi/mc/ExperiencePotionItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ExperiencePotionItem.hpp rename to LiteLoader/include/llapi/mc/ExperiencePotionItem.hpp index 09b9569..aa4f194 100644 --- a/LiteLoader/Header/MC/ExperiencePotionItem.hpp +++ b/LiteLoader/include/llapi/mc/ExperiencePotionItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExperienceRewardComponent.hpp b/LiteLoader/include/llapi/mc/ExperienceRewardComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/ExperienceRewardComponent.hpp rename to LiteLoader/include/llapi/mc/ExperienceRewardComponent.hpp index 9a74f19..f0e1426 100644 --- a/LiteLoader/Header/MC/ExperienceRewardComponent.hpp +++ b/LiteLoader/include/llapi/mc/ExperienceRewardComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExperienceRewardDefinition.hpp b/LiteLoader/include/llapi/mc/ExperienceRewardDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/ExperienceRewardDefinition.hpp rename to LiteLoader/include/llapi/mc/ExperienceRewardDefinition.hpp index 481f90a..db81de6 100644 --- a/LiteLoader/Header/MC/ExperienceRewardDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ExperienceRewardDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExplodeComponent.hpp b/LiteLoader/include/llapi/mc/ExplodeComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/ExplodeComponent.hpp rename to LiteLoader/include/llapi/mc/ExplodeComponent.hpp index 22cfdc3..67a886f 100644 --- a/LiteLoader/Header/MC/ExplodeComponent.hpp +++ b/LiteLoader/include/llapi/mc/ExplodeComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExplodeDefinition.hpp b/LiteLoader/include/llapi/mc/ExplodeDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/ExplodeDefinition.hpp rename to LiteLoader/include/llapi/mc/ExplodeDefinition.hpp index 9bee0c5..90adbd2 100644 --- a/LiteLoader/Header/MC/ExplodeDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ExplodeDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/ExplodeSystem.hpp b/LiteLoader/include/llapi/mc/ExplodeSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/ExplodeSystem.hpp rename to LiteLoader/include/llapi/mc/ExplodeSystem.hpp index 61412e7..495a573 100644 --- a/LiteLoader/Header/MC/ExplodeSystem.hpp +++ b/LiteLoader/include/llapi/mc/ExplodeSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExplorationMapFunction.hpp b/LiteLoader/include/llapi/mc/ExplorationMapFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/ExplorationMapFunction.hpp rename to LiteLoader/include/llapi/mc/ExplorationMapFunction.hpp index 62b5668..882647e 100644 --- a/LiteLoader/Header/MC/ExplorationMapFunction.hpp +++ b/LiteLoader/include/llapi/mc/ExplorationMapFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/ExploreOutskirtsGoal.hpp b/LiteLoader/include/llapi/mc/ExploreOutskirtsGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/ExploreOutskirtsGoal.hpp rename to LiteLoader/include/llapi/mc/ExploreOutskirtsGoal.hpp index b2cf0bf..2d50370 100644 --- a/LiteLoader/Header/MC/ExploreOutskirtsGoal.hpp +++ b/LiteLoader/include/llapi/mc/ExploreOutskirtsGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Explosion.hpp b/LiteLoader/include/llapi/mc/Explosion.hpp similarity index 95% rename from LiteLoader/Header/MC/Explosion.hpp rename to LiteLoader/include/llapi/mc/Explosion.hpp index 6dba24e..6082a27 100644 --- a/LiteLoader/Header/MC/Explosion.hpp +++ b/LiteLoader/include/llapi/mc/Explosion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExplosionDecayFunction.hpp b/LiteLoader/include/llapi/mc/ExplosionDecayFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/ExplosionDecayFunction.hpp rename to LiteLoader/include/llapi/mc/ExplosionDecayFunction.hpp index 05e7906..43acb14 100644 --- a/LiteLoader/Header/MC/ExplosionDecayFunction.hpp +++ b/LiteLoader/include/llapi/mc/ExplosionDecayFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExpressionNode.hpp b/LiteLoader/include/llapi/mc/ExpressionNode.hpp similarity index 99% rename from LiteLoader/Header/MC/ExpressionNode.hpp rename to LiteLoader/include/llapi/mc/ExpressionNode.hpp index 3715336..20ff1e5 100644 --- a/LiteLoader/Header/MC/ExpressionNode.hpp +++ b/LiteLoader/include/llapi/mc/ExpressionNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "Bedrock.hpp" diff --git a/LiteLoader/Header/MC/ExtendedCertificate.hpp b/LiteLoader/include/llapi/mc/ExtendedCertificate.hpp similarity index 96% rename from LiteLoader/Header/MC/ExtendedCertificate.hpp rename to LiteLoader/include/llapi/mc/ExtendedCertificate.hpp index f7ea59f..235f606 100644 --- a/LiteLoader/Header/MC/ExtendedCertificate.hpp +++ b/LiteLoader/include/llapi/mc/ExtendedCertificate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExtendedStreamReadResult.hpp b/LiteLoader/include/llapi/mc/ExtendedStreamReadResult.hpp similarity index 96% rename from LiteLoader/Header/MC/ExtendedStreamReadResult.hpp rename to LiteLoader/include/llapi/mc/ExtendedStreamReadResult.hpp index f13deb8..6f7a633 100644 --- a/LiteLoader/Header/MC/ExtendedStreamReadResult.hpp +++ b/LiteLoader/include/llapi/mc/ExtendedStreamReadResult.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExternalFileLevelStorage.hpp b/LiteLoader/include/llapi/mc/ExternalFileLevelStorage.hpp similarity index 98% rename from LiteLoader/Header/MC/ExternalFileLevelStorage.hpp rename to LiteLoader/include/llapi/mc/ExternalFileLevelStorage.hpp index 72aaca5..c23b387 100644 --- a/LiteLoader/Header/MC/ExternalFileLevelStorage.hpp +++ b/LiteLoader/include/llapi/mc/ExternalFileLevelStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ExternalFileLevelStorageSource.hpp b/LiteLoader/include/llapi/mc/ExternalFileLevelStorageSource.hpp similarity index 99% rename from LiteLoader/Header/MC/ExternalFileLevelStorageSource.hpp rename to LiteLoader/include/llapi/mc/ExternalFileLevelStorageSource.hpp index ca7c9c9..b9f385d 100644 --- a/LiteLoader/Header/MC/ExternalFileLevelStorageSource.hpp +++ b/LiteLoader/include/llapi/mc/ExternalFileLevelStorageSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/EyeOfEnder.hpp b/LiteLoader/include/llapi/mc/EyeOfEnder.hpp similarity index 98% rename from LiteLoader/Header/MC/EyeOfEnder.hpp rename to LiteLoader/include/llapi/mc/EyeOfEnder.hpp index ee66f0d..2fac3d8 100644 --- a/LiteLoader/Header/MC/EyeOfEnder.hpp +++ b/LiteLoader/include/llapi/mc/EyeOfEnder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FaceDirectionalActorBlock.hpp b/LiteLoader/include/llapi/mc/FaceDirectionalActorBlock.hpp similarity index 97% rename from LiteLoader/Header/MC/FaceDirectionalActorBlock.hpp rename to LiteLoader/include/llapi/mc/FaceDirectionalActorBlock.hpp index 022d70d..f0ec712 100644 --- a/LiteLoader/Header/MC/FaceDirectionalActorBlock.hpp +++ b/LiteLoader/include/llapi/mc/FaceDirectionalActorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FaceDirectionalBlock.hpp b/LiteLoader/include/llapi/mc/FaceDirectionalBlock.hpp similarity index 97% rename from LiteLoader/Header/MC/FaceDirectionalBlock.hpp rename to LiteLoader/include/llapi/mc/FaceDirectionalBlock.hpp index 1f47b18..366100d 100644 --- a/LiteLoader/Header/MC/FaceDirectionalBlock.hpp +++ b/LiteLoader/include/llapi/mc/FaceDirectionalBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Facing.hpp b/LiteLoader/include/llapi/mc/Facing.hpp similarity index 98% rename from LiteLoader/Header/MC/Facing.hpp rename to LiteLoader/include/llapi/mc/Facing.hpp index 723f12c..6087a4d 100644 --- a/LiteLoader/Header/MC/Facing.hpp +++ b/LiteLoader/include/llapi/mc/Facing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "math.h" diff --git a/LiteLoader/Header/MC/FallenTreeTrunk.hpp b/LiteLoader/include/llapi/mc/FallenTreeTrunk.hpp similarity index 96% rename from LiteLoader/Header/MC/FallenTreeTrunk.hpp rename to LiteLoader/include/llapi/mc/FallenTreeTrunk.hpp index 74ac9cc..8062cf8 100644 --- a/LiteLoader/Header/MC/FallenTreeTrunk.hpp +++ b/LiteLoader/include/llapi/mc/FallenTreeTrunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FallingBlock.hpp b/LiteLoader/include/llapi/mc/FallingBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/FallingBlock.hpp rename to LiteLoader/include/llapi/mc/FallingBlock.hpp index bc29187..bb9af14 100644 --- a/LiteLoader/Header/MC/FallingBlock.hpp +++ b/LiteLoader/include/llapi/mc/FallingBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FamilyTypeDescription.hpp b/LiteLoader/include/llapi/mc/FamilyTypeDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/FamilyTypeDescription.hpp rename to LiteLoader/include/llapi/mc/FamilyTypeDescription.hpp index a52c236..db10ebe 100644 --- a/LiteLoader/Header/MC/FamilyTypeDescription.hpp +++ b/LiteLoader/include/llapi/mc/FamilyTypeDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FancyTreeCanopy.hpp b/LiteLoader/include/llapi/mc/FancyTreeCanopy.hpp similarity index 97% rename from LiteLoader/Header/MC/FancyTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/FancyTreeCanopy.hpp index 2f6a05d..da38acf 100644 --- a/LiteLoader/Header/MC/FancyTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/FancyTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FancyTreeTrunk.hpp b/LiteLoader/include/llapi/mc/FancyTreeTrunk.hpp similarity index 97% rename from LiteLoader/Header/MC/FancyTreeTrunk.hpp rename to LiteLoader/include/llapi/mc/FancyTreeTrunk.hpp index b948b92..b66859c 100644 --- a/LiteLoader/Header/MC/FancyTreeTrunk.hpp +++ b/LiteLoader/include/llapi/mc/FancyTreeTrunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FarmBlock.hpp b/LiteLoader/include/llapi/mc/FarmBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/FarmBlock.hpp rename to LiteLoader/include/llapi/mc/FarmBlock.hpp index 6a3966d..d341dff 100644 --- a/LiteLoader/Header/MC/FarmBlock.hpp +++ b/LiteLoader/include/llapi/mc/FarmBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Feature.hpp b/LiteLoader/include/llapi/mc/Feature.hpp similarity index 97% rename from LiteLoader/Header/MC/Feature.hpp rename to LiteLoader/include/llapi/mc/Feature.hpp index 6c60f0e..8579a1d 100644 --- a/LiteLoader/Header/MC/Feature.hpp +++ b/LiteLoader/include/llapi/mc/Feature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FeatureHelper.hpp b/LiteLoader/include/llapi/mc/FeatureHelper.hpp similarity index 91% rename from LiteLoader/Header/MC/FeatureHelper.hpp rename to LiteLoader/include/llapi/mc/FeatureHelper.hpp index 72de2e8..0fa2b93 100644 --- a/LiteLoader/Header/MC/FeatureHelper.hpp +++ b/LiteLoader/include/llapi/mc/FeatureHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FeaturePoolElement.hpp b/LiteLoader/include/llapi/mc/FeaturePoolElement.hpp similarity index 97% rename from LiteLoader/Header/MC/FeaturePoolElement.hpp rename to LiteLoader/include/llapi/mc/FeaturePoolElement.hpp index 13e03dd..c0b2eef 100644 --- a/LiteLoader/Header/MC/FeaturePoolElement.hpp +++ b/LiteLoader/include/llapi/mc/FeaturePoolElement.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePoolElement.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FeatureRegistry.hpp b/LiteLoader/include/llapi/mc/FeatureRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/FeatureRegistry.hpp rename to LiteLoader/include/llapi/mc/FeatureRegistry.hpp index e92bdc8..4d85c31 100644 --- a/LiteLoader/Header/MC/FeatureRegistry.hpp +++ b/LiteLoader/include/llapi/mc/FeatureRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FeatureToggles.hpp b/LiteLoader/include/llapi/mc/FeatureToggles.hpp similarity index 97% rename from LiteLoader/Header/MC/FeatureToggles.hpp rename to LiteLoader/include/llapi/mc/FeatureToggles.hpp index fbef921..e56f4aa 100644 --- a/LiteLoader/Header/MC/FeatureToggles.hpp +++ b/LiteLoader/include/llapi/mc/FeatureToggles.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FeatureTypeFactory.hpp b/LiteLoader/include/llapi/mc/FeatureTypeFactory.hpp similarity index 96% rename from LiteLoader/Header/MC/FeatureTypeFactory.hpp rename to LiteLoader/include/llapi/mc/FeatureTypeFactory.hpp index ef3ca2f..6b0404e 100644 --- a/LiteLoader/Header/MC/FeatureTypeFactory.hpp +++ b/LiteLoader/include/llapi/mc/FeatureTypeFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FeedItem.hpp b/LiteLoader/include/llapi/mc/FeedItem.hpp similarity index 95% rename from LiteLoader/Header/MC/FeedItem.hpp rename to LiteLoader/include/llapi/mc/FeedItem.hpp index d744571..23786f6 100644 --- a/LiteLoader/Header/MC/FeedItem.hpp +++ b/LiteLoader/include/llapi/mc/FeedItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FenceBlock.hpp b/LiteLoader/include/llapi/mc/FenceBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/FenceBlock.hpp rename to LiteLoader/include/llapi/mc/FenceBlock.hpp index 3710a20..c0bd5e1 100644 --- a/LiteLoader/Header/MC/FenceBlock.hpp +++ b/LiteLoader/include/llapi/mc/FenceBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FenceGateBlock.hpp b/LiteLoader/include/llapi/mc/FenceGateBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/FenceGateBlock.hpp rename to LiteLoader/include/llapi/mc/FenceGateBlock.hpp index 8077b9d..57acb68 100644 --- a/LiteLoader/Header/MC/FenceGateBlock.hpp +++ b/LiteLoader/include/llapi/mc/FenceGateBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FertilizerItem.hpp b/LiteLoader/include/llapi/mc/FertilizerItem.hpp similarity index 96% rename from LiteLoader/Header/MC/FertilizerItem.hpp rename to LiteLoader/include/llapi/mc/FertilizerItem.hpp index 71b0487..1f1ad4c 100644 --- a/LiteLoader/Header/MC/FertilizerItem.hpp +++ b/LiteLoader/include/llapi/mc/FertilizerItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FileAccessTransforms.hpp b/LiteLoader/include/llapi/mc/FileAccessTransforms.hpp similarity index 96% rename from LiteLoader/Header/MC/FileAccessTransforms.hpp rename to LiteLoader/include/llapi/mc/FileAccessTransforms.hpp index 684d42d..7dcd6f6 100644 --- a/LiteLoader/Header/MC/FileAccessTransforms.hpp +++ b/LiteLoader/include/llapi/mc/FileAccessTransforms.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FileArchiver.hpp b/LiteLoader/include/llapi/mc/FileArchiver.hpp similarity index 97% rename from LiteLoader/Header/MC/FileArchiver.hpp rename to LiteLoader/include/llapi/mc/FileArchiver.hpp index 1e024d0..f346ab6 100644 --- a/LiteLoader/Header/MC/FileArchiver.hpp +++ b/LiteLoader/include/llapi/mc/FileArchiver.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FileChunkManager.hpp b/LiteLoader/include/llapi/mc/FileChunkManager.hpp similarity index 95% rename from LiteLoader/Header/MC/FileChunkManager.hpp rename to LiteLoader/include/llapi/mc/FileChunkManager.hpp index 35f72d2..8f13311 100644 --- a/LiteLoader/Header/MC/FileChunkManager.hpp +++ b/LiteLoader/include/llapi/mc/FileChunkManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FileInfo.hpp b/LiteLoader/include/llapi/mc/FileInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/FileInfo.hpp rename to LiteLoader/include/llapi/mc/FileInfo.hpp index 3c5a66f..0896aa7 100644 --- a/LiteLoader/Header/MC/FileInfo.hpp +++ b/LiteLoader/include/llapi/mc/FileInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FileSystemFileAccess.hpp b/LiteLoader/include/llapi/mc/FileSystemFileAccess.hpp similarity index 97% rename from LiteLoader/Header/MC/FileSystemFileAccess.hpp rename to LiteLoader/include/llapi/mc/FileSystemFileAccess.hpp index 5c8aadb..6427da7 100644 --- a/LiteLoader/Header/MC/FileSystemFileAccess.hpp +++ b/LiteLoader/include/llapi/mc/FileSystemFileAccess.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FileUploadManager.hpp b/LiteLoader/include/llapi/mc/FileUploadManager.hpp similarity index 97% rename from LiteLoader/Header/MC/FileUploadManager.hpp rename to LiteLoader/include/llapi/mc/FileUploadManager.hpp index 1b216db..1946f08 100644 --- a/LiteLoader/Header/MC/FileUploadManager.hpp +++ b/LiteLoader/include/llapi/mc/FileUploadManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FillCommand.hpp b/LiteLoader/include/llapi/mc/FillCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/FillCommand.hpp rename to LiteLoader/include/llapi/mc/FillCommand.hpp index b87e312..b2be6e5 100644 --- a/LiteLoader/Header/MC/FillCommand.hpp +++ b/LiteLoader/include/llapi/mc/FillCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FillContainerFunction.hpp b/LiteLoader/include/llapi/mc/FillContainerFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/FillContainerFunction.hpp rename to LiteLoader/include/llapi/mc/FillContainerFunction.hpp index e2e22d4..ffcdae3 100644 --- a/LiteLoader/Header/MC/FillContainerFunction.hpp +++ b/LiteLoader/include/llapi/mc/FillContainerFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/FillingContainer.hpp b/LiteLoader/include/llapi/mc/FillingContainer.hpp similarity index 98% rename from LiteLoader/Header/MC/FillingContainer.hpp rename to LiteLoader/include/llapi/mc/FillingContainer.hpp index 92a8303..996d7a3 100644 --- a/LiteLoader/Header/MC/FillingContainer.hpp +++ b/LiteLoader/include/llapi/mc/FillingContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Container.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterContext.hpp b/LiteLoader/include/llapi/mc/FilterContext.hpp similarity index 94% rename from LiteLoader/Header/MC/FilterContext.hpp rename to LiteLoader/include/llapi/mc/FilterContext.hpp index cd20baf..7e498de 100644 --- a/LiteLoader/Header/MC/FilterContext.hpp +++ b/LiteLoader/include/llapi/mc/FilterContext.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterGroup.hpp b/LiteLoader/include/llapi/mc/FilterGroup.hpp similarity index 98% rename from LiteLoader/Header/MC/FilterGroup.hpp rename to LiteLoader/include/llapi/mc/FilterGroup.hpp index 322bd36..3f4b294 100644 --- a/LiteLoader/Header/MC/FilterGroup.hpp +++ b/LiteLoader/include/llapi/mc/FilterGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "FilterTest.hpp" diff --git a/LiteLoader/Header/MC/FilterInput.hpp b/LiteLoader/include/llapi/mc/FilterInput.hpp similarity index 95% rename from LiteLoader/Header/MC/FilterInput.hpp rename to LiteLoader/include/llapi/mc/FilterInput.hpp index 3e0312f..d6162a2 100644 --- a/LiteLoader/Header/MC/FilterInput.hpp +++ b/LiteLoader/include/llapi/mc/FilterInput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterInputDefinition.hpp b/LiteLoader/include/llapi/mc/FilterInputDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterInputDefinition.hpp rename to LiteLoader/include/llapi/mc/FilterInputDefinition.hpp index e808b41..de512b2 100644 --- a/LiteLoader/Header/MC/FilterInputDefinition.hpp +++ b/LiteLoader/include/llapi/mc/FilterInputDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterInputs.hpp b/LiteLoader/include/llapi/mc/FilterInputs.hpp similarity index 95% rename from LiteLoader/Header/MC/FilterInputs.hpp rename to LiteLoader/include/llapi/mc/FilterInputs.hpp index 241948a..f57cf46 100644 --- a/LiteLoader/Header/MC/FilterInputs.hpp +++ b/LiteLoader/include/llapi/mc/FilterInputs.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterList.hpp b/LiteLoader/include/llapi/mc/FilterList.hpp similarity index 92% rename from LiteLoader/Header/MC/FilterList.hpp rename to LiteLoader/include/llapi/mc/FilterList.hpp index 662aa55..d648ce0 100644 --- a/LiteLoader/Header/MC/FilterList.hpp +++ b/LiteLoader/include/llapi/mc/FilterList.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterParamDefinition.hpp b/LiteLoader/include/llapi/mc/FilterParamDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterParamDefinition.hpp rename to LiteLoader/include/llapi/mc/FilterParamDefinition.hpp index f37ad1c..b7884bc 100644 --- a/LiteLoader/Header/MC/FilterParamDefinition.hpp +++ b/LiteLoader/include/llapi/mc/FilterParamDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterStringMap.hpp b/LiteLoader/include/llapi/mc/FilterStringMap.hpp similarity index 95% rename from LiteLoader/Header/MC/FilterStringMap.hpp rename to LiteLoader/include/llapi/mc/FilterStringMap.hpp index f268875..f176fbd 100644 --- a/LiteLoader/Header/MC/FilterStringMap.hpp +++ b/LiteLoader/include/llapi/mc/FilterStringMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterTest.hpp b/LiteLoader/include/llapi/mc/FilterTest.hpp similarity index 97% rename from LiteLoader/Header/MC/FilterTest.hpp rename to LiteLoader/include/llapi/mc/FilterTest.hpp index 3fab27d..e62e42a 100644 --- a/LiteLoader/Header/MC/FilterTest.hpp +++ b/LiteLoader/include/llapi/mc/FilterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FilterTestAltitude.hpp b/LiteLoader/include/llapi/mc/FilterTestAltitude.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestAltitude.hpp rename to LiteLoader/include/llapi/mc/FilterTestAltitude.hpp index bcb4754..ed521da 100644 --- a/LiteLoader/Header/MC/FilterTestAltitude.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestAltitude.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestBiome.hpp b/LiteLoader/include/llapi/mc/FilterTestBiome.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestBiome.hpp rename to LiteLoader/include/llapi/mc/FilterTestBiome.hpp index 7e5cfa7..7f49e7a 100644 --- a/LiteLoader/Header/MC/FilterTestBiome.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestBiome.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestBiomeHasTag.hpp b/LiteLoader/include/llapi/mc/FilterTestBiomeHasTag.hpp similarity index 97% rename from LiteLoader/Header/MC/FilterTestBiomeHasTag.hpp rename to LiteLoader/include/llapi/mc/FilterTestBiomeHasTag.hpp index 42ec3b4..b0147fd 100644 --- a/LiteLoader/Header/MC/FilterTestBiomeHasTag.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestBiomeHasTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestBiomeHumid.hpp b/LiteLoader/include/llapi/mc/FilterTestBiomeHumid.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestBiomeHumid.hpp rename to LiteLoader/include/llapi/mc/FilterTestBiomeHumid.hpp index 5f853d7..9bf12f6 100644 --- a/LiteLoader/Header/MC/FilterTestBiomeHumid.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestBiomeHumid.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestBiomeSnowCovered.hpp b/LiteLoader/include/llapi/mc/FilterTestBiomeSnowCovered.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestBiomeSnowCovered.hpp rename to LiteLoader/include/llapi/mc/FilterTestBiomeSnowCovered.hpp index ee17ef1..cbfffd7 100644 --- a/LiteLoader/Header/MC/FilterTestBiomeSnowCovered.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestBiomeSnowCovered.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestBrightness.hpp b/LiteLoader/include/llapi/mc/FilterTestBrightness.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestBrightness.hpp rename to LiteLoader/include/llapi/mc/FilterTestBrightness.hpp index cd7e0b1..509cc0b 100644 --- a/LiteLoader/Header/MC/FilterTestBrightness.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestBrightness.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestClock.hpp b/LiteLoader/include/llapi/mc/FilterTestClock.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestClock.hpp rename to LiteLoader/include/llapi/mc/FilterTestClock.hpp index 3ed756d..f8a7b43 100644 --- a/LiteLoader/Header/MC/FilterTestClock.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestClock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestDaytime.hpp b/LiteLoader/include/llapi/mc/FilterTestDaytime.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestDaytime.hpp rename to LiteLoader/include/llapi/mc/FilterTestDaytime.hpp index 9ce8cd2..c3cc25b 100644 --- a/LiteLoader/Header/MC/FilterTestDaytime.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestDaytime.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestDifficulty.hpp b/LiteLoader/include/llapi/mc/FilterTestDifficulty.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestDifficulty.hpp rename to LiteLoader/include/llapi/mc/FilterTestDifficulty.hpp index a565e64..fa4cc63 100644 --- a/LiteLoader/Header/MC/FilterTestDifficulty.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestDifficulty.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestDimensionWeather.hpp b/LiteLoader/include/llapi/mc/FilterTestDimensionWeather.hpp similarity index 97% rename from LiteLoader/Header/MC/FilterTestDimensionWeather.hpp rename to LiteLoader/include/llapi/mc/FilterTestDimensionWeather.hpp index bc0f02d..032c0be 100644 --- a/LiteLoader/Header/MC/FilterTestDimensionWeather.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestDimensionWeather.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestDistanceToNearestPlayer.hpp b/LiteLoader/include/llapi/mc/FilterTestDistanceToNearestPlayer.hpp similarity index 97% rename from LiteLoader/Header/MC/FilterTestDistanceToNearestPlayer.hpp rename to LiteLoader/include/llapi/mc/FilterTestDistanceToNearestPlayer.hpp index 95a3542..c8e282c 100644 --- a/LiteLoader/Header/MC/FilterTestDistanceToNearestPlayer.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestDistanceToNearestPlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestGameRule.hpp b/LiteLoader/include/llapi/mc/FilterTestGameRule.hpp similarity index 97% rename from LiteLoader/Header/MC/FilterTestGameRule.hpp rename to LiteLoader/include/llapi/mc/FilterTestGameRule.hpp index aae25d3..9a6db38 100644 --- a/LiteLoader/Header/MC/FilterTestGameRule.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestGameRule.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestHasTradeSupply.hpp b/LiteLoader/include/llapi/mc/FilterTestHasTradeSupply.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestHasTradeSupply.hpp rename to LiteLoader/include/llapi/mc/FilterTestHasTradeSupply.hpp index e486f61..2f8c39b 100644 --- a/LiteLoader/Header/MC/FilterTestHasTradeSupply.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestHasTradeSupply.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestHourlyClock.hpp b/LiteLoader/include/llapi/mc/FilterTestHourlyClock.hpp similarity index 97% rename from LiteLoader/Header/MC/FilterTestHourlyClock.hpp rename to LiteLoader/include/llapi/mc/FilterTestHourlyClock.hpp index 05b66c6..3b5002a 100644 --- a/LiteLoader/Header/MC/FilterTestHourlyClock.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestHourlyClock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestLightLevel.hpp b/LiteLoader/include/llapi/mc/FilterTestLightLevel.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestLightLevel.hpp rename to LiteLoader/include/llapi/mc/FilterTestLightLevel.hpp index 12f6e2d..40146cd 100644 --- a/LiteLoader/Header/MC/FilterTestLightLevel.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestLightLevel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestMoonIntensity.hpp b/LiteLoader/include/llapi/mc/FilterTestMoonIntensity.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestMoonIntensity.hpp rename to LiteLoader/include/llapi/mc/FilterTestMoonIntensity.hpp index 4a6d6a1..e25d2e3 100644 --- a/LiteLoader/Header/MC/FilterTestMoonIntensity.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestMoonIntensity.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestMoonPhase.hpp b/LiteLoader/include/llapi/mc/FilterTestMoonPhase.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestMoonPhase.hpp rename to LiteLoader/include/llapi/mc/FilterTestMoonPhase.hpp index 65a1dc8..def27c9 100644 --- a/LiteLoader/Header/MC/FilterTestMoonPhase.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestMoonPhase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestTemperatureType.hpp b/LiteLoader/include/llapi/mc/FilterTestTemperatureType.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestTemperatureType.hpp rename to LiteLoader/include/llapi/mc/FilterTestTemperatureType.hpp index aef0537..e19b0bc 100644 --- a/LiteLoader/Header/MC/FilterTestTemperatureType.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestTemperatureType.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FilterTestTemperatureValue.hpp b/LiteLoader/include/llapi/mc/FilterTestTemperatureValue.hpp similarity index 96% rename from LiteLoader/Header/MC/FilterTestTemperatureValue.hpp rename to LiteLoader/include/llapi/mc/FilterTestTemperatureValue.hpp index a33f63b..57e7b7c 100644 --- a/LiteLoader/Header/MC/FilterTestTemperatureValue.hpp +++ b/LiteLoader/include/llapi/mc/FilterTestTemperatureValue.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FilterTest.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FindActorDefinition.hpp b/LiteLoader/include/llapi/mc/FindActorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/FindActorDefinition.hpp rename to LiteLoader/include/llapi/mc/FindActorDefinition.hpp index 7c7a932..5f993bb 100644 --- a/LiteLoader/Header/MC/FindActorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/FindActorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/FindActorNode.hpp b/LiteLoader/include/llapi/mc/FindActorNode.hpp similarity index 95% rename from LiteLoader/Header/MC/FindActorNode.hpp rename to LiteLoader/include/llapi/mc/FindActorNode.hpp index 94cfe3e..a166e1b 100644 --- a/LiteLoader/Header/MC/FindActorNode.hpp +++ b/LiteLoader/include/llapi/mc/FindActorNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FindBlockDefinition.hpp b/LiteLoader/include/llapi/mc/FindBlockDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/FindBlockDefinition.hpp rename to LiteLoader/include/llapi/mc/FindBlockDefinition.hpp index 0e75285..6083933 100644 --- a/LiteLoader/Header/MC/FindBlockDefinition.hpp +++ b/LiteLoader/include/llapi/mc/FindBlockDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/FindBlockNode.hpp b/LiteLoader/include/llapi/mc/FindBlockNode.hpp similarity index 95% rename from LiteLoader/Header/MC/FindBlockNode.hpp rename to LiteLoader/include/llapi/mc/FindBlockNode.hpp index 082d116..de91ca1 100644 --- a/LiteLoader/Header/MC/FindBlockNode.hpp +++ b/LiteLoader/include/llapi/mc/FindBlockNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FindCoverGoal.hpp b/LiteLoader/include/llapi/mc/FindCoverGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FindCoverGoal.hpp rename to LiteLoader/include/llapi/mc/FindCoverGoal.hpp index 40b7998..0363c13 100644 --- a/LiteLoader/Header/MC/FindCoverGoal.hpp +++ b/LiteLoader/include/llapi/mc/FindCoverGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FindMountGoal.hpp b/LiteLoader/include/llapi/mc/FindMountGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FindMountGoal.hpp rename to LiteLoader/include/llapi/mc/FindMountGoal.hpp index b4099bc..3fa5142 100644 --- a/LiteLoader/Header/MC/FindMountGoal.hpp +++ b/LiteLoader/include/llapi/mc/FindMountGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FindUnderwaterTreasureGoal.hpp b/LiteLoader/include/llapi/mc/FindUnderwaterTreasureGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/FindUnderwaterTreasureGoal.hpp rename to LiteLoader/include/llapi/mc/FindUnderwaterTreasureGoal.hpp index bd7ac4b..c228928 100644 --- a/LiteLoader/Header/MC/FindUnderwaterTreasureGoal.hpp +++ b/LiteLoader/include/llapi/mc/FindUnderwaterTreasureGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FireBlock.hpp b/LiteLoader/include/llapi/mc/FireBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/FireBlock.hpp rename to LiteLoader/include/llapi/mc/FireBlock.hpp index e1852b7..dbeb032 100644 --- a/LiteLoader/Header/MC/FireBlock.hpp +++ b/LiteLoader/include/llapi/mc/FireBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FireChargeItem.hpp b/LiteLoader/include/llapi/mc/FireChargeItem.hpp similarity index 98% rename from LiteLoader/Header/MC/FireChargeItem.hpp rename to LiteLoader/include/llapi/mc/FireChargeItem.hpp index e0c3bb1..ab7ca9d 100644 --- a/LiteLoader/Header/MC/FireChargeItem.hpp +++ b/LiteLoader/include/llapi/mc/FireChargeItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FireImmuneDescription.hpp b/LiteLoader/include/llapi/mc/FireImmuneDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/FireImmuneDescription.hpp rename to LiteLoader/include/llapi/mc/FireImmuneDescription.hpp index ce18a77..a85f6e1 100644 --- a/LiteLoader/Header/MC/FireImmuneDescription.hpp +++ b/LiteLoader/include/llapi/mc/FireImmuneDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Fireball.hpp b/LiteLoader/include/llapi/mc/Fireball.hpp similarity index 98% rename from LiteLoader/Header/MC/Fireball.hpp rename to LiteLoader/include/llapi/mc/Fireball.hpp index e1dc40f..75600c5 100644 --- a/LiteLoader/Header/MC/Fireball.hpp +++ b/LiteLoader/include/llapi/mc/Fireball.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FireworkChargeItem.hpp b/LiteLoader/include/llapi/mc/FireworkChargeItem.hpp similarity index 98% rename from LiteLoader/Header/MC/FireworkChargeItem.hpp rename to LiteLoader/include/llapi/mc/FireworkChargeItem.hpp index 6454a06..209e471 100644 --- a/LiteLoader/Header/MC/FireworkChargeItem.hpp +++ b/LiteLoader/include/llapi/mc/FireworkChargeItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FireworksItem.hpp b/LiteLoader/include/llapi/mc/FireworksItem.hpp similarity index 98% rename from LiteLoader/Header/MC/FireworksItem.hpp rename to LiteLoader/include/llapi/mc/FireworksItem.hpp index 4551f74..dbb9f14 100644 --- a/LiteLoader/Header/MC/FireworksItem.hpp +++ b/LiteLoader/include/llapi/mc/FireworksItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FireworksRecipe.hpp b/LiteLoader/include/llapi/mc/FireworksRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/FireworksRecipe.hpp rename to LiteLoader/include/llapi/mc/FireworksRecipe.hpp index 5193c1b..22288f0 100644 --- a/LiteLoader/Header/MC/FireworksRecipe.hpp +++ b/LiteLoader/include/llapi/mc/FireworksRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FireworksRocketActor.hpp b/LiteLoader/include/llapi/mc/FireworksRocketActor.hpp similarity index 98% rename from LiteLoader/Header/MC/FireworksRocketActor.hpp rename to LiteLoader/include/llapi/mc/FireworksRocketActor.hpp index 49ecb08..11ad1f4 100644 --- a/LiteLoader/Header/MC/FireworksRocketActor.hpp +++ b/LiteLoader/include/llapi/mc/FireworksRocketActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Fish.hpp b/LiteLoader/include/llapi/mc/Fish.hpp similarity index 98% rename from LiteLoader/Header/MC/Fish.hpp rename to LiteLoader/include/llapi/mc/Fish.hpp index 3b19c76..6003cc1 100644 --- a/LiteLoader/Header/MC/Fish.hpp +++ b/LiteLoader/include/llapi/mc/Fish.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "WaterAnimal.hpp" diff --git a/LiteLoader/Header/MC/FishingEnchant.hpp b/LiteLoader/include/llapi/mc/FishingEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/FishingEnchant.hpp rename to LiteLoader/include/llapi/mc/FishingEnchant.hpp index 250ddd8..0195b88 100644 --- a/LiteLoader/Header/MC/FishingEnchant.hpp +++ b/LiteLoader/include/llapi/mc/FishingEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FishingHook.hpp b/LiteLoader/include/llapi/mc/FishingHook.hpp similarity index 98% rename from LiteLoader/Header/MC/FishingHook.hpp rename to LiteLoader/include/llapi/mc/FishingHook.hpp index 6e3fbf2..8a341fc 100644 --- a/LiteLoader/Header/MC/FishingHook.hpp +++ b/LiteLoader/include/llapi/mc/FishingHook.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FishingRodItem.hpp b/LiteLoader/include/llapi/mc/FishingRodItem.hpp similarity index 98% rename from LiteLoader/Header/MC/FishingRodItem.hpp rename to LiteLoader/include/llapi/mc/FishingRodItem.hpp index 409a330..367f4e1 100644 --- a/LiteLoader/Header/MC/FishingRodItem.hpp +++ b/LiteLoader/include/llapi/mc/FishingRodItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FitDoubleXRoom.hpp b/LiteLoader/include/llapi/mc/FitDoubleXRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/FitDoubleXRoom.hpp rename to LiteLoader/include/llapi/mc/FitDoubleXRoom.hpp index f8af848..7ab5bb2 100644 --- a/LiteLoader/Header/MC/FitDoubleXRoom.hpp +++ b/LiteLoader/include/llapi/mc/FitDoubleXRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FitDoubleXYRoom.hpp b/LiteLoader/include/llapi/mc/FitDoubleXYRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/FitDoubleXYRoom.hpp rename to LiteLoader/include/llapi/mc/FitDoubleXYRoom.hpp index 73e984c..c002207 100644 --- a/LiteLoader/Header/MC/FitDoubleXYRoom.hpp +++ b/LiteLoader/include/llapi/mc/FitDoubleXYRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FitDoubleYRoom.hpp b/LiteLoader/include/llapi/mc/FitDoubleYRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/FitDoubleYRoom.hpp rename to LiteLoader/include/llapi/mc/FitDoubleYRoom.hpp index 664bc4f..802f73e 100644 --- a/LiteLoader/Header/MC/FitDoubleYRoom.hpp +++ b/LiteLoader/include/llapi/mc/FitDoubleYRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FitDoubleYZRoom.hpp b/LiteLoader/include/llapi/mc/FitDoubleYZRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/FitDoubleYZRoom.hpp rename to LiteLoader/include/llapi/mc/FitDoubleYZRoom.hpp index ddb1a49..32569fd 100644 --- a/LiteLoader/Header/MC/FitDoubleYZRoom.hpp +++ b/LiteLoader/include/llapi/mc/FitDoubleYZRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FitDoubleZRoom.hpp b/LiteLoader/include/llapi/mc/FitDoubleZRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/FitDoubleZRoom.hpp rename to LiteLoader/include/llapi/mc/FitDoubleZRoom.hpp index c62329f..6365a12 100644 --- a/LiteLoader/Header/MC/FitDoubleZRoom.hpp +++ b/LiteLoader/include/llapi/mc/FitDoubleZRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FitSimpleRoom.hpp b/LiteLoader/include/llapi/mc/FitSimpleRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/FitSimpleRoom.hpp rename to LiteLoader/include/llapi/mc/FitSimpleRoom.hpp index 78904a6..d779cbf 100644 --- a/LiteLoader/Header/MC/FitSimpleRoom.hpp +++ b/LiteLoader/include/llapi/mc/FitSimpleRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FitSimpleTopRoom.hpp b/LiteLoader/include/llapi/mc/FitSimpleTopRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/FitSimpleTopRoom.hpp rename to LiteLoader/include/llapi/mc/FitSimpleTopRoom.hpp index 5925d96..4b89a13 100644 --- a/LiteLoader/Header/MC/FitSimpleTopRoom.hpp +++ b/LiteLoader/include/llapi/mc/FitSimpleTopRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FixedBiomeSource.hpp b/LiteLoader/include/llapi/mc/FixedBiomeSource.hpp similarity index 96% rename from LiteLoader/Header/MC/FixedBiomeSource.hpp rename to LiteLoader/include/llapi/mc/FixedBiomeSource.hpp index b8871ee..2c6a321 100644 --- a/LiteLoader/Header/MC/FixedBiomeSource.hpp +++ b/LiteLoader/include/llapi/mc/FixedBiomeSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlatWorldGenerator.hpp b/LiteLoader/include/llapi/mc/FlatWorldGenerator.hpp similarity index 97% rename from LiteLoader/Header/MC/FlatWorldGenerator.hpp rename to LiteLoader/include/llapi/mc/FlatWorldGenerator.hpp index 34622eb..412d36f 100644 --- a/LiteLoader/Header/MC/FlatWorldGenerator.hpp +++ b/LiteLoader/include/llapi/mc/FlatWorldGenerator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlatWorldGeneratorOptions.hpp b/LiteLoader/include/llapi/mc/FlatWorldGeneratorOptions.hpp similarity index 96% rename from LiteLoader/Header/MC/FlatWorldGeneratorOptions.hpp rename to LiteLoader/include/llapi/mc/FlatWorldGeneratorOptions.hpp index 479561c..6fda7dc 100644 --- a/LiteLoader/Header/MC/FlatWorldGeneratorOptions.hpp +++ b/LiteLoader/include/llapi/mc/FlatWorldGeneratorOptions.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FleeSunGoal.hpp b/LiteLoader/include/llapi/mc/FleeSunGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FleeSunGoal.hpp rename to LiteLoader/include/llapi/mc/FleeSunGoal.hpp index a180e54..6faeee1 100644 --- a/LiteLoader/Header/MC/FleeSunGoal.hpp +++ b/LiteLoader/include/llapi/mc/FleeSunGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FindCoverGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlintAndSteelItem.hpp b/LiteLoader/include/llapi/mc/FlintAndSteelItem.hpp similarity index 98% rename from LiteLoader/Header/MC/FlintAndSteelItem.hpp rename to LiteLoader/include/llapi/mc/FlintAndSteelItem.hpp index 7991ea7..219c8cc 100644 --- a/LiteLoader/Header/MC/FlintAndSteelItem.hpp +++ b/LiteLoader/include/llapi/mc/FlintAndSteelItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FloatGoal.hpp b/LiteLoader/include/llapi/mc/FloatGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FloatGoal.hpp rename to LiteLoader/include/llapi/mc/FloatGoal.hpp index b9b304f..72bc9bf 100644 --- a/LiteLoader/Header/MC/FloatGoal.hpp +++ b/LiteLoader/include/llapi/mc/FloatGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FloatNavigation.hpp b/LiteLoader/include/llapi/mc/FloatNavigation.hpp similarity index 96% rename from LiteLoader/Header/MC/FloatNavigation.hpp rename to LiteLoader/include/llapi/mc/FloatNavigation.hpp index 93f195d..5cbcfad 100644 --- a/LiteLoader/Header/MC/FloatNavigation.hpp +++ b/LiteLoader/include/llapi/mc/FloatNavigation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PathNavigation.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FloatRange.hpp b/LiteLoader/include/llapi/mc/FloatRange.hpp similarity index 95% rename from LiteLoader/Header/MC/FloatRange.hpp rename to LiteLoader/include/llapi/mc/FloatRange.hpp index b29f12b..acc542e 100644 --- a/LiteLoader/Header/MC/FloatRange.hpp +++ b/LiteLoader/include/llapi/mc/FloatRange.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FloatTag.hpp b/LiteLoader/include/llapi/mc/FloatTag.hpp similarity index 97% rename from LiteLoader/Header/MC/FloatTag.hpp rename to LiteLoader/include/llapi/mc/FloatTag.hpp index 632f5cc..71e4e3a 100644 --- a/LiteLoader/Header/MC/FloatTag.hpp +++ b/LiteLoader/include/llapi/mc/FloatTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FloatWanderGoal.hpp b/LiteLoader/include/llapi/mc/FloatWanderGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FloatWanderGoal.hpp rename to LiteLoader/include/llapi/mc/FloatWanderGoal.hpp index 6f80cc4..09972e4 100644 --- a/LiteLoader/Header/MC/FloatWanderGoal.hpp +++ b/LiteLoader/include/llapi/mc/FloatWanderGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FloatsInLiquidDescription.hpp b/LiteLoader/include/llapi/mc/FloatsInLiquidDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/FloatsInLiquidDescription.hpp rename to LiteLoader/include/llapi/mc/FloatsInLiquidDescription.hpp index f5dbc06..3956135 100644 --- a/LiteLoader/Header/MC/FloatsInLiquidDescription.hpp +++ b/LiteLoader/include/llapi/mc/FloatsInLiquidDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlockingComponent.hpp b/LiteLoader/include/llapi/mc/FlockingComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/FlockingComponent.hpp rename to LiteLoader/include/llapi/mc/FlockingComponent.hpp index 4820428..2e988c9 100644 --- a/LiteLoader/Header/MC/FlockingComponent.hpp +++ b/LiteLoader/include/llapi/mc/FlockingComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlockingDefinition.hpp b/LiteLoader/include/llapi/mc/FlockingDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/FlockingDefinition.hpp rename to LiteLoader/include/llapi/mc/FlockingDefinition.hpp index 5836685..aa37b56 100644 --- a/LiteLoader/Header/MC/FlockingDefinition.hpp +++ b/LiteLoader/include/llapi/mc/FlockingDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlockingSystem.hpp b/LiteLoader/include/llapi/mc/FlockingSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/FlockingSystem.hpp rename to LiteLoader/include/llapi/mc/FlockingSystem.hpp index 83d999a..d50d6bf 100644 --- a/LiteLoader/Header/MC/FlockingSystem.hpp +++ b/LiteLoader/include/llapi/mc/FlockingSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlockingUtility.hpp b/LiteLoader/include/llapi/mc/FlockingUtility.hpp similarity index 94% rename from LiteLoader/Header/MC/FlockingUtility.hpp rename to LiteLoader/include/llapi/mc/FlockingUtility.hpp index df984c6..600c3bc 100644 --- a/LiteLoader/Header/MC/FlockingUtility.hpp +++ b/LiteLoader/include/llapi/mc/FlockingUtility.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlowerBlock.hpp b/LiteLoader/include/llapi/mc/FlowerBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/FlowerBlock.hpp rename to LiteLoader/include/llapi/mc/FlowerBlock.hpp index 59c8939..fcae722 100644 --- a/LiteLoader/Header/MC/FlowerBlock.hpp +++ b/LiteLoader/include/llapi/mc/FlowerBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlowerFeature.hpp b/LiteLoader/include/llapi/mc/FlowerFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/FlowerFeature.hpp rename to LiteLoader/include/llapi/mc/FlowerFeature.hpp index c3494a9..cfc3360 100644 --- a/LiteLoader/Header/MC/FlowerFeature.hpp +++ b/LiteLoader/include/llapi/mc/FlowerFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlowerHelper.hpp b/LiteLoader/include/llapi/mc/FlowerHelper.hpp similarity index 94% rename from LiteLoader/Header/MC/FlowerHelper.hpp rename to LiteLoader/include/llapi/mc/FlowerHelper.hpp index c6582c4..e6a4769 100644 --- a/LiteLoader/Header/MC/FlowerHelper.hpp +++ b/LiteLoader/include/llapi/mc/FlowerHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlowerPotBlock.hpp b/LiteLoader/include/llapi/mc/FlowerPotBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/FlowerPotBlock.hpp rename to LiteLoader/include/llapi/mc/FlowerPotBlock.hpp index da7b40e..5c4910e 100644 --- a/LiteLoader/Header/MC/FlowerPotBlock.hpp +++ b/LiteLoader/include/llapi/mc/FlowerPotBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlowerPotBlockActor.hpp b/LiteLoader/include/llapi/mc/FlowerPotBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/FlowerPotBlockActor.hpp rename to LiteLoader/include/llapi/mc/FlowerPotBlockActor.hpp index 1e1434a..75738fe 100644 --- a/LiteLoader/Header/MC/FlowerPotBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/FlowerPotBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlushableEnv.hpp b/LiteLoader/include/llapi/mc/FlushableEnv.hpp similarity index 94% rename from LiteLoader/Header/MC/FlushableEnv.hpp rename to LiteLoader/include/llapi/mc/FlushableEnv.hpp index 98c8409..0de5a54 100644 --- a/LiteLoader/Header/MC/FlushableEnv.hpp +++ b/LiteLoader/include/llapi/mc/FlushableEnv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlushableStorageAreaEnv.hpp b/LiteLoader/include/llapi/mc/FlushableStorageAreaEnv.hpp similarity index 97% rename from LiteLoader/Header/MC/FlushableStorageAreaEnv.hpp rename to LiteLoader/include/llapi/mc/FlushableStorageAreaEnv.hpp index 0dbe234..549d1a2 100644 --- a/LiteLoader/Header/MC/FlushableStorageAreaEnv.hpp +++ b/LiteLoader/include/llapi/mc/FlushableStorageAreaEnv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TransactionalWorldBlockTarget.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlyDefinition.hpp b/LiteLoader/include/llapi/mc/FlyDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/FlyDefinition.hpp rename to LiteLoader/include/llapi/mc/FlyDefinition.hpp index 77f427b..29215a9 100644 --- a/LiteLoader/Header/MC/FlyDefinition.hpp +++ b/LiteLoader/include/llapi/mc/FlyDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/FlyMoveControl.hpp b/LiteLoader/include/llapi/mc/FlyMoveControl.hpp similarity index 95% rename from LiteLoader/Header/MC/FlyMoveControl.hpp rename to LiteLoader/include/llapi/mc/FlyMoveControl.hpp index 899c8e7..2b31e0f 100644 --- a/LiteLoader/Header/MC/FlyMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/FlyMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlyNode.hpp b/LiteLoader/include/llapi/mc/FlyNode.hpp similarity index 95% rename from LiteLoader/Header/MC/FlyNode.hpp rename to LiteLoader/include/llapi/mc/FlyNode.hpp index 2399e2f..e4f0944 100644 --- a/LiteLoader/Header/MC/FlyNode.hpp +++ b/LiteLoader/include/llapi/mc/FlyNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlyingPathNavigation.hpp b/LiteLoader/include/llapi/mc/FlyingPathNavigation.hpp similarity index 98% rename from LiteLoader/Header/MC/FlyingPathNavigation.hpp rename to LiteLoader/include/llapi/mc/FlyingPathNavigation.hpp index 4789ae2..320c8d4 100644 --- a/LiteLoader/Header/MC/FlyingPathNavigation.hpp +++ b/LiteLoader/include/llapi/mc/FlyingPathNavigation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PathNavigation.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FlyingSpeedDescription.hpp b/LiteLoader/include/llapi/mc/FlyingSpeedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/FlyingSpeedDescription.hpp rename to LiteLoader/include/llapi/mc/FlyingSpeedDescription.hpp index 407439c..54365c6 100644 --- a/LiteLoader/Header/MC/FlyingSpeedDescription.hpp +++ b/LiteLoader/include/llapi/mc/FlyingSpeedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FoliageColor.hpp b/LiteLoader/include/llapi/mc/FoliageColor.hpp similarity index 98% rename from LiteLoader/Header/MC/FoliageColor.hpp rename to LiteLoader/include/llapi/mc/FoliageColor.hpp index dbd7840..c9d9652 100644 --- a/LiteLoader/Header/MC/FoliageColor.hpp +++ b/LiteLoader/include/llapi/mc/FoliageColor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FollowCaravanGoal.hpp b/LiteLoader/include/llapi/mc/FollowCaravanGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/FollowCaravanGoal.hpp rename to LiteLoader/include/llapi/mc/FollowCaravanGoal.hpp index 688cde0..0654074 100644 --- a/LiteLoader/Header/MC/FollowCaravanGoal.hpp +++ b/LiteLoader/include/llapi/mc/FollowCaravanGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FollowFlockGoal.hpp b/LiteLoader/include/llapi/mc/FollowFlockGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FollowFlockGoal.hpp rename to LiteLoader/include/llapi/mc/FollowFlockGoal.hpp index f086957..2f43a0a 100644 --- a/LiteLoader/Header/MC/FollowFlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/FollowFlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FollowMobGoal.hpp b/LiteLoader/include/llapi/mc/FollowMobGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FollowMobGoal.hpp rename to LiteLoader/include/llapi/mc/FollowMobGoal.hpp index 7e420da..098ef95 100644 --- a/LiteLoader/Header/MC/FollowMobGoal.hpp +++ b/LiteLoader/include/llapi/mc/FollowMobGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FollowOwnerGoal.hpp b/LiteLoader/include/llapi/mc/FollowOwnerGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/FollowOwnerGoal.hpp rename to LiteLoader/include/llapi/mc/FollowOwnerGoal.hpp index f9c6a21..038c721 100644 --- a/LiteLoader/Header/MC/FollowOwnerGoal.hpp +++ b/LiteLoader/include/llapi/mc/FollowOwnerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FollowParentGoal.hpp b/LiteLoader/include/llapi/mc/FollowParentGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/FollowParentGoal.hpp rename to LiteLoader/include/llapi/mc/FollowParentGoal.hpp index 153306a..a535946 100644 --- a/LiteLoader/Header/MC/FollowParentGoal.hpp +++ b/LiteLoader/include/llapi/mc/FollowParentGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FollowTargetCaptainGoal.hpp b/LiteLoader/include/llapi/mc/FollowTargetCaptainGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/FollowTargetCaptainGoal.hpp rename to LiteLoader/include/llapi/mc/FollowTargetCaptainGoal.hpp index 57f799b..0b99a80 100644 --- a/LiteLoader/Header/MC/FollowTargetCaptainGoal.hpp +++ b/LiteLoader/include/llapi/mc/FollowTargetCaptainGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FoodConstants.hpp b/LiteLoader/include/llapi/mc/FoodConstants.hpp similarity index 97% rename from LiteLoader/Header/MC/FoodConstants.hpp rename to LiteLoader/include/llapi/mc/FoodConstants.hpp index 617b0b7..e49f8fa 100644 --- a/LiteLoader/Header/MC/FoodConstants.hpp +++ b/LiteLoader/include/llapi/mc/FoodConstants.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FoodItemComponent.hpp b/LiteLoader/include/llapi/mc/FoodItemComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/FoodItemComponent.hpp rename to LiteLoader/include/llapi/mc/FoodItemComponent.hpp index 91f426a..55358a6 100644 --- a/LiteLoader/Header/MC/FoodItemComponent.hpp +++ b/LiteLoader/include/llapi/mc/FoodItemComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FootSizeDescription.hpp b/LiteLoader/include/llapi/mc/FootSizeDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/FootSizeDescription.hpp rename to LiteLoader/include/llapi/mc/FootSizeDescription.hpp index 615f471..d236535 100644 --- a/LiteLoader/Header/MC/FootSizeDescription.hpp +++ b/LiteLoader/include/llapi/mc/FootSizeDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FormJsonValidator.hpp b/LiteLoader/include/llapi/mc/FormJsonValidator.hpp similarity index 97% rename from LiteLoader/Header/MC/FormJsonValidator.hpp rename to LiteLoader/include/llapi/mc/FormJsonValidator.hpp index d1bd356..053b16c 100644 --- a/LiteLoader/Header/MC/FormJsonValidator.hpp +++ b/LiteLoader/include/llapi/mc/FormJsonValidator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonValidator.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FossilFeature.hpp b/LiteLoader/include/llapi/mc/FossilFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/FossilFeature.hpp rename to LiteLoader/include/llapi/mc/FossilFeature.hpp index 57e65cd..363a5f2 100644 --- a/LiteLoader/Header/MC/FossilFeature.hpp +++ b/LiteLoader/include/llapi/mc/FossilFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FreezeOnHitSubcomponent.hpp b/LiteLoader/include/llapi/mc/FreezeOnHitSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/FreezeOnHitSubcomponent.hpp rename to LiteLoader/include/llapi/mc/FreezeOnHitSubcomponent.hpp index a7a43bb..c1d8f31 100644 --- a/LiteLoader/Header/MC/FreezeOnHitSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/FreezeOnHitSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FrictionModifierDescription.hpp b/LiteLoader/include/llapi/mc/FrictionModifierDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/FrictionModifierDescription.hpp rename to LiteLoader/include/llapi/mc/FrictionModifierDescription.hpp index c55d78a..b85155f 100644 --- a/LiteLoader/Header/MC/FrictionModifierDescription.hpp +++ b/LiteLoader/include/llapi/mc/FrictionModifierDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FrostWalkerEnchant.hpp b/LiteLoader/include/llapi/mc/FrostWalkerEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/FrostWalkerEnchant.hpp rename to LiteLoader/include/llapi/mc/FrostWalkerEnchant.hpp index 11d0af5..e87aa9f 100644 --- a/LiteLoader/Header/MC/FrostWalkerEnchant.hpp +++ b/LiteLoader/include/llapi/mc/FrostWalkerEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FrostedIceBlock.hpp b/LiteLoader/include/llapi/mc/FrostedIceBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/FrostedIceBlock.hpp rename to LiteLoader/include/llapi/mc/FrostedIceBlock.hpp index db0167d..a1741de 100644 --- a/LiteLoader/Header/MC/FrostedIceBlock.hpp +++ b/LiteLoader/include/llapi/mc/FrostedIceBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FullPlayerInventoryWrapper.hpp b/LiteLoader/include/llapi/mc/FullPlayerInventoryWrapper.hpp similarity index 97% rename from LiteLoader/Header/MC/FullPlayerInventoryWrapper.hpp rename to LiteLoader/include/llapi/mc/FullPlayerInventoryWrapper.hpp index 6545609..28f5a46 100644 --- a/LiteLoader/Header/MC/FullPlayerInventoryWrapper.hpp +++ b/LiteLoader/include/llapi/mc/FullPlayerInventoryWrapper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FunctionCommand.hpp b/LiteLoader/include/llapi/mc/FunctionCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/FunctionCommand.hpp rename to LiteLoader/include/llapi/mc/FunctionCommand.hpp index 6aaeefd..209999d 100644 --- a/LiteLoader/Header/MC/FunctionCommand.hpp +++ b/LiteLoader/include/llapi/mc/FunctionCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FunctionEntry.hpp b/LiteLoader/include/llapi/mc/FunctionEntry.hpp similarity index 95% rename from LiteLoader/Header/MC/FunctionEntry.hpp rename to LiteLoader/include/llapi/mc/FunctionEntry.hpp index 8f9a028..75a9f02 100644 --- a/LiteLoader/Header/MC/FunctionEntry.hpp +++ b/LiteLoader/include/llapi/mc/FunctionEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FunctionManager.hpp b/LiteLoader/include/llapi/mc/FunctionManager.hpp similarity index 98% rename from LiteLoader/Header/MC/FunctionManager.hpp rename to LiteLoader/include/llapi/mc/FunctionManager.hpp index c93b6c7..fddfe5f 100644 --- a/LiteLoader/Header/MC/FunctionManager.hpp +++ b/LiteLoader/include/llapi/mc/FunctionManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/FungusStem.hpp b/LiteLoader/include/llapi/mc/FungusStem.hpp similarity index 98% rename from LiteLoader/Header/MC/FungusStem.hpp rename to LiteLoader/include/llapi/mc/FungusStem.hpp index 4ab4f7e..69a773a 100644 --- a/LiteLoader/Header/MC/FungusStem.hpp +++ b/LiteLoader/include/llapi/mc/FungusStem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RotatedPillarBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FurnaceBlock.hpp b/LiteLoader/include/llapi/mc/FurnaceBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/FurnaceBlock.hpp rename to LiteLoader/include/llapi/mc/FurnaceBlock.hpp index 4abfc80..6f1161e 100644 --- a/LiteLoader/Header/MC/FurnaceBlock.hpp +++ b/LiteLoader/include/llapi/mc/FurnaceBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FurnaceBlockActor.hpp b/LiteLoader/include/llapi/mc/FurnaceBlockActor.hpp similarity index 99% rename from LiteLoader/Header/MC/FurnaceBlockActor.hpp rename to LiteLoader/include/llapi/mc/FurnaceBlockActor.hpp index 1dffee2..3c7dff9 100644 --- a/LiteLoader/Header/MC/FurnaceBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/FurnaceBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/FurnaceContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/FurnaceContainerManagerModel.hpp similarity index 98% rename from LiteLoader/Header/MC/FurnaceContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/FurnaceContainerManagerModel.hpp index 5d5fd69..dfb004d 100644 --- a/LiteLoader/Header/MC/FurnaceContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/FurnaceContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameCallbacks.hpp b/LiteLoader/include/llapi/mc/GameCallbacks.hpp similarity index 94% rename from LiteLoader/Header/MC/GameCallbacks.hpp rename to LiteLoader/include/llapi/mc/GameCallbacks.hpp index 2bc283c..4e31f6f 100644 --- a/LiteLoader/Header/MC/GameCallbacks.hpp +++ b/LiteLoader/include/llapi/mc/GameCallbacks.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameMasterEntityServerCommandOrigin.hpp b/LiteLoader/include/llapi/mc/GameMasterEntityServerCommandOrigin.hpp similarity index 97% rename from LiteLoader/Header/MC/GameMasterEntityServerCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/GameMasterEntityServerCommandOrigin.hpp index f00ff02..f436e46 100644 --- a/LiteLoader/Header/MC/GameMasterEntityServerCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/GameMasterEntityServerCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "ActorCommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/GameMode.hpp b/LiteLoader/include/llapi/mc/GameMode.hpp similarity index 98% rename from LiteLoader/Header/MC/GameMode.hpp rename to LiteLoader/include/llapi/mc/GameMode.hpp index 6bc9727..a23212f 100644 --- a/LiteLoader/Header/MC/GameMode.hpp +++ b/LiteLoader/include/llapi/mc/GameMode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameModeCommand.hpp b/LiteLoader/include/llapi/mc/GameModeCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GameModeCommand.hpp rename to LiteLoader/include/llapi/mc/GameModeCommand.hpp index cac1808..ebe48b7 100644 --- a/LiteLoader/Header/MC/GameModeCommand.hpp +++ b/LiteLoader/include/llapi/mc/GameModeCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameModuleServer.hpp b/LiteLoader/include/llapi/mc/GameModuleServer.hpp similarity index 94% rename from LiteLoader/Header/MC/GameModuleServer.hpp rename to LiteLoader/include/llapi/mc/GameModuleServer.hpp index efc38d0..b7a4509 100644 --- a/LiteLoader/Header/MC/GameModuleServer.hpp +++ b/LiteLoader/include/llapi/mc/GameModuleServer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameRule.hpp b/LiteLoader/include/llapi/mc/GameRule.hpp similarity index 97% rename from LiteLoader/Header/MC/GameRule.hpp rename to LiteLoader/include/llapi/mc/GameRule.hpp index b0d789d..32fbe8c 100644 --- a/LiteLoader/Header/MC/GameRule.hpp +++ b/LiteLoader/include/llapi/mc/GameRule.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameRuleCommand.hpp b/LiteLoader/include/llapi/mc/GameRuleCommand.hpp similarity index 97% rename from LiteLoader/Header/MC/GameRuleCommand.hpp rename to LiteLoader/include/llapi/mc/GameRuleCommand.hpp index 3ad37ad..e852322 100644 --- a/LiteLoader/Header/MC/GameRuleCommand.hpp +++ b/LiteLoader/include/llapi/mc/GameRuleCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "Command.hpp" diff --git a/LiteLoader/Header/MC/GameRules.hpp b/LiteLoader/include/llapi/mc/GameRules.hpp similarity index 98% rename from LiteLoader/Header/MC/GameRules.hpp rename to LiteLoader/include/llapi/mc/GameRules.hpp index f7f9630..94c2b44 100644 --- a/LiteLoader/Header/MC/GameRules.hpp +++ b/LiteLoader/include/llapi/mc/GameRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "GameRule.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameRulesChangedPacket.hpp b/LiteLoader/include/llapi/mc/GameRulesChangedPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/GameRulesChangedPacket.hpp rename to LiteLoader/include/llapi/mc/GameRulesChangedPacket.hpp index bd7c3e1..c905e87 100644 --- a/LiteLoader/Header/MC/GameRulesChangedPacket.hpp +++ b/LiteLoader/include/llapi/mc/GameRulesChangedPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameRulesChangedPacketData.hpp b/LiteLoader/include/llapi/mc/GameRulesChangedPacketData.hpp similarity index 95% rename from LiteLoader/Header/MC/GameRulesChangedPacketData.hpp rename to LiteLoader/include/llapi/mc/GameRulesChangedPacketData.hpp index 3837508..2c7ab83 100644 --- a/LiteLoader/Header/MC/GameRulesChangedPacketData.hpp +++ b/LiteLoader/include/llapi/mc/GameRulesChangedPacketData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameSession.hpp b/LiteLoader/include/llapi/mc/GameSession.hpp similarity index 96% rename from LiteLoader/Header/MC/GameSession.hpp rename to LiteLoader/include/llapi/mc/GameSession.hpp index dd096e5..ed30dbd 100644 --- a/LiteLoader/Header/MC/GameSession.hpp +++ b/LiteLoader/include/llapi/mc/GameSession.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameSpecificNetEventCallback.hpp b/LiteLoader/include/llapi/mc/GameSpecificNetEventCallback.hpp similarity index 96% rename from LiteLoader/Header/MC/GameSpecificNetEventCallback.hpp rename to LiteLoader/include/llapi/mc/GameSpecificNetEventCallback.hpp index 32cbaa3..70bad0e 100644 --- a/LiteLoader/Header/MC/GameSpecificNetEventCallback.hpp +++ b/LiteLoader/include/llapi/mc/GameSpecificNetEventCallback.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameTypeConv.hpp b/LiteLoader/include/llapi/mc/GameTypeConv.hpp similarity index 93% rename from LiteLoader/Header/MC/GameTypeConv.hpp rename to LiteLoader/include/llapi/mc/GameTypeConv.hpp index e9726ba..c856161 100644 --- a/LiteLoader/Header/MC/GameTypeConv.hpp +++ b/LiteLoader/include/llapi/mc/GameTypeConv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GameVersion.hpp b/LiteLoader/include/llapi/mc/GameVersion.hpp similarity index 96% rename from LiteLoader/Header/MC/GameVersion.hpp rename to LiteLoader/include/llapi/mc/GameVersion.hpp index d8473ed..9e6d3fa 100644 --- a/LiteLoader/Header/MC/GameVersion.hpp +++ b/LiteLoader/include/llapi/mc/GameVersion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GeneDefinition.hpp b/LiteLoader/include/llapi/mc/GeneDefinition.hpp similarity index 95% rename from LiteLoader/Header/MC/GeneDefinition.hpp rename to LiteLoader/include/llapi/mc/GeneDefinition.hpp index 4d5de51..8f2c050 100644 --- a/LiteLoader/Header/MC/GeneDefinition.hpp +++ b/LiteLoader/include/llapi/mc/GeneDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GenericMoveControl.hpp b/LiteLoader/include/llapi/mc/GenericMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/GenericMoveControl.hpp rename to LiteLoader/include/llapi/mc/GenericMoveControl.hpp index 0655228..733a64a 100644 --- a/LiteLoader/Header/MC/GenericMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/GenericMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GenericMoveControlDescription.hpp b/LiteLoader/include/llapi/mc/GenericMoveControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/GenericMoveControlDescription.hpp rename to LiteLoader/include/llapi/mc/GenericMoveControlDescription.hpp index 238075d..fa3895d 100644 --- a/LiteLoader/Header/MC/GenericMoveControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/GenericMoveControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GenericPathNavigation.hpp b/LiteLoader/include/llapi/mc/GenericPathNavigation.hpp similarity index 97% rename from LiteLoader/Header/MC/GenericPathNavigation.hpp rename to LiteLoader/include/llapi/mc/GenericPathNavigation.hpp index 94609ad..8feab7e 100644 --- a/LiteLoader/Header/MC/GenericPathNavigation.hpp +++ b/LiteLoader/include/llapi/mc/GenericPathNavigation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PathNavigation.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GeneticVariant.hpp b/LiteLoader/include/llapi/mc/GeneticVariant.hpp similarity index 95% rename from LiteLoader/Header/MC/GeneticVariant.hpp rename to LiteLoader/include/llapi/mc/GeneticVariant.hpp index 7016855..4fb9343 100644 --- a/LiteLoader/Header/MC/GeneticVariant.hpp +++ b/LiteLoader/include/llapi/mc/GeneticVariant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GeneticsComponent.hpp b/LiteLoader/include/llapi/mc/GeneticsComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/GeneticsComponent.hpp rename to LiteLoader/include/llapi/mc/GeneticsComponent.hpp index 027d9d1..2f09d85 100644 --- a/LiteLoader/Header/MC/GeneticsComponent.hpp +++ b/LiteLoader/include/llapi/mc/GeneticsComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GeneticsDefinition.hpp b/LiteLoader/include/llapi/mc/GeneticsDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/GeneticsDefinition.hpp rename to LiteLoader/include/llapi/mc/GeneticsDefinition.hpp index bceed3e..0f74425 100644 --- a/LiteLoader/Header/MC/GeneticsDefinition.hpp +++ b/LiteLoader/include/llapi/mc/GeneticsDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GetChunkDataCommand.hpp b/LiteLoader/include/llapi/mc/GetChunkDataCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GetChunkDataCommand.hpp rename to LiteLoader/include/llapi/mc/GetChunkDataCommand.hpp index 38559d7..3e058d0 100644 --- a/LiteLoader/Header/MC/GetChunkDataCommand.hpp +++ b/LiteLoader/include/llapi/mc/GetChunkDataCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GetChunksCommand.hpp b/LiteLoader/include/llapi/mc/GetChunksCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GetChunksCommand.hpp rename to LiteLoader/include/llapi/mc/GetChunksCommand.hpp index ff41be3..d71587a 100644 --- a/LiteLoader/Header/MC/GetChunksCommand.hpp +++ b/LiteLoader/include/llapi/mc/GetChunksCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GetEduServerInfoCommand.hpp b/LiteLoader/include/llapi/mc/GetEduServerInfoCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GetEduServerInfoCommand.hpp rename to LiteLoader/include/llapi/mc/GetEduServerInfoCommand.hpp index 7bf4e21..d810866 100644 --- a/LiteLoader/Header/MC/GetEduServerInfoCommand.hpp +++ b/LiteLoader/include/llapi/mc/GetEduServerInfoCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GetInteractionPositionForBlockDefinition.hpp b/LiteLoader/include/llapi/mc/GetInteractionPositionForBlockDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/GetInteractionPositionForBlockDefinition.hpp rename to LiteLoader/include/llapi/mc/GetInteractionPositionForBlockDefinition.hpp index b2a90e6..0883419 100644 --- a/LiteLoader/Header/MC/GetInteractionPositionForBlockDefinition.hpp +++ b/LiteLoader/include/llapi/mc/GetInteractionPositionForBlockDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/GetInteractionPositionForBlockNode.hpp b/LiteLoader/include/llapi/mc/GetInteractionPositionForBlockNode.hpp similarity index 97% rename from LiteLoader/Header/MC/GetInteractionPositionForBlockNode.hpp rename to LiteLoader/include/llapi/mc/GetInteractionPositionForBlockNode.hpp index 085ab07..6c74a87 100644 --- a/LiteLoader/Header/MC/GetInteractionPositionForBlockNode.hpp +++ b/LiteLoader/include/llapi/mc/GetInteractionPositionForBlockNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Facing.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GetSpawnPointCommand.hpp b/LiteLoader/include/llapi/mc/GetSpawnPointCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GetSpawnPointCommand.hpp rename to LiteLoader/include/llapi/mc/GetSpawnPointCommand.hpp index a83d358..d2d930f 100644 --- a/LiteLoader/Header/MC/GetSpawnPointCommand.hpp +++ b/LiteLoader/include/llapi/mc/GetSpawnPointCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GetTopSolidBlockCommand.hpp b/LiteLoader/include/llapi/mc/GetTopSolidBlockCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GetTopSolidBlockCommand.hpp rename to LiteLoader/include/llapi/mc/GetTopSolidBlockCommand.hpp index f56a7f2..4ab8e9a 100644 --- a/LiteLoader/Header/MC/GetTopSolidBlockCommand.hpp +++ b/LiteLoader/include/llapi/mc/GetTopSolidBlockCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Ghast.hpp b/LiteLoader/include/llapi/mc/Ghast.hpp similarity index 98% rename from LiteLoader/Header/MC/Ghast.hpp rename to LiteLoader/include/llapi/mc/Ghast.hpp index f0e34bb..97ab1ab 100644 --- a/LiteLoader/Header/MC/Ghast.hpp +++ b/LiteLoader/include/llapi/mc/Ghast.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/GildedBlackstone.hpp b/LiteLoader/include/llapi/mc/GildedBlackstone.hpp similarity index 98% rename from LiteLoader/Header/MC/GildedBlackstone.hpp rename to LiteLoader/include/llapi/mc/GildedBlackstone.hpp index 988fa86..239b8a8 100644 --- a/LiteLoader/Header/MC/GildedBlackstone.hpp +++ b/LiteLoader/include/llapi/mc/GildedBlackstone.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GiveCommand.hpp b/LiteLoader/include/llapi/mc/GiveCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GiveCommand.hpp rename to LiteLoader/include/llapi/mc/GiveCommand.hpp index 04d0d2a..5b323a5 100644 --- a/LiteLoader/Header/MC/GiveCommand.hpp +++ b/LiteLoader/include/llapi/mc/GiveCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GiveableComponent.hpp b/LiteLoader/include/llapi/mc/GiveableComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/GiveableComponent.hpp rename to LiteLoader/include/llapi/mc/GiveableComponent.hpp index 30681b7..59d6bf0 100644 --- a/LiteLoader/Header/MC/GiveableComponent.hpp +++ b/LiteLoader/include/llapi/mc/GiveableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GiveableDefinition.hpp b/LiteLoader/include/llapi/mc/GiveableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/GiveableDefinition.hpp rename to LiteLoader/include/llapi/mc/GiveableDefinition.hpp index bffb230..462d035 100644 --- a/LiteLoader/Header/MC/GiveableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/GiveableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GiveableTrigger.hpp b/LiteLoader/include/llapi/mc/GiveableTrigger.hpp similarity index 95% rename from LiteLoader/Header/MC/GiveableTrigger.hpp rename to LiteLoader/include/llapi/mc/GiveableTrigger.hpp index 9261016..dfff652 100644 --- a/LiteLoader/Header/MC/GiveableTrigger.hpp +++ b/LiteLoader/include/llapi/mc/GiveableTrigger.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GlassBlock.hpp b/LiteLoader/include/llapi/mc/GlassBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/GlassBlock.hpp rename to LiteLoader/include/llapi/mc/GlassBlock.hpp index 254def1..aef6bc2 100644 --- a/LiteLoader/Header/MC/GlassBlock.hpp +++ b/LiteLoader/include/llapi/mc/GlassBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GlazedTerracottaBlock.hpp b/LiteLoader/include/llapi/mc/GlazedTerracottaBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/GlazedTerracottaBlock.hpp rename to LiteLoader/include/llapi/mc/GlazedTerracottaBlock.hpp index 3100981..a0c3311 100644 --- a/LiteLoader/Header/MC/GlazedTerracottaBlock.hpp +++ b/LiteLoader/include/llapi/mc/GlazedTerracottaBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GlideMoveControl.hpp b/LiteLoader/include/llapi/mc/GlideMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/GlideMoveControl.hpp rename to LiteLoader/include/llapi/mc/GlideMoveControl.hpp index ff37f75..56b0611 100644 --- a/LiteLoader/Header/MC/GlideMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/GlideMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GlideMoveControlDescription.hpp b/LiteLoader/include/llapi/mc/GlideMoveControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/GlideMoveControlDescription.hpp rename to LiteLoader/include/llapi/mc/GlideMoveControlDescription.hpp index 36ec245..630b7e6 100644 --- a/LiteLoader/Header/MC/GlideMoveControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/GlideMoveControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GlobalPauseCommand.hpp b/LiteLoader/include/llapi/mc/GlobalPauseCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/GlobalPauseCommand.hpp rename to LiteLoader/include/llapi/mc/GlobalPauseCommand.hpp index fe849c9..5be8182 100644 --- a/LiteLoader/Header/MC/GlobalPauseCommand.hpp +++ b/LiteLoader/include/llapi/mc/GlobalPauseCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GlowStickItem.hpp b/LiteLoader/include/llapi/mc/GlowStickItem.hpp similarity index 99% rename from LiteLoader/Header/MC/GlowStickItem.hpp rename to LiteLoader/include/llapi/mc/GlowStickItem.hpp index f40b4c2..1a1582d 100644 --- a/LiteLoader/Header/MC/GlowStickItem.hpp +++ b/LiteLoader/include/llapi/mc/GlowStickItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChemistryStickItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GlowStoneFeature.hpp b/LiteLoader/include/llapi/mc/GlowStoneFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/GlowStoneFeature.hpp rename to LiteLoader/include/llapi/mc/GlowStoneFeature.hpp index 546e3a3..5128d2e 100644 --- a/LiteLoader/Header/MC/GlowStoneFeature.hpp +++ b/LiteLoader/include/llapi/mc/GlowStoneFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GoHomeGoal.hpp b/LiteLoader/include/llapi/mc/GoHomeGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/GoHomeGoal.hpp rename to LiteLoader/include/llapi/mc/GoHomeGoal.hpp index 37d319d..a816a06 100644 --- a/LiteLoader/Header/MC/GoHomeGoal.hpp +++ b/LiteLoader/include/llapi/mc/GoHomeGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Goal.hpp b/LiteLoader/include/llapi/mc/Goal.hpp similarity index 97% rename from LiteLoader/Header/MC/Goal.hpp rename to LiteLoader/include/llapi/mc/Goal.hpp index a48711d..da0835f 100644 --- a/LiteLoader/Header/MC/Goal.hpp +++ b/LiteLoader/include/llapi/mc/Goal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GoalDefinition.hpp b/LiteLoader/include/llapi/mc/GoalDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/GoalDefinition.hpp rename to LiteLoader/include/llapi/mc/GoalDefinition.hpp index 8192250..44a1baf 100644 --- a/LiteLoader/Header/MC/GoalDefinition.hpp +++ b/LiteLoader/include/llapi/mc/GoalDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GoalSelectorComponent.hpp b/LiteLoader/include/llapi/mc/GoalSelectorComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/GoalSelectorComponent.hpp rename to LiteLoader/include/llapi/mc/GoalSelectorComponent.hpp index 1bdac43..9cb7997 100644 --- a/LiteLoader/Header/MC/GoalSelectorComponent.hpp +++ b/LiteLoader/include/llapi/mc/GoalSelectorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GoalSelectorSystem.hpp b/LiteLoader/include/llapi/mc/GoalSelectorSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/GoalSelectorSystem.hpp rename to LiteLoader/include/llapi/mc/GoalSelectorSystem.hpp index 4aa8359..4d3f8e1 100644 --- a/LiteLoader/Header/MC/GoalSelectorSystem.hpp +++ b/LiteLoader/include/llapi/mc/GoalSelectorSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GoalSelectorUtility.hpp b/LiteLoader/include/llapi/mc/GoalSelectorUtility.hpp similarity index 93% rename from LiteLoader/Header/MC/GoalSelectorUtility.hpp rename to LiteLoader/include/llapi/mc/GoalSelectorUtility.hpp index 93a36fc..72a38b3 100644 --- a/LiteLoader/Header/MC/GoalSelectorUtility.hpp +++ b/LiteLoader/include/llapi/mc/GoalSelectorUtility.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GrantXPSubcomponent.hpp b/LiteLoader/include/llapi/mc/GrantXPSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/GrantXPSubcomponent.hpp rename to LiteLoader/include/llapi/mc/GrantXPSubcomponent.hpp index 4331179..c8cec6f 100644 --- a/LiteLoader/Header/MC/GrantXPSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/GrantXPSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GrassBlock.hpp b/LiteLoader/include/llapi/mc/GrassBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/GrassBlock.hpp rename to LiteLoader/include/llapi/mc/GrassBlock.hpp index fd695a0..dee89fb 100644 --- a/LiteLoader/Header/MC/GrassBlock.hpp +++ b/LiteLoader/include/llapi/mc/GrassBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GrassPathBlock.hpp b/LiteLoader/include/llapi/mc/GrassPathBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/GrassPathBlock.hpp rename to LiteLoader/include/llapi/mc/GrassPathBlock.hpp index 6e479cd..d2b9573 100644 --- a/LiteLoader/Header/MC/GrassPathBlock.hpp +++ b/LiteLoader/include/llapi/mc/GrassPathBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GravelBlock.hpp b/LiteLoader/include/llapi/mc/GravelBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/GravelBlock.hpp rename to LiteLoader/include/llapi/mc/GravelBlock.hpp index be5538b..c596e56 100644 --- a/LiteLoader/Header/MC/GravelBlock.hpp +++ b/LiteLoader/include/llapi/mc/GravelBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GrindstoneBlock.hpp b/LiteLoader/include/llapi/mc/GrindstoneBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/GrindstoneBlock.hpp rename to LiteLoader/include/llapi/mc/GrindstoneBlock.hpp index 09b267c..51cef32 100644 --- a/LiteLoader/Header/MC/GrindstoneBlock.hpp +++ b/LiteLoader/include/llapi/mc/GrindstoneBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GrindstoneContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/GrindstoneContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/GrindstoneContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/GrindstoneContainerManagerModel.hpp index 68c28d3..e2f8f77 100644 --- a/LiteLoader/Header/MC/GrindstoneContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/GrindstoneContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GroundOffsetDescription.hpp b/LiteLoader/include/llapi/mc/GroundOffsetDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/GroundOffsetDescription.hpp rename to LiteLoader/include/llapi/mc/GroundOffsetDescription.hpp index 5e99734..734b2e2 100644 --- a/LiteLoader/Header/MC/GroundOffsetDescription.hpp +++ b/LiteLoader/include/llapi/mc/GroundOffsetDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GroundedConstraint.hpp b/LiteLoader/include/llapi/mc/GroundedConstraint.hpp similarity index 96% rename from LiteLoader/Header/MC/GroundedConstraint.hpp rename to LiteLoader/include/llapi/mc/GroundedConstraint.hpp index 674c3ce..68576fb 100644 --- a/LiteLoader/Header/MC/GroundedConstraint.hpp +++ b/LiteLoader/include/llapi/mc/GroundedConstraint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GroupSizeDefinition.hpp b/LiteLoader/include/llapi/mc/GroupSizeDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/GroupSizeDefinition.hpp rename to LiteLoader/include/llapi/mc/GroupSizeDefinition.hpp index 305ed6b..6316b6a 100644 --- a/LiteLoader/Header/MC/GroupSizeDefinition.hpp +++ b/LiteLoader/include/llapi/mc/GroupSizeDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GroupSizeSystem.hpp b/LiteLoader/include/llapi/mc/GroupSizeSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/GroupSizeSystem.hpp rename to LiteLoader/include/llapi/mc/GroupSizeSystem.hpp index 5da6dea..9c44df2 100644 --- a/LiteLoader/Header/MC/GroupSizeSystem.hpp +++ b/LiteLoader/include/llapi/mc/GroupSizeSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GrowCropSystem.hpp b/LiteLoader/include/llapi/mc/GrowCropSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/GrowCropSystem.hpp rename to LiteLoader/include/llapi/mc/GrowCropSystem.hpp index aea4ea0..3cc19f6 100644 --- a/LiteLoader/Header/MC/GrowCropSystem.hpp +++ b/LiteLoader/include/llapi/mc/GrowCropSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Guardian.hpp b/LiteLoader/include/llapi/mc/Guardian.hpp similarity index 98% rename from LiteLoader/Header/MC/Guardian.hpp rename to LiteLoader/include/llapi/mc/Guardian.hpp index d03adae..56a6469 100644 --- a/LiteLoader/Header/MC/Guardian.hpp +++ b/LiteLoader/include/llapi/mc/Guardian.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/GuardianAttackDefinition.hpp b/LiteLoader/include/llapi/mc/GuardianAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/GuardianAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/GuardianAttackDefinition.hpp index be02a88..8154e56 100644 --- a/LiteLoader/Header/MC/GuardianAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/GuardianAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GuardianAttackGoal.hpp b/LiteLoader/include/llapi/mc/GuardianAttackGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/GuardianAttackGoal.hpp rename to LiteLoader/include/llapi/mc/GuardianAttackGoal.hpp index 2e66912..595e21f 100644 --- a/LiteLoader/Header/MC/GuardianAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/GuardianAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/GuiDataPickItemPacket.hpp b/LiteLoader/include/llapi/mc/GuiDataPickItemPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/GuiDataPickItemPacket.hpp rename to LiteLoader/include/llapi/mc/GuiDataPickItemPacket.hpp index a0520a2..eafc0e7 100644 --- a/LiteLoader/Header/MC/GuiDataPickItemPacket.hpp +++ b/LiteLoader/include/llapi/mc/GuiDataPickItemPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HangingActor.hpp b/LiteLoader/include/llapi/mc/HangingActor.hpp similarity index 98% rename from LiteLoader/Header/MC/HangingActor.hpp rename to LiteLoader/include/llapi/mc/HangingActor.hpp index 19966f6..cbe1d12 100644 --- a/LiteLoader/Header/MC/HangingActor.hpp +++ b/LiteLoader/include/llapi/mc/HangingActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HangingActorItem.hpp b/LiteLoader/include/llapi/mc/HangingActorItem.hpp similarity index 97% rename from LiteLoader/Header/MC/HangingActorItem.hpp rename to LiteLoader/include/llapi/mc/HangingActorItem.hpp index 9a8663a..6fd1f12 100644 --- a/LiteLoader/Header/MC/HangingActorItem.hpp +++ b/LiteLoader/include/llapi/mc/HangingActorItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HardcodedSpawnAreaRegistry.hpp b/LiteLoader/include/llapi/mc/HardcodedSpawnAreaRegistry.hpp similarity index 96% rename from LiteLoader/Header/MC/HardcodedSpawnAreaRegistry.hpp rename to LiteLoader/include/llapi/mc/HardcodedSpawnAreaRegistry.hpp index 1a8c6b5..288c4a4 100644 --- a/LiteLoader/Header/MC/HardcodedSpawnAreaRegistry.hpp +++ b/LiteLoader/include/llapi/mc/HardcodedSpawnAreaRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HarvestFarmBlockGoal.hpp b/LiteLoader/include/llapi/mc/HarvestFarmBlockGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/HarvestFarmBlockGoal.hpp rename to LiteLoader/include/llapi/mc/HarvestFarmBlockGoal.hpp index 428630a..27955ce 100644 --- a/LiteLoader/Header/MC/HarvestFarmBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/HarvestFarmBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HashedString.hpp b/LiteLoader/include/llapi/mc/HashedString.hpp similarity index 97% rename from LiteLoader/Header/MC/HashedString.hpp rename to LiteLoader/include/llapi/mc/HashedString.hpp index b0029aa..6acb35a 100644 --- a/LiteLoader/Header/MC/HashedString.hpp +++ b/LiteLoader/include/llapi/mc/HashedString.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HatchetItem.hpp b/LiteLoader/include/llapi/mc/HatchetItem.hpp similarity index 98% rename from LiteLoader/Header/MC/HatchetItem.hpp rename to LiteLoader/include/llapi/mc/HatchetItem.hpp index 46a80f7..314a482 100644 --- a/LiteLoader/Header/MC/HatchetItem.hpp +++ b/LiteLoader/include/llapi/mc/HatchetItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #include "DiggerItem.hpp" diff --git a/LiteLoader/Header/MC/HayBlockBlock.hpp b/LiteLoader/include/llapi/mc/HayBlockBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/HayBlockBlock.hpp rename to LiteLoader/include/llapi/mc/HayBlockBlock.hpp index 5112666..66e31a0 100644 --- a/LiteLoader/Header/MC/HayBlockBlock.hpp +++ b/LiteLoader/include/llapi/mc/HayBlockBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RotatedPillarBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HealableComponent.hpp b/LiteLoader/include/llapi/mc/HealableComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/HealableComponent.hpp rename to LiteLoader/include/llapi/mc/HealableComponent.hpp index 5ab8896..1fde425 100644 --- a/LiteLoader/Header/MC/HealableComponent.hpp +++ b/LiteLoader/include/llapi/mc/HealableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HealableDefinition.hpp b/LiteLoader/include/llapi/mc/HealableDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/HealableDefinition.hpp rename to LiteLoader/include/llapi/mc/HealableDefinition.hpp index ebe0350..f3aa35e 100644 --- a/LiteLoader/Header/MC/HealableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/HealableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/HealthAttributeDelegate.hpp b/LiteLoader/include/llapi/mc/HealthAttributeDelegate.hpp similarity index 96% rename from LiteLoader/Header/MC/HealthAttributeDelegate.hpp rename to LiteLoader/include/llapi/mc/HealthAttributeDelegate.hpp index f71c0a5..9bd1f6a 100644 --- a/LiteLoader/Header/MC/HealthAttributeDelegate.hpp +++ b/LiteLoader/include/llapi/mc/HealthAttributeDelegate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HeavyBlock.hpp b/LiteLoader/include/llapi/mc/HeavyBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/HeavyBlock.hpp rename to LiteLoader/include/llapi/mc/HeavyBlock.hpp index eb0c998..3c474e2 100644 --- a/LiteLoader/Header/MC/HeavyBlock.hpp +++ b/LiteLoader/include/llapi/mc/HeavyBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HellFireFeature.hpp b/LiteLoader/include/llapi/mc/HellFireFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/HellFireFeature.hpp rename to LiteLoader/include/llapi/mc/HellFireFeature.hpp index 9826476..3b9bb04 100644 --- a/LiteLoader/Header/MC/HellFireFeature.hpp +++ b/LiteLoader/include/llapi/mc/HellFireFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HellSpringFeature.hpp b/LiteLoader/include/llapi/mc/HellSpringFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/HellSpringFeature.hpp rename to LiteLoader/include/llapi/mc/HellSpringFeature.hpp index 3e50d8b..57655a4 100644 --- a/LiteLoader/Header/MC/HellSpringFeature.hpp +++ b/LiteLoader/include/llapi/mc/HellSpringFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HelpCommand.hpp b/LiteLoader/include/llapi/mc/HelpCommand.hpp similarity index 97% rename from LiteLoader/Header/MC/HelpCommand.hpp rename to LiteLoader/include/llapi/mc/HelpCommand.hpp index 7ffeb62..7fa6a1b 100644 --- a/LiteLoader/Header/MC/HelpCommand.hpp +++ b/LiteLoader/include/llapi/mc/HelpCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HideComponent.hpp b/LiteLoader/include/llapi/mc/HideComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/HideComponent.hpp rename to LiteLoader/include/llapi/mc/HideComponent.hpp index 9d9c63e..af34565 100644 --- a/LiteLoader/Header/MC/HideComponent.hpp +++ b/LiteLoader/include/llapi/mc/HideComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HideDescription.hpp b/LiteLoader/include/llapi/mc/HideDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/HideDescription.hpp rename to LiteLoader/include/llapi/mc/HideDescription.hpp index ba333b5..17974c8 100644 --- a/LiteLoader/Header/MC/HideDescription.hpp +++ b/LiteLoader/include/llapi/mc/HideDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HideGoal.hpp b/LiteLoader/include/llapi/mc/HideGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/HideGoal.hpp rename to LiteLoader/include/llapi/mc/HideGoal.hpp index e6364d4..78d8f0f 100644 --- a/LiteLoader/Header/MC/HideGoal.hpp +++ b/LiteLoader/include/llapi/mc/HideGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveToPOIGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HistoricPredictionData.hpp b/LiteLoader/include/llapi/mc/HistoricPredictionData.hpp similarity index 95% rename from LiteLoader/Header/MC/HistoricPredictionData.hpp rename to LiteLoader/include/llapi/mc/HistoricPredictionData.hpp index 99710e1..3f3f07f 100644 --- a/LiteLoader/Header/MC/HistoricPredictionData.hpp +++ b/LiteLoader/include/llapi/mc/HistoricPredictionData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HitResult.hpp b/LiteLoader/include/llapi/mc/HitResult.hpp similarity index 98% rename from LiteLoader/Header/MC/HitResult.hpp rename to LiteLoader/include/llapi/mc/HitResult.hpp index 6091e8f..ead0658 100644 --- a/LiteLoader/Header/MC/HitResult.hpp +++ b/LiteLoader/include/llapi/mc/HitResult.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/HitboxComponent.hpp b/LiteLoader/include/llapi/mc/HitboxComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/HitboxComponent.hpp rename to LiteLoader/include/llapi/mc/HitboxComponent.hpp index 25bb870..5370e45 100644 --- a/LiteLoader/Header/MC/HitboxComponent.hpp +++ b/LiteLoader/include/llapi/mc/HitboxComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HitboxDefinition.hpp b/LiteLoader/include/llapi/mc/HitboxDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/HitboxDefinition.hpp rename to LiteLoader/include/llapi/mc/HitboxDefinition.hpp index bd76e5a..9a2d0b4 100644 --- a/LiteLoader/Header/MC/HitboxDefinition.hpp +++ b/LiteLoader/include/llapi/mc/HitboxDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HoeItem.hpp b/LiteLoader/include/llapi/mc/HoeItem.hpp similarity index 98% rename from LiteLoader/Header/MC/HoeItem.hpp rename to LiteLoader/include/llapi/mc/HoeItem.hpp index 6fcaeb3..b34223e 100644 --- a/LiteLoader/Header/MC/HoeItem.hpp +++ b/LiteLoader/include/llapi/mc/HoeItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #include "DiggerItem.hpp" diff --git a/LiteLoader/Header/MC/HoldGroundGoal.hpp b/LiteLoader/include/llapi/mc/HoldGroundGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/HoldGroundGoal.hpp rename to LiteLoader/include/llapi/mc/HoldGroundGoal.hpp index 77a7934..052827d 100644 --- a/LiteLoader/Header/MC/HoldGroundGoal.hpp +++ b/LiteLoader/include/llapi/mc/HoldGroundGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HomeComponent.hpp b/LiteLoader/include/llapi/mc/HomeComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/HomeComponent.hpp rename to LiteLoader/include/llapi/mc/HomeComponent.hpp index 9309b5d..c69501f 100644 --- a/LiteLoader/Header/MC/HomeComponent.hpp +++ b/LiteLoader/include/llapi/mc/HomeComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HoneyBlock.hpp b/LiteLoader/include/llapi/mc/HoneyBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/HoneyBlock.hpp rename to LiteLoader/include/llapi/mc/HoneyBlock.hpp index 838a03d..8e47981 100644 --- a/LiteLoader/Header/MC/HoneyBlock.hpp +++ b/LiteLoader/include/llapi/mc/HoneyBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HoneycombBlock.hpp b/LiteLoader/include/llapi/mc/HoneycombBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/HoneycombBlock.hpp rename to LiteLoader/include/llapi/mc/HoneycombBlock.hpp index d5ed0eb..8500010 100644 --- a/LiteLoader/Header/MC/HoneycombBlock.hpp +++ b/LiteLoader/include/llapi/mc/HoneycombBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HopMoveControl.hpp b/LiteLoader/include/llapi/mc/HopMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/HopMoveControl.hpp rename to LiteLoader/include/llapi/mc/HopMoveControl.hpp index ce71c0e..f82cbd6 100644 --- a/LiteLoader/Header/MC/HopMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/HopMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Hopper.hpp b/LiteLoader/include/llapi/mc/Hopper.hpp similarity index 98% rename from LiteLoader/Header/MC/Hopper.hpp rename to LiteLoader/include/llapi/mc/Hopper.hpp index 152f7ca..13259e0 100644 --- a/LiteLoader/Header/MC/Hopper.hpp +++ b/LiteLoader/include/llapi/mc/Hopper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HopperBlock.hpp b/LiteLoader/include/llapi/mc/HopperBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/HopperBlock.hpp rename to LiteLoader/include/llapi/mc/HopperBlock.hpp index e68d836..2719d0b 100644 --- a/LiteLoader/Header/MC/HopperBlock.hpp +++ b/LiteLoader/include/llapi/mc/HopperBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HopperBlockActor.hpp b/LiteLoader/include/llapi/mc/HopperBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/HopperBlockActor.hpp rename to LiteLoader/include/llapi/mc/HopperBlockActor.hpp index 78f871b..8f26ef8 100644 --- a/LiteLoader/Header/MC/HopperBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/HopperBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HopperComponent.hpp b/LiteLoader/include/llapi/mc/HopperComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/HopperComponent.hpp rename to LiteLoader/include/llapi/mc/HopperComponent.hpp index 30338c6..f371bb4 100644 --- a/LiteLoader/Header/MC/HopperComponent.hpp +++ b/LiteLoader/include/llapi/mc/HopperComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HopperContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/HopperContainerManagerModel.hpp similarity index 96% rename from LiteLoader/Header/MC/HopperContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/HopperContainerManagerModel.hpp index dae13b7..ae9a9fc 100644 --- a/LiteLoader/Header/MC/HopperContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/HopperContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LevelContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HopperSystem.hpp b/LiteLoader/include/llapi/mc/HopperSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/HopperSystem.hpp rename to LiteLoader/include/llapi/mc/HopperSystem.hpp index 421050d..d76ec1c 100644 --- a/LiteLoader/Header/MC/HopperSystem.hpp +++ b/LiteLoader/include/llapi/mc/HopperSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Horse.hpp b/LiteLoader/include/llapi/mc/Horse.hpp similarity index 99% rename from LiteLoader/Header/MC/Horse.hpp rename to LiteLoader/include/llapi/mc/Horse.hpp index fdc971e..0cb561c 100644 --- a/LiteLoader/Header/MC/Horse.hpp +++ b/LiteLoader/include/llapi/mc/Horse.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/HorseArmorItem.hpp b/LiteLoader/include/llapi/mc/HorseArmorItem.hpp similarity index 98% rename from LiteLoader/Header/MC/HorseArmorItem.hpp rename to LiteLoader/include/llapi/mc/HorseArmorItem.hpp index bc0ada3..6c9722f 100644 --- a/LiteLoader/Header/MC/HorseArmorItem.hpp +++ b/LiteLoader/include/llapi/mc/HorseArmorItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HorseContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/HorseContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/HorseContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/HorseContainerManagerModel.hpp index e53c3b6..fcabbed 100644 --- a/LiteLoader/Header/MC/HorseContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/HorseContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LevelContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HoverGoal.hpp b/LiteLoader/include/llapi/mc/HoverGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/HoverGoal.hpp rename to LiteLoader/include/llapi/mc/HoverGoal.hpp index 53f4eec..7f07f7a 100644 --- a/LiteLoader/Header/MC/HoverGoal.hpp +++ b/LiteLoader/include/llapi/mc/HoverGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HoverMoveControl.hpp b/LiteLoader/include/llapi/mc/HoverMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/HoverMoveControl.hpp rename to LiteLoader/include/llapi/mc/HoverMoveControl.hpp index 0bc43f7..0a4eaed 100644 --- a/LiteLoader/Header/MC/HoverMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/HoverMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HoverPathNavigation.hpp b/LiteLoader/include/llapi/mc/HoverPathNavigation.hpp similarity index 97% rename from LiteLoader/Header/MC/HoverPathNavigation.hpp rename to LiteLoader/include/llapi/mc/HoverPathNavigation.hpp index 7e8c6f4..8f71871 100644 --- a/LiteLoader/Header/MC/HoverPathNavigation.hpp +++ b/LiteLoader/include/llapi/mc/HoverPathNavigation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PathNavigation.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HttpHeaders.hpp b/LiteLoader/include/llapi/mc/HttpHeaders.hpp similarity index 96% rename from LiteLoader/Header/MC/HttpHeaders.hpp rename to LiteLoader/include/llapi/mc/HttpHeaders.hpp index 8a72f1c..7b56120 100644 --- a/LiteLoader/Header/MC/HttpHeaders.hpp +++ b/LiteLoader/include/llapi/mc/HttpHeaders.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HudContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/HudContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/HudContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/HudContainerManagerModel.hpp index 7554112..e80cc40 100644 --- a/LiteLoader/Header/MC/HudContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/HudContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HudContainerModel.hpp b/LiteLoader/include/llapi/mc/HudContainerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/HudContainerModel.hpp rename to LiteLoader/include/llapi/mc/HudContainerModel.hpp index d3340af..6462259 100644 --- a/LiteLoader/Header/MC/HudContainerModel.hpp +++ b/LiteLoader/include/llapi/mc/HudContainerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HudScreenCapabilities.hpp b/LiteLoader/include/llapi/mc/HudScreenCapabilities.hpp similarity index 96% rename from LiteLoader/Header/MC/HudScreenCapabilities.hpp rename to LiteLoader/include/llapi/mc/HudScreenCapabilities.hpp index ce68be2..ff55a65 100644 --- a/LiteLoader/Header/MC/HudScreenCapabilities.hpp +++ b/LiteLoader/include/llapi/mc/HudScreenCapabilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HugeFungusFeature.hpp b/LiteLoader/include/llapi/mc/HugeFungusFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/HugeFungusFeature.hpp rename to LiteLoader/include/llapi/mc/HugeFungusFeature.hpp index 6628270..20c167c 100644 --- a/LiteLoader/Header/MC/HugeFungusFeature.hpp +++ b/LiteLoader/include/llapi/mc/HugeFungusFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HugeMushroomBlock.hpp b/LiteLoader/include/llapi/mc/HugeMushroomBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/HugeMushroomBlock.hpp rename to LiteLoader/include/llapi/mc/HugeMushroomBlock.hpp index 583125d..2cea0bd 100644 --- a/LiteLoader/Header/MC/HugeMushroomBlock.hpp +++ b/LiteLoader/include/llapi/mc/HugeMushroomBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HugeMushroomFeature.hpp b/LiteLoader/include/llapi/mc/HugeMushroomFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/HugeMushroomFeature.hpp rename to LiteLoader/include/llapi/mc/HugeMushroomFeature.hpp index 93511a2..0828e38 100644 --- a/LiteLoader/Header/MC/HugeMushroomFeature.hpp +++ b/LiteLoader/include/llapi/mc/HugeMushroomFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HumanoidMonster.hpp b/LiteLoader/include/llapi/mc/HumanoidMonster.hpp similarity index 98% rename from LiteLoader/Header/MC/HumanoidMonster.hpp rename to LiteLoader/include/llapi/mc/HumanoidMonster.hpp index 5859964..ba8c84c 100644 --- a/LiteLoader/Header/MC/HumanoidMonster.hpp +++ b/LiteLoader/include/llapi/mc/HumanoidMonster.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/HungerAttributeDelegate.hpp b/LiteLoader/include/llapi/mc/HungerAttributeDelegate.hpp similarity index 96% rename from LiteLoader/Header/MC/HungerAttributeDelegate.hpp rename to LiteLoader/include/llapi/mc/HungerAttributeDelegate.hpp index 5176b2e..3ca651d 100644 --- a/LiteLoader/Header/MC/HungerAttributeDelegate.hpp +++ b/LiteLoader/include/llapi/mc/HungerAttributeDelegate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "AttributeInstanceDelegate.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HurtArmorPacket.hpp b/LiteLoader/include/llapi/mc/HurtArmorPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/HurtArmorPacket.hpp rename to LiteLoader/include/llapi/mc/HurtArmorPacket.hpp index 23e7ddd..c8b4949 100644 --- a/LiteLoader/Header/MC/HurtArmorPacket.hpp +++ b/LiteLoader/include/llapi/mc/HurtArmorPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HurtByTargetGoal.hpp b/LiteLoader/include/llapi/mc/HurtByTargetGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/HurtByTargetGoal.hpp rename to LiteLoader/include/llapi/mc/HurtByTargetGoal.hpp index d34c990..274072e 100644 --- a/LiteLoader/Header/MC/HurtByTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/HurtByTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HurtOnConditionDefinition.hpp b/LiteLoader/include/llapi/mc/HurtOnConditionDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/HurtOnConditionDefinition.hpp rename to LiteLoader/include/llapi/mc/HurtOnConditionDefinition.hpp index 979314b..90dbf9b 100644 --- a/LiteLoader/Header/MC/HurtOnConditionDefinition.hpp +++ b/LiteLoader/include/llapi/mc/HurtOnConditionDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HurtOnConditionSystem.hpp b/LiteLoader/include/llapi/mc/HurtOnConditionSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/HurtOnConditionSystem.hpp rename to LiteLoader/include/llapi/mc/HurtOnConditionSystem.hpp index e7006b0..8044d42 100644 --- a/LiteLoader/Header/MC/HurtOnConditionSystem.hpp +++ b/LiteLoader/include/llapi/mc/HurtOnConditionSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/HurtOwnerSubcomponent.hpp b/LiteLoader/include/llapi/mc/HurtOwnerSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/HurtOwnerSubcomponent.hpp rename to LiteLoader/include/llapi/mc/HurtOwnerSubcomponent.hpp index 38b5b16..b0c0535 100644 --- a/LiteLoader/Header/MC/HurtOwnerSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/HurtOwnerSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/I18n.hpp b/LiteLoader/include/llapi/mc/I18n.hpp similarity index 99% rename from LiteLoader/Header/MC/I18n.hpp rename to LiteLoader/include/llapi/mc/I18n.hpp index cb50c46..7ca4a5c 100644 --- a/LiteLoader/Header/MC/I18n.hpp +++ b/LiteLoader/include/llapi/mc/I18n.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "Core.hpp" diff --git a/LiteLoader/Header/MC/I18nObserver.hpp b/LiteLoader/include/llapi/mc/I18nObserver.hpp similarity index 94% rename from LiteLoader/Header/MC/I18nObserver.hpp rename to LiteLoader/include/llapi/mc/I18nObserver.hpp index 8b564fe..22de914 100644 --- a/LiteLoader/Header/MC/I18nObserver.hpp +++ b/LiteLoader/include/llapi/mc/I18nObserver.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IContainerManager.hpp b/LiteLoader/include/llapi/mc/IContainerManager.hpp similarity index 94% rename from LiteLoader/Header/MC/IContainerManager.hpp rename to LiteLoader/include/llapi/mc/IContainerManager.hpp index d9fcaf9..8de2fac 100644 --- a/LiteLoader/Header/MC/IContainerManager.hpp +++ b/LiteLoader/include/llapi/mc/IContainerManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IContentKeyProvider.hpp b/LiteLoader/include/llapi/mc/IContentKeyProvider.hpp similarity index 96% rename from LiteLoader/Header/MC/IContentKeyProvider.hpp rename to LiteLoader/include/llapi/mc/IContentKeyProvider.hpp index d1d4208..1e71936 100644 --- a/LiteLoader/Header/MC/IContentKeyProvider.hpp +++ b/LiteLoader/include/llapi/mc/IContentKeyProvider.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IDataInput.hpp b/LiteLoader/include/llapi/mc/IDataInput.hpp similarity index 94% rename from LiteLoader/Header/MC/IDataInput.hpp rename to LiteLoader/include/llapi/mc/IDataInput.hpp index f36fa07..80401d7 100644 --- a/LiteLoader/Header/MC/IDataInput.hpp +++ b/LiteLoader/include/llapi/mc/IDataInput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IDataOutput.hpp b/LiteLoader/include/llapi/mc/IDataOutput.hpp similarity index 94% rename from LiteLoader/Header/MC/IDataOutput.hpp rename to LiteLoader/include/llapi/mc/IDataOutput.hpp index 1e75927..579ee8a 100644 --- a/LiteLoader/Header/MC/IDataOutput.hpp +++ b/LiteLoader/include/llapi/mc/IDataOutput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IDefinitionInstance.hpp b/LiteLoader/include/llapi/mc/IDefinitionInstance.hpp similarity index 96% rename from LiteLoader/Header/MC/IDefinitionInstance.hpp rename to LiteLoader/include/llapi/mc/IDefinitionInstance.hpp index fc44b06..dab8839 100644 --- a/LiteLoader/Header/MC/IDefinitionInstance.hpp +++ b/LiteLoader/include/llapi/mc/IDefinitionInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IDefinitionSerializer.hpp b/LiteLoader/include/llapi/mc/IDefinitionSerializer.hpp similarity index 95% rename from LiteLoader/Header/MC/IDefinitionSerializer.hpp rename to LiteLoader/include/llapi/mc/IDefinitionSerializer.hpp index 12841bc..4df2a5f 100644 --- a/LiteLoader/Header/MC/IDefinitionSerializer.hpp +++ b/LiteLoader/include/llapi/mc/IDefinitionSerializer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IFileAccess.hpp b/LiteLoader/include/llapi/mc/IFileAccess.hpp similarity index 94% rename from LiteLoader/Header/MC/IFileAccess.hpp rename to LiteLoader/include/llapi/mc/IFileAccess.hpp index e1775e0..9c80227 100644 --- a/LiteLoader/Header/MC/IFileAccess.hpp +++ b/LiteLoader/include/llapi/mc/IFileAccess.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IFileChunkUploader.hpp b/LiteLoader/include/llapi/mc/IFileChunkUploader.hpp similarity index 98% rename from LiteLoader/Header/MC/IFileChunkUploader.hpp rename to LiteLoader/include/llapi/mc/IFileChunkUploader.hpp index 6d479e0..5250a18 100644 --- a/LiteLoader/Header/MC/IFileChunkUploader.hpp +++ b/LiteLoader/include/llapi/mc/IFileChunkUploader.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IFilePicker.hpp b/LiteLoader/include/llapi/mc/IFilePicker.hpp similarity index 94% rename from LiteLoader/Header/MC/IFilePicker.hpp rename to LiteLoader/include/llapi/mc/IFilePicker.hpp index c56726b..4f97c38 100644 --- a/LiteLoader/Header/MC/IFilePicker.hpp +++ b/LiteLoader/include/llapi/mc/IFilePicker.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IFileReadAccess.hpp b/LiteLoader/include/llapi/mc/IFileReadAccess.hpp similarity index 94% rename from LiteLoader/Header/MC/IFileReadAccess.hpp rename to LiteLoader/include/llapi/mc/IFileReadAccess.hpp index 8c340ce..f3ef5aa 100644 --- a/LiteLoader/Header/MC/IFileReadAccess.hpp +++ b/LiteLoader/include/llapi/mc/IFileReadAccess.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IFileWriteAccess.hpp b/LiteLoader/include/llapi/mc/IFileWriteAccess.hpp similarity index 94% rename from LiteLoader/Header/MC/IFileWriteAccess.hpp rename to LiteLoader/include/llapi/mc/IFileWriteAccess.hpp index ef64e9d..63539e2 100644 --- a/LiteLoader/Header/MC/IFileWriteAccess.hpp +++ b/LiteLoader/include/llapi/mc/IFileWriteAccess.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IJsonSerializable.hpp b/LiteLoader/include/llapi/mc/IJsonSerializable.hpp similarity index 94% rename from LiteLoader/Header/MC/IJsonSerializable.hpp rename to LiteLoader/include/llapi/mc/IJsonSerializable.hpp index df578ab..4325ff8 100644 --- a/LiteLoader/Header/MC/IJsonSerializable.hpp +++ b/LiteLoader/include/llapi/mc/IJsonSerializable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IMinecraftApp.hpp b/LiteLoader/include/llapi/mc/IMinecraftApp.hpp similarity index 94% rename from LiteLoader/Header/MC/IMinecraftApp.hpp rename to LiteLoader/include/llapi/mc/IMinecraftApp.hpp index 932f558..d1190bb 100644 --- a/LiteLoader/Header/MC/IMinecraftApp.hpp +++ b/LiteLoader/include/llapi/mc/IMinecraftApp.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IMinecraftEventing.hpp b/LiteLoader/include/llapi/mc/IMinecraftEventing.hpp similarity index 95% rename from LiteLoader/Header/MC/IMinecraftEventing.hpp rename to LiteLoader/include/llapi/mc/IMinecraftEventing.hpp index 3359e72..14bb397 100644 --- a/LiteLoader/Header/MC/IMinecraftEventing.hpp +++ b/LiteLoader/include/llapi/mc/IMinecraftEventing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IPackTelemetry.hpp b/LiteLoader/include/llapi/mc/IPackTelemetry.hpp similarity index 94% rename from LiteLoader/Header/MC/IPackTelemetry.hpp rename to LiteLoader/include/llapi/mc/IPackTelemetry.hpp index 9332b8b..c262c0b 100644 --- a/LiteLoader/Header/MC/IPackTelemetry.hpp +++ b/LiteLoader/include/llapi/mc/IPackTelemetry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IPacketHandlerDispatcher.hpp b/LiteLoader/include/llapi/mc/IPacketHandlerDispatcher.hpp similarity index 95% rename from LiteLoader/Header/MC/IPacketHandlerDispatcher.hpp rename to LiteLoader/include/llapi/mc/IPacketHandlerDispatcher.hpp index f780013..06c4a4b 100644 --- a/LiteLoader/Header/MC/IPacketHandlerDispatcher.hpp +++ b/LiteLoader/include/llapi/mc/IPacketHandlerDispatcher.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ISecureStorageKeySystem.hpp b/LiteLoader/include/llapi/mc/ISecureStorageKeySystem.hpp similarity index 95% rename from LiteLoader/Header/MC/ISecureStorageKeySystem.hpp rename to LiteLoader/include/llapi/mc/ISecureStorageKeySystem.hpp index fe9760d..b8db06d 100644 --- a/LiteLoader/Header/MC/ISecureStorageKeySystem.hpp +++ b/LiteLoader/include/llapi/mc/ISecureStorageKeySystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ISubChunkBlockStoragePaletted.hpp b/LiteLoader/include/llapi/mc/ISubChunkBlockStoragePaletted.hpp similarity index 95% rename from LiteLoader/Header/MC/ISubChunkBlockStoragePaletted.hpp rename to LiteLoader/include/llapi/mc/ISubChunkBlockStoragePaletted.hpp index f5b9fe8..9ead9ae 100644 --- a/LiteLoader/Header/MC/ISubChunkBlockStoragePaletted.hpp +++ b/LiteLoader/include/llapi/mc/ISubChunkBlockStoragePaletted.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ITextObject.hpp b/LiteLoader/include/llapi/mc/ITextObject.hpp similarity index 96% rename from LiteLoader/Header/MC/ITextObject.hpp rename to LiteLoader/include/llapi/mc/ITextObject.hpp index 2779de9..760a858 100644 --- a/LiteLoader/Header/MC/ITextObject.hpp +++ b/LiteLoader/include/llapi/mc/ITextObject.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ITickingArea.hpp b/LiteLoader/include/llapi/mc/ITickingArea.hpp similarity index 95% rename from LiteLoader/Header/MC/ITickingArea.hpp rename to LiteLoader/include/llapi/mc/ITickingArea.hpp index 6204b5f..3756a70 100644 --- a/LiteLoader/Header/MC/ITickingArea.hpp +++ b/LiteLoader/include/llapi/mc/ITickingArea.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ITickingAreaView.hpp b/LiteLoader/include/llapi/mc/ITickingAreaView.hpp similarity index 94% rename from LiteLoader/Header/MC/ITickingAreaView.hpp rename to LiteLoader/include/llapi/mc/ITickingAreaView.hpp index 500bc60..26aced0 100644 --- a/LiteLoader/Header/MC/ITickingAreaView.hpp +++ b/LiteLoader/include/llapi/mc/ITickingAreaView.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ITreeFeature.hpp b/LiteLoader/include/llapi/mc/ITreeFeature.hpp similarity index 94% rename from LiteLoader/Header/MC/ITreeFeature.hpp rename to LiteLoader/include/llapi/mc/ITreeFeature.hpp index 9b6124b..e587e17 100644 --- a/LiteLoader/Header/MC/ITreeFeature.hpp +++ b/LiteLoader/include/llapi/mc/ITreeFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IWebviewTelemetry.hpp b/LiteLoader/include/llapi/mc/IWebviewTelemetry.hpp similarity index 96% rename from LiteLoader/Header/MC/IWebviewTelemetry.hpp rename to LiteLoader/include/llapi/mc/IWebviewTelemetry.hpp index af20795..64e57fa 100644 --- a/LiteLoader/Header/MC/IWebviewTelemetry.hpp +++ b/LiteLoader/include/llapi/mc/IWebviewTelemetry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IceBlock.hpp b/LiteLoader/include/llapi/mc/IceBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/IceBlock.hpp rename to LiteLoader/include/llapi/mc/IceBlock.hpp index cd51ab5..bda1a4d 100644 --- a/LiteLoader/Header/MC/IceBlock.hpp +++ b/LiteLoader/include/llapi/mc/IceBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IceBombItem.hpp b/LiteLoader/include/llapi/mc/IceBombItem.hpp similarity index 98% rename from LiteLoader/Header/MC/IceBombItem.hpp rename to LiteLoader/include/llapi/mc/IceBombItem.hpp index fcb743c..323c3c1 100644 --- a/LiteLoader/Header/MC/IceBombItem.hpp +++ b/LiteLoader/include/llapi/mc/IceBombItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IcePatchFeature.hpp b/LiteLoader/include/llapi/mc/IcePatchFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/IcePatchFeature.hpp rename to LiteLoader/include/llapi/mc/IcePatchFeature.hpp index 7b50224..b0b2be0 100644 --- a/LiteLoader/Header/MC/IcePatchFeature.hpp +++ b/LiteLoader/include/llapi/mc/IcePatchFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IceSpikeFeature.hpp b/LiteLoader/include/llapi/mc/IceSpikeFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/IceSpikeFeature.hpp rename to LiteLoader/include/llapi/mc/IceSpikeFeature.hpp index 3b0faef..589ace3 100644 --- a/LiteLoader/Header/MC/IceSpikeFeature.hpp +++ b/LiteLoader/include/llapi/mc/IceSpikeFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IcebergFeature.hpp b/LiteLoader/include/llapi/mc/IcebergFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/IcebergFeature.hpp rename to LiteLoader/include/llapi/mc/IcebergFeature.hpp index 28997c6..e94dfab 100644 --- a/LiteLoader/Header/MC/IcebergFeature.hpp +++ b/LiteLoader/include/llapi/mc/IcebergFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IdentifierDescription.hpp b/LiteLoader/include/llapi/mc/IdentifierDescription.hpp similarity index 95% rename from LiteLoader/Header/MC/IdentifierDescription.hpp rename to LiteLoader/include/llapi/mc/IdentifierDescription.hpp index 62257c1..b48e9f8 100644 --- a/LiteLoader/Header/MC/IdentifierDescription.hpp +++ b/LiteLoader/include/llapi/mc/IdentifierDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IdentifierResult.hpp b/LiteLoader/include/llapi/mc/IdentifierResult.hpp similarity index 95% rename from LiteLoader/Header/MC/IdentifierResult.hpp rename to LiteLoader/include/llapi/mc/IdentifierResult.hpp index 5500365..257bd6e 100644 --- a/LiteLoader/Header/MC/IdentifierResult.hpp +++ b/LiteLoader/include/llapi/mc/IdentifierResult.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IdentityDefinition.hpp b/LiteLoader/include/llapi/mc/IdentityDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/IdentityDefinition.hpp rename to LiteLoader/include/llapi/mc/IdentityDefinition.hpp index 8543938..d2730e6 100644 --- a/LiteLoader/Header/MC/IdentityDefinition.hpp +++ b/LiteLoader/include/llapi/mc/IdentityDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IdentityDictionary.hpp b/LiteLoader/include/llapi/mc/IdentityDictionary.hpp similarity index 96% rename from LiteLoader/Header/MC/IdentityDictionary.hpp rename to LiteLoader/include/llapi/mc/IdentityDictionary.hpp index f3fe66b..56965ba 100644 --- a/LiteLoader/Header/MC/IdentityDictionary.hpp +++ b/LiteLoader/include/llapi/mc/IdentityDictionary.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IdleState.hpp b/LiteLoader/include/llapi/mc/IdleState.hpp similarity index 95% rename from LiteLoader/Header/MC/IdleState.hpp rename to LiteLoader/include/llapi/mc/IdleState.hpp index 5222344..3d62684 100644 --- a/LiteLoader/Header/MC/IdleState.hpp +++ b/LiteLoader/include/llapi/mc/IdleState.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PetSleepWithOwnerState.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Igloo.hpp b/LiteLoader/include/llapi/mc/Igloo.hpp similarity index 97% rename from LiteLoader/Header/MC/Igloo.hpp rename to LiteLoader/include/llapi/mc/Igloo.hpp index 976358a..b064783 100644 --- a/LiteLoader/Header/MC/Igloo.hpp +++ b/LiteLoader/include/llapi/mc/Igloo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IgniteSubcomponent.hpp b/LiteLoader/include/llapi/mc/IgniteSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/IgniteSubcomponent.hpp rename to LiteLoader/include/llapi/mc/IgniteSubcomponent.hpp index b466efb..a884e8c 100644 --- a/LiteLoader/Header/MC/IgniteSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/IgniteSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IllagerBeast.hpp b/LiteLoader/include/llapi/mc/IllagerBeast.hpp similarity index 98% rename from LiteLoader/Header/MC/IllagerBeast.hpp rename to LiteLoader/include/llapi/mc/IllagerBeast.hpp index 81a442f..3af8e11 100644 --- a/LiteLoader/Header/MC/IllagerBeast.hpp +++ b/LiteLoader/include/llapi/mc/IllagerBeast.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/IllagerBeastBlockedComponent.hpp b/LiteLoader/include/llapi/mc/IllagerBeastBlockedComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/IllagerBeastBlockedComponent.hpp rename to LiteLoader/include/llapi/mc/IllagerBeastBlockedComponent.hpp index 12b69b7..e4d331a 100644 --- a/LiteLoader/Header/MC/IllagerBeastBlockedComponent.hpp +++ b/LiteLoader/include/llapi/mc/IllagerBeastBlockedComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IllagerBeastBlockedDescription.hpp b/LiteLoader/include/llapi/mc/IllagerBeastBlockedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IllagerBeastBlockedDescription.hpp rename to LiteLoader/include/llapi/mc/IllagerBeastBlockedDescription.hpp index efee009..e1b3790 100644 --- a/LiteLoader/Header/MC/IllagerBeastBlockedDescription.hpp +++ b/LiteLoader/include/llapi/mc/IllagerBeastBlockedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ImmutableWorldCommand.hpp b/LiteLoader/include/llapi/mc/ImmutableWorldCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ImmutableWorldCommand.hpp rename to LiteLoader/include/llapi/mc/ImmutableWorldCommand.hpp index 6942179..c152b41 100644 --- a/LiteLoader/Header/MC/ImmutableWorldCommand.hpp +++ b/LiteLoader/include/llapi/mc/ImmutableWorldCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ImpactDamageSubcomponent.hpp b/LiteLoader/include/llapi/mc/ImpactDamageSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/ImpactDamageSubcomponent.hpp rename to LiteLoader/include/llapi/mc/ImpactDamageSubcomponent.hpp index cfc29c7..85608c4 100644 --- a/LiteLoader/Header/MC/ImpactDamageSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/ImpactDamageSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ImprovedNoise.hpp b/LiteLoader/include/llapi/mc/ImprovedNoise.hpp similarity index 96% rename from LiteLoader/Header/MC/ImprovedNoise.hpp rename to LiteLoader/include/llapi/mc/ImprovedNoise.hpp index fa5e450..640fab9 100644 --- a/LiteLoader/Header/MC/ImprovedNoise.hpp +++ b/LiteLoader/include/llapi/mc/ImprovedNoise.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InMemoryEnv.hpp b/LiteLoader/include/llapi/mc/InMemoryEnv.hpp similarity index 98% rename from LiteLoader/Header/MC/InMemoryEnv.hpp rename to LiteLoader/include/llapi/mc/InMemoryEnv.hpp index 2858b60..c557484 100644 --- a/LiteLoader/Header/MC/InMemoryEnv.hpp +++ b/LiteLoader/include/llapi/mc/InMemoryEnv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InMemoryFile.hpp b/LiteLoader/include/llapi/mc/InMemoryFile.hpp similarity index 96% rename from LiteLoader/Header/MC/InMemoryFile.hpp rename to LiteLoader/include/llapi/mc/InMemoryFile.hpp index 6430115..7f162cc 100644 --- a/LiteLoader/Header/MC/InMemoryFile.hpp +++ b/LiteLoader/include/llapi/mc/InMemoryFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InMemoryFileStorage.hpp b/LiteLoader/include/llapi/mc/InMemoryFileStorage.hpp similarity index 97% rename from LiteLoader/Header/MC/InMemoryFileStorage.hpp rename to LiteLoader/include/llapi/mc/InMemoryFileStorage.hpp index 561de8f..037f7de 100644 --- a/LiteLoader/Header/MC/InMemoryFileStorage.hpp +++ b/LiteLoader/include/llapi/mc/InMemoryFileStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InMemoryRandomAccessFile.hpp b/LiteLoader/include/llapi/mc/InMemoryRandomAccessFile.hpp similarity index 96% rename from LiteLoader/Header/MC/InMemoryRandomAccessFile.hpp rename to LiteLoader/include/llapi/mc/InMemoryRandomAccessFile.hpp index 5d3b5e5..227ddd8 100644 --- a/LiteLoader/Header/MC/InMemoryRandomAccessFile.hpp +++ b/LiteLoader/include/llapi/mc/InMemoryRandomAccessFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InMemorySequentialFile.hpp b/LiteLoader/include/llapi/mc/InMemorySequentialFile.hpp similarity index 96% rename from LiteLoader/Header/MC/InMemorySequentialFile.hpp rename to LiteLoader/include/llapi/mc/InMemorySequentialFile.hpp index 111d4df..f42e2b4 100644 --- a/LiteLoader/Header/MC/InMemorySequentialFile.hpp +++ b/LiteLoader/include/llapi/mc/InMemorySequentialFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InMemoryWritableFile.hpp b/LiteLoader/include/llapi/mc/InMemoryWritableFile.hpp similarity index 96% rename from LiteLoader/Header/MC/InMemoryWritableFile.hpp rename to LiteLoader/include/llapi/mc/InMemoryWritableFile.hpp index a10df47..597d89b 100644 --- a/LiteLoader/Header/MC/InMemoryWritableFile.hpp +++ b/LiteLoader/include/llapi/mc/InMemoryWritableFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InPackagePackSource.hpp b/LiteLoader/include/llapi/mc/InPackagePackSource.hpp similarity index 97% rename from LiteLoader/Header/MC/InPackagePackSource.hpp rename to LiteLoader/include/llapi/mc/InPackagePackSource.hpp index 4b94492..adbc486 100644 --- a/LiteLoader/Header/MC/InPackagePackSource.hpp +++ b/LiteLoader/include/llapi/mc/InPackagePackSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IndexSet.hpp b/LiteLoader/include/llapi/mc/IndexSet.hpp similarity index 94% rename from LiteLoader/Header/MC/IndexSet.hpp rename to LiteLoader/include/llapi/mc/IndexSet.hpp index 19cffd2..82934c4 100644 --- a/LiteLoader/Header/MC/IndexSet.hpp +++ b/LiteLoader/include/llapi/mc/IndexSet.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InsomniaSystem.hpp b/LiteLoader/include/llapi/mc/InsomniaSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/InsomniaSystem.hpp rename to LiteLoader/include/llapi/mc/InsomniaSystem.hpp index b7c9209..d9de0ee 100644 --- a/LiteLoader/Header/MC/InsomniaSystem.hpp +++ b/LiteLoader/include/llapi/mc/InsomniaSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InspectBookshelfGoal.hpp b/LiteLoader/include/llapi/mc/InspectBookshelfGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/InspectBookshelfGoal.hpp rename to LiteLoader/include/llapi/mc/InspectBookshelfGoal.hpp index 1ce8597..4ba7cdd 100644 --- a/LiteLoader/Header/MC/InspectBookshelfGoal.hpp +++ b/LiteLoader/include/llapi/mc/InspectBookshelfGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InstantDespawnDefinition.hpp b/LiteLoader/include/llapi/mc/InstantDespawnDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/InstantDespawnDefinition.hpp rename to LiteLoader/include/llapi/mc/InstantDespawnDefinition.hpp index 5615a86..9559d01 100644 --- a/LiteLoader/Header/MC/InstantDespawnDefinition.hpp +++ b/LiteLoader/include/llapi/mc/InstantDespawnDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InstantDespawnSystem.hpp b/LiteLoader/include/llapi/mc/InstantDespawnSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/InstantDespawnSystem.hpp rename to LiteLoader/include/llapi/mc/InstantDespawnSystem.hpp index 1093596..8ac3a7f 100644 --- a/LiteLoader/Header/MC/InstantDespawnSystem.hpp +++ b/LiteLoader/include/llapi/mc/InstantDespawnSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InstantaneousAttributeBuff.hpp b/LiteLoader/include/llapi/mc/InstantaneousAttributeBuff.hpp similarity index 96% rename from LiteLoader/Header/MC/InstantaneousAttributeBuff.hpp rename to LiteLoader/include/llapi/mc/InstantaneousAttributeBuff.hpp index 9f952ea..50d08b9 100644 --- a/LiteLoader/Header/MC/InstantaneousAttributeBuff.hpp +++ b/LiteLoader/include/llapi/mc/InstantaneousAttributeBuff.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "AttributeBuff.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InstantaneousMobEffect.hpp b/LiteLoader/include/llapi/mc/InstantaneousMobEffect.hpp similarity index 96% rename from LiteLoader/Header/MC/InstantaneousMobEffect.hpp rename to LiteLoader/include/llapi/mc/InstantaneousMobEffect.hpp index 5364d53..a2b2f32 100644 --- a/LiteLoader/Header/MC/InstantaneousMobEffect.hpp +++ b/LiteLoader/include/llapi/mc/InstantaneousMobEffect.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MobEffect.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Int64Tag.hpp b/LiteLoader/include/llapi/mc/Int64Tag.hpp similarity index 97% rename from LiteLoader/Header/MC/Int64Tag.hpp rename to LiteLoader/include/llapi/mc/Int64Tag.hpp index 5bd9448..3c81aae 100644 --- a/LiteLoader/Header/MC/Int64Tag.hpp +++ b/LiteLoader/include/llapi/mc/Int64Tag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IntArrayTag.hpp b/LiteLoader/include/llapi/mc/IntArrayTag.hpp similarity index 98% rename from LiteLoader/Header/MC/IntArrayTag.hpp rename to LiteLoader/include/llapi/mc/IntArrayTag.hpp index 5edc38e..882030c 100644 --- a/LiteLoader/Header/MC/IntArrayTag.hpp +++ b/LiteLoader/include/llapi/mc/IntArrayTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IntRange.hpp b/LiteLoader/include/llapi/mc/IntRange.hpp similarity index 95% rename from LiteLoader/Header/MC/IntRange.hpp rename to LiteLoader/include/llapi/mc/IntRange.hpp index 02cefc7..7e2105d 100644 --- a/LiteLoader/Header/MC/IntRange.hpp +++ b/LiteLoader/include/llapi/mc/IntRange.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IntTag.hpp b/LiteLoader/include/llapi/mc/IntTag.hpp similarity index 97% rename from LiteLoader/Header/MC/IntTag.hpp rename to LiteLoader/include/llapi/mc/IntTag.hpp index 8563ddf..cfcd79e 100644 --- a/LiteLoader/Header/MC/IntTag.hpp +++ b/LiteLoader/include/llapi/mc/IntTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InteractActionDefinition.hpp b/LiteLoader/include/llapi/mc/InteractActionDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/InteractActionDefinition.hpp rename to LiteLoader/include/llapi/mc/InteractActionDefinition.hpp index c6ddf83..0c06f24 100644 --- a/LiteLoader/Header/MC/InteractActionDefinition.hpp +++ b/LiteLoader/include/llapi/mc/InteractActionDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/InteractActionNode.hpp b/LiteLoader/include/llapi/mc/InteractActionNode.hpp similarity index 96% rename from LiteLoader/Header/MC/InteractActionNode.hpp rename to LiteLoader/include/llapi/mc/InteractActionNode.hpp index 629682e..46761aa 100644 --- a/LiteLoader/Header/MC/InteractActionNode.hpp +++ b/LiteLoader/include/llapi/mc/InteractActionNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InteractComponent.hpp b/LiteLoader/include/llapi/mc/InteractComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/InteractComponent.hpp rename to LiteLoader/include/llapi/mc/InteractComponent.hpp index d563403..a62c563 100644 --- a/LiteLoader/Header/MC/InteractComponent.hpp +++ b/LiteLoader/include/llapi/mc/InteractComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InteractDefinition.hpp b/LiteLoader/include/llapi/mc/InteractDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/InteractDefinition.hpp rename to LiteLoader/include/llapi/mc/InteractDefinition.hpp index 801c36b..417a79a 100644 --- a/LiteLoader/Header/MC/InteractDefinition.hpp +++ b/LiteLoader/include/llapi/mc/InteractDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/InteractPacket.hpp b/LiteLoader/include/llapi/mc/InteractPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/InteractPacket.hpp rename to LiteLoader/include/llapi/mc/InteractPacket.hpp index fc73c4a..8216049 100644 --- a/LiteLoader/Header/MC/InteractPacket.hpp +++ b/LiteLoader/include/llapi/mc/InteractPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InteractSystem.hpp b/LiteLoader/include/llapi/mc/InteractSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/InteractSystem.hpp rename to LiteLoader/include/llapi/mc/InteractSystem.hpp index 4a94acd..73861c5 100644 --- a/LiteLoader/Header/MC/InteractSystem.hpp +++ b/LiteLoader/include/llapi/mc/InteractSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Interaction.hpp b/LiteLoader/include/llapi/mc/Interaction.hpp similarity index 96% rename from LiteLoader/Header/MC/Interaction.hpp rename to LiteLoader/include/llapi/mc/Interaction.hpp index 799c6c0..1b54d4b 100644 --- a/LiteLoader/Header/MC/Interaction.hpp +++ b/LiteLoader/include/llapi/mc/Interaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InternalTaskGroup.hpp b/LiteLoader/include/llapi/mc/InternalTaskGroup.hpp similarity index 97% rename from LiteLoader/Header/MC/InternalTaskGroup.hpp rename to LiteLoader/include/llapi/mc/InternalTaskGroup.hpp index 8073b28..1b9dcf3 100644 --- a/LiteLoader/Header/MC/InternalTaskGroup.hpp +++ b/LiteLoader/include/llapi/mc/InternalTaskGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Inventory.hpp b/LiteLoader/include/llapi/mc/Inventory.hpp similarity index 97% rename from LiteLoader/Header/MC/Inventory.hpp rename to LiteLoader/include/llapi/mc/Inventory.hpp index dd6e2a3..d2ff484 100644 --- a/LiteLoader/Header/MC/Inventory.hpp +++ b/LiteLoader/include/llapi/mc/Inventory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FillingContainer.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventoryAction.hpp b/LiteLoader/include/llapi/mc/InventoryAction.hpp similarity index 97% rename from LiteLoader/Header/MC/InventoryAction.hpp rename to LiteLoader/include/llapi/mc/InventoryAction.hpp index 4eb0552..021d23e 100644 --- a/LiteLoader/Header/MC/InventoryAction.hpp +++ b/LiteLoader/include/llapi/mc/InventoryAction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/InventoryContainerModel.hpp b/LiteLoader/include/llapi/mc/InventoryContainerModel.hpp similarity index 98% rename from LiteLoader/Header/MC/InventoryContainerModel.hpp rename to LiteLoader/include/llapi/mc/InventoryContainerModel.hpp index 8b4e7cc..16b0f7d 100644 --- a/LiteLoader/Header/MC/InventoryContainerModel.hpp +++ b/LiteLoader/include/llapi/mc/InventoryContainerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventoryContentPacket.hpp b/LiteLoader/include/llapi/mc/InventoryContentPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/InventoryContentPacket.hpp rename to LiteLoader/include/llapi/mc/InventoryContentPacket.hpp index 4160789..d917e2a 100644 --- a/LiteLoader/Header/MC/InventoryContentPacket.hpp +++ b/LiteLoader/include/llapi/mc/InventoryContentPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventoryMenu.hpp b/LiteLoader/include/llapi/mc/InventoryMenu.hpp similarity index 96% rename from LiteLoader/Header/MC/InventoryMenu.hpp rename to LiteLoader/include/llapi/mc/InventoryMenu.hpp index e200b54..edded8c 100644 --- a/LiteLoader/Header/MC/InventoryMenu.hpp +++ b/LiteLoader/include/llapi/mc/InventoryMenu.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventorySlotPacket.hpp b/LiteLoader/include/llapi/mc/InventorySlotPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/InventorySlotPacket.hpp rename to LiteLoader/include/llapi/mc/InventorySlotPacket.hpp index f543310..60070b7 100644 --- a/LiteLoader/Header/MC/InventorySlotPacket.hpp +++ b/LiteLoader/include/llapi/mc/InventorySlotPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventorySource.hpp b/LiteLoader/include/llapi/mc/InventorySource.hpp similarity index 98% rename from LiteLoader/Header/MC/InventorySource.hpp rename to LiteLoader/include/llapi/mc/InventorySource.hpp index 11d820a..b5b2646 100644 --- a/LiteLoader/Header/MC/InventorySource.hpp +++ b/LiteLoader/include/llapi/mc/InventorySource.hpp @@ -5,7 +5,7 @@ */ #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/InventoryTransaction.hpp b/LiteLoader/include/llapi/mc/InventoryTransaction.hpp similarity index 98% rename from LiteLoader/Header/MC/InventoryTransaction.hpp rename to LiteLoader/include/llapi/mc/InventoryTransaction.hpp index 45bd0ae..0741455 100644 --- a/LiteLoader/Header/MC/InventoryTransaction.hpp +++ b/LiteLoader/include/llapi/mc/InventoryTransaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventoryTransactionItemGroup.hpp b/LiteLoader/include/llapi/mc/InventoryTransactionItemGroup.hpp similarity index 96% rename from LiteLoader/Header/MC/InventoryTransactionItemGroup.hpp rename to LiteLoader/include/llapi/mc/InventoryTransactionItemGroup.hpp index 58840d7..a4475ec 100644 --- a/LiteLoader/Header/MC/InventoryTransactionItemGroup.hpp +++ b/LiteLoader/include/llapi/mc/InventoryTransactionItemGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventoryTransactionManager.hpp b/LiteLoader/include/llapi/mc/InventoryTransactionManager.hpp similarity index 96% rename from LiteLoader/Header/MC/InventoryTransactionManager.hpp rename to LiteLoader/include/llapi/mc/InventoryTransactionManager.hpp index 02fd7dc..a72ecc0 100644 --- a/LiteLoader/Header/MC/InventoryTransactionManager.hpp +++ b/LiteLoader/include/llapi/mc/InventoryTransactionManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InventoryTransactionPacket.hpp b/LiteLoader/include/llapi/mc/InventoryTransactionPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/InventoryTransactionPacket.hpp rename to LiteLoader/include/llapi/mc/InventoryTransactionPacket.hpp index 47bb107..b452f40 100644 --- a/LiteLoader/Header/MC/InventoryTransactionPacket.hpp +++ b/LiteLoader/include/llapi/mc/InventoryTransactionPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InverterDefinition.hpp b/LiteLoader/include/llapi/mc/InverterDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/InverterDefinition.hpp rename to LiteLoader/include/llapi/mc/InverterDefinition.hpp index 421ef58..37ebc11 100644 --- a/LiteLoader/Header/MC/InverterDefinition.hpp +++ b/LiteLoader/include/llapi/mc/InverterDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/InverterNode.hpp b/LiteLoader/include/llapi/mc/InverterNode.hpp similarity index 95% rename from LiteLoader/Header/MC/InverterNode.hpp rename to LiteLoader/include/llapi/mc/InverterNode.hpp index 8337360..c3aa1f1 100644 --- a/LiteLoader/Header/MC/InverterNode.hpp +++ b/LiteLoader/include/llapi/mc/InverterNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/InvisibleBlock.hpp b/LiteLoader/include/llapi/mc/InvisibleBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/InvisibleBlock.hpp rename to LiteLoader/include/llapi/mc/InvisibleBlock.hpp index 8c02d5a..5c9b1f1 100644 --- a/LiteLoader/Header/MC/InvisibleBlock.hpp +++ b/LiteLoader/include/llapi/mc/InvisibleBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IronGolem.hpp b/LiteLoader/include/llapi/mc/IronGolem.hpp similarity index 98% rename from LiteLoader/Header/MC/IronGolem.hpp rename to LiteLoader/include/llapi/mc/IronGolem.hpp index c7862b9..1dbbb36 100644 --- a/LiteLoader/Header/MC/IronGolem.hpp +++ b/LiteLoader/include/llapi/mc/IronGolem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/IsBabyDescription.hpp b/LiteLoader/include/llapi/mc/IsBabyDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsBabyDescription.hpp rename to LiteLoader/include/llapi/mc/IsBabyDescription.hpp index d5172ed..3bf72d6 100644 --- a/LiteLoader/Header/MC/IsBabyDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsBabyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsChargedDescription.hpp b/LiteLoader/include/llapi/mc/IsChargedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsChargedDescription.hpp rename to LiteLoader/include/llapi/mc/IsChargedDescription.hpp index 0c99294..96635d3 100644 --- a/LiteLoader/Header/MC/IsChargedDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsChargedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsChestedDescription.hpp b/LiteLoader/include/llapi/mc/IsChestedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsChestedDescription.hpp rename to LiteLoader/include/llapi/mc/IsChestedDescription.hpp index e7ccabe..5218d55 100644 --- a/LiteLoader/Header/MC/IsChestedDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsChestedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsExperimentalDescription.hpp b/LiteLoader/include/llapi/mc/IsExperimentalDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsExperimentalDescription.hpp rename to LiteLoader/include/llapi/mc/IsExperimentalDescription.hpp index 57be67b..5518865 100644 --- a/LiteLoader/Header/MC/IsExperimentalDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsExperimentalDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsHiddenWhenInvisibleDescription.hpp b/LiteLoader/include/llapi/mc/IsHiddenWhenInvisibleDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsHiddenWhenInvisibleDescription.hpp rename to LiteLoader/include/llapi/mc/IsHiddenWhenInvisibleDescription.hpp index 26b7a6c..a0fadbf 100644 --- a/LiteLoader/Header/MC/IsHiddenWhenInvisibleDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsHiddenWhenInvisibleDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsIgnitedDescription.hpp b/LiteLoader/include/llapi/mc/IsIgnitedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsIgnitedDescription.hpp rename to LiteLoader/include/llapi/mc/IsIgnitedDescription.hpp index 7909750..534246d 100644 --- a/LiteLoader/Header/MC/IsIgnitedDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsIgnitedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsIllagerCaptainDescription.hpp b/LiteLoader/include/llapi/mc/IsIllagerCaptainDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsIllagerCaptainDescription.hpp rename to LiteLoader/include/llapi/mc/IsIllagerCaptainDescription.hpp index 7aacca0..7b21e64 100644 --- a/LiteLoader/Header/MC/IsIllagerCaptainDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsIllagerCaptainDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsSaddledDescription.hpp b/LiteLoader/include/llapi/mc/IsSaddledDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsSaddledDescription.hpp rename to LiteLoader/include/llapi/mc/IsSaddledDescription.hpp index b2de94d..69972c7 100644 --- a/LiteLoader/Header/MC/IsSaddledDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsSaddledDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsShakingDescription.hpp b/LiteLoader/include/llapi/mc/IsShakingDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsShakingDescription.hpp rename to LiteLoader/include/llapi/mc/IsShakingDescription.hpp index e6f3730..ac08688 100644 --- a/LiteLoader/Header/MC/IsShakingDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsShakingDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsShearedDescription.hpp b/LiteLoader/include/llapi/mc/IsShearedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsShearedDescription.hpp rename to LiteLoader/include/llapi/mc/IsShearedDescription.hpp index 01c0090..aad721b 100644 --- a/LiteLoader/Header/MC/IsShearedDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsShearedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsSpawnableDescription.hpp b/LiteLoader/include/llapi/mc/IsSpawnableDescription.hpp similarity index 95% rename from LiteLoader/Header/MC/IsSpawnableDescription.hpp rename to LiteLoader/include/llapi/mc/IsSpawnableDescription.hpp index cb88c8f..8922ebd 100644 --- a/LiteLoader/Header/MC/IsSpawnableDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsSpawnableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsStackableDescription.hpp b/LiteLoader/include/llapi/mc/IsStackableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsStackableDescription.hpp rename to LiteLoader/include/llapi/mc/IsStackableDescription.hpp index fef5aa0..7ea5f0d 100644 --- a/LiteLoader/Header/MC/IsStackableDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsStackableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsStunnedDescription.hpp b/LiteLoader/include/llapi/mc/IsStunnedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsStunnedDescription.hpp rename to LiteLoader/include/llapi/mc/IsStunnedDescription.hpp index eb668fe..0377539 100644 --- a/LiteLoader/Header/MC/IsStunnedDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsStunnedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsSummonableDescription.hpp b/LiteLoader/include/llapi/mc/IsSummonableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsSummonableDescription.hpp rename to LiteLoader/include/llapi/mc/IsSummonableDescription.hpp index 14778aa..db5ed4c 100644 --- a/LiteLoader/Header/MC/IsSummonableDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsSummonableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IsTamedDescription.hpp b/LiteLoader/include/llapi/mc/IsTamedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/IsTamedDescription.hpp rename to LiteLoader/include/llapi/mc/IsTamedDescription.hpp index e942355..f85527e 100644 --- a/LiteLoader/Header/MC/IsTamedDescription.hpp +++ b/LiteLoader/include/llapi/mc/IsTamedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/IslandLayer.hpp b/LiteLoader/include/llapi/mc/IslandLayer.hpp similarity index 96% rename from LiteLoader/Header/MC/IslandLayer.hpp rename to LiteLoader/include/llapi/mc/IslandLayer.hpp index 8de137f..de0ad15 100644 --- a/LiteLoader/Header/MC/IslandLayer.hpp +++ b/LiteLoader/include/llapi/mc/IslandLayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Item.hpp b/LiteLoader/include/llapi/mc/Item.hpp similarity index 99% rename from LiteLoader/Header/MC/Item.hpp rename to LiteLoader/include/llapi/mc/Item.hpp index 03ffa8c..1ebefdd 100644 --- a/LiteLoader/Header/MC/Item.hpp +++ b/LiteLoader/include/llapi/mc/Item.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemAcquisitionMethodMap.hpp b/LiteLoader/include/llapi/mc/ItemAcquisitionMethodMap.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemAcquisitionMethodMap.hpp rename to LiteLoader/include/llapi/mc/ItemAcquisitionMethodMap.hpp index e3dc3db..19fbbda 100644 --- a/LiteLoader/Header/MC/ItemAcquisitionMethodMap.hpp +++ b/LiteLoader/include/llapi/mc/ItemAcquisitionMethodMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemActor.hpp b/LiteLoader/include/llapi/mc/ItemActor.hpp similarity index 98% rename from LiteLoader/Header/MC/ItemActor.hpp rename to LiteLoader/include/llapi/mc/ItemActor.hpp index e2c87c9..e8f0aa6 100644 --- a/LiteLoader/Header/MC/ItemActor.hpp +++ b/LiteLoader/include/llapi/mc/ItemActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemColorUtil.hpp b/LiteLoader/include/llapi/mc/ItemColorUtil.hpp similarity index 90% rename from LiteLoader/Header/MC/ItemColorUtil.hpp rename to LiteLoader/include/llapi/mc/ItemColorUtil.hpp index b11cfe2..886767a 100644 --- a/LiteLoader/Header/MC/ItemColorUtil.hpp +++ b/LiteLoader/include/llapi/mc/ItemColorUtil.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemControlDescription.hpp b/LiteLoader/include/llapi/mc/ItemControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemControlDescription.hpp rename to LiteLoader/include/llapi/mc/ItemControlDescription.hpp index d60f4a6..17556a1 100644 --- a/LiteLoader/Header/MC/ItemControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/ItemControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemData.hpp b/LiteLoader/include/llapi/mc/ItemData.hpp similarity index 94% rename from LiteLoader/Header/MC/ItemData.hpp rename to LiteLoader/include/llapi/mc/ItemData.hpp index cd44339..ca222bd 100644 --- a/LiteLoader/Header/MC/ItemData.hpp +++ b/LiteLoader/include/llapi/mc/ItemData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemDescriptor.hpp b/LiteLoader/include/llapi/mc/ItemDescriptor.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemDescriptor.hpp rename to LiteLoader/include/llapi/mc/ItemDescriptor.hpp index 2facd52..804986e 100644 --- a/LiteLoader/Header/MC/ItemDescriptor.hpp +++ b/LiteLoader/include/llapi/mc/ItemDescriptor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemDescriptorCount.hpp b/LiteLoader/include/llapi/mc/ItemDescriptorCount.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemDescriptorCount.hpp rename to LiteLoader/include/llapi/mc/ItemDescriptorCount.hpp index 49029e0..57d373a 100644 --- a/LiteLoader/Header/MC/ItemDescriptorCount.hpp +++ b/LiteLoader/include/llapi/mc/ItemDescriptorCount.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemEnchantOption.hpp b/LiteLoader/include/llapi/mc/ItemEnchantOption.hpp similarity index 95% rename from LiteLoader/Header/MC/ItemEnchantOption.hpp rename to LiteLoader/include/llapi/mc/ItemEnchantOption.hpp index 2165f07..953640b 100644 --- a/LiteLoader/Header/MC/ItemEnchantOption.hpp +++ b/LiteLoader/include/llapi/mc/ItemEnchantOption.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemEnchants.hpp b/LiteLoader/include/llapi/mc/ItemEnchants.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemEnchants.hpp rename to LiteLoader/include/llapi/mc/ItemEnchants.hpp index 1eedaa3..aedb710 100644 --- a/LiteLoader/Header/MC/ItemEnchants.hpp +++ b/LiteLoader/include/llapi/mc/ItemEnchants.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemEventCoordinator.hpp b/LiteLoader/include/llapi/mc/ItemEventCoordinator.hpp similarity index 95% rename from LiteLoader/Header/MC/ItemEventCoordinator.hpp rename to LiteLoader/include/llapi/mc/ItemEventCoordinator.hpp index 703d166..8ddb044 100644 --- a/LiteLoader/Header/MC/ItemEventCoordinator.hpp +++ b/LiteLoader/include/llapi/mc/ItemEventCoordinator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemFrameBlock.hpp b/LiteLoader/include/llapi/mc/ItemFrameBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ItemFrameBlock.hpp rename to LiteLoader/include/llapi/mc/ItemFrameBlock.hpp index 7a625e1..1738f7e 100644 --- a/LiteLoader/Header/MC/ItemFrameBlock.hpp +++ b/LiteLoader/include/llapi/mc/ItemFrameBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemFrameBlockActor.hpp b/LiteLoader/include/llapi/mc/ItemFrameBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/ItemFrameBlockActor.hpp rename to LiteLoader/include/llapi/mc/ItemFrameBlockActor.hpp index 965f76b..e948de8 100644 --- a/LiteLoader/Header/MC/ItemFrameBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/ItemFrameBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemFrameDropItemPacket.hpp b/LiteLoader/include/llapi/mc/ItemFrameDropItemPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemFrameDropItemPacket.hpp rename to LiteLoader/include/llapi/mc/ItemFrameDropItemPacket.hpp index fa37d4f..a487a2b 100644 --- a/LiteLoader/Header/MC/ItemFrameDropItemPacket.hpp +++ b/LiteLoader/include/llapi/mc/ItemFrameDropItemPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemGroup.hpp b/LiteLoader/include/llapi/mc/ItemGroup.hpp similarity index 95% rename from LiteLoader/Header/MC/ItemGroup.hpp rename to LiteLoader/include/llapi/mc/ItemGroup.hpp index c60bca9..a67d0ee 100644 --- a/LiteLoader/Header/MC/ItemGroup.hpp +++ b/LiteLoader/include/llapi/mc/ItemGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemInstance.hpp b/LiteLoader/include/llapi/mc/ItemInstance.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemInstance.hpp rename to LiteLoader/include/llapi/mc/ItemInstance.hpp index 3cd17de..5dfc35c 100644 --- a/LiteLoader/Header/MC/ItemInstance.hpp +++ b/LiteLoader/include/llapi/mc/ItemInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackBase.hpp" #include "Item.hpp" diff --git a/LiteLoader/Header/MC/ItemListSerializer.hpp b/LiteLoader/include/llapi/mc/ItemListSerializer.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemListSerializer.hpp rename to LiteLoader/include/llapi/mc/ItemListSerializer.hpp index 980209c..66794bd 100644 --- a/LiteLoader/Header/MC/ItemListSerializer.hpp +++ b/LiteLoader/include/llapi/mc/ItemListSerializer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemPack.hpp b/LiteLoader/include/llapi/mc/ItemPack.hpp similarity index 95% rename from LiteLoader/Header/MC/ItemPack.hpp rename to LiteLoader/include/llapi/mc/ItemPack.hpp index 9d004fc..900fe0b 100644 --- a/LiteLoader/Header/MC/ItemPack.hpp +++ b/LiteLoader/include/llapi/mc/ItemPack.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemReactionComponent.hpp b/LiteLoader/include/llapi/mc/ItemReactionComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemReactionComponent.hpp rename to LiteLoader/include/llapi/mc/ItemReactionComponent.hpp index 893eed2..d668ceb 100644 --- a/LiteLoader/Header/MC/ItemReactionComponent.hpp +++ b/LiteLoader/include/llapi/mc/ItemReactionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemRegistry.hpp b/LiteLoader/include/llapi/mc/ItemRegistry.hpp similarity index 98% rename from LiteLoader/Header/MC/ItemRegistry.hpp rename to LiteLoader/include/llapi/mc/ItemRegistry.hpp index 9c63062..50a42cc 100644 --- a/LiteLoader/Header/MC/ItemRegistry.hpp +++ b/LiteLoader/include/llapi/mc/ItemRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemReleaseInventoryTransaction.hpp b/LiteLoader/include/llapi/mc/ItemReleaseInventoryTransaction.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemReleaseInventoryTransaction.hpp rename to LiteLoader/include/llapi/mc/ItemReleaseInventoryTransaction.hpp index ed88426..cc4d355 100644 --- a/LiteLoader/Header/MC/ItemReleaseInventoryTransaction.hpp +++ b/LiteLoader/include/llapi/mc/ItemReleaseInventoryTransaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStack.hpp b/LiteLoader/include/llapi/mc/ItemStack.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStack.hpp rename to LiteLoader/include/llapi/mc/ItemStack.hpp index 6bbf3eb..8767aa4 100644 --- a/LiteLoader/Header/MC/ItemStack.hpp +++ b/LiteLoader/include/llapi/mc/ItemStack.hpp @@ -1,14 +1,14 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackBase.hpp" #define BEFORE_EXTRA // Add include headers & pre-declares #include "ItemStackNetIdVariant.hpp" -#include "MC/I18n.hpp" -#include "MC/PropertiesSettings.hpp" +#include "I18n.hpp" +#include "PropertiesSettings.hpp" class Tag; class ItemActor; class CompoundTag; diff --git a/LiteLoader/Header/MC/ItemStackBase.hpp b/LiteLoader/include/llapi/mc/ItemStackBase.hpp similarity index 99% rename from LiteLoader/Header/MC/ItemStackBase.hpp rename to LiteLoader/include/llapi/mc/ItemStackBase.hpp index 93e071f..6a7fb43 100644 --- a/LiteLoader/Header/MC/ItemStackBase.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackNetIdVariant.hpp b/LiteLoader/include/llapi/mc/ItemStackNetIdVariant.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackNetIdVariant.hpp rename to LiteLoader/include/llapi/mc/ItemStackNetIdVariant.hpp index beeb50a..b1676c7 100644 --- a/LiteLoader/Header/MC/ItemStackNetIdVariant.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackNetIdVariant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/ItemStackNetManagerBase.hpp b/LiteLoader/include/llapi/mc/ItemStackNetManagerBase.hpp similarity index 98% rename from LiteLoader/Header/MC/ItemStackNetManagerBase.hpp rename to LiteLoader/include/llapi/mc/ItemStackNetManagerBase.hpp index 39ab4e9..f5155c2 100644 --- a/LiteLoader/Header/MC/ItemStackNetManagerBase.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackNetManagerBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackNetManagerClient.hpp b/LiteLoader/include/llapi/mc/ItemStackNetManagerClient.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackNetManagerClient.hpp rename to LiteLoader/include/llapi/mc/ItemStackNetManagerClient.hpp index f885047..64381bf 100644 --- a/LiteLoader/Header/MC/ItemStackNetManagerClient.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackNetManagerClient.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackNetManagerServer.hpp b/LiteLoader/include/llapi/mc/ItemStackNetManagerServer.hpp similarity index 98% rename from LiteLoader/Header/MC/ItemStackNetManagerServer.hpp rename to LiteLoader/include/llapi/mc/ItemStackNetManagerServer.hpp index 9c7d386..8530ca5 100644 --- a/LiteLoader/Header/MC/ItemStackNetManagerServer.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackNetManagerServer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackNetManagerBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestAction.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestAction.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestAction.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestAction.hpp index 6c1ee8f..0bd4d99 100644 --- a/LiteLoader/Header/MC/ItemStackRequestAction.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestAction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionBeaconPayment.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionBeaconPayment.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestActionBeaconPayment.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionBeaconPayment.hpp index b53db41..5ec9496 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionBeaconPayment.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionBeaconPayment.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionConsume.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionConsume.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackRequestActionConsume.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionConsume.hpp index 1b783b7..6d7d6ad 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionConsume.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionConsume.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackRequestActionTransferBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionCraftBase.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftBase.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestActionCraftBase.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionCraftBase.hpp index e7f0338..b9c3d33 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionCraftBase.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionCraftHandler.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftHandler.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackRequestActionCraftHandler.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionCraftHandler.hpp index e820b79..4225527 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionCraftHandler.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionCraftNonImplemented_DEPRECATEDASKTYLAING.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftNonImplemented_DEPRECATEDASKTYLAING.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackRequestActionCraftNonImplemented_DEPRECATEDASKTYLAING.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionCraftNonImplemented_DEPRECATEDASKTYLAING.hpp index 4b0ee35..292f0c6 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionCraftNonImplemented_DEPRECATEDASKTYLAING.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftNonImplemented_DEPRECATEDASKTYLAING.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionCraftResults_DEPRECATEDASKTYLAING.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftResults_DEPRECATEDASKTYLAING.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackRequestActionCraftResults_DEPRECATEDASKTYLAING.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionCraftResults_DEPRECATEDASKTYLAING.hpp index 59a5487..71eab91 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionCraftResults_DEPRECATEDASKTYLAING.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionCraftResults_DEPRECATEDASKTYLAING.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionCreate.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionCreate.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestActionCreate.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionCreate.hpp index 3021d58..a039779 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionCreate.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionCreate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionDestroy.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionDestroy.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackRequestActionDestroy.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionDestroy.hpp index d595af6..38cbc47 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionDestroy.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionDestroy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackRequestActionTransferBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionDrop.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionDrop.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestActionDrop.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionDrop.hpp index 488acba..5ad9044 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionDrop.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionDrop.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionHandler.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionHandler.hpp similarity index 98% rename from LiteLoader/Header/MC/ItemStackRequestActionHandler.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionHandler.hpp index 621f69c..3531aea 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionHandler.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionPlace.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionPlace.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemStackRequestActionPlace.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionPlace.hpp index 00ab613..0aa7e73 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionPlace.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionPlace.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackRequestActionTransferBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionSwap.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionSwap.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestActionSwap.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionSwap.hpp index d9faede..4ea8149 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionSwap.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionSwap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackRequestActionTransferBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionTake.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionTake.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestActionTake.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionTake.hpp index 3acf167..eca58b9 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionTake.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionTake.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ItemStackRequestActionTransferBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestActionTransferBase.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestActionTransferBase.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestActionTransferBase.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestActionTransferBase.hpp index 901c42d..ca4c5ee 100644 --- a/LiteLoader/Header/MC/ItemStackRequestActionTransferBase.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestActionTransferBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestPacket.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackRequestPacket.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestPacket.hpp index 2881b10..ef75374 100644 --- a/LiteLoader/Header/MC/ItemStackRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackRequestSlotInfo.hpp b/LiteLoader/include/llapi/mc/ItemStackRequestSlotInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/ItemStackRequestSlotInfo.hpp rename to LiteLoader/include/llapi/mc/ItemStackRequestSlotInfo.hpp index 314ad7f..fd0b08e 100644 --- a/LiteLoader/Header/MC/ItemStackRequestSlotInfo.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackRequestSlotInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackResponseContainerInfo.hpp b/LiteLoader/include/llapi/mc/ItemStackResponseContainerInfo.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackResponseContainerInfo.hpp rename to LiteLoader/include/llapi/mc/ItemStackResponseContainerInfo.hpp index 380bfbd..5245bd2 100644 --- a/LiteLoader/Header/MC/ItemStackResponseContainerInfo.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackResponseContainerInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackResponseInfo.hpp b/LiteLoader/include/llapi/mc/ItemStackResponseInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/ItemStackResponseInfo.hpp rename to LiteLoader/include/llapi/mc/ItemStackResponseInfo.hpp index 2e11c93..0bc9ee5 100644 --- a/LiteLoader/Header/MC/ItemStackResponseInfo.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackResponseInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStackResponsePacket.hpp b/LiteLoader/include/llapi/mc/ItemStackResponsePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ItemStackResponsePacket.hpp rename to LiteLoader/include/llapi/mc/ItemStackResponsePacket.hpp index 1102dc4..875cf3e 100644 --- a/LiteLoader/Header/MC/ItemStackResponsePacket.hpp +++ b/LiteLoader/include/llapi/mc/ItemStackResponsePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemState.hpp b/LiteLoader/include/llapi/mc/ItemState.hpp similarity index 94% rename from LiteLoader/Header/MC/ItemState.hpp rename to LiteLoader/include/llapi/mc/ItemState.hpp index 9204209..d5f6e25 100644 --- a/LiteLoader/Header/MC/ItemState.hpp +++ b/LiteLoader/include/llapi/mc/ItemState.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemStateInstance.hpp b/LiteLoader/include/llapi/mc/ItemStateInstance.hpp similarity index 94% rename from LiteLoader/Header/MC/ItemStateInstance.hpp rename to LiteLoader/include/llapi/mc/ItemStateInstance.hpp index c9ea9ed..f3e469f 100644 --- a/LiteLoader/Header/MC/ItemStateInstance.hpp +++ b/LiteLoader/include/llapi/mc/ItemStateInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemUseInventoryTransaction.hpp b/LiteLoader/include/llapi/mc/ItemUseInventoryTransaction.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemUseInventoryTransaction.hpp rename to LiteLoader/include/llapi/mc/ItemUseInventoryTransaction.hpp index 6539f46..49ce523 100644 --- a/LiteLoader/Header/MC/ItemUseInventoryTransaction.hpp +++ b/LiteLoader/include/llapi/mc/ItemUseInventoryTransaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemUseMethodMap.hpp b/LiteLoader/include/llapi/mc/ItemUseMethodMap.hpp similarity index 95% rename from LiteLoader/Header/MC/ItemUseMethodMap.hpp rename to LiteLoader/include/llapi/mc/ItemUseMethodMap.hpp index 21a4bac..7653795 100644 --- a/LiteLoader/Header/MC/ItemUseMethodMap.hpp +++ b/LiteLoader/include/llapi/mc/ItemUseMethodMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ItemUseOnActorInventoryTransaction.hpp b/LiteLoader/include/llapi/mc/ItemUseOnActorInventoryTransaction.hpp similarity index 97% rename from LiteLoader/Header/MC/ItemUseOnActorInventoryTransaction.hpp rename to LiteLoader/include/llapi/mc/ItemUseOnActorInventoryTransaction.hpp index 261db29..1728bac 100644 --- a/LiteLoader/Header/MC/ItemUseOnActorInventoryTransaction.hpp +++ b/LiteLoader/include/llapi/mc/ItemUseOnActorInventoryTransaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawBlock.hpp b/LiteLoader/include/llapi/mc/JigsawBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/JigsawBlock.hpp rename to LiteLoader/include/llapi/mc/JigsawBlock.hpp index e656d96..9b5d872 100644 --- a/LiteLoader/Header/MC/JigsawBlock.hpp +++ b/LiteLoader/include/llapi/mc/JigsawBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawBlockActor.hpp b/LiteLoader/include/llapi/mc/JigsawBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/JigsawBlockActor.hpp rename to LiteLoader/include/llapi/mc/JigsawBlockActor.hpp index fea028a..487b6dd 100644 --- a/LiteLoader/Header/MC/JigsawBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/JigsawBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawBlockInfo.hpp b/LiteLoader/include/llapi/mc/JigsawBlockInfo.hpp similarity index 96% rename from LiteLoader/Header/MC/JigsawBlockInfo.hpp rename to LiteLoader/include/llapi/mc/JigsawBlockInfo.hpp index c10a0fc..85fd929 100644 --- a/LiteLoader/Header/MC/JigsawBlockInfo.hpp +++ b/LiteLoader/include/llapi/mc/JigsawBlockInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawEditorData.hpp b/LiteLoader/include/llapi/mc/JigsawEditorData.hpp similarity index 97% rename from LiteLoader/Header/MC/JigsawEditorData.hpp rename to LiteLoader/include/llapi/mc/JigsawEditorData.hpp index dc358a4..25bad23 100644 --- a/LiteLoader/Header/MC/JigsawEditorData.hpp +++ b/LiteLoader/include/llapi/mc/JigsawEditorData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawPlacement.hpp b/LiteLoader/include/llapi/mc/JigsawPlacement.hpp similarity index 98% rename from LiteLoader/Header/MC/JigsawPlacement.hpp rename to LiteLoader/include/llapi/mc/JigsawPlacement.hpp index 0d8b005..7bf5fe4 100644 --- a/LiteLoader/Header/MC/JigsawPlacement.hpp +++ b/LiteLoader/include/llapi/mc/JigsawPlacement.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawStructureActorRulesRegistry.hpp b/LiteLoader/include/llapi/mc/JigsawStructureActorRulesRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/JigsawStructureActorRulesRegistry.hpp rename to LiteLoader/include/llapi/mc/JigsawStructureActorRulesRegistry.hpp index 4eb9dd0..2d4613e 100644 --- a/LiteLoader/Header/MC/JigsawStructureActorRulesRegistry.hpp +++ b/LiteLoader/include/llapi/mc/JigsawStructureActorRulesRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawStructureBlockRulesRegistry.hpp b/LiteLoader/include/llapi/mc/JigsawStructureBlockRulesRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/JigsawStructureBlockRulesRegistry.hpp rename to LiteLoader/include/llapi/mc/JigsawStructureBlockRulesRegistry.hpp index 26002fd..2ee490a 100644 --- a/LiteLoader/Header/MC/JigsawStructureBlockRulesRegistry.hpp +++ b/LiteLoader/include/llapi/mc/JigsawStructureBlockRulesRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawStructureBlockTagRulesRegistry.hpp b/LiteLoader/include/llapi/mc/JigsawStructureBlockTagRulesRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/JigsawStructureBlockTagRulesRegistry.hpp rename to LiteLoader/include/llapi/mc/JigsawStructureBlockTagRulesRegistry.hpp index 1a9b699..13ff476 100644 --- a/LiteLoader/Header/MC/JigsawStructureBlockTagRulesRegistry.hpp +++ b/LiteLoader/include/llapi/mc/JigsawStructureBlockTagRulesRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawStructureElementRegistry.hpp b/LiteLoader/include/llapi/mc/JigsawStructureElementRegistry.hpp similarity index 96% rename from LiteLoader/Header/MC/JigsawStructureElementRegistry.hpp rename to LiteLoader/include/llapi/mc/JigsawStructureElementRegistry.hpp index 8ce77c8..d248b01 100644 --- a/LiteLoader/Header/MC/JigsawStructureElementRegistry.hpp +++ b/LiteLoader/include/llapi/mc/JigsawStructureElementRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JigsawStructureRegistry.hpp b/LiteLoader/include/llapi/mc/JigsawStructureRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/JigsawStructureRegistry.hpp rename to LiteLoader/include/llapi/mc/JigsawStructureRegistry.hpp index db06840..00a904d 100644 --- a/LiteLoader/Header/MC/JigsawStructureRegistry.hpp +++ b/LiteLoader/include/llapi/mc/JigsawStructureRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JournaledFile.hpp b/LiteLoader/include/llapi/mc/JournaledFile.hpp similarity index 97% rename from LiteLoader/Header/MC/JournaledFile.hpp rename to LiteLoader/include/llapi/mc/JournaledFile.hpp index fe87a9b..62da897 100644 --- a/LiteLoader/Header/MC/JournaledFile.hpp +++ b/LiteLoader/include/llapi/mc/JournaledFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Json.hpp b/LiteLoader/include/llapi/mc/Json.hpp similarity index 99% rename from LiteLoader/Header/MC/Json.hpp rename to LiteLoader/include/llapi/mc/Json.hpp index 592db0a..aafef22 100644 --- a/LiteLoader/Header/MC/Json.hpp +++ b/LiteLoader/include/llapi/mc/Json.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JsonHelpers.hpp b/LiteLoader/include/llapi/mc/JsonHelpers.hpp similarity index 95% rename from LiteLoader/Header/MC/JsonHelpers.hpp rename to LiteLoader/include/llapi/mc/JsonHelpers.hpp index 3637320..ef51735 100644 --- a/LiteLoader/Header/MC/JsonHelpers.hpp +++ b/LiteLoader/include/llapi/mc/JsonHelpers.hpp @@ -1,6 +1,6 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/JsonPackUtils.hpp b/LiteLoader/include/llapi/mc/JsonPackUtils.hpp similarity index 97% rename from LiteLoader/Header/MC/JsonPackUtils.hpp rename to LiteLoader/include/llapi/mc/JsonPackUtils.hpp index 980cd9e..d4ec55b 100644 --- a/LiteLoader/Header/MC/JsonPackUtils.hpp +++ b/LiteLoader/include/llapi/mc/JsonPackUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JsonUtil.hpp b/LiteLoader/include/llapi/mc/JsonUtil.hpp similarity index 98% rename from LiteLoader/Header/MC/JsonUtil.hpp rename to LiteLoader/include/llapi/mc/JsonUtil.hpp index aed3bc8..ba24473 100644 --- a/LiteLoader/Header/MC/JsonUtil.hpp +++ b/LiteLoader/include/llapi/mc/JsonUtil.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JsonValidator.hpp b/LiteLoader/include/llapi/mc/JsonValidator.hpp similarity index 95% rename from LiteLoader/Header/MC/JsonValidator.hpp rename to LiteLoader/include/llapi/mc/JsonValidator.hpp index 866c2c5..51de4ac 100644 --- a/LiteLoader/Header/MC/JsonValidator.hpp +++ b/LiteLoader/include/llapi/mc/JsonValidator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JukeboxBlock.hpp b/LiteLoader/include/llapi/mc/JukeboxBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/JukeboxBlock.hpp rename to LiteLoader/include/llapi/mc/JukeboxBlock.hpp index fa9a65b..94f9b27 100644 --- a/LiteLoader/Header/MC/JukeboxBlock.hpp +++ b/LiteLoader/include/llapi/mc/JukeboxBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JukeboxBlockActor.hpp b/LiteLoader/include/llapi/mc/JukeboxBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/JukeboxBlockActor.hpp rename to LiteLoader/include/llapi/mc/JukeboxBlockActor.hpp index 75733b8..4739068 100644 --- a/LiteLoader/Header/MC/JukeboxBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/JukeboxBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JumpControl.hpp b/LiteLoader/include/llapi/mc/JumpControl.hpp similarity index 97% rename from LiteLoader/Header/MC/JumpControl.hpp rename to LiteLoader/include/llapi/mc/JumpControl.hpp index 06ec08a..d99e135 100644 --- a/LiteLoader/Header/MC/JumpControl.hpp +++ b/LiteLoader/include/llapi/mc/JumpControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JumpControlComponent.hpp b/LiteLoader/include/llapi/mc/JumpControlComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/JumpControlComponent.hpp rename to LiteLoader/include/llapi/mc/JumpControlComponent.hpp index b3f9c8c..b9a7d85 100644 --- a/LiteLoader/Header/MC/JumpControlComponent.hpp +++ b/LiteLoader/include/llapi/mc/JumpControlComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JumpControlDescription.hpp b/LiteLoader/include/llapi/mc/JumpControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/JumpControlDescription.hpp rename to LiteLoader/include/llapi/mc/JumpControlDescription.hpp index ea2dc26..63fd825 100644 --- a/LiteLoader/Header/MC/JumpControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/JumpControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JumpControlSystem.hpp b/LiteLoader/include/llapi/mc/JumpControlSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/JumpControlSystem.hpp rename to LiteLoader/include/llapi/mc/JumpControlSystem.hpp index 583f30f..1ae7e77 100644 --- a/LiteLoader/Header/MC/JumpControlSystem.hpp +++ b/LiteLoader/include/llapi/mc/JumpControlSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/JunglePyramidPiece.hpp b/LiteLoader/include/llapi/mc/JunglePyramidPiece.hpp similarity index 96% rename from LiteLoader/Header/MC/JunglePyramidPiece.hpp rename to LiteLoader/include/llapi/mc/JunglePyramidPiece.hpp index 64f40ca..5b38ab6 100644 --- a/LiteLoader/Header/MC/JunglePyramidPiece.hpp +++ b/LiteLoader/include/llapi/mc/JunglePyramidPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KelpBlock.hpp b/LiteLoader/include/llapi/mc/KelpBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/KelpBlock.hpp rename to LiteLoader/include/llapi/mc/KelpBlock.hpp index b07d662..1517996 100644 --- a/LiteLoader/Header/MC/KelpBlock.hpp +++ b/LiteLoader/include/llapi/mc/KelpBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KelpFeature.hpp b/LiteLoader/include/llapi/mc/KelpFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/KelpFeature.hpp rename to LiteLoader/include/llapi/mc/KelpFeature.hpp index 607ee16..ccf5f0b 100644 --- a/LiteLoader/Header/MC/KelpFeature.hpp +++ b/LiteLoader/include/llapi/mc/KelpFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KeyFrameLerpMode.hpp b/LiteLoader/include/llapi/mc/KeyFrameLerpMode.hpp similarity index 95% rename from LiteLoader/Header/MC/KeyFrameLerpMode.hpp rename to LiteLoader/include/llapi/mc/KeyFrameLerpMode.hpp index 30088c5..f340d47 100644 --- a/LiteLoader/Header/MC/KeyFrameLerpMode.hpp +++ b/LiteLoader/include/llapi/mc/KeyFrameLerpMode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KeyFrameTransform.hpp b/LiteLoader/include/llapi/mc/KeyFrameTransform.hpp similarity index 96% rename from LiteLoader/Header/MC/KeyFrameTransform.hpp rename to LiteLoader/include/llapi/mc/KeyFrameTransform.hpp index f448bf4..23914bc 100644 --- a/LiteLoader/Header/MC/KeyFrameTransform.hpp +++ b/LiteLoader/include/llapi/mc/KeyFrameTransform.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KeyFrameTransformData.hpp b/LiteLoader/include/llapi/mc/KeyFrameTransformData.hpp similarity index 95% rename from LiteLoader/Header/MC/KeyFrameTransformData.hpp rename to LiteLoader/include/llapi/mc/KeyFrameTransformData.hpp index 85fbedc..d18e38d 100644 --- a/LiteLoader/Header/MC/KeyFrameTransformData.hpp +++ b/LiteLoader/include/llapi/mc/KeyFrameTransformData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KeyManager.hpp b/LiteLoader/include/llapi/mc/KeyManager.hpp similarity index 95% rename from LiteLoader/Header/MC/KeyManager.hpp rename to LiteLoader/include/llapi/mc/KeyManager.hpp index a4ca8c9..d09cc87 100644 --- a/LiteLoader/Header/MC/KeyManager.hpp +++ b/LiteLoader/include/llapi/mc/KeyManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KeyOrNameResult.hpp b/LiteLoader/include/llapi/mc/KeyOrNameResult.hpp similarity index 95% rename from LiteLoader/Header/MC/KeyOrNameResult.hpp rename to LiteLoader/include/llapi/mc/KeyOrNameResult.hpp index 86b44b8..5a51981 100644 --- a/LiteLoader/Header/MC/KeyOrNameResult.hpp +++ b/LiteLoader/include/llapi/mc/KeyOrNameResult.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KickCommand.hpp b/LiteLoader/include/llapi/mc/KickCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/KickCommand.hpp rename to LiteLoader/include/llapi/mc/KickCommand.hpp index ac3fc00..7ac5100 100644 --- a/LiteLoader/Header/MC/KickCommand.hpp +++ b/LiteLoader/include/llapi/mc/KickCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KillCommand.hpp b/LiteLoader/include/llapi/mc/KillCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/KillCommand.hpp rename to LiteLoader/include/llapi/mc/KillCommand.hpp index a57563b..f6bf1ef 100644 --- a/LiteLoader/Header/MC/KillCommand.hpp +++ b/LiteLoader/include/llapi/mc/KillCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KnockbackArmorUpdater.hpp b/LiteLoader/include/llapi/mc/KnockbackArmorUpdater.hpp similarity index 98% rename from LiteLoader/Header/MC/KnockbackArmorUpdater.hpp rename to LiteLoader/include/llapi/mc/KnockbackArmorUpdater.hpp index 5741ca6..f40b17f 100644 --- a/LiteLoader/Header/MC/KnockbackArmorUpdater.hpp +++ b/LiteLoader/include/llapi/mc/KnockbackArmorUpdater.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KnockbackRoarGoal.hpp b/LiteLoader/include/llapi/mc/KnockbackRoarGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/KnockbackRoarGoal.hpp rename to LiteLoader/include/llapi/mc/KnockbackRoarGoal.hpp index 06b1d9d..ebaf5b5 100644 --- a/LiteLoader/Header/MC/KnockbackRoarGoal.hpp +++ b/LiteLoader/include/llapi/mc/KnockbackRoarGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/KnockbackRules.hpp b/LiteLoader/include/llapi/mc/KnockbackRules.hpp similarity index 92% rename from LiteLoader/Header/MC/KnockbackRules.hpp rename to LiteLoader/include/llapi/mc/KnockbackRules.hpp index d2be279..294b021 100644 --- a/LiteLoader/Header/MC/KnockbackRules.hpp +++ b/LiteLoader/include/llapi/mc/KnockbackRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LabTableContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/LabTableContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/LabTableContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/LabTableContainerManagerModel.hpp index 341e958..114c282 100644 --- a/LiteLoader/Header/MC/LabTableContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/LabTableContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LabTablePacket.hpp b/LiteLoader/include/llapi/mc/LabTablePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/LabTablePacket.hpp rename to LiteLoader/include/llapi/mc/LabTablePacket.hpp index 42bd3c7..e9306d9 100644 --- a/LiteLoader/Header/MC/LabTablePacket.hpp +++ b/LiteLoader/include/llapi/mc/LabTablePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LabTableReaction.hpp b/LiteLoader/include/llapi/mc/LabTableReaction.hpp similarity index 96% rename from LiteLoader/Header/MC/LabTableReaction.hpp rename to LiteLoader/include/llapi/mc/LabTableReaction.hpp index 589da4e..1c8e635 100644 --- a/LiteLoader/Header/MC/LabTableReaction.hpp +++ b/LiteLoader/include/llapi/mc/LabTableReaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LabTableReactionComponent.hpp b/LiteLoader/include/llapi/mc/LabTableReactionComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/LabTableReactionComponent.hpp rename to LiteLoader/include/llapi/mc/LabTableReactionComponent.hpp index 496f594..368b13f 100644 --- a/LiteLoader/Header/MC/LabTableReactionComponent.hpp +++ b/LiteLoader/include/llapi/mc/LabTableReactionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LadderBlock.hpp b/LiteLoader/include/llapi/mc/LadderBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/LadderBlock.hpp rename to LiteLoader/include/llapi/mc/LadderBlock.hpp index a6ba109..4dd33bd 100644 --- a/LiteLoader/Header/MC/LadderBlock.hpp +++ b/LiteLoader/include/llapi/mc/LadderBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LakeFeature.hpp b/LiteLoader/include/llapi/mc/LakeFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LakeFeature.hpp rename to LiteLoader/include/llapi/mc/LakeFeature.hpp index a9010ed..43e26f2 100644 --- a/LiteLoader/Header/MC/LakeFeature.hpp +++ b/LiteLoader/include/llapi/mc/LakeFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LanternBlock.hpp b/LiteLoader/include/llapi/mc/LanternBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/LanternBlock.hpp rename to LiteLoader/include/llapi/mc/LanternBlock.hpp index 006f21a..dd85e69 100644 --- a/LiteLoader/Header/MC/LanternBlock.hpp +++ b/LiteLoader/include/llapi/mc/LanternBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LargeCaveFeature.hpp b/LiteLoader/include/llapi/mc/LargeCaveFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/LargeCaveFeature.hpp rename to LiteLoader/include/llapi/mc/LargeCaveFeature.hpp index b694860..80f46e8 100644 --- a/LiteLoader/Header/MC/LargeCaveFeature.hpp +++ b/LiteLoader/include/llapi/mc/LargeCaveFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LargeFireball.hpp b/LiteLoader/include/llapi/mc/LargeFireball.hpp similarity index 98% rename from LiteLoader/Header/MC/LargeFireball.hpp rename to LiteLoader/include/llapi/mc/LargeFireball.hpp index 3bc56a7..3fde329 100644 --- a/LiteLoader/Header/MC/LargeFireball.hpp +++ b/LiteLoader/include/llapi/mc/LargeFireball.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Fireball.hpp" diff --git a/LiteLoader/Header/MC/LargeHellCaveFeature.hpp b/LiteLoader/include/llapi/mc/LargeHellCaveFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LargeHellCaveFeature.hpp rename to LiteLoader/include/llapi/mc/LargeHellCaveFeature.hpp index 9f4092d..a8aac3c 100644 --- a/LiteLoader/Header/MC/LargeHellCaveFeature.hpp +++ b/LiteLoader/include/llapi/mc/LargeHellCaveFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LavaSlime.hpp b/LiteLoader/include/llapi/mc/LavaSlime.hpp similarity index 98% rename from LiteLoader/Header/MC/LavaSlime.hpp rename to LiteLoader/include/llapi/mc/LavaSlime.hpp index 9526b46..d4763e0 100644 --- a/LiteLoader/Header/MC/LavaSlime.hpp +++ b/LiteLoader/include/llapi/mc/LavaSlime.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Slime.hpp" diff --git a/LiteLoader/Header/MC/LayDownGoal.hpp b/LiteLoader/include/llapi/mc/LayDownGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/LayDownGoal.hpp rename to LiteLoader/include/llapi/mc/LayDownGoal.hpp index cc08020..dfe2b90 100644 --- a/LiteLoader/Header/MC/LayDownGoal.hpp +++ b/LiteLoader/include/llapi/mc/LayDownGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LayEggGoal.hpp b/LiteLoader/include/llapi/mc/LayEggGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/LayEggGoal.hpp rename to LiteLoader/include/llapi/mc/LayEggGoal.hpp index 02f9f0c..818415e 100644 --- a/LiteLoader/Header/MC/LayEggGoal.hpp +++ b/LiteLoader/include/llapi/mc/LayEggGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LayerBiomeSource.hpp b/LiteLoader/include/llapi/mc/LayerBiomeSource.hpp similarity index 97% rename from LiteLoader/Header/MC/LayerBiomeSource.hpp rename to LiteLoader/include/llapi/mc/LayerBiomeSource.hpp index a0b51bc..550dc7f 100644 --- a/LiteLoader/Header/MC/LayerBiomeSource.hpp +++ b/LiteLoader/include/llapi/mc/LayerBiomeSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeadItem.hpp b/LiteLoader/include/llapi/mc/LeadItem.hpp similarity index 98% rename from LiteLoader/Header/MC/LeadItem.hpp rename to LiteLoader/include/llapi/mc/LeadItem.hpp index 960302f..9e40a54 100644 --- a/LiteLoader/Header/MC/LeadItem.hpp +++ b/LiteLoader/include/llapi/mc/LeadItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeafBlock.hpp b/LiteLoader/include/llapi/mc/LeafBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/LeafBlock.hpp rename to LiteLoader/include/llapi/mc/LeafBlock.hpp index 76c74b0..680ebd6 100644 --- a/LiteLoader/Header/MC/LeafBlock.hpp +++ b/LiteLoader/include/llapi/mc/LeafBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeafBlockItem.hpp b/LiteLoader/include/llapi/mc/LeafBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/LeafBlockItem.hpp rename to LiteLoader/include/llapi/mc/LeafBlockItem.hpp index b4a8ce7..1dae26e 100644 --- a/LiteLoader/Header/MC/LeafBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/LeafBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeapAtTargetGoal.hpp b/LiteLoader/include/llapi/mc/LeapAtTargetGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/LeapAtTargetGoal.hpp rename to LiteLoader/include/llapi/mc/LeapAtTargetGoal.hpp index 241b815..cbdfa26 100644 --- a/LiteLoader/Header/MC/LeapAtTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/LeapAtTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeashFenceKnotActor.hpp b/LiteLoader/include/llapi/mc/LeashFenceKnotActor.hpp similarity index 98% rename from LiteLoader/Header/MC/LeashFenceKnotActor.hpp rename to LiteLoader/include/llapi/mc/LeashFenceKnotActor.hpp index fccedfe..26918a7 100644 --- a/LiteLoader/Header/MC/LeashFenceKnotActor.hpp +++ b/LiteLoader/include/llapi/mc/LeashFenceKnotActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeashableComponent.hpp b/LiteLoader/include/llapi/mc/LeashableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/LeashableComponent.hpp rename to LiteLoader/include/llapi/mc/LeashableComponent.hpp index 4d4069e..1e05fe0 100644 --- a/LiteLoader/Header/MC/LeashableComponent.hpp +++ b/LiteLoader/include/llapi/mc/LeashableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeashableDefinition.hpp b/LiteLoader/include/llapi/mc/LeashableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/LeashableDefinition.hpp rename to LiteLoader/include/llapi/mc/LeashableDefinition.hpp index 2a6cd3c..0fc88c9 100644 --- a/LiteLoader/Header/MC/LeashableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/LeashableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeashableSystem.hpp b/LiteLoader/include/llapi/mc/LeashableSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/LeashableSystem.hpp rename to LiteLoader/include/llapi/mc/LeashableSystem.hpp index b084c94..c5d1210 100644 --- a/LiteLoader/Header/MC/LeashableSystem.hpp +++ b/LiteLoader/include/llapi/mc/LeashableSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LecternBlock.hpp b/LiteLoader/include/llapi/mc/LecternBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/LecternBlock.hpp rename to LiteLoader/include/llapi/mc/LecternBlock.hpp index 66e4749..bb26466 100644 --- a/LiteLoader/Header/MC/LecternBlock.hpp +++ b/LiteLoader/include/llapi/mc/LecternBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LecternBlockActor.hpp b/LiteLoader/include/llapi/mc/LecternBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/LecternBlockActor.hpp rename to LiteLoader/include/llapi/mc/LecternBlockActor.hpp index 6a5426f..1d2b427 100644 --- a/LiteLoader/Header/MC/LecternBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/LecternBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LecternUpdatePacket.hpp b/LiteLoader/include/llapi/mc/LecternUpdatePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/LecternUpdatePacket.hpp rename to LiteLoader/include/llapi/mc/LecternUpdatePacket.hpp index f848f12..8697c4d 100644 --- a/LiteLoader/Header/MC/LecternUpdatePacket.hpp +++ b/LiteLoader/include/llapi/mc/LecternUpdatePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyBlockPlacementProcessor.hpp b/LiteLoader/include/llapi/mc/LegacyBlockPlacementProcessor.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyBlockPlacementProcessor.hpp rename to LiteLoader/include/llapi/mc/LegacyBlockPlacementProcessor.hpp index e23f668..ff12b39 100644 --- a/LiteLoader/Header/MC/LegacyBlockPlacementProcessor.hpp +++ b/LiteLoader/include/llapi/mc/LegacyBlockPlacementProcessor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyBodyControl.hpp b/LiteLoader/include/llapi/mc/LegacyBodyControl.hpp similarity index 95% rename from LiteLoader/Header/MC/LegacyBodyControl.hpp rename to LiteLoader/include/llapi/mc/LegacyBodyControl.hpp index 6ad9756..c4024d9 100644 --- a/LiteLoader/Header/MC/LegacyBodyControl.hpp +++ b/LiteLoader/include/llapi/mc/LegacyBodyControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyChunkStorage.hpp b/LiteLoader/include/llapi/mc/LegacyChunkStorage.hpp similarity index 97% rename from LiteLoader/Header/MC/LegacyChunkStorage.hpp rename to LiteLoader/include/llapi/mc/LegacyChunkStorage.hpp index b5ac302..27802d4 100644 --- a/LiteLoader/Header/MC/LegacyChunkStorage.hpp +++ b/LiteLoader/include/llapi/mc/LegacyChunkStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChunkSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyEmeraldOreFeature.hpp b/LiteLoader/include/llapi/mc/LegacyEmeraldOreFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyEmeraldOreFeature.hpp rename to LiteLoader/include/llapi/mc/LegacyEmeraldOreFeature.hpp index 9934c7f..56d579a 100644 --- a/LiteLoader/Header/MC/LegacyEmeraldOreFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacyEmeraldOreFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyFlowerFeature.hpp b/LiteLoader/include/llapi/mc/LegacyFlowerFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyFlowerFeature.hpp rename to LiteLoader/include/llapi/mc/LegacyFlowerFeature.hpp index ad8279e..39bb362 100644 --- a/LiteLoader/Header/MC/LegacyFlowerFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacyFlowerFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyForestFoliageFeature.hpp b/LiteLoader/include/llapi/mc/LegacyForestFoliageFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyForestFoliageFeature.hpp rename to LiteLoader/include/llapi/mc/LegacyForestFoliageFeature.hpp index 2cae8e1..c39b9a2 100644 --- a/LiteLoader/Header/MC/LegacyForestFoliageFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacyForestFoliageFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyForestRockFeature.hpp b/LiteLoader/include/llapi/mc/LegacyForestRockFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyForestRockFeature.hpp rename to LiteLoader/include/llapi/mc/LegacyForestRockFeature.hpp index 751b520..c73d40a 100644 --- a/LiteLoader/Header/MC/LegacyForestRockFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacyForestRockFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyIceFeature.hpp b/LiteLoader/include/llapi/mc/LegacyIceFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyIceFeature.hpp rename to LiteLoader/include/llapi/mc/LegacyIceFeature.hpp index d6778d7..49d326a 100644 --- a/LiteLoader/Header/MC/LegacyIceFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacyIceFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyJigsawPlacement.hpp b/LiteLoader/include/llapi/mc/LegacyJigsawPlacement.hpp similarity index 98% rename from LiteLoader/Header/MC/LegacyJigsawPlacement.hpp rename to LiteLoader/include/llapi/mc/LegacyJigsawPlacement.hpp index 7c19800..dc9aedd 100644 --- a/LiteLoader/Header/MC/LegacyJigsawPlacement.hpp +++ b/LiteLoader/include/llapi/mc/LegacyJigsawPlacement.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyPackIdVersion.hpp b/LiteLoader/include/llapi/mc/LegacyPackIdVersion.hpp similarity index 95% rename from LiteLoader/Header/MC/LegacyPackIdVersion.hpp rename to LiteLoader/include/llapi/mc/LegacyPackIdVersion.hpp index ca74812..d9e5890 100644 --- a/LiteLoader/Header/MC/LegacyPackIdVersion.hpp +++ b/LiteLoader/include/llapi/mc/LegacyPackIdVersion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacySmallMushroomsFeature.hpp b/LiteLoader/include/llapi/mc/LegacySmallMushroomsFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacySmallMushroomsFeature.hpp rename to LiteLoader/include/llapi/mc/LegacySmallMushroomsFeature.hpp index 7b919ff..4ea7339 100644 --- a/LiteLoader/Header/MC/LegacySmallMushroomsFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacySmallMushroomsFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacySpringsFeature.hpp b/LiteLoader/include/llapi/mc/LegacySpringsFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacySpringsFeature.hpp rename to LiteLoader/include/llapi/mc/LegacySpringsFeature.hpp index 59238b1..47f0f5c 100644 --- a/LiteLoader/Header/MC/LegacySpringsFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacySpringsFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyStructureActorInfo.hpp b/LiteLoader/include/llapi/mc/LegacyStructureActorInfo.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyStructureActorInfo.hpp rename to LiteLoader/include/llapi/mc/LegacyStructureActorInfo.hpp index f15b5a1..277b5f5 100644 --- a/LiteLoader/Header/MC/LegacyStructureActorInfo.hpp +++ b/LiteLoader/include/llapi/mc/LegacyStructureActorInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyStructureBlockInfo.hpp b/LiteLoader/include/llapi/mc/LegacyStructureBlockInfo.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyStructureBlockInfo.hpp rename to LiteLoader/include/llapi/mc/LegacyStructureBlockInfo.hpp index 2e8d193..0907a25 100644 --- a/LiteLoader/Header/MC/LegacyStructureBlockInfo.hpp +++ b/LiteLoader/include/llapi/mc/LegacyStructureBlockInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyStructureBlockPalette.hpp b/LiteLoader/include/llapi/mc/LegacyStructureBlockPalette.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyStructureBlockPalette.hpp rename to LiteLoader/include/llapi/mc/LegacyStructureBlockPalette.hpp index 9a57167..cc69c3c 100644 --- a/LiteLoader/Header/MC/LegacyStructureBlockPalette.hpp +++ b/LiteLoader/include/llapi/mc/LegacyStructureBlockPalette.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyStructureSettings.hpp b/LiteLoader/include/llapi/mc/LegacyStructureSettings.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyStructureSettings.hpp rename to LiteLoader/include/llapi/mc/LegacyStructureSettings.hpp index 96d6023..46855cd 100644 --- a/LiteLoader/Header/MC/LegacyStructureSettings.hpp +++ b/LiteLoader/include/llapi/mc/LegacyStructureSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyStructureTemplate.hpp b/LiteLoader/include/llapi/mc/LegacyStructureTemplate.hpp similarity index 98% rename from LiteLoader/Header/MC/LegacyStructureTemplate.hpp rename to LiteLoader/include/llapi/mc/LegacyStructureTemplate.hpp index f669b3b..5008c7a 100644 --- a/LiteLoader/Header/MC/LegacyStructureTemplate.hpp +++ b/LiteLoader/include/llapi/mc/LegacyStructureTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacySwampFoliageFeature.hpp b/LiteLoader/include/llapi/mc/LegacySwampFoliageFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacySwampFoliageFeature.hpp rename to LiteLoader/include/llapi/mc/LegacySwampFoliageFeature.hpp index d9bb5cc..f1ce4ba 100644 --- a/LiteLoader/Header/MC/LegacySwampFoliageFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacySwampFoliageFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyTradeableComponent.hpp b/LiteLoader/include/llapi/mc/LegacyTradeableComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/LegacyTradeableComponent.hpp rename to LiteLoader/include/llapi/mc/LegacyTradeableComponent.hpp index 8915763..5811594 100644 --- a/LiteLoader/Header/MC/LegacyTradeableComponent.hpp +++ b/LiteLoader/include/llapi/mc/LegacyTradeableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyTreeFeature.hpp b/LiteLoader/include/llapi/mc/LegacyTreeFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/LegacyTreeFeature.hpp rename to LiteLoader/include/llapi/mc/LegacyTreeFeature.hpp index 82afbb0..6926b3b 100644 --- a/LiteLoader/Header/MC/LegacyTreeFeature.hpp +++ b/LiteLoader/include/llapi/mc/LegacyTreeFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LegacyTreeFeatureHelpers.hpp b/LiteLoader/include/llapi/mc/LegacyTreeFeatureHelpers.hpp similarity index 94% rename from LiteLoader/Header/MC/LegacyTreeFeatureHelpers.hpp rename to LiteLoader/include/llapi/mc/LegacyTreeFeatureHelpers.hpp index a34d748..30eefb8 100644 --- a/LiteLoader/Header/MC/LegacyTreeFeatureHelpers.hpp +++ b/LiteLoader/include/llapi/mc/LegacyTreeFeatureHelpers.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Level.hpp b/LiteLoader/include/llapi/mc/Level.hpp similarity index 99% rename from LiteLoader/Header/MC/Level.hpp rename to LiteLoader/include/llapi/mc/Level.hpp index 2354581..00aad7c 100644 --- a/LiteLoader/Header/MC/Level.hpp +++ b/LiteLoader/include/llapi/mc/Level.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelChunk.hpp b/LiteLoader/include/llapi/mc/LevelChunk.hpp similarity index 99% rename from LiteLoader/Header/MC/LevelChunk.hpp rename to LiteLoader/include/llapi/mc/LevelChunk.hpp index 89b379f..85f3595 100644 --- a/LiteLoader/Header/MC/LevelChunk.hpp +++ b/LiteLoader/include/llapi/mc/LevelChunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelChunkBuilderData.hpp b/LiteLoader/include/llapi/mc/LevelChunkBuilderData.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelChunkBuilderData.hpp rename to LiteLoader/include/llapi/mc/LevelChunkBuilderData.hpp index be1f559..99d370e 100644 --- a/LiteLoader/Header/MC/LevelChunkBuilderData.hpp +++ b/LiteLoader/include/llapi/mc/LevelChunkBuilderData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelChunkFinalDeleter.hpp b/LiteLoader/include/llapi/mc/LevelChunkFinalDeleter.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelChunkFinalDeleter.hpp rename to LiteLoader/include/llapi/mc/LevelChunkFinalDeleter.hpp index 8fc2f01..9e1260d 100644 --- a/LiteLoader/Header/MC/LevelChunkFinalDeleter.hpp +++ b/LiteLoader/include/llapi/mc/LevelChunkFinalDeleter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelChunkGarbageCollector.hpp b/LiteLoader/include/llapi/mc/LevelChunkGarbageCollector.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelChunkGarbageCollector.hpp rename to LiteLoader/include/llapi/mc/LevelChunkGarbageCollector.hpp index 2a6a0c9..617b9c2 100644 --- a/LiteLoader/Header/MC/LevelChunkGarbageCollector.hpp +++ b/LiteLoader/include/llapi/mc/LevelChunkGarbageCollector.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelChunkPacket.hpp b/LiteLoader/include/llapi/mc/LevelChunkPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelChunkPacket.hpp rename to LiteLoader/include/llapi/mc/LevelChunkPacket.hpp index a351fa5..5768495 100644 --- a/LiteLoader/Header/MC/LevelChunkPacket.hpp +++ b/LiteLoader/include/llapi/mc/LevelChunkPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelChunkPhase1Deleter.hpp b/LiteLoader/include/llapi/mc/LevelChunkPhase1Deleter.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelChunkPhase1Deleter.hpp rename to LiteLoader/include/llapi/mc/LevelChunkPhase1Deleter.hpp index 2d7e206..5971038 100644 --- a/LiteLoader/Header/MC/LevelChunkPhase1Deleter.hpp +++ b/LiteLoader/include/llapi/mc/LevelChunkPhase1Deleter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/LevelContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/LevelContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/LevelContainerManagerModel.hpp index a0b10ed..bd8c56b 100644 --- a/LiteLoader/Header/MC/LevelContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/LevelContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelContainerModel.hpp b/LiteLoader/include/llapi/mc/LevelContainerModel.hpp similarity index 98% rename from LiteLoader/Header/MC/LevelContainerModel.hpp rename to LiteLoader/include/llapi/mc/LevelContainerModel.hpp index 9de0a82..6a02abe 100644 --- a/LiteLoader/Header/MC/LevelContainerModel.hpp +++ b/LiteLoader/include/llapi/mc/LevelContainerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelData.hpp b/LiteLoader/include/llapi/mc/LevelData.hpp similarity index 98% rename from LiteLoader/Header/MC/LevelData.hpp rename to LiteLoader/include/llapi/mc/LevelData.hpp index f6b82cb..14024c1 100644 --- a/LiteLoader/Header/MC/LevelData.hpp +++ b/LiteLoader/include/llapi/mc/LevelData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDataKeys.hpp b/LiteLoader/include/llapi/mc/LevelDataKeys.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelDataKeys.hpp rename to LiteLoader/include/llapi/mc/LevelDataKeys.hpp index 8654626..4888dfa 100644 --- a/LiteLoader/Header/MC/LevelDataKeys.hpp +++ b/LiteLoader/include/llapi/mc/LevelDataKeys.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDataValue.hpp b/LiteLoader/include/llapi/mc/LevelDataValue.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelDataValue.hpp rename to LiteLoader/include/llapi/mc/LevelDataValue.hpp index b875b25..c7c9134 100644 --- a/LiteLoader/Header/MC/LevelDataValue.hpp +++ b/LiteLoader/include/llapi/mc/LevelDataValue.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDataWrapper.hpp b/LiteLoader/include/llapi/mc/LevelDataWrapper.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelDataWrapper.hpp rename to LiteLoader/include/llapi/mc/LevelDataWrapper.hpp index 74da64b..8d2ea9b 100644 --- a/LiteLoader/Header/MC/LevelDataWrapper.hpp +++ b/LiteLoader/include/llapi/mc/LevelDataWrapper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDbEnv.hpp b/LiteLoader/include/llapi/mc/LevelDbEnv.hpp similarity index 98% rename from LiteLoader/Header/MC/LevelDbEnv.hpp rename to LiteLoader/include/llapi/mc/LevelDbEnv.hpp index 11cace7..9877c85 100644 --- a/LiteLoader/Header/MC/LevelDbEnv.hpp +++ b/LiteLoader/include/llapi/mc/LevelDbEnv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDbFileLock.hpp b/LiteLoader/include/llapi/mc/LevelDbFileLock.hpp similarity index 94% rename from LiteLoader/Header/MC/LevelDbFileLock.hpp rename to LiteLoader/include/llapi/mc/LevelDbFileLock.hpp index 66ec726..b8dec32 100644 --- a/LiteLoader/Header/MC/LevelDbFileLock.hpp +++ b/LiteLoader/include/llapi/mc/LevelDbFileLock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDbLogger.hpp b/LiteLoader/include/llapi/mc/LevelDbLogger.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelDbLogger.hpp rename to LiteLoader/include/llapi/mc/LevelDbLogger.hpp index 86126f8..30ab8df 100644 --- a/LiteLoader/Header/MC/LevelDbLogger.hpp +++ b/LiteLoader/include/llapi/mc/LevelDbLogger.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDbRandomAccessFile.hpp b/LiteLoader/include/llapi/mc/LevelDbRandomAccessFile.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelDbRandomAccessFile.hpp rename to LiteLoader/include/llapi/mc/LevelDbRandomAccessFile.hpp index edf9ab1..4c7a10e 100644 --- a/LiteLoader/Header/MC/LevelDbRandomAccessFile.hpp +++ b/LiteLoader/include/llapi/mc/LevelDbRandomAccessFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDbSequentialFile.hpp b/LiteLoader/include/llapi/mc/LevelDbSequentialFile.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelDbSequentialFile.hpp rename to LiteLoader/include/llapi/mc/LevelDbSequentialFile.hpp index e47d677..ee6644e 100644 --- a/LiteLoader/Header/MC/LevelDbSequentialFile.hpp +++ b/LiteLoader/include/llapi/mc/LevelDbSequentialFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelDbWritableFile.hpp b/LiteLoader/include/llapi/mc/LevelDbWritableFile.hpp similarity index 97% rename from LiteLoader/Header/MC/LevelDbWritableFile.hpp rename to LiteLoader/include/llapi/mc/LevelDbWritableFile.hpp index ac1193f..d972cb3 100644 --- a/LiteLoader/Header/MC/LevelDbWritableFile.hpp +++ b/LiteLoader/include/llapi/mc/LevelDbWritableFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelEventCoordinator.hpp b/LiteLoader/include/llapi/mc/LevelEventCoordinator.hpp similarity index 95% rename from LiteLoader/Header/MC/LevelEventCoordinator.hpp rename to LiteLoader/include/llapi/mc/LevelEventCoordinator.hpp index b6b9ebd..8b6abe0 100644 --- a/LiteLoader/Header/MC/LevelEventCoordinator.hpp +++ b/LiteLoader/include/llapi/mc/LevelEventCoordinator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelEventGenericPacket.hpp b/LiteLoader/include/llapi/mc/LevelEventGenericPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelEventGenericPacket.hpp rename to LiteLoader/include/llapi/mc/LevelEventGenericPacket.hpp index 37af4ea..4aaf897 100644 --- a/LiteLoader/Header/MC/LevelEventGenericPacket.hpp +++ b/LiteLoader/include/llapi/mc/LevelEventGenericPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelEventListener.hpp b/LiteLoader/include/llapi/mc/LevelEventListener.hpp similarity index 97% rename from LiteLoader/Header/MC/LevelEventListener.hpp rename to LiteLoader/include/llapi/mc/LevelEventListener.hpp index e70ea9c..dc55996 100644 --- a/LiteLoader/Header/MC/LevelEventListener.hpp +++ b/LiteLoader/include/llapi/mc/LevelEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelEventPacket.hpp b/LiteLoader/include/llapi/mc/LevelEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelEventPacket.hpp rename to LiteLoader/include/llapi/mc/LevelEventPacket.hpp index 1b86b91..4c01dc0 100644 --- a/LiteLoader/Header/MC/LevelEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/LevelEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelListener.hpp b/LiteLoader/include/llapi/mc/LevelListener.hpp similarity index 99% rename from LiteLoader/Header/MC/LevelListener.hpp rename to LiteLoader/include/llapi/mc/LevelListener.hpp index 4681f99..910fa5e 100644 --- a/LiteLoader/Header/MC/LevelListener.hpp +++ b/LiteLoader/include/llapi/mc/LevelListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockSourceListener.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelSettings.hpp b/LiteLoader/include/llapi/mc/LevelSettings.hpp similarity index 97% rename from LiteLoader/Header/MC/LevelSettings.hpp rename to LiteLoader/include/llapi/mc/LevelSettings.hpp index 8dff852..80189fb 100644 --- a/LiteLoader/Header/MC/LevelSettings.hpp +++ b/LiteLoader/include/llapi/mc/LevelSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelSoundEventMap.hpp b/LiteLoader/include/llapi/mc/LevelSoundEventMap.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelSoundEventMap.hpp rename to LiteLoader/include/llapi/mc/LevelSoundEventMap.hpp index d518e9a..9fb3b5a 100644 --- a/LiteLoader/Header/MC/LevelSoundEventMap.hpp +++ b/LiteLoader/include/llapi/mc/LevelSoundEventMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelSoundEventPacket.hpp b/LiteLoader/include/llapi/mc/LevelSoundEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelSoundEventPacket.hpp rename to LiteLoader/include/llapi/mc/LevelSoundEventPacket.hpp index 84fd0ed..0d68627 100644 --- a/LiteLoader/Header/MC/LevelSoundEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/LevelSoundEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelSoundEventPacketV1.hpp b/LiteLoader/include/llapi/mc/LevelSoundEventPacketV1.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelSoundEventPacketV1.hpp rename to LiteLoader/include/llapi/mc/LevelSoundEventPacketV1.hpp index e3baf42..2965e17 100644 --- a/LiteLoader/Header/MC/LevelSoundEventPacketV1.hpp +++ b/LiteLoader/include/llapi/mc/LevelSoundEventPacketV1.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelSoundEventPacketV2.hpp b/LiteLoader/include/llapi/mc/LevelSoundEventPacketV2.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelSoundEventPacketV2.hpp rename to LiteLoader/include/llapi/mc/LevelSoundEventPacketV2.hpp index f2c8550..818d90d 100644 --- a/LiteLoader/Header/MC/LevelSoundEventPacketV2.hpp +++ b/LiteLoader/include/llapi/mc/LevelSoundEventPacketV2.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelStorage.hpp b/LiteLoader/include/llapi/mc/LevelStorage.hpp similarity index 99% rename from LiteLoader/Header/MC/LevelStorage.hpp rename to LiteLoader/include/llapi/mc/LevelStorage.hpp index 2c24f55..b274d07 100644 --- a/LiteLoader/Header/MC/LevelStorage.hpp +++ b/LiteLoader/include/llapi/mc/LevelStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "Bedrock.hpp" diff --git a/LiteLoader/Header/MC/LevelStorageSource.hpp b/LiteLoader/include/llapi/mc/LevelStorageSource.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelStorageSource.hpp rename to LiteLoader/include/llapi/mc/LevelStorageSource.hpp index bf8cbd6..6795d4c 100644 --- a/LiteLoader/Header/MC/LevelStorageSource.hpp +++ b/LiteLoader/include/llapi/mc/LevelStorageSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelStorageWriteBatch.hpp b/LiteLoader/include/llapi/mc/LevelStorageWriteBatch.hpp similarity index 97% rename from LiteLoader/Header/MC/LevelStorageWriteBatch.hpp rename to LiteLoader/include/llapi/mc/LevelStorageWriteBatch.hpp index e46f7bc..5872f3d 100644 --- a/LiteLoader/Header/MC/LevelStorageWriteBatch.hpp +++ b/LiteLoader/include/llapi/mc/LevelStorageWriteBatch.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LevelSummary.hpp b/LiteLoader/include/llapi/mc/LevelSummary.hpp similarity index 96% rename from LiteLoader/Header/MC/LevelSummary.hpp rename to LiteLoader/include/llapi/mc/LevelSummary.hpp index 660e6db..71781c8 100644 --- a/LiteLoader/Header/MC/LevelSummary.hpp +++ b/LiteLoader/include/llapi/mc/LevelSummary.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LeverBlock.hpp b/LiteLoader/include/llapi/mc/LeverBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/LeverBlock.hpp rename to LiteLoader/include/llapi/mc/LeverBlock.hpp index f3e86b1..bb0d458 100644 --- a/LiteLoader/Header/MC/LeverBlock.hpp +++ b/LiteLoader/include/llapi/mc/LeverBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LibraryItemScreenCapabilities.hpp b/LiteLoader/include/llapi/mc/LibraryItemScreenCapabilities.hpp similarity index 96% rename from LiteLoader/Header/MC/LibraryItemScreenCapabilities.hpp rename to LiteLoader/include/llapi/mc/LibraryItemScreenCapabilities.hpp index d06be82..db114f4 100644 --- a/LiteLoader/Header/MC/LibraryItemScreenCapabilities.hpp +++ b/LiteLoader/include/llapi/mc/LibraryItemScreenCapabilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LightBlock.hpp b/LiteLoader/include/llapi/mc/LightBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/LightBlock.hpp rename to LiteLoader/include/llapi/mc/LightBlock.hpp index 0f911fb..6587942 100644 --- a/LiteLoader/Header/MC/LightBlock.hpp +++ b/LiteLoader/include/llapi/mc/LightBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LightGemBlock.hpp b/LiteLoader/include/llapi/mc/LightGemBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/LightGemBlock.hpp rename to LiteLoader/include/llapi/mc/LightGemBlock.hpp index dcd2a25..45dc9d1 100644 --- a/LiteLoader/Header/MC/LightGemBlock.hpp +++ b/LiteLoader/include/llapi/mc/LightGemBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LightningBolt.hpp b/LiteLoader/include/llapi/mc/LightningBolt.hpp similarity index 98% rename from LiteLoader/Header/MC/LightningBolt.hpp rename to LiteLoader/include/llapi/mc/LightningBolt.hpp index 0a672f0..833860b 100644 --- a/LiteLoader/Header/MC/LightningBolt.hpp +++ b/LiteLoader/include/llapi/mc/LightningBolt.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LingeringPotionItem.hpp b/LiteLoader/include/llapi/mc/LingeringPotionItem.hpp similarity index 98% rename from LiteLoader/Header/MC/LingeringPotionItem.hpp rename to LiteLoader/include/llapi/mc/LingeringPotionItem.hpp index 2185186..0b3dbd7 100644 --- a/LiteLoader/Header/MC/LingeringPotionItem.hpp +++ b/LiteLoader/include/llapi/mc/LingeringPotionItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Potion.hpp" #include "PotionItem.hpp" diff --git a/LiteLoader/Header/MC/LiquidBlock.hpp b/LiteLoader/include/llapi/mc/LiquidBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/LiquidBlock.hpp rename to LiteLoader/include/llapi/mc/LiquidBlock.hpp index e1a24e1..5a586a4 100644 --- a/LiteLoader/Header/MC/LiquidBlock.hpp +++ b/LiteLoader/include/llapi/mc/LiquidBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LiquidBlockDynamic.hpp b/LiteLoader/include/llapi/mc/LiquidBlockDynamic.hpp similarity index 99% rename from LiteLoader/Header/MC/LiquidBlockDynamic.hpp rename to LiteLoader/include/llapi/mc/LiquidBlockDynamic.hpp index 4d25293..c3bd518 100644 --- a/LiteLoader/Header/MC/LiquidBlockDynamic.hpp +++ b/LiteLoader/include/llapi/mc/LiquidBlockDynamic.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LiquidBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LiquidBlockStatic.hpp b/LiteLoader/include/llapi/mc/LiquidBlockStatic.hpp similarity index 98% rename from LiteLoader/Header/MC/LiquidBlockStatic.hpp rename to LiteLoader/include/llapi/mc/LiquidBlockStatic.hpp index 34a0250..61789d3 100644 --- a/LiteLoader/Header/MC/LiquidBlockStatic.hpp +++ b/LiteLoader/include/llapi/mc/LiquidBlockStatic.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LiquidBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ListCommand.hpp b/LiteLoader/include/llapi/mc/ListCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ListCommand.hpp rename to LiteLoader/include/llapi/mc/ListCommand.hpp index 6663969..5747080 100644 --- a/LiteLoader/Header/MC/ListCommand.hpp +++ b/LiteLoader/include/llapi/mc/ListCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ListDCommand.hpp b/LiteLoader/include/llapi/mc/ListDCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ListDCommand.hpp rename to LiteLoader/include/llapi/mc/ListDCommand.hpp index 5edb97c..8ac7955 100644 --- a/LiteLoader/Header/MC/ListDCommand.hpp +++ b/LiteLoader/include/llapi/mc/ListDCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ListTag.hpp b/LiteLoader/include/llapi/mc/ListTag.hpp similarity index 99% rename from LiteLoader/Header/MC/ListTag.hpp rename to LiteLoader/include/llapi/mc/ListTag.hpp index fc57a09..9a68876 100644 --- a/LiteLoader/Header/MC/ListTag.hpp +++ b/LiteLoader/include/llapi/mc/ListTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ListTagFloatAdder.hpp b/LiteLoader/include/llapi/mc/ListTagFloatAdder.hpp similarity index 95% rename from LiteLoader/Header/MC/ListTagFloatAdder.hpp rename to LiteLoader/include/llapi/mc/ListTagFloatAdder.hpp index 3f01ce7..ca6b284 100644 --- a/LiteLoader/Header/MC/ListTagFloatAdder.hpp +++ b/LiteLoader/include/llapi/mc/ListTagFloatAdder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ListTagIntAdder.hpp b/LiteLoader/include/llapi/mc/ListTagIntAdder.hpp similarity index 95% rename from LiteLoader/Header/MC/ListTagIntAdder.hpp rename to LiteLoader/include/llapi/mc/ListTagIntAdder.hpp index 351f075..13e8074 100644 --- a/LiteLoader/Header/MC/ListTagIntAdder.hpp +++ b/LiteLoader/include/llapi/mc/ListTagIntAdder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ListenerInfo.hpp b/LiteLoader/include/llapi/mc/ListenerInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/ListenerInfo.hpp rename to LiteLoader/include/llapi/mc/ListenerInfo.hpp index 4f25fdd..fa3d61e 100644 --- a/LiteLoader/Header/MC/ListenerInfo.hpp +++ b/LiteLoader/include/llapi/mc/ListenerInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Llama.hpp b/LiteLoader/include/llapi/mc/Llama.hpp similarity index 98% rename from LiteLoader/Header/MC/Llama.hpp rename to LiteLoader/include/llapi/mc/Llama.hpp index e061676..c113c0e 100644 --- a/LiteLoader/Header/MC/Llama.hpp +++ b/LiteLoader/include/llapi/mc/Llama.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/LlamaSpit.hpp b/LiteLoader/include/llapi/mc/LlamaSpit.hpp similarity index 98% rename from LiteLoader/Header/MC/LlamaSpit.hpp rename to LiteLoader/include/llapi/mc/LlamaSpit.hpp index 49452ef..dc1fcdf 100644 --- a/LiteLoader/Header/MC/LlamaSpit.hpp +++ b/LiteLoader/include/llapi/mc/LlamaSpit.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LocalConnector.hpp b/LiteLoader/include/llapi/mc/LocalConnector.hpp similarity index 98% rename from LiteLoader/Header/MC/LocalConnector.hpp rename to LiteLoader/include/llapi/mc/LocalConnector.hpp index 7c95e05..0cc392a 100644 --- a/LiteLoader/Header/MC/LocalConnector.hpp +++ b/LiteLoader/include/llapi/mc/LocalConnector.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Social.hpp" #include "Connector.hpp" #include "RakNet.hpp" diff --git a/LiteLoader/Header/MC/Localization.hpp b/LiteLoader/include/llapi/mc/Localization.hpp similarity index 98% rename from LiteLoader/Header/MC/Localization.hpp rename to LiteLoader/include/llapi/mc/Localization.hpp index 542c8f2..b1bd516 100644 --- a/LiteLoader/Header/MC/Localization.hpp +++ b/LiteLoader/include/llapi/mc/Localization.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LocateCommand.hpp b/LiteLoader/include/llapi/mc/LocateCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/LocateCommand.hpp rename to LiteLoader/include/llapi/mc/LocateCommand.hpp index e148779..5b49f20 100644 --- a/LiteLoader/Header/MC/LocateCommand.hpp +++ b/LiteLoader/include/llapi/mc/LocateCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LodestoneBlock.hpp b/LiteLoader/include/llapi/mc/LodestoneBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/LodestoneBlock.hpp rename to LiteLoader/include/llapi/mc/LodestoneBlock.hpp index e9811eb..b3021af 100644 --- a/LiteLoader/Header/MC/LodestoneBlock.hpp +++ b/LiteLoader/include/llapi/mc/LodestoneBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LodestoneBlockActor.hpp b/LiteLoader/include/llapi/mc/LodestoneBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/LodestoneBlockActor.hpp rename to LiteLoader/include/llapi/mc/LodestoneBlockActor.hpp index 9b4ffc4..ea9f53a 100644 --- a/LiteLoader/Header/MC/LodestoneBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/LodestoneBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LodestoneCompassComponent.hpp b/LiteLoader/include/llapi/mc/LodestoneCompassComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/LodestoneCompassComponent.hpp rename to LiteLoader/include/llapi/mc/LodestoneCompassComponent.hpp index da8c959..a006547 100644 --- a/LiteLoader/Header/MC/LodestoneCompassComponent.hpp +++ b/LiteLoader/include/llapi/mc/LodestoneCompassComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LodestoneCompassComponentCalculator.hpp b/LiteLoader/include/llapi/mc/LodestoneCompassComponentCalculator.hpp similarity index 96% rename from LiteLoader/Header/MC/LodestoneCompassComponentCalculator.hpp rename to LiteLoader/include/llapi/mc/LodestoneCompassComponentCalculator.hpp index 6a3b1c5..015406a 100644 --- a/LiteLoader/Header/MC/LodestoneCompassComponentCalculator.hpp +++ b/LiteLoader/include/llapi/mc/LodestoneCompassComponentCalculator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LodestoneCompassItem.hpp b/LiteLoader/include/llapi/mc/LodestoneCompassItem.hpp similarity index 98% rename from LiteLoader/Header/MC/LodestoneCompassItem.hpp rename to LiteLoader/include/llapi/mc/LodestoneCompassItem.hpp index cf1d38f..043f285 100644 --- a/LiteLoader/Header/MC/LodestoneCompassItem.hpp +++ b/LiteLoader/include/llapi/mc/LodestoneCompassItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LogBlock.hpp b/LiteLoader/include/llapi/mc/LogBlock.hpp similarity index 96% rename from LiteLoader/Header/MC/LogBlock.hpp rename to LiteLoader/include/llapi/mc/LogBlock.hpp index 21ce2a5..23b6e01 100644 --- a/LiteLoader/Header/MC/LogBlock.hpp +++ b/LiteLoader/include/llapi/mc/LogBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LoginPacket.hpp b/LiteLoader/include/llapi/mc/LoginPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/LoginPacket.hpp rename to LiteLoader/include/llapi/mc/LoginPacket.hpp index f1ec176..e39c320 100644 --- a/LiteLoader/Header/MC/LoginPacket.hpp +++ b/LiteLoader/include/llapi/mc/LoginPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtActorDefinition.hpp b/LiteLoader/include/llapi/mc/LookAtActorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/LookAtActorDefinition.hpp rename to LiteLoader/include/llapi/mc/LookAtActorDefinition.hpp index 7c0c6a2..269c29f 100644 --- a/LiteLoader/Header/MC/LookAtActorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/LookAtActorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/LookAtActorGoal.hpp b/LiteLoader/include/llapi/mc/LookAtActorGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/LookAtActorGoal.hpp rename to LiteLoader/include/llapi/mc/LookAtActorGoal.hpp index ba0a25e..ee20a83 100644 --- a/LiteLoader/Header/MC/LookAtActorGoal.hpp +++ b/LiteLoader/include/llapi/mc/LookAtActorGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtActorNode.hpp b/LiteLoader/include/llapi/mc/LookAtActorNode.hpp similarity index 96% rename from LiteLoader/Header/MC/LookAtActorNode.hpp rename to LiteLoader/include/llapi/mc/LookAtActorNode.hpp index 923f2c7..dbd97a7 100644 --- a/LiteLoader/Header/MC/LookAtActorNode.hpp +++ b/LiteLoader/include/llapi/mc/LookAtActorNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtBlockDefinition.hpp b/LiteLoader/include/llapi/mc/LookAtBlockDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/LookAtBlockDefinition.hpp rename to LiteLoader/include/llapi/mc/LookAtBlockDefinition.hpp index 1db0cc2..e6f7ec4 100644 --- a/LiteLoader/Header/MC/LookAtBlockDefinition.hpp +++ b/LiteLoader/include/llapi/mc/LookAtBlockDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/LookAtBlockNode.hpp b/LiteLoader/include/llapi/mc/LookAtBlockNode.hpp similarity index 96% rename from LiteLoader/Header/MC/LookAtBlockNode.hpp rename to LiteLoader/include/llapi/mc/LookAtBlockNode.hpp index c968ac1..9b43741 100644 --- a/LiteLoader/Header/MC/LookAtBlockNode.hpp +++ b/LiteLoader/include/llapi/mc/LookAtBlockNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtDefinition.hpp b/LiteLoader/include/llapi/mc/LookAtDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/LookAtDefinition.hpp rename to LiteLoader/include/llapi/mc/LookAtDefinition.hpp index 746191d..001cd83 100644 --- a/LiteLoader/Header/MC/LookAtDefinition.hpp +++ b/LiteLoader/include/llapi/mc/LookAtDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/LookAtEntityGoal.hpp b/LiteLoader/include/llapi/mc/LookAtEntityGoal.hpp similarity index 95% rename from LiteLoader/Header/MC/LookAtEntityGoal.hpp rename to LiteLoader/include/llapi/mc/LookAtEntityGoal.hpp index b0149ef..62298d1 100644 --- a/LiteLoader/Header/MC/LookAtEntityGoal.hpp +++ b/LiteLoader/include/llapi/mc/LookAtEntityGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LookAtActorGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtPlayerGoal.hpp b/LiteLoader/include/llapi/mc/LookAtPlayerGoal.hpp similarity index 95% rename from LiteLoader/Header/MC/LookAtPlayerGoal.hpp rename to LiteLoader/include/llapi/mc/LookAtPlayerGoal.hpp index a2e24c9..66040e6 100644 --- a/LiteLoader/Header/MC/LookAtPlayerGoal.hpp +++ b/LiteLoader/include/llapi/mc/LookAtPlayerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LookAtActorGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtSystem.hpp b/LiteLoader/include/llapi/mc/LookAtSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/LookAtSystem.hpp rename to LiteLoader/include/llapi/mc/LookAtSystem.hpp index 2193053..14420d1 100644 --- a/LiteLoader/Header/MC/LookAtSystem.hpp +++ b/LiteLoader/include/llapi/mc/LookAtSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtTargetGoal.hpp b/LiteLoader/include/llapi/mc/LookAtTargetGoal.hpp similarity index 95% rename from LiteLoader/Header/MC/LookAtTargetGoal.hpp rename to LiteLoader/include/llapi/mc/LookAtTargetGoal.hpp index 51edea9..6c59aad 100644 --- a/LiteLoader/Header/MC/LookAtTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/LookAtTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LookAtActorGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookAtTradingPlayerGoal.hpp b/LiteLoader/include/llapi/mc/LookAtTradingPlayerGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/LookAtTradingPlayerGoal.hpp rename to LiteLoader/include/llapi/mc/LookAtTradingPlayerGoal.hpp index eae9637..66039dd 100644 --- a/LiteLoader/Header/MC/LookAtTradingPlayerGoal.hpp +++ b/LiteLoader/include/llapi/mc/LookAtTradingPlayerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LookAtActorGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookControl.hpp b/LiteLoader/include/llapi/mc/LookControl.hpp similarity index 95% rename from LiteLoader/Header/MC/LookControl.hpp rename to LiteLoader/include/llapi/mc/LookControl.hpp index 54a572d..347a23c 100644 --- a/LiteLoader/Header/MC/LookControl.hpp +++ b/LiteLoader/include/llapi/mc/LookControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookControlComponent.hpp b/LiteLoader/include/llapi/mc/LookControlComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/LookControlComponent.hpp rename to LiteLoader/include/llapi/mc/LookControlComponent.hpp index fc8ede7..33a4db0 100644 --- a/LiteLoader/Header/MC/LookControlComponent.hpp +++ b/LiteLoader/include/llapi/mc/LookControlComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LookControlSystem.hpp b/LiteLoader/include/llapi/mc/LookControlSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/LookControlSystem.hpp rename to LiteLoader/include/llapi/mc/LookControlSystem.hpp index 050bbc6..27e9d3c 100644 --- a/LiteLoader/Header/MC/LookControlSystem.hpp +++ b/LiteLoader/include/llapi/mc/LookControlSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LoomBlock.hpp b/LiteLoader/include/llapi/mc/LoomBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/LoomBlock.hpp rename to LiteLoader/include/llapi/mc/LoomBlock.hpp index 1152fc0..3057637 100644 --- a/LiteLoader/Header/MC/LoomBlock.hpp +++ b/LiteLoader/include/llapi/mc/LoomBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LoomContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/LoomContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/LoomContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/LoomContainerManagerModel.hpp index 277f2f0..fab8f6c 100644 --- a/LiteLoader/Header/MC/LoomContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/LoomContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LoopbackPacketSender.hpp b/LiteLoader/include/llapi/mc/LoopbackPacketSender.hpp similarity index 97% rename from LiteLoader/Header/MC/LoopbackPacketSender.hpp rename to LiteLoader/include/llapi/mc/LoopbackPacketSender.hpp index a311ac8..57a45ba 100644 --- a/LiteLoader/Header/MC/LoopbackPacketSender.hpp +++ b/LiteLoader/include/llapi/mc/LoopbackPacketSender.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootComponent.hpp b/LiteLoader/include/llapi/mc/LootComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/LootComponent.hpp rename to LiteLoader/include/llapi/mc/LootComponent.hpp index 9293397..4ce5c70 100644 --- a/LiteLoader/Header/MC/LootComponent.hpp +++ b/LiteLoader/include/llapi/mc/LootComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootComponentDescription.hpp b/LiteLoader/include/llapi/mc/LootComponentDescription.hpp similarity index 97% rename from LiteLoader/Header/MC/LootComponentDescription.hpp rename to LiteLoader/include/llapi/mc/LootComponentDescription.hpp index cbe4f6b..e1f2ab6 100644 --- a/LiteLoader/Header/MC/LootComponentDescription.hpp +++ b/LiteLoader/include/llapi/mc/LootComponentDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootEnchant.hpp b/LiteLoader/include/llapi/mc/LootEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/LootEnchant.hpp rename to LiteLoader/include/llapi/mc/LootEnchant.hpp index c834b1b..d0f6790 100644 --- a/LiteLoader/Header/MC/LootEnchant.hpp +++ b/LiteLoader/include/llapi/mc/LootEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItem.hpp b/LiteLoader/include/llapi/mc/LootItem.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItem.hpp rename to LiteLoader/include/llapi/mc/LootItem.hpp index 65b4780..0be2d55 100644 --- a/LiteLoader/Header/MC/LootItem.hpp +++ b/LiteLoader/include/llapi/mc/LootItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemActorHasMarkVariantCondition.hpp b/LiteLoader/include/llapi/mc/LootItemActorHasMarkVariantCondition.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItemActorHasMarkVariantCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemActorHasMarkVariantCondition.hpp index 7338b39..800957a 100644 --- a/LiteLoader/Header/MC/LootItemActorHasMarkVariantCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemActorHasMarkVariantCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemCondition.hpp b/LiteLoader/include/llapi/mc/LootItemCondition.hpp similarity index 95% rename from LiteLoader/Header/MC/LootItemCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemCondition.hpp index 12294ec..2381835 100644 --- a/LiteLoader/Header/MC/LootItemCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemConditions.hpp b/LiteLoader/include/llapi/mc/LootItemConditions.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItemConditions.hpp rename to LiteLoader/include/llapi/mc/LootItemConditions.hpp index 7eb6ec1..054f2e8 100644 --- a/LiteLoader/Header/MC/LootItemConditions.hpp +++ b/LiteLoader/include/llapi/mc/LootItemConditions.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemFunction.hpp b/LiteLoader/include/llapi/mc/LootItemFunction.hpp similarity index 98% rename from LiteLoader/Header/MC/LootItemFunction.hpp rename to LiteLoader/include/llapi/mc/LootItemFunction.hpp index 1941389..39b6f86 100644 --- a/LiteLoader/Header/MC/LootItemFunction.hpp +++ b/LiteLoader/include/llapi/mc/LootItemFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemFunctions.hpp b/LiteLoader/include/llapi/mc/LootItemFunctions.hpp similarity index 95% rename from LiteLoader/Header/MC/LootItemFunctions.hpp rename to LiteLoader/include/llapi/mc/LootItemFunctions.hpp index f32729d..d8465d0 100644 --- a/LiteLoader/Header/MC/LootItemFunctions.hpp +++ b/LiteLoader/include/llapi/mc/LootItemFunctions.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemKilledByActorCondition.hpp b/LiteLoader/include/llapi/mc/LootItemKilledByActorCondition.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItemKilledByActorCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemKilledByActorCondition.hpp index 57472b7..20a87f1 100644 --- a/LiteLoader/Header/MC/LootItemKilledByActorCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemKilledByActorCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemKilledByPlayerCondition.hpp b/LiteLoader/include/llapi/mc/LootItemKilledByPlayerCondition.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItemKilledByPlayerCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemKilledByPlayerCondition.hpp index 62574a9..f37ac02 100644 --- a/LiteLoader/Header/MC/LootItemKilledByPlayerCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemKilledByPlayerCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemKilledByPlayerOrPetsCondition.hpp b/LiteLoader/include/llapi/mc/LootItemKilledByPlayerOrPetsCondition.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItemKilledByPlayerOrPetsCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemKilledByPlayerOrPetsCondition.hpp index aa86a19..80166d1 100644 --- a/LiteLoader/Header/MC/LootItemKilledByPlayerOrPetsCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemKilledByPlayerOrPetsCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemRandomChanceCondition.hpp b/LiteLoader/include/llapi/mc/LootItemRandomChanceCondition.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItemRandomChanceCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemRandomChanceCondition.hpp index dea775b..17de2e5 100644 --- a/LiteLoader/Header/MC/LootItemRandomChanceCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemRandomChanceCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemRandomChanceWithLootingCondition.hpp b/LiteLoader/include/llapi/mc/LootItemRandomChanceWithLootingCondition.hpp similarity index 96% rename from LiteLoader/Header/MC/LootItemRandomChanceWithLootingCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemRandomChanceWithLootingCondition.hpp index 4fb1800..11d50f8 100644 --- a/LiteLoader/Header/MC/LootItemRandomChanceWithLootingCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemRandomChanceWithLootingCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemRandomChanceWithSpecialModifierCondition.hpp b/LiteLoader/include/llapi/mc/LootItemRandomChanceWithSpecialModifierCondition.hpp similarity index 97% rename from LiteLoader/Header/MC/LootItemRandomChanceWithSpecialModifierCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemRandomChanceWithSpecialModifierCondition.hpp index 6a2832e..117d8a7 100644 --- a/LiteLoader/Header/MC/LootItemRandomChanceWithSpecialModifierCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemRandomChanceWithSpecialModifierCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootItemRandomDifficultyChanceCondition.hpp b/LiteLoader/include/llapi/mc/LootItemRandomDifficultyChanceCondition.hpp similarity index 97% rename from LiteLoader/Header/MC/LootItemRandomDifficultyChanceCondition.hpp rename to LiteLoader/include/llapi/mc/LootItemRandomDifficultyChanceCondition.hpp index a23a038..d74df1a 100644 --- a/LiteLoader/Header/MC/LootItemRandomDifficultyChanceCondition.hpp +++ b/LiteLoader/include/llapi/mc/LootItemRandomDifficultyChanceCondition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootPool.hpp b/LiteLoader/include/llapi/mc/LootPool.hpp similarity index 96% rename from LiteLoader/Header/MC/LootPool.hpp rename to LiteLoader/include/llapi/mc/LootPool.hpp index 0a3c92a..e10064f 100644 --- a/LiteLoader/Header/MC/LootPool.hpp +++ b/LiteLoader/include/llapi/mc/LootPool.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootPoolEntry.hpp b/LiteLoader/include/llapi/mc/LootPoolEntry.hpp similarity index 95% rename from LiteLoader/Header/MC/LootPoolEntry.hpp rename to LiteLoader/include/llapi/mc/LootPoolEntry.hpp index c86ed8f..0463703 100644 --- a/LiteLoader/Header/MC/LootPoolEntry.hpp +++ b/LiteLoader/include/llapi/mc/LootPoolEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootPoolTiers.hpp b/LiteLoader/include/llapi/mc/LootPoolTiers.hpp similarity index 95% rename from LiteLoader/Header/MC/LootPoolTiers.hpp rename to LiteLoader/include/llapi/mc/LootPoolTiers.hpp index f202f39..f82851f 100644 --- a/LiteLoader/Header/MC/LootPoolTiers.hpp +++ b/LiteLoader/include/llapi/mc/LootPoolTiers.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootTable.hpp b/LiteLoader/include/llapi/mc/LootTable.hpp similarity index 96% rename from LiteLoader/Header/MC/LootTable.hpp rename to LiteLoader/include/llapi/mc/LootTable.hpp index 3b1f9d6..33453f6 100644 --- a/LiteLoader/Header/MC/LootTable.hpp +++ b/LiteLoader/include/llapi/mc/LootTable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootTableContext.hpp b/LiteLoader/include/llapi/mc/LootTableContext.hpp similarity index 96% rename from LiteLoader/Header/MC/LootTableContext.hpp rename to LiteLoader/include/llapi/mc/LootTableContext.hpp index 0d926fd..53d345f 100644 --- a/LiteLoader/Header/MC/LootTableContext.hpp +++ b/LiteLoader/include/llapi/mc/LootTableContext.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootTableDescription.hpp b/LiteLoader/include/llapi/mc/LootTableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/LootTableDescription.hpp rename to LiteLoader/include/llapi/mc/LootTableDescription.hpp index c6b7e6b..52b0ad8 100644 --- a/LiteLoader/Header/MC/LootTableDescription.hpp +++ b/LiteLoader/include/llapi/mc/LootTableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootTableEntry.hpp b/LiteLoader/include/llapi/mc/LootTableEntry.hpp similarity index 95% rename from LiteLoader/Header/MC/LootTableEntry.hpp rename to LiteLoader/include/llapi/mc/LootTableEntry.hpp index 8a5012f..4a84035 100644 --- a/LiteLoader/Header/MC/LootTableEntry.hpp +++ b/LiteLoader/include/llapi/mc/LootTableEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootTableReference.hpp b/LiteLoader/include/llapi/mc/LootTableReference.hpp similarity index 96% rename from LiteLoader/Header/MC/LootTableReference.hpp rename to LiteLoader/include/llapi/mc/LootTableReference.hpp index 7db7d58..a960ff9 100644 --- a/LiteLoader/Header/MC/LootTableReference.hpp +++ b/LiteLoader/include/llapi/mc/LootTableReference.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootTables.hpp b/LiteLoader/include/llapi/mc/LootTables.hpp similarity index 95% rename from LiteLoader/Header/MC/LootTables.hpp rename to LiteLoader/include/llapi/mc/LootTables.hpp index 15bf71c..eebb787 100644 --- a/LiteLoader/Header/MC/LootTables.hpp +++ b/LiteLoader/include/llapi/mc/LootTables.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LootingEnchantFunction.hpp b/LiteLoader/include/llapi/mc/LootingEnchantFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/LootingEnchantFunction.hpp rename to LiteLoader/include/llapi/mc/LootingEnchantFunction.hpp index e8d6254..8096cc9 100644 --- a/LiteLoader/Header/MC/LootingEnchantFunction.hpp +++ b/LiteLoader/include/llapi/mc/LootingEnchantFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/LowMemoryWatcher.hpp b/LiteLoader/include/llapi/mc/LowMemoryWatcher.hpp similarity index 96% rename from LiteLoader/Header/MC/LowMemoryWatcher.hpp rename to LiteLoader/include/llapi/mc/LowMemoryWatcher.hpp index 7c6a241..0ee52c4 100644 --- a/LiteLoader/Header/MC/LowMemoryWatcher.hpp +++ b/LiteLoader/include/llapi/mc/LowMemoryWatcher.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MCRESULT.hpp b/LiteLoader/include/llapi/mc/MCRESULT.hpp similarity index 97% rename from LiteLoader/Header/MC/MCRESULT.hpp rename to LiteLoader/include/llapi/mc/MCRESULT.hpp index a256501..648b111 100644 --- a/LiteLoader/Header/MC/MCRESULT.hpp +++ b/LiteLoader/include/llapi/mc/MCRESULT.hpp @@ -5,7 +5,7 @@ */ #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/MagmaBlock.hpp b/LiteLoader/include/llapi/mc/MagmaBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/MagmaBlock.hpp rename to LiteLoader/include/llapi/mc/MagmaBlock.hpp index c917074..80a34d2 100644 --- a/LiteLoader/Header/MC/MagmaBlock.hpp +++ b/LiteLoader/include/llapi/mc/MagmaBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MainChunkSource.hpp b/LiteLoader/include/llapi/mc/MainChunkSource.hpp similarity index 98% rename from LiteLoader/Header/MC/MainChunkSource.hpp rename to LiteLoader/include/llapi/mc/MainChunkSource.hpp index 27f0a33..5e25e60 100644 --- a/LiteLoader/Header/MC/MainChunkSource.hpp +++ b/LiteLoader/include/llapi/mc/MainChunkSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChunkSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MakeLoveGoal.hpp b/LiteLoader/include/llapi/mc/MakeLoveGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/MakeLoveGoal.hpp rename to LiteLoader/include/llapi/mc/MakeLoveGoal.hpp index 56074c5..5b45ddc 100644 --- a/LiteLoader/Header/MC/MakeLoveGoal.hpp +++ b/LiteLoader/include/llapi/mc/MakeLoveGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ManagedWanderingTraderDescription.hpp b/LiteLoader/include/llapi/mc/ManagedWanderingTraderDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/ManagedWanderingTraderDescription.hpp rename to LiteLoader/include/llapi/mc/ManagedWanderingTraderDescription.hpp index 9bdf892..e59bad5 100644 --- a/LiteLoader/Header/MC/ManagedWanderingTraderDescription.hpp +++ b/LiteLoader/include/llapi/mc/ManagedWanderingTraderDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapCloningRecipe.hpp b/LiteLoader/include/llapi/mc/MapCloningRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/MapCloningRecipe.hpp rename to LiteLoader/include/llapi/mc/MapCloningRecipe.hpp index a9094db..fa025cd 100644 --- a/LiteLoader/Header/MC/MapCloningRecipe.hpp +++ b/LiteLoader/include/llapi/mc/MapCloningRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapConstants.hpp b/LiteLoader/include/llapi/mc/MapConstants.hpp similarity index 98% rename from LiteLoader/Header/MC/MapConstants.hpp rename to LiteLoader/include/llapi/mc/MapConstants.hpp index a340da5..c75aef6 100644 --- a/LiteLoader/Header/MC/MapConstants.hpp +++ b/LiteLoader/include/llapi/mc/MapConstants.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapCreateLockedCopyPacket.hpp b/LiteLoader/include/llapi/mc/MapCreateLockedCopyPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/MapCreateLockedCopyPacket.hpp rename to LiteLoader/include/llapi/mc/MapCreateLockedCopyPacket.hpp index 9687640..81e1ed6 100644 --- a/LiteLoader/Header/MC/MapCreateLockedCopyPacket.hpp +++ b/LiteLoader/include/llapi/mc/MapCreateLockedCopyPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapDecoration.hpp b/LiteLoader/include/llapi/mc/MapDecoration.hpp similarity index 95% rename from LiteLoader/Header/MC/MapDecoration.hpp rename to LiteLoader/include/llapi/mc/MapDecoration.hpp index 98d3c5c..5cfcf70 100644 --- a/LiteLoader/Header/MC/MapDecoration.hpp +++ b/LiteLoader/include/llapi/mc/MapDecoration.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapExtendingRecipe.hpp b/LiteLoader/include/llapi/mc/MapExtendingRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/MapExtendingRecipe.hpp rename to LiteLoader/include/llapi/mc/MapExtendingRecipe.hpp index 34d66c7..878ec43 100644 --- a/LiteLoader/Header/MC/MapExtendingRecipe.hpp +++ b/LiteLoader/include/llapi/mc/MapExtendingRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapInfoRequestPacket.hpp b/LiteLoader/include/llapi/mc/MapInfoRequestPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/MapInfoRequestPacket.hpp rename to LiteLoader/include/llapi/mc/MapInfoRequestPacket.hpp index 244b677..ea1a2df 100644 --- a/LiteLoader/Header/MC/MapInfoRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/MapInfoRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapItem.hpp b/LiteLoader/include/llapi/mc/MapItem.hpp similarity index 99% rename from LiteLoader/Header/MC/MapItem.hpp rename to LiteLoader/include/llapi/mc/MapItem.hpp index 1ec5656..5d87c85 100644 --- a/LiteLoader/Header/MC/MapItem.hpp +++ b/LiteLoader/include/llapi/mc/MapItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MapItemSavedData.hpp" #include "Item.hpp" diff --git a/LiteLoader/Header/MC/MapItemSavedData.hpp b/LiteLoader/include/llapi/mc/MapItemSavedData.hpp similarity index 98% rename from LiteLoader/Header/MC/MapItemSavedData.hpp rename to LiteLoader/include/llapi/mc/MapItemSavedData.hpp index 55fb4ad..b98f5a9 100644 --- a/LiteLoader/Header/MC/MapItemSavedData.hpp +++ b/LiteLoader/include/llapi/mc/MapItemSavedData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MapDecoration.hpp" #include "MapItemTrackedActor.hpp" diff --git a/LiteLoader/Header/MC/MapItemTrackedActor.hpp b/LiteLoader/include/llapi/mc/MapItemTrackedActor.hpp similarity index 96% rename from LiteLoader/Header/MC/MapItemTrackedActor.hpp rename to LiteLoader/include/llapi/mc/MapItemTrackedActor.hpp index a4f68ad..7aca4a7 100644 --- a/LiteLoader/Header/MC/MapItemTrackedActor.hpp +++ b/LiteLoader/include/llapi/mc/MapItemTrackedActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapLockingRecipe.hpp b/LiteLoader/include/llapi/mc/MapLockingRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/MapLockingRecipe.hpp rename to LiteLoader/include/llapi/mc/MapLockingRecipe.hpp index 2164f23..d3c4995 100644 --- a/LiteLoader/Header/MC/MapLockingRecipe.hpp +++ b/LiteLoader/include/llapi/mc/MapLockingRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MapUpgradingRecipe.hpp b/LiteLoader/include/llapi/mc/MapUpgradingRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/MapUpgradingRecipe.hpp rename to LiteLoader/include/llapi/mc/MapUpgradingRecipe.hpp index 2416efd..86adf49 100644 --- a/LiteLoader/Header/MC/MapUpgradingRecipe.hpp +++ b/LiteLoader/include/llapi/mc/MapUpgradingRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MarkVariantDescription.hpp b/LiteLoader/include/llapi/mc/MarkVariantDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MarkVariantDescription.hpp rename to LiteLoader/include/llapi/mc/MarkVariantDescription.hpp index e607cdf..98bec3b 100644 --- a/LiteLoader/Header/MC/MarkVariantDescription.hpp +++ b/LiteLoader/include/llapi/mc/MarkVariantDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MarketplaceSkinValidator.hpp b/LiteLoader/include/llapi/mc/MarketplaceSkinValidator.hpp similarity index 95% rename from LiteLoader/Header/MC/MarketplaceSkinValidator.hpp rename to LiteLoader/include/llapi/mc/MarketplaceSkinValidator.hpp index 6f133ae..3d73cdf 100644 --- a/LiteLoader/Header/MC/MarketplaceSkinValidator.hpp +++ b/LiteLoader/include/llapi/mc/MarketplaceSkinValidator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Material.hpp b/LiteLoader/include/llapi/mc/Material.hpp similarity index 96% rename from LiteLoader/Header/MC/Material.hpp rename to LiteLoader/include/llapi/mc/Material.hpp index 41cccb0..7fa4c07 100644 --- a/LiteLoader/Header/MC/Material.hpp +++ b/LiteLoader/include/llapi/mc/Material.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MaterialReducerContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/MaterialReducerContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/MaterialReducerContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/MaterialReducerContainerManagerModel.hpp index 1cdfd36..458a050 100644 --- a/LiteLoader/Header/MC/MaterialReducerContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/MaterialReducerContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MeCommand.hpp b/LiteLoader/include/llapi/mc/MeCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/MeCommand.hpp rename to LiteLoader/include/llapi/mc/MeCommand.hpp index 3a534f1..65e7a40 100644 --- a/LiteLoader/Header/MC/MeCommand.hpp +++ b/LiteLoader/include/llapi/mc/MeCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MedicineItem.hpp b/LiteLoader/include/llapi/mc/MedicineItem.hpp similarity index 98% rename from LiteLoader/Header/MC/MedicineItem.hpp rename to LiteLoader/include/llapi/mc/MedicineItem.hpp index e189036..ef62eab 100644 --- a/LiteLoader/Header/MC/MedicineItem.hpp +++ b/LiteLoader/include/llapi/mc/MedicineItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MegaPineTreeCanopy.hpp b/LiteLoader/include/llapi/mc/MegaPineTreeCanopy.hpp similarity index 96% rename from LiteLoader/Header/MC/MegaPineTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/MegaPineTreeCanopy.hpp index 2933e01..9831875 100644 --- a/LiteLoader/Header/MC/MegaPineTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/MegaPineTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MegaTreeCanopy.hpp b/LiteLoader/include/llapi/mc/MegaTreeCanopy.hpp similarity index 96% rename from LiteLoader/Header/MC/MegaTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/MegaTreeCanopy.hpp index f8ed516..7e9ecfd 100644 --- a/LiteLoader/Header/MC/MegaTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/MegaTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MegaTreeTrunk.hpp b/LiteLoader/include/llapi/mc/MegaTreeTrunk.hpp similarity index 97% rename from LiteLoader/Header/MC/MegaTreeTrunk.hpp rename to LiteLoader/include/llapi/mc/MegaTreeTrunk.hpp index c53ea70..de5b118 100644 --- a/LiteLoader/Header/MC/MegaTreeTrunk.hpp +++ b/LiteLoader/include/llapi/mc/MegaTreeTrunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MeleeAttackDefinition.hpp b/LiteLoader/include/llapi/mc/MeleeAttackDefinition.hpp similarity index 95% rename from LiteLoader/Header/MC/MeleeAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/MeleeAttackDefinition.hpp index 6a21096..a7b6acc 100644 --- a/LiteLoader/Header/MC/MeleeAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/MeleeAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MeleeAttackGoal.hpp b/LiteLoader/include/llapi/mc/MeleeAttackGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MeleeAttackGoal.hpp rename to LiteLoader/include/llapi/mc/MeleeAttackGoal.hpp index db3a06f..4be2c8c 100644 --- a/LiteLoader/Header/MC/MeleeAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/MeleeAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MeleeWeaponEnchant.hpp b/LiteLoader/include/llapi/mc/MeleeWeaponEnchant.hpp similarity index 97% rename from LiteLoader/Header/MC/MeleeWeaponEnchant.hpp rename to LiteLoader/include/llapi/mc/MeleeWeaponEnchant.hpp index aa75ac9..c06ac14 100644 --- a/LiteLoader/Header/MC/MeleeWeaponEnchant.hpp +++ b/LiteLoader/include/llapi/mc/MeleeWeaponEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MelonBlock.hpp b/LiteLoader/include/llapi/mc/MelonBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/MelonBlock.hpp rename to LiteLoader/include/llapi/mc/MelonBlock.hpp index c2664a8..12288f3 100644 --- a/LiteLoader/Header/MC/MelonBlock.hpp +++ b/LiteLoader/include/llapi/mc/MelonBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MelonFeature.hpp b/LiteLoader/include/llapi/mc/MelonFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/MelonFeature.hpp rename to LiteLoader/include/llapi/mc/MelonFeature.hpp index fcd14ea..06f1169 100644 --- a/LiteLoader/Header/MC/MelonFeature.hpp +++ b/LiteLoader/include/llapi/mc/MelonFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MemoryMappedFileAccess.hpp b/LiteLoader/include/llapi/mc/MemoryMappedFileAccess.hpp similarity index 97% rename from LiteLoader/Header/MC/MemoryMappedFileAccess.hpp rename to LiteLoader/include/llapi/mc/MemoryMappedFileAccess.hpp index d075f5a..0de7163 100644 --- a/LiteLoader/Header/MC/MemoryMappedFileAccess.hpp +++ b/LiteLoader/include/llapi/mc/MemoryMappedFileAccess.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MemorySecureStorage.hpp b/LiteLoader/include/llapi/mc/MemorySecureStorage.hpp similarity index 96% rename from LiteLoader/Header/MC/MemorySecureStorage.hpp rename to LiteLoader/include/llapi/mc/MemorySecureStorage.hpp index ca7222e..2528b62 100644 --- a/LiteLoader/Header/MC/MemorySecureStorage.hpp +++ b/LiteLoader/include/llapi/mc/MemorySecureStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MendingEnchant.hpp b/LiteLoader/include/llapi/mc/MendingEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/MendingEnchant.hpp rename to LiteLoader/include/llapi/mc/MendingEnchant.hpp index 1d9a9db..e41e535 100644 --- a/LiteLoader/Header/MC/MendingEnchant.hpp +++ b/LiteLoader/include/llapi/mc/MendingEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MerchantRecipe.hpp b/LiteLoader/include/llapi/mc/MerchantRecipe.hpp similarity index 96% rename from LiteLoader/Header/MC/MerchantRecipe.hpp rename to LiteLoader/include/llapi/mc/MerchantRecipe.hpp index 926f763..70bd34d 100644 --- a/LiteLoader/Header/MC/MerchantRecipe.hpp +++ b/LiteLoader/include/llapi/mc/MerchantRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MerchantRecipeList.hpp b/LiteLoader/include/llapi/mc/MerchantRecipeList.hpp similarity index 97% rename from LiteLoader/Header/MC/MerchantRecipeList.hpp rename to LiteLoader/include/llapi/mc/MerchantRecipeList.hpp index 41d825d..006012e 100644 --- a/LiteLoader/Header/MC/MerchantRecipeList.hpp +++ b/LiteLoader/include/llapi/mc/MerchantRecipeList.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MessagingCommand.hpp b/LiteLoader/include/llapi/mc/MessagingCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/MessagingCommand.hpp rename to LiteLoader/include/llapi/mc/MessagingCommand.hpp index e190be9..5d59012 100644 --- a/LiteLoader/Header/MC/MessagingCommand.hpp +++ b/LiteLoader/include/llapi/mc/MessagingCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MetalBlock.hpp b/LiteLoader/include/llapi/mc/MetalBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/MetalBlock.hpp rename to LiteLoader/include/llapi/mc/MetalBlock.hpp index e2a13c2..15d2e7e 100644 --- a/LiteLoader/Header/MC/MetalBlock.hpp +++ b/LiteLoader/include/llapi/mc/MetalBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Minecart.hpp b/LiteLoader/include/llapi/mc/Minecart.hpp similarity index 99% rename from LiteLoader/Header/MC/Minecart.hpp rename to LiteLoader/include/llapi/mc/Minecart.hpp index 178a096..a00c852 100644 --- a/LiteLoader/Header/MC/Minecart.hpp +++ b/LiteLoader/include/llapi/mc/Minecart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MinecartBlockCommandOrigin.hpp b/LiteLoader/include/llapi/mc/MinecartBlockCommandOrigin.hpp similarity index 97% rename from LiteLoader/Header/MC/MinecartBlockCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/MinecartBlockCommandOrigin.hpp index ce4a6ed..0b32aba 100644 --- a/LiteLoader/Header/MC/MinecartBlockCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/MinecartBlockCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BlockCommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/MinecartChest.hpp b/LiteLoader/include/llapi/mc/MinecartChest.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecartChest.hpp rename to LiteLoader/include/llapi/mc/MinecartChest.hpp index cd35549..caa1e66 100644 --- a/LiteLoader/Header/MC/MinecartChest.hpp +++ b/LiteLoader/include/llapi/mc/MinecartChest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Minecart.hpp" diff --git a/LiteLoader/Header/MC/MinecartCommandBlock.hpp b/LiteLoader/include/llapi/mc/MinecartCommandBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecartCommandBlock.hpp rename to LiteLoader/include/llapi/mc/MinecartCommandBlock.hpp index 80beaa1..8b51f4e 100644 --- a/LiteLoader/Header/MC/MinecartCommandBlock.hpp +++ b/LiteLoader/include/llapi/mc/MinecartCommandBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Minecart.hpp" diff --git a/LiteLoader/Header/MC/MinecartHopper.hpp b/LiteLoader/include/llapi/mc/MinecartHopper.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecartHopper.hpp rename to LiteLoader/include/llapi/mc/MinecartHopper.hpp index 2e0d669..238d03a 100644 --- a/LiteLoader/Header/MC/MinecartHopper.hpp +++ b/LiteLoader/include/llapi/mc/MinecartHopper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Minecart.hpp" diff --git a/LiteLoader/Header/MC/MinecartItem.hpp b/LiteLoader/include/llapi/mc/MinecartItem.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecartItem.hpp rename to LiteLoader/include/llapi/mc/MinecartItem.hpp index 21d25d1..f0a4c41 100644 --- a/LiteLoader/Header/MC/MinecartItem.hpp +++ b/LiteLoader/include/llapi/mc/MinecartItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MinecartRideable.hpp b/LiteLoader/include/llapi/mc/MinecartRideable.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecartRideable.hpp rename to LiteLoader/include/llapi/mc/MinecartRideable.hpp index fbbbbaf..aafe629 100644 --- a/LiteLoader/Header/MC/MinecartRideable.hpp +++ b/LiteLoader/include/llapi/mc/MinecartRideable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Minecart.hpp" diff --git a/LiteLoader/Header/MC/MinecartTNT.hpp b/LiteLoader/include/llapi/mc/MinecartTNT.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecartTNT.hpp rename to LiteLoader/include/llapi/mc/MinecartTNT.hpp index da2b5c6..93901c1 100644 --- a/LiteLoader/Header/MC/MinecartTNT.hpp +++ b/LiteLoader/include/llapi/mc/MinecartTNT.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Minecart.hpp" diff --git a/LiteLoader/Header/MC/Minecraft.hpp b/LiteLoader/include/llapi/mc/Minecraft.hpp similarity index 98% rename from LiteLoader/Header/MC/Minecraft.hpp rename to LiteLoader/include/llapi/mc/Minecraft.hpp index 6aeb51f..a54b823 100644 --- a/LiteLoader/Header/MC/Minecraft.hpp +++ b/LiteLoader/include/llapi/mc/Minecraft.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MinecraftCommands.hpp b/LiteLoader/include/llapi/mc/MinecraftCommands.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecraftCommands.hpp rename to LiteLoader/include/llapi/mc/MinecraftCommands.hpp index 31d8ed7..81b32b8 100644 --- a/LiteLoader/Header/MC/MinecraftCommands.hpp +++ b/LiteLoader/include/llapi/mc/MinecraftCommands.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/MinecraftEventing.hpp b/LiteLoader/include/llapi/mc/MinecraftEventing.hpp similarity index 99% rename from LiteLoader/Header/MC/MinecraftEventing.hpp rename to LiteLoader/include/llapi/mc/MinecraftEventing.hpp index b2439af..964e514 100644 --- a/LiteLoader/Header/MC/MinecraftEventing.hpp +++ b/LiteLoader/include/llapi/mc/MinecraftEventing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "IMinecraftEventing.hpp" diff --git a/LiteLoader/Header/MC/MinecraftPackets.hpp b/LiteLoader/include/llapi/mc/MinecraftPackets.hpp similarity index 96% rename from LiteLoader/Header/MC/MinecraftPackets.hpp rename to LiteLoader/include/llapi/mc/MinecraftPackets.hpp index d1c6a23..107b656 100644 --- a/LiteLoader/Header/MC/MinecraftPackets.hpp +++ b/LiteLoader/include/llapi/mc/MinecraftPackets.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MinecraftScheduler.hpp b/LiteLoader/include/llapi/mc/MinecraftScheduler.hpp similarity index 95% rename from LiteLoader/Header/MC/MinecraftScheduler.hpp rename to LiteLoader/include/llapi/mc/MinecraftScheduler.hpp index 51576ad..e1d6f83 100644 --- a/LiteLoader/Header/MC/MinecraftScheduler.hpp +++ b/LiteLoader/include/llapi/mc/MinecraftScheduler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MinecraftServerScriptEngine.hpp b/LiteLoader/include/llapi/mc/MinecraftServerScriptEngine.hpp similarity index 98% rename from LiteLoader/Header/MC/MinecraftServerScriptEngine.hpp rename to LiteLoader/include/llapi/mc/MinecraftServerScriptEngine.hpp index c320f81..2b23d73 100644 --- a/LiteLoader/Header/MC/MinecraftServerScriptEngine.hpp +++ b/LiteLoader/include/llapi/mc/MinecraftServerScriptEngine.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MinecraftWorkerPool.hpp b/LiteLoader/include/llapi/mc/MinecraftWorkerPool.hpp similarity index 97% rename from LiteLoader/Header/MC/MinecraftWorkerPool.hpp rename to LiteLoader/include/llapi/mc/MinecraftWorkerPool.hpp index dcaa142..19d94bd 100644 --- a/LiteLoader/Header/MC/MinecraftWorkerPool.hpp +++ b/LiteLoader/include/llapi/mc/MinecraftWorkerPool.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftCorridor.hpp b/LiteLoader/include/llapi/mc/MineshaftCorridor.hpp similarity index 98% rename from LiteLoader/Header/MC/MineshaftCorridor.hpp rename to LiteLoader/include/llapi/mc/MineshaftCorridor.hpp index d8434d1..53b143f 100644 --- a/LiteLoader/Header/MC/MineshaftCorridor.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftCorridor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftCrossing.hpp b/LiteLoader/include/llapi/mc/MineshaftCrossing.hpp similarity index 97% rename from LiteLoader/Header/MC/MineshaftCrossing.hpp rename to LiteLoader/include/llapi/mc/MineshaftCrossing.hpp index 52a46ba..9e45416 100644 --- a/LiteLoader/Header/MC/MineshaftCrossing.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftCrossing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftData.hpp b/LiteLoader/include/llapi/mc/MineshaftData.hpp similarity index 94% rename from LiteLoader/Header/MC/MineshaftData.hpp rename to LiteLoader/include/llapi/mc/MineshaftData.hpp index 1117420..a7f5f14 100644 --- a/LiteLoader/Header/MC/MineshaftData.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftFeature.hpp b/LiteLoader/include/llapi/mc/MineshaftFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/MineshaftFeature.hpp rename to LiteLoader/include/llapi/mc/MineshaftFeature.hpp index 8de87a1..7049a31 100644 --- a/LiteLoader/Header/MC/MineshaftFeature.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftPiece.hpp b/LiteLoader/include/llapi/mc/MineshaftPiece.hpp similarity index 97% rename from LiteLoader/Header/MC/MineshaftPiece.hpp rename to LiteLoader/include/llapi/mc/MineshaftPiece.hpp index 9c24e10..7b7ac73 100644 --- a/LiteLoader/Header/MC/MineshaftPiece.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftRoom.hpp b/LiteLoader/include/llapi/mc/MineshaftRoom.hpp similarity index 97% rename from LiteLoader/Header/MC/MineshaftRoom.hpp rename to LiteLoader/include/llapi/mc/MineshaftRoom.hpp index ee9d554..be24f57 100644 --- a/LiteLoader/Header/MC/MineshaftRoom.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftStairs.hpp b/LiteLoader/include/llapi/mc/MineshaftStairs.hpp similarity index 96% rename from LiteLoader/Header/MC/MineshaftStairs.hpp rename to LiteLoader/include/llapi/mc/MineshaftStairs.hpp index b5a6f12..3251c95 100644 --- a/LiteLoader/Header/MC/MineshaftStairs.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftStairs.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MineshaftStart.hpp b/LiteLoader/include/llapi/mc/MineshaftStart.hpp similarity index 96% rename from LiteLoader/Header/MC/MineshaftStart.hpp rename to LiteLoader/include/llapi/mc/MineshaftStart.hpp index 8355976..20a362c 100644 --- a/LiteLoader/Header/MC/MineshaftStart.hpp +++ b/LiteLoader/include/llapi/mc/MineshaftStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MingleGoal.hpp b/LiteLoader/include/llapi/mc/MingleGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MingleGoal.hpp rename to LiteLoader/include/llapi/mc/MingleGoal.hpp index 2b7fad8..e252c55 100644 --- a/LiteLoader/Header/MC/MingleGoal.hpp +++ b/LiteLoader/include/llapi/mc/MingleGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveToPOIGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MissingTextureAtlasItem.hpp b/LiteLoader/include/llapi/mc/MissingTextureAtlasItem.hpp similarity index 91% rename from LiteLoader/Header/MC/MissingTextureAtlasItem.hpp rename to LiteLoader/include/llapi/mc/MissingTextureAtlasItem.hpp index f731ba1..e501c5f 100644 --- a/LiteLoader/Header/MC/MissingTextureAtlasItem.hpp +++ b/LiteLoader/include/llapi/mc/MissingTextureAtlasItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Mob.hpp b/LiteLoader/include/llapi/mc/Mob.hpp similarity index 99% rename from LiteLoader/Header/MC/Mob.hpp rename to LiteLoader/include/llapi/mc/Mob.hpp index 441b95c..631885b 100644 --- a/LiteLoader/Header/MC/Mob.hpp +++ b/LiteLoader/include/llapi/mc/Mob.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobArmorEquipmentPacket.hpp b/LiteLoader/include/llapi/mc/MobArmorEquipmentPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/MobArmorEquipmentPacket.hpp rename to LiteLoader/include/llapi/mc/MobArmorEquipmentPacket.hpp index f2fd512..da471ee 100644 --- a/LiteLoader/Header/MC/MobArmorEquipmentPacket.hpp +++ b/LiteLoader/include/llapi/mc/MobArmorEquipmentPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobDescriptor.hpp b/LiteLoader/include/llapi/mc/MobDescriptor.hpp similarity index 94% rename from LiteLoader/Header/MC/MobDescriptor.hpp rename to LiteLoader/include/llapi/mc/MobDescriptor.hpp index fbdda58..90be4cc 100644 --- a/LiteLoader/Header/MC/MobDescriptor.hpp +++ b/LiteLoader/include/llapi/mc/MobDescriptor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEffect.hpp b/LiteLoader/include/llapi/mc/MobEffect.hpp similarity index 99% rename from LiteLoader/Header/MC/MobEffect.hpp rename to LiteLoader/include/llapi/mc/MobEffect.hpp index 37d34e6..f017165 100644 --- a/LiteLoader/Header/MC/MobEffect.hpp +++ b/LiteLoader/include/llapi/mc/MobEffect.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "HashedString.hpp" diff --git a/LiteLoader/Header/MC/MobEffectChangeDescription.hpp b/LiteLoader/include/llapi/mc/MobEffectChangeDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MobEffectChangeDescription.hpp rename to LiteLoader/include/llapi/mc/MobEffectChangeDescription.hpp index af1b2e9..da55ece 100644 --- a/LiteLoader/Header/MC/MobEffectChangeDescription.hpp +++ b/LiteLoader/include/llapi/mc/MobEffectChangeDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEffectComponent.hpp b/LiteLoader/include/llapi/mc/MobEffectComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/MobEffectComponent.hpp rename to LiteLoader/include/llapi/mc/MobEffectComponent.hpp index 628559f..883e93a 100644 --- a/LiteLoader/Header/MC/MobEffectComponent.hpp +++ b/LiteLoader/include/llapi/mc/MobEffectComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEffectDefinition.hpp b/LiteLoader/include/llapi/mc/MobEffectDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/MobEffectDefinition.hpp rename to LiteLoader/include/llapi/mc/MobEffectDefinition.hpp index 558195d..bf5293c 100644 --- a/LiteLoader/Header/MC/MobEffectDefinition.hpp +++ b/LiteLoader/include/llapi/mc/MobEffectDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEffectInstance.hpp b/LiteLoader/include/llapi/mc/MobEffectInstance.hpp similarity index 97% rename from LiteLoader/Header/MC/MobEffectInstance.hpp rename to LiteLoader/include/llapi/mc/MobEffectInstance.hpp index 8682a76..a11db36 100644 --- a/LiteLoader/Header/MC/MobEffectInstance.hpp +++ b/LiteLoader/include/llapi/mc/MobEffectInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/MobEffectPacket.hpp b/LiteLoader/include/llapi/mc/MobEffectPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/MobEffectPacket.hpp rename to LiteLoader/include/llapi/mc/MobEffectPacket.hpp index 219a624..8a0a919 100644 --- a/LiteLoader/Header/MC/MobEffectPacket.hpp +++ b/LiteLoader/include/llapi/mc/MobEffectPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEffectSubcomponent.hpp b/LiteLoader/include/llapi/mc/MobEffectSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/MobEffectSubcomponent.hpp rename to LiteLoader/include/llapi/mc/MobEffectSubcomponent.hpp index 7bd66d1..f7e2535 100644 --- a/LiteLoader/Header/MC/MobEffectSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/MobEffectSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEffectSystem.hpp b/LiteLoader/include/llapi/mc/MobEffectSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/MobEffectSystem.hpp rename to LiteLoader/include/llapi/mc/MobEffectSystem.hpp index c13c21b..e7eaa76 100644 --- a/LiteLoader/Header/MC/MobEffectSystem.hpp +++ b/LiteLoader/include/llapi/mc/MobEffectSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEquipmentPacket.hpp b/LiteLoader/include/llapi/mc/MobEquipmentPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/MobEquipmentPacket.hpp rename to LiteLoader/include/llapi/mc/MobEquipmentPacket.hpp index 304af69..81d7b31 100644 --- a/LiteLoader/Header/MC/MobEquipmentPacket.hpp +++ b/LiteLoader/include/llapi/mc/MobEquipmentPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEvent.hpp b/LiteLoader/include/llapi/mc/MobEvent.hpp similarity index 94% rename from LiteLoader/Header/MC/MobEvent.hpp rename to LiteLoader/include/llapi/mc/MobEvent.hpp index 752b3cd..987bbec 100644 --- a/LiteLoader/Header/MC/MobEvent.hpp +++ b/LiteLoader/include/llapi/mc/MobEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEventCommand.hpp b/LiteLoader/include/llapi/mc/MobEventCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/MobEventCommand.hpp rename to LiteLoader/include/llapi/mc/MobEventCommand.hpp index c2cfc96..5a7f2f4 100644 --- a/LiteLoader/Header/MC/MobEventCommand.hpp +++ b/LiteLoader/include/llapi/mc/MobEventCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobEvents.hpp b/LiteLoader/include/llapi/mc/MobEvents.hpp similarity index 96% rename from LiteLoader/Header/MC/MobEvents.hpp rename to LiteLoader/include/llapi/mc/MobEvents.hpp index a96b4a1..7542cbe 100644 --- a/LiteLoader/Header/MC/MobEvents.hpp +++ b/LiteLoader/include/llapi/mc/MobEvents.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobPredicates.hpp b/LiteLoader/include/llapi/mc/MobPredicates.hpp similarity index 94% rename from LiteLoader/Header/MC/MobPredicates.hpp rename to LiteLoader/include/llapi/mc/MobPredicates.hpp index 3f1958f..254b41b 100644 --- a/LiteLoader/Header/MC/MobPredicates.hpp +++ b/LiteLoader/include/llapi/mc/MobPredicates.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobSpawnHerdInfo.hpp b/LiteLoader/include/llapi/mc/MobSpawnHerdInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/MobSpawnHerdInfo.hpp rename to LiteLoader/include/llapi/mc/MobSpawnHerdInfo.hpp index da3461b..0c2a38d 100644 --- a/LiteLoader/Header/MC/MobSpawnHerdInfo.hpp +++ b/LiteLoader/include/llapi/mc/MobSpawnHerdInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobSpawnRules.hpp b/LiteLoader/include/llapi/mc/MobSpawnRules.hpp similarity index 97% rename from LiteLoader/Header/MC/MobSpawnRules.hpp rename to LiteLoader/include/llapi/mc/MobSpawnRules.hpp index f5f42bf..bdc3e80 100644 --- a/LiteLoader/Header/MC/MobSpawnRules.hpp +++ b/LiteLoader/include/llapi/mc/MobSpawnRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobSpawnerBlock.hpp b/LiteLoader/include/llapi/mc/MobSpawnerBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/MobSpawnerBlock.hpp rename to LiteLoader/include/llapi/mc/MobSpawnerBlock.hpp index dc98c5c..f71b5bb 100644 --- a/LiteLoader/Header/MC/MobSpawnerBlock.hpp +++ b/LiteLoader/include/llapi/mc/MobSpawnerBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobSpawnerBlockActor.hpp b/LiteLoader/include/llapi/mc/MobSpawnerBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/MobSpawnerBlockActor.hpp rename to LiteLoader/include/llapi/mc/MobSpawnerBlockActor.hpp index 0461759..6061218 100644 --- a/LiteLoader/Header/MC/MobSpawnerBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/MobSpawnerBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobSpawnerData.hpp b/LiteLoader/include/llapi/mc/MobSpawnerData.hpp similarity index 95% rename from LiteLoader/Header/MC/MobSpawnerData.hpp rename to LiteLoader/include/llapi/mc/MobSpawnerData.hpp index 0c7d236..5887524 100644 --- a/LiteLoader/Header/MC/MobSpawnerData.hpp +++ b/LiteLoader/include/llapi/mc/MobSpawnerData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MobSpawnerPermutation.hpp b/LiteLoader/include/llapi/mc/MobSpawnerPermutation.hpp similarity index 95% rename from LiteLoader/Header/MC/MobSpawnerPermutation.hpp rename to LiteLoader/include/llapi/mc/MobSpawnerPermutation.hpp index 9b4af3a..082b49d 100644 --- a/LiteLoader/Header/MC/MobSpawnerPermutation.hpp +++ b/LiteLoader/include/llapi/mc/MobSpawnerPermutation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ModalFormRequestPacket.hpp b/LiteLoader/include/llapi/mc/ModalFormRequestPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ModalFormRequestPacket.hpp rename to LiteLoader/include/llapi/mc/ModalFormRequestPacket.hpp index 4c4c5f3..03e290a 100644 --- a/LiteLoader/Header/MC/ModalFormRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/ModalFormRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ModalFormResponsePacket.hpp b/LiteLoader/include/llapi/mc/ModalFormResponsePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ModalFormResponsePacket.hpp rename to LiteLoader/include/llapi/mc/ModalFormResponsePacket.hpp index 61b3d72..facf0fd 100644 --- a/LiteLoader/Header/MC/ModalFormResponsePacket.hpp +++ b/LiteLoader/include/llapi/mc/ModalFormResponsePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangArrayVariable.hpp b/LiteLoader/include/llapi/mc/MolangArrayVariable.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangArrayVariable.hpp rename to LiteLoader/include/llapi/mc/MolangArrayVariable.hpp index 80ef5a2..91a9cad 100644 --- a/LiteLoader/Header/MC/MolangArrayVariable.hpp +++ b/LiteLoader/include/llapi/mc/MolangArrayVariable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangDataDrivenGeometry.hpp b/LiteLoader/include/llapi/mc/MolangDataDrivenGeometry.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangDataDrivenGeometry.hpp rename to LiteLoader/include/llapi/mc/MolangDataDrivenGeometry.hpp index f5af340..085bbdc 100644 --- a/LiteLoader/Header/MC/MolangDataDrivenGeometry.hpp +++ b/LiteLoader/include/llapi/mc/MolangDataDrivenGeometry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangEntityVariable.hpp b/LiteLoader/include/llapi/mc/MolangEntityVariable.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangEntityVariable.hpp rename to LiteLoader/include/llapi/mc/MolangEntityVariable.hpp index 60508c6..932a6ff 100644 --- a/LiteLoader/Header/MC/MolangEntityVariable.hpp +++ b/LiteLoader/include/llapi/mc/MolangEntityVariable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangGenericQueryFunction.hpp b/LiteLoader/include/llapi/mc/MolangGenericQueryFunction.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangGenericQueryFunction.hpp rename to LiteLoader/include/llapi/mc/MolangGenericQueryFunction.hpp index 8ff6244..8390cbd 100644 --- a/LiteLoader/Header/MC/MolangGenericQueryFunction.hpp +++ b/LiteLoader/include/llapi/mc/MolangGenericQueryFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangGenericQueryFunctionPtr.hpp b/LiteLoader/include/llapi/mc/MolangGenericQueryFunctionPtr.hpp similarity index 96% rename from LiteLoader/Header/MC/MolangGenericQueryFunctionPtr.hpp rename to LiteLoader/include/llapi/mc/MolangGenericQueryFunctionPtr.hpp index af1d027..adec0d8 100644 --- a/LiteLoader/Header/MC/MolangGenericQueryFunctionPtr.hpp +++ b/LiteLoader/include/llapi/mc/MolangGenericQueryFunctionPtr.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangGeometryVariable.hpp b/LiteLoader/include/llapi/mc/MolangGeometryVariable.hpp similarity index 96% rename from LiteLoader/Header/MC/MolangGeometryVariable.hpp rename to LiteLoader/include/llapi/mc/MolangGeometryVariable.hpp index e8ff5ec..175ef19 100644 --- a/LiteLoader/Header/MC/MolangGeometryVariable.hpp +++ b/LiteLoader/include/llapi/mc/MolangGeometryVariable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangMaterialVariable.hpp b/LiteLoader/include/llapi/mc/MolangMaterialVariable.hpp similarity index 96% rename from LiteLoader/Header/MC/MolangMaterialVariable.hpp rename to LiteLoader/include/llapi/mc/MolangMaterialVariable.hpp index 18dc05f..604cc6b 100644 --- a/LiteLoader/Header/MC/MolangMaterialVariable.hpp +++ b/LiteLoader/include/llapi/mc/MolangMaterialVariable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangQueryFunction.hpp b/LiteLoader/include/llapi/mc/MolangQueryFunction.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangQueryFunction.hpp rename to LiteLoader/include/llapi/mc/MolangQueryFunction.hpp index d256479..e527f13 100644 --- a/LiteLoader/Header/MC/MolangQueryFunction.hpp +++ b/LiteLoader/include/llapi/mc/MolangQueryFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangQueryFunctionPtr.hpp b/LiteLoader/include/llapi/mc/MolangQueryFunctionPtr.hpp similarity index 96% rename from LiteLoader/Header/MC/MolangQueryFunctionPtr.hpp rename to LiteLoader/include/llapi/mc/MolangQueryFunctionPtr.hpp index 2cd3cee..5f60c4a 100644 --- a/LiteLoader/Header/MC/MolangQueryFunctionPtr.hpp +++ b/LiteLoader/include/llapi/mc/MolangQueryFunctionPtr.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangScriptArg.hpp b/LiteLoader/include/llapi/mc/MolangScriptArg.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangScriptArg.hpp rename to LiteLoader/include/llapi/mc/MolangScriptArg.hpp index 2ac07ab..514638b 100644 --- a/LiteLoader/Header/MC/MolangScriptArg.hpp +++ b/LiteLoader/include/llapi/mc/MolangScriptArg.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangTempVariable.hpp b/LiteLoader/include/llapi/mc/MolangTempVariable.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangTempVariable.hpp rename to LiteLoader/include/llapi/mc/MolangTempVariable.hpp index a078a7f..0389a54 100644 --- a/LiteLoader/Header/MC/MolangTempVariable.hpp +++ b/LiteLoader/include/llapi/mc/MolangTempVariable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangTextureVariable.hpp b/LiteLoader/include/llapi/mc/MolangTextureVariable.hpp similarity index 95% rename from LiteLoader/Header/MC/MolangTextureVariable.hpp rename to LiteLoader/include/llapi/mc/MolangTextureVariable.hpp index 75a6131..c7bafc9 100644 --- a/LiteLoader/Header/MC/MolangTextureVariable.hpp +++ b/LiteLoader/include/llapi/mc/MolangTextureVariable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MolangVariableMap.hpp b/LiteLoader/include/llapi/mc/MolangVariableMap.hpp similarity index 97% rename from LiteLoader/Header/MC/MolangVariableMap.hpp rename to LiteLoader/include/llapi/mc/MolangVariableMap.hpp index 077db2d..698c777 100644 --- a/LiteLoader/Header/MC/MolangVariableMap.hpp +++ b/LiteLoader/include/llapi/mc/MolangVariableMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Monster.hpp b/LiteLoader/include/llapi/mc/Monster.hpp similarity index 98% rename from LiteLoader/Header/MC/Monster.hpp rename to LiteLoader/include/llapi/mc/Monster.hpp index 31d704d..27c61e9 100644 --- a/LiteLoader/Header/MC/Monster.hpp +++ b/LiteLoader/include/llapi/mc/Monster.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/MonsterEggBlock.hpp b/LiteLoader/include/llapi/mc/MonsterEggBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/MonsterEggBlock.hpp rename to LiteLoader/include/llapi/mc/MonsterEggBlock.hpp index 2203aa0..a4b8ae6 100644 --- a/LiteLoader/Header/MC/MonsterEggBlock.hpp +++ b/LiteLoader/include/llapi/mc/MonsterEggBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MonsterRoomFeature.hpp b/LiteLoader/include/llapi/mc/MonsterRoomFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/MonsterRoomFeature.hpp rename to LiteLoader/include/llapi/mc/MonsterRoomFeature.hpp index 48fcdd3..c9186b7 100644 --- a/LiteLoader/Header/MC/MonsterRoomFeature.hpp +++ b/LiteLoader/include/llapi/mc/MonsterRoomFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MonumentBuilding.hpp b/LiteLoader/include/llapi/mc/MonumentBuilding.hpp similarity index 98% rename from LiteLoader/Header/MC/MonumentBuilding.hpp rename to LiteLoader/include/llapi/mc/MonumentBuilding.hpp index afd5c7f..3bf1a1c 100644 --- a/LiteLoader/Header/MC/MonumentBuilding.hpp +++ b/LiteLoader/include/llapi/mc/MonumentBuilding.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MonumentRoomFitter.hpp b/LiteLoader/include/llapi/mc/MonumentRoomFitter.hpp similarity index 95% rename from LiteLoader/Header/MC/MonumentRoomFitter.hpp rename to LiteLoader/include/llapi/mc/MonumentRoomFitter.hpp index 53fb850..9e02550 100644 --- a/LiteLoader/Header/MC/MonumentRoomFitter.hpp +++ b/LiteLoader/include/llapi/mc/MonumentRoomFitter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MossStoneSelector.hpp b/LiteLoader/include/llapi/mc/MossStoneSelector.hpp similarity index 95% rename from LiteLoader/Header/MC/MossStoneSelector.hpp rename to LiteLoader/include/llapi/mc/MossStoneSelector.hpp index 9198ed7..a2034a5 100644 --- a/LiteLoader/Header/MC/MossStoneSelector.hpp +++ b/LiteLoader/include/llapi/mc/MossStoneSelector.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Motive.hpp b/LiteLoader/include/llapi/mc/Motive.hpp similarity index 98% rename from LiteLoader/Header/MC/Motive.hpp rename to LiteLoader/include/llapi/mc/Motive.hpp index 7b38d19..fd9abb6 100644 --- a/LiteLoader/Header/MC/Motive.hpp +++ b/LiteLoader/include/llapi/mc/Motive.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MountPathingGoal.hpp b/LiteLoader/include/llapi/mc/MountPathingGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MountPathingGoal.hpp rename to LiteLoader/include/llapi/mc/MountPathingGoal.hpp index 3bd8910..cc9b20c 100644 --- a/LiteLoader/Header/MC/MountPathingGoal.hpp +++ b/LiteLoader/include/llapi/mc/MountPathingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MountTameableDefinition.hpp b/LiteLoader/include/llapi/mc/MountTameableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/MountTameableDefinition.hpp rename to LiteLoader/include/llapi/mc/MountTameableDefinition.hpp index 1d59ffa..71f75ad 100644 --- a/LiteLoader/Header/MC/MountTameableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/MountTameableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MountTamingComponent.hpp b/LiteLoader/include/llapi/mc/MountTamingComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/MountTamingComponent.hpp rename to LiteLoader/include/llapi/mc/MountTamingComponent.hpp index aff331a..bc2bcf9 100644 --- a/LiteLoader/Header/MC/MountTamingComponent.hpp +++ b/LiteLoader/include/llapi/mc/MountTamingComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MountTamingSystem.hpp b/LiteLoader/include/llapi/mc/MountTamingSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/MountTamingSystem.hpp rename to LiteLoader/include/llapi/mc/MountTamingSystem.hpp index a78ae24..96a21e1 100644 --- a/LiteLoader/Header/MC/MountTamingSystem.hpp +++ b/LiteLoader/include/llapi/mc/MountTamingSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveActorAbsoluteData.hpp b/LiteLoader/include/llapi/mc/MoveActorAbsoluteData.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveActorAbsoluteData.hpp rename to LiteLoader/include/llapi/mc/MoveActorAbsoluteData.hpp index c3f3b5c..74136e9 100644 --- a/LiteLoader/Header/MC/MoveActorAbsoluteData.hpp +++ b/LiteLoader/include/llapi/mc/MoveActorAbsoluteData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveActorAbsolutePacket.hpp b/LiteLoader/include/llapi/mc/MoveActorAbsolutePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveActorAbsolutePacket.hpp rename to LiteLoader/include/llapi/mc/MoveActorAbsolutePacket.hpp index 046c151..a5ec391 100644 --- a/LiteLoader/Header/MC/MoveActorAbsolutePacket.hpp +++ b/LiteLoader/include/llapi/mc/MoveActorAbsolutePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveActorDeltaPacket.hpp b/LiteLoader/include/llapi/mc/MoveActorDeltaPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveActorDeltaPacket.hpp rename to LiteLoader/include/llapi/mc/MoveActorDeltaPacket.hpp index b9933bb..f4d7f85 100644 --- a/LiteLoader/Header/MC/MoveActorDeltaPacket.hpp +++ b/LiteLoader/include/llapi/mc/MoveActorDeltaPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControl.hpp b/LiteLoader/include/llapi/mc/MoveControl.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveControl.hpp rename to LiteLoader/include/llapi/mc/MoveControl.hpp index 1145390..4c1a538 100644 --- a/LiteLoader/Header/MC/MoveControl.hpp +++ b/LiteLoader/include/llapi/mc/MoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlBasicDescription.hpp b/LiteLoader/include/llapi/mc/MoveControlBasicDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlBasicDescription.hpp rename to LiteLoader/include/llapi/mc/MoveControlBasicDescription.hpp index a5227bb..cfa53c3 100644 --- a/LiteLoader/Header/MC/MoveControlBasicDescription.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlBasicDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlComponent.hpp b/LiteLoader/include/llapi/mc/MoveControlComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlComponent.hpp rename to LiteLoader/include/llapi/mc/MoveControlComponent.hpp index c754ed8..e1b7588 100644 --- a/LiteLoader/Header/MC/MoveControlComponent.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlDescription.hpp b/LiteLoader/include/llapi/mc/MoveControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlDescription.hpp rename to LiteLoader/include/llapi/mc/MoveControlDescription.hpp index 3fc0b3e..dd7e8d5 100644 --- a/LiteLoader/Header/MC/MoveControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlDolphinDescription.hpp b/LiteLoader/include/llapi/mc/MoveControlDolphinDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlDolphinDescription.hpp rename to LiteLoader/include/llapi/mc/MoveControlDolphinDescription.hpp index 2bdf1f3..8352a1a 100644 --- a/LiteLoader/Header/MC/MoveControlDolphinDescription.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlDolphinDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlFlyDescription.hpp b/LiteLoader/include/llapi/mc/MoveControlFlyDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlFlyDescription.hpp rename to LiteLoader/include/llapi/mc/MoveControlFlyDescription.hpp index 47c6a6f..d23a166 100644 --- a/LiteLoader/Header/MC/MoveControlFlyDescription.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlFlyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlHoverDescription.hpp b/LiteLoader/include/llapi/mc/MoveControlHoverDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlHoverDescription.hpp rename to LiteLoader/include/llapi/mc/MoveControlHoverDescription.hpp index 96b351d..9f82c01 100644 --- a/LiteLoader/Header/MC/MoveControlHoverDescription.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlHoverDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlSkipDescription.hpp b/LiteLoader/include/llapi/mc/MoveControlSkipDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlSkipDescription.hpp rename to LiteLoader/include/llapi/mc/MoveControlSkipDescription.hpp index 6e9e6a7..9990706 100644 --- a/LiteLoader/Header/MC/MoveControlSkipDescription.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlSkipDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlSwayDescription.hpp b/LiteLoader/include/llapi/mc/MoveControlSwayDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveControlSwayDescription.hpp rename to LiteLoader/include/llapi/mc/MoveControlSwayDescription.hpp index d962e91..cb619c5 100644 --- a/LiteLoader/Header/MC/MoveControlSwayDescription.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlSwayDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveControlSystem.hpp b/LiteLoader/include/llapi/mc/MoveControlSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/MoveControlSystem.hpp rename to LiteLoader/include/llapi/mc/MoveControlSystem.hpp index 6c8821b..38d8da4 100644 --- a/LiteLoader/Header/MC/MoveControlSystem.hpp +++ b/LiteLoader/include/llapi/mc/MoveControlSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveDefinition.hpp b/LiteLoader/include/llapi/mc/MoveDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveDefinition.hpp rename to LiteLoader/include/llapi/mc/MoveDefinition.hpp index ba8b9ee..988f783 100644 --- a/LiteLoader/Header/MC/MoveDefinition.hpp +++ b/LiteLoader/include/llapi/mc/MoveDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/MoveIndoorsGoal.hpp b/LiteLoader/include/llapi/mc/MoveIndoorsGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveIndoorsGoal.hpp rename to LiteLoader/include/llapi/mc/MoveIndoorsGoal.hpp index 1884763..00293ec 100644 --- a/LiteLoader/Header/MC/MoveIndoorsGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveIndoorsGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveInput.hpp b/LiteLoader/include/llapi/mc/MoveInput.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveInput.hpp rename to LiteLoader/include/llapi/mc/MoveInput.hpp index b7b8e4b..3f93509 100644 --- a/LiteLoader/Header/MC/MoveInput.hpp +++ b/LiteLoader/include/llapi/mc/MoveInput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveInputHandler.hpp b/LiteLoader/include/llapi/mc/MoveInputHandler.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveInputHandler.hpp rename to LiteLoader/include/llapi/mc/MoveInputHandler.hpp index bdb1967..3e49bfd 100644 --- a/LiteLoader/Header/MC/MoveInputHandler.hpp +++ b/LiteLoader/include/llapi/mc/MoveInputHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveNode.hpp b/LiteLoader/include/llapi/mc/MoveNode.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveNode.hpp rename to LiteLoader/include/llapi/mc/MoveNode.hpp index 72c2e7a..ac4c7f2 100644 --- a/LiteLoader/Header/MC/MoveNode.hpp +++ b/LiteLoader/include/llapi/mc/MoveNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MovePlayerPacket.hpp b/LiteLoader/include/llapi/mc/MovePlayerPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/MovePlayerPacket.hpp rename to LiteLoader/include/llapi/mc/MovePlayerPacket.hpp index 2d95c6f..d45fc8e 100644 --- a/LiteLoader/Header/MC/MovePlayerPacket.hpp +++ b/LiteLoader/include/llapi/mc/MovePlayerPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Player.hpp" #include "Packet.hpp" diff --git a/LiteLoader/Header/MC/MoveThroughVillageGoal.hpp b/LiteLoader/include/llapi/mc/MoveThroughVillageGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveThroughVillageGoal.hpp rename to LiteLoader/include/llapi/mc/MoveThroughVillageGoal.hpp index edf00fc..2110e04 100644 --- a/LiteLoader/Header/MC/MoveThroughVillageGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveThroughVillageGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToBlockGoal.hpp b/LiteLoader/include/llapi/mc/MoveToBlockGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveToBlockGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToBlockGoal.hpp index bacbbe6..c68b156 100644 --- a/LiteLoader/Header/MC/MoveToBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToDefinition.hpp b/LiteLoader/include/llapi/mc/MoveToDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveToDefinition.hpp rename to LiteLoader/include/llapi/mc/MoveToDefinition.hpp index 0d1bc56..a65317b 100644 --- a/LiteLoader/Header/MC/MoveToDefinition.hpp +++ b/LiteLoader/include/llapi/mc/MoveToDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/MoveToLandGoal.hpp b/LiteLoader/include/llapi/mc/MoveToLandGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/MoveToLandGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToLandGoal.hpp index fd40263..e2c5015 100644 --- a/LiteLoader/Header/MC/MoveToLandGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToLandGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToLavaGoal.hpp b/LiteLoader/include/llapi/mc/MoveToLavaGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/MoveToLavaGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToLavaGoal.hpp index 094c4e5..ac3fd0e 100644 --- a/LiteLoader/Header/MC/MoveToLavaGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToLavaGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToLiquidGoal.hpp b/LiteLoader/include/llapi/mc/MoveToLiquidGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveToLiquidGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToLiquidGoal.hpp index e938e21..3403842 100644 --- a/LiteLoader/Header/MC/MoveToLiquidGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToLiquidGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToNode.hpp b/LiteLoader/include/llapi/mc/MoveToNode.hpp similarity index 95% rename from LiteLoader/Header/MC/MoveToNode.hpp rename to LiteLoader/include/llapi/mc/MoveToNode.hpp index 98d2eec..ecd17e1 100644 --- a/LiteLoader/Header/MC/MoveToNode.hpp +++ b/LiteLoader/include/llapi/mc/MoveToNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToPOIGoal.hpp b/LiteLoader/include/llapi/mc/MoveToPOIGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveToPOIGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToPOIGoal.hpp index 81c7993..b377c6c 100644 --- a/LiteLoader/Header/MC/MoveToPOIGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToPOIGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToRandomBlockGoal.hpp b/LiteLoader/include/llapi/mc/MoveToRandomBlockGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveToRandomBlockGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToRandomBlockGoal.hpp index b6e3f10..008f41d 100644 --- a/LiteLoader/Header/MC/MoveToRandomBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToRandomBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToVillageGoal.hpp b/LiteLoader/include/llapi/mc/MoveToVillageGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveToVillageGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToVillageGoal.hpp index 6e11572..91db95b 100644 --- a/LiteLoader/Header/MC/MoveToVillageGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToVillageGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveToWaterGoal.hpp b/LiteLoader/include/llapi/mc/MoveToWaterGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/MoveToWaterGoal.hpp rename to LiteLoader/include/llapi/mc/MoveToWaterGoal.hpp index 4c3af24..6a69015 100644 --- a/LiteLoader/Header/MC/MoveToWaterGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveToWaterGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveTowardsRestrictionGoal.hpp b/LiteLoader/include/llapi/mc/MoveTowardsRestrictionGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/MoveTowardsRestrictionGoal.hpp rename to LiteLoader/include/llapi/mc/MoveTowardsRestrictionGoal.hpp index 6b02172..b09626e 100644 --- a/LiteLoader/Header/MC/MoveTowardsRestrictionGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveTowardsRestrictionGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MoveTowardsTargetGoal.hpp b/LiteLoader/include/llapi/mc/MoveTowardsTargetGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/MoveTowardsTargetGoal.hpp rename to LiteLoader/include/llapi/mc/MoveTowardsTargetGoal.hpp index 8147c1a..cb7aecf 100644 --- a/LiteLoader/Header/MC/MoveTowardsTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/MoveTowardsTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MovementInterpolator.hpp b/LiteLoader/include/llapi/mc/MovementInterpolator.hpp similarity index 95% rename from LiteLoader/Header/MC/MovementInterpolator.hpp rename to LiteLoader/include/llapi/mc/MovementInterpolator.hpp index 7106b78..99b6a55 100644 --- a/LiteLoader/Header/MC/MovementInterpolator.hpp +++ b/LiteLoader/include/llapi/mc/MovementInterpolator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MovingBlock.hpp b/LiteLoader/include/llapi/mc/MovingBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/MovingBlock.hpp rename to LiteLoader/include/llapi/mc/MovingBlock.hpp index ddc8bb4..edb340a 100644 --- a/LiteLoader/Header/MC/MovingBlock.hpp +++ b/LiteLoader/include/llapi/mc/MovingBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MovingBlockActor.hpp b/LiteLoader/include/llapi/mc/MovingBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/MovingBlockActor.hpp rename to LiteLoader/include/llapi/mc/MovingBlockActor.hpp index 1313ec0..3e9069f 100644 --- a/LiteLoader/Header/MC/MovingBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/MovingBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MultiRecipe.hpp b/LiteLoader/include/llapi/mc/MultiRecipe.hpp similarity index 96% rename from LiteLoader/Header/MC/MultiRecipe.hpp rename to LiteLoader/include/llapi/mc/MultiRecipe.hpp index c94eb94..43d54fc 100644 --- a/LiteLoader/Header/MC/MultiRecipe.hpp +++ b/LiteLoader/include/llapi/mc/MultiRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MultiplayerSettingsPacket.hpp b/LiteLoader/include/llapi/mc/MultiplayerSettingsPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/MultiplayerSettingsPacket.hpp rename to LiteLoader/include/llapi/mc/MultiplayerSettingsPacket.hpp index f339fdc..69d8c0c 100644 --- a/LiteLoader/Header/MC/MultiplayerSettingsPacket.hpp +++ b/LiteLoader/include/llapi/mc/MultiplayerSettingsPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MultiplyValueAmplifier.hpp b/LiteLoader/include/llapi/mc/MultiplyValueAmplifier.hpp similarity index 95% rename from LiteLoader/Header/MC/MultiplyValueAmplifier.hpp rename to LiteLoader/include/llapi/mc/MultiplyValueAmplifier.hpp index c51600b..ea2efb7 100644 --- a/LiteLoader/Header/MC/MultiplyValueAmplifier.hpp +++ b/LiteLoader/include/llapi/mc/MultiplyValueAmplifier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MushroomBlock.hpp b/LiteLoader/include/llapi/mc/MushroomBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/MushroomBlock.hpp rename to LiteLoader/include/llapi/mc/MushroomBlock.hpp index b92b81d..7e9b276 100644 --- a/LiteLoader/Header/MC/MushroomBlock.hpp +++ b/LiteLoader/include/llapi/mc/MushroomBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MushroomCow.hpp b/LiteLoader/include/llapi/mc/MushroomCow.hpp similarity index 98% rename from LiteLoader/Header/MC/MushroomCow.hpp rename to LiteLoader/include/llapi/mc/MushroomCow.hpp index 5aa217d..206f712 100644 --- a/LiteLoader/Header/MC/MushroomCow.hpp +++ b/LiteLoader/include/llapi/mc/MushroomCow.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/MusicBlockActor.hpp b/LiteLoader/include/llapi/mc/MusicBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/MusicBlockActor.hpp rename to LiteLoader/include/llapi/mc/MusicBlockActor.hpp index 09393ef..604188f 100644 --- a/LiteLoader/Header/MC/MusicBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/MusicBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/MyceliumBlock.hpp b/LiteLoader/include/llapi/mc/MyceliumBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/MyceliumBlock.hpp rename to LiteLoader/include/llapi/mc/MyceliumBlock.hpp index 6f32cfd..9182d68 100644 --- a/LiteLoader/Header/MC/MyceliumBlock.hpp +++ b/LiteLoader/include/llapi/mc/MyceliumBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBBridgeCrossing.hpp b/LiteLoader/include/llapi/mc/NBBridgeCrossing.hpp similarity index 98% rename from LiteLoader/Header/MC/NBBridgeCrossing.hpp rename to LiteLoader/include/llapi/mc/NBBridgeCrossing.hpp index c783f44..23778d1 100644 --- a/LiteLoader/Header/MC/NBBridgeCrossing.hpp +++ b/LiteLoader/include/llapi/mc/NBBridgeCrossing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBBridgeEndFiller.hpp b/LiteLoader/include/llapi/mc/NBBridgeEndFiller.hpp similarity index 98% rename from LiteLoader/Header/MC/NBBridgeEndFiller.hpp rename to LiteLoader/include/llapi/mc/NBBridgeEndFiller.hpp index 9302e10..d48c77c 100644 --- a/LiteLoader/Header/MC/NBBridgeEndFiller.hpp +++ b/LiteLoader/include/llapi/mc/NBBridgeEndFiller.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBBridgeStraight.hpp b/LiteLoader/include/llapi/mc/NBBridgeStraight.hpp similarity index 98% rename from LiteLoader/Header/MC/NBBridgeStraight.hpp rename to LiteLoader/include/llapi/mc/NBBridgeStraight.hpp index 5b8d129..5892d5d 100644 --- a/LiteLoader/Header/MC/NBBridgeStraight.hpp +++ b/LiteLoader/include/llapi/mc/NBBridgeStraight.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleCorridorStairsPiece.hpp b/LiteLoader/include/llapi/mc/NBCastleCorridorStairsPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleCorridorStairsPiece.hpp rename to LiteLoader/include/llapi/mc/NBCastleCorridorStairsPiece.hpp index 72442e0..9d46bfc 100644 --- a/LiteLoader/Header/MC/NBCastleCorridorStairsPiece.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleCorridorStairsPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleCorridorTBalconyPiece.hpp b/LiteLoader/include/llapi/mc/NBCastleCorridorTBalconyPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleCorridorTBalconyPiece.hpp rename to LiteLoader/include/llapi/mc/NBCastleCorridorTBalconyPiece.hpp index 7cfdc03..8c23513 100644 --- a/LiteLoader/Header/MC/NBCastleCorridorTBalconyPiece.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleCorridorTBalconyPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleEntrance.hpp b/LiteLoader/include/llapi/mc/NBCastleEntrance.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleEntrance.hpp rename to LiteLoader/include/llapi/mc/NBCastleEntrance.hpp index 02ab972..63e31c5 100644 --- a/LiteLoader/Header/MC/NBCastleEntrance.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleEntrance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleSmallCorridorCrossingPiece.hpp b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorCrossingPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleSmallCorridorCrossingPiece.hpp rename to LiteLoader/include/llapi/mc/NBCastleSmallCorridorCrossingPiece.hpp index 05080c2..dab8a2e 100644 --- a/LiteLoader/Header/MC/NBCastleSmallCorridorCrossingPiece.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorCrossingPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleSmallCorridorLeftTurnPiece.hpp b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorLeftTurnPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleSmallCorridorLeftTurnPiece.hpp rename to LiteLoader/include/llapi/mc/NBCastleSmallCorridorLeftTurnPiece.hpp index f692ebd..bce5424 100644 --- a/LiteLoader/Header/MC/NBCastleSmallCorridorLeftTurnPiece.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorLeftTurnPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleSmallCorridorPiece.hpp b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleSmallCorridorPiece.hpp rename to LiteLoader/include/llapi/mc/NBCastleSmallCorridorPiece.hpp index 4cb2836..a913247 100644 --- a/LiteLoader/Header/MC/NBCastleSmallCorridorPiece.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleSmallCorridorRightTurnPiece.hpp b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorRightTurnPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleSmallCorridorRightTurnPiece.hpp rename to LiteLoader/include/llapi/mc/NBCastleSmallCorridorRightTurnPiece.hpp index 07cd3c7..e59551c 100644 --- a/LiteLoader/Header/MC/NBCastleSmallCorridorRightTurnPiece.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleSmallCorridorRightTurnPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBCastleStalkRoom.hpp b/LiteLoader/include/llapi/mc/NBCastleStalkRoom.hpp similarity index 98% rename from LiteLoader/Header/MC/NBCastleStalkRoom.hpp rename to LiteLoader/include/llapi/mc/NBCastleStalkRoom.hpp index 7f47493..30a4b54 100644 --- a/LiteLoader/Header/MC/NBCastleStalkRoom.hpp +++ b/LiteLoader/include/llapi/mc/NBCastleStalkRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBMonsterThrone.hpp b/LiteLoader/include/llapi/mc/NBMonsterThrone.hpp similarity index 98% rename from LiteLoader/Header/MC/NBMonsterThrone.hpp rename to LiteLoader/include/llapi/mc/NBMonsterThrone.hpp index 4e017a5..395b629 100644 --- a/LiteLoader/Header/MC/NBMonsterThrone.hpp +++ b/LiteLoader/include/llapi/mc/NBMonsterThrone.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBRoomCrossing.hpp b/LiteLoader/include/llapi/mc/NBRoomCrossing.hpp similarity index 98% rename from LiteLoader/Header/MC/NBRoomCrossing.hpp rename to LiteLoader/include/llapi/mc/NBRoomCrossing.hpp index c9f9502..1382a7a 100644 --- a/LiteLoader/Header/MC/NBRoomCrossing.hpp +++ b/LiteLoader/include/llapi/mc/NBRoomCrossing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBStairsRoom.hpp b/LiteLoader/include/llapi/mc/NBStairsRoom.hpp similarity index 98% rename from LiteLoader/Header/MC/NBStairsRoom.hpp rename to LiteLoader/include/llapi/mc/NBStairsRoom.hpp index 19a3fc8..437e8e7 100644 --- a/LiteLoader/Header/MC/NBStairsRoom.hpp +++ b/LiteLoader/include/llapi/mc/NBStairsRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NetherFortressPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NBStartPiece.hpp b/LiteLoader/include/llapi/mc/NBStartPiece.hpp similarity index 96% rename from LiteLoader/Header/MC/NBStartPiece.hpp rename to LiteLoader/include/llapi/mc/NBStartPiece.hpp index 6966829..72db37d 100644 --- a/LiteLoader/Header/MC/NBStartPiece.hpp +++ b/LiteLoader/include/llapi/mc/NBStartPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NBBridgeCrossing.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NameAction.hpp b/LiteLoader/include/llapi/mc/NameAction.hpp similarity index 95% rename from LiteLoader/Header/MC/NameAction.hpp rename to LiteLoader/include/llapi/mc/NameAction.hpp index 63ec10d..9dc2b73 100644 --- a/LiteLoader/Header/MC/NameAction.hpp +++ b/LiteLoader/include/llapi/mc/NameAction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NameableComponent.hpp b/LiteLoader/include/llapi/mc/NameableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/NameableComponent.hpp rename to LiteLoader/include/llapi/mc/NameableComponent.hpp index 16f2fb8..3d06373 100644 --- a/LiteLoader/Header/MC/NameableComponent.hpp +++ b/LiteLoader/include/llapi/mc/NameableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NameableDefinition.hpp b/LiteLoader/include/llapi/mc/NameableDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/NameableDefinition.hpp rename to LiteLoader/include/llapi/mc/NameableDefinition.hpp index 0b7711c..00829eb 100644 --- a/LiteLoader/Header/MC/NameableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/NameableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/NapGoal.hpp b/LiteLoader/include/llapi/mc/NapGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/NapGoal.hpp rename to LiteLoader/include/llapi/mc/NapGoal.hpp index 10d8b4f..dad4e74 100644 --- a/LiteLoader/Header/MC/NapGoal.hpp +++ b/LiteLoader/include/llapi/mc/NapGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationClimbDescription.hpp b/LiteLoader/include/llapi/mc/NavigationClimbDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationClimbDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationClimbDescription.hpp index 24dad7c..2143e7a 100644 --- a/LiteLoader/Header/MC/NavigationClimbDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationClimbDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationComponent.hpp b/LiteLoader/include/llapi/mc/NavigationComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationComponent.hpp rename to LiteLoader/include/llapi/mc/NavigationComponent.hpp index 7f027d2..d1b25b2 100644 --- a/LiteLoader/Header/MC/NavigationComponent.hpp +++ b/LiteLoader/include/llapi/mc/NavigationComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationDescription.hpp b/LiteLoader/include/llapi/mc/NavigationDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationDescription.hpp index 9eb60af..90f7997 100644 --- a/LiteLoader/Header/MC/NavigationDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationFloatDescription.hpp b/LiteLoader/include/llapi/mc/NavigationFloatDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationFloatDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationFloatDescription.hpp index 315fd08..d883345 100644 --- a/LiteLoader/Header/MC/NavigationFloatDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationFloatDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationFlyDescription.hpp b/LiteLoader/include/llapi/mc/NavigationFlyDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationFlyDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationFlyDescription.hpp index fdb4473..6fbdc83 100644 --- a/LiteLoader/Header/MC/NavigationFlyDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationFlyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationGenericDescription.hpp b/LiteLoader/include/llapi/mc/NavigationGenericDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationGenericDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationGenericDescription.hpp index 223f52d..8e16d56 100644 --- a/LiteLoader/Header/MC/NavigationGenericDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationGenericDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationHoverDescription.hpp b/LiteLoader/include/llapi/mc/NavigationHoverDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationHoverDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationHoverDescription.hpp index 2b01f3f..2fc50bd 100644 --- a/LiteLoader/Header/MC/NavigationHoverDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationHoverDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationSwimDescription.hpp b/LiteLoader/include/llapi/mc/NavigationSwimDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationSwimDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationSwimDescription.hpp index 7386ba5..8884785 100644 --- a/LiteLoader/Header/MC/NavigationSwimDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationSwimDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationSystem.hpp b/LiteLoader/include/llapi/mc/NavigationSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/NavigationSystem.hpp rename to LiteLoader/include/llapi/mc/NavigationSystem.hpp index 9d659d7..2602a06 100644 --- a/LiteLoader/Header/MC/NavigationSystem.hpp +++ b/LiteLoader/include/llapi/mc/NavigationSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationUtility.hpp b/LiteLoader/include/llapi/mc/NavigationUtility.hpp similarity index 97% rename from LiteLoader/Header/MC/NavigationUtility.hpp rename to LiteLoader/include/llapi/mc/NavigationUtility.hpp index 7abab00..74acd1b 100644 --- a/LiteLoader/Header/MC/NavigationUtility.hpp +++ b/LiteLoader/include/llapi/mc/NavigationUtility.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NavigationWalkDescription.hpp b/LiteLoader/include/llapi/mc/NavigationWalkDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/NavigationWalkDescription.hpp rename to LiteLoader/include/llapi/mc/NavigationWalkDescription.hpp index fa3390d..26c0d37 100644 --- a/LiteLoader/Header/MC/NavigationWalkDescription.hpp +++ b/LiteLoader/include/llapi/mc/NavigationWalkDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NbtIo.hpp b/LiteLoader/include/llapi/mc/NbtIo.hpp similarity index 95% rename from LiteLoader/Header/MC/NbtIo.hpp rename to LiteLoader/include/llapi/mc/NbtIo.hpp index a29431c..bca7b7e 100644 --- a/LiteLoader/Header/MC/NbtIo.hpp +++ b/LiteLoader/include/llapi/mc/NbtIo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NearestAttackableTargetDefinition.hpp b/LiteLoader/include/llapi/mc/NearestAttackableTargetDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/NearestAttackableTargetDefinition.hpp rename to LiteLoader/include/llapi/mc/NearestAttackableTargetDefinition.hpp index f8828ef..245fd68 100644 --- a/LiteLoader/Header/MC/NearestAttackableTargetDefinition.hpp +++ b/LiteLoader/include/llapi/mc/NearestAttackableTargetDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NearestAttackableTargetGoal.hpp b/LiteLoader/include/llapi/mc/NearestAttackableTargetGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/NearestAttackableTargetGoal.hpp rename to LiteLoader/include/llapi/mc/NearestAttackableTargetGoal.hpp index d73ebbd..02d52dc 100644 --- a/LiteLoader/Header/MC/NearestAttackableTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/NearestAttackableTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NearestPrioritizedAttackableTargetGoal.hpp b/LiteLoader/include/llapi/mc/NearestPrioritizedAttackableTargetGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/NearestPrioritizedAttackableTargetGoal.hpp rename to LiteLoader/include/llapi/mc/NearestPrioritizedAttackableTargetGoal.hpp index 27351da..28f7fea 100644 --- a/LiteLoader/Header/MC/NearestPrioritizedAttackableTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/NearestPrioritizedAttackableTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "NearestAttackableTargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetEventCallback.hpp b/LiteLoader/include/llapi/mc/NetEventCallback.hpp similarity index 99% rename from LiteLoader/Header/MC/NetEventCallback.hpp rename to LiteLoader/include/llapi/mc/NetEventCallback.hpp index 06c96a7..c75be3c 100644 --- a/LiteLoader/Header/MC/NetEventCallback.hpp +++ b/LiteLoader/include/llapi/mc/NetEventCallback.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherBrightnessRamp.hpp b/LiteLoader/include/llapi/mc/NetherBrightnessRamp.hpp similarity index 96% rename from LiteLoader/Header/MC/NetherBrightnessRamp.hpp rename to LiteLoader/include/llapi/mc/NetherBrightnessRamp.hpp index 804a229..6ae3463 100644 --- a/LiteLoader/Header/MC/NetherBrightnessRamp.hpp +++ b/LiteLoader/include/llapi/mc/NetherBrightnessRamp.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "DimensionBrightnessRamp.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherDimension.hpp b/LiteLoader/include/llapi/mc/NetherDimension.hpp similarity index 97% rename from LiteLoader/Header/MC/NetherDimension.hpp rename to LiteLoader/include/llapi/mc/NetherDimension.hpp index 015a816..050ba7c 100644 --- a/LiteLoader/Header/MC/NetherDimension.hpp +++ b/LiteLoader/include/llapi/mc/NetherDimension.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherFortressFeature.hpp b/LiteLoader/include/llapi/mc/NetherFortressFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/NetherFortressFeature.hpp rename to LiteLoader/include/llapi/mc/NetherFortressFeature.hpp index f7651e4..509a839 100644 --- a/LiteLoader/Header/MC/NetherFortressFeature.hpp +++ b/LiteLoader/include/llapi/mc/NetherFortressFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherFortressPiece.hpp b/LiteLoader/include/llapi/mc/NetherFortressPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/NetherFortressPiece.hpp rename to LiteLoader/include/llapi/mc/NetherFortressPiece.hpp index 65e7ad6..e71dc6b 100644 --- a/LiteLoader/Header/MC/NetherFortressPiece.hpp +++ b/LiteLoader/include/llapi/mc/NetherFortressPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherFortressStart.hpp b/LiteLoader/include/llapi/mc/NetherFortressStart.hpp similarity index 96% rename from LiteLoader/Header/MC/NetherFortressStart.hpp rename to LiteLoader/include/llapi/mc/NetherFortressStart.hpp index 971663a..7542882 100644 --- a/LiteLoader/Header/MC/NetherFortressStart.hpp +++ b/LiteLoader/include/llapi/mc/NetherFortressStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherFossilFeature.hpp b/LiteLoader/include/llapi/mc/NetherFossilFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/NetherFossilFeature.hpp rename to LiteLoader/include/llapi/mc/NetherFossilFeature.hpp index 962a6d5..1fee8de 100644 --- a/LiteLoader/Header/MC/NetherFossilFeature.hpp +++ b/LiteLoader/include/llapi/mc/NetherFossilFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherFungusBlock.hpp b/LiteLoader/include/llapi/mc/NetherFungusBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/NetherFungusBlock.hpp rename to LiteLoader/include/llapi/mc/NetherFungusBlock.hpp index fc32281..bf78c70 100644 --- a/LiteLoader/Header/MC/NetherFungusBlock.hpp +++ b/LiteLoader/include/llapi/mc/NetherFungusBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherGenerator.hpp b/LiteLoader/include/llapi/mc/NetherGenerator.hpp similarity index 98% rename from LiteLoader/Header/MC/NetherGenerator.hpp rename to LiteLoader/include/llapi/mc/NetherGenerator.hpp index 12e3bc1..88407d9 100644 --- a/LiteLoader/Header/MC/NetherGenerator.hpp +++ b/LiteLoader/include/llapi/mc/NetherGenerator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherReactorBlock.hpp b/LiteLoader/include/llapi/mc/NetherReactorBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/NetherReactorBlock.hpp rename to LiteLoader/include/llapi/mc/NetherReactorBlock.hpp index ec32cc3..bdb9d28 100644 --- a/LiteLoader/Header/MC/NetherReactorBlock.hpp +++ b/LiteLoader/include/llapi/mc/NetherReactorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherReactorBlockActor.hpp b/LiteLoader/include/llapi/mc/NetherReactorBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/NetherReactorBlockActor.hpp rename to LiteLoader/include/llapi/mc/NetherReactorBlockActor.hpp index 498de6e..f2796d8 100644 --- a/LiteLoader/Header/MC/NetherReactorBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/NetherReactorBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherSprouts.hpp b/LiteLoader/include/llapi/mc/NetherSprouts.hpp similarity index 99% rename from LiteLoader/Header/MC/NetherSprouts.hpp rename to LiteLoader/include/llapi/mc/NetherSprouts.hpp index 4426af7..20814cd 100644 --- a/LiteLoader/Header/MC/NetherSprouts.hpp +++ b/LiteLoader/include/llapi/mc/NetherSprouts.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherStructureFeatureHelper.hpp b/LiteLoader/include/llapi/mc/NetherStructureFeatureHelper.hpp similarity index 93% rename from LiteLoader/Header/MC/NetherStructureFeatureHelper.hpp rename to LiteLoader/include/llapi/mc/NetherStructureFeatureHelper.hpp index 087cc22..78e979a 100644 --- a/LiteLoader/Header/MC/NetherStructureFeatureHelper.hpp +++ b/LiteLoader/include/llapi/mc/NetherStructureFeatureHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherWartBlock.hpp b/LiteLoader/include/llapi/mc/NetherWartBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/NetherWartBlock.hpp rename to LiteLoader/include/llapi/mc/NetherWartBlock.hpp index b9b53e7..d237a9f 100644 --- a/LiteLoader/Header/MC/NetherWartBlock.hpp +++ b/LiteLoader/include/llapi/mc/NetherWartBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetheriteArmorEquippedListener.hpp b/LiteLoader/include/llapi/mc/NetheriteArmorEquippedListener.hpp similarity index 98% rename from LiteLoader/Header/MC/NetheriteArmorEquippedListener.hpp rename to LiteLoader/include/llapi/mc/NetheriteArmorEquippedListener.hpp index b62d140..5a038f2 100644 --- a/LiteLoader/Header/MC/NetheriteArmorEquippedListener.hpp +++ b/LiteLoader/include/llapi/mc/NetheriteArmorEquippedListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetherrackBlock.hpp b/LiteLoader/include/llapi/mc/NetherrackBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/NetherrackBlock.hpp rename to LiteLoader/include/llapi/mc/NetherrackBlock.hpp index d8b7604..4e9e047 100644 --- a/LiteLoader/Header/MC/NetherrackBlock.hpp +++ b/LiteLoader/include/llapi/mc/NetherrackBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkAddress.hpp b/LiteLoader/include/llapi/mc/NetworkAddress.hpp similarity index 95% rename from LiteLoader/Header/MC/NetworkAddress.hpp rename to LiteLoader/include/llapi/mc/NetworkAddress.hpp index 9900482..f339f15 100644 --- a/LiteLoader/Header/MC/NetworkAddress.hpp +++ b/LiteLoader/include/llapi/mc/NetworkAddress.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkChunkPublisher.hpp b/LiteLoader/include/llapi/mc/NetworkChunkPublisher.hpp similarity index 97% rename from LiteLoader/Header/MC/NetworkChunkPublisher.hpp rename to LiteLoader/include/llapi/mc/NetworkChunkPublisher.hpp index 97a102a..faf8c71 100644 --- a/LiteLoader/Header/MC/NetworkChunkPublisher.hpp +++ b/LiteLoader/include/llapi/mc/NetworkChunkPublisher.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkChunkPublisherUpdatePacket.hpp b/LiteLoader/include/llapi/mc/NetworkChunkPublisherUpdatePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/NetworkChunkPublisherUpdatePacket.hpp rename to LiteLoader/include/llapi/mc/NetworkChunkPublisherUpdatePacket.hpp index 61556a7..8ea9bfb 100644 --- a/LiteLoader/Header/MC/NetworkChunkPublisherUpdatePacket.hpp +++ b/LiteLoader/include/llapi/mc/NetworkChunkPublisherUpdatePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkChunkSource.hpp b/LiteLoader/include/llapi/mc/NetworkChunkSource.hpp similarity index 98% rename from LiteLoader/Header/MC/NetworkChunkSource.hpp rename to LiteLoader/include/llapi/mc/NetworkChunkSource.hpp index 938a6a5..4e4f487 100644 --- a/LiteLoader/Header/MC/NetworkChunkSource.hpp +++ b/LiteLoader/include/llapi/mc/NetworkChunkSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChunkSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkDebugManager.hpp b/LiteLoader/include/llapi/mc/NetworkDebugManager.hpp similarity index 95% rename from LiteLoader/Header/MC/NetworkDebugManager.hpp rename to LiteLoader/include/llapi/mc/NetworkDebugManager.hpp index fb881f4..5f538df 100644 --- a/LiteLoader/Header/MC/NetworkDebugManager.hpp +++ b/LiteLoader/include/llapi/mc/NetworkDebugManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkHandler.hpp b/LiteLoader/include/llapi/mc/NetworkHandler.hpp similarity index 99% rename from LiteLoader/Header/MC/NetworkHandler.hpp rename to LiteLoader/include/llapi/mc/NetworkHandler.hpp index 9d22567..804b39c 100644 --- a/LiteLoader/Header/MC/NetworkHandler.hpp +++ b/LiteLoader/include/llapi/mc/NetworkHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkIdentifier.hpp b/LiteLoader/include/llapi/mc/NetworkIdentifier.hpp similarity index 97% rename from LiteLoader/Header/MC/NetworkIdentifier.hpp rename to LiteLoader/include/llapi/mc/NetworkIdentifier.hpp index 181c487..eaca16d 100644 --- a/LiteLoader/Header/MC/NetworkIdentifier.hpp +++ b/LiteLoader/include/llapi/mc/NetworkIdentifier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "RakNet.hpp" diff --git a/LiteLoader/Header/MC/NetworkPacketEventListener.hpp b/LiteLoader/include/llapi/mc/NetworkPacketEventListener.hpp similarity index 96% rename from LiteLoader/Header/MC/NetworkPacketEventListener.hpp rename to LiteLoader/include/llapi/mc/NetworkPacketEventListener.hpp index 2f4f192..0b8ece6 100644 --- a/LiteLoader/Header/MC/NetworkPacketEventListener.hpp +++ b/LiteLoader/include/llapi/mc/NetworkPacketEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkPeer.hpp b/LiteLoader/include/llapi/mc/NetworkPeer.hpp similarity index 98% rename from LiteLoader/Header/MC/NetworkPeer.hpp rename to LiteLoader/include/llapi/mc/NetworkPeer.hpp index 13aabb8..82e67be 100644 --- a/LiteLoader/Header/MC/NetworkPeer.hpp +++ b/LiteLoader/include/llapi/mc/NetworkPeer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkSettingsPacket.hpp b/LiteLoader/include/llapi/mc/NetworkSettingsPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/NetworkSettingsPacket.hpp rename to LiteLoader/include/llapi/mc/NetworkSettingsPacket.hpp index 65fc628..428e694 100644 --- a/LiteLoader/Header/MC/NetworkSettingsPacket.hpp +++ b/LiteLoader/include/llapi/mc/NetworkSettingsPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkStackLatencyPacket.hpp b/LiteLoader/include/llapi/mc/NetworkStackLatencyPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/NetworkStackLatencyPacket.hpp rename to LiteLoader/include/llapi/mc/NetworkStackLatencyPacket.hpp index 29b68b6..864f97f 100644 --- a/LiteLoader/Header/MC/NetworkStackLatencyPacket.hpp +++ b/LiteLoader/include/llapi/mc/NetworkStackLatencyPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NetworkStatistics.hpp b/LiteLoader/include/llapi/mc/NetworkStatistics.hpp similarity index 95% rename from LiteLoader/Header/MC/NetworkStatistics.hpp rename to LiteLoader/include/llapi/mc/NetworkStatistics.hpp index 8dc3735..def13dc 100644 --- a/LiteLoader/Header/MC/NetworkStatistics.hpp +++ b/LiteLoader/include/llapi/mc/NetworkStatistics.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NewLeafBlock.hpp b/LiteLoader/include/llapi/mc/NewLeafBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/NewLeafBlock.hpp rename to LiteLoader/include/llapi/mc/NewLeafBlock.hpp index 5521d8f..57cdf69 100644 --- a/LiteLoader/Header/MC/NewLeafBlock.hpp +++ b/LiteLoader/include/llapi/mc/NewLeafBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LeafBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NewLogBlock.hpp b/LiteLoader/include/llapi/mc/NewLogBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/NewLogBlock.hpp rename to LiteLoader/include/llapi/mc/NewLogBlock.hpp index 4fd4774..d3eeab8 100644 --- a/LiteLoader/Header/MC/NewLogBlock.hpp +++ b/LiteLoader/include/llapi/mc/NewLogBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RotatedPillarBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NoSurfaceOreFeature.hpp b/LiteLoader/include/llapi/mc/NoSurfaceOreFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/NoSurfaceOreFeature.hpp rename to LiteLoader/include/llapi/mc/NoSurfaceOreFeature.hpp index f45abe9..65ffa2b 100644 --- a/LiteLoader/Header/MC/NoSurfaceOreFeature.hpp +++ b/LiteLoader/include/llapi/mc/NoSurfaceOreFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NormalNoiseLayer.hpp b/LiteLoader/include/llapi/mc/NormalNoiseLayer.hpp similarity index 96% rename from LiteLoader/Header/MC/NormalNoiseLayer.hpp rename to LiteLoader/include/llapi/mc/NormalNoiseLayer.hpp index 7423007..fe152da 100644 --- a/LiteLoader/Header/MC/NormalNoiseLayer.hpp +++ b/LiteLoader/include/llapi/mc/NormalNoiseLayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NoteBlock.hpp b/LiteLoader/include/llapi/mc/NoteBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/NoteBlock.hpp rename to LiteLoader/include/llapi/mc/NoteBlock.hpp index f1df956..325857a 100644 --- a/LiteLoader/Header/MC/NoteBlock.hpp +++ b/LiteLoader/include/llapi/mc/NoteBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Npc.hpp b/LiteLoader/include/llapi/mc/Npc.hpp similarity index 98% rename from LiteLoader/Header/MC/Npc.hpp rename to LiteLoader/include/llapi/mc/Npc.hpp index 9d6a885..7b076a1 100644 --- a/LiteLoader/Header/MC/Npc.hpp +++ b/LiteLoader/include/llapi/mc/Npc.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/NpcAction.hpp b/LiteLoader/include/llapi/mc/NpcAction.hpp similarity index 97% rename from LiteLoader/Header/MC/NpcAction.hpp rename to LiteLoader/include/llapi/mc/NpcAction.hpp index edc191e..5582bdb 100644 --- a/LiteLoader/Header/MC/NpcAction.hpp +++ b/LiteLoader/include/llapi/mc/NpcAction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NpcCommandAction.hpp b/LiteLoader/include/llapi/mc/NpcCommandAction.hpp similarity index 96% rename from LiteLoader/Header/MC/NpcCommandAction.hpp rename to LiteLoader/include/llapi/mc/NpcCommandAction.hpp index a791d9e..7cedbd7 100644 --- a/LiteLoader/Header/MC/NpcCommandAction.hpp +++ b/LiteLoader/include/llapi/mc/NpcCommandAction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NpcComponent.hpp b/LiteLoader/include/llapi/mc/NpcComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/NpcComponent.hpp rename to LiteLoader/include/llapi/mc/NpcComponent.hpp index fc8e803..a39fbc9 100644 --- a/LiteLoader/Header/MC/NpcComponent.hpp +++ b/LiteLoader/include/llapi/mc/NpcComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NpcGUIOffset.hpp b/LiteLoader/include/llapi/mc/NpcGUIOffset.hpp similarity index 95% rename from LiteLoader/Header/MC/NpcGUIOffset.hpp rename to LiteLoader/include/llapi/mc/NpcGUIOffset.hpp index 8f8a257..e3e3ff8 100644 --- a/LiteLoader/Header/MC/NpcGUIOffset.hpp +++ b/LiteLoader/include/llapi/mc/NpcGUIOffset.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NpcI18nObserver.hpp b/LiteLoader/include/llapi/mc/NpcI18nObserver.hpp similarity index 96% rename from LiteLoader/Header/MC/NpcI18nObserver.hpp rename to LiteLoader/include/llapi/mc/NpcI18nObserver.hpp index d0a4e69..dca9243 100644 --- a/LiteLoader/Header/MC/NpcI18nObserver.hpp +++ b/LiteLoader/include/llapi/mc/NpcI18nObserver.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NpcRequestPacket.hpp b/LiteLoader/include/llapi/mc/NpcRequestPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/NpcRequestPacket.hpp rename to LiteLoader/include/llapi/mc/NpcRequestPacket.hpp index 1e79aeb..0401edf 100644 --- a/LiteLoader/Header/MC/NpcRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/NpcRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NpcUrlAction.hpp b/LiteLoader/include/llapi/mc/NpcUrlAction.hpp similarity index 95% rename from LiteLoader/Header/MC/NpcUrlAction.hpp rename to LiteLoader/include/llapi/mc/NpcUrlAction.hpp index 7a8d5c4..b5695d7 100644 --- a/LiteLoader/Header/MC/NpcUrlAction.hpp +++ b/LiteLoader/include/llapi/mc/NpcUrlAction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NullLogger.hpp b/LiteLoader/include/llapi/mc/NullLogger.hpp similarity index 95% rename from LiteLoader/Header/MC/NullLogger.hpp rename to LiteLoader/include/llapi/mc/NullLogger.hpp index ab7fc80..a046ec3 100644 --- a/LiteLoader/Header/MC/NullLogger.hpp +++ b/LiteLoader/include/llapi/mc/NullLogger.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NullSecureStorage.hpp b/LiteLoader/include/llapi/mc/NullSecureStorage.hpp similarity index 96% rename from LiteLoader/Header/MC/NullSecureStorage.hpp rename to LiteLoader/include/llapi/mc/NullSecureStorage.hpp index fdbc9ec..90b66d4 100644 --- a/LiteLoader/Header/MC/NullSecureStorage.hpp +++ b/LiteLoader/include/llapi/mc/NullSecureStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NullSoundPlayer.hpp b/LiteLoader/include/llapi/mc/NullSoundPlayer.hpp similarity index 98% rename from LiteLoader/Header/MC/NullSoundPlayer.hpp rename to LiteLoader/include/llapi/mc/NullSoundPlayer.hpp index 395fe6d..f368796 100644 --- a/LiteLoader/Header/MC/NullSoundPlayer.hpp +++ b/LiteLoader/include/llapi/mc/NullSoundPlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/NyliumBlock.hpp b/LiteLoader/include/llapi/mc/NyliumBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/NyliumBlock.hpp rename to LiteLoader/include/llapi/mc/NyliumBlock.hpp index 64da25a..a40cb44 100644 --- a/LiteLoader/Header/MC/NyliumBlock.hpp +++ b/LiteLoader/include/llapi/mc/NyliumBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OSInformation.hpp b/LiteLoader/include/llapi/mc/OSInformation.hpp similarity index 94% rename from LiteLoader/Header/MC/OSInformation.hpp rename to LiteLoader/include/llapi/mc/OSInformation.hpp index 537b62a..a6efc8b 100644 --- a/LiteLoader/Header/MC/OSInformation.hpp +++ b/LiteLoader/include/llapi/mc/OSInformation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Objective.hpp b/LiteLoader/include/llapi/mc/Objective.hpp similarity index 96% rename from LiteLoader/Header/MC/Objective.hpp rename to LiteLoader/include/llapi/mc/Objective.hpp index d8a73db..45aa346 100644 --- a/LiteLoader/Header/MC/Objective.hpp +++ b/LiteLoader/include/llapi/mc/Objective.hpp @@ -1,10 +1,10 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA - +#include #undef BEFORE_EXTRA class Objective { diff --git a/LiteLoader/Header/MC/ObjectiveCriteria.hpp b/LiteLoader/include/llapi/mc/ObjectiveCriteria.hpp similarity index 95% rename from LiteLoader/Header/MC/ObjectiveCriteria.hpp rename to LiteLoader/include/llapi/mc/ObjectiveCriteria.hpp index 3ce357e..30ad319 100644 --- a/LiteLoader/Header/MC/ObjectiveCriteria.hpp +++ b/LiteLoader/include/llapi/mc/ObjectiveCriteria.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ObserverBlock.hpp b/LiteLoader/include/llapi/mc/ObserverBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ObserverBlock.hpp rename to LiteLoader/include/llapi/mc/ObserverBlock.hpp index 7347325..8e03f68 100644 --- a/LiteLoader/Header/MC/ObserverBlock.hpp +++ b/LiteLoader/include/llapi/mc/ObserverBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ObsidianBlock.hpp b/LiteLoader/include/llapi/mc/ObsidianBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/ObsidianBlock.hpp rename to LiteLoader/include/llapi/mc/ObsidianBlock.hpp index 13f1af3..641fcc8 100644 --- a/LiteLoader/Header/MC/ObsidianBlock.hpp +++ b/LiteLoader/include/llapi/mc/ObsidianBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMixerLayer.hpp b/LiteLoader/include/llapi/mc/OceanMixerLayer.hpp similarity index 97% rename from LiteLoader/Header/MC/OceanMixerLayer.hpp rename to LiteLoader/include/llapi/mc/OceanMixerLayer.hpp index 3620e7f..ec00c37 100644 --- a/LiteLoader/Header/MC/OceanMixerLayer.hpp +++ b/LiteLoader/include/llapi/mc/OceanMixerLayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentCoreRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentCoreRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentCoreRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentCoreRoom.hpp index 8b55394..f96f288 100644 --- a/LiteLoader/Header/MC/OceanMonumentCoreRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentCoreRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentDoubleXRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentDoubleXRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentDoubleXRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentDoubleXRoom.hpp index a51d35f..e056082 100644 --- a/LiteLoader/Header/MC/OceanMonumentDoubleXRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentDoubleXRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentDoubleXYRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentDoubleXYRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentDoubleXYRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentDoubleXYRoom.hpp index 1baacbd..d678132 100644 --- a/LiteLoader/Header/MC/OceanMonumentDoubleXYRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentDoubleXYRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentDoubleYRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentDoubleYRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentDoubleYRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentDoubleYRoom.hpp index 4ad1429..3e18602 100644 --- a/LiteLoader/Header/MC/OceanMonumentDoubleYRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentDoubleYRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentDoubleYZRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentDoubleYZRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentDoubleYZRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentDoubleYZRoom.hpp index d47db54..8647449 100644 --- a/LiteLoader/Header/MC/OceanMonumentDoubleYZRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentDoubleYZRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentDoubleZRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentDoubleZRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentDoubleZRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentDoubleZRoom.hpp index 8f2df80..f078c6c 100644 --- a/LiteLoader/Header/MC/OceanMonumentDoubleZRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentDoubleZRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentEntryRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentEntryRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentEntryRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentEntryRoom.hpp index 79aa60f..d0c7923 100644 --- a/LiteLoader/Header/MC/OceanMonumentEntryRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentEntryRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentFeature.hpp b/LiteLoader/include/llapi/mc/OceanMonumentFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/OceanMonumentFeature.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentFeature.hpp index aa392d1..c9f942f 100644 --- a/LiteLoader/Header/MC/OceanMonumentFeature.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentPenthouse.hpp b/LiteLoader/include/llapi/mc/OceanMonumentPenthouse.hpp similarity index 97% rename from LiteLoader/Header/MC/OceanMonumentPenthouse.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentPenthouse.hpp index c2a1c82..aa5b2cb 100644 --- a/LiteLoader/Header/MC/OceanMonumentPenthouse.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentPenthouse.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentPiece.hpp b/LiteLoader/include/llapi/mc/OceanMonumentPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/OceanMonumentPiece.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentPiece.hpp index 0d6cac5..1e53529 100644 --- a/LiteLoader/Header/MC/OceanMonumentPiece.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentSimpleRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentSimpleRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentSimpleRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentSimpleRoom.hpp index 4b2a01f..2556262 100644 --- a/LiteLoader/Header/MC/OceanMonumentSimpleRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentSimpleRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentSimpleTopRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentSimpleTopRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentSimpleTopRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentSimpleTopRoom.hpp index 6a08c0c..fc37ca1 100644 --- a/LiteLoader/Header/MC/OceanMonumentSimpleTopRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentSimpleTopRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentStart.hpp b/LiteLoader/include/llapi/mc/OceanMonumentStart.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanMonumentStart.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentStart.hpp index 5440300..d3ac2de 100644 --- a/LiteLoader/Header/MC/OceanMonumentStart.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanMonumentWingRoom.hpp b/LiteLoader/include/llapi/mc/OceanMonumentWingRoom.hpp similarity index 97% rename from LiteLoader/Header/MC/OceanMonumentWingRoom.hpp rename to LiteLoader/include/llapi/mc/OceanMonumentWingRoom.hpp index be32983..202e6f3 100644 --- a/LiteLoader/Header/MC/OceanMonumentWingRoom.hpp +++ b/LiteLoader/include/llapi/mc/OceanMonumentWingRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "OceanMonumentPiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanRuinFeature.hpp b/LiteLoader/include/llapi/mc/OceanRuinFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/OceanRuinFeature.hpp rename to LiteLoader/include/llapi/mc/OceanRuinFeature.hpp index 745ddcd..a87b4da 100644 --- a/LiteLoader/Header/MC/OceanRuinFeature.hpp +++ b/LiteLoader/include/llapi/mc/OceanRuinFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanRuinPieces.hpp b/LiteLoader/include/llapi/mc/OceanRuinPieces.hpp similarity index 98% rename from LiteLoader/Header/MC/OceanRuinPieces.hpp rename to LiteLoader/include/llapi/mc/OceanRuinPieces.hpp index de5f717..3adcfda 100644 --- a/LiteLoader/Header/MC/OceanRuinPieces.hpp +++ b/LiteLoader/include/llapi/mc/OceanRuinPieces.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OceanRuinStart.hpp b/LiteLoader/include/llapi/mc/OceanRuinStart.hpp similarity index 96% rename from LiteLoader/Header/MC/OceanRuinStart.hpp rename to LiteLoader/include/llapi/mc/OceanRuinStart.hpp index 63ce243..1386e86 100644 --- a/LiteLoader/Header/MC/OceanRuinStart.hpp +++ b/LiteLoader/include/llapi/mc/OceanRuinStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Ocelot.hpp b/LiteLoader/include/llapi/mc/Ocelot.hpp similarity index 98% rename from LiteLoader/Header/MC/Ocelot.hpp rename to LiteLoader/include/llapi/mc/Ocelot.hpp index 0cc85f4..126bc73 100644 --- a/LiteLoader/Header/MC/Ocelot.hpp +++ b/LiteLoader/include/llapi/mc/Ocelot.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/OcelotAttackDefinition.hpp b/LiteLoader/include/llapi/mc/OcelotAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/OcelotAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/OcelotAttackDefinition.hpp index e07f113..c33a563 100644 --- a/LiteLoader/Header/MC/OcelotAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/OcelotAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OcelotAttackGoal.hpp b/LiteLoader/include/llapi/mc/OcelotAttackGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/OcelotAttackGoal.hpp rename to LiteLoader/include/llapi/mc/OcelotAttackGoal.hpp index d1a96dc..5ee39ca 100644 --- a/LiteLoader/Header/MC/OcelotAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/OcelotAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OcelotSitOnBlockGoal.hpp b/LiteLoader/include/llapi/mc/OcelotSitOnBlockGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/OcelotSitOnBlockGoal.hpp rename to LiteLoader/include/llapi/mc/OcelotSitOnBlockGoal.hpp index bba23c1..d16795f 100644 --- a/LiteLoader/Header/MC/OcelotSitOnBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/OcelotSitOnBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OculusPlatformMessagePump.hpp b/LiteLoader/include/llapi/mc/OculusPlatformMessagePump.hpp similarity index 95% rename from LiteLoader/Header/MC/OculusPlatformMessagePump.hpp rename to LiteLoader/include/llapi/mc/OculusPlatformMessagePump.hpp index d0d029a..33e9aca 100644 --- a/LiteLoader/Header/MC/OculusPlatformMessagePump.hpp +++ b/LiteLoader/include/llapi/mc/OculusPlatformMessagePump.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OfferFlowerGoal.hpp b/LiteLoader/include/llapi/mc/OfferFlowerGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/OfferFlowerGoal.hpp rename to LiteLoader/include/llapi/mc/OfferFlowerGoal.hpp index 51bfbc6..612ce25 100644 --- a/LiteLoader/Header/MC/OfferFlowerGoal.hpp +++ b/LiteLoader/include/llapi/mc/OfferFlowerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OldLeafBlock.hpp b/LiteLoader/include/llapi/mc/OldLeafBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/OldLeafBlock.hpp rename to LiteLoader/include/llapi/mc/OldLeafBlock.hpp index 18ef347..b80a82d 100644 --- a/LiteLoader/Header/MC/OldLeafBlock.hpp +++ b/LiteLoader/include/llapi/mc/OldLeafBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LeafBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OldLogBlock.hpp b/LiteLoader/include/llapi/mc/OldLogBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/OldLogBlock.hpp rename to LiteLoader/include/llapi/mc/OldLogBlock.hpp index 38df93b..3cb9731 100644 --- a/LiteLoader/Header/MC/OldLogBlock.hpp +++ b/LiteLoader/include/llapi/mc/OldLogBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RotatedPillarBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnDeathDescription.hpp b/LiteLoader/include/llapi/mc/OnDeathDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnDeathDescription.hpp rename to LiteLoader/include/llapi/mc/OnDeathDescription.hpp index 67899e5..c945ad9 100644 --- a/LiteLoader/Header/MC/OnDeathDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnDeathDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnFriendlyAngerDescription.hpp b/LiteLoader/include/llapi/mc/OnFriendlyAngerDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnFriendlyAngerDescription.hpp rename to LiteLoader/include/llapi/mc/OnFriendlyAngerDescription.hpp index c09585b..fb37d0a 100644 --- a/LiteLoader/Header/MC/OnFriendlyAngerDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnFriendlyAngerDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnHitSubcomponent.hpp b/LiteLoader/include/llapi/mc/OnHitSubcomponent.hpp similarity index 95% rename from LiteLoader/Header/MC/OnHitSubcomponent.hpp rename to LiteLoader/include/llapi/mc/OnHitSubcomponent.hpp index 6a234c0..ace3e53 100644 --- a/LiteLoader/Header/MC/OnHitSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/OnHitSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnHurtByPlayerDescription.hpp b/LiteLoader/include/llapi/mc/OnHurtByPlayerDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnHurtByPlayerDescription.hpp rename to LiteLoader/include/llapi/mc/OnHurtByPlayerDescription.hpp index f51898a..aa1b0a4 100644 --- a/LiteLoader/Header/MC/OnHurtByPlayerDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnHurtByPlayerDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnHurtDescription.hpp b/LiteLoader/include/llapi/mc/OnHurtDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnHurtDescription.hpp rename to LiteLoader/include/llapi/mc/OnHurtDescription.hpp index 71e9512..bc9a2ee 100644 --- a/LiteLoader/Header/MC/OnHurtDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnHurtDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnIgniteDescription.hpp b/LiteLoader/include/llapi/mc/OnIgniteDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnIgniteDescription.hpp rename to LiteLoader/include/llapi/mc/OnIgniteDescription.hpp index 1ab0d5c..47d114d 100644 --- a/LiteLoader/Header/MC/OnIgniteDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnIgniteDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnScreenTextureAnimationPacket.hpp b/LiteLoader/include/llapi/mc/OnScreenTextureAnimationPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/OnScreenTextureAnimationPacket.hpp rename to LiteLoader/include/llapi/mc/OnScreenTextureAnimationPacket.hpp index ac51784..4d0d8d6 100644 --- a/LiteLoader/Header/MC/OnScreenTextureAnimationPacket.hpp +++ b/LiteLoader/include/llapi/mc/OnScreenTextureAnimationPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnStartLandingDescription.hpp b/LiteLoader/include/llapi/mc/OnStartLandingDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnStartLandingDescription.hpp rename to LiteLoader/include/llapi/mc/OnStartLandingDescription.hpp index b19be07..bc501d5 100644 --- a/LiteLoader/Header/MC/OnStartLandingDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnStartLandingDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnStartTakeoffDescription.hpp b/LiteLoader/include/llapi/mc/OnStartTakeoffDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnStartTakeoffDescription.hpp rename to LiteLoader/include/llapi/mc/OnStartTakeoffDescription.hpp index 1eb2d36..4a4be9e 100644 --- a/LiteLoader/Header/MC/OnStartTakeoffDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnStartTakeoffDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnTargetAcquiredDescription.hpp b/LiteLoader/include/llapi/mc/OnTargetAcquiredDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnTargetAcquiredDescription.hpp rename to LiteLoader/include/llapi/mc/OnTargetAcquiredDescription.hpp index f93bf12..83a98da 100644 --- a/LiteLoader/Header/MC/OnTargetAcquiredDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnTargetAcquiredDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnTargetEscapeDescription.hpp b/LiteLoader/include/llapi/mc/OnTargetEscapeDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnTargetEscapeDescription.hpp rename to LiteLoader/include/llapi/mc/OnTargetEscapeDescription.hpp index 594fd4c..195495a 100644 --- a/LiteLoader/Header/MC/OnTargetEscapeDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnTargetEscapeDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OnWakeWithOwnerDescription.hpp b/LiteLoader/include/llapi/mc/OnWakeWithOwnerDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OnWakeWithOwnerDescription.hpp rename to LiteLoader/include/llapi/mc/OnWakeWithOwnerDescription.hpp index 5877163..2579953 100644 --- a/LiteLoader/Header/MC/OnWakeWithOwnerDescription.hpp +++ b/LiteLoader/include/llapi/mc/OnWakeWithOwnerDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OpCommand.hpp b/LiteLoader/include/llapi/mc/OpCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/OpCommand.hpp rename to LiteLoader/include/llapi/mc/OpCommand.hpp index ba2d32f..3e4e60a 100644 --- a/LiteLoader/Header/MC/OpCommand.hpp +++ b/LiteLoader/include/llapi/mc/OpCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OpenDoorAnnotationComponent.hpp b/LiteLoader/include/llapi/mc/OpenDoorAnnotationComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/OpenDoorAnnotationComponent.hpp rename to LiteLoader/include/llapi/mc/OpenDoorAnnotationComponent.hpp index d9f72db..723a982 100644 --- a/LiteLoader/Header/MC/OpenDoorAnnotationComponent.hpp +++ b/LiteLoader/include/llapi/mc/OpenDoorAnnotationComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OpenDoorAnnotationDescription.hpp b/LiteLoader/include/llapi/mc/OpenDoorAnnotationDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/OpenDoorAnnotationDescription.hpp rename to LiteLoader/include/llapi/mc/OpenDoorAnnotationDescription.hpp index 4576caf..076de21 100644 --- a/LiteLoader/Header/MC/OpenDoorAnnotationDescription.hpp +++ b/LiteLoader/include/llapi/mc/OpenDoorAnnotationDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OpenDoorAnnotationSystem.hpp b/LiteLoader/include/llapi/mc/OpenDoorAnnotationSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/OpenDoorAnnotationSystem.hpp rename to LiteLoader/include/llapi/mc/OpenDoorAnnotationSystem.hpp index 633db0c..c1064ca 100644 --- a/LiteLoader/Header/MC/OpenDoorAnnotationSystem.hpp +++ b/LiteLoader/include/llapi/mc/OpenDoorAnnotationSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OpenDoorGoal.hpp b/LiteLoader/include/llapi/mc/OpenDoorGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/OpenDoorGoal.hpp rename to LiteLoader/include/llapi/mc/OpenDoorGoal.hpp index ed925cd..32233a5 100644 --- a/LiteLoader/Header/MC/OpenDoorGoal.hpp +++ b/LiteLoader/include/llapi/mc/OpenDoorGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Option.hpp b/LiteLoader/include/llapi/mc/Option.hpp similarity index 98% rename from LiteLoader/Header/MC/Option.hpp rename to LiteLoader/include/llapi/mc/Option.hpp index 3773f8b..fd34e5d 100644 --- a/LiteLoader/Header/MC/Option.hpp +++ b/LiteLoader/include/llapi/mc/Option.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OptionalString.hpp b/LiteLoader/include/llapi/mc/OptionalString.hpp similarity index 95% rename from LiteLoader/Header/MC/OptionalString.hpp rename to LiteLoader/include/llapi/mc/OptionalString.hpp index 5acc5b3..55c49de 100644 --- a/LiteLoader/Header/MC/OptionalString.hpp +++ b/LiteLoader/include/llapi/mc/OptionalString.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OreBlock.hpp b/LiteLoader/include/llapi/mc/OreBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/OreBlock.hpp rename to LiteLoader/include/llapi/mc/OreBlock.hpp index da0480c..914316f 100644 --- a/LiteLoader/Header/MC/OreBlock.hpp +++ b/LiteLoader/include/llapi/mc/OreBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OreFeature.hpp b/LiteLoader/include/llapi/mc/OreFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/OreFeature.hpp rename to LiteLoader/include/llapi/mc/OreFeature.hpp index 0d31c90..0b02f0b 100644 --- a/LiteLoader/Header/MC/OreFeature.hpp +++ b/LiteLoader/include/llapi/mc/OreFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OverworldBrightnessRamp.hpp b/LiteLoader/include/llapi/mc/OverworldBrightnessRamp.hpp similarity index 96% rename from LiteLoader/Header/MC/OverworldBrightnessRamp.hpp rename to LiteLoader/include/llapi/mc/OverworldBrightnessRamp.hpp index 8aabdff..4225bc9 100644 --- a/LiteLoader/Header/MC/OverworldBrightnessRamp.hpp +++ b/LiteLoader/include/llapi/mc/OverworldBrightnessRamp.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "DimensionBrightnessRamp.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OverworldDimension.hpp b/LiteLoader/include/llapi/mc/OverworldDimension.hpp similarity index 97% rename from LiteLoader/Header/MC/OverworldDimension.hpp rename to LiteLoader/include/llapi/mc/OverworldDimension.hpp index 222a5d4..06d3479 100644 --- a/LiteLoader/Header/MC/OverworldDimension.hpp +++ b/LiteLoader/include/llapi/mc/OverworldDimension.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OverworldGenerator.hpp b/LiteLoader/include/llapi/mc/OverworldGenerator.hpp similarity index 98% rename from LiteLoader/Header/MC/OverworldGenerator.hpp rename to LiteLoader/include/llapi/mc/OverworldGenerator.hpp index 8d25728..968af45 100644 --- a/LiteLoader/Header/MC/OverworldGenerator.hpp +++ b/LiteLoader/include/llapi/mc/OverworldGenerator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OwnerHurtByTargetGoal.hpp b/LiteLoader/include/llapi/mc/OwnerHurtByTargetGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/OwnerHurtByTargetGoal.hpp rename to LiteLoader/include/llapi/mc/OwnerHurtByTargetGoal.hpp index 0967544..58074fe 100644 --- a/LiteLoader/Header/MC/OwnerHurtByTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/OwnerHurtByTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OwnerHurtTargetGoal.hpp b/LiteLoader/include/llapi/mc/OwnerHurtTargetGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/OwnerHurtTargetGoal.hpp rename to LiteLoader/include/llapi/mc/OwnerHurtTargetGoal.hpp index 12192a7..804da8f 100644 --- a/LiteLoader/Header/MC/OwnerHurtTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/OwnerHurtTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/OwnerStorageEntity.hpp b/LiteLoader/include/llapi/mc/OwnerStorageEntity.hpp similarity index 97% rename from LiteLoader/Header/MC/OwnerStorageEntity.hpp rename to LiteLoader/include/llapi/mc/OwnerStorageEntity.hpp index cfa41ee..0ddffe2 100644 --- a/LiteLoader/Header/MC/OwnerStorageEntity.hpp +++ b/LiteLoader/include/llapi/mc/OwnerStorageEntity.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/POIBlueprint.hpp b/LiteLoader/include/llapi/mc/POIBlueprint.hpp similarity index 95% rename from LiteLoader/Header/MC/POIBlueprint.hpp rename to LiteLoader/include/llapi/mc/POIBlueprint.hpp index 8dd3aad..375fea2 100644 --- a/LiteLoader/Header/MC/POIBlueprint.hpp +++ b/LiteLoader/include/llapi/mc/POIBlueprint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/POIInstance.hpp b/LiteLoader/include/llapi/mc/POIInstance.hpp similarity index 96% rename from LiteLoader/Header/MC/POIInstance.hpp rename to LiteLoader/include/llapi/mc/POIInstance.hpp index f814805..b6d7a55 100644 --- a/LiteLoader/Header/MC/POIInstance.hpp +++ b/LiteLoader/include/llapi/mc/POIInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Pack.hpp b/LiteLoader/include/llapi/mc/Pack.hpp similarity index 97% rename from LiteLoader/Header/MC/Pack.hpp rename to LiteLoader/include/llapi/mc/Pack.hpp index 86c850e..8ff0c28 100644 --- a/LiteLoader/Header/MC/Pack.hpp +++ b/LiteLoader/include/llapi/mc/Pack.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackAccessStrategy.hpp b/LiteLoader/include/llapi/mc/PackAccessStrategy.hpp similarity index 98% rename from LiteLoader/Header/MC/PackAccessStrategy.hpp rename to LiteLoader/include/llapi/mc/PackAccessStrategy.hpp index df103ad..9a066a5 100644 --- a/LiteLoader/Header/MC/PackAccessStrategy.hpp +++ b/LiteLoader/include/llapi/mc/PackAccessStrategy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackAccessStrategyFactory.hpp b/LiteLoader/include/llapi/mc/PackAccessStrategyFactory.hpp similarity index 97% rename from LiteLoader/Header/MC/PackAccessStrategyFactory.hpp rename to LiteLoader/include/llapi/mc/PackAccessStrategyFactory.hpp index 55588c2..8da41c0 100644 --- a/LiteLoader/Header/MC/PackAccessStrategyFactory.hpp +++ b/LiteLoader/include/llapi/mc/PackAccessStrategyFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackDependencyManager.hpp b/LiteLoader/include/llapi/mc/PackDependencyManager.hpp similarity index 92% rename from LiteLoader/Header/MC/PackDependencyManager.hpp rename to LiteLoader/include/llapi/mc/PackDependencyManager.hpp index d716c1f..897f8f6 100644 --- a/LiteLoader/Header/MC/PackDependencyManager.hpp +++ b/LiteLoader/include/llapi/mc/PackDependencyManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackDiscoveryError.hpp b/LiteLoader/include/llapi/mc/PackDiscoveryError.hpp similarity index 97% rename from LiteLoader/Header/MC/PackDiscoveryError.hpp rename to LiteLoader/include/llapi/mc/PackDiscoveryError.hpp index a1d79b9..1156a9c 100644 --- a/LiteLoader/Header/MC/PackDiscoveryError.hpp +++ b/LiteLoader/include/llapi/mc/PackDiscoveryError.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PackError.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackError.hpp b/LiteLoader/include/llapi/mc/PackError.hpp similarity index 97% rename from LiteLoader/Header/MC/PackError.hpp rename to LiteLoader/include/llapi/mc/PackError.hpp index c097bc0..e3b167d 100644 --- a/LiteLoader/Header/MC/PackError.hpp +++ b/LiteLoader/include/llapi/mc/PackError.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackIdVersion.hpp b/LiteLoader/include/llapi/mc/PackIdVersion.hpp similarity index 96% rename from LiteLoader/Header/MC/PackIdVersion.hpp rename to LiteLoader/include/llapi/mc/PackIdVersion.hpp index 119f590..86048ab 100644 --- a/LiteLoader/Header/MC/PackIdVersion.hpp +++ b/LiteLoader/include/llapi/mc/PackIdVersion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackInstance.hpp b/LiteLoader/include/llapi/mc/PackInstance.hpp similarity index 96% rename from LiteLoader/Header/MC/PackInstance.hpp rename to LiteLoader/include/llapi/mc/PackInstance.hpp index 39c01db..5349af5 100644 --- a/LiteLoader/Header/MC/PackInstance.hpp +++ b/LiteLoader/include/llapi/mc/PackInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackInstanceId.hpp b/LiteLoader/include/llapi/mc/PackInstanceId.hpp similarity index 95% rename from LiteLoader/Header/MC/PackInstanceId.hpp rename to LiteLoader/include/llapi/mc/PackInstanceId.hpp index 94325fa..2dc7e3b 100644 --- a/LiteLoader/Header/MC/PackInstanceId.hpp +++ b/LiteLoader/include/llapi/mc/PackInstanceId.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackLoadError.hpp b/LiteLoader/include/llapi/mc/PackLoadError.hpp similarity index 97% rename from LiteLoader/Header/MC/PackLoadError.hpp rename to LiteLoader/include/llapi/mc/PackLoadError.hpp index 62d180a..7a7d034 100644 --- a/LiteLoader/Header/MC/PackLoadError.hpp +++ b/LiteLoader/include/llapi/mc/PackLoadError.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PackError.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackManifest.hpp b/LiteLoader/include/llapi/mc/PackManifest.hpp similarity index 98% rename from LiteLoader/Header/MC/PackManifest.hpp rename to LiteLoader/include/llapi/mc/PackManifest.hpp index 9decc8b..06ee0b0 100644 --- a/LiteLoader/Header/MC/PackManifest.hpp +++ b/LiteLoader/include/llapi/mc/PackManifest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackManifestFactory.hpp b/LiteLoader/include/llapi/mc/PackManifestFactory.hpp similarity index 98% rename from LiteLoader/Header/MC/PackManifestFactory.hpp rename to LiteLoader/include/llapi/mc/PackManifestFactory.hpp index 3de026b..178cd7e 100644 --- a/LiteLoader/Header/MC/PackManifestFactory.hpp +++ b/LiteLoader/include/llapi/mc/PackManifestFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackReport.hpp b/LiteLoader/include/llapi/mc/PackReport.hpp similarity index 95% rename from LiteLoader/Header/MC/PackReport.hpp rename to LiteLoader/include/llapi/mc/PackReport.hpp index 4d16a49..61c012b 100644 --- a/LiteLoader/Header/MC/PackReport.hpp +++ b/LiteLoader/include/llapi/mc/PackReport.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSetting.hpp b/LiteLoader/include/llapi/mc/PackSetting.hpp similarity index 95% rename from LiteLoader/Header/MC/PackSetting.hpp rename to LiteLoader/include/llapi/mc/PackSetting.hpp index 78e3e1e..a8bcc4b 100644 --- a/LiteLoader/Header/MC/PackSetting.hpp +++ b/LiteLoader/include/llapi/mc/PackSetting.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSettings.hpp b/LiteLoader/include/llapi/mc/PackSettings.hpp similarity index 96% rename from LiteLoader/Header/MC/PackSettings.hpp rename to LiteLoader/include/llapi/mc/PackSettings.hpp index 0936323..f294014 100644 --- a/LiteLoader/Header/MC/PackSettings.hpp +++ b/LiteLoader/include/llapi/mc/PackSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSettingsError.hpp b/LiteLoader/include/llapi/mc/PackSettingsError.hpp similarity index 97% rename from LiteLoader/Header/MC/PackSettingsError.hpp rename to LiteLoader/include/llapi/mc/PackSettingsError.hpp index b444de9..1622086 100644 --- a/LiteLoader/Header/MC/PackSettingsError.hpp +++ b/LiteLoader/include/llapi/mc/PackSettingsError.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSettingsFactory.hpp b/LiteLoader/include/llapi/mc/PackSettingsFactory.hpp similarity index 96% rename from LiteLoader/Header/MC/PackSettingsFactory.hpp rename to LiteLoader/include/llapi/mc/PackSettingsFactory.hpp index ad9438b..45e93fb 100644 --- a/LiteLoader/Header/MC/PackSettingsFactory.hpp +++ b/LiteLoader/include/llapi/mc/PackSettingsFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSettingsJsonValidator.hpp b/LiteLoader/include/llapi/mc/PackSettingsJsonValidator.hpp similarity index 96% rename from LiteLoader/Header/MC/PackSettingsJsonValidator.hpp rename to LiteLoader/include/llapi/mc/PackSettingsJsonValidator.hpp index ab42b7a..7aa6d7f 100644 --- a/LiteLoader/Header/MC/PackSettingsJsonValidator.hpp +++ b/LiteLoader/include/llapi/mc/PackSettingsJsonValidator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonValidator.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSource.hpp b/LiteLoader/include/llapi/mc/PackSource.hpp similarity index 96% rename from LiteLoader/Header/MC/PackSource.hpp rename to LiteLoader/include/llapi/mc/PackSource.hpp index 5e31f1c..9408241 100644 --- a/LiteLoader/Header/MC/PackSource.hpp +++ b/LiteLoader/include/llapi/mc/PackSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSourceFactory.hpp b/LiteLoader/include/llapi/mc/PackSourceFactory.hpp similarity index 98% rename from LiteLoader/Header/MC/PackSourceFactory.hpp rename to LiteLoader/include/llapi/mc/PackSourceFactory.hpp index b560d80..b3e45f0 100644 --- a/LiteLoader/Header/MC/PackSourceFactory.hpp +++ b/LiteLoader/include/llapi/mc/PackSourceFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackSourceReport.hpp b/LiteLoader/include/llapi/mc/PackSourceReport.hpp similarity index 95% rename from LiteLoader/Header/MC/PackSourceReport.hpp rename to LiteLoader/include/llapi/mc/PackSourceReport.hpp index 5f994ac..24fe984 100644 --- a/LiteLoader/Header/MC/PackSourceReport.hpp +++ b/LiteLoader/include/llapi/mc/PackSourceReport.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PackUploadContent.hpp b/LiteLoader/include/llapi/mc/PackUploadContent.hpp similarity index 90% rename from LiteLoader/Header/MC/PackUploadContent.hpp rename to LiteLoader/include/llapi/mc/PackUploadContent.hpp index ea2ee2e..d80c26f 100644 --- a/LiteLoader/Header/MC/PackUploadContent.hpp +++ b/LiteLoader/include/llapi/mc/PackUploadContent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Packet.hpp b/LiteLoader/include/llapi/mc/Packet.hpp similarity index 98% rename from LiteLoader/Header/MC/Packet.hpp rename to LiteLoader/include/llapi/mc/Packet.hpp index 33b8a62..d8bd2bb 100644 --- a/LiteLoader/Header/MC/Packet.hpp +++ b/LiteLoader/include/llapi/mc/Packet.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/PacketSender.hpp b/LiteLoader/include/llapi/mc/PacketSender.hpp similarity index 94% rename from LiteLoader/Header/MC/PacketSender.hpp rename to LiteLoader/include/llapi/mc/PacketSender.hpp index bf08c2b..1840d38 100644 --- a/LiteLoader/Header/MC/PacketSender.hpp +++ b/LiteLoader/include/llapi/mc/PacketSender.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PacketViolationDetectedTelemetryData.hpp b/LiteLoader/include/llapi/mc/PacketViolationDetectedTelemetryData.hpp similarity index 96% rename from LiteLoader/Header/MC/PacketViolationDetectedTelemetryData.hpp rename to LiteLoader/include/llapi/mc/PacketViolationDetectedTelemetryData.hpp index 683cdaf..92491f6 100644 --- a/LiteLoader/Header/MC/PacketViolationDetectedTelemetryData.hpp +++ b/LiteLoader/include/llapi/mc/PacketViolationDetectedTelemetryData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Social.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PacketViolationHandler.hpp b/LiteLoader/include/llapi/mc/PacketViolationHandler.hpp similarity index 96% rename from LiteLoader/Header/MC/PacketViolationHandler.hpp rename to LiteLoader/include/llapi/mc/PacketViolationHandler.hpp index 1ae9d36..c56e983 100644 --- a/LiteLoader/Header/MC/PacketViolationHandler.hpp +++ b/LiteLoader/include/llapi/mc/PacketViolationHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PacketViolationWarningPacket.hpp b/LiteLoader/include/llapi/mc/PacketViolationWarningPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/PacketViolationWarningPacket.hpp rename to LiteLoader/include/llapi/mc/PacketViolationWarningPacket.hpp index 451e83e..1216c32 100644 --- a/LiteLoader/Header/MC/PacketViolationWarningPacket.hpp +++ b/LiteLoader/include/llapi/mc/PacketViolationWarningPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PageContent.hpp b/LiteLoader/include/llapi/mc/PageContent.hpp similarity index 96% rename from LiteLoader/Header/MC/PageContent.hpp rename to LiteLoader/include/llapi/mc/PageContent.hpp index d4566f1..e84e822 100644 --- a/LiteLoader/Header/MC/PageContent.hpp +++ b/LiteLoader/include/llapi/mc/PageContent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Painting.hpp b/LiteLoader/include/llapi/mc/Painting.hpp similarity index 98% rename from LiteLoader/Header/MC/Painting.hpp rename to LiteLoader/include/llapi/mc/Painting.hpp index d493a05..2b33771 100644 --- a/LiteLoader/Header/MC/Painting.hpp +++ b/LiteLoader/include/llapi/mc/Painting.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Palette.hpp b/LiteLoader/include/llapi/mc/Palette.hpp similarity index 97% rename from LiteLoader/Header/MC/Palette.hpp rename to LiteLoader/include/llapi/mc/Palette.hpp index 19175e2..6bb137f 100644 --- a/LiteLoader/Header/MC/Palette.hpp +++ b/LiteLoader/include/llapi/mc/Palette.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Panda.hpp b/LiteLoader/include/llapi/mc/Panda.hpp similarity index 98% rename from LiteLoader/Header/MC/Panda.hpp rename to LiteLoader/include/llapi/mc/Panda.hpp index 5e6ed13..5450844 100644 --- a/LiteLoader/Header/MC/Panda.hpp +++ b/LiteLoader/include/llapi/mc/Panda.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/PanicGoal.hpp b/LiteLoader/include/llapi/mc/PanicGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/PanicGoal.hpp rename to LiteLoader/include/llapi/mc/PanicGoal.hpp index 4a260f9..53a91c1 100644 --- a/LiteLoader/Header/MC/PanicGoal.hpp +++ b/LiteLoader/include/llapi/mc/PanicGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Parrot.hpp b/LiteLoader/include/llapi/mc/Parrot.hpp similarity index 98% rename from LiteLoader/Header/MC/Parrot.hpp rename to LiteLoader/include/llapi/mc/Parrot.hpp index b121d9b..7c9d42e 100644 --- a/LiteLoader/Header/MC/Parrot.hpp +++ b/LiteLoader/include/llapi/mc/Parrot.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/Parser.hpp b/LiteLoader/include/llapi/mc/Parser.hpp similarity index 99% rename from LiteLoader/Header/MC/Parser.hpp rename to LiteLoader/include/llapi/mc/Parser.hpp index 67c0f12..deab95d 100644 --- a/LiteLoader/Header/MC/Parser.hpp +++ b/LiteLoader/include/llapi/mc/Parser.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ParticleCommand.hpp b/LiteLoader/include/llapi/mc/ParticleCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ParticleCommand.hpp rename to LiteLoader/include/llapi/mc/ParticleCommand.hpp index 7a084fe..6545490 100644 --- a/LiteLoader/Header/MC/ParticleCommand.hpp +++ b/LiteLoader/include/llapi/mc/ParticleCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ParticleOnHitSubcomponent.hpp b/LiteLoader/include/llapi/mc/ParticleOnHitSubcomponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ParticleOnHitSubcomponent.hpp rename to LiteLoader/include/llapi/mc/ParticleOnHitSubcomponent.hpp index 432438f..2b3e82f 100644 --- a/LiteLoader/Header/MC/ParticleOnHitSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/ParticleOnHitSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ParticleTypeMap.hpp b/LiteLoader/include/llapi/mc/ParticleTypeMap.hpp similarity index 96% rename from LiteLoader/Header/MC/ParticleTypeMap.hpp rename to LiteLoader/include/llapi/mc/ParticleTypeMap.hpp index ce53b58..4b90016 100644 --- a/LiteLoader/Header/MC/ParticleTypeMap.hpp +++ b/LiteLoader/include/llapi/mc/ParticleTypeMap.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ParticlesBlockExplosionEvent.hpp b/LiteLoader/include/llapi/mc/ParticlesBlockExplosionEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ParticlesBlockExplosionEvent.hpp rename to LiteLoader/include/llapi/mc/ParticlesBlockExplosionEvent.hpp index 18358fb..76349e3 100644 --- a/LiteLoader/Header/MC/ParticlesBlockExplosionEvent.hpp +++ b/LiteLoader/include/llapi/mc/ParticlesBlockExplosionEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ParticlesTeleportTrailEvent.hpp b/LiteLoader/include/llapi/mc/ParticlesTeleportTrailEvent.hpp similarity index 95% rename from LiteLoader/Header/MC/ParticlesTeleportTrailEvent.hpp rename to LiteLoader/include/llapi/mc/ParticlesTeleportTrailEvent.hpp index 3253be8..79c25a2 100644 --- a/LiteLoader/Header/MC/ParticlesTeleportTrailEvent.hpp +++ b/LiteLoader/include/llapi/mc/ParticlesTeleportTrailEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Path.hpp b/LiteLoader/include/llapi/mc/Path.hpp similarity index 95% rename from LiteLoader/Header/MC/Path.hpp rename to LiteLoader/include/llapi/mc/Path.hpp index f86d538..6b7d92e 100644 --- a/LiteLoader/Header/MC/Path.hpp +++ b/LiteLoader/include/llapi/mc/Path.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PathFinder.hpp b/LiteLoader/include/llapi/mc/PathFinder.hpp similarity index 98% rename from LiteLoader/Header/MC/PathFinder.hpp rename to LiteLoader/include/llapi/mc/PathFinder.hpp index 8d4bf30..19c7671 100644 --- a/LiteLoader/Header/MC/PathFinder.hpp +++ b/LiteLoader/include/llapi/mc/PathFinder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PathNavigation.hpp b/LiteLoader/include/llapi/mc/PathNavigation.hpp similarity index 98% rename from LiteLoader/Header/MC/PathNavigation.hpp rename to LiteLoader/include/llapi/mc/PathNavigation.hpp index 182cfd2..995fc7b 100644 --- a/LiteLoader/Header/MC/PathNavigation.hpp +++ b/LiteLoader/include/llapi/mc/PathNavigation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PauseScreenCapabilities.hpp b/LiteLoader/include/llapi/mc/PauseScreenCapabilities.hpp similarity index 96% rename from LiteLoader/Header/MC/PauseScreenCapabilities.hpp rename to LiteLoader/include/llapi/mc/PauseScreenCapabilities.hpp index c646339..df47314 100644 --- a/LiteLoader/Header/MC/PauseScreenCapabilities.hpp +++ b/LiteLoader/include/llapi/mc/PauseScreenCapabilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PeekSystem.hpp b/LiteLoader/include/llapi/mc/PeekSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/PeekSystem.hpp rename to LiteLoader/include/llapi/mc/PeekSystem.hpp index 46aca3a..c5a3770 100644 --- a/LiteLoader/Header/MC/PeekSystem.hpp +++ b/LiteLoader/include/llapi/mc/PeekSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PendingArea.hpp b/LiteLoader/include/llapi/mc/PendingArea.hpp similarity index 97% rename from LiteLoader/Header/MC/PendingArea.hpp rename to LiteLoader/include/llapi/mc/PendingArea.hpp index 7584bcc..4df8c57 100644 --- a/LiteLoader/Header/MC/PendingArea.hpp +++ b/LiteLoader/include/llapi/mc/PendingArea.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PerfContextTracker.hpp b/LiteLoader/include/llapi/mc/PerfContextTracker.hpp similarity index 95% rename from LiteLoader/Header/MC/PerfContextTracker.hpp rename to LiteLoader/include/llapi/mc/PerfContextTracker.hpp index e48e154..0cc0f0e 100644 --- a/LiteLoader/Header/MC/PerfContextTracker.hpp +++ b/LiteLoader/include/llapi/mc/PerfContextTracker.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PerfContextTrackerReport.hpp b/LiteLoader/include/llapi/mc/PerfContextTrackerReport.hpp similarity index 95% rename from LiteLoader/Header/MC/PerfContextTrackerReport.hpp rename to LiteLoader/include/llapi/mc/PerfContextTrackerReport.hpp index 8933cfd..56eb620 100644 --- a/LiteLoader/Header/MC/PerfContextTrackerReport.hpp +++ b/LiteLoader/include/llapi/mc/PerfContextTrackerReport.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PerfTimer.hpp b/LiteLoader/include/llapi/mc/PerfTimer.hpp similarity index 96% rename from LiteLoader/Header/MC/PerfTimer.hpp rename to LiteLoader/include/llapi/mc/PerfTimer.hpp index 07df1a7..ae6e447 100644 --- a/LiteLoader/Header/MC/PerfTimer.hpp +++ b/LiteLoader/include/llapi/mc/PerfTimer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #include "Core.hpp" diff --git a/LiteLoader/Header/MC/Performance.hpp b/LiteLoader/include/llapi/mc/Performance.hpp similarity index 94% rename from LiteLoader/Header/MC/Performance.hpp rename to LiteLoader/include/llapi/mc/Performance.hpp index 40a822c..4062a85 100644 --- a/LiteLoader/Header/MC/Performance.hpp +++ b/LiteLoader/include/llapi/mc/Performance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PerlinNoise.hpp b/LiteLoader/include/llapi/mc/PerlinNoise.hpp similarity index 96% rename from LiteLoader/Header/MC/PerlinNoise.hpp rename to LiteLoader/include/llapi/mc/PerlinNoise.hpp index 09a3b17..b708573 100644 --- a/LiteLoader/Header/MC/PerlinNoise.hpp +++ b/LiteLoader/include/llapi/mc/PerlinNoise.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PerlinSimplexNoise.hpp b/LiteLoader/include/llapi/mc/PerlinSimplexNoise.hpp similarity index 96% rename from LiteLoader/Header/MC/PerlinSimplexNoise.hpp rename to LiteLoader/include/llapi/mc/PerlinSimplexNoise.hpp index 90e2f82..66f3094 100644 --- a/LiteLoader/Header/MC/PerlinSimplexNoise.hpp +++ b/LiteLoader/include/llapi/mc/PerlinSimplexNoise.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PermissionCommand.hpp b/LiteLoader/include/llapi/mc/PermissionCommand.hpp similarity index 97% rename from LiteLoader/Header/MC/PermissionCommand.hpp rename to LiteLoader/include/llapi/mc/PermissionCommand.hpp index f284362..f69ab7e 100644 --- a/LiteLoader/Header/MC/PermissionCommand.hpp +++ b/LiteLoader/include/llapi/mc/PermissionCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PermissionsFile.hpp b/LiteLoader/include/llapi/mc/PermissionsFile.hpp similarity index 97% rename from LiteLoader/Header/MC/PermissionsFile.hpp rename to LiteLoader/include/llapi/mc/PermissionsFile.hpp index e3fe146..46a746a 100644 --- a/LiteLoader/Header/MC/PermissionsFile.hpp +++ b/LiteLoader/include/llapi/mc/PermissionsFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PermissionsHandler.hpp b/LiteLoader/include/llapi/mc/PermissionsHandler.hpp similarity index 96% rename from LiteLoader/Header/MC/PermissionsHandler.hpp rename to LiteLoader/include/llapi/mc/PermissionsHandler.hpp index f8e4c45..6be0b0f 100644 --- a/LiteLoader/Header/MC/PermissionsHandler.hpp +++ b/LiteLoader/include/llapi/mc/PermissionsHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PersistentDescription.hpp b/LiteLoader/include/llapi/mc/PersistentDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/PersistentDescription.hpp rename to LiteLoader/include/llapi/mc/PersistentDescription.hpp index 80eea83..f6af6e5 100644 --- a/LiteLoader/Header/MC/PersistentDescription.hpp +++ b/LiteLoader/include/llapi/mc/PersistentDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PetSleepWithOwnerGoal.hpp b/LiteLoader/include/llapi/mc/PetSleepWithOwnerGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/PetSleepWithOwnerGoal.hpp rename to LiteLoader/include/llapi/mc/PetSleepWithOwnerGoal.hpp index cd99f5e..f52b08a 100644 --- a/LiteLoader/Header/MC/PetSleepWithOwnerGoal.hpp +++ b/LiteLoader/include/llapi/mc/PetSleepWithOwnerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PetSleepWithOwnerState.hpp b/LiteLoader/include/llapi/mc/PetSleepWithOwnerState.hpp similarity index 96% rename from LiteLoader/Header/MC/PetSleepWithOwnerState.hpp rename to LiteLoader/include/llapi/mc/PetSleepWithOwnerState.hpp index 4599501..650b75f 100644 --- a/LiteLoader/Header/MC/PetSleepWithOwnerState.hpp +++ b/LiteLoader/include/llapi/mc/PetSleepWithOwnerState.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Phantom.hpp b/LiteLoader/include/llapi/mc/Phantom.hpp similarity index 98% rename from LiteLoader/Header/MC/Phantom.hpp rename to LiteLoader/include/llapi/mc/Phantom.hpp index ab78f88..c1f0765 100644 --- a/LiteLoader/Header/MC/Phantom.hpp +++ b/LiteLoader/include/llapi/mc/Phantom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/PhotoStorage.hpp b/LiteLoader/include/llapi/mc/PhotoStorage.hpp similarity index 96% rename from LiteLoader/Header/MC/PhotoStorage.hpp rename to LiteLoader/include/llapi/mc/PhotoStorage.hpp index 76385fe..eaa5e89 100644 --- a/LiteLoader/Header/MC/PhotoStorage.hpp +++ b/LiteLoader/include/llapi/mc/PhotoStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PhotoTransferPacket.hpp b/LiteLoader/include/llapi/mc/PhotoTransferPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PhotoTransferPacket.hpp rename to LiteLoader/include/llapi/mc/PhotoTransferPacket.hpp index 7bc0b29..1d0c089 100644 --- a/LiteLoader/Header/MC/PhotoTransferPacket.hpp +++ b/LiteLoader/include/llapi/mc/PhotoTransferPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PickaxeItem.hpp b/LiteLoader/include/llapi/mc/PickaxeItem.hpp similarity index 98% rename from LiteLoader/Header/MC/PickaxeItem.hpp rename to LiteLoader/include/llapi/mc/PickaxeItem.hpp index 3cbfe1e..66416fc 100644 --- a/LiteLoader/Header/MC/PickaxeItem.hpp +++ b/LiteLoader/include/llapi/mc/PickaxeItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #include "DiggerItem.hpp" diff --git a/LiteLoader/Header/MC/PickupItemsGoal.hpp b/LiteLoader/include/llapi/mc/PickupItemsGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/PickupItemsGoal.hpp rename to LiteLoader/include/llapi/mc/PickupItemsGoal.hpp index 1639b37..18b4af8 100644 --- a/LiteLoader/Header/MC/PickupItemsGoal.hpp +++ b/LiteLoader/include/llapi/mc/PickupItemsGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PieceWeight.hpp b/LiteLoader/include/llapi/mc/PieceWeight.hpp similarity index 94% rename from LiteLoader/Header/MC/PieceWeight.hpp rename to LiteLoader/include/llapi/mc/PieceWeight.hpp index f19dee2..4a2a69d 100644 --- a/LiteLoader/Header/MC/PieceWeight.hpp +++ b/LiteLoader/include/llapi/mc/PieceWeight.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Pig.hpp b/LiteLoader/include/llapi/mc/Pig.hpp similarity index 98% rename from LiteLoader/Header/MC/Pig.hpp rename to LiteLoader/include/llapi/mc/Pig.hpp index 117bd65..7139160 100644 --- a/LiteLoader/Header/MC/Pig.hpp +++ b/LiteLoader/include/llapi/mc/Pig.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/PigZombie.hpp b/LiteLoader/include/llapi/mc/PigZombie.hpp similarity index 98% rename from LiteLoader/Header/MC/PigZombie.hpp rename to LiteLoader/include/llapi/mc/PigZombie.hpp index 3c045ad..ba74d42 100644 --- a/LiteLoader/Header/MC/PigZombie.hpp +++ b/LiteLoader/include/llapi/mc/PigZombie.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Zombie.hpp" diff --git a/LiteLoader/Header/MC/Piglin.hpp b/LiteLoader/include/llapi/mc/Piglin.hpp similarity index 98% rename from LiteLoader/Header/MC/Piglin.hpp rename to LiteLoader/include/llapi/mc/Piglin.hpp index f2be4c9..8593cfc 100644 --- a/LiteLoader/Header/MC/Piglin.hpp +++ b/LiteLoader/include/llapi/mc/Piglin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "HumanoidMonster.hpp" diff --git a/LiteLoader/Header/MC/Pillager.hpp b/LiteLoader/include/llapi/mc/Pillager.hpp similarity index 98% rename from LiteLoader/Header/MC/Pillager.hpp rename to LiteLoader/include/llapi/mc/Pillager.hpp index 7cb3d65..e68f514 100644 --- a/LiteLoader/Header/MC/Pillager.hpp +++ b/LiteLoader/include/llapi/mc/Pillager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "HumanoidMonster.hpp" diff --git a/LiteLoader/Header/MC/PillagerOutpostFeature.hpp b/LiteLoader/include/llapi/mc/PillagerOutpostFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/PillagerOutpostFeature.hpp rename to LiteLoader/include/llapi/mc/PillagerOutpostFeature.hpp index f0caabc..7815200 100644 --- a/LiteLoader/Header/MC/PillagerOutpostFeature.hpp +++ b/LiteLoader/include/llapi/mc/PillagerOutpostFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PillagerOutpostPieces.hpp b/LiteLoader/include/llapi/mc/PillagerOutpostPieces.hpp similarity index 97% rename from LiteLoader/Header/MC/PillagerOutpostPieces.hpp rename to LiteLoader/include/llapi/mc/PillagerOutpostPieces.hpp index ba3ada1..f0783b0 100644 --- a/LiteLoader/Header/MC/PillagerOutpostPieces.hpp +++ b/LiteLoader/include/llapi/mc/PillagerOutpostPieces.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PillagerOutpostStart.hpp b/LiteLoader/include/llapi/mc/PillagerOutpostStart.hpp similarity index 97% rename from LiteLoader/Header/MC/PillagerOutpostStart.hpp rename to LiteLoader/include/llapi/mc/PillagerOutpostStart.hpp index fb818d6..0c93db2 100644 --- a/LiteLoader/Header/MC/PillagerOutpostStart.hpp +++ b/LiteLoader/include/llapi/mc/PillagerOutpostStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PineTreeCanopy.hpp b/LiteLoader/include/llapi/mc/PineTreeCanopy.hpp similarity index 96% rename from LiteLoader/Header/MC/PineTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/PineTreeCanopy.hpp index a5b9455..4d84ea2 100644 --- a/LiteLoader/Header/MC/PineTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/PineTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PingedCompatibleServer.hpp b/LiteLoader/include/llapi/mc/PingedCompatibleServer.hpp similarity index 96% rename from LiteLoader/Header/MC/PingedCompatibleServer.hpp rename to LiteLoader/include/llapi/mc/PingedCompatibleServer.hpp index 9639e4a..5ee1f1c 100644 --- a/LiteLoader/Header/MC/PingedCompatibleServer.hpp +++ b/LiteLoader/include/llapi/mc/PingedCompatibleServer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PistonArmBlock.hpp b/LiteLoader/include/llapi/mc/PistonArmBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/PistonArmBlock.hpp rename to LiteLoader/include/llapi/mc/PistonArmBlock.hpp index 694c2b4..ae9b7ed 100644 --- a/LiteLoader/Header/MC/PistonArmBlock.hpp +++ b/LiteLoader/include/llapi/mc/PistonArmBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PistonBlock.hpp" #include "BlockLegacy.hpp" diff --git a/LiteLoader/Header/MC/PistonBlock.hpp b/LiteLoader/include/llapi/mc/PistonBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/PistonBlock.hpp rename to LiteLoader/include/llapi/mc/PistonBlock.hpp index ccb98b3..9f6f2c1 100644 --- a/LiteLoader/Header/MC/PistonBlock.hpp +++ b/LiteLoader/include/llapi/mc/PistonBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PistonBlockActor.hpp b/LiteLoader/include/llapi/mc/PistonBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/PistonBlockActor.hpp rename to LiteLoader/include/llapi/mc/PistonBlockActor.hpp index bb0cdee..9e62237 100644 --- a/LiteLoader/Header/MC/PistonBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/PistonBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PistonConsumer.hpp b/LiteLoader/include/llapi/mc/PistonConsumer.hpp similarity index 97% rename from LiteLoader/Header/MC/PistonConsumer.hpp rename to LiteLoader/include/llapi/mc/PistonConsumer.hpp index ad711b8..0d81ac7 100644 --- a/LiteLoader/Header/MC/PistonConsumer.hpp +++ b/LiteLoader/include/llapi/mc/PistonConsumer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ConsumerComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlaceBlockDefinition.hpp b/LiteLoader/include/llapi/mc/PlaceBlockDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/PlaceBlockDefinition.hpp rename to LiteLoader/include/llapi/mc/PlaceBlockDefinition.hpp index 69530f7..f3bcaa4 100644 --- a/LiteLoader/Header/MC/PlaceBlockDefinition.hpp +++ b/LiteLoader/include/llapi/mc/PlaceBlockDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/PlaceBlockNode.hpp b/LiteLoader/include/llapi/mc/PlaceBlockNode.hpp similarity index 95% rename from LiteLoader/Header/MC/PlaceBlockNode.hpp rename to LiteLoader/include/llapi/mc/PlaceBlockNode.hpp index 1807089..e165da3 100644 --- a/LiteLoader/Header/MC/PlaceBlockNode.hpp +++ b/LiteLoader/include/llapi/mc/PlaceBlockNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlanksBlock.hpp b/LiteLoader/include/llapi/mc/PlanksBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/PlanksBlock.hpp rename to LiteLoader/include/llapi/mc/PlanksBlock.hpp index ba2b410..2cf159f 100644 --- a/LiteLoader/Header/MC/PlanksBlock.hpp +++ b/LiteLoader/include/llapi/mc/PlanksBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayGoal.hpp b/LiteLoader/include/llapi/mc/PlayGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayGoal.hpp rename to LiteLoader/include/llapi/mc/PlayGoal.hpp index f6cd8dd..ed95494 100644 --- a/LiteLoader/Header/MC/PlayGoal.hpp +++ b/LiteLoader/include/llapi/mc/PlayGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlaySoundCommand.hpp b/LiteLoader/include/llapi/mc/PlaySoundCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/PlaySoundCommand.hpp rename to LiteLoader/include/llapi/mc/PlaySoundCommand.hpp index 780339e..233be17 100644 --- a/LiteLoader/Header/MC/PlaySoundCommand.hpp +++ b/LiteLoader/include/llapi/mc/PlaySoundCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlaySoundPacket.hpp b/LiteLoader/include/llapi/mc/PlaySoundPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PlaySoundPacket.hpp rename to LiteLoader/include/llapi/mc/PlaySoundPacket.hpp index 3a99ef4..7828fb3 100644 --- a/LiteLoader/Header/MC/PlaySoundPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlaySoundPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlaySoundReactionComponent.hpp b/LiteLoader/include/llapi/mc/PlaySoundReactionComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/PlaySoundReactionComponent.hpp rename to LiteLoader/include/llapi/mc/PlaySoundReactionComponent.hpp index d1542d5..1f328fb 100644 --- a/LiteLoader/Header/MC/PlaySoundReactionComponent.hpp +++ b/LiteLoader/include/llapi/mc/PlaySoundReactionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayStatusPacket.hpp b/LiteLoader/include/llapi/mc/PlayStatusPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayStatusPacket.hpp rename to LiteLoader/include/llapi/mc/PlayStatusPacket.hpp index cf21718..16b0ba2 100644 --- a/LiteLoader/Header/MC/PlayStatusPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayStatusPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Player.hpp b/LiteLoader/include/llapi/mc/Player.hpp similarity index 99% rename from LiteLoader/Header/MC/Player.hpp rename to LiteLoader/include/llapi/mc/Player.hpp index 4293961..c7f93ae 100644 --- a/LiteLoader/Header/MC/Player.hpp +++ b/LiteLoader/include/llapi/mc/Player.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include #include "Actor.hpp" #include "Mob.hpp" @@ -16,7 +16,8 @@ class CompoundTag; //#include "UserEntityIdentifierComponent.hpp" #include "ScorePacketInfo.hpp" #include "DataItem.hpp" -#include "../I18nAPI.h" +#include +#include #include "AttributeInstance.hpp" #undef BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerActionPacket.hpp b/LiteLoader/include/llapi/mc/PlayerActionPacket.hpp similarity index 98% rename from LiteLoader/Header/MC/PlayerActionPacket.hpp rename to LiteLoader/include/llapi/mc/PlayerActionPacket.hpp index 48ecc15..c49b9fd 100644 --- a/LiteLoader/Header/MC/PlayerActionPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerActionPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerArmorDamagePacket.hpp b/LiteLoader/include/llapi/mc/PlayerArmorDamagePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerArmorDamagePacket.hpp rename to LiteLoader/include/llapi/mc/PlayerArmorDamagePacket.hpp index c8c125b..b5fb464 100644 --- a/LiteLoader/Header/MC/PlayerArmorDamagePacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerArmorDamagePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerAuthInputPacket.hpp b/LiteLoader/include/llapi/mc/PlayerAuthInputPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerAuthInputPacket.hpp rename to LiteLoader/include/llapi/mc/PlayerAuthInputPacket.hpp index afd8188..1707b8b 100644 --- a/LiteLoader/Header/MC/PlayerAuthInputPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerAuthInputPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerCommandOrigin.hpp b/LiteLoader/include/llapi/mc/PlayerCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/PlayerCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/PlayerCommandOrigin.hpp index f71ad39..d20321c 100644 --- a/LiteLoader/Header/MC/PlayerCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/PlayerCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/PlayerDataSystem.hpp b/LiteLoader/include/llapi/mc/PlayerDataSystem.hpp similarity index 98% rename from LiteLoader/Header/MC/PlayerDataSystem.hpp rename to LiteLoader/include/llapi/mc/PlayerDataSystem.hpp index c86a71d..f129cf9 100644 --- a/LiteLoader/Header/MC/PlayerDataSystem.hpp +++ b/LiteLoader/include/llapi/mc/PlayerDataSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerEnchantOptionsPacket.hpp b/LiteLoader/include/llapi/mc/PlayerEnchantOptionsPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/PlayerEnchantOptionsPacket.hpp rename to LiteLoader/include/llapi/mc/PlayerEnchantOptionsPacket.hpp index 3f56bfa..d0fb943 100644 --- a/LiteLoader/Header/MC/PlayerEnchantOptionsPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerEnchantOptionsPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerEventCoordinator.hpp b/LiteLoader/include/llapi/mc/PlayerEventCoordinator.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerEventCoordinator.hpp rename to LiteLoader/include/llapi/mc/PlayerEventCoordinator.hpp index 060f26d..4d5f264 100644 --- a/LiteLoader/Header/MC/PlayerEventCoordinator.hpp +++ b/LiteLoader/include/llapi/mc/PlayerEventCoordinator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerEventListener.hpp b/LiteLoader/include/llapi/mc/PlayerEventListener.hpp similarity index 99% rename from LiteLoader/Header/MC/PlayerEventListener.hpp rename to LiteLoader/include/llapi/mc/PlayerEventListener.hpp index 983c81c..65e0b52 100644 --- a/LiteLoader/Header/MC/PlayerEventListener.hpp +++ b/LiteLoader/include/llapi/mc/PlayerEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerHotbarPacket.hpp b/LiteLoader/include/llapi/mc/PlayerHotbarPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerHotbarPacket.hpp rename to LiteLoader/include/llapi/mc/PlayerHotbarPacket.hpp index 5f1cdc9..2dab65f 100644 --- a/LiteLoader/Header/MC/PlayerHotbarPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerHotbarPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerInputPacket.hpp b/LiteLoader/include/llapi/mc/PlayerInputPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerInputPacket.hpp rename to LiteLoader/include/llapi/mc/PlayerInputPacket.hpp index 3ad5b35..edff3e4 100644 --- a/LiteLoader/Header/MC/PlayerInputPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerInputPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerInteractionSystem.hpp b/LiteLoader/include/llapi/mc/PlayerInteractionSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/PlayerInteractionSystem.hpp rename to LiteLoader/include/llapi/mc/PlayerInteractionSystem.hpp index 73b4083..e477995 100644 --- a/LiteLoader/Header/MC/PlayerInteractionSystem.hpp +++ b/LiteLoader/include/llapi/mc/PlayerInteractionSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerInventory.hpp b/LiteLoader/include/llapi/mc/PlayerInventory.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerInventory.hpp rename to LiteLoader/include/llapi/mc/PlayerInventory.hpp index 853f225..1966292 100644 --- a/LiteLoader/Header/MC/PlayerInventory.hpp +++ b/LiteLoader/include/llapi/mc/PlayerInventory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA @@ -10,7 +10,7 @@ class PlayerInventory { #define AFTER_EXTRA - +struct SlotData; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_PLAYERINVENTORY public: diff --git a/LiteLoader/Header/MC/PlayerListEntry.hpp b/LiteLoader/include/llapi/mc/PlayerListEntry.hpp similarity index 95% rename from LiteLoader/Header/MC/PlayerListEntry.hpp rename to LiteLoader/include/llapi/mc/PlayerListEntry.hpp index bc1d761..df9c746 100644 --- a/LiteLoader/Header/MC/PlayerListEntry.hpp +++ b/LiteLoader/include/llapi/mc/PlayerListEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerListPacket.hpp b/LiteLoader/include/llapi/mc/PlayerListPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/PlayerListPacket.hpp rename to LiteLoader/include/llapi/mc/PlayerListPacket.hpp index 7f18685..6053e03 100644 --- a/LiteLoader/Header/MC/PlayerListPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerListPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerMovement.hpp b/LiteLoader/include/llapi/mc/PlayerMovement.hpp similarity index 94% rename from LiteLoader/Header/MC/PlayerMovement.hpp rename to LiteLoader/include/llapi/mc/PlayerMovement.hpp index 2849e80..5b2ba44 100644 --- a/LiteLoader/Header/MC/PlayerMovement.hpp +++ b/LiteLoader/include/llapi/mc/PlayerMovement.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerRespawnBlockRadiusRandomizer.hpp b/LiteLoader/include/llapi/mc/PlayerRespawnBlockRadiusRandomizer.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerRespawnBlockRadiusRandomizer.hpp rename to LiteLoader/include/llapi/mc/PlayerRespawnBlockRadiusRandomizer.hpp index 4d9d185..73ab45c 100644 --- a/LiteLoader/Header/MC/PlayerRespawnBlockRadiusRandomizer.hpp +++ b/LiteLoader/include/llapi/mc/PlayerRespawnBlockRadiusRandomizer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerRespawnTelemetryData.hpp b/LiteLoader/include/llapi/mc/PlayerRespawnTelemetryData.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerRespawnTelemetryData.hpp rename to LiteLoader/include/llapi/mc/PlayerRespawnTelemetryData.hpp index def6626..79384da 100644 --- a/LiteLoader/Header/MC/PlayerRespawnTelemetryData.hpp +++ b/LiteLoader/include/llapi/mc/PlayerRespawnTelemetryData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Social.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerRideTamedGoal.hpp b/LiteLoader/include/llapi/mc/PlayerRideTamedGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerRideTamedGoal.hpp rename to LiteLoader/include/llapi/mc/PlayerRideTamedGoal.hpp index 9997985..0ff7f39 100644 --- a/LiteLoader/Header/MC/PlayerRideTamedGoal.hpp +++ b/LiteLoader/include/llapi/mc/PlayerRideTamedGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerScoreboardId.hpp b/LiteLoader/include/llapi/mc/PlayerScoreboardId.hpp similarity index 95% rename from LiteLoader/Header/MC/PlayerScoreboardId.hpp rename to LiteLoader/include/llapi/mc/PlayerScoreboardId.hpp index 9bee4a9..211a936 100644 --- a/LiteLoader/Header/MC/PlayerScoreboardId.hpp +++ b/LiteLoader/include/llapi/mc/PlayerScoreboardId.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerSkinPacket.hpp b/LiteLoader/include/llapi/mc/PlayerSkinPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/PlayerSkinPacket.hpp rename to LiteLoader/include/llapi/mc/PlayerSkinPacket.hpp index dfc74c8..544672c 100644 --- a/LiteLoader/Header/MC/PlayerSkinPacket.hpp +++ b/LiteLoader/include/llapi/mc/PlayerSkinPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerStorageIds.hpp b/LiteLoader/include/llapi/mc/PlayerStorageIds.hpp similarity index 95% rename from LiteLoader/Header/MC/PlayerStorageIds.hpp rename to LiteLoader/include/llapi/mc/PlayerStorageIds.hpp index 4a629ae..d288781 100644 --- a/LiteLoader/Header/MC/PlayerStorageIds.hpp +++ b/LiteLoader/include/llapi/mc/PlayerStorageIds.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerUIContainer.hpp b/LiteLoader/include/llapi/mc/PlayerUIContainer.hpp similarity index 96% rename from LiteLoader/Header/MC/PlayerUIContainer.hpp rename to LiteLoader/include/llapi/mc/PlayerUIContainer.hpp index 095a63e..01b9f20 100644 --- a/LiteLoader/Header/MC/PlayerUIContainer.hpp +++ b/LiteLoader/include/llapi/mc/PlayerUIContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SimpleContainer.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerUIContainerModel.hpp b/LiteLoader/include/llapi/mc/PlayerUIContainerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/PlayerUIContainerModel.hpp rename to LiteLoader/include/llapi/mc/PlayerUIContainerModel.hpp index cd94153..f686125 100644 --- a/LiteLoader/Header/MC/PlayerUIContainerModel.hpp +++ b/LiteLoader/include/llapi/mc/PlayerUIContainerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PlayerUIContainerModelBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PlayerUIContainerModelBase.hpp b/LiteLoader/include/llapi/mc/PlayerUIContainerModelBase.hpp similarity index 98% rename from LiteLoader/Header/MC/PlayerUIContainerModelBase.hpp rename to LiteLoader/include/llapi/mc/PlayerUIContainerModelBase.hpp index 502a53a..39905d0 100644 --- a/LiteLoader/Header/MC/PlayerUIContainerModelBase.hpp +++ b/LiteLoader/include/llapi/mc/PlayerUIContainerModelBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PodzolAreaFeature.hpp b/LiteLoader/include/llapi/mc/PodzolAreaFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/PodzolAreaFeature.hpp rename to LiteLoader/include/llapi/mc/PodzolAreaFeature.hpp index 28f9cea..525a336 100644 --- a/LiteLoader/Header/MC/PodzolAreaFeature.hpp +++ b/LiteLoader/include/llapi/mc/PodzolAreaFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PodzolBlock.hpp b/LiteLoader/include/llapi/mc/PodzolBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/PodzolBlock.hpp rename to LiteLoader/include/llapi/mc/PodzolBlock.hpp index 3de039d..dcac70a 100644 --- a/LiteLoader/Header/MC/PodzolBlock.hpp +++ b/LiteLoader/include/llapi/mc/PodzolBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PolarBear.hpp b/LiteLoader/include/llapi/mc/PolarBear.hpp similarity index 98% rename from LiteLoader/Header/MC/PolarBear.hpp rename to LiteLoader/include/llapi/mc/PolarBear.hpp index dd76925..d5b9342 100644 --- a/LiteLoader/Header/MC/PolarBear.hpp +++ b/LiteLoader/include/llapi/mc/PolarBear.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/PoolElementStructurePiece.hpp b/LiteLoader/include/llapi/mc/PoolElementStructurePiece.hpp similarity index 98% rename from LiteLoader/Header/MC/PoolElementStructurePiece.hpp rename to LiteLoader/include/llapi/mc/PoolElementStructurePiece.hpp index 734c586..bdee78a 100644 --- a/LiteLoader/Header/MC/PoolElementStructurePiece.hpp +++ b/LiteLoader/include/llapi/mc/PoolElementStructurePiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PortalBlock.hpp b/LiteLoader/include/llapi/mc/PortalBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/PortalBlock.hpp rename to LiteLoader/include/llapi/mc/PortalBlock.hpp index bccdae3..641c28c 100644 --- a/LiteLoader/Header/MC/PortalBlock.hpp +++ b/LiteLoader/include/llapi/mc/PortalBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PortalForcer.hpp b/LiteLoader/include/llapi/mc/PortalForcer.hpp similarity index 97% rename from LiteLoader/Header/MC/PortalForcer.hpp rename to LiteLoader/include/llapi/mc/PortalForcer.hpp index 6f3253f..74950e0 100644 --- a/LiteLoader/Header/MC/PortalForcer.hpp +++ b/LiteLoader/include/llapi/mc/PortalForcer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PortalShape.hpp b/LiteLoader/include/llapi/mc/PortalShape.hpp similarity index 97% rename from LiteLoader/Header/MC/PortalShape.hpp rename to LiteLoader/include/llapi/mc/PortalShape.hpp index c3053f4..238deec 100644 --- a/LiteLoader/Header/MC/PortalShape.hpp +++ b/LiteLoader/include/llapi/mc/PortalShape.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Facing.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PosibleTransformation.hpp b/LiteLoader/include/llapi/mc/PosibleTransformation.hpp similarity index 95% rename from LiteLoader/Header/MC/PosibleTransformation.hpp rename to LiteLoader/include/llapi/mc/PosibleTransformation.hpp index 727fb1b..3adebfa 100644 --- a/LiteLoader/Header/MC/PosibleTransformation.hpp +++ b/LiteLoader/include/llapi/mc/PosibleTransformation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PositionTrackingDBClientRequestPacket.hpp b/LiteLoader/include/llapi/mc/PositionTrackingDBClientRequestPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/PositionTrackingDBClientRequestPacket.hpp rename to LiteLoader/include/llapi/mc/PositionTrackingDBClientRequestPacket.hpp index 241447f..57439a3 100644 --- a/LiteLoader/Header/MC/PositionTrackingDBClientRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/PositionTrackingDBClientRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PositionTrackingDBServerBroadcastPacket.hpp b/LiteLoader/include/llapi/mc/PositionTrackingDBServerBroadcastPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/PositionTrackingDBServerBroadcastPacket.hpp rename to LiteLoader/include/llapi/mc/PositionTrackingDBServerBroadcastPacket.hpp index 854f5e5..0915aba 100644 --- a/LiteLoader/Header/MC/PositionTrackingDBServerBroadcastPacket.hpp +++ b/LiteLoader/include/llapi/mc/PositionTrackingDBServerBroadcastPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PositionTrackingId.hpp b/LiteLoader/include/llapi/mc/PositionTrackingId.hpp similarity index 96% rename from LiteLoader/Header/MC/PositionTrackingId.hpp rename to LiteLoader/include/llapi/mc/PositionTrackingId.hpp index 94f4eef..528db80 100644 --- a/LiteLoader/Header/MC/PositionTrackingId.hpp +++ b/LiteLoader/include/llapi/mc/PositionTrackingId.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PostprocessingManager.hpp b/LiteLoader/include/llapi/mc/PostprocessingManager.hpp similarity index 96% rename from LiteLoader/Header/MC/PostprocessingManager.hpp rename to LiteLoader/include/llapi/mc/PostprocessingManager.hpp index 3f4dcf1..51f7749 100644 --- a/LiteLoader/Header/MC/PostprocessingManager.hpp +++ b/LiteLoader/include/llapi/mc/PostprocessingManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PotatoBlock.hpp b/LiteLoader/include/llapi/mc/PotatoBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/PotatoBlock.hpp rename to LiteLoader/include/llapi/mc/PotatoBlock.hpp index b50d6d6..46188fd 100644 --- a/LiteLoader/Header/MC/PotatoBlock.hpp +++ b/LiteLoader/include/llapi/mc/PotatoBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "CropBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Potion.hpp b/LiteLoader/include/llapi/mc/Potion.hpp similarity index 99% rename from LiteLoader/Header/MC/Potion.hpp rename to LiteLoader/include/llapi/mc/Potion.hpp index b69b00d..a71fd47 100644 --- a/LiteLoader/Header/MC/Potion.hpp +++ b/LiteLoader/include/llapi/mc/Potion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PotionBrewing.hpp b/LiteLoader/include/llapi/mc/PotionBrewing.hpp similarity index 98% rename from LiteLoader/Header/MC/PotionBrewing.hpp rename to LiteLoader/include/llapi/mc/PotionBrewing.hpp index 8751e16..ea4f4d9 100644 --- a/LiteLoader/Header/MC/PotionBrewing.hpp +++ b/LiteLoader/include/llapi/mc/PotionBrewing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PotionItem.hpp b/LiteLoader/include/llapi/mc/PotionItem.hpp similarity index 98% rename from LiteLoader/Header/MC/PotionItem.hpp rename to LiteLoader/include/llapi/mc/PotionItem.hpp index 6817431..66eb3c1 100644 --- a/LiteLoader/Header/MC/PotionItem.hpp +++ b/LiteLoader/include/llapi/mc/PotionItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Potion.hpp" #include "Item.hpp" diff --git a/LiteLoader/Header/MC/PoweredBlockComponent.hpp b/LiteLoader/include/llapi/mc/PoweredBlockComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/PoweredBlockComponent.hpp rename to LiteLoader/include/llapi/mc/PoweredBlockComponent.hpp index 238ec25..a9960ba 100644 --- a/LiteLoader/Header/MC/PoweredBlockComponent.hpp +++ b/LiteLoader/include/llapi/mc/PoweredBlockComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseCircuitComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PoweredRailBlock.hpp b/LiteLoader/include/llapi/mc/PoweredRailBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/PoweredRailBlock.hpp rename to LiteLoader/include/llapi/mc/PoweredRailBlock.hpp index 39afa6f..d3100c2 100644 --- a/LiteLoader/Header/MC/PoweredRailBlock.hpp +++ b/LiteLoader/include/llapi/mc/PoweredRailBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseRailBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PrecompiledCommandOrigin.hpp b/LiteLoader/include/llapi/mc/PrecompiledCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/PrecompiledCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/PrecompiledCommandOrigin.hpp index 99a7ed2..c38d9bf 100644 --- a/LiteLoader/Header/MC/PrecompiledCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/PrecompiledCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/Predicate.hpp b/LiteLoader/include/llapi/mc/Predicate.hpp similarity index 90% rename from LiteLoader/Header/MC/Predicate.hpp rename to LiteLoader/include/llapi/mc/Predicate.hpp index 964dc84..8c72fcd 100644 --- a/LiteLoader/Header/MC/Predicate.hpp +++ b/LiteLoader/include/llapi/mc/Predicate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PreferredPathDescription.hpp b/LiteLoader/include/llapi/mc/PreferredPathDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/PreferredPathDescription.hpp rename to LiteLoader/include/llapi/mc/PreferredPathDescription.hpp index 213feca..3257ff4 100644 --- a/LiteLoader/Header/MC/PreferredPathDescription.hpp +++ b/LiteLoader/include/llapi/mc/PreferredPathDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PressurePlateBlock.hpp b/LiteLoader/include/llapi/mc/PressurePlateBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/PressurePlateBlock.hpp rename to LiteLoader/include/llapi/mc/PressurePlateBlock.hpp index 8102cbb..5df7f9c 100644 --- a/LiteLoader/Header/MC/PressurePlateBlock.hpp +++ b/LiteLoader/include/llapi/mc/PressurePlateBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BasePressurePlateBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PrettySnbtFormat.hpp b/LiteLoader/include/llapi/mc/PrettySnbtFormat.hpp similarity index 97% rename from LiteLoader/Header/MC/PrettySnbtFormat.hpp rename to LiteLoader/include/llapi/mc/PrettySnbtFormat.hpp index 51c3f1f..c36f233 100644 --- a/LiteLoader/Header/MC/PrettySnbtFormat.hpp +++ b/LiteLoader/include/llapi/mc/PrettySnbtFormat.hpp @@ -1,6 +1,6 @@ #pragma once -#include "../Global.h" -#include +#include "llapi/Global.h" +#include "Tag.hpp" struct PrettySnbtFormat { diff --git a/LiteLoader/Header/MC/PrimedTnt.hpp b/LiteLoader/include/llapi/mc/PrimedTnt.hpp similarity index 98% rename from LiteLoader/Header/MC/PrimedTnt.hpp rename to LiteLoader/include/llapi/mc/PrimedTnt.hpp index 2bdd6e6..c8fa31b 100644 --- a/LiteLoader/Header/MC/PrimedTnt.hpp +++ b/LiteLoader/include/llapi/mc/PrimedTnt.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PrintStream.hpp b/LiteLoader/include/llapi/mc/PrintStream.hpp similarity index 94% rename from LiteLoader/Header/MC/PrintStream.hpp rename to LiteLoader/include/llapi/mc/PrintStream.hpp index 9286c15..8b695ed 100644 --- a/LiteLoader/Header/MC/PrintStream.hpp +++ b/LiteLoader/include/llapi/mc/PrintStream.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PrioritizedGoal.hpp b/LiteLoader/include/llapi/mc/PrioritizedGoal.hpp similarity index 95% rename from LiteLoader/Header/MC/PrioritizedGoal.hpp rename to LiteLoader/include/llapi/mc/PrioritizedGoal.hpp index 8e76d70..d0b18a8 100644 --- a/LiteLoader/Header/MC/PrioritizedGoal.hpp +++ b/LiteLoader/include/llapi/mc/PrioritizedGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PrismarineBlock.hpp b/LiteLoader/include/llapi/mc/PrismarineBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/PrismarineBlock.hpp rename to LiteLoader/include/llapi/mc/PrismarineBlock.hpp index acb7246..be7700f 100644 --- a/LiteLoader/Header/MC/PrismarineBlock.hpp +++ b/LiteLoader/include/llapi/mc/PrismarineBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PrivateKeyManager.hpp b/LiteLoader/include/llapi/mc/PrivateKeyManager.hpp similarity index 96% rename from LiteLoader/Header/MC/PrivateKeyManager.hpp rename to LiteLoader/include/llapi/mc/PrivateKeyManager.hpp index f2f3dca..a07d423 100644 --- a/LiteLoader/Header/MC/PrivateKeyManager.hpp +++ b/LiteLoader/include/llapi/mc/PrivateKeyManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ProducerComponent.hpp b/LiteLoader/include/llapi/mc/ProducerComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ProducerComponent.hpp rename to LiteLoader/include/llapi/mc/ProducerComponent.hpp index fe5cb23..e77f309 100644 --- a/LiteLoader/Header/MC/ProducerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ProducerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseCircuitComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ProfilerLite.hpp b/LiteLoader/include/llapi/mc/ProfilerLite.hpp similarity index 95% rename from LiteLoader/Header/MC/ProfilerLite.hpp rename to LiteLoader/include/llapi/mc/ProfilerLite.hpp index 7713d64..5e19218 100644 --- a/LiteLoader/Header/MC/ProfilerLite.hpp +++ b/LiteLoader/include/llapi/mc/ProfilerLite.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ProjectileComponent.hpp b/LiteLoader/include/llapi/mc/ProjectileComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ProjectileComponent.hpp rename to LiteLoader/include/llapi/mc/ProjectileComponent.hpp index cb92693..0ce69d9 100644 --- a/LiteLoader/Header/MC/ProjectileComponent.hpp +++ b/LiteLoader/include/llapi/mc/ProjectileComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ProjectileDescription.hpp b/LiteLoader/include/llapi/mc/ProjectileDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/ProjectileDescription.hpp rename to LiteLoader/include/llapi/mc/ProjectileDescription.hpp index 43f2c5d..a39da37 100644 --- a/LiteLoader/Header/MC/ProjectileDescription.hpp +++ b/LiteLoader/include/llapi/mc/ProjectileDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ProjectileFactory.hpp b/LiteLoader/include/llapi/mc/ProjectileFactory.hpp similarity index 97% rename from LiteLoader/Header/MC/ProjectileFactory.hpp rename to LiteLoader/include/llapi/mc/ProjectileFactory.hpp index 0e1bb58..4ba6d22 100644 --- a/LiteLoader/Header/MC/ProjectileFactory.hpp +++ b/LiteLoader/include/llapi/mc/ProjectileFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ProjectileSystem.hpp b/LiteLoader/include/llapi/mc/ProjectileSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/ProjectileSystem.hpp rename to LiteLoader/include/llapi/mc/ProjectileSystem.hpp index 172b9f8..7c16905 100644 --- a/LiteLoader/Header/MC/ProjectileSystem.hpp +++ b/LiteLoader/include/llapi/mc/ProjectileSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PropertiesSettings.hpp b/LiteLoader/include/llapi/mc/PropertiesSettings.hpp similarity index 97% rename from LiteLoader/Header/MC/PropertiesSettings.hpp rename to LiteLoader/include/llapi/mc/PropertiesSettings.hpp index 1c941a3..fa9de4e 100644 --- a/LiteLoader/Header/MC/PropertiesSettings.hpp +++ b/LiteLoader/include/llapi/mc/PropertiesSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PropertyBag.hpp b/LiteLoader/include/llapi/mc/PropertyBag.hpp similarity index 94% rename from LiteLoader/Header/MC/PropertyBag.hpp rename to LiteLoader/include/llapi/mc/PropertyBag.hpp index 2cee5e9..39ecc0f 100644 --- a/LiteLoader/Header/MC/PropertyBag.hpp +++ b/LiteLoader/include/llapi/mc/PropertyBag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PropertyDescription.hpp b/LiteLoader/include/llapi/mc/PropertyDescription.hpp similarity index 95% rename from LiteLoader/Header/MC/PropertyDescription.hpp rename to LiteLoader/include/llapi/mc/PropertyDescription.hpp index 8b2b68c..c3d0faf 100644 --- a/LiteLoader/Header/MC/PropertyDescription.hpp +++ b/LiteLoader/include/llapi/mc/PropertyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ProtectionEnchant.hpp b/LiteLoader/include/llapi/mc/ProtectionEnchant.hpp similarity index 97% rename from LiteLoader/Header/MC/ProtectionEnchant.hpp rename to LiteLoader/include/llapi/mc/ProtectionEnchant.hpp index f40619f..de80516 100644 --- a/LiteLoader/Header/MC/ProtectionEnchant.hpp +++ b/LiteLoader/include/llapi/mc/ProtectionEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Pufferfish.hpp b/LiteLoader/include/llapi/mc/Pufferfish.hpp similarity index 98% rename from LiteLoader/Header/MC/Pufferfish.hpp rename to LiteLoader/include/llapi/mc/Pufferfish.hpp index a28ef47..cf2144f 100644 --- a/LiteLoader/Header/MC/Pufferfish.hpp +++ b/LiteLoader/include/llapi/mc/Pufferfish.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Fish.hpp" diff --git a/LiteLoader/Header/MC/PulseCapacitor.hpp b/LiteLoader/include/llapi/mc/PulseCapacitor.hpp similarity index 97% rename from LiteLoader/Header/MC/PulseCapacitor.hpp rename to LiteLoader/include/llapi/mc/PulseCapacitor.hpp index c18c611..014c407 100644 --- a/LiteLoader/Header/MC/PulseCapacitor.hpp +++ b/LiteLoader/include/llapi/mc/PulseCapacitor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ProducerComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PumpkinBlock.hpp b/LiteLoader/include/llapi/mc/PumpkinBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/PumpkinBlock.hpp rename to LiteLoader/include/llapi/mc/PumpkinBlock.hpp index 58c67fb..34320b8 100644 --- a/LiteLoader/Header/MC/PumpkinBlock.hpp +++ b/LiteLoader/include/llapi/mc/PumpkinBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PumpkinBlockItem.hpp b/LiteLoader/include/llapi/mc/PumpkinBlockItem.hpp similarity index 97% rename from LiteLoader/Header/MC/PumpkinBlockItem.hpp rename to LiteLoader/include/llapi/mc/PumpkinBlockItem.hpp index fcb81ee..9403d40 100644 --- a/LiteLoader/Header/MC/PumpkinBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/PumpkinBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PurchaseReceiptPacket.hpp b/LiteLoader/include/llapi/mc/PurchaseReceiptPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/PurchaseReceiptPacket.hpp rename to LiteLoader/include/llapi/mc/PurchaseReceiptPacket.hpp index 45f8a91..1f56602 100644 --- a/LiteLoader/Header/MC/PurchaseReceiptPacket.hpp +++ b/LiteLoader/include/llapi/mc/PurchaseReceiptPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PushThroughDescription.hpp b/LiteLoader/include/llapi/mc/PushThroughDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/PushThroughDescription.hpp rename to LiteLoader/include/llapi/mc/PushThroughDescription.hpp index e0ef9b8..890d3cf 100644 --- a/LiteLoader/Header/MC/PushThroughDescription.hpp +++ b/LiteLoader/include/llapi/mc/PushThroughDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PushableComponent.hpp b/LiteLoader/include/llapi/mc/PushableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/PushableComponent.hpp rename to LiteLoader/include/llapi/mc/PushableComponent.hpp index 19bbd17..e8907db 100644 --- a/LiteLoader/Header/MC/PushableComponent.hpp +++ b/LiteLoader/include/llapi/mc/PushableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/PushableDescription.hpp b/LiteLoader/include/llapi/mc/PushableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/PushableDescription.hpp rename to LiteLoader/include/llapi/mc/PushableDescription.hpp index 80d64ea..7a8725d 100644 --- a/LiteLoader/Header/MC/PushableDescription.hpp +++ b/LiteLoader/include/llapi/mc/PushableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/QuartzBlockBlock.hpp b/LiteLoader/include/llapi/mc/QuartzBlockBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/QuartzBlockBlock.hpp rename to LiteLoader/include/llapi/mc/QuartzBlockBlock.hpp index bb75ca3..1c8554e 100644 --- a/LiteLoader/Header/MC/QuartzBlockBlock.hpp +++ b/LiteLoader/include/llapi/mc/QuartzBlockBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/QueryTargetCommand.hpp b/LiteLoader/include/llapi/mc/QueryTargetCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/QueryTargetCommand.hpp rename to LiteLoader/include/llapi/mc/QueryTargetCommand.hpp index 9123ea3..aa5f164 100644 --- a/LiteLoader/Header/MC/QueryTargetCommand.hpp +++ b/LiteLoader/include/llapi/mc/QueryTargetCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Rabbit.hpp b/LiteLoader/include/llapi/mc/Rabbit.hpp similarity index 98% rename from LiteLoader/Header/MC/Rabbit.hpp rename to LiteLoader/include/llapi/mc/Rabbit.hpp index 3c0ab6b..14d12fb 100644 --- a/LiteLoader/Header/MC/Rabbit.hpp +++ b/LiteLoader/include/llapi/mc/Rabbit.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/RabbitPanicGoal.hpp b/LiteLoader/include/llapi/mc/RabbitPanicGoal.hpp similarity index 95% rename from LiteLoader/Header/MC/RabbitPanicGoal.hpp rename to LiteLoader/include/llapi/mc/RabbitPanicGoal.hpp index 1ccd09e..dff5cf1 100644 --- a/LiteLoader/Header/MC/RabbitPanicGoal.hpp +++ b/LiteLoader/include/llapi/mc/RabbitPanicGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PanicGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Raid.hpp b/LiteLoader/include/llapi/mc/Raid.hpp similarity index 96% rename from LiteLoader/Header/MC/Raid.hpp rename to LiteLoader/include/llapi/mc/Raid.hpp index 78cf3ba..b3d5440 100644 --- a/LiteLoader/Header/MC/Raid.hpp +++ b/LiteLoader/include/llapi/mc/Raid.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RaidBossComponent.hpp b/LiteLoader/include/llapi/mc/RaidBossComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/RaidBossComponent.hpp rename to LiteLoader/include/llapi/mc/RaidBossComponent.hpp index d0c784b..5c53a79 100644 --- a/LiteLoader/Header/MC/RaidBossComponent.hpp +++ b/LiteLoader/include/llapi/mc/RaidBossComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RaidBossSystem.hpp b/LiteLoader/include/llapi/mc/RaidBossSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/RaidBossSystem.hpp rename to LiteLoader/include/llapi/mc/RaidBossSystem.hpp index 2b0339a..3359ef8 100644 --- a/LiteLoader/Header/MC/RaidBossSystem.hpp +++ b/LiteLoader/include/llapi/mc/RaidBossSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RaidGardenGoal.hpp b/LiteLoader/include/llapi/mc/RaidGardenGoal.hpp similarity index 98% rename from LiteLoader/Header/MC/RaidGardenGoal.hpp rename to LiteLoader/include/llapi/mc/RaidGardenGoal.hpp index b743531..97bdac8 100644 --- a/LiteLoader/Header/MC/RaidGardenGoal.hpp +++ b/LiteLoader/include/llapi/mc/RaidGardenGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToBlockGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RaidTriggerComponent.hpp b/LiteLoader/include/llapi/mc/RaidTriggerComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/RaidTriggerComponent.hpp rename to LiteLoader/include/llapi/mc/RaidTriggerComponent.hpp index 76f0b86..e17c44a 100644 --- a/LiteLoader/Header/MC/RaidTriggerComponent.hpp +++ b/LiteLoader/include/llapi/mc/RaidTriggerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RaidTriggerDescription.hpp b/LiteLoader/include/llapi/mc/RaidTriggerDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/RaidTriggerDescription.hpp rename to LiteLoader/include/llapi/mc/RaidTriggerDescription.hpp index a0d4a29..ed67b13 100644 --- a/LiteLoader/Header/MC/RaidTriggerDescription.hpp +++ b/LiteLoader/include/llapi/mc/RaidTriggerDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RaiderCelebrationGoal.hpp b/LiteLoader/include/llapi/mc/RaiderCelebrationGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RaiderCelebrationGoal.hpp rename to LiteLoader/include/llapi/mc/RaiderCelebrationGoal.hpp index 9bb1960..bcbfbe6 100644 --- a/LiteLoader/Header/MC/RaiderCelebrationGoal.hpp +++ b/LiteLoader/include/llapi/mc/RaiderCelebrationGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RailActivatorComponent.hpp b/LiteLoader/include/llapi/mc/RailActivatorComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/RailActivatorComponent.hpp rename to LiteLoader/include/llapi/mc/RailActivatorComponent.hpp index 76f8276..6907a96 100644 --- a/LiteLoader/Header/MC/RailActivatorComponent.hpp +++ b/LiteLoader/include/llapi/mc/RailActivatorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RailActivatorDefinition.hpp b/LiteLoader/include/llapi/mc/RailActivatorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/RailActivatorDefinition.hpp rename to LiteLoader/include/llapi/mc/RailActivatorDefinition.hpp index 036e7fc..53f2db1 100644 --- a/LiteLoader/Header/MC/RailActivatorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/RailActivatorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RailActivatorSystem.hpp b/LiteLoader/include/llapi/mc/RailActivatorSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/RailActivatorSystem.hpp rename to LiteLoader/include/llapi/mc/RailActivatorSystem.hpp index 7faa69a..ebc7768 100644 --- a/LiteLoader/Header/MC/RailActivatorSystem.hpp +++ b/LiteLoader/include/llapi/mc/RailActivatorSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RailBlock.hpp b/LiteLoader/include/llapi/mc/RailBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/RailBlock.hpp rename to LiteLoader/include/llapi/mc/RailBlock.hpp index 623e77b..1b605eb 100644 --- a/LiteLoader/Header/MC/RailBlock.hpp +++ b/LiteLoader/include/llapi/mc/RailBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseRailBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RailMovement.hpp b/LiteLoader/include/llapi/mc/RailMovement.hpp similarity index 95% rename from LiteLoader/Header/MC/RailMovement.hpp rename to LiteLoader/include/llapi/mc/RailMovement.hpp index 859b7eb..02f086f 100644 --- a/LiteLoader/Header/MC/RailMovement.hpp +++ b/LiteLoader/include/llapi/mc/RailMovement.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RailMovementComponent.hpp b/LiteLoader/include/llapi/mc/RailMovementComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/RailMovementComponent.hpp rename to LiteLoader/include/llapi/mc/RailMovementComponent.hpp index cc413a5..57aee48 100644 --- a/LiteLoader/Header/MC/RailMovementComponent.hpp +++ b/LiteLoader/include/llapi/mc/RailMovementComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RakDataInput.hpp b/LiteLoader/include/llapi/mc/RakDataInput.hpp similarity index 97% rename from LiteLoader/Header/MC/RakDataInput.hpp rename to LiteLoader/include/llapi/mc/RakDataInput.hpp index b9bc1dd..a27008e 100644 --- a/LiteLoader/Header/MC/RakDataInput.hpp +++ b/LiteLoader/include/llapi/mc/RakDataInput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BytesDataInput.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RakDataOutput.hpp b/LiteLoader/include/llapi/mc/RakDataOutput.hpp similarity index 97% rename from LiteLoader/Header/MC/RakDataOutput.hpp rename to LiteLoader/include/llapi/mc/RakDataOutput.hpp index 9892f85..3aa2535 100644 --- a/LiteLoader/Header/MC/RakDataOutput.hpp +++ b/LiteLoader/include/llapi/mc/RakDataOutput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BytesDataOutput.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RakNet.hpp b/LiteLoader/include/llapi/mc/RakNet.hpp similarity index 98% rename from LiteLoader/Header/MC/RakNet.hpp rename to LiteLoader/include/llapi/mc/RakNet.hpp index 7348d58..d2d03a6 100644 --- a/LiteLoader/Header/MC/RakNet.hpp +++ b/LiteLoader/include/llapi/mc/RakNet.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/RakNetInstance.hpp b/LiteLoader/include/llapi/mc/RakNetInstance.hpp similarity index 98% rename from LiteLoader/Header/MC/RakNetInstance.hpp rename to LiteLoader/include/llapi/mc/RakNetInstance.hpp index 51328b1..d1bbe35 100644 --- a/LiteLoader/Header/MC/RakNetInstance.hpp +++ b/LiteLoader/include/llapi/mc/RakNetInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #include "Social.hpp" #include "Connector.hpp" diff --git a/LiteLoader/Header/MC/RakNetServerLocator.hpp b/LiteLoader/include/llapi/mc/RakNetServerLocator.hpp similarity index 98% rename from LiteLoader/Header/MC/RakNetServerLocator.hpp rename to LiteLoader/include/llapi/mc/RakNetServerLocator.hpp index 5f06515..dc7de4f 100644 --- a/LiteLoader/Header/MC/RakNetServerLocator.hpp +++ b/LiteLoader/include/llapi/mc/RakNetServerLocator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #include "RakPeerHelper.hpp" diff --git a/LiteLoader/Header/MC/RakPeerHelper.hpp b/LiteLoader/include/llapi/mc/RakPeerHelper.hpp similarity index 84% rename from LiteLoader/Header/MC/RakPeerHelper.hpp rename to LiteLoader/include/llapi/mc/RakPeerHelper.hpp index c19da56..5a28900 100644 --- a/LiteLoader/Header/MC/RakPeerHelper.hpp +++ b/LiteLoader/include/llapi/mc/RakPeerHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA @@ -12,10 +12,10 @@ class RakPeerHelper { #define AFTER_EXTRA public: - struct IPSupportInterface{ + class IPSupportInterface{ IPSupportInterface() = delete; - IPSupportInterface(struct IPSupportInterface&) = delete; - IPSupportInterface(struct IPSupportInterface&&) = delete; + IPSupportInterface(class IPSupportInterface&) = delete; + IPSupportInterface(class IPSupportInterface&&) = delete; }; #undef AFTER_EXTRA diff --git a/LiteLoader/Header/MC/RakTcpProxy.hpp b/LiteLoader/include/llapi/mc/RakTcpProxy.hpp similarity index 97% rename from LiteLoader/Header/MC/RakTcpProxy.hpp rename to LiteLoader/include/llapi/mc/RakTcpProxy.hpp index 4601cf3..6ab6d06 100644 --- a/LiteLoader/Header/MC/RakTcpProxy.hpp +++ b/LiteLoader/include/llapi/mc/RakTcpProxy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RakWebSocket.hpp b/LiteLoader/include/llapi/mc/RakWebSocket.hpp similarity index 98% rename from LiteLoader/Header/MC/RakWebSocket.hpp rename to LiteLoader/include/llapi/mc/RakWebSocket.hpp index 9e34ff2..429fb7b 100644 --- a/LiteLoader/Header/MC/RakWebSocket.hpp +++ b/LiteLoader/include/llapi/mc/RakWebSocket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RakWebSocketClient.hpp b/LiteLoader/include/llapi/mc/RakWebSocketClient.hpp similarity index 96% rename from LiteLoader/Header/MC/RakWebSocketClient.hpp rename to LiteLoader/include/llapi/mc/RakWebSocketClient.hpp index 3e4024b..2751615 100644 --- a/LiteLoader/Header/MC/RakWebSocketClient.hpp +++ b/LiteLoader/include/llapi/mc/RakWebSocketClient.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakWebSocket.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RakWebSocketDataFrame.hpp b/LiteLoader/include/llapi/mc/RakWebSocketDataFrame.hpp similarity index 96% rename from LiteLoader/Header/MC/RakWebSocketDataFrame.hpp rename to LiteLoader/include/llapi/mc/RakWebSocketDataFrame.hpp index 56d3c87..f1122d3 100644 --- a/LiteLoader/Header/MC/RakWebSocketDataFrame.hpp +++ b/LiteLoader/include/llapi/mc/RakWebSocketDataFrame.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RakWebSocketDataFrameParser.hpp b/LiteLoader/include/llapi/mc/RakWebSocketDataFrameParser.hpp similarity index 97% rename from LiteLoader/Header/MC/RakWebSocketDataFrameParser.hpp rename to LiteLoader/include/llapi/mc/RakWebSocketDataFrameParser.hpp index 0a43431..bed6aad 100644 --- a/LiteLoader/Header/MC/RakWebSocketDataFrameParser.hpp +++ b/LiteLoader/include/llapi/mc/RakWebSocketDataFrameParser.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RakNet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Random.hpp b/LiteLoader/include/llapi/mc/Random.hpp similarity index 96% rename from LiteLoader/Header/MC/Random.hpp rename to LiteLoader/include/llapi/mc/Random.hpp index 4f71efd..a483522 100644 --- a/LiteLoader/Header/MC/Random.hpp +++ b/LiteLoader/include/llapi/mc/Random.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomAuxValueFunction.hpp b/LiteLoader/include/llapi/mc/RandomAuxValueFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/RandomAuxValueFunction.hpp rename to LiteLoader/include/llapi/mc/RandomAuxValueFunction.hpp index 44474bc..8feed9c 100644 --- a/LiteLoader/Header/MC/RandomAuxValueFunction.hpp +++ b/LiteLoader/include/llapi/mc/RandomAuxValueFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomBlockStateFunction.hpp b/LiteLoader/include/llapi/mc/RandomBlockStateFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomBlockStateFunction.hpp rename to LiteLoader/include/llapi/mc/RandomBlockStateFunction.hpp index 0721c33..c2f8db6 100644 --- a/LiteLoader/Header/MC/RandomBlockStateFunction.hpp +++ b/LiteLoader/include/llapi/mc/RandomBlockStateFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/RandomBreachingGoal.hpp b/LiteLoader/include/llapi/mc/RandomBreachingGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomBreachingGoal.hpp rename to LiteLoader/include/llapi/mc/RandomBreachingGoal.hpp index 2c5a15c..ae687bf 100644 --- a/LiteLoader/Header/MC/RandomBreachingGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomBreachingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RandomStrollGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomDyeFunction.hpp b/LiteLoader/include/llapi/mc/RandomDyeFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomDyeFunction.hpp rename to LiteLoader/include/llapi/mc/RandomDyeFunction.hpp index 660bd9a..177bb50 100644 --- a/LiteLoader/Header/MC/RandomDyeFunction.hpp +++ b/LiteLoader/include/llapi/mc/RandomDyeFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomFlyingGoal.hpp b/LiteLoader/include/llapi/mc/RandomFlyingGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RandomFlyingGoal.hpp rename to LiteLoader/include/llapi/mc/RandomFlyingGoal.hpp index 2237ef8..020f11d 100644 --- a/LiteLoader/Header/MC/RandomFlyingGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomFlyingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RandomStrollGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomHoverGoal.hpp b/LiteLoader/include/llapi/mc/RandomHoverGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomHoverGoal.hpp rename to LiteLoader/include/llapi/mc/RandomHoverGoal.hpp index 1da17fe..0bea1f6 100644 --- a/LiteLoader/Header/MC/RandomHoverGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomHoverGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomLookAroundAndSitGoal.hpp b/LiteLoader/include/llapi/mc/RandomLookAroundAndSitGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomLookAroundAndSitGoal.hpp rename to LiteLoader/include/llapi/mc/RandomLookAroundAndSitGoal.hpp index 9ee4a2c..fea6e37 100644 --- a/LiteLoader/Header/MC/RandomLookAroundAndSitGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomLookAroundAndSitGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomLookAroundGoal.hpp b/LiteLoader/include/llapi/mc/RandomLookAroundGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RandomLookAroundGoal.hpp rename to LiteLoader/include/llapi/mc/RandomLookAroundGoal.hpp index a1ecd5f..90a152a 100644 --- a/LiteLoader/Header/MC/RandomLookAroundGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomLookAroundGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomPos.hpp b/LiteLoader/include/llapi/mc/RandomPos.hpp similarity index 98% rename from LiteLoader/Header/MC/RandomPos.hpp rename to LiteLoader/include/llapi/mc/RandomPos.hpp index 29d1b4d..6ed58ae 100644 --- a/LiteLoader/Header/MC/RandomPos.hpp +++ b/LiteLoader/include/llapi/mc/RandomPos.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomScatteredLargeFeature.hpp b/LiteLoader/include/llapi/mc/RandomScatteredLargeFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomScatteredLargeFeature.hpp rename to LiteLoader/include/llapi/mc/RandomScatteredLargeFeature.hpp index 11ff2d3..3849b2b 100644 --- a/LiteLoader/Header/MC/RandomScatteredLargeFeature.hpp +++ b/LiteLoader/include/llapi/mc/RandomScatteredLargeFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomSitGoal.hpp b/LiteLoader/include/llapi/mc/RandomSitGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RandomSitGoal.hpp rename to LiteLoader/include/llapi/mc/RandomSitGoal.hpp index 34ce837..a270ffb 100644 --- a/LiteLoader/Header/MC/RandomSitGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomSitGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomStrollGoal.hpp b/LiteLoader/include/llapi/mc/RandomStrollGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomStrollGoal.hpp rename to LiteLoader/include/llapi/mc/RandomStrollGoal.hpp index 125ef88..13cd420 100644 --- a/LiteLoader/Header/MC/RandomStrollGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomStrollGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomSwimmingGoal.hpp b/LiteLoader/include/llapi/mc/RandomSwimmingGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomSwimmingGoal.hpp rename to LiteLoader/include/llapi/mc/RandomSwimmingGoal.hpp index b537e0c..c45f457 100644 --- a/LiteLoader/Header/MC/RandomSwimmingGoal.hpp +++ b/LiteLoader/include/llapi/mc/RandomSwimmingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RandomStrollGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomThreadCheckManager.hpp b/LiteLoader/include/llapi/mc/RandomThreadCheckManager.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomThreadCheckManager.hpp rename to LiteLoader/include/llapi/mc/RandomThreadCheckManager.hpp index b6b4b15..7f90dc6 100644 --- a/LiteLoader/Header/MC/RandomThreadCheckManager.hpp +++ b/LiteLoader/include/llapi/mc/RandomThreadCheckManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomValueBounds.hpp b/LiteLoader/include/llapi/mc/RandomValueBounds.hpp similarity index 96% rename from LiteLoader/Header/MC/RandomValueBounds.hpp rename to LiteLoader/include/llapi/mc/RandomValueBounds.hpp index 2e15aab..21f0aae 100644 --- a/LiteLoader/Header/MC/RandomValueBounds.hpp +++ b/LiteLoader/include/llapi/mc/RandomValueBounds.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomizableBlockActorContainer.hpp b/LiteLoader/include/llapi/mc/RandomizableBlockActorContainer.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomizableBlockActorContainer.hpp rename to LiteLoader/include/llapi/mc/RandomizableBlockActorContainer.hpp index 1a649ef..b57fbdc 100644 --- a/LiteLoader/Header/MC/RandomizableBlockActorContainer.hpp +++ b/LiteLoader/include/llapi/mc/RandomizableBlockActorContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomizableBlockActorContainerBase.hpp b/LiteLoader/include/llapi/mc/RandomizableBlockActorContainerBase.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomizableBlockActorContainerBase.hpp rename to LiteLoader/include/llapi/mc/RandomizableBlockActorContainerBase.hpp index 217f5f1..5e218fc 100644 --- a/LiteLoader/Header/MC/RandomizableBlockActorContainerBase.hpp +++ b/LiteLoader/include/llapi/mc/RandomizableBlockActorContainerBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RandomizableBlockActorFillingContainer.hpp b/LiteLoader/include/llapi/mc/RandomizableBlockActorFillingContainer.hpp similarity index 97% rename from LiteLoader/Header/MC/RandomizableBlockActorFillingContainer.hpp rename to LiteLoader/include/llapi/mc/RandomizableBlockActorFillingContainer.hpp index 8ef2601..0de6516 100644 --- a/LiteLoader/Header/MC/RandomizableBlockActorFillingContainer.hpp +++ b/LiteLoader/include/llapi/mc/RandomizableBlockActorFillingContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RandomizableBlockActorContainerBase.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RangedAttackDefinition.hpp b/LiteLoader/include/llapi/mc/RangedAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/RangedAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/RangedAttackDefinition.hpp index 4b2b4c9..9be26be 100644 --- a/LiteLoader/Header/MC/RangedAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/RangedAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RangedAttackGoal.hpp b/LiteLoader/include/llapi/mc/RangedAttackGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RangedAttackGoal.hpp rename to LiteLoader/include/llapi/mc/RangedAttackGoal.hpp index ce8bd56..69234f6 100644 --- a/LiteLoader/Header/MC/RangedAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/RangedAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RangedWeaponItem.hpp b/LiteLoader/include/llapi/mc/RangedWeaponItem.hpp similarity index 97% rename from LiteLoader/Header/MC/RangedWeaponItem.hpp rename to LiteLoader/include/llapi/mc/RangedWeaponItem.hpp index 6cd20e9..2976a91 100644 --- a/LiteLoader/Header/MC/RangedWeaponItem.hpp +++ b/LiteLoader/include/llapi/mc/RangedWeaponItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RapidFertilizerItem.hpp b/LiteLoader/include/llapi/mc/RapidFertilizerItem.hpp similarity index 99% rename from LiteLoader/Header/MC/RapidFertilizerItem.hpp rename to LiteLoader/include/llapi/mc/RapidFertilizerItem.hpp index 0f6c392..d15cccc 100644 --- a/LiteLoader/Header/MC/RapidFertilizerItem.hpp +++ b/LiteLoader/include/llapi/mc/RapidFertilizerItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FertilizerItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp b/LiteLoader/include/llapi/mc/ReadOnlyBinaryStream.hpp similarity index 98% rename from LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp rename to LiteLoader/include/llapi/mc/ReadOnlyBinaryStream.hpp index bc6b545..e0ab4ad 100644 --- a/LiteLoader/Header/MC/ReadOnlyBinaryStream.hpp +++ b/LiteLoader/include/llapi/mc/ReadOnlyBinaryStream.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RealmsUnknownPackSource.hpp b/LiteLoader/include/llapi/mc/RealmsUnknownPackSource.hpp similarity index 97% rename from LiteLoader/Header/MC/RealmsUnknownPackSource.hpp rename to LiteLoader/include/llapi/mc/RealmsUnknownPackSource.hpp index 6c26a30..c3b7522 100644 --- a/LiteLoader/Header/MC/RealmsUnknownPackSource.hpp +++ b/LiteLoader/include/llapi/mc/RealmsUnknownPackSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ReceiveLoveGoal.hpp b/LiteLoader/include/llapi/mc/ReceiveLoveGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/ReceiveLoveGoal.hpp rename to LiteLoader/include/llapi/mc/ReceiveLoveGoal.hpp index fc53ab1..0aa744b 100644 --- a/LiteLoader/Header/MC/ReceiveLoveGoal.hpp +++ b/LiteLoader/include/llapi/mc/ReceiveLoveGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Recipe.hpp b/LiteLoader/include/llapi/mc/Recipe.hpp similarity index 98% rename from LiteLoader/Header/MC/Recipe.hpp rename to LiteLoader/include/llapi/mc/Recipe.hpp index 6f80906..295b17d 100644 --- a/LiteLoader/Header/MC/Recipe.hpp +++ b/LiteLoader/include/llapi/mc/Recipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RecipeIngredient.hpp b/LiteLoader/include/llapi/mc/RecipeIngredient.hpp similarity index 96% rename from LiteLoader/Header/MC/RecipeIngredient.hpp rename to LiteLoader/include/llapi/mc/RecipeIngredient.hpp index 7e32d26..9f6b300 100644 --- a/LiteLoader/Header/MC/RecipeIngredient.hpp +++ b/LiteLoader/include/llapi/mc/RecipeIngredient.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Recipes.hpp b/LiteLoader/include/llapi/mc/Recipes.hpp similarity index 99% rename from LiteLoader/Header/MC/Recipes.hpp rename to LiteLoader/include/llapi/mc/Recipes.hpp index a1efa75..508642e 100644 --- a/LiteLoader/Header/MC/Recipes.hpp +++ b/LiteLoader/include/llapi/mc/Recipes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RecordItem.hpp b/LiteLoader/include/llapi/mc/RecordItem.hpp similarity index 98% rename from LiteLoader/Header/MC/RecordItem.hpp rename to LiteLoader/include/llapi/mc/RecordItem.hpp index 7f411ab..412340f 100644 --- a/LiteLoader/Header/MC/RecordItem.hpp +++ b/LiteLoader/include/llapi/mc/RecordItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RedStoneDustItem.hpp b/LiteLoader/include/llapi/mc/RedStoneDustItem.hpp similarity index 98% rename from LiteLoader/Header/MC/RedStoneDustItem.hpp rename to LiteLoader/include/llapi/mc/RedStoneDustItem.hpp index 41d8367..8690e11 100644 --- a/LiteLoader/Header/MC/RedStoneDustItem.hpp +++ b/LiteLoader/include/llapi/mc/RedStoneDustItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RedStoneOreBlock.hpp b/LiteLoader/include/llapi/mc/RedStoneOreBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/RedStoneOreBlock.hpp rename to LiteLoader/include/llapi/mc/RedStoneOreBlock.hpp index dbad38f..a0177b2 100644 --- a/LiteLoader/Header/MC/RedStoneOreBlock.hpp +++ b/LiteLoader/include/llapi/mc/RedStoneOreBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RedStoneWireBlock.hpp b/LiteLoader/include/llapi/mc/RedStoneWireBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/RedStoneWireBlock.hpp rename to LiteLoader/include/llapi/mc/RedStoneWireBlock.hpp index c5cc03f..bd9edb8 100644 --- a/LiteLoader/Header/MC/RedStoneWireBlock.hpp +++ b/LiteLoader/include/llapi/mc/RedStoneWireBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RedstoneBlock.hpp b/LiteLoader/include/llapi/mc/RedstoneBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/RedstoneBlock.hpp rename to LiteLoader/include/llapi/mc/RedstoneBlock.hpp index 7da1fcd..44291ef 100644 --- a/LiteLoader/Header/MC/RedstoneBlock.hpp +++ b/LiteLoader/include/llapi/mc/RedstoneBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RedstoneLampBlock.hpp b/LiteLoader/include/llapi/mc/RedstoneLampBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/RedstoneLampBlock.hpp rename to LiteLoader/include/llapi/mc/RedstoneLampBlock.hpp index 33046f4..1a4ceb0 100644 --- a/LiteLoader/Header/MC/RedstoneLampBlock.hpp +++ b/LiteLoader/include/llapi/mc/RedstoneLampBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RedstoneTorchBlock.hpp b/LiteLoader/include/llapi/mc/RedstoneTorchBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/RedstoneTorchBlock.hpp rename to LiteLoader/include/llapi/mc/RedstoneTorchBlock.hpp index 9953e01..b3422b4 100644 --- a/LiteLoader/Header/MC/RedstoneTorchBlock.hpp +++ b/LiteLoader/include/llapi/mc/RedstoneTorchBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TorchBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RedstoneTorchCapacitor.hpp b/LiteLoader/include/llapi/mc/RedstoneTorchCapacitor.hpp similarity index 98% rename from LiteLoader/Header/MC/RedstoneTorchCapacitor.hpp rename to LiteLoader/include/llapi/mc/RedstoneTorchCapacitor.hpp index 5ac63b3..d63829e 100644 --- a/LiteLoader/Header/MC/RedstoneTorchCapacitor.hpp +++ b/LiteLoader/include/llapi/mc/RedstoneTorchCapacitor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ProducerComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ReedBlock.hpp b/LiteLoader/include/llapi/mc/ReedBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ReedBlock.hpp rename to LiteLoader/include/llapi/mc/ReedBlock.hpp index 5f246db..aea6439 100644 --- a/LiteLoader/Header/MC/ReedBlock.hpp +++ b/LiteLoader/include/llapi/mc/ReedBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ReedsFeature.hpp b/LiteLoader/include/llapi/mc/ReedsFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/ReedsFeature.hpp rename to LiteLoader/include/llapi/mc/ReedsFeature.hpp index ff0f5fa..af9f807 100644 --- a/LiteLoader/Header/MC/ReedsFeature.hpp +++ b/LiteLoader/include/llapi/mc/ReedsFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RegionFile.hpp b/LiteLoader/include/llapi/mc/RegionFile.hpp similarity index 94% rename from LiteLoader/Header/MC/RegionFile.hpp rename to LiteLoader/include/llapi/mc/RegionFile.hpp index 2cdffcb..9e15986 100644 --- a/LiteLoader/Header/MC/RegionFile.hpp +++ b/LiteLoader/include/llapi/mc/RegionFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RegionHillsLayer.hpp b/LiteLoader/include/llapi/mc/RegionHillsLayer.hpp similarity index 97% rename from LiteLoader/Header/MC/RegionHillsLayer.hpp rename to LiteLoader/include/llapi/mc/RegionHillsLayer.hpp index 03aa1a9..d376a30 100644 --- a/LiteLoader/Header/MC/RegionHillsLayer.hpp +++ b/LiteLoader/include/llapi/mc/RegionHillsLayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RegistryKey.hpp b/LiteLoader/include/llapi/mc/RegistryKey.hpp similarity index 95% rename from LiteLoader/Header/MC/RegistryKey.hpp rename to LiteLoader/include/llapi/mc/RegistryKey.hpp index 63c8d02..f14f143 100644 --- a/LiteLoader/Header/MC/RegistryKey.hpp +++ b/LiteLoader/include/llapi/mc/RegistryKey.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RelativeFloat.hpp b/LiteLoader/include/llapi/mc/RelativeFloat.hpp similarity index 98% rename from LiteLoader/Header/MC/RelativeFloat.hpp rename to LiteLoader/include/llapi/mc/RelativeFloat.hpp index ec16aea..379fe6c 100644 --- a/LiteLoader/Header/MC/RelativeFloat.hpp +++ b/LiteLoader/include/llapi/mc/RelativeFloat.hpp @@ -5,7 +5,7 @@ */ #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/ReloadCommand.hpp b/LiteLoader/include/llapi/mc/ReloadCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ReloadCommand.hpp rename to LiteLoader/include/llapi/mc/ReloadCommand.hpp index 18e551a..1709a65 100644 --- a/LiteLoader/Header/MC/ReloadCommand.hpp +++ b/LiteLoader/include/llapi/mc/ReloadCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RemoveActorPacket.hpp b/LiteLoader/include/llapi/mc/RemoveActorPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/RemoveActorPacket.hpp rename to LiteLoader/include/llapi/mc/RemoveActorPacket.hpp index 70b8ee7..0e7f91e 100644 --- a/LiteLoader/Header/MC/RemoveActorPacket.hpp +++ b/LiteLoader/include/llapi/mc/RemoveActorPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RemoveEntityPacket.hpp b/LiteLoader/include/llapi/mc/RemoveEntityPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/RemoveEntityPacket.hpp rename to LiteLoader/include/llapi/mc/RemoveEntityPacket.hpp index 9b59e6c..bc286f6 100644 --- a/LiteLoader/Header/MC/RemoveEntityPacket.hpp +++ b/LiteLoader/include/llapi/mc/RemoveEntityPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RemoveObjectivePacket.hpp b/LiteLoader/include/llapi/mc/RemoveObjectivePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/RemoveObjectivePacket.hpp rename to LiteLoader/include/llapi/mc/RemoveObjectivePacket.hpp index dc4cc3e..04f61ad 100644 --- a/LiteLoader/Header/MC/RemoveObjectivePacket.hpp +++ b/LiteLoader/include/llapi/mc/RemoveObjectivePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RemoveOnHitSubcomponent.hpp b/LiteLoader/include/llapi/mc/RemoveOnHitSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/RemoveOnHitSubcomponent.hpp rename to LiteLoader/include/llapi/mc/RemoveOnHitSubcomponent.hpp index f04ee6f..00f0ac5 100644 --- a/LiteLoader/Header/MC/RemoveOnHitSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/RemoveOnHitSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RenderParams.hpp b/LiteLoader/include/llapi/mc/RenderParams.hpp similarity index 96% rename from LiteLoader/Header/MC/RenderParams.hpp rename to LiteLoader/include/llapi/mc/RenderParams.hpp index d281fe2..d9aaa65 100644 --- a/LiteLoader/Header/MC/RenderParams.hpp +++ b/LiteLoader/include/llapi/mc/RenderParams.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RepairItemRecipe.hpp b/LiteLoader/include/llapi/mc/RepairItemRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/RepairItemRecipe.hpp rename to LiteLoader/include/llapi/mc/RepairItemRecipe.hpp index e939946..f3f2121 100644 --- a/LiteLoader/Header/MC/RepairItemRecipe.hpp +++ b/LiteLoader/include/llapi/mc/RepairItemRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RepeatUntilFailureDefinition.hpp b/LiteLoader/include/llapi/mc/RepeatUntilFailureDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/RepeatUntilFailureDefinition.hpp rename to LiteLoader/include/llapi/mc/RepeatUntilFailureDefinition.hpp index cdb25ff..60d1b1c 100644 --- a/LiteLoader/Header/MC/RepeatUntilFailureDefinition.hpp +++ b/LiteLoader/include/llapi/mc/RepeatUntilFailureDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/RepeatUntilFailureNode.hpp b/LiteLoader/include/llapi/mc/RepeatUntilFailureNode.hpp similarity index 96% rename from LiteLoader/Header/MC/RepeatUntilFailureNode.hpp rename to LiteLoader/include/llapi/mc/RepeatUntilFailureNode.hpp index c3f92d8..f6dfe7b 100644 --- a/LiteLoader/Header/MC/RepeatUntilFailureNode.hpp +++ b/LiteLoader/include/llapi/mc/RepeatUntilFailureNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RepeatUntilSuccessDefinition.hpp b/LiteLoader/include/llapi/mc/RepeatUntilSuccessDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/RepeatUntilSuccessDefinition.hpp rename to LiteLoader/include/llapi/mc/RepeatUntilSuccessDefinition.hpp index 0f76c9a..8c54a86 100644 --- a/LiteLoader/Header/MC/RepeatUntilSuccessDefinition.hpp +++ b/LiteLoader/include/llapi/mc/RepeatUntilSuccessDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/RepeatUntilSuccessNode.hpp b/LiteLoader/include/llapi/mc/RepeatUntilSuccessNode.hpp similarity index 96% rename from LiteLoader/Header/MC/RepeatUntilSuccessNode.hpp rename to LiteLoader/include/llapi/mc/RepeatUntilSuccessNode.hpp index 9c6307c..6705f1f 100644 --- a/LiteLoader/Header/MC/RepeatUntilSuccessNode.hpp +++ b/LiteLoader/include/llapi/mc/RepeatUntilSuccessNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RepeaterBlock.hpp b/LiteLoader/include/llapi/mc/RepeaterBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/RepeaterBlock.hpp rename to LiteLoader/include/llapi/mc/RepeaterBlock.hpp index 0c30c12..73f1701 100644 --- a/LiteLoader/Header/MC/RepeaterBlock.hpp +++ b/LiteLoader/include/llapi/mc/RepeaterBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "DiodeBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RepeaterCapacitor.hpp b/LiteLoader/include/llapi/mc/RepeaterCapacitor.hpp similarity index 98% rename from LiteLoader/Header/MC/RepeaterCapacitor.hpp rename to LiteLoader/include/llapi/mc/RepeaterCapacitor.hpp index 3cba30b..07ad446 100644 --- a/LiteLoader/Header/MC/RepeaterCapacitor.hpp +++ b/LiteLoader/include/llapi/mc/RepeaterCapacitor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ProducerComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ReplaceItemCommand.hpp b/LiteLoader/include/llapi/mc/ReplaceItemCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ReplaceItemCommand.hpp rename to LiteLoader/include/llapi/mc/ReplaceItemCommand.hpp index ad159c9..82142ed 100644 --- a/LiteLoader/Header/MC/ReplaceItemCommand.hpp +++ b/LiteLoader/include/llapi/mc/ReplaceItemCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RequestChunkRadiusPacket.hpp b/LiteLoader/include/llapi/mc/RequestChunkRadiusPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/RequestChunkRadiusPacket.hpp rename to LiteLoader/include/llapi/mc/RequestChunkRadiusPacket.hpp index 0de51ce..625beba 100644 --- a/LiteLoader/Header/MC/RequestChunkRadiusPacket.hpp +++ b/LiteLoader/include/llapi/mc/RequestChunkRadiusPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResetEventObj.hpp b/LiteLoader/include/llapi/mc/ResetEventObj.hpp similarity index 95% rename from LiteLoader/Header/MC/ResetEventObj.hpp rename to LiteLoader/include/llapi/mc/ResetEventObj.hpp index 967c7a0..3efecb3 100644 --- a/LiteLoader/Header/MC/ResetEventObj.hpp +++ b/LiteLoader/include/llapi/mc/ResetEventObj.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceDefinition.hpp b/LiteLoader/include/llapi/mc/ResourceDefinition.hpp similarity index 90% rename from LiteLoader/Header/MC/ResourceDefinition.hpp rename to LiteLoader/include/llapi/mc/ResourceDefinition.hpp index cfca358..c1c45f4 100644 --- a/LiteLoader/Header/MC/ResourceDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ResourceDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceHelper.hpp b/LiteLoader/include/llapi/mc/ResourceHelper.hpp similarity index 92% rename from LiteLoader/Header/MC/ResourceHelper.hpp rename to LiteLoader/include/llapi/mc/ResourceHelper.hpp index ce4e94d..53c8784 100644 --- a/LiteLoader/Header/MC/ResourceHelper.hpp +++ b/LiteLoader/include/llapi/mc/ResourceHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceInformation.hpp b/LiteLoader/include/llapi/mc/ResourceInformation.hpp similarity index 96% rename from LiteLoader/Header/MC/ResourceInformation.hpp rename to LiteLoader/include/llapi/mc/ResourceInformation.hpp index ad22b51..e760ab8 100644 --- a/LiteLoader/Header/MC/ResourceInformation.hpp +++ b/LiteLoader/include/llapi/mc/ResourceInformation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceLoadManager.hpp b/LiteLoader/include/llapi/mc/ResourceLoadManager.hpp similarity index 95% rename from LiteLoader/Header/MC/ResourceLoadManager.hpp rename to LiteLoader/include/llapi/mc/ResourceLoadManager.hpp index cc49e07..d92742f 100644 --- a/LiteLoader/Header/MC/ResourceLoadManager.hpp +++ b/LiteLoader/include/llapi/mc/ResourceLoadManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceLoader.hpp b/LiteLoader/include/llapi/mc/ResourceLoader.hpp similarity index 98% rename from LiteLoader/Header/MC/ResourceLoader.hpp rename to LiteLoader/include/llapi/mc/ResourceLoader.hpp index 736839f..7ecbc3b 100644 --- a/LiteLoader/Header/MC/ResourceLoader.hpp +++ b/LiteLoader/include/llapi/mc/ResourceLoader.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceLoaders.hpp b/LiteLoader/include/llapi/mc/ResourceLoaders.hpp similarity index 95% rename from LiteLoader/Header/MC/ResourceLoaders.hpp rename to LiteLoader/include/llapi/mc/ResourceLoaders.hpp index f07201f..5658907 100644 --- a/LiteLoader/Header/MC/ResourceLoaders.hpp +++ b/LiteLoader/include/llapi/mc/ResourceLoaders.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceLocation.hpp b/LiteLoader/include/llapi/mc/ResourceLocation.hpp similarity index 96% rename from LiteLoader/Header/MC/ResourceLocation.hpp rename to LiteLoader/include/llapi/mc/ResourceLocation.hpp index 957a9d9..2c214c2 100644 --- a/LiteLoader/Header/MC/ResourceLocation.hpp +++ b/LiteLoader/include/llapi/mc/ResourceLocation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "Core.hpp" diff --git a/LiteLoader/Header/MC/ResourceMetadata.hpp b/LiteLoader/include/llapi/mc/ResourceMetadata.hpp similarity index 95% rename from LiteLoader/Header/MC/ResourceMetadata.hpp rename to LiteLoader/include/llapi/mc/ResourceMetadata.hpp index 3d95485..b4705d6 100644 --- a/LiteLoader/Header/MC/ResourceMetadata.hpp +++ b/LiteLoader/include/llapi/mc/ResourceMetadata.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePack.hpp b/LiteLoader/include/llapi/mc/ResourcePack.hpp similarity index 98% rename from LiteLoader/Header/MC/ResourcePack.hpp rename to LiteLoader/include/llapi/mc/ResourcePack.hpp index a9d4a37..e8ced89 100644 --- a/LiteLoader/Header/MC/ResourcePack.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePack.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackChunkDataPacket.hpp b/LiteLoader/include/llapi/mc/ResourcePackChunkDataPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ResourcePackChunkDataPacket.hpp rename to LiteLoader/include/llapi/mc/ResourcePackChunkDataPacket.hpp index 5509e9a..e25e4ec 100644 --- a/LiteLoader/Header/MC/ResourcePackChunkDataPacket.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackChunkDataPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackChunkRequestPacket.hpp b/LiteLoader/include/llapi/mc/ResourcePackChunkRequestPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ResourcePackChunkRequestPacket.hpp rename to LiteLoader/include/llapi/mc/ResourcePackChunkRequestPacket.hpp index fef274a..7409997 100644 --- a/LiteLoader/Header/MC/ResourcePackChunkRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackChunkRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackClientResponsePacket.hpp b/LiteLoader/include/llapi/mc/ResourcePackClientResponsePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ResourcePackClientResponsePacket.hpp rename to LiteLoader/include/llapi/mc/ResourcePackClientResponsePacket.hpp index 1dd33e7..9b2f964 100644 --- a/LiteLoader/Header/MC/ResourcePackClientResponsePacket.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackClientResponsePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackDataInfoPacket.hpp b/LiteLoader/include/llapi/mc/ResourcePackDataInfoPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ResourcePackDataInfoPacket.hpp rename to LiteLoader/include/llapi/mc/ResourcePackDataInfoPacket.hpp index b72510d..5361955 100644 --- a/LiteLoader/Header/MC/ResourcePackDataInfoPacket.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackDataInfoPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackFileUploadManager.hpp b/LiteLoader/include/llapi/mc/ResourcePackFileUploadManager.hpp similarity index 97% rename from LiteLoader/Header/MC/ResourcePackFileUploadManager.hpp rename to LiteLoader/include/llapi/mc/ResourcePackFileUploadManager.hpp index 37f64e4..5bc7374 100644 --- a/LiteLoader/Header/MC/ResourcePackFileUploadManager.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackFileUploadManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "Json.hpp" #include "FileUploadManager.hpp" diff --git a/LiteLoader/Header/MC/ResourcePackInfoData.hpp b/LiteLoader/include/llapi/mc/ResourcePackInfoData.hpp similarity index 96% rename from LiteLoader/Header/MC/ResourcePackInfoData.hpp rename to LiteLoader/include/llapi/mc/ResourcePackInfoData.hpp index 1240d9f..05cb2d4 100644 --- a/LiteLoader/Header/MC/ResourcePackInfoData.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackInfoData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackListener.hpp b/LiteLoader/include/llapi/mc/ResourcePackListener.hpp similarity index 96% rename from LiteLoader/Header/MC/ResourcePackListener.hpp rename to LiteLoader/include/llapi/mc/ResourcePackListener.hpp index 43be3ae..04bd23c 100644 --- a/LiteLoader/Header/MC/ResourcePackListener.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackManager.hpp b/LiteLoader/include/llapi/mc/ResourcePackManager.hpp similarity index 98% rename from LiteLoader/Header/MC/ResourcePackManager.hpp rename to LiteLoader/include/llapi/mc/ResourcePackManager.hpp index fbf0113..d859db0 100644 --- a/LiteLoader/Header/MC/ResourcePackManager.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackRepository.hpp b/LiteLoader/include/llapi/mc/ResourcePackRepository.hpp similarity index 96% rename from LiteLoader/Header/MC/ResourcePackRepository.hpp rename to LiteLoader/include/llapi/mc/ResourcePackRepository.hpp index 8e46e49..8039412 100644 --- a/LiteLoader/Header/MC/ResourcePackRepository.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackRepository.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA @@ -19,9 +19,9 @@ public: }; LIAPI void setCustomResourcePackPath(PackType, const std::string& path); - inline class PackSourceFactory & getPackSourceFactory(){ + inline class PackSourceFactory* getPackSourceFactory(){ //ResourcePackRepository::_initializeWorldPackSource Line62 - return dAccess(this, 46 * 8); + return dAccess(this, 46 * 8); }; #undef AFTER_EXTRA #ifndef DISABLE_CONSTRUCTOR_PREVENTION_RESOURCEPACKREPOSITORY diff --git a/LiteLoader/Header/MC/ResourcePackStack.hpp b/LiteLoader/include/llapi/mc/ResourcePackStack.hpp similarity index 98% rename from LiteLoader/Header/MC/ResourcePackStack.hpp rename to LiteLoader/include/llapi/mc/ResourcePackStack.hpp index fccbd35..1d17fcb 100644 --- a/LiteLoader/Header/MC/ResourcePackStack.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackStack.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackStackPacket.hpp b/LiteLoader/include/llapi/mc/ResourcePackStackPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ResourcePackStackPacket.hpp rename to LiteLoader/include/llapi/mc/ResourcePackStackPacket.hpp index a1d5350..8dda7c6 100644 --- a/LiteLoader/Header/MC/ResourcePackStackPacket.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackStackPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePackTransmissionManager.hpp b/LiteLoader/include/llapi/mc/ResourcePackTransmissionManager.hpp similarity index 97% rename from LiteLoader/Header/MC/ResourcePackTransmissionManager.hpp rename to LiteLoader/include/llapi/mc/ResourcePackTransmissionManager.hpp index f39e665..4a38ad4 100644 --- a/LiteLoader/Header/MC/ResourcePackTransmissionManager.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePackTransmissionManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePacksInfoPacket.hpp b/LiteLoader/include/llapi/mc/ResourcePacksInfoPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ResourcePacksInfoPacket.hpp rename to LiteLoader/include/llapi/mc/ResourcePacksInfoPacket.hpp index 13a5583..184c58d 100644 --- a/LiteLoader/Header/MC/ResourcePacksInfoPacket.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePacksInfoPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourcePath.hpp b/LiteLoader/include/llapi/mc/ResourcePath.hpp similarity index 94% rename from LiteLoader/Header/MC/ResourcePath.hpp rename to LiteLoader/include/llapi/mc/ResourcePath.hpp index c65dd36..41e8b44 100644 --- a/LiteLoader/Header/MC/ResourcePath.hpp +++ b/LiteLoader/include/llapi/mc/ResourcePath.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ResourceSignature.hpp b/LiteLoader/include/llapi/mc/ResourceSignature.hpp similarity index 97% rename from LiteLoader/Header/MC/ResourceSignature.hpp rename to LiteLoader/include/llapi/mc/ResourceSignature.hpp index 142940a..c61646b 100644 --- a/LiteLoader/Header/MC/ResourceSignature.hpp +++ b/LiteLoader/include/llapi/mc/ResourceSignature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RespawnAnchorBlock.hpp b/LiteLoader/include/llapi/mc/RespawnAnchorBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/RespawnAnchorBlock.hpp rename to LiteLoader/include/llapi/mc/RespawnAnchorBlock.hpp index abe3791..48e3a6e 100644 --- a/LiteLoader/Header/MC/RespawnAnchorBlock.hpp +++ b/LiteLoader/include/llapi/mc/RespawnAnchorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RespawnPacket.hpp b/LiteLoader/include/llapi/mc/RespawnPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/RespawnPacket.hpp rename to LiteLoader/include/llapi/mc/RespawnPacket.hpp index 8822d39..f8c7180 100644 --- a/LiteLoader/Header/MC/RespawnPacket.hpp +++ b/LiteLoader/include/llapi/mc/RespawnPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RestrictOpenDoorGoal.hpp b/LiteLoader/include/llapi/mc/RestrictOpenDoorGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RestrictOpenDoorGoal.hpp rename to LiteLoader/include/llapi/mc/RestrictOpenDoorGoal.hpp index 14e73d6..7b499f6 100644 --- a/LiteLoader/Header/MC/RestrictOpenDoorGoal.hpp +++ b/LiteLoader/include/llapi/mc/RestrictOpenDoorGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RestrictSunGoal.hpp b/LiteLoader/include/llapi/mc/RestrictSunGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RestrictSunGoal.hpp rename to LiteLoader/include/llapi/mc/RestrictSunGoal.hpp index bade7a1..b1f4bca 100644 --- a/LiteLoader/Header/MC/RestrictSunGoal.hpp +++ b/LiteLoader/include/llapi/mc/RestrictSunGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RideableComponent.hpp b/LiteLoader/include/llapi/mc/RideableComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/RideableComponent.hpp rename to LiteLoader/include/llapi/mc/RideableComponent.hpp index 4af8a29..708a430 100644 --- a/LiteLoader/Header/MC/RideableComponent.hpp +++ b/LiteLoader/include/llapi/mc/RideableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RideableDefinition.hpp b/LiteLoader/include/llapi/mc/RideableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/RideableDefinition.hpp rename to LiteLoader/include/llapi/mc/RideableDefinition.hpp index 7106551..a649505 100644 --- a/LiteLoader/Header/MC/RideableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/RideableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RiderJumpPacket.hpp b/LiteLoader/include/llapi/mc/RiderJumpPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/RiderJumpPacket.hpp rename to LiteLoader/include/llapi/mc/RiderJumpPacket.hpp index c2b4b43..079c896 100644 --- a/LiteLoader/Header/MC/RiderJumpPacket.hpp +++ b/LiteLoader/include/llapi/mc/RiderJumpPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RiseToLiquidLevelGoal.hpp b/LiteLoader/include/llapi/mc/RiseToLiquidLevelGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RiseToLiquidLevelGoal.hpp rename to LiteLoader/include/llapi/mc/RiseToLiquidLevelGoal.hpp index 5d09b78..6760417 100644 --- a/LiteLoader/Header/MC/RiseToLiquidLevelGoal.hpp +++ b/LiteLoader/include/llapi/mc/RiseToLiquidLevelGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RiverFollowingGoal.hpp b/LiteLoader/include/llapi/mc/RiverFollowingGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/RiverFollowingGoal.hpp rename to LiteLoader/include/llapi/mc/RiverFollowingGoal.hpp index ef42787..f4391da 100644 --- a/LiteLoader/Header/MC/RiverFollowingGoal.hpp +++ b/LiteLoader/include/llapi/mc/RiverFollowingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RoleChecker.hpp b/LiteLoader/include/llapi/mc/RoleChecker.hpp similarity index 95% rename from LiteLoader/Header/MC/RoleChecker.hpp rename to LiteLoader/include/llapi/mc/RoleChecker.hpp index cf23afa..a2e8279 100644 --- a/LiteLoader/Header/MC/RoleChecker.hpp +++ b/LiteLoader/include/llapi/mc/RoleChecker.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RoleCheckerCallback.hpp b/LiteLoader/include/llapi/mc/RoleCheckerCallback.hpp similarity index 95% rename from LiteLoader/Header/MC/RoleCheckerCallback.hpp rename to LiteLoader/include/llapi/mc/RoleCheckerCallback.hpp index 0aa8397..48e61fa 100644 --- a/LiteLoader/Header/MC/RoleCheckerCallback.hpp +++ b/LiteLoader/include/llapi/mc/RoleCheckerCallback.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RollGoal.hpp b/LiteLoader/include/llapi/mc/RollGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RollGoal.hpp rename to LiteLoader/include/llapi/mc/RollGoal.hpp index daa7ef8..579de44 100644 --- a/LiteLoader/Header/MC/RollGoal.hpp +++ b/LiteLoader/include/llapi/mc/RollGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RoofedTreeCanopy.hpp b/LiteLoader/include/llapi/mc/RoofedTreeCanopy.hpp similarity index 96% rename from LiteLoader/Header/MC/RoofedTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/RoofedTreeCanopy.hpp index 6d33ca4..9f20ba3 100644 --- a/LiteLoader/Header/MC/RoofedTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/RoofedTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RoomDefinition.hpp b/LiteLoader/include/llapi/mc/RoomDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/RoomDefinition.hpp rename to LiteLoader/include/llapi/mc/RoomDefinition.hpp index e0a3981..fe2f9bf 100644 --- a/LiteLoader/Header/MC/RoomDefinition.hpp +++ b/LiteLoader/include/llapi/mc/RoomDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RopeAABB.hpp b/LiteLoader/include/llapi/mc/RopeAABB.hpp similarity index 95% rename from LiteLoader/Header/MC/RopeAABB.hpp rename to LiteLoader/include/llapi/mc/RopeAABB.hpp index 555e43d..abaeabd 100644 --- a/LiteLoader/Header/MC/RopeAABB.hpp +++ b/LiteLoader/include/llapi/mc/RopeAABB.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RopePoints.hpp b/LiteLoader/include/llapi/mc/RopePoints.hpp similarity index 94% rename from LiteLoader/Header/MC/RopePoints.hpp rename to LiteLoader/include/llapi/mc/RopePoints.hpp index 21938a6..0372714 100644 --- a/LiteLoader/Header/MC/RopePoints.hpp +++ b/LiteLoader/include/llapi/mc/RopePoints.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RopeSystem.hpp b/LiteLoader/include/llapi/mc/RopeSystem.hpp similarity index 97% rename from LiteLoader/Header/MC/RopeSystem.hpp rename to LiteLoader/include/llapi/mc/RopeSystem.hpp index 4e7dcf0..04850e1 100644 --- a/LiteLoader/Header/MC/RopeSystem.hpp +++ b/LiteLoader/include/llapi/mc/RopeSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RotateState.hpp b/LiteLoader/include/llapi/mc/RotateState.hpp similarity index 96% rename from LiteLoader/Header/MC/RotateState.hpp rename to LiteLoader/include/llapi/mc/RotateState.hpp index 98ec1ab..bf41171 100644 --- a/LiteLoader/Header/MC/RotateState.hpp +++ b/LiteLoader/include/llapi/mc/RotateState.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PetSleepWithOwnerState.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RotatedPillarBlock.hpp b/LiteLoader/include/llapi/mc/RotatedPillarBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/RotatedPillarBlock.hpp rename to LiteLoader/include/llapi/mc/RotatedPillarBlock.hpp index 96ed90a..298965f 100644 --- a/LiteLoader/Header/MC/RotatedPillarBlock.hpp +++ b/LiteLoader/include/llapi/mc/RotatedPillarBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RotationDescription.hpp b/LiteLoader/include/llapi/mc/RotationDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/RotationDescription.hpp rename to LiteLoader/include/llapi/mc/RotationDescription.hpp index efe5696..c52ee8d 100644 --- a/LiteLoader/Header/MC/RotationDescription.hpp +++ b/LiteLoader/include/llapi/mc/RotationDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RotationUtil.hpp b/LiteLoader/include/llapi/mc/RotationUtil.hpp similarity index 93% rename from LiteLoader/Header/MC/RotationUtil.hpp rename to LiteLoader/include/llapi/mc/RotationUtil.hpp index 9c8e597..5166ac4 100644 --- a/LiteLoader/Header/MC/RotationUtil.hpp +++ b/LiteLoader/include/llapi/mc/RotationUtil.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RuinedPortalFeature.hpp b/LiteLoader/include/llapi/mc/RuinedPortalFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/RuinedPortalFeature.hpp rename to LiteLoader/include/llapi/mc/RuinedPortalFeature.hpp index 3b6e434..840217e 100644 --- a/LiteLoader/Header/MC/RuinedPortalFeature.hpp +++ b/LiteLoader/include/llapi/mc/RuinedPortalFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RuinedPortalPiece.hpp b/LiteLoader/include/llapi/mc/RuinedPortalPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/RuinedPortalPiece.hpp rename to LiteLoader/include/llapi/mc/RuinedPortalPiece.hpp index 6dd45b0..c124d47 100644 --- a/LiteLoader/Header/MC/RuinedPortalPiece.hpp +++ b/LiteLoader/include/llapi/mc/RuinedPortalPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RuinedPortalStart.hpp b/LiteLoader/include/llapi/mc/RuinedPortalStart.hpp similarity index 96% rename from LiteLoader/Header/MC/RuinedPortalStart.hpp rename to LiteLoader/include/llapi/mc/RuinedPortalStart.hpp index ecdbbd7..8d80805 100644 --- a/LiteLoader/Header/MC/RuinedPortalStart.hpp +++ b/LiteLoader/include/llapi/mc/RuinedPortalStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RunAroundLikeCrazyGoal.hpp b/LiteLoader/include/llapi/mc/RunAroundLikeCrazyGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/RunAroundLikeCrazyGoal.hpp rename to LiteLoader/include/llapi/mc/RunAroundLikeCrazyGoal.hpp index 982b888..96c7e7c 100644 --- a/LiteLoader/Header/MC/RunAroundLikeCrazyGoal.hpp +++ b/LiteLoader/include/llapi/mc/RunAroundLikeCrazyGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RuntimeIdentifierDescription.hpp b/LiteLoader/include/llapi/mc/RuntimeIdentifierDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/RuntimeIdentifierDescription.hpp rename to LiteLoader/include/llapi/mc/RuntimeIdentifierDescription.hpp index 03e84cd..3083228 100644 --- a/LiteLoader/Header/MC/RuntimeIdentifierDescription.hpp +++ b/LiteLoader/include/llapi/mc/RuntimeIdentifierDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/RuntimeLightingManager.hpp b/LiteLoader/include/llapi/mc/RuntimeLightingManager.hpp similarity index 97% rename from LiteLoader/Header/MC/RuntimeLightingManager.hpp rename to LiteLoader/include/llapi/mc/RuntimeLightingManager.hpp index 727fc2f..9cf8832 100644 --- a/LiteLoader/Header/MC/RuntimeLightingManager.hpp +++ b/LiteLoader/include/llapi/mc/RuntimeLightingManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHChestCorridor.hpp b/LiteLoader/include/llapi/mc/SHChestCorridor.hpp similarity index 97% rename from LiteLoader/Header/MC/SHChestCorridor.hpp rename to LiteLoader/include/llapi/mc/SHChestCorridor.hpp index 1e98c97..28bc341 100644 --- a/LiteLoader/Header/MC/SHChestCorridor.hpp +++ b/LiteLoader/include/llapi/mc/SHChestCorridor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHFillerCorridor.hpp b/LiteLoader/include/llapi/mc/SHFillerCorridor.hpp similarity index 97% rename from LiteLoader/Header/MC/SHFillerCorridor.hpp rename to LiteLoader/include/llapi/mc/SHFillerCorridor.hpp index f7d71e2..b54e4cd 100644 --- a/LiteLoader/Header/MC/SHFillerCorridor.hpp +++ b/LiteLoader/include/llapi/mc/SHFillerCorridor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHFiveCrossing.hpp b/LiteLoader/include/llapi/mc/SHFiveCrossing.hpp similarity index 97% rename from LiteLoader/Header/MC/SHFiveCrossing.hpp rename to LiteLoader/include/llapi/mc/SHFiveCrossing.hpp index 5cba3a9..4accd5e 100644 --- a/LiteLoader/Header/MC/SHFiveCrossing.hpp +++ b/LiteLoader/include/llapi/mc/SHFiveCrossing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHLeftTurn.hpp b/LiteLoader/include/llapi/mc/SHLeftTurn.hpp similarity index 97% rename from LiteLoader/Header/MC/SHLeftTurn.hpp rename to LiteLoader/include/llapi/mc/SHLeftTurn.hpp index 68f914e..253a8ef 100644 --- a/LiteLoader/Header/MC/SHLeftTurn.hpp +++ b/LiteLoader/include/llapi/mc/SHLeftTurn.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHLibrary.hpp b/LiteLoader/include/llapi/mc/SHLibrary.hpp similarity index 97% rename from LiteLoader/Header/MC/SHLibrary.hpp rename to LiteLoader/include/llapi/mc/SHLibrary.hpp index 67d5549..34d1e05 100644 --- a/LiteLoader/Header/MC/SHLibrary.hpp +++ b/LiteLoader/include/llapi/mc/SHLibrary.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHPortalRoom.hpp b/LiteLoader/include/llapi/mc/SHPortalRoom.hpp similarity index 96% rename from LiteLoader/Header/MC/SHPortalRoom.hpp rename to LiteLoader/include/llapi/mc/SHPortalRoom.hpp index 97cf2b5..b3da513 100644 --- a/LiteLoader/Header/MC/SHPortalRoom.hpp +++ b/LiteLoader/include/llapi/mc/SHPortalRoom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHPrisonHall.hpp b/LiteLoader/include/llapi/mc/SHPrisonHall.hpp similarity index 97% rename from LiteLoader/Header/MC/SHPrisonHall.hpp rename to LiteLoader/include/llapi/mc/SHPrisonHall.hpp index eb28e74..6dd958a 100644 --- a/LiteLoader/Header/MC/SHPrisonHall.hpp +++ b/LiteLoader/include/llapi/mc/SHPrisonHall.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHRightTurn.hpp b/LiteLoader/include/llapi/mc/SHRightTurn.hpp similarity index 97% rename from LiteLoader/Header/MC/SHRightTurn.hpp rename to LiteLoader/include/llapi/mc/SHRightTurn.hpp index 38f40de..87b33a4 100644 --- a/LiteLoader/Header/MC/SHRightTurn.hpp +++ b/LiteLoader/include/llapi/mc/SHRightTurn.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHRoomCrossing.hpp b/LiteLoader/include/llapi/mc/SHRoomCrossing.hpp similarity index 97% rename from LiteLoader/Header/MC/SHRoomCrossing.hpp rename to LiteLoader/include/llapi/mc/SHRoomCrossing.hpp index 5e45ad3..a97d167 100644 --- a/LiteLoader/Header/MC/SHRoomCrossing.hpp +++ b/LiteLoader/include/llapi/mc/SHRoomCrossing.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHStairsDown.hpp b/LiteLoader/include/llapi/mc/SHStairsDown.hpp similarity index 97% rename from LiteLoader/Header/MC/SHStairsDown.hpp rename to LiteLoader/include/llapi/mc/SHStairsDown.hpp index 7a77a71..45278f8 100644 --- a/LiteLoader/Header/MC/SHStairsDown.hpp +++ b/LiteLoader/include/llapi/mc/SHStairsDown.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHStartPiece.hpp b/LiteLoader/include/llapi/mc/SHStartPiece.hpp similarity index 95% rename from LiteLoader/Header/MC/SHStartPiece.hpp rename to LiteLoader/include/llapi/mc/SHStartPiece.hpp index 599f208..80bbc0b 100644 --- a/LiteLoader/Header/MC/SHStartPiece.hpp +++ b/LiteLoader/include/llapi/mc/SHStartPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SHStairsDown.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHStraight.hpp b/LiteLoader/include/llapi/mc/SHStraight.hpp similarity index 97% rename from LiteLoader/Header/MC/SHStraight.hpp rename to LiteLoader/include/llapi/mc/SHStraight.hpp index 8d15c2f..d7fa02e 100644 --- a/LiteLoader/Header/MC/SHStraight.hpp +++ b/LiteLoader/include/llapi/mc/SHStraight.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SHStraightStairsDown.hpp b/LiteLoader/include/llapi/mc/SHStraightStairsDown.hpp similarity index 97% rename from LiteLoader/Header/MC/SHStraightStairsDown.hpp rename to LiteLoader/include/llapi/mc/SHStraightStairsDown.hpp index b62cba1..f592968 100644 --- a/LiteLoader/Header/MC/SHStraightStairsDown.hpp +++ b/LiteLoader/include/llapi/mc/SHStraightStairsDown.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Salmon.hpp b/LiteLoader/include/llapi/mc/Salmon.hpp similarity index 98% rename from LiteLoader/Header/MC/Salmon.hpp rename to LiteLoader/include/llapi/mc/Salmon.hpp index 40305bd..b8792a4 100644 --- a/LiteLoader/Header/MC/Salmon.hpp +++ b/LiteLoader/include/llapi/mc/Salmon.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Fish.hpp" diff --git a/LiteLoader/Header/MC/SandBlock.hpp b/LiteLoader/include/llapi/mc/SandBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/SandBlock.hpp rename to LiteLoader/include/llapi/mc/SandBlock.hpp index 3c4d677..e5c833e 100644 --- a/LiteLoader/Header/MC/SandBlock.hpp +++ b/LiteLoader/include/llapi/mc/SandBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SandFeature.hpp b/LiteLoader/include/llapi/mc/SandFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/SandFeature.hpp rename to LiteLoader/include/llapi/mc/SandFeature.hpp index 5730204..2049da4 100644 --- a/LiteLoader/Header/MC/SandFeature.hpp +++ b/LiteLoader/include/llapi/mc/SandFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SandStoneBlock.hpp b/LiteLoader/include/llapi/mc/SandStoneBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/SandStoneBlock.hpp rename to LiteLoader/include/llapi/mc/SandStoneBlock.hpp index 7b34e21..ccbaebd 100644 --- a/LiteLoader/Header/MC/SandStoneBlock.hpp +++ b/LiteLoader/include/llapi/mc/SandStoneBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Sapling.hpp b/LiteLoader/include/llapi/mc/Sapling.hpp similarity index 99% rename from LiteLoader/Header/MC/Sapling.hpp rename to LiteLoader/include/llapi/mc/Sapling.hpp index 052aa96..19cec2b 100644 --- a/LiteLoader/Header/MC/Sapling.hpp +++ b/LiteLoader/include/llapi/mc/Sapling.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SaplingBlockItem.hpp b/LiteLoader/include/llapi/mc/SaplingBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SaplingBlockItem.hpp rename to LiteLoader/include/llapi/mc/SaplingBlockItem.hpp index 468169e..6f8d7e9 100644 --- a/LiteLoader/Header/MC/SaplingBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/SaplingBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SaveCommand.hpp b/LiteLoader/include/llapi/mc/SaveCommand.hpp similarity index 97% rename from LiteLoader/Header/MC/SaveCommand.hpp rename to LiteLoader/include/llapi/mc/SaveCommand.hpp index 8693bbf..48e2d18 100644 --- a/LiteLoader/Header/MC/SaveCommand.hpp +++ b/LiteLoader/include/llapi/mc/SaveCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SaveTransactionManager.hpp b/LiteLoader/include/llapi/mc/SaveTransactionManager.hpp similarity index 95% rename from LiteLoader/Header/MC/SaveTransactionManager.hpp rename to LiteLoader/include/llapi/mc/SaveTransactionManager.hpp index 084d21b..5553922 100644 --- a/LiteLoader/Header/MC/SaveTransactionManager.hpp +++ b/LiteLoader/include/llapi/mc/SaveTransactionManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SavedData.hpp b/LiteLoader/include/llapi/mc/SavedData.hpp similarity index 94% rename from LiteLoader/Header/MC/SavedData.hpp rename to LiteLoader/include/llapi/mc/SavedData.hpp index 9ad9a7f..516ba4c 100644 --- a/LiteLoader/Header/MC/SavedData.hpp +++ b/LiteLoader/include/llapi/mc/SavedData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SavedDataStorage.hpp b/LiteLoader/include/llapi/mc/SavedDataStorage.hpp similarity index 95% rename from LiteLoader/Header/MC/SavedDataStorage.hpp rename to LiteLoader/include/llapi/mc/SavedDataStorage.hpp index 270ec0c..57dd3ca 100644 --- a/LiteLoader/Header/MC/SavedDataStorage.hpp +++ b/LiteLoader/include/llapi/mc/SavedDataStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SayCommand.hpp b/LiteLoader/include/llapi/mc/SayCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/SayCommand.hpp rename to LiteLoader/include/llapi/mc/SayCommand.hpp index 31c1fee..db340eb 100644 --- a/LiteLoader/Header/MC/SayCommand.hpp +++ b/LiteLoader/include/llapi/mc/SayCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaffoldingBlock.hpp b/LiteLoader/include/llapi/mc/ScaffoldingBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ScaffoldingBlock.hpp rename to LiteLoader/include/llapi/mc/ScaffoldingBlock.hpp index 4e57831..624ae56 100644 --- a/LiteLoader/Header/MC/ScaffoldingBlock.hpp +++ b/LiteLoader/include/llapi/mc/ScaffoldingBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaffoldingBlockItem.hpp b/LiteLoader/include/llapi/mc/ScaffoldingBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ScaffoldingBlockItem.hpp rename to LiteLoader/include/llapi/mc/ScaffoldingBlockItem.hpp index 838373e..5be153c 100644 --- a/LiteLoader/Header/MC/ScaffoldingBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/ScaffoldingBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaffoldingClimberComponent.hpp b/LiteLoader/include/llapi/mc/ScaffoldingClimberComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScaffoldingClimberComponent.hpp rename to LiteLoader/include/llapi/mc/ScaffoldingClimberComponent.hpp index a286d6e..4387511 100644 --- a/LiteLoader/Header/MC/ScaffoldingClimberComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScaffoldingClimberComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaffoldingClimberSystem.hpp b/LiteLoader/include/llapi/mc/ScaffoldingClimberSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/ScaffoldingClimberSystem.hpp rename to LiteLoader/include/llapi/mc/ScaffoldingClimberSystem.hpp index 21ae550..2dfd239 100644 --- a/LiteLoader/Header/MC/ScaffoldingClimberSystem.hpp +++ b/LiteLoader/include/llapi/mc/ScaffoldingClimberSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaleByAgeComponent.hpp b/LiteLoader/include/llapi/mc/ScaleByAgeComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/ScaleByAgeComponent.hpp rename to LiteLoader/include/llapi/mc/ScaleByAgeComponent.hpp index 33eecc1..15c9ece 100644 --- a/LiteLoader/Header/MC/ScaleByAgeComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScaleByAgeComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaleByAgeSystem.hpp b/LiteLoader/include/llapi/mc/ScaleByAgeSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/ScaleByAgeSystem.hpp rename to LiteLoader/include/llapi/mc/ScaleByAgeSystem.hpp index 577b8ea..7bd90c0 100644 --- a/LiteLoader/Header/MC/ScaleByAgeSystem.hpp +++ b/LiteLoader/include/llapi/mc/ScaleByAgeSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaleDescription.hpp b/LiteLoader/include/llapi/mc/ScaleDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/ScaleDescription.hpp rename to LiteLoader/include/llapi/mc/ScaleDescription.hpp index 2f5895a..3fc2f15 100644 --- a/LiteLoader/Header/MC/ScaleDescription.hpp +++ b/LiteLoader/include/llapi/mc/ScaleDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScaredGoal.hpp b/LiteLoader/include/llapi/mc/ScaredGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/ScaredGoal.hpp rename to LiteLoader/include/llapi/mc/ScaredGoal.hpp index d14b3ae..38183c1 100644 --- a/LiteLoader/Header/MC/ScaredGoal.hpp +++ b/LiteLoader/include/llapi/mc/ScaredGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScatterFeature.hpp b/LiteLoader/include/llapi/mc/ScatterFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/ScatterFeature.hpp rename to LiteLoader/include/llapi/mc/ScatterFeature.hpp index 6b1f8b6..56cfc94 100644 --- a/LiteLoader/Header/MC/ScatterFeature.hpp +++ b/LiteLoader/include/llapi/mc/ScatterFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScatterParams.hpp b/LiteLoader/include/llapi/mc/ScatterParams.hpp similarity index 96% rename from LiteLoader/Header/MC/ScatterParams.hpp rename to LiteLoader/include/llapi/mc/ScatterParams.hpp index bfc6f9b..bc55305 100644 --- a/LiteLoader/Header/MC/ScatterParams.hpp +++ b/LiteLoader/include/llapi/mc/ScatterParams.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScatteredFeaturePiece.hpp b/LiteLoader/include/llapi/mc/ScatteredFeaturePiece.hpp similarity index 96% rename from LiteLoader/Header/MC/ScatteredFeaturePiece.hpp rename to LiteLoader/include/llapi/mc/ScatteredFeaturePiece.hpp index 5795f0e..491b1d2 100644 --- a/LiteLoader/Header/MC/ScatteredFeaturePiece.hpp +++ b/LiteLoader/include/llapi/mc/ScatteredFeaturePiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScatteredFeatureStart.hpp b/LiteLoader/include/llapi/mc/ScatteredFeatureStart.hpp similarity index 96% rename from LiteLoader/Header/MC/ScatteredFeatureStart.hpp rename to LiteLoader/include/llapi/mc/ScatteredFeatureStart.hpp index e9c6332..0e1d532 100644 --- a/LiteLoader/Header/MC/ScatteredFeatureStart.hpp +++ b/LiteLoader/include/llapi/mc/ScatteredFeatureStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Scheduler.hpp b/LiteLoader/include/llapi/mc/Scheduler.hpp similarity index 96% rename from LiteLoader/Header/MC/Scheduler.hpp rename to LiteLoader/include/llapi/mc/Scheduler.hpp index 476af65..3c60b7d 100644 --- a/LiteLoader/Header/MC/Scheduler.hpp +++ b/LiteLoader/include/llapi/mc/Scheduler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SchedulerDefinition.hpp b/LiteLoader/include/llapi/mc/SchedulerDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SchedulerDefinition.hpp rename to LiteLoader/include/llapi/mc/SchedulerDefinition.hpp index 12c372a..f67b1c2 100644 --- a/LiteLoader/Header/MC/SchedulerDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SchedulerDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SchedulerSystem.hpp b/LiteLoader/include/llapi/mc/SchedulerSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/SchedulerSystem.hpp rename to LiteLoader/include/llapi/mc/SchedulerSystem.hpp index d77e08c..c7ce4c3 100644 --- a/LiteLoader/Header/MC/SchedulerSystem.hpp +++ b/LiteLoader/include/llapi/mc/SchedulerSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScorePacketInfo.hpp b/LiteLoader/include/llapi/mc/ScorePacketInfo.hpp similarity index 97% rename from LiteLoader/Header/MC/ScorePacketInfo.hpp rename to LiteLoader/include/llapi/mc/ScorePacketInfo.hpp index 16a1b41..d20eab9 100644 --- a/LiteLoader/Header/MC/ScorePacketInfo.hpp +++ b/LiteLoader/include/llapi/mc/ScorePacketInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "ScoreboardId.hpp" diff --git a/LiteLoader/Header/MC/Scoreboard.hpp b/LiteLoader/include/llapi/mc/Scoreboard.hpp similarity index 99% rename from LiteLoader/Header/MC/Scoreboard.hpp rename to LiteLoader/include/llapi/mc/Scoreboard.hpp index 964465b..a81952b 100644 --- a/LiteLoader/Header/MC/Scoreboard.hpp +++ b/LiteLoader/include/llapi/mc/Scoreboard.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Add include headers & pre-declares diff --git a/LiteLoader/Header/MC/ScoreboardCommand.hpp b/LiteLoader/include/llapi/mc/ScoreboardCommand.hpp similarity index 99% rename from LiteLoader/Header/MC/ScoreboardCommand.hpp rename to LiteLoader/include/llapi/mc/ScoreboardCommand.hpp index bfbd0d5..55c56b6 100644 --- a/LiteLoader/Header/MC/ScoreboardCommand.hpp +++ b/LiteLoader/include/llapi/mc/ScoreboardCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScoreboardId.hpp b/LiteLoader/include/llapi/mc/ScoreboardId.hpp similarity index 97% rename from LiteLoader/Header/MC/ScoreboardId.hpp rename to LiteLoader/include/llapi/mc/ScoreboardId.hpp index f2c6d83..0ecb3d7 100644 --- a/LiteLoader/Header/MC/ScoreboardId.hpp +++ b/LiteLoader/include/llapi/mc/ScoreboardId.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScoreboardIdentityRef.hpp b/LiteLoader/include/llapi/mc/ScoreboardIdentityRef.hpp similarity index 97% rename from LiteLoader/Header/MC/ScoreboardIdentityRef.hpp rename to LiteLoader/include/llapi/mc/ScoreboardIdentityRef.hpp index 89dc87d..16155b9 100644 --- a/LiteLoader/Header/MC/ScoreboardIdentityRef.hpp +++ b/LiteLoader/include/llapi/mc/ScoreboardIdentityRef.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScreenCapabilitiesRepo.hpp b/LiteLoader/include/llapi/mc/ScreenCapabilitiesRepo.hpp similarity index 95% rename from LiteLoader/Header/MC/ScreenCapabilitiesRepo.hpp rename to LiteLoader/include/llapi/mc/ScreenCapabilitiesRepo.hpp index 4d3c04a..b3a5095 100644 --- a/LiteLoader/Header/MC/ScreenCapabilitiesRepo.hpp +++ b/LiteLoader/include/llapi/mc/ScreenCapabilitiesRepo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScreenHandlerBase.hpp b/LiteLoader/include/llapi/mc/ScreenHandlerBase.hpp similarity index 96% rename from LiteLoader/Header/MC/ScreenHandlerBase.hpp rename to LiteLoader/include/llapi/mc/ScreenHandlerBase.hpp index 1e346b2..9f989d6 100644 --- a/LiteLoader/Header/MC/ScreenHandlerBase.hpp +++ b/LiteLoader/include/llapi/mc/ScreenHandlerBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScreenHandlerBeacon.hpp b/LiteLoader/include/llapi/mc/ScreenHandlerBeacon.hpp similarity index 96% rename from LiteLoader/Header/MC/ScreenHandlerBeacon.hpp rename to LiteLoader/include/llapi/mc/ScreenHandlerBeacon.hpp index ef385d8..81e4958 100644 --- a/LiteLoader/Header/MC/ScreenHandlerBeacon.hpp +++ b/LiteLoader/include/llapi/mc/ScreenHandlerBeacon.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScreenHandlerLabTable.hpp b/LiteLoader/include/llapi/mc/ScreenHandlerLabTable.hpp similarity index 96% rename from LiteLoader/Header/MC/ScreenHandlerLabTable.hpp rename to LiteLoader/include/llapi/mc/ScreenHandlerLabTable.hpp index f2b13fc..b8f5a53 100644 --- a/LiteLoader/Header/MC/ScreenHandlerLabTable.hpp +++ b/LiteLoader/include/llapi/mc/ScreenHandlerLabTable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptActorAreaBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptActorAreaBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptActorAreaBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptActorAreaBinderComponent.hpp index 57037e8..7016139 100644 --- a/LiteLoader/Header/MC/ScriptActorAreaBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptActorAreaBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptActorUniqueIdBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptActorUniqueIdBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptActorUniqueIdBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptActorUniqueIdBinderComponent.hpp index 3a2bdcc..1359662 100644 --- a/LiteLoader/Header/MC/ScriptActorUniqueIdBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptActorUniqueIdBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptApi.hpp b/LiteLoader/include/llapi/mc/ScriptApi.hpp similarity index 99% rename from LiteLoader/Header/MC/ScriptApi.hpp rename to LiteLoader/include/llapi/mc/ScriptApi.hpp index bdd0d07..bc37593 100644 --- a/LiteLoader/Header/MC/ScriptApi.hpp +++ b/LiteLoader/include/llapi/mc/ScriptApi.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptArmorContainerComponent.hpp b/LiteLoader/include/llapi/mc/ScriptArmorContainerComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptArmorContainerComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptArmorContainerComponent.hpp index c52ac18..645da35 100644 --- a/LiteLoader/Header/MC/ScriptArmorContainerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptArmorContainerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptAttackComponent.hpp b/LiteLoader/include/llapi/mc/ScriptAttackComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptAttackComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptAttackComponent.hpp index 33b3194..e2e4dbc 100644 --- a/LiteLoader/Header/MC/ScriptAttackComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptAttackComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderActorTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderActorTemplate.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBinderActorTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderActorTemplate.hpp index 182abf4..e51751e 100644 --- a/LiteLoader/Header/MC/ScriptBinderActorTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderActorTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderActorTickingAreaTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderActorTickingAreaTemplate.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBinderActorTickingAreaTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderActorTickingAreaTemplate.hpp index aa0c758..f188d6b 100644 --- a/LiteLoader/Header/MC/ScriptBinderActorTickingAreaTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderActorTickingAreaTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderBlockTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderBlockTemplate.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBinderBlockTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderBlockTemplate.hpp index d340559..4d989f9 100644 --- a/LiteLoader/Header/MC/ScriptBinderBlockTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderBlockTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptBinderComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/ScriptBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderComponent.hpp index 29f7f31..304bb73 100644 --- a/LiteLoader/Header/MC/ScriptBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderComponentTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderComponentTemplate.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBinderComponentTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderComponentTemplate.hpp index bd7b77c..eb633bb 100644 --- a/LiteLoader/Header/MC/ScriptBinderComponentTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderComponentTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderEventDataTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderEventDataTemplate.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptBinderEventDataTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderEventDataTemplate.hpp index 9e7b0a2..076ba65 100644 --- a/LiteLoader/Header/MC/ScriptBinderEventDataTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderEventDataTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderItemActorTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderItemActorTemplate.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBinderItemActorTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderItemActorTemplate.hpp index 3ea2dd7..50da22c 100644 --- a/LiteLoader/Header/MC/ScriptBinderItemActorTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderItemActorTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderItemStackTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderItemStackTemplate.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptBinderItemStackTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderItemStackTemplate.hpp index 88670a3..3ce325f 100644 --- a/LiteLoader/Header/MC/ScriptBinderItemStackTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderItemStackTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderLevelTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderLevelTemplate.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptBinderLevelTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderLevelTemplate.hpp index c485553..cc796ab 100644 --- a/LiteLoader/Header/MC/ScriptBinderLevelTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderLevelTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderLevelTickingAreaTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderLevelTickingAreaTemplate.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBinderLevelTickingAreaTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderLevelTickingAreaTemplate.hpp index c5dcab3..26d90d1 100644 --- a/LiteLoader/Header/MC/ScriptBinderLevelTickingAreaTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderLevelTickingAreaTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderPureEcsTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderPureEcsTemplate.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBinderPureEcsTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderPureEcsTemplate.hpp index 728749b..80213f0 100644 --- a/LiteLoader/Header/MC/ScriptBinderPureEcsTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderPureEcsTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderQueryTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderQueryTemplate.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptBinderQueryTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderQueryTemplate.hpp index 32712c3..9bdc47f 100644 --- a/LiteLoader/Header/MC/ScriptBinderQueryTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderQueryTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderTemplate.hpp b/LiteLoader/include/llapi/mc/ScriptBinderTemplate.hpp similarity index 95% rename from LiteLoader/Header/MC/ScriptBinderTemplate.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderTemplate.hpp index 3f6dd64..636c45f 100644 --- a/LiteLoader/Header/MC/ScriptBinderTemplate.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBinderTemplateController.hpp b/LiteLoader/include/llapi/mc/ScriptBinderTemplateController.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptBinderTemplateController.hpp rename to LiteLoader/include/llapi/mc/ScriptBinderTemplateController.hpp index 1aab3ff..c8f5a17 100644 --- a/LiteLoader/Header/MC/ScriptBinderTemplateController.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBinderTemplateController.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBlockContainerComponent.hpp b/LiteLoader/include/llapi/mc/ScriptBlockContainerComponent.hpp similarity index 99% rename from LiteLoader/Header/MC/ScriptBlockContainerComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptBlockContainerComponent.hpp index 6f84810..540ca88 100644 --- a/LiteLoader/Header/MC/ScriptBlockContainerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBlockContainerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBlockPositionBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptBlockPositionBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptBlockPositionBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptBlockPositionBinderComponent.hpp index 57857e0..2c69ed6 100644 --- a/LiteLoader/Header/MC/ScriptBlockPositionBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBlockPositionBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptBlockStateComponent.hpp b/LiteLoader/include/llapi/mc/ScriptBlockStateComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptBlockStateComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptBlockStateComponent.hpp index 12229d0..8bc885b 100644 --- a/LiteLoader/Header/MC/ScriptBlockStateComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptBlockStateComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptCollisionBoxComponent.hpp b/LiteLoader/include/llapi/mc/ScriptCollisionBoxComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptCollisionBoxComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptCollisionBoxComponent.hpp index b3bce05..13933b8 100644 --- a/LiteLoader/Header/MC/ScriptCollisionBoxComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptCollisionBoxComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptCommand.hpp b/LiteLoader/include/llapi/mc/ScriptCommand.hpp similarity index 94% rename from LiteLoader/Header/MC/ScriptCommand.hpp rename to LiteLoader/include/llapi/mc/ScriptCommand.hpp index 8fdbaa9..23fd785 100644 --- a/LiteLoader/Header/MC/ScriptCommand.hpp +++ b/LiteLoader/include/llapi/mc/ScriptCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptCommandCallbackData.hpp b/LiteLoader/include/llapi/mc/ScriptCommandCallbackData.hpp similarity index 95% rename from LiteLoader/Header/MC/ScriptCommandCallbackData.hpp rename to LiteLoader/include/llapi/mc/ScriptCommandCallbackData.hpp index 28bc578..89037e7 100644 --- a/LiteLoader/Header/MC/ScriptCommandCallbackData.hpp +++ b/LiteLoader/include/llapi/mc/ScriptCommandCallbackData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptCommandFactory.hpp b/LiteLoader/include/llapi/mc/ScriptCommandFactory.hpp similarity index 95% rename from LiteLoader/Header/MC/ScriptCommandFactory.hpp rename to LiteLoader/include/llapi/mc/ScriptCommandFactory.hpp index 2655b2a..cd1304f 100644 --- a/LiteLoader/Header/MC/ScriptCommandFactory.hpp +++ b/LiteLoader/include/llapi/mc/ScriptCommandFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptCommandOrigin.hpp b/LiteLoader/include/llapi/mc/ScriptCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/ScriptCommandOrigin.hpp index a385ef0..6227d15 100644 --- a/LiteLoader/Header/MC/ScriptCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/ScriptCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/ScriptComponentBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptComponentBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptComponentBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptComponentBinderComponent.hpp index c34a571..507fec7 100644 --- a/LiteLoader/Header/MC/ScriptComponentBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptComponentBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptCustomEventPacket.hpp b/LiteLoader/include/llapi/mc/ScriptCustomEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptCustomEventPacket.hpp rename to LiteLoader/include/llapi/mc/ScriptCustomEventPacket.hpp index 488b8e3..d07a207 100644 --- a/LiteLoader/Header/MC/ScriptCustomEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/ScriptCustomEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptDamageSensorComponent.hpp b/LiteLoader/include/llapi/mc/ScriptDamageSensorComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptDamageSensorComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptDamageSensorComponent.hpp index 94ef5de..c71e389 100644 --- a/LiteLoader/Header/MC/ScriptDamageSensorComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptDamageSensorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptDimensionBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptDimensionBinderComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptDimensionBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptDimensionBinderComponent.hpp index 994e79c..f0f75b8 100644 --- a/LiteLoader/Header/MC/ScriptDimensionBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptDimensionBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptEcsBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptEcsBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptEcsBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptEcsBinderComponent.hpp index 483f3dc..8ca3124 100644 --- a/LiteLoader/Header/MC/ScriptEcsBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEcsBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptEngine.hpp b/LiteLoader/include/llapi/mc/ScriptEngine.hpp similarity index 99% rename from LiteLoader/Header/MC/ScriptEngine.hpp rename to LiteLoader/include/llapi/mc/ScriptEngine.hpp index 18379a6..b27bca8 100644 --- a/LiteLoader/Header/MC/ScriptEngine.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEngine.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/ScriptEquipmentComponent.hpp b/LiteLoader/include/llapi/mc/ScriptEquipmentComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptEquipmentComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptEquipmentComponent.hpp index 5743438..faf5c94 100644 --- a/LiteLoader/Header/MC/ScriptEquipmentComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEquipmentComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptEquippableComponent.hpp b/LiteLoader/include/llapi/mc/ScriptEquippableComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptEquippableComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptEquippableComponent.hpp index 04f2e6b..de4839f 100644 --- a/LiteLoader/Header/MC/ScriptEquippableComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEquippableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptEventCoordinator.hpp b/LiteLoader/include/llapi/mc/ScriptEventCoordinator.hpp similarity index 95% rename from LiteLoader/Header/MC/ScriptEventCoordinator.hpp rename to LiteLoader/include/llapi/mc/ScriptEventCoordinator.hpp index 98dde30..9239467 100644 --- a/LiteLoader/Header/MC/ScriptEventCoordinator.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEventCoordinator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptEventData.hpp b/LiteLoader/include/llapi/mc/ScriptEventData.hpp similarity index 94% rename from LiteLoader/Header/MC/ScriptEventData.hpp rename to LiteLoader/include/llapi/mc/ScriptEventData.hpp index 10f35dd..ddd68a3 100644 --- a/LiteLoader/Header/MC/ScriptEventData.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEventData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptEventDataBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptEventDataBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptEventDataBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptEventDataBinderComponent.hpp index f4e4a54..b3f9fc6 100644 --- a/LiteLoader/Header/MC/ScriptEventDataBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEventDataBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptEventListener.hpp b/LiteLoader/include/llapi/mc/ScriptEventListener.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptEventListener.hpp rename to LiteLoader/include/llapi/mc/ScriptEventListener.hpp index c9e23c4..47c677c 100644 --- a/LiteLoader/Header/MC/ScriptEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ScriptEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptExplodeComponent.hpp b/LiteLoader/include/llapi/mc/ScriptExplodeComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptExplodeComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptExplodeComponent.hpp index 07b09de..488160f 100644 --- a/LiteLoader/Header/MC/ScriptExplodeComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptExplodeComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptHandContainerComponent.hpp b/LiteLoader/include/llapi/mc/ScriptHandContainerComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptHandContainerComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptHandContainerComponent.hpp index aa8bf61..55597a9 100644 --- a/LiteLoader/Header/MC/ScriptHandContainerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptHandContainerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptHealableComponent.hpp b/LiteLoader/include/llapi/mc/ScriptHealableComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptHealableComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptHealableComponent.hpp index bb820ac..90cd136 100644 --- a/LiteLoader/Header/MC/ScriptHealableComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptHealableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptHealthComponent.hpp b/LiteLoader/include/llapi/mc/ScriptHealthComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptHealthComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptHealthComponent.hpp index c590180..e6ef163 100644 --- a/LiteLoader/Header/MC/ScriptHealthComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptHealthComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptHotbarContainerComponent.hpp b/LiteLoader/include/llapi/mc/ScriptHotbarContainerComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptHotbarContainerComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptHotbarContainerComponent.hpp index d4c3298..b81c52e 100644 --- a/LiteLoader/Header/MC/ScriptHotbarContainerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptHotbarContainerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptIdentifierBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptIdentifierBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptIdentifierBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptIdentifierBinderComponent.hpp index 9802870..7470cd1 100644 --- a/LiteLoader/Header/MC/ScriptIdentifierBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptIdentifierBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptInteractComponent.hpp b/LiteLoader/include/llapi/mc/ScriptInteractComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptInteractComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptInteractComponent.hpp index 3007f11..395e7dd 100644 --- a/LiteLoader/Header/MC/ScriptInteractComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptInteractComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptInventoryComponent.hpp b/LiteLoader/include/llapi/mc/ScriptInventoryComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptInventoryComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptInventoryComponent.hpp index 36bf21f..fc11c90 100644 --- a/LiteLoader/Header/MC/ScriptInventoryComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptInventoryComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptInventoryContainerComponent.hpp b/LiteLoader/include/llapi/mc/ScriptInventoryContainerComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptInventoryContainerComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptInventoryContainerComponent.hpp index b2b2467..178c766 100644 --- a/LiteLoader/Header/MC/ScriptInventoryContainerComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptInventoryContainerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptItemStackBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptItemStackBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptItemStackBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptItemStackBinderComponent.hpp index f872eae..2376987 100644 --- a/LiteLoader/Header/MC/ScriptItemStackBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptItemStackBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptLevelAreaBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptLevelAreaBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptLevelAreaBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptLevelAreaBinderComponent.hpp index b7433bb..81af838 100644 --- a/LiteLoader/Header/MC/ScriptLevelAreaBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptLevelAreaBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptLevelBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptLevelBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptLevelBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptLevelBinderComponent.hpp index 7da5e8d..fa21315 100644 --- a/LiteLoader/Header/MC/ScriptLevelBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptLevelBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptLevelTickingAreasComponent.hpp b/LiteLoader/include/llapi/mc/ScriptLevelTickingAreasComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptLevelTickingAreasComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptLevelTickingAreasComponent.hpp index 2f5b7f0..3f71dd4 100644 --- a/LiteLoader/Header/MC/ScriptLevelTickingAreasComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptLevelTickingAreasComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #include "ScriptBlockContainerComponent.hpp" diff --git a/LiteLoader/Header/MC/ScriptLevelWeatherComponent.hpp b/LiteLoader/include/llapi/mc/ScriptLevelWeatherComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptLevelWeatherComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptLevelWeatherComponent.hpp index 7ca2dbe..3cc2266 100644 --- a/LiteLoader/Header/MC/ScriptLevelWeatherComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptLevelWeatherComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #include "ScriptBlockContainerComponent.hpp" diff --git a/LiteLoader/Header/MC/ScriptLevelWeatherEventListener.hpp b/LiteLoader/include/llapi/mc/ScriptLevelWeatherEventListener.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptLevelWeatherEventListener.hpp rename to LiteLoader/include/llapi/mc/ScriptLevelWeatherEventListener.hpp index 264f95e..ff5105a 100644 --- a/LiteLoader/Header/MC/ScriptLevelWeatherEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ScriptLevelWeatherEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptLookAtComponent.hpp b/LiteLoader/include/llapi/mc/ScriptLookAtComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptLookAtComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptLookAtComponent.hpp index b2cf503..42e5a05 100644 --- a/LiteLoader/Header/MC/ScriptLookAtComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptLookAtComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptNameableComponent.hpp b/LiteLoader/include/llapi/mc/ScriptNameableComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptNameableComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptNameableComponent.hpp index bad9058..ef9d1f2 100644 --- a/LiteLoader/Header/MC/ScriptNameableComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptNameableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptObjectBinder.hpp b/LiteLoader/include/llapi/mc/ScriptObjectBinder.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptObjectBinder.hpp rename to LiteLoader/include/llapi/mc/ScriptObjectBinder.hpp index 475dc7c..7b3b395 100644 --- a/LiteLoader/Header/MC/ScriptObjectBinder.hpp +++ b/LiteLoader/include/llapi/mc/ScriptObjectBinder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptPositionComponent.hpp b/LiteLoader/include/llapi/mc/ScriptPositionComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptPositionComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptPositionComponent.hpp index 4e63d96..d59947e 100644 --- a/LiteLoader/Header/MC/ScriptPositionComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptPositionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptQueries.hpp b/LiteLoader/include/llapi/mc/ScriptQueries.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptQueries.hpp rename to LiteLoader/include/llapi/mc/ScriptQueries.hpp index b9e61db..9b9a7b3 100644 --- a/LiteLoader/Header/MC/ScriptQueries.hpp +++ b/LiteLoader/include/llapi/mc/ScriptQueries.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptQueryBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptQueryBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptQueryBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptQueryBinderComponent.hpp index a5aa998..961aa70 100644 --- a/LiteLoader/Header/MC/ScriptQueryBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptQueryBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptQueryComponent.hpp b/LiteLoader/include/llapi/mc/ScriptQueryComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/ScriptQueryComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptQueryComponent.hpp index 6d3bd38..f2931ef 100644 --- a/LiteLoader/Header/MC/ScriptQueryComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptQueryComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptRotationComponent.hpp b/LiteLoader/include/llapi/mc/ScriptRotationComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptRotationComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptRotationComponent.hpp index 0955825..d1f1992 100644 --- a/LiteLoader/Header/MC/ScriptRotationComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptRotationComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorAcquiredItemEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorAcquiredItemEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorAcquiredItemEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorAcquiredItemEvent.hpp index d66d179..bd4b94d 100644 --- a/LiteLoader/Header/MC/ScriptServerActorAcquiredItemEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorAcquiredItemEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorAttackEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorAttackEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorAttackEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorAttackEvent.hpp index 2e563b9..255cdbb 100644 --- a/LiteLoader/Header/MC/ScriptServerActorAttackEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorAttackEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorCarriedItemChangedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorCarriedItemChangedEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerActorCarriedItemChangedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorCarriedItemChangedEvent.hpp index c96e878..659632a 100644 --- a/LiteLoader/Header/MC/ScriptServerActorCarriedItemChangedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorCarriedItemChangedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorCreatedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorCreatedEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorCreatedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorCreatedEvent.hpp index db4f98e..e565f85 100644 --- a/LiteLoader/Header/MC/ScriptServerActorCreatedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorCreatedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorDeathEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorDeathEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorDeathEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorDeathEvent.hpp index b82b7f8..42da50b 100644 --- a/LiteLoader/Header/MC/ScriptServerActorDeathEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorDeathEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorDefinitionEventTriggeredEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorDefinitionEventTriggeredEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerActorDefinitionEventTriggeredEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorDefinitionEventTriggeredEvent.hpp index e2a119f..364e95e 100644 --- a/LiteLoader/Header/MC/ScriptServerActorDefinitionEventTriggeredEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorDefinitionEventTriggeredEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorDroppedItemEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorDroppedItemEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorDroppedItemEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorDroppedItemEvent.hpp index d6b726a..1f087ff 100644 --- a/LiteLoader/Header/MC/ScriptServerActorDroppedItemEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorDroppedItemEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorEquippedArmorEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorEquippedArmorEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorEquippedArmorEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorEquippedArmorEvent.hpp index 5a71e31..d2b52bf 100644 --- a/LiteLoader/Header/MC/ScriptServerActorEquippedArmorEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorEquippedArmorEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorEventListener.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorEventListener.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptServerActorEventListener.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorEventListener.hpp index 587a091..e534745 100644 --- a/LiteLoader/Header/MC/ScriptServerActorEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorHurtEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorHurtEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorHurtEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorHurtEvent.hpp index 4e14df3..ed19683 100644 --- a/LiteLoader/Header/MC/ScriptServerActorHurtEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorHurtEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorMoveEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorMoveEvent.hpp similarity index 95% rename from LiteLoader/Header/MC/ScriptServerActorMoveEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorMoveEvent.hpp index 847c7fe..c1a532d 100644 --- a/LiteLoader/Header/MC/ScriptServerActorMoveEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorMoveEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorRemovedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorRemovedEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorRemovedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorRemovedEvent.hpp index 8b63cc1..0564619 100644 --- a/LiteLoader/Header/MC/ScriptServerActorRemovedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorRemovedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorSneakChangedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorSneakChangedEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorSneakChangedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorSneakChangedEvent.hpp index c417bf4..f880eaa 100644 --- a/LiteLoader/Header/MC/ScriptServerActorSneakChangedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorSneakChangedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorStartRidingEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorStartRidingEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorStartRidingEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorStartRidingEvent.hpp index 8dff94d..2b6e249 100644 --- a/LiteLoader/Header/MC/ScriptServerActorStartRidingEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorStartRidingEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorStopRidingEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorStopRidingEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorStopRidingEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorStopRidingEvent.hpp index aba0cf0..d0f8201 100644 --- a/LiteLoader/Header/MC/ScriptServerActorStopRidingEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorStopRidingEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorTickEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorTickEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorTickEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorTickEvent.hpp index 01b79b4..98ca1d1 100644 --- a/LiteLoader/Header/MC/ScriptServerActorTickEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorTickEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerActorUseItemEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerActorUseItemEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerActorUseItemEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerActorUseItemEvent.hpp index c44390c..d118ff2 100644 --- a/LiteLoader/Header/MC/ScriptServerActorUseItemEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerActorUseItemEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBlockDestructionStartedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerBlockDestructionStartedEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerBlockDestructionStartedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBlockDestructionStartedEvent.hpp index 3e36820..aafdc28 100644 --- a/LiteLoader/Header/MC/ScriptServerBlockDestructionStartedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBlockDestructionStartedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBlockDestructionStoppedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerBlockDestructionStoppedEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerBlockDestructionStoppedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBlockDestructionStoppedEvent.hpp index f400c45..a4d6a32 100644 --- a/LiteLoader/Header/MC/ScriptServerBlockDestructionStoppedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBlockDestructionStoppedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBlockEventListener.hpp b/LiteLoader/include/llapi/mc/ScriptServerBlockEventListener.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptServerBlockEventListener.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBlockEventListener.hpp index e87deb9..d87df81 100644 --- a/LiteLoader/Header/MC/ScriptServerBlockEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBlockEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PistonBlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBlockExplodedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerBlockExplodedEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerBlockExplodedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBlockExplodedEvent.hpp index f0453a0..b91a388 100644 --- a/LiteLoader/Header/MC/ScriptServerBlockExplodedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBlockExplodedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBlockInteractedWithEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerBlockInteractedWithEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerBlockInteractedWithEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBlockInteractedWithEvent.hpp index 798f9b1..1dca965 100644 --- a/LiteLoader/Header/MC/ScriptServerBlockInteractedWithEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBlockInteractedWithEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBlockMovedByPistonEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerBlockMovedByPistonEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerBlockMovedByPistonEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBlockMovedByPistonEvent.hpp index f86f9f8..40ed1f4 100644 --- a/LiteLoader/Header/MC/ScriptServerBlockMovedByPistonEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBlockMovedByPistonEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBroadcastActorDefinitionEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerBroadcastActorDefinitionEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerBroadcastActorDefinitionEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBroadcastActorDefinitionEvent.hpp index ff20cc6..ed939e4 100644 --- a/LiteLoader/Header/MC/ScriptServerBroadcastActorDefinitionEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBroadcastActorDefinitionEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerBroadcastReceived.hpp b/LiteLoader/include/llapi/mc/ScriptServerBroadcastReceived.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerBroadcastReceived.hpp rename to LiteLoader/include/llapi/mc/ScriptServerBroadcastReceived.hpp index e7132c3..937d744 100644 --- a/LiteLoader/Header/MC/ScriptServerBroadcastReceived.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerBroadcastReceived.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerChatReceived.hpp b/LiteLoader/include/llapi/mc/ScriptServerChatReceived.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerChatReceived.hpp rename to LiteLoader/include/llapi/mc/ScriptServerChatReceived.hpp index ff2f2e3..29d576f 100644 --- a/LiteLoader/Header/MC/ScriptServerChatReceived.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerChatReceived.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerCommandReceived.hpp b/LiteLoader/include/llapi/mc/ScriptServerCommandReceived.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerCommandReceived.hpp rename to LiteLoader/include/llapi/mc/ScriptServerCommandReceived.hpp index 50ae974..35629e0 100644 --- a/LiteLoader/Header/MC/ScriptServerCommandReceived.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerCommandReceived.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerLevelEventListener.hpp b/LiteLoader/include/llapi/mc/ScriptServerLevelEventListener.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerLevelEventListener.hpp rename to LiteLoader/include/llapi/mc/ScriptServerLevelEventListener.hpp index a799abb..3616490 100644 --- a/LiteLoader/Header/MC/ScriptServerLevelEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerLevelEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerLoggerConfigReceivedEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerLoggerConfigReceivedEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerLoggerConfigReceivedEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerLoggerConfigReceivedEvent.hpp index b9bfb6f..ef94f3b 100644 --- a/LiteLoader/Header/MC/ScriptServerLoggerConfigReceivedEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerLoggerConfigReceivedEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerPacketEventListener.hpp b/LiteLoader/include/llapi/mc/ScriptServerPacketEventListener.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerPacketEventListener.hpp rename to LiteLoader/include/llapi/mc/ScriptServerPacketEventListener.hpp index 611e755..ca75f0b 100644 --- a/LiteLoader/Header/MC/ScriptServerPacketEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerPacketEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerPlaySoundEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerPlaySoundEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerPlaySoundEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerPlaySoundEvent.hpp index 21a8a31..90bd509 100644 --- a/LiteLoader/Header/MC/ScriptServerPlaySoundEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerPlaySoundEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerPlayerAttackedActorEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerPlayerAttackedActorEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerPlayerAttackedActorEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerPlayerAttackedActorEvent.hpp index bdcd731..afde787 100644 --- a/LiteLoader/Header/MC/ScriptServerPlayerAttackedActorEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerPlayerAttackedActorEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerPlayerDestroyedBlockEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerPlayerDestroyedBlockEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerPlayerDestroyedBlockEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerPlayerDestroyedBlockEvent.hpp index cb27da7..a3ad29c 100644 --- a/LiteLoader/Header/MC/ScriptServerPlayerDestroyedBlockEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerPlayerDestroyedBlockEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerPlayerPlacedBlockEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerPlayerPlacedBlockEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerPlayerPlacedBlockEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerPlayerPlacedBlockEvent.hpp index 87d5bc9..2755eb8 100644 --- a/LiteLoader/Header/MC/ScriptServerPlayerPlacedBlockEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerPlayerPlacedBlockEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerProjectileHitEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerProjectileHitEvent.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerProjectileHitEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerProjectileHitEvent.hpp index cd405ed..a54ae1f 100644 --- a/LiteLoader/Header/MC/ScriptServerProjectileHitEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerProjectileHitEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerSpawnParticleAttachedToActor.hpp b/LiteLoader/include/llapi/mc/ScriptServerSpawnParticleAttachedToActor.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerSpawnParticleAttachedToActor.hpp rename to LiteLoader/include/llapi/mc/ScriptServerSpawnParticleAttachedToActor.hpp index 21f5192..1e02a5f 100644 --- a/LiteLoader/Header/MC/ScriptServerSpawnParticleAttachedToActor.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerSpawnParticleAttachedToActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerSpawnParticleInWorldEvent.hpp b/LiteLoader/include/llapi/mc/ScriptServerSpawnParticleInWorldEvent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptServerSpawnParticleInWorldEvent.hpp rename to LiteLoader/include/llapi/mc/ScriptServerSpawnParticleInWorldEvent.hpp index 94c113b..0404a23 100644 --- a/LiteLoader/Header/MC/ScriptServerSpawnParticleInWorldEvent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerSpawnParticleInWorldEvent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptServerWeatherEventData.hpp b/LiteLoader/include/llapi/mc/ScriptServerWeatherEventData.hpp similarity index 96% rename from LiteLoader/Header/MC/ScriptServerWeatherEventData.hpp rename to LiteLoader/include/llapi/mc/ScriptServerWeatherEventData.hpp index ae1ebdc..fd7f4df 100644 --- a/LiteLoader/Header/MC/ScriptServerWeatherEventData.hpp +++ b/LiteLoader/include/llapi/mc/ScriptServerWeatherEventData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptShooterComponent.hpp b/LiteLoader/include/llapi/mc/ScriptShooterComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptShooterComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptShooterComponent.hpp index 12c6996..de1e7cf 100644 --- a/LiteLoader/Header/MC/ScriptShooterComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptShooterComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptSpawnActorComponent.hpp b/LiteLoader/include/llapi/mc/ScriptSpawnActorComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptSpawnActorComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptSpawnActorComponent.hpp index cb0cc4e..e7d63f6 100644 --- a/LiteLoader/Header/MC/ScriptSpawnActorComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptSpawnActorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptTagComponent.hpp b/LiteLoader/include/llapi/mc/ScriptTagComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptTagComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptTagComponent.hpp index c22e9d7..c9084c6 100644 --- a/LiteLoader/Header/MC/ScriptTagComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptTagComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptTelemetryEventListener.hpp b/LiteLoader/include/llapi/mc/ScriptTelemetryEventListener.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptTelemetryEventListener.hpp rename to LiteLoader/include/llapi/mc/ScriptTelemetryEventListener.hpp index abadcd0..c5d3679 100644 --- a/LiteLoader/Header/MC/ScriptTelemetryEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ScriptTelemetryEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptTeleportComponent.hpp b/LiteLoader/include/llapi/mc/ScriptTeleportComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptTeleportComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptTeleportComponent.hpp index d80df11..1d2fba1 100644 --- a/LiteLoader/Header/MC/ScriptTeleportComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptTeleportComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptTickWorldComponent.hpp b/LiteLoader/include/llapi/mc/ScriptTickWorldComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptTickWorldComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptTickWorldComponent.hpp index 0f6f0a0..79d7514 100644 --- a/LiteLoader/Header/MC/ScriptTickWorldComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptTickWorldComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptTickingAreaBinderComponent.hpp b/LiteLoader/include/llapi/mc/ScriptTickingAreaBinderComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ScriptTickingAreaBinderComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptTickingAreaBinderComponent.hpp index 6264561..a99f6d9 100644 --- a/LiteLoader/Header/MC/ScriptTickingAreaBinderComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptTickingAreaBinderComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ScriptTickingAreaDescriptionComponent.hpp b/LiteLoader/include/llapi/mc/ScriptTickingAreaDescriptionComponent.hpp similarity index 98% rename from LiteLoader/Header/MC/ScriptTickingAreaDescriptionComponent.hpp rename to LiteLoader/include/llapi/mc/ScriptTickingAreaDescriptionComponent.hpp index a516901..217c54d 100644 --- a/LiteLoader/Header/MC/ScriptTickingAreaDescriptionComponent.hpp +++ b/LiteLoader/include/llapi/mc/ScriptTickingAreaDescriptionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ScriptApi.hpp" #include "ScriptBlockContainerComponent.hpp" diff --git a/LiteLoader/Header/MC/SeaAnemoneFeature.hpp b/LiteLoader/include/llapi/mc/SeaAnemoneFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/SeaAnemoneFeature.hpp rename to LiteLoader/include/llapi/mc/SeaAnemoneFeature.hpp index c681ea0..8ebb5c0 100644 --- a/LiteLoader/Header/MC/SeaAnemoneFeature.hpp +++ b/LiteLoader/include/llapi/mc/SeaAnemoneFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeaGrass.hpp b/LiteLoader/include/llapi/mc/SeaGrass.hpp similarity index 99% rename from LiteLoader/Header/MC/SeaGrass.hpp rename to LiteLoader/include/llapi/mc/SeaGrass.hpp index 7391428..263c91d 100644 --- a/LiteLoader/Header/MC/SeaGrass.hpp +++ b/LiteLoader/include/llapi/mc/SeaGrass.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeaLanternBlock.hpp b/LiteLoader/include/llapi/mc/SeaLanternBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/SeaLanternBlock.hpp rename to LiteLoader/include/llapi/mc/SeaLanternBlock.hpp index bafbdc8..28af5a5 100644 --- a/LiteLoader/Header/MC/SeaLanternBlock.hpp +++ b/LiteLoader/include/llapi/mc/SeaLanternBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeaPickle.hpp b/LiteLoader/include/llapi/mc/SeaPickle.hpp similarity index 99% rename from LiteLoader/Header/MC/SeaPickle.hpp rename to LiteLoader/include/llapi/mc/SeaPickle.hpp index 2ec2afb..bcef494 100644 --- a/LiteLoader/Header/MC/SeaPickle.hpp +++ b/LiteLoader/include/llapi/mc/SeaPickle.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeaPickleBlockItem.hpp b/LiteLoader/include/llapi/mc/SeaPickleBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SeaPickleBlockItem.hpp rename to LiteLoader/include/llapi/mc/SeaPickleBlockItem.hpp index 1e8b4e8..459cebc 100644 --- a/LiteLoader/Header/MC/SeaPickleBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/SeaPickleBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeaPickleFeature.hpp b/LiteLoader/include/llapi/mc/SeaPickleFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/SeaPickleFeature.hpp rename to LiteLoader/include/llapi/mc/SeaPickleFeature.hpp index 25b2bde..fc67376 100644 --- a/LiteLoader/Header/MC/SeaPickleFeature.hpp +++ b/LiteLoader/include/llapi/mc/SeaPickleFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeagrassFeature.hpp b/LiteLoader/include/llapi/mc/SeagrassFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/SeagrassFeature.hpp rename to LiteLoader/include/llapi/mc/SeagrassFeature.hpp index 63a4d5a..1ac7798 100644 --- a/LiteLoader/Header/MC/SeagrassFeature.hpp +++ b/LiteLoader/include/llapi/mc/SeagrassFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SearchFeature.hpp b/LiteLoader/include/llapi/mc/SearchFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/SearchFeature.hpp rename to LiteLoader/include/llapi/mc/SearchFeature.hpp index f692749..b574dfe 100644 --- a/LiteLoader/Header/MC/SearchFeature.hpp +++ b/LiteLoader/include/llapi/mc/SearchFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Seasons.hpp b/LiteLoader/include/llapi/mc/Seasons.hpp similarity index 95% rename from LiteLoader/Header/MC/Seasons.hpp rename to LiteLoader/include/llapi/mc/Seasons.hpp index 0a78021..f667257 100644 --- a/LiteLoader/Header/MC/Seasons.hpp +++ b/LiteLoader/include/llapi/mc/Seasons.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeatDescription.hpp b/LiteLoader/include/llapi/mc/SeatDescription.hpp similarity index 95% rename from LiteLoader/Header/MC/SeatDescription.hpp rename to LiteLoader/include/llapi/mc/SeatDescription.hpp index c8b06b9..1461dad 100644 --- a/LiteLoader/Header/MC/SeatDescription.hpp +++ b/LiteLoader/include/llapi/mc/SeatDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SecureStorage.hpp b/LiteLoader/include/llapi/mc/SecureStorage.hpp similarity index 94% rename from LiteLoader/Header/MC/SecureStorage.hpp rename to LiteLoader/include/llapi/mc/SecureStorage.hpp index 7b9214a..d5121a6 100644 --- a/LiteLoader/Header/MC/SecureStorage.hpp +++ b/LiteLoader/include/llapi/mc/SecureStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SeedItemComponent.hpp b/LiteLoader/include/llapi/mc/SeedItemComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/SeedItemComponent.hpp rename to LiteLoader/include/llapi/mc/SeedItemComponent.hpp index fa33254..b6dc04c 100644 --- a/LiteLoader/Header/MC/SeedItemComponent.hpp +++ b/LiteLoader/include/llapi/mc/SeedItemComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SelectorBehaviorNode.hpp b/LiteLoader/include/llapi/mc/SelectorBehaviorNode.hpp similarity index 96% rename from LiteLoader/Header/MC/SelectorBehaviorNode.hpp rename to LiteLoader/include/llapi/mc/SelectorBehaviorNode.hpp index 5f16064..855513d 100644 --- a/LiteLoader/Header/MC/SelectorBehaviorNode.hpp +++ b/LiteLoader/include/llapi/mc/SelectorBehaviorNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SelectorDefinition.hpp b/LiteLoader/include/llapi/mc/SelectorDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SelectorDefinition.hpp rename to LiteLoader/include/llapi/mc/SelectorDefinition.hpp index 055f589..819b55e 100644 --- a/LiteLoader/Header/MC/SelectorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SelectorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/SemVersion.hpp b/LiteLoader/include/llapi/mc/SemVersion.hpp similarity index 67% rename from LiteLoader/Header/MC/SemVersion.hpp rename to LiteLoader/include/llapi/mc/SemVersion.hpp index 2ec2d68..d18421d 100644 --- a/LiteLoader/Header/MC/SemVersion.hpp +++ b/LiteLoader/include/llapi/mc/SemVersion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA @@ -10,10 +10,33 @@ class SemVersion { + struct any_version_constructor { + char gap0; + }; + enum MatchType : char + { + Full = 0x0, + Partial = 0x1, + None_4 = 0x2, + }; + enum ParseOption : int + { + AllowAnyVersion = 0x0, + NoAnyVersion = 0x1, + }; + #define AFTER_EXTRA #undef AFTER_EXTRA public: + unsigned short mMajor; + unsigned short mMinor; + unsigned short mPatch; + std::string mPreRelease; + std::string mBuildMeta; + std::string mFullVersionString; + bool mValidVersion; + bool mAnyVersion; #ifdef ENABLE_VIRTUAL_FAKESYMBOL_SEMVERSION #endif MCAPI SemVersion(class SemVersion const &); diff --git a/LiteLoader/Header/MC/SendEventData.hpp b/LiteLoader/include/llapi/mc/SendEventData.hpp similarity index 94% rename from LiteLoader/Header/MC/SendEventData.hpp rename to LiteLoader/include/llapi/mc/SendEventData.hpp index 255cb80..29dc256 100644 --- a/LiteLoader/Header/MC/SendEventData.hpp +++ b/LiteLoader/include/llapi/mc/SendEventData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SendEventGoal.hpp b/LiteLoader/include/llapi/mc/SendEventGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SendEventGoal.hpp rename to LiteLoader/include/llapi/mc/SendEventGoal.hpp index 1c7e844..89609f8 100644 --- a/LiteLoader/Header/MC/SendEventGoal.hpp +++ b/LiteLoader/include/llapi/mc/SendEventGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SendEventStage.hpp b/LiteLoader/include/llapi/mc/SendEventStage.hpp similarity index 94% rename from LiteLoader/Header/MC/SendEventStage.hpp rename to LiteLoader/include/llapi/mc/SendEventStage.hpp index a04af16..d6916e1 100644 --- a/LiteLoader/Header/MC/SendEventStage.hpp +++ b/LiteLoader/include/llapi/mc/SendEventStage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SensingComponent.hpp b/LiteLoader/include/llapi/mc/SensingComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/SensingComponent.hpp rename to LiteLoader/include/llapi/mc/SensingComponent.hpp index d1ab258..ba8a2a4 100644 --- a/LiteLoader/Header/MC/SensingComponent.hpp +++ b/LiteLoader/include/llapi/mc/SensingComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SensingSystem.hpp b/LiteLoader/include/llapi/mc/SensingSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/SensingSystem.hpp rename to LiteLoader/include/llapi/mc/SensingSystem.hpp index 421e8f9..dd8cfb5 100644 --- a/LiteLoader/Header/MC/SensingSystem.hpp +++ b/LiteLoader/include/llapi/mc/SensingSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SequenceBehaviorNode.hpp b/LiteLoader/include/llapi/mc/SequenceBehaviorNode.hpp similarity index 96% rename from LiteLoader/Header/MC/SequenceBehaviorNode.hpp rename to LiteLoader/include/llapi/mc/SequenceBehaviorNode.hpp index aadd098..7c1cb45 100644 --- a/LiteLoader/Header/MC/SequenceBehaviorNode.hpp +++ b/LiteLoader/include/llapi/mc/SequenceBehaviorNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SequenceDefinition.hpp b/LiteLoader/include/llapi/mc/SequenceDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SequenceDefinition.hpp rename to LiteLoader/include/llapi/mc/SequenceDefinition.hpp index b597b8c..0c80aea 100644 --- a/LiteLoader/Header/MC/SequenceDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SequenceDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/SerializedSkin.hpp b/LiteLoader/include/llapi/mc/SerializedSkin.hpp similarity index 96% rename from LiteLoader/Header/MC/SerializedSkin.hpp rename to LiteLoader/include/llapi/mc/SerializedSkin.hpp index 8fb6a5e..3a893be 100644 --- a/LiteLoader/Header/MC/SerializedSkin.hpp +++ b/LiteLoader/include/llapi/mc/SerializedSkin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerCommand.hpp b/LiteLoader/include/llapi/mc/ServerCommand.hpp similarity index 95% rename from LiteLoader/Header/MC/ServerCommand.hpp rename to LiteLoader/include/llapi/mc/ServerCommand.hpp index 64b797e..7729c07 100644 --- a/LiteLoader/Header/MC/ServerCommand.hpp +++ b/LiteLoader/include/llapi/mc/ServerCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerCommandOrigin.hpp b/LiteLoader/include/llapi/mc/ServerCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/ServerCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/ServerCommandOrigin.hpp index 2d8d9f4..77aff82 100644 --- a/LiteLoader/Header/MC/ServerCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/ServerCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/ServerCommands.hpp b/LiteLoader/include/llapi/mc/ServerCommands.hpp similarity index 92% rename from LiteLoader/Header/MC/ServerCommands.hpp rename to LiteLoader/include/llapi/mc/ServerCommands.hpp index 47e6055..5c99740 100644 --- a/LiteLoader/Header/MC/ServerCommands.hpp +++ b/LiteLoader/include/llapi/mc/ServerCommands.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerCommunicationInterface.hpp b/LiteLoader/include/llapi/mc/ServerCommunicationInterface.hpp similarity index 97% rename from LiteLoader/Header/MC/ServerCommunicationInterface.hpp rename to LiteLoader/include/llapi/mc/ServerCommunicationInterface.hpp index 50b2d06..768e5bd 100644 --- a/LiteLoader/Header/MC/ServerCommunicationInterface.hpp +++ b/LiteLoader/include/llapi/mc/ServerCommunicationInterface.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerContentKeyProvider.hpp b/LiteLoader/include/llapi/mc/ServerContentKeyProvider.hpp similarity index 97% rename from LiteLoader/Header/MC/ServerContentKeyProvider.hpp rename to LiteLoader/include/llapi/mc/ServerContentKeyProvider.hpp index 5d4771f..2e82fa8 100644 --- a/LiteLoader/Header/MC/ServerContentKeyProvider.hpp +++ b/LiteLoader/include/llapi/mc/ServerContentKeyProvider.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerFileChunkUploader.hpp b/LiteLoader/include/llapi/mc/ServerFileChunkUploader.hpp similarity index 98% rename from LiteLoader/Header/MC/ServerFileChunkUploader.hpp rename to LiteLoader/include/llapi/mc/ServerFileChunkUploader.hpp index 35a77be..5b723e7 100644 --- a/LiteLoader/Header/MC/ServerFileChunkUploader.hpp +++ b/LiteLoader/include/llapi/mc/ServerFileChunkUploader.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "IFileChunkUploader.hpp" diff --git a/LiteLoader/Header/MC/ServerInstance.hpp b/LiteLoader/include/llapi/mc/ServerInstance.hpp similarity index 98% rename from LiteLoader/Header/MC/ServerInstance.hpp rename to LiteLoader/include/llapi/mc/ServerInstance.hpp index c28f2fe..10b487a 100644 --- a/LiteLoader/Header/MC/ServerInstance.hpp +++ b/LiteLoader/include/llapi/mc/ServerInstance.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #include "Core.hpp" diff --git a/LiteLoader/Header/MC/ServerInstanceEventCoordinator.hpp b/LiteLoader/include/llapi/mc/ServerInstanceEventCoordinator.hpp similarity index 96% rename from LiteLoader/Header/MC/ServerInstanceEventCoordinator.hpp rename to LiteLoader/include/llapi/mc/ServerInstanceEventCoordinator.hpp index e65253f..f8e6175 100644 --- a/LiteLoader/Header/MC/ServerInstanceEventCoordinator.hpp +++ b/LiteLoader/include/llapi/mc/ServerInstanceEventCoordinator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerInstanceEventListener.hpp b/LiteLoader/include/llapi/mc/ServerInstanceEventListener.hpp similarity index 98% rename from LiteLoader/Header/MC/ServerInstanceEventListener.hpp rename to LiteLoader/include/llapi/mc/ServerInstanceEventListener.hpp index c9d4fd7..4fbcf89 100644 --- a/LiteLoader/Header/MC/ServerInstanceEventListener.hpp +++ b/LiteLoader/include/llapi/mc/ServerInstanceEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerLevel.hpp b/LiteLoader/include/llapi/mc/ServerLevel.hpp similarity index 98% rename from LiteLoader/Header/MC/ServerLevel.hpp rename to LiteLoader/include/llapi/mc/ServerLevel.hpp index 5e1d101..278f167 100644 --- a/LiteLoader/Header/MC/ServerLevel.hpp +++ b/LiteLoader/include/llapi/mc/ServerLevel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerLocator.hpp b/LiteLoader/include/llapi/mc/ServerLocator.hpp similarity index 94% rename from LiteLoader/Header/MC/ServerLocator.hpp rename to LiteLoader/include/llapi/mc/ServerLocator.hpp index c1553c5..1ec4df7 100644 --- a/LiteLoader/Header/MC/ServerLocator.hpp +++ b/LiteLoader/include/llapi/mc/ServerLocator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerMetrics.hpp b/LiteLoader/include/llapi/mc/ServerMetrics.hpp similarity index 94% rename from LiteLoader/Header/MC/ServerMetrics.hpp rename to LiteLoader/include/llapi/mc/ServerMetrics.hpp index 03ee668..a5731b0 100644 --- a/LiteLoader/Header/MC/ServerMetrics.hpp +++ b/LiteLoader/include/llapi/mc/ServerMetrics.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerMetricsImpl.hpp b/LiteLoader/include/llapi/mc/ServerMetricsImpl.hpp similarity index 97% rename from LiteLoader/Header/MC/ServerMetricsImpl.hpp rename to LiteLoader/include/llapi/mc/ServerMetricsImpl.hpp index b0a49c5..424a1b1 100644 --- a/LiteLoader/Header/MC/ServerMetricsImpl.hpp +++ b/LiteLoader/include/llapi/mc/ServerMetricsImpl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerMoveInputHandler.hpp b/LiteLoader/include/llapi/mc/ServerMoveInputHandler.hpp similarity index 97% rename from LiteLoader/Header/MC/ServerMoveInputHandler.hpp rename to LiteLoader/include/llapi/mc/ServerMoveInputHandler.hpp index b883692..851ef87 100644 --- a/LiteLoader/Header/MC/ServerMoveInputHandler.hpp +++ b/LiteLoader/include/llapi/mc/ServerMoveInputHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveInput.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerNetworkHandler.hpp b/LiteLoader/include/llapi/mc/ServerNetworkHandler.hpp similarity index 99% rename from LiteLoader/Header/MC/ServerNetworkHandler.hpp rename to LiteLoader/include/llapi/mc/ServerNetworkHandler.hpp index 6163498..dd2219d 100644 --- a/LiteLoader/Header/MC/ServerNetworkHandler.hpp +++ b/LiteLoader/include/llapi/mc/ServerNetworkHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Automation.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerPlayer.hpp b/LiteLoader/include/llapi/mc/ServerPlayer.hpp similarity index 99% rename from LiteLoader/Header/MC/ServerPlayer.hpp rename to LiteLoader/include/llapi/mc/ServerPlayer.hpp index 8bc510b..b4b52ff 100644 --- a/LiteLoader/Header/MC/ServerPlayer.hpp +++ b/LiteLoader/include/llapi/mc/ServerPlayer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Player.hpp" diff --git a/LiteLoader/Header/MC/ServerScoreboard.hpp b/LiteLoader/include/llapi/mc/ServerScoreboard.hpp similarity index 98% rename from LiteLoader/Header/MC/ServerScoreboard.hpp rename to LiteLoader/include/llapi/mc/ServerScoreboard.hpp index 609fed4..252f525 100644 --- a/LiteLoader/Header/MC/ServerScoreboard.hpp +++ b/LiteLoader/include/llapi/mc/ServerScoreboard.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerSettingsRequestPacket.hpp b/LiteLoader/include/llapi/mc/ServerSettingsRequestPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ServerSettingsRequestPacket.hpp rename to LiteLoader/include/llapi/mc/ServerSettingsRequestPacket.hpp index f1fb78e..968e17b 100644 --- a/LiteLoader/Header/MC/ServerSettingsRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/ServerSettingsRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerSettingsResponsePacket.hpp b/LiteLoader/include/llapi/mc/ServerSettingsResponsePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ServerSettingsResponsePacket.hpp rename to LiteLoader/include/llapi/mc/ServerSettingsResponsePacket.hpp index b150253..ea42c38 100644 --- a/LiteLoader/Header/MC/ServerSettingsResponsePacket.hpp +++ b/LiteLoader/include/llapi/mc/ServerSettingsResponsePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ServerToClientHandshakePacket.hpp b/LiteLoader/include/llapi/mc/ServerToClientHandshakePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/ServerToClientHandshakePacket.hpp rename to LiteLoader/include/llapi/mc/ServerToClientHandshakePacket.hpp index b7ac17c..e01e866 100644 --- a/LiteLoader/Header/MC/ServerToClientHandshakePacket.hpp +++ b/LiteLoader/include/llapi/mc/ServerToClientHandshakePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetActorDataPacket.hpp b/LiteLoader/include/llapi/mc/SetActorDataPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetActorDataPacket.hpp rename to LiteLoader/include/llapi/mc/SetActorDataPacket.hpp index 8471ef0..cf0d038 100644 --- a/LiteLoader/Header/MC/SetActorDataPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetActorDataPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetActorLinkPacket.hpp b/LiteLoader/include/llapi/mc/SetActorLinkPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetActorLinkPacket.hpp rename to LiteLoader/include/llapi/mc/SetActorLinkPacket.hpp index f3b4bf2..4091a36 100644 --- a/LiteLoader/Header/MC/SetActorLinkPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetActorLinkPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetActorMotionPacket.hpp b/LiteLoader/include/llapi/mc/SetActorMotionPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetActorMotionPacket.hpp rename to LiteLoader/include/llapi/mc/SetActorMotionPacket.hpp index 0a9af6e..39eda11 100644 --- a/LiteLoader/Header/MC/SetActorMotionPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetActorMotionPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetBannerDetailsFunction.hpp b/LiteLoader/include/llapi/mc/SetBannerDetailsFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/SetBannerDetailsFunction.hpp rename to LiteLoader/include/llapi/mc/SetBannerDetailsFunction.hpp index 39b4f27..6847aab 100644 --- a/LiteLoader/Header/MC/SetBannerDetailsFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetBannerDetailsFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetBlockCommand.hpp b/LiteLoader/include/llapi/mc/SetBlockCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/SetBlockCommand.hpp rename to LiteLoader/include/llapi/mc/SetBlockCommand.hpp index 4140c6c..988e3cb 100644 --- a/LiteLoader/Header/MC/SetBlockCommand.hpp +++ b/LiteLoader/include/llapi/mc/SetBlockCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetBlockReactionComponent.hpp b/LiteLoader/include/llapi/mc/SetBlockReactionComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/SetBlockReactionComponent.hpp rename to LiteLoader/include/llapi/mc/SetBlockReactionComponent.hpp index 5a453f0..f4eec38 100644 --- a/LiteLoader/Header/MC/SetBlockReactionComponent.hpp +++ b/LiteLoader/include/llapi/mc/SetBlockReactionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetBookContentsFunction.hpp b/LiteLoader/include/llapi/mc/SetBookContentsFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/SetBookContentsFunction.hpp rename to LiteLoader/include/llapi/mc/SetBookContentsFunction.hpp index 8436eb4..3783202 100644 --- a/LiteLoader/Header/MC/SetBookContentsFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetBookContentsFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/SetCommandsEnabledPacket.hpp b/LiteLoader/include/llapi/mc/SetCommandsEnabledPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetCommandsEnabledPacket.hpp rename to LiteLoader/include/llapi/mc/SetCommandsEnabledPacket.hpp index 6fbd919..c7b2b69 100644 --- a/LiteLoader/Header/MC/SetCommandsEnabledPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetCommandsEnabledPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetDataFromColorIndexFunction.hpp b/LiteLoader/include/llapi/mc/SetDataFromColorIndexFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/SetDataFromColorIndexFunction.hpp rename to LiteLoader/include/llapi/mc/SetDataFromColorIndexFunction.hpp index 684411d..9ad8ae4 100644 --- a/LiteLoader/Header/MC/SetDataFromColorIndexFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetDataFromColorIndexFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetDefaultGameTypePacket.hpp b/LiteLoader/include/llapi/mc/SetDefaultGameTypePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetDefaultGameTypePacket.hpp rename to LiteLoader/include/llapi/mc/SetDefaultGameTypePacket.hpp index d012e54..402ee08 100644 --- a/LiteLoader/Header/MC/SetDefaultGameTypePacket.hpp +++ b/LiteLoader/include/llapi/mc/SetDefaultGameTypePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetDifficultyPacket.hpp b/LiteLoader/include/llapi/mc/SetDifficultyPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetDifficultyPacket.hpp rename to LiteLoader/include/llapi/mc/SetDifficultyPacket.hpp index e28d2e6..0f2c4e4 100644 --- a/LiteLoader/Header/MC/SetDifficultyPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetDifficultyPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetDisplayObjectivePacket.hpp b/LiteLoader/include/llapi/mc/SetDisplayObjectivePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetDisplayObjectivePacket.hpp rename to LiteLoader/include/llapi/mc/SetDisplayObjectivePacket.hpp index 0244020..e167551 100644 --- a/LiteLoader/Header/MC/SetDisplayObjectivePacket.hpp +++ b/LiteLoader/include/llapi/mc/SetDisplayObjectivePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetHealthPacket.hpp b/LiteLoader/include/llapi/mc/SetHealthPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetHealthPacket.hpp rename to LiteLoader/include/llapi/mc/SetHealthPacket.hpp index 7386aa7..1d5962a 100644 --- a/LiteLoader/Header/MC/SetHealthPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetHealthPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetItemCountFunction.hpp b/LiteLoader/include/llapi/mc/SetItemCountFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/SetItemCountFunction.hpp rename to LiteLoader/include/llapi/mc/SetItemCountFunction.hpp index 757d363..13f2c9a 100644 --- a/LiteLoader/Header/MC/SetItemCountFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetItemCountFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetItemDamageFunction.hpp b/LiteLoader/include/llapi/mc/SetItemDamageFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/SetItemDamageFunction.hpp rename to LiteLoader/include/llapi/mc/SetItemDamageFunction.hpp index 8e27102..883947c 100644 --- a/LiteLoader/Header/MC/SetItemDamageFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetItemDamageFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetItemDataFunction.hpp b/LiteLoader/include/llapi/mc/SetItemDataFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/SetItemDataFunction.hpp rename to LiteLoader/include/llapi/mc/SetItemDataFunction.hpp index e2efe7a..f610e1d 100644 --- a/LiteLoader/Header/MC/SetItemDataFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetItemDataFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetItemLoreFunction.hpp b/LiteLoader/include/llapi/mc/SetItemLoreFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/SetItemLoreFunction.hpp rename to LiteLoader/include/llapi/mc/SetItemLoreFunction.hpp index 94df2cd..5312bff 100644 --- a/LiteLoader/Header/MC/SetItemLoreFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetItemLoreFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/SetItemNameFunction.hpp b/LiteLoader/include/llapi/mc/SetItemNameFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/SetItemNameFunction.hpp rename to LiteLoader/include/llapi/mc/SetItemNameFunction.hpp index e045cc4..a1c8223 100644 --- a/LiteLoader/Header/MC/SetItemNameFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetItemNameFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/SetLastHurtByPacket.hpp b/LiteLoader/include/llapi/mc/SetLastHurtByPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetLastHurtByPacket.hpp rename to LiteLoader/include/llapi/mc/SetLastHurtByPacket.hpp index 6a22d2a..f81685d 100644 --- a/LiteLoader/Header/MC/SetLastHurtByPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetLastHurtByPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetLocalPlayerAsInitializedPacket.hpp b/LiteLoader/include/llapi/mc/SetLocalPlayerAsInitializedPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetLocalPlayerAsInitializedPacket.hpp rename to LiteLoader/include/llapi/mc/SetLocalPlayerAsInitializedPacket.hpp index ff57692..d82aad0 100644 --- a/LiteLoader/Header/MC/SetLocalPlayerAsInitializedPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetLocalPlayerAsInitializedPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetMaxPlayersCommand.hpp b/LiteLoader/include/llapi/mc/SetMaxPlayersCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/SetMaxPlayersCommand.hpp rename to LiteLoader/include/llapi/mc/SetMaxPlayersCommand.hpp index cfe6fe1..fee3a2e 100644 --- a/LiteLoader/Header/MC/SetMaxPlayersCommand.hpp +++ b/LiteLoader/include/llapi/mc/SetMaxPlayersCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetPlayerGameTypePacket.hpp b/LiteLoader/include/llapi/mc/SetPlayerGameTypePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetPlayerGameTypePacket.hpp rename to LiteLoader/include/llapi/mc/SetPlayerGameTypePacket.hpp index 2cc9548..86f24b7 100644 --- a/LiteLoader/Header/MC/SetPlayerGameTypePacket.hpp +++ b/LiteLoader/include/llapi/mc/SetPlayerGameTypePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetScorePacket.hpp b/LiteLoader/include/llapi/mc/SetScorePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetScorePacket.hpp rename to LiteLoader/include/llapi/mc/SetScorePacket.hpp index d50fca8..eee6a0e 100644 --- a/LiteLoader/Header/MC/SetScorePacket.hpp +++ b/LiteLoader/include/llapi/mc/SetScorePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetScoreboardIdentityPacket.hpp b/LiteLoader/include/llapi/mc/SetScoreboardIdentityPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetScoreboardIdentityPacket.hpp rename to LiteLoader/include/llapi/mc/SetScoreboardIdentityPacket.hpp index c8d16a9..8c4b68a 100644 --- a/LiteLoader/Header/MC/SetScoreboardIdentityPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetScoreboardIdentityPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetSpawnEggFunction.hpp b/LiteLoader/include/llapi/mc/SetSpawnEggFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/SetSpawnEggFunction.hpp rename to LiteLoader/include/llapi/mc/SetSpawnEggFunction.hpp index 90251f7..e1caa8b 100644 --- a/LiteLoader/Header/MC/SetSpawnEggFunction.hpp +++ b/LiteLoader/include/llapi/mc/SetSpawnEggFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/SetSpawnPositionPacket.hpp b/LiteLoader/include/llapi/mc/SetSpawnPositionPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetSpawnPositionPacket.hpp rename to LiteLoader/include/llapi/mc/SetSpawnPositionPacket.hpp index 4f40dce..a1d2cfb 100644 --- a/LiteLoader/Header/MC/SetSpawnPositionPacket.hpp +++ b/LiteLoader/include/llapi/mc/SetSpawnPositionPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetTimePacket.hpp b/LiteLoader/include/llapi/mc/SetTimePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SetTimePacket.hpp rename to LiteLoader/include/llapi/mc/SetTimePacket.hpp index 597c7e0..ae55814 100644 --- a/LiteLoader/Header/MC/SetTimePacket.hpp +++ b/LiteLoader/include/llapi/mc/SetTimePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetTitlePacket.hpp b/LiteLoader/include/llapi/mc/SetTitlePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SetTitlePacket.hpp rename to LiteLoader/include/llapi/mc/SetTitlePacket.hpp index 1e82fc8..3b82808 100644 --- a/LiteLoader/Header/MC/SetTitlePacket.hpp +++ b/LiteLoader/include/llapi/mc/SetTitlePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SetWorldSpawnCommand.hpp b/LiteLoader/include/llapi/mc/SetWorldSpawnCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/SetWorldSpawnCommand.hpp rename to LiteLoader/include/llapi/mc/SetWorldSpawnCommand.hpp index 55e90d3..d092f11 100644 --- a/LiteLoader/Header/MC/SetWorldSpawnCommand.hpp +++ b/LiteLoader/include/llapi/mc/SetWorldSpawnCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SettingsCommandPacket.hpp b/LiteLoader/include/llapi/mc/SettingsCommandPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SettingsCommandPacket.hpp rename to LiteLoader/include/llapi/mc/SettingsCommandPacket.hpp index 3dd530c..7813533 100644 --- a/LiteLoader/Header/MC/SettingsCommandPacket.hpp +++ b/LiteLoader/include/llapi/mc/SettingsCommandPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SettingsScreenCapabilities.hpp b/LiteLoader/include/llapi/mc/SettingsScreenCapabilities.hpp similarity index 96% rename from LiteLoader/Header/MC/SettingsScreenCapabilities.hpp rename to LiteLoader/include/llapi/mc/SettingsScreenCapabilities.hpp index 612fba4..4107b2e 100644 --- a/LiteLoader/Header/MC/SettingsScreenCapabilities.hpp +++ b/LiteLoader/include/llapi/mc/SettingsScreenCapabilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShapedChemistryRecipe.hpp b/LiteLoader/include/llapi/mc/ShapedChemistryRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/ShapedChemistryRecipe.hpp rename to LiteLoader/include/llapi/mc/ShapedChemistryRecipe.hpp index 0a71be7..0e39734 100644 --- a/LiteLoader/Header/MC/ShapedChemistryRecipe.hpp +++ b/LiteLoader/include/llapi/mc/ShapedChemistryRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ShapedRecipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShapedRecipe.hpp b/LiteLoader/include/llapi/mc/ShapedRecipe.hpp similarity index 98% rename from LiteLoader/Header/MC/ShapedRecipe.hpp rename to LiteLoader/include/llapi/mc/ShapedRecipe.hpp index 8de310e..6de048a 100644 --- a/LiteLoader/Header/MC/ShapedRecipe.hpp +++ b/LiteLoader/include/llapi/mc/ShapedRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShapelessChemistryRecipe.hpp b/LiteLoader/include/llapi/mc/ShapelessChemistryRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/ShapelessChemistryRecipe.hpp rename to LiteLoader/include/llapi/mc/ShapelessChemistryRecipe.hpp index f9d0a87..8555481 100644 --- a/LiteLoader/Header/MC/ShapelessChemistryRecipe.hpp +++ b/LiteLoader/include/llapi/mc/ShapelessChemistryRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ShapelessRecipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShapelessRecipe.hpp b/LiteLoader/include/llapi/mc/ShapelessRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/ShapelessRecipe.hpp rename to LiteLoader/include/llapi/mc/ShapelessRecipe.hpp index 8333fc4..e85f8ff 100644 --- a/LiteLoader/Header/MC/ShapelessRecipe.hpp +++ b/LiteLoader/include/llapi/mc/ShapelessRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Recipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShareItemsGoal.hpp b/LiteLoader/include/llapi/mc/ShareItemsGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/ShareItemsGoal.hpp rename to LiteLoader/include/llapi/mc/ShareItemsGoal.hpp index 7511cb7..cebf7c7 100644 --- a/LiteLoader/Header/MC/ShareItemsGoal.hpp +++ b/LiteLoader/include/llapi/mc/ShareItemsGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Shareable.hpp b/LiteLoader/include/llapi/mc/Shareable.hpp similarity index 95% rename from LiteLoader/Header/MC/Shareable.hpp rename to LiteLoader/include/llapi/mc/Shareable.hpp index bb0a08f..d3651e3 100644 --- a/LiteLoader/Header/MC/Shareable.hpp +++ b/LiteLoader/include/llapi/mc/Shareable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShareableComponent.hpp b/LiteLoader/include/llapi/mc/ShareableComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ShareableComponent.hpp rename to LiteLoader/include/llapi/mc/ShareableComponent.hpp index e8bc2dd..13b57cb 100644 --- a/LiteLoader/Header/MC/ShareableComponent.hpp +++ b/LiteLoader/include/llapi/mc/ShareableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShareableDefinition.hpp b/LiteLoader/include/llapi/mc/ShareableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/ShareableDefinition.hpp rename to LiteLoader/include/llapi/mc/ShareableDefinition.hpp index df9c97a..cc5c2b7 100644 --- a/LiteLoader/Header/MC/ShareableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ShareableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SharedAmplifiers.hpp b/LiteLoader/include/llapi/mc/SharedAmplifiers.hpp similarity index 97% rename from LiteLoader/Header/MC/SharedAmplifiers.hpp rename to LiteLoader/include/llapi/mc/SharedAmplifiers.hpp index b802be4..2fee3d1 100644 --- a/LiteLoader/Header/MC/SharedAmplifiers.hpp +++ b/LiteLoader/include/llapi/mc/SharedAmplifiers.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SharedAttributes.hpp b/LiteLoader/include/llapi/mc/SharedAttributes.hpp similarity index 98% rename from LiteLoader/Header/MC/SharedAttributes.hpp rename to LiteLoader/include/llapi/mc/SharedAttributes.hpp index 90d3deb..806c6dd 100644 --- a/LiteLoader/Header/MC/SharedAttributes.hpp +++ b/LiteLoader/include/llapi/mc/SharedAttributes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SharedBuffs.hpp b/LiteLoader/include/llapi/mc/SharedBuffs.hpp similarity index 97% rename from LiteLoader/Header/MC/SharedBuffs.hpp rename to LiteLoader/include/llapi/mc/SharedBuffs.hpp index d1345aa..a52d954 100644 --- a/LiteLoader/Header/MC/SharedBuffs.hpp +++ b/LiteLoader/include/llapi/mc/SharedBuffs.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SharedConstants.hpp b/LiteLoader/include/llapi/mc/SharedConstants.hpp similarity index 97% rename from LiteLoader/Header/MC/SharedConstants.hpp rename to LiteLoader/include/llapi/mc/SharedConstants.hpp index 0002269..62b55f8 100644 --- a/LiteLoader/Header/MC/SharedConstants.hpp +++ b/LiteLoader/include/llapi/mc/SharedConstants.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SharedModifiers.hpp b/LiteLoader/include/llapi/mc/SharedModifiers.hpp similarity index 97% rename from LiteLoader/Header/MC/SharedModifiers.hpp rename to LiteLoader/include/llapi/mc/SharedModifiers.hpp index 666402a..d6b4ff3 100644 --- a/LiteLoader/Header/MC/SharedModifiers.hpp +++ b/LiteLoader/include/llapi/mc/SharedModifiers.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShearsItem.hpp b/LiteLoader/include/llapi/mc/ShearsItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ShearsItem.hpp rename to LiteLoader/include/llapi/mc/ShearsItem.hpp index 725615a..da0b3e0 100644 --- a/LiteLoader/Header/MC/ShearsItem.hpp +++ b/LiteLoader/include/llapi/mc/ShearsItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Sheep.hpp b/LiteLoader/include/llapi/mc/Sheep.hpp similarity index 98% rename from LiteLoader/Header/MC/Sheep.hpp rename to LiteLoader/include/llapi/mc/Sheep.hpp index 36815ca..49ed409 100644 --- a/LiteLoader/Header/MC/Sheep.hpp +++ b/LiteLoader/include/llapi/mc/Sheep.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/ShieldItem.hpp b/LiteLoader/include/llapi/mc/ShieldItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ShieldItem.hpp rename to LiteLoader/include/llapi/mc/ShieldItem.hpp index ca7e8fb..3c814ae 100644 --- a/LiteLoader/Header/MC/ShieldItem.hpp +++ b/LiteLoader/include/llapi/mc/ShieldItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShieldItemUtils.hpp b/LiteLoader/include/llapi/mc/ShieldItemUtils.hpp similarity index 95% rename from LiteLoader/Header/MC/ShieldItemUtils.hpp rename to LiteLoader/include/llapi/mc/ShieldItemUtils.hpp index d8079ad..6e23385 100644 --- a/LiteLoader/Header/MC/ShieldItemUtils.hpp +++ b/LiteLoader/include/llapi/mc/ShieldItemUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShiftedDurationAmplifier.hpp b/LiteLoader/include/llapi/mc/ShiftedDurationAmplifier.hpp similarity index 96% rename from LiteLoader/Header/MC/ShiftedDurationAmplifier.hpp rename to LiteLoader/include/llapi/mc/ShiftedDurationAmplifier.hpp index 6d10bd5..8ea3149 100644 --- a/LiteLoader/Header/MC/ShiftedDurationAmplifier.hpp +++ b/LiteLoader/include/llapi/mc/ShiftedDurationAmplifier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShiftedValueAmplifier.hpp b/LiteLoader/include/llapi/mc/ShiftedValueAmplifier.hpp similarity index 95% rename from LiteLoader/Header/MC/ShiftedValueAmplifier.hpp rename to LiteLoader/include/llapi/mc/ShiftedValueAmplifier.hpp index a223c8f..d20b412 100644 --- a/LiteLoader/Header/MC/ShiftedValueAmplifier.hpp +++ b/LiteLoader/include/llapi/mc/ShiftedValueAmplifier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShipwreckFeature.hpp b/LiteLoader/include/llapi/mc/ShipwreckFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/ShipwreckFeature.hpp rename to LiteLoader/include/llapi/mc/ShipwreckFeature.hpp index ea276a6..1fbe034 100644 --- a/LiteLoader/Header/MC/ShipwreckFeature.hpp +++ b/LiteLoader/include/llapi/mc/ShipwreckFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShipwreckPiece.hpp b/LiteLoader/include/llapi/mc/ShipwreckPiece.hpp similarity index 96% rename from LiteLoader/Header/MC/ShipwreckPiece.hpp rename to LiteLoader/include/llapi/mc/ShipwreckPiece.hpp index 84194b5..0e4af79 100644 --- a/LiteLoader/Header/MC/ShipwreckPiece.hpp +++ b/LiteLoader/include/llapi/mc/ShipwreckPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShipwreckStart.hpp b/LiteLoader/include/llapi/mc/ShipwreckStart.hpp similarity index 96% rename from LiteLoader/Header/MC/ShipwreckStart.hpp rename to LiteLoader/include/llapi/mc/ShipwreckStart.hpp index 3c72fce..ea3858a 100644 --- a/LiteLoader/Header/MC/ShipwreckStart.hpp +++ b/LiteLoader/include/llapi/mc/ShipwreckStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShootBowDefinition.hpp b/LiteLoader/include/llapi/mc/ShootBowDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/ShootBowDefinition.hpp rename to LiteLoader/include/llapi/mc/ShootBowDefinition.hpp index e5eec54..e1de352 100644 --- a/LiteLoader/Header/MC/ShootBowDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ShootBowDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/ShootBowNode.hpp b/LiteLoader/include/llapi/mc/ShootBowNode.hpp similarity index 95% rename from LiteLoader/Header/MC/ShootBowNode.hpp rename to LiteLoader/include/llapi/mc/ShootBowNode.hpp index 537a490..5455815 100644 --- a/LiteLoader/Header/MC/ShootBowNode.hpp +++ b/LiteLoader/include/llapi/mc/ShootBowNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShooterComponent.hpp b/LiteLoader/include/llapi/mc/ShooterComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/ShooterComponent.hpp rename to LiteLoader/include/llapi/mc/ShooterComponent.hpp index 5db1688..b2e02d0 100644 --- a/LiteLoader/Header/MC/ShooterComponent.hpp +++ b/LiteLoader/include/llapi/mc/ShooterComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShooterDefinition.hpp b/LiteLoader/include/llapi/mc/ShooterDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/ShooterDefinition.hpp rename to LiteLoader/include/llapi/mc/ShooterDefinition.hpp index 27aec65..5b6b87c 100644 --- a/LiteLoader/Header/MC/ShooterDefinition.hpp +++ b/LiteLoader/include/llapi/mc/ShooterDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/ShortTag.hpp b/LiteLoader/include/llapi/mc/ShortTag.hpp similarity index 97% rename from LiteLoader/Header/MC/ShortTag.hpp rename to LiteLoader/include/llapi/mc/ShortTag.hpp index 8f46f23..601615b 100644 --- a/LiteLoader/Header/MC/ShortTag.hpp +++ b/LiteLoader/include/llapi/mc/ShortTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShovelItem.hpp b/LiteLoader/include/llapi/mc/ShovelItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ShovelItem.hpp rename to LiteLoader/include/llapi/mc/ShovelItem.hpp index c5838a9..d6b7811 100644 --- a/LiteLoader/Header/MC/ShovelItem.hpp +++ b/LiteLoader/include/llapi/mc/ShovelItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #include "DiggerItem.hpp" diff --git a/LiteLoader/Header/MC/ShowCreditsPacket.hpp b/LiteLoader/include/llapi/mc/ShowCreditsPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ShowCreditsPacket.hpp rename to LiteLoader/include/llapi/mc/ShowCreditsPacket.hpp index 0ae4468..461111c 100644 --- a/LiteLoader/Header/MC/ShowCreditsPacket.hpp +++ b/LiteLoader/include/llapi/mc/ShowCreditsPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShowProfilePacket.hpp b/LiteLoader/include/llapi/mc/ShowProfilePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ShowProfilePacket.hpp rename to LiteLoader/include/llapi/mc/ShowProfilePacket.hpp index 7a40097..883af1c 100644 --- a/LiteLoader/Header/MC/ShowProfilePacket.hpp +++ b/LiteLoader/include/llapi/mc/ShowProfilePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShowStoreOfferPacket.hpp b/LiteLoader/include/llapi/mc/ShowStoreOfferPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/ShowStoreOfferPacket.hpp rename to LiteLoader/include/llapi/mc/ShowStoreOfferPacket.hpp index 7bce79c..4202e8a 100644 --- a/LiteLoader/Header/MC/ShowStoreOfferPacket.hpp +++ b/LiteLoader/include/llapi/mc/ShowStoreOfferPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Shulker.hpp b/LiteLoader/include/llapi/mc/Shulker.hpp similarity index 99% rename from LiteLoader/Header/MC/Shulker.hpp rename to LiteLoader/include/llapi/mc/Shulker.hpp index 45bd2ff..bae81d3 100644 --- a/LiteLoader/Header/MC/Shulker.hpp +++ b/LiteLoader/include/llapi/mc/Shulker.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/ShulkerBoxBlock.hpp b/LiteLoader/include/llapi/mc/ShulkerBoxBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ShulkerBoxBlock.hpp rename to LiteLoader/include/llapi/mc/ShulkerBoxBlock.hpp index 10ba76f..a7b89df 100644 --- a/LiteLoader/Header/MC/ShulkerBoxBlock.hpp +++ b/LiteLoader/include/llapi/mc/ShulkerBoxBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChestBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShulkerBoxBlockActor.hpp b/LiteLoader/include/llapi/mc/ShulkerBoxBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/ShulkerBoxBlockActor.hpp rename to LiteLoader/include/llapi/mc/ShulkerBoxBlockActor.hpp index f4e376a..b95456b 100644 --- a/LiteLoader/Header/MC/ShulkerBoxBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/ShulkerBoxBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShulkerBoxBlockItem.hpp b/LiteLoader/include/llapi/mc/ShulkerBoxBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/ShulkerBoxBlockItem.hpp rename to LiteLoader/include/llapi/mc/ShulkerBoxBlockItem.hpp index 31e36bb..ced2a87 100644 --- a/LiteLoader/Header/MC/ShulkerBoxBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/ShulkerBoxBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShulkerBoxRecipe.hpp b/LiteLoader/include/llapi/mc/ShulkerBoxRecipe.hpp similarity index 97% rename from LiteLoader/Header/MC/ShulkerBoxRecipe.hpp rename to LiteLoader/include/llapi/mc/ShulkerBoxRecipe.hpp index 36901b7..3b56eeb 100644 --- a/LiteLoader/Header/MC/ShulkerBoxRecipe.hpp +++ b/LiteLoader/include/llapi/mc/ShulkerBoxRecipe.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ShapelessRecipe.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShulkerBullet.hpp b/LiteLoader/include/llapi/mc/ShulkerBullet.hpp similarity index 98% rename from LiteLoader/Header/MC/ShulkerBullet.hpp rename to LiteLoader/include/llapi/mc/ShulkerBullet.hpp index ebcbc2e..72fc7f1 100644 --- a/LiteLoader/Header/MC/ShulkerBullet.hpp +++ b/LiteLoader/include/llapi/mc/ShulkerBullet.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ShulkerPeekGoal.hpp b/LiteLoader/include/llapi/mc/ShulkerPeekGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/ShulkerPeekGoal.hpp rename to LiteLoader/include/llapi/mc/ShulkerPeekGoal.hpp index 5c32ff3..95d9b7e 100644 --- a/LiteLoader/Header/MC/ShulkerPeekGoal.hpp +++ b/LiteLoader/include/llapi/mc/ShulkerPeekGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SignBlock.hpp b/LiteLoader/include/llapi/mc/SignBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/SignBlock.hpp rename to LiteLoader/include/llapi/mc/SignBlock.hpp index 0a50500..755e2dd 100644 --- a/LiteLoader/Header/MC/SignBlock.hpp +++ b/LiteLoader/include/llapi/mc/SignBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SignBlockActor.hpp" #include "ActorBlock.hpp" diff --git a/LiteLoader/Header/MC/SignBlockActor.hpp b/LiteLoader/include/llapi/mc/SignBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/SignBlockActor.hpp rename to LiteLoader/include/llapi/mc/SignBlockActor.hpp index 18d71e9..158e396 100644 --- a/LiteLoader/Header/MC/SignBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/SignBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SignItem.hpp b/LiteLoader/include/llapi/mc/SignItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SignItem.hpp rename to LiteLoader/include/llapi/mc/SignItem.hpp index c5920ca..9752501 100644 --- a/LiteLoader/Header/MC/SignItem.hpp +++ b/LiteLoader/include/llapi/mc/SignItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Silverfish.hpp b/LiteLoader/include/llapi/mc/Silverfish.hpp similarity index 98% rename from LiteLoader/Header/MC/Silverfish.hpp rename to LiteLoader/include/llapi/mc/Silverfish.hpp index d94a678..dbabf23 100644 --- a/LiteLoader/Header/MC/Silverfish.hpp +++ b/LiteLoader/include/llapi/mc/Silverfish.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/SilverfishMergeWithStoneGoal.hpp b/LiteLoader/include/llapi/mc/SilverfishMergeWithStoneGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SilverfishMergeWithStoneGoal.hpp rename to LiteLoader/include/llapi/mc/SilverfishMergeWithStoneGoal.hpp index f3e1d95..df4451f 100644 --- a/LiteLoader/Header/MC/SilverfishMergeWithStoneGoal.hpp +++ b/LiteLoader/include/llapi/mc/SilverfishMergeWithStoneGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RandomStrollGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SilverfishWakeUpFriendsGoal.hpp b/LiteLoader/include/llapi/mc/SilverfishWakeUpFriendsGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SilverfishWakeUpFriendsGoal.hpp rename to LiteLoader/include/llapi/mc/SilverfishWakeUpFriendsGoal.hpp index 4c6e025..3a71eff 100644 --- a/LiteLoader/Header/MC/SilverfishWakeUpFriendsGoal.hpp +++ b/LiteLoader/include/llapi/mc/SilverfishWakeUpFriendsGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleBoolFilterTest.hpp b/LiteLoader/include/llapi/mc/SimpleBoolFilterTest.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleBoolFilterTest.hpp rename to LiteLoader/include/llapi/mc/SimpleBoolFilterTest.hpp index c4f4cb4..495194f 100644 --- a/LiteLoader/Header/MC/SimpleBoolFilterTest.hpp +++ b/LiteLoader/include/llapi/mc/SimpleBoolFilterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleContainer.hpp b/LiteLoader/include/llapi/mc/SimpleContainer.hpp similarity index 97% rename from LiteLoader/Header/MC/SimpleContainer.hpp rename to LiteLoader/include/llapi/mc/SimpleContainer.hpp index 35a1ccc..fd0825c 100644 --- a/LiteLoader/Header/MC/SimpleContainer.hpp +++ b/LiteLoader/include/llapi/mc/SimpleContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Container.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleEventPacket.hpp b/LiteLoader/include/llapi/mc/SimpleEventPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleEventPacket.hpp rename to LiteLoader/include/llapi/mc/SimpleEventPacket.hpp index d1a485d..0580480 100644 --- a/LiteLoader/Header/MC/SimpleEventPacket.hpp +++ b/LiteLoader/include/llapi/mc/SimpleEventPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleFloatFilterTest.hpp b/LiteLoader/include/llapi/mc/SimpleFloatFilterTest.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleFloatFilterTest.hpp rename to LiteLoader/include/llapi/mc/SimpleFloatFilterTest.hpp index e1b4528..cad0a2d 100644 --- a/LiteLoader/Header/MC/SimpleFloatFilterTest.hpp +++ b/LiteLoader/include/llapi/mc/SimpleFloatFilterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleHashStringFilterTest.hpp b/LiteLoader/include/llapi/mc/SimpleHashStringFilterTest.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleHashStringFilterTest.hpp rename to LiteLoader/include/llapi/mc/SimpleHashStringFilterTest.hpp index 6253b9b..d61aa2a 100644 --- a/LiteLoader/Header/MC/SimpleHashStringFilterTest.hpp +++ b/LiteLoader/include/llapi/mc/SimpleHashStringFilterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleIntFilterTest.hpp b/LiteLoader/include/llapi/mc/SimpleIntFilterTest.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleIntFilterTest.hpp rename to LiteLoader/include/llapi/mc/SimpleIntFilterTest.hpp index b279757..c2393fb 100644 --- a/LiteLoader/Header/MC/SimpleIntFilterTest.hpp +++ b/LiteLoader/include/llapi/mc/SimpleIntFilterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimplePlayerContainer.hpp b/LiteLoader/include/llapi/mc/SimplePlayerContainer.hpp similarity index 96% rename from LiteLoader/Header/MC/SimplePlayerContainer.hpp rename to LiteLoader/include/llapi/mc/SimplePlayerContainer.hpp index 569fa05..3a7f65d 100644 --- a/LiteLoader/Header/MC/SimplePlayerContainer.hpp +++ b/LiteLoader/include/llapi/mc/SimplePlayerContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SimpleContainer.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleTagIDFilterTest.hpp b/LiteLoader/include/llapi/mc/SimpleTagIDFilterTest.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleTagIDFilterTest.hpp rename to LiteLoader/include/llapi/mc/SimpleTagIDFilterTest.hpp index f8aad3d..ea6500a 100644 --- a/LiteLoader/Header/MC/SimpleTagIDFilterTest.hpp +++ b/LiteLoader/include/llapi/mc/SimpleTagIDFilterTest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleTreeCanopy.hpp b/LiteLoader/include/llapi/mc/SimpleTreeCanopy.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/SimpleTreeCanopy.hpp index 8d4dd2e..9b5d0b0 100644 --- a/LiteLoader/Header/MC/SimpleTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/SimpleTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimpleTreeTrunk.hpp b/LiteLoader/include/llapi/mc/SimpleTreeTrunk.hpp similarity index 96% rename from LiteLoader/Header/MC/SimpleTreeTrunk.hpp rename to LiteLoader/include/llapi/mc/SimpleTreeTrunk.hpp index a285d5e..e6145f3 100644 --- a/LiteLoader/Header/MC/SimpleTreeTrunk.hpp +++ b/LiteLoader/include/llapi/mc/SimpleTreeTrunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SimplexNoise.hpp b/LiteLoader/include/llapi/mc/SimplexNoise.hpp similarity index 95% rename from LiteLoader/Header/MC/SimplexNoise.hpp rename to LiteLoader/include/llapi/mc/SimplexNoise.hpp index 0e75fde..bb2dcbc 100644 --- a/LiteLoader/Header/MC/SimplexNoise.hpp +++ b/LiteLoader/include/llapi/mc/SimplexNoise.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SingleBlockFeature.hpp b/LiteLoader/include/llapi/mc/SingleBlockFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/SingleBlockFeature.hpp rename to LiteLoader/include/llapi/mc/SingleBlockFeature.hpp index 76bbbe8..b2358de 100644 --- a/LiteLoader/Header/MC/SingleBlockFeature.hpp +++ b/LiteLoader/include/llapi/mc/SingleBlockFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SitComponent.hpp b/LiteLoader/include/llapi/mc/SitComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/SitComponent.hpp rename to LiteLoader/include/llapi/mc/SitComponent.hpp index 4e216d9..096c433 100644 --- a/LiteLoader/Header/MC/SitComponent.hpp +++ b/LiteLoader/include/llapi/mc/SitComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SitGoal.hpp b/LiteLoader/include/llapi/mc/SitGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SitGoal.hpp rename to LiteLoader/include/llapi/mc/SitGoal.hpp index 1b225c4..75a4864 100644 --- a/LiteLoader/Header/MC/SitGoal.hpp +++ b/LiteLoader/include/llapi/mc/SitGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SittableDefinition.hpp b/LiteLoader/include/llapi/mc/SittableDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SittableDefinition.hpp rename to LiteLoader/include/llapi/mc/SittableDefinition.hpp index 0decf01..ca4a4d2 100644 --- a/LiteLoader/Header/MC/SittableDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SittableDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Skeleton.hpp b/LiteLoader/include/llapi/mc/Skeleton.hpp similarity index 98% rename from LiteLoader/Header/MC/Skeleton.hpp rename to LiteLoader/include/llapi/mc/Skeleton.hpp index c2d76b2..ec0b329 100644 --- a/LiteLoader/Header/MC/Skeleton.hpp +++ b/LiteLoader/include/llapi/mc/Skeleton.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "HumanoidMonster.hpp" diff --git a/LiteLoader/Header/MC/SkeletonHorseTrapGoal.hpp b/LiteLoader/include/llapi/mc/SkeletonHorseTrapGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SkeletonHorseTrapGoal.hpp rename to LiteLoader/include/llapi/mc/SkeletonHorseTrapGoal.hpp index a82b81f..c3c2ecd 100644 --- a/LiteLoader/Header/MC/SkeletonHorseTrapGoal.hpp +++ b/LiteLoader/include/llapi/mc/SkeletonHorseTrapGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SkinIDDescription.hpp b/LiteLoader/include/llapi/mc/SkinIDDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/SkinIDDescription.hpp rename to LiteLoader/include/llapi/mc/SkinIDDescription.hpp index 2b4c6f6..753c094 100644 --- a/LiteLoader/Header/MC/SkinIDDescription.hpp +++ b/LiteLoader/include/llapi/mc/SkinIDDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SkinInfoData.hpp b/LiteLoader/include/llapi/mc/SkinInfoData.hpp similarity index 95% rename from LiteLoader/Header/MC/SkinInfoData.hpp rename to LiteLoader/include/llapi/mc/SkinInfoData.hpp index df64f4e..7f6a97d 100644 --- a/LiteLoader/Header/MC/SkinInfoData.hpp +++ b/LiteLoader/include/llapi/mc/SkinInfoData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SkullBlock.hpp b/LiteLoader/include/llapi/mc/SkullBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/SkullBlock.hpp rename to LiteLoader/include/llapi/mc/SkullBlock.hpp index 735782c..3c6ea08 100644 --- a/LiteLoader/Header/MC/SkullBlock.hpp +++ b/LiteLoader/include/llapi/mc/SkullBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SkullBlockActor.hpp b/LiteLoader/include/llapi/mc/SkullBlockActor.hpp similarity index 97% rename from LiteLoader/Header/MC/SkullBlockActor.hpp rename to LiteLoader/include/llapi/mc/SkullBlockActor.hpp index f85c9eb..a97d23b 100644 --- a/LiteLoader/Header/MC/SkullBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/SkullBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SkullItem.hpp b/LiteLoader/include/llapi/mc/SkullItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SkullItem.hpp rename to LiteLoader/include/llapi/mc/SkullItem.hpp index 2cd5376..5aace98 100644 --- a/LiteLoader/Header/MC/SkullItem.hpp +++ b/LiteLoader/include/llapi/mc/SkullItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlabBlock.hpp b/LiteLoader/include/llapi/mc/SlabBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/SlabBlock.hpp rename to LiteLoader/include/llapi/mc/SlabBlock.hpp index 2bb7f45..31f5851 100644 --- a/LiteLoader/Header/MC/SlabBlock.hpp +++ b/LiteLoader/include/llapi/mc/SlabBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlabBlockItem.hpp b/LiteLoader/include/llapi/mc/SlabBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SlabBlockItem.hpp rename to LiteLoader/include/llapi/mc/SlabBlockItem.hpp index d331bed..f02cd7d 100644 --- a/LiteLoader/Header/MC/SlabBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/SlabBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SleepGoal.hpp b/LiteLoader/include/llapi/mc/SleepGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SleepGoal.hpp rename to LiteLoader/include/llapi/mc/SleepGoal.hpp index b5ea90a..a540503 100644 --- a/LiteLoader/Header/MC/SleepGoal.hpp +++ b/LiteLoader/include/llapi/mc/SleepGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveToPOIGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SleepState.hpp b/LiteLoader/include/llapi/mc/SleepState.hpp similarity index 95% rename from LiteLoader/Header/MC/SleepState.hpp rename to LiteLoader/include/llapi/mc/SleepState.hpp index 591e442..f759aed 100644 --- a/LiteLoader/Header/MC/SleepState.hpp +++ b/LiteLoader/include/llapi/mc/SleepState.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Slime.hpp b/LiteLoader/include/llapi/mc/Slime.hpp similarity index 99% rename from LiteLoader/Header/MC/Slime.hpp rename to LiteLoader/include/llapi/mc/Slime.hpp index 5144227..86955a8 100644 --- a/LiteLoader/Header/MC/Slime.hpp +++ b/LiteLoader/include/llapi/mc/Slime.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/SlimeAttackDefinition.hpp b/LiteLoader/include/llapi/mc/SlimeAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/SlimeAttackDefinition.hpp index b4ea860..5ac633f 100644 --- a/LiteLoader/Header/MC/SlimeAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SlimeAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeAttackGoal.hpp b/LiteLoader/include/llapi/mc/SlimeAttackGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeAttackGoal.hpp rename to LiteLoader/include/llapi/mc/SlimeAttackGoal.hpp index 6d1c25a..dab7a97 100644 --- a/LiteLoader/Header/MC/SlimeAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/SlimeAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeBlock.hpp b/LiteLoader/include/llapi/mc/SlimeBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/SlimeBlock.hpp rename to LiteLoader/include/llapi/mc/SlimeBlock.hpp index 3a4326a..ab1ecf4 100644 --- a/LiteLoader/Header/MC/SlimeBlock.hpp +++ b/LiteLoader/include/llapi/mc/SlimeBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeFloatDefinition.hpp b/LiteLoader/include/llapi/mc/SlimeFloatDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeFloatDefinition.hpp rename to LiteLoader/include/llapi/mc/SlimeFloatDefinition.hpp index 803ba34..39eb688 100644 --- a/LiteLoader/Header/MC/SlimeFloatDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SlimeFloatDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeFloatGoal.hpp b/LiteLoader/include/llapi/mc/SlimeFloatGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeFloatGoal.hpp rename to LiteLoader/include/llapi/mc/SlimeFloatGoal.hpp index 226e9c8..e7b003e 100644 --- a/LiteLoader/Header/MC/SlimeFloatGoal.hpp +++ b/LiteLoader/include/llapi/mc/SlimeFloatGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeKeepOnJumpingDefinition.hpp b/LiteLoader/include/llapi/mc/SlimeKeepOnJumpingDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeKeepOnJumpingDefinition.hpp rename to LiteLoader/include/llapi/mc/SlimeKeepOnJumpingDefinition.hpp index b2a7e79..811ce75 100644 --- a/LiteLoader/Header/MC/SlimeKeepOnJumpingDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SlimeKeepOnJumpingDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeKeepOnJumpingGoal.hpp b/LiteLoader/include/llapi/mc/SlimeKeepOnJumpingGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeKeepOnJumpingGoal.hpp rename to LiteLoader/include/llapi/mc/SlimeKeepOnJumpingGoal.hpp index a8b5a54..8e1cda5 100644 --- a/LiteLoader/Header/MC/SlimeKeepOnJumpingGoal.hpp +++ b/LiteLoader/include/llapi/mc/SlimeKeepOnJumpingGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeMoveControl.hpp b/LiteLoader/include/llapi/mc/SlimeMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeMoveControl.hpp rename to LiteLoader/include/llapi/mc/SlimeMoveControl.hpp index 29554cd..d277948 100644 --- a/LiteLoader/Header/MC/SlimeMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/SlimeMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeMoveControlDescription.hpp b/LiteLoader/include/llapi/mc/SlimeMoveControlDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeMoveControlDescription.hpp rename to LiteLoader/include/llapi/mc/SlimeMoveControlDescription.hpp index c7b5487..33cb586 100644 --- a/LiteLoader/Header/MC/SlimeMoveControlDescription.hpp +++ b/LiteLoader/include/llapi/mc/SlimeMoveControlDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeRandomDirectionDefinition.hpp b/LiteLoader/include/llapi/mc/SlimeRandomDirectionDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SlimeRandomDirectionDefinition.hpp rename to LiteLoader/include/llapi/mc/SlimeRandomDirectionDefinition.hpp index 2725c28..a2dfb67 100644 --- a/LiteLoader/Header/MC/SlimeRandomDirectionDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SlimeRandomDirectionDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlimeRandomDirectionGoal.hpp b/LiteLoader/include/llapi/mc/SlimeRandomDirectionGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SlimeRandomDirectionGoal.hpp rename to LiteLoader/include/llapi/mc/SlimeRandomDirectionGoal.hpp index 0bb52ed..3653049 100644 --- a/LiteLoader/Header/MC/SlimeRandomDirectionGoal.hpp +++ b/LiteLoader/include/llapi/mc/SlimeRandomDirectionGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlotData.hpp b/LiteLoader/include/llapi/mc/SlotData.hpp similarity index 95% rename from LiteLoader/Header/MC/SlotData.hpp rename to LiteLoader/include/llapi/mc/SlotData.hpp index b8516c6..89c292b 100644 --- a/LiteLoader/Header/MC/SlotData.hpp +++ b/LiteLoader/include/llapi/mc/SlotData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SlotDescriptor.hpp b/LiteLoader/include/llapi/mc/SlotDescriptor.hpp similarity index 95% rename from LiteLoader/Header/MC/SlotDescriptor.hpp rename to LiteLoader/include/llapi/mc/SlotDescriptor.hpp index 890a05a..ade4c3b 100644 --- a/LiteLoader/Header/MC/SlotDescriptor.hpp +++ b/LiteLoader/include/llapi/mc/SlotDescriptor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SmallFireball.hpp b/LiteLoader/include/llapi/mc/SmallFireball.hpp similarity index 98% rename from LiteLoader/Header/MC/SmallFireball.hpp rename to LiteLoader/include/llapi/mc/SmallFireball.hpp index 553f728..e0b7ae8 100644 --- a/LiteLoader/Header/MC/SmallFireball.hpp +++ b/LiteLoader/include/llapi/mc/SmallFireball.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Fireball.hpp" diff --git a/LiteLoader/Header/MC/SmeltItemFunction.hpp b/LiteLoader/include/llapi/mc/SmeltItemFunction.hpp similarity index 96% rename from LiteLoader/Header/MC/SmeltItemFunction.hpp rename to LiteLoader/include/llapi/mc/SmeltItemFunction.hpp index ecf4512..1d3df2a 100644 --- a/LiteLoader/Header/MC/SmeltItemFunction.hpp +++ b/LiteLoader/include/llapi/mc/SmeltItemFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SmithingTableBlock.hpp b/LiteLoader/include/llapi/mc/SmithingTableBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/SmithingTableBlock.hpp rename to LiteLoader/include/llapi/mc/SmithingTableBlock.hpp index 2ed2cd2..cf70d28 100644 --- a/LiteLoader/Header/MC/SmithingTableBlock.hpp +++ b/LiteLoader/include/llapi/mc/SmithingTableBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SmithingTableContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/SmithingTableContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/SmithingTableContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/SmithingTableContainerManagerModel.hpp index 61865f9..f93fed4 100644 --- a/LiteLoader/Header/MC/SmithingTableContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/SmithingTableContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SmokerBlock.hpp b/LiteLoader/include/llapi/mc/SmokerBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/SmokerBlock.hpp rename to LiteLoader/include/llapi/mc/SmokerBlock.hpp index 1cd8d94..8c405b4 100644 --- a/LiteLoader/Header/MC/SmokerBlock.hpp +++ b/LiteLoader/include/llapi/mc/SmokerBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FurnaceBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SmokerBlockActor.hpp b/LiteLoader/include/llapi/mc/SmokerBlockActor.hpp similarity index 95% rename from LiteLoader/Header/MC/SmokerBlockActor.hpp rename to LiteLoader/include/llapi/mc/SmokerBlockActor.hpp index f24d45b..929ccf4 100644 --- a/LiteLoader/Header/MC/SmokerBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/SmokerBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SmokerContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/SmokerContainerManagerModel.hpp similarity index 96% rename from LiteLoader/Header/MC/SmokerContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/SmokerContainerManagerModel.hpp index c5ec10a..87b6adb 100644 --- a/LiteLoader/Header/MC/SmokerContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/SmokerContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FurnaceContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SmoothStoneSelector.hpp b/LiteLoader/include/llapi/mc/SmoothStoneSelector.hpp similarity index 96% rename from LiteLoader/Header/MC/SmoothStoneSelector.hpp rename to LiteLoader/include/llapi/mc/SmoothStoneSelector.hpp index 7de42ea..e0a7002 100644 --- a/LiteLoader/Header/MC/SmoothStoneSelector.hpp +++ b/LiteLoader/include/llapi/mc/SmoothStoneSelector.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SnackGoal.hpp b/LiteLoader/include/llapi/mc/SnackGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SnackGoal.hpp rename to LiteLoader/include/llapi/mc/SnackGoal.hpp index c0dfd4a..1eb628c 100644 --- a/LiteLoader/Header/MC/SnackGoal.hpp +++ b/LiteLoader/include/llapi/mc/SnackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SnapshotEnv.hpp b/LiteLoader/include/llapi/mc/SnapshotEnv.hpp similarity index 98% rename from LiteLoader/Header/MC/SnapshotEnv.hpp rename to LiteLoader/include/llapi/mc/SnapshotEnv.hpp index 147fe49..6b572ff 100644 --- a/LiteLoader/Header/MC/SnapshotEnv.hpp +++ b/LiteLoader/include/llapi/mc/SnapshotEnv.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "TransactionalWorldBlockTarget.hpp" diff --git a/LiteLoader/Header/MC/SnapshotFilenameAndLength.hpp b/LiteLoader/include/llapi/mc/SnapshotFilenameAndLength.hpp similarity index 95% rename from LiteLoader/Header/MC/SnapshotFilenameAndLength.hpp rename to LiteLoader/include/llapi/mc/SnapshotFilenameAndLength.hpp index 1f265b4..32994ef 100644 --- a/LiteLoader/Header/MC/SnapshotFilenameAndLength.hpp +++ b/LiteLoader/include/llapi/mc/SnapshotFilenameAndLength.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SnapshotWritableFile.hpp b/LiteLoader/include/llapi/mc/SnapshotWritableFile.hpp similarity index 96% rename from LiteLoader/Header/MC/SnapshotWritableFile.hpp rename to LiteLoader/include/llapi/mc/SnapshotWritableFile.hpp index f019125..2b31c49 100644 --- a/LiteLoader/Header/MC/SnapshotWritableFile.hpp +++ b/LiteLoader/include/llapi/mc/SnapshotWritableFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SneezeGoal.hpp b/LiteLoader/include/llapi/mc/SneezeGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SneezeGoal.hpp rename to LiteLoader/include/llapi/mc/SneezeGoal.hpp index c3cbc36..8f766d8 100644 --- a/LiteLoader/Header/MC/SneezeGoal.hpp +++ b/LiteLoader/include/llapi/mc/SneezeGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SnowBlock.hpp b/LiteLoader/include/llapi/mc/SnowBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/SnowBlock.hpp rename to LiteLoader/include/llapi/mc/SnowBlock.hpp index 169e429..f9d09a5 100644 --- a/LiteLoader/Header/MC/SnowBlock.hpp +++ b/LiteLoader/include/llapi/mc/SnowBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Snowball.hpp b/LiteLoader/include/llapi/mc/Snowball.hpp similarity index 98% rename from LiteLoader/Header/MC/Snowball.hpp rename to LiteLoader/include/llapi/mc/Snowball.hpp index d5f9a36..ee0d04f 100644 --- a/LiteLoader/Header/MC/Snowball.hpp +++ b/LiteLoader/include/llapi/mc/Snowball.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Throwable.hpp" diff --git a/LiteLoader/Header/MC/SnowballItem.hpp b/LiteLoader/include/llapi/mc/SnowballItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SnowballItem.hpp rename to LiteLoader/include/llapi/mc/SnowballItem.hpp index 16a581a..5e78310 100644 --- a/LiteLoader/Header/MC/SnowballItem.hpp +++ b/LiteLoader/include/llapi/mc/SnowballItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Social.hpp b/LiteLoader/include/llapi/mc/Social.hpp similarity index 98% rename from LiteLoader/Header/MC/Social.hpp rename to LiteLoader/include/llapi/mc/Social.hpp index d8e8270..cee7124 100644 --- a/LiteLoader/Header/MC/Social.hpp +++ b/LiteLoader/include/llapi/mc/Social.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SortItemInstanceIdAux.hpp b/LiteLoader/include/llapi/mc/SortItemInstanceIdAux.hpp similarity index 95% rename from LiteLoader/Header/MC/SortItemInstanceIdAux.hpp rename to LiteLoader/include/llapi/mc/SortItemInstanceIdAux.hpp index a245cfc..f10167d 100644 --- a/LiteLoader/Header/MC/SortItemInstanceIdAux.hpp +++ b/LiteLoader/include/llapi/mc/SortItemInstanceIdAux.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SoulSandBlock.hpp b/LiteLoader/include/llapi/mc/SoulSandBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/SoulSandBlock.hpp rename to LiteLoader/include/llapi/mc/SoulSandBlock.hpp index 62eb81d..3568618 100644 --- a/LiteLoader/Header/MC/SoulSandBlock.hpp +++ b/LiteLoader/include/llapi/mc/SoulSandBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SoulSpeedEnchant.hpp b/LiteLoader/include/llapi/mc/SoulSpeedEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/SoulSpeedEnchant.hpp rename to LiteLoader/include/llapi/mc/SoulSpeedEnchant.hpp index f3667cc..6581a1f 100644 --- a/LiteLoader/Header/MC/SoulSpeedEnchant.hpp +++ b/LiteLoader/include/llapi/mc/SoulSpeedEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SoulTorchBlock.hpp b/LiteLoader/include/llapi/mc/SoulTorchBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/SoulTorchBlock.hpp rename to LiteLoader/include/llapi/mc/SoulTorchBlock.hpp index c0d7ae0..e3b4c25 100644 --- a/LiteLoader/Header/MC/SoulTorchBlock.hpp +++ b/LiteLoader/include/llapi/mc/SoulTorchBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TorchBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SoundPlayerInterface.hpp b/LiteLoader/include/llapi/mc/SoundPlayerInterface.hpp similarity index 95% rename from LiteLoader/Header/MC/SoundPlayerInterface.hpp rename to LiteLoader/include/llapi/mc/SoundPlayerInterface.hpp index 4f0e9cd..b5c9524 100644 --- a/LiteLoader/Header/MC/SoundPlayerInterface.hpp +++ b/LiteLoader/include/llapi/mc/SoundPlayerInterface.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SoundVolumeDescription.hpp b/LiteLoader/include/llapi/mc/SoundVolumeDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/SoundVolumeDescription.hpp rename to LiteLoader/include/llapi/mc/SoundVolumeDescription.hpp index f78e58c..e426bf9 100644 --- a/LiteLoader/Header/MC/SoundVolumeDescription.hpp +++ b/LiteLoader/include/llapi/mc/SoundVolumeDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SparklerItem.hpp b/LiteLoader/include/llapi/mc/SparklerItem.hpp similarity index 99% rename from LiteLoader/Header/MC/SparklerItem.hpp rename to LiteLoader/include/llapi/mc/SparklerItem.hpp index 59a43ba..963024f 100644 --- a/LiteLoader/Header/MC/SparklerItem.hpp +++ b/LiteLoader/include/llapi/mc/SparklerItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChemistryStickItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SparseContainer.hpp b/LiteLoader/include/llapi/mc/SparseContainer.hpp similarity index 98% rename from LiteLoader/Header/MC/SparseContainer.hpp rename to LiteLoader/include/llapi/mc/SparseContainer.hpp index eb692d5..582e60c 100644 --- a/LiteLoader/Header/MC/SparseContainer.hpp +++ b/LiteLoader/include/llapi/mc/SparseContainer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpatialActorNetworkData.hpp b/LiteLoader/include/llapi/mc/SpatialActorNetworkData.hpp similarity index 96% rename from LiteLoader/Header/MC/SpatialActorNetworkData.hpp rename to LiteLoader/include/llapi/mc/SpatialActorNetworkData.hpp index a4f9118..2753b46 100644 --- a/LiteLoader/Header/MC/SpatialActorNetworkData.hpp +++ b/LiteLoader/include/llapi/mc/SpatialActorNetworkData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnActorComponent.hpp b/LiteLoader/include/llapi/mc/SpawnActorComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/SpawnActorComponent.hpp rename to LiteLoader/include/llapi/mc/SpawnActorComponent.hpp index 9343305..72d0794 100644 --- a/LiteLoader/Header/MC/SpawnActorComponent.hpp +++ b/LiteLoader/include/llapi/mc/SpawnActorComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnActorDefinition.hpp b/LiteLoader/include/llapi/mc/SpawnActorDefinition.hpp similarity index 97% rename from LiteLoader/Header/MC/SpawnActorDefinition.hpp rename to LiteLoader/include/llapi/mc/SpawnActorDefinition.hpp index b0c98da..79d70c0 100644 --- a/LiteLoader/Header/MC/SpawnActorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SpawnActorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "JsonUtil.hpp" diff --git a/LiteLoader/Header/MC/SpawnActorEntry.hpp b/LiteLoader/include/llapi/mc/SpawnActorEntry.hpp similarity index 95% rename from LiteLoader/Header/MC/SpawnActorEntry.hpp rename to LiteLoader/include/llapi/mc/SpawnActorEntry.hpp index a81b9a2..950eb2b 100644 --- a/LiteLoader/Header/MC/SpawnActorEntry.hpp +++ b/LiteLoader/include/llapi/mc/SpawnActorEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnActorParameters.hpp b/LiteLoader/include/llapi/mc/SpawnActorParameters.hpp similarity index 97% rename from LiteLoader/Header/MC/SpawnActorParameters.hpp rename to LiteLoader/include/llapi/mc/SpawnActorParameters.hpp index a3ea603..c7ffd60 100644 --- a/LiteLoader/Header/MC/SpawnActorParameters.hpp +++ b/LiteLoader/include/llapi/mc/SpawnActorParameters.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnActorSystem.hpp b/LiteLoader/include/llapi/mc/SpawnActorSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/SpawnActorSystem.hpp rename to LiteLoader/include/llapi/mc/SpawnActorSystem.hpp index cb320c1..a858ee2 100644 --- a/LiteLoader/Header/MC/SpawnActorSystem.hpp +++ b/LiteLoader/include/llapi/mc/SpawnActorSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnAoECloudSubcomponent.hpp b/LiteLoader/include/llapi/mc/SpawnAoECloudSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/SpawnAoECloudSubcomponent.hpp rename to LiteLoader/include/llapi/mc/SpawnAoECloudSubcomponent.hpp index 653027c..7874473 100644 --- a/LiteLoader/Header/MC/SpawnAoECloudSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/SpawnAoECloudSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnChanceSubcomponent.hpp b/LiteLoader/include/llapi/mc/SpawnChanceSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/SpawnChanceSubcomponent.hpp rename to LiteLoader/include/llapi/mc/SpawnChanceSubcomponent.hpp index 32c43f1..ec13f7f 100644 --- a/LiteLoader/Header/MC/SpawnChanceSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/SpawnChanceSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnData.hpp b/LiteLoader/include/llapi/mc/SpawnData.hpp similarity index 95% rename from LiteLoader/Header/MC/SpawnData.hpp rename to LiteLoader/include/llapi/mc/SpawnData.hpp index dad8dc5..589ab1a 100644 --- a/LiteLoader/Header/MC/SpawnData.hpp +++ b/LiteLoader/include/llapi/mc/SpawnData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnExperienceOrbPacket.hpp b/LiteLoader/include/llapi/mc/SpawnExperienceOrbPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SpawnExperienceOrbPacket.hpp rename to LiteLoader/include/llapi/mc/SpawnExperienceOrbPacket.hpp index 9432bae..125eea2 100644 --- a/LiteLoader/Header/MC/SpawnExperienceOrbPacket.hpp +++ b/LiteLoader/include/llapi/mc/SpawnExperienceOrbPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnFinder.hpp b/LiteLoader/include/llapi/mc/SpawnFinder.hpp similarity index 96% rename from LiteLoader/Header/MC/SpawnFinder.hpp rename to LiteLoader/include/llapi/mc/SpawnFinder.hpp index 460f695..974c107 100644 --- a/LiteLoader/Header/MC/SpawnFinder.hpp +++ b/LiteLoader/include/llapi/mc/SpawnFinder.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnGroupRegistry.hpp b/LiteLoader/include/llapi/mc/SpawnGroupRegistry.hpp similarity index 97% rename from LiteLoader/Header/MC/SpawnGroupRegistry.hpp rename to LiteLoader/include/llapi/mc/SpawnGroupRegistry.hpp index 2cc9b76..17ade21 100644 --- a/LiteLoader/Header/MC/SpawnGroupRegistry.hpp +++ b/LiteLoader/include/llapi/mc/SpawnGroupRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnParticleEffectPacket.hpp b/LiteLoader/include/llapi/mc/SpawnParticleEffectPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SpawnParticleEffectPacket.hpp rename to LiteLoader/include/llapi/mc/SpawnParticleEffectPacket.hpp index 7cb9795..327d02d 100644 --- a/LiteLoader/Header/MC/SpawnParticleEffectPacket.hpp +++ b/LiteLoader/include/llapi/mc/SpawnParticleEffectPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnPointCommand.hpp b/LiteLoader/include/llapi/mc/SpawnPointCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/SpawnPointCommand.hpp rename to LiteLoader/include/llapi/mc/SpawnPointCommand.hpp index 4fbe48c..b62a90e 100644 --- a/LiteLoader/Header/MC/SpawnPointCommand.hpp +++ b/LiteLoader/include/llapi/mc/SpawnPointCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpawnSettings.hpp b/LiteLoader/include/llapi/mc/SpawnSettings.hpp similarity index 95% rename from LiteLoader/Header/MC/SpawnSettings.hpp rename to LiteLoader/include/llapi/mc/SpawnSettings.hpp index 97e431d..2d51336 100644 --- a/LiteLoader/Header/MC/SpawnSettings.hpp +++ b/LiteLoader/include/llapi/mc/SpawnSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Spawner.hpp b/LiteLoader/include/llapi/mc/Spawner.hpp similarity index 99% rename from LiteLoader/Header/MC/Spawner.hpp rename to LiteLoader/include/llapi/mc/Spawner.hpp index 450ba4c..2caba14 100644 --- a/LiteLoader/Header/MC/Spawner.hpp +++ b/LiteLoader/include/llapi/mc/Spawner.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LevelChunk.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpecificEnchantFunction.hpp b/LiteLoader/include/llapi/mc/SpecificEnchantFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/SpecificEnchantFunction.hpp rename to LiteLoader/include/llapi/mc/SpecificEnchantFunction.hpp index 29123be..9b4de8a 100644 --- a/LiteLoader/Header/MC/SpecificEnchantFunction.hpp +++ b/LiteLoader/include/llapi/mc/SpecificEnchantFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "LootItemFunction.hpp" diff --git a/LiteLoader/Header/MC/Spider.hpp b/LiteLoader/include/llapi/mc/Spider.hpp similarity index 98% rename from LiteLoader/Header/MC/Spider.hpp rename to LiteLoader/include/llapi/mc/Spider.hpp index a938d09..795daf2 100644 --- a/LiteLoader/Header/MC/Spider.hpp +++ b/LiteLoader/include/llapi/mc/Spider.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/SpikeFeature.hpp b/LiteLoader/include/llapi/mc/SpikeFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/SpikeFeature.hpp rename to LiteLoader/include/llapi/mc/SpikeFeature.hpp index 6a42267..4d7a11e 100644 --- a/LiteLoader/Header/MC/SpikeFeature.hpp +++ b/LiteLoader/include/llapi/mc/SpikeFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpinLock.hpp b/LiteLoader/include/llapi/mc/SpinLock.hpp similarity index 95% rename from LiteLoader/Header/MC/SpinLock.hpp rename to LiteLoader/include/llapi/mc/SpinLock.hpp index bf8e67f..13d795d 100644 --- a/LiteLoader/Header/MC/SpinLock.hpp +++ b/LiteLoader/include/llapi/mc/SpinLock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SplashPotionEffectSubcomponent.hpp b/LiteLoader/include/llapi/mc/SplashPotionEffectSubcomponent.hpp similarity index 97% rename from LiteLoader/Header/MC/SplashPotionEffectSubcomponent.hpp rename to LiteLoader/include/llapi/mc/SplashPotionEffectSubcomponent.hpp index 227b4e1..1091ddf 100644 --- a/LiteLoader/Header/MC/SplashPotionEffectSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/SplashPotionEffectSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SplashPotionItem.hpp b/LiteLoader/include/llapi/mc/SplashPotionItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SplashPotionItem.hpp rename to LiteLoader/include/llapi/mc/SplashPotionItem.hpp index eb8f90b..5bbf508 100644 --- a/LiteLoader/Header/MC/SplashPotionItem.hpp +++ b/LiteLoader/include/llapi/mc/SplashPotionItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Potion.hpp" #include "PotionItem.hpp" diff --git a/LiteLoader/Header/MC/SpongeBlock.hpp b/LiteLoader/include/llapi/mc/SpongeBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/SpongeBlock.hpp rename to LiteLoader/include/llapi/mc/SpongeBlock.hpp index bc01de4..0f11cdd 100644 --- a/LiteLoader/Header/MC/SpongeBlock.hpp +++ b/LiteLoader/include/llapi/mc/SpongeBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpreadPlayersCommand.hpp b/LiteLoader/include/llapi/mc/SpreadPlayersCommand.hpp similarity index 98% rename from LiteLoader/Header/MC/SpreadPlayersCommand.hpp rename to LiteLoader/include/llapi/mc/SpreadPlayersCommand.hpp index f90eac1..beccb5d 100644 --- a/LiteLoader/Header/MC/SpreadPlayersCommand.hpp +++ b/LiteLoader/include/llapi/mc/SpreadPlayersCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpringFeature.hpp b/LiteLoader/include/llapi/mc/SpringFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/SpringFeature.hpp rename to LiteLoader/include/llapi/mc/SpringFeature.hpp index fda8e58..f0cc1a9 100644 --- a/LiteLoader/Header/MC/SpringFeature.hpp +++ b/LiteLoader/include/llapi/mc/SpringFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SpruceTreeCanopy.hpp b/LiteLoader/include/llapi/mc/SpruceTreeCanopy.hpp similarity index 96% rename from LiteLoader/Header/MC/SpruceTreeCanopy.hpp rename to LiteLoader/include/llapi/mc/SpruceTreeCanopy.hpp index 2d5ccb1..4fe12e8 100644 --- a/LiteLoader/Header/MC/SpruceTreeCanopy.hpp +++ b/LiteLoader/include/llapi/mc/SpruceTreeCanopy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TreeHelper.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Squid.hpp b/LiteLoader/include/llapi/mc/Squid.hpp similarity index 98% rename from LiteLoader/Header/MC/Squid.hpp rename to LiteLoader/include/llapi/mc/Squid.hpp index 9a25302..255c8dd 100644 --- a/LiteLoader/Header/MC/Squid.hpp +++ b/LiteLoader/include/llapi/mc/Squid.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/SquidDiveGoal.hpp b/LiteLoader/include/llapi/mc/SquidDiveGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SquidDiveGoal.hpp rename to LiteLoader/include/llapi/mc/SquidDiveGoal.hpp index 8605106..900af19 100644 --- a/LiteLoader/Header/MC/SquidDiveGoal.hpp +++ b/LiteLoader/include/llapi/mc/SquidDiveGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SquidFleeGoal.hpp b/LiteLoader/include/llapi/mc/SquidFleeGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SquidFleeGoal.hpp rename to LiteLoader/include/llapi/mc/SquidFleeGoal.hpp index 733eb58..6091682 100644 --- a/LiteLoader/Header/MC/SquidFleeGoal.hpp +++ b/LiteLoader/include/llapi/mc/SquidFleeGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SquidIdleGoal.hpp b/LiteLoader/include/llapi/mc/SquidIdleGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SquidIdleGoal.hpp rename to LiteLoader/include/llapi/mc/SquidIdleGoal.hpp index 3f15220..1467ed1 100644 --- a/LiteLoader/Header/MC/SquidIdleGoal.hpp +++ b/LiteLoader/include/llapi/mc/SquidIdleGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SquidMoveAwayFromGroundGoal.hpp b/LiteLoader/include/llapi/mc/SquidMoveAwayFromGroundGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SquidMoveAwayFromGroundGoal.hpp rename to LiteLoader/include/llapi/mc/SquidMoveAwayFromGroundGoal.hpp index 3b60772..184f212 100644 --- a/LiteLoader/Header/MC/SquidMoveAwayFromGroundGoal.hpp +++ b/LiteLoader/include/llapi/mc/SquidMoveAwayFromGroundGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SquidOutOfWaterGoal.hpp b/LiteLoader/include/llapi/mc/SquidOutOfWaterGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SquidOutOfWaterGoal.hpp rename to LiteLoader/include/llapi/mc/SquidOutOfWaterGoal.hpp index 25a6274..b4f454f 100644 --- a/LiteLoader/Header/MC/SquidOutOfWaterGoal.hpp +++ b/LiteLoader/include/llapi/mc/SquidOutOfWaterGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StackResultStorageFeature.hpp b/LiteLoader/include/llapi/mc/StackResultStorageFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/StackResultStorageFeature.hpp rename to LiteLoader/include/llapi/mc/StackResultStorageFeature.hpp index 2097b3f..968622a 100644 --- a/LiteLoader/Header/MC/StackResultStorageFeature.hpp +++ b/LiteLoader/include/llapi/mc/StackResultStorageFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StainedGlassBlock.hpp b/LiteLoader/include/llapi/mc/StainedGlassBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StainedGlassBlock.hpp rename to LiteLoader/include/llapi/mc/StainedGlassBlock.hpp index 730346f..bb5e8e1 100644 --- a/LiteLoader/Header/MC/StainedGlassBlock.hpp +++ b/LiteLoader/include/llapi/mc/StainedGlassBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StainedGlassPaneBlock.hpp b/LiteLoader/include/llapi/mc/StainedGlassPaneBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StainedGlassPaneBlock.hpp rename to LiteLoader/include/llapi/mc/StainedGlassPaneBlock.hpp index 6bb2f33..8e153cf 100644 --- a/LiteLoader/Header/MC/StainedGlassPaneBlock.hpp +++ b/LiteLoader/include/llapi/mc/StainedGlassPaneBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ThinFenceBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StairBlock.hpp b/LiteLoader/include/llapi/mc/StairBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/StairBlock.hpp rename to LiteLoader/include/llapi/mc/StairBlock.hpp index 3de95c1..761d5be 100644 --- a/LiteLoader/Header/MC/StairBlock.hpp +++ b/LiteLoader/include/llapi/mc/StairBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StalkAndPounceOnTargetGoal.hpp b/LiteLoader/include/llapi/mc/StalkAndPounceOnTargetGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/StalkAndPounceOnTargetGoal.hpp rename to LiteLoader/include/llapi/mc/StalkAndPounceOnTargetGoal.hpp index aabbdb7..1e57ee3 100644 --- a/LiteLoader/Header/MC/StalkAndPounceOnTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/StalkAndPounceOnTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StartGamePacket.hpp b/LiteLoader/include/llapi/mc/StartGamePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/StartGamePacket.hpp rename to LiteLoader/include/llapi/mc/StartGamePacket.hpp index 0981301..1d1991d 100644 --- a/LiteLoader/Header/MC/StartGamePacket.hpp +++ b/LiteLoader/include/llapi/mc/StartGamePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StartScreenCapabilities.hpp b/LiteLoader/include/llapi/mc/StartScreenCapabilities.hpp similarity index 96% rename from LiteLoader/Header/MC/StartScreenCapabilities.hpp rename to LiteLoader/include/llapi/mc/StartScreenCapabilities.hpp index b4560b7..a90393c 100644 --- a/LiteLoader/Header/MC/StartScreenCapabilities.hpp +++ b/LiteLoader/include/llapi/mc/StartScreenCapabilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StateSerializationUtils.hpp b/LiteLoader/include/llapi/mc/StateSerializationUtils.hpp similarity index 91% rename from LiteLoader/Header/MC/StateSerializationUtils.hpp rename to LiteLoader/include/llapi/mc/StateSerializationUtils.hpp index b8348f2..487096d 100644 --- a/LiteLoader/Header/MC/StateSerializationUtils.hpp +++ b/LiteLoader/include/llapi/mc/StateSerializationUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StemBlock.hpp b/LiteLoader/include/llapi/mc/StemBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/StemBlock.hpp rename to LiteLoader/include/llapi/mc/StemBlock.hpp index c39d470..e0b7287 100644 --- a/LiteLoader/Header/MC/StemBlock.hpp +++ b/LiteLoader/include/llapi/mc/StemBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StickInGroundSubcomponent.hpp b/LiteLoader/include/llapi/mc/StickInGroundSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/StickInGroundSubcomponent.hpp rename to LiteLoader/include/llapi/mc/StickInGroundSubcomponent.hpp index 44b3e09..ea139c0 100644 --- a/LiteLoader/Header/MC/StickInGroundSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/StickInGroundSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StompAttackDefinition.hpp b/LiteLoader/include/llapi/mc/StompAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/StompAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/StompAttackDefinition.hpp index 53f8562..8fb6633 100644 --- a/LiteLoader/Header/MC/StompAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/StompAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StompAttackGoal.hpp b/LiteLoader/include/llapi/mc/StompAttackGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/StompAttackGoal.hpp rename to LiteLoader/include/llapi/mc/StompAttackGoal.hpp index 509dc49..86cdefd 100644 --- a/LiteLoader/Header/MC/StompAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/StompAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MeleeAttackGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StompBlockGoal.hpp b/LiteLoader/include/llapi/mc/StompBlockGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/StompBlockGoal.hpp rename to LiteLoader/include/llapi/mc/StompBlockGoal.hpp index c99e12e..cf6a928 100644 --- a/LiteLoader/Header/MC/StompBlockGoal.hpp +++ b/LiteLoader/include/llapi/mc/StompBlockGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StompEggGoal.hpp b/LiteLoader/include/llapi/mc/StompEggGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/StompEggGoal.hpp rename to LiteLoader/include/llapi/mc/StompEggGoal.hpp index ae61cca..7347307 100644 --- a/LiteLoader/Header/MC/StompEggGoal.hpp +++ b/LiteLoader/include/llapi/mc/StompEggGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseMoveToGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneBlock.hpp b/LiteLoader/include/llapi/mc/StoneBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StoneBlock.hpp rename to LiteLoader/include/llapi/mc/StoneBlock.hpp index bc96b41..4c7bee0 100644 --- a/LiteLoader/Header/MC/StoneBlock.hpp +++ b/LiteLoader/include/llapi/mc/StoneBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneBrickBlock.hpp b/LiteLoader/include/llapi/mc/StoneBrickBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StoneBrickBlock.hpp rename to LiteLoader/include/llapi/mc/StoneBrickBlock.hpp index e171a16..536c3ba 100644 --- a/LiteLoader/Header/MC/StoneBrickBlock.hpp +++ b/LiteLoader/include/llapi/mc/StoneBrickBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneButtonBlock.hpp b/LiteLoader/include/llapi/mc/StoneButtonBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StoneButtonBlock.hpp rename to LiteLoader/include/llapi/mc/StoneButtonBlock.hpp index d954c70..873fdaa 100644 --- a/LiteLoader/Header/MC/StoneButtonBlock.hpp +++ b/LiteLoader/include/llapi/mc/StoneButtonBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ButtonBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneSlabBlock.hpp b/LiteLoader/include/llapi/mc/StoneSlabBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StoneSlabBlock.hpp rename to LiteLoader/include/llapi/mc/StoneSlabBlock.hpp index 6ecfe3c..919a361 100644 --- a/LiteLoader/Header/MC/StoneSlabBlock.hpp +++ b/LiteLoader/include/llapi/mc/StoneSlabBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SlabBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneSlabBlock2.hpp b/LiteLoader/include/llapi/mc/StoneSlabBlock2.hpp similarity index 98% rename from LiteLoader/Header/MC/StoneSlabBlock2.hpp rename to LiteLoader/include/llapi/mc/StoneSlabBlock2.hpp index 277eebe..34c27e1 100644 --- a/LiteLoader/Header/MC/StoneSlabBlock2.hpp +++ b/LiteLoader/include/llapi/mc/StoneSlabBlock2.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SlabBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneSlabBlock3.hpp b/LiteLoader/include/llapi/mc/StoneSlabBlock3.hpp similarity index 98% rename from LiteLoader/Header/MC/StoneSlabBlock3.hpp rename to LiteLoader/include/llapi/mc/StoneSlabBlock3.hpp index 1c32c03..66f9a93 100644 --- a/LiteLoader/Header/MC/StoneSlabBlock3.hpp +++ b/LiteLoader/include/llapi/mc/StoneSlabBlock3.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SlabBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneSlabBlock4.hpp b/LiteLoader/include/llapi/mc/StoneSlabBlock4.hpp similarity index 98% rename from LiteLoader/Header/MC/StoneSlabBlock4.hpp rename to LiteLoader/include/llapi/mc/StoneSlabBlock4.hpp index f1790be..b69b6d5 100644 --- a/LiteLoader/Header/MC/StoneSlabBlock4.hpp +++ b/LiteLoader/include/llapi/mc/StoneSlabBlock4.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SlabBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StoneSlabBlockItem.hpp b/LiteLoader/include/llapi/mc/StoneSlabBlockItem.hpp similarity index 97% rename from LiteLoader/Header/MC/StoneSlabBlockItem.hpp rename to LiteLoader/include/llapi/mc/StoneSlabBlockItem.hpp index 5d42a59..7752f21 100644 --- a/LiteLoader/Header/MC/StoneSlabBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/StoneSlabBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StonecutterBlock.hpp b/LiteLoader/include/llapi/mc/StonecutterBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StonecutterBlock.hpp rename to LiteLoader/include/llapi/mc/StonecutterBlock.hpp index f025ee5..f7817bd 100644 --- a/LiteLoader/Header/MC/StonecutterBlock.hpp +++ b/LiteLoader/include/llapi/mc/StonecutterBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StonecutterContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/StonecutterContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/StonecutterContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/StonecutterContainerManagerModel.hpp index 4d3cc1f..d904c66 100644 --- a/LiteLoader/Header/MC/StonecutterContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/StonecutterContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StopCommand.hpp b/LiteLoader/include/llapi/mc/StopCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/StopCommand.hpp rename to LiteLoader/include/llapi/mc/StopCommand.hpp index 006a8f0..aa682ec 100644 --- a/LiteLoader/Header/MC/StopCommand.hpp +++ b/LiteLoader/include/llapi/mc/StopCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StopSoundCommand.hpp b/LiteLoader/include/llapi/mc/StopSoundCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/StopSoundCommand.hpp rename to LiteLoader/include/llapi/mc/StopSoundCommand.hpp index 49d659a..c57e212 100644 --- a/LiteLoader/Header/MC/StopSoundCommand.hpp +++ b/LiteLoader/include/llapi/mc/StopSoundCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StopSoundPacket.hpp b/LiteLoader/include/llapi/mc/StopSoundPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/StopSoundPacket.hpp rename to LiteLoader/include/llapi/mc/StopSoundPacket.hpp index a57652e..ec8a78d 100644 --- a/LiteLoader/Header/MC/StopSoundPacket.hpp +++ b/LiteLoader/include/llapi/mc/StopSoundPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Stopwatch.hpp b/LiteLoader/include/llapi/mc/Stopwatch.hpp similarity index 95% rename from LiteLoader/Header/MC/Stopwatch.hpp rename to LiteLoader/include/llapi/mc/Stopwatch.hpp index f250da7..3f8dd8e 100644 --- a/LiteLoader/Header/MC/Stopwatch.hpp +++ b/LiteLoader/include/llapi/mc/Stopwatch.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StrengthDescription.hpp b/LiteLoader/include/llapi/mc/StrengthDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/StrengthDescription.hpp rename to LiteLoader/include/llapi/mc/StrengthDescription.hpp index 6903413..72c2d34 100644 --- a/LiteLoader/Header/MC/StrengthDescription.hpp +++ b/LiteLoader/include/llapi/mc/StrengthDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Strider.hpp b/LiteLoader/include/llapi/mc/Strider.hpp similarity index 98% rename from LiteLoader/Header/MC/Strider.hpp rename to LiteLoader/include/llapi/mc/Strider.hpp index 4aef982..c3e3efe 100644 --- a/LiteLoader/Header/MC/Strider.hpp +++ b/LiteLoader/include/llapi/mc/Strider.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/StringByteInput.hpp b/LiteLoader/include/llapi/mc/StringByteInput.hpp similarity index 97% rename from LiteLoader/Header/MC/StringByteInput.hpp rename to LiteLoader/include/llapi/mc/StringByteInput.hpp index 833bb04..c331413 100644 --- a/LiteLoader/Header/MC/StringByteInput.hpp +++ b/LiteLoader/include/llapi/mc/StringByteInput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BytesDataInput.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StringByteOutput.hpp b/LiteLoader/include/llapi/mc/StringByteOutput.hpp similarity index 97% rename from LiteLoader/Header/MC/StringByteOutput.hpp rename to LiteLoader/include/llapi/mc/StringByteOutput.hpp index fcc873b..597a013 100644 --- a/LiteLoader/Header/MC/StringByteOutput.hpp +++ b/LiteLoader/include/llapi/mc/StringByteOutput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BytesDataOutput.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StringKey.hpp b/LiteLoader/include/llapi/mc/StringKey.hpp similarity index 94% rename from LiteLoader/Header/MC/StringKey.hpp rename to LiteLoader/include/llapi/mc/StringKey.hpp index 5a53d89..f3578a2 100644 --- a/LiteLoader/Header/MC/StringKey.hpp +++ b/LiteLoader/include/llapi/mc/StringKey.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StringTag.hpp b/LiteLoader/include/llapi/mc/StringTag.hpp similarity index 97% rename from LiteLoader/Header/MC/StringTag.hpp rename to LiteLoader/include/llapi/mc/StringTag.hpp index 78c83fa..576e1b6 100644 --- a/LiteLoader/Header/MC/StringTag.hpp +++ b/LiteLoader/include/llapi/mc/StringTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Tag.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StrippedLogBlock.hpp b/LiteLoader/include/llapi/mc/StrippedLogBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/StrippedLogBlock.hpp rename to LiteLoader/include/llapi/mc/StrippedLogBlock.hpp index 679a6fe..88bcc79 100644 --- a/LiteLoader/Header/MC/StrippedLogBlock.hpp +++ b/LiteLoader/include/llapi/mc/StrippedLogBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RotatedPillarBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StrollTowardsVillageGoal.hpp b/LiteLoader/include/llapi/mc/StrollTowardsVillageGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/StrollTowardsVillageGoal.hpp rename to LiteLoader/include/llapi/mc/StrollTowardsVillageGoal.hpp index 742b60f..8603278 100644 --- a/LiteLoader/Header/MC/StrollTowardsVillageGoal.hpp +++ b/LiteLoader/include/llapi/mc/StrollTowardsVillageGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveToVillageGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StrongholdFeature.hpp b/LiteLoader/include/llapi/mc/StrongholdFeature.hpp similarity index 98% rename from LiteLoader/Header/MC/StrongholdFeature.hpp rename to LiteLoader/include/llapi/mc/StrongholdFeature.hpp index e6e3984..494970d 100644 --- a/LiteLoader/Header/MC/StrongholdFeature.hpp +++ b/LiteLoader/include/llapi/mc/StrongholdFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StrongholdPiece.hpp b/LiteLoader/include/llapi/mc/StrongholdPiece.hpp similarity index 98% rename from LiteLoader/Header/MC/StrongholdPiece.hpp rename to LiteLoader/include/llapi/mc/StrongholdPiece.hpp index d6a0cdd..0fa6ab6 100644 --- a/LiteLoader/Header/MC/StrongholdPiece.hpp +++ b/LiteLoader/include/llapi/mc/StrongholdPiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StrongholdStart.hpp b/LiteLoader/include/llapi/mc/StrongholdStart.hpp similarity index 96% rename from LiteLoader/Header/MC/StrongholdStart.hpp rename to LiteLoader/include/llapi/mc/StrongholdStart.hpp index 7c8f914..87629b7 100644 --- a/LiteLoader/Header/MC/StrongholdStart.hpp +++ b/LiteLoader/include/llapi/mc/StrongholdStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureStart.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureBlock.hpp b/LiteLoader/include/llapi/mc/StructureBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/StructureBlock.hpp rename to LiteLoader/include/llapi/mc/StructureBlock.hpp index d747e29..cf80cb2 100644 --- a/LiteLoader/Header/MC/StructureBlock.hpp +++ b/LiteLoader/include/llapi/mc/StructureBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ActorBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureBlockActor.hpp b/LiteLoader/include/llapi/mc/StructureBlockActor.hpp similarity index 98% rename from LiteLoader/Header/MC/StructureBlockActor.hpp rename to LiteLoader/include/llapi/mc/StructureBlockActor.hpp index f944ceb..fffb8a7 100644 --- a/LiteLoader/Header/MC/StructureBlockActor.hpp +++ b/LiteLoader/include/llapi/mc/StructureBlockActor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockActor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureBlockPalette.hpp b/LiteLoader/include/llapi/mc/StructureBlockPalette.hpp similarity index 98% rename from LiteLoader/Header/MC/StructureBlockPalette.hpp rename to LiteLoader/include/llapi/mc/StructureBlockPalette.hpp index dd86914..3d582a7 100644 --- a/LiteLoader/Header/MC/StructureBlockPalette.hpp +++ b/LiteLoader/include/llapi/mc/StructureBlockPalette.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureBlockUpdatePacket.hpp b/LiteLoader/include/llapi/mc/StructureBlockUpdatePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/StructureBlockUpdatePacket.hpp rename to LiteLoader/include/llapi/mc/StructureBlockUpdatePacket.hpp index 1a60019..39defa1 100644 --- a/LiteLoader/Header/MC/StructureBlockUpdatePacket.hpp +++ b/LiteLoader/include/llapi/mc/StructureBlockUpdatePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureDataLoadHelper.hpp b/LiteLoader/include/llapi/mc/StructureDataLoadHelper.hpp similarity index 98% rename from LiteLoader/Header/MC/StructureDataLoadHelper.hpp rename to LiteLoader/include/llapi/mc/StructureDataLoadHelper.hpp index 6b47e0d..35bc455 100644 --- a/LiteLoader/Header/MC/StructureDataLoadHelper.hpp +++ b/LiteLoader/include/llapi/mc/StructureDataLoadHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Direction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureEditorData.hpp b/LiteLoader/include/llapi/mc/StructureEditorData.hpp similarity index 97% rename from LiteLoader/Header/MC/StructureEditorData.hpp rename to LiteLoader/include/llapi/mc/StructureEditorData.hpp index 30d6075..b4e9e29 100644 --- a/LiteLoader/Header/MC/StructureEditorData.hpp +++ b/LiteLoader/include/llapi/mc/StructureEditorData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureFeature.hpp b/LiteLoader/include/llapi/mc/StructureFeature.hpp similarity index 98% rename from LiteLoader/Header/MC/StructureFeature.hpp rename to LiteLoader/include/llapi/mc/StructureFeature.hpp index 1049981..06ad580 100644 --- a/LiteLoader/Header/MC/StructureFeature.hpp +++ b/LiteLoader/include/llapi/mc/StructureFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureHelpers.hpp b/LiteLoader/include/llapi/mc/StructureHelpers.hpp similarity index 97% rename from LiteLoader/Header/MC/StructureHelpers.hpp rename to LiteLoader/include/llapi/mc/StructureHelpers.hpp index 3ed0ee2..b146df9 100644 --- a/LiteLoader/Header/MC/StructureHelpers.hpp +++ b/LiteLoader/include/llapi/mc/StructureHelpers.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureIntegrityProcessor.hpp b/LiteLoader/include/llapi/mc/StructureIntegrityProcessor.hpp similarity index 96% rename from LiteLoader/Header/MC/StructureIntegrityProcessor.hpp rename to LiteLoader/include/llapi/mc/StructureIntegrityProcessor.hpp index 2eb8c19..f7a6998 100644 --- a/LiteLoader/Header/MC/StructureIntegrityProcessor.hpp +++ b/LiteLoader/include/llapi/mc/StructureIntegrityProcessor.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureManager.hpp b/LiteLoader/include/llapi/mc/StructureManager.hpp similarity index 97% rename from LiteLoader/Header/MC/StructureManager.hpp rename to LiteLoader/include/llapi/mc/StructureManager.hpp index a4a2947..0cc598a 100644 --- a/LiteLoader/Header/MC/StructureManager.hpp +++ b/LiteLoader/include/llapi/mc/StructureManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePiece.hpp b/LiteLoader/include/llapi/mc/StructurePiece.hpp similarity index 99% rename from LiteLoader/Header/MC/StructurePiece.hpp rename to LiteLoader/include/llapi/mc/StructurePiece.hpp index adb1ff9..5ce4e29 100644 --- a/LiteLoader/Header/MC/StructurePiece.hpp +++ b/LiteLoader/include/llapi/mc/StructurePiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolActorPredicateActorMatch.hpp b/LiteLoader/include/llapi/mc/StructurePoolActorPredicateActorMatch.hpp similarity index 96% rename from LiteLoader/Header/MC/StructurePoolActorPredicateActorMatch.hpp rename to LiteLoader/include/llapi/mc/StructurePoolActorPredicateActorMatch.hpp index 39c1be5..6327340 100644 --- a/LiteLoader/Header/MC/StructurePoolActorPredicateActorMatch.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolActorPredicateActorMatch.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolBlockPredicateAlwaysTrue.hpp b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateAlwaysTrue.hpp similarity index 96% rename from LiteLoader/Header/MC/StructurePoolBlockPredicateAlwaysTrue.hpp rename to LiteLoader/include/llapi/mc/StructurePoolBlockPredicateAlwaysTrue.hpp index e189021..4d7b66a 100644 --- a/LiteLoader/Header/MC/StructurePoolBlockPredicateAlwaysTrue.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateAlwaysTrue.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolBlockPredicateAxisAlignedPosition.hpp b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateAxisAlignedPosition.hpp similarity index 97% rename from LiteLoader/Header/MC/StructurePoolBlockPredicateAxisAlignedPosition.hpp rename to LiteLoader/include/llapi/mc/StructurePoolBlockPredicateAxisAlignedPosition.hpp index 6210b5f..dc85735 100644 --- a/LiteLoader/Header/MC/StructurePoolBlockPredicateAxisAlignedPosition.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateAxisAlignedPosition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolBlockPredicateBlockMatch.hpp b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateBlockMatch.hpp similarity index 97% rename from LiteLoader/Header/MC/StructurePoolBlockPredicateBlockMatch.hpp rename to LiteLoader/include/llapi/mc/StructurePoolBlockPredicateBlockMatch.hpp index 7bb51b9..d59a462 100644 --- a/LiteLoader/Header/MC/StructurePoolBlockPredicateBlockMatch.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateBlockMatch.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolBlockPredicateBlockMatchRandom.hpp b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateBlockMatchRandom.hpp similarity index 97% rename from LiteLoader/Header/MC/StructurePoolBlockPredicateBlockMatchRandom.hpp rename to LiteLoader/include/llapi/mc/StructurePoolBlockPredicateBlockMatchRandom.hpp index 498557e..e207785 100644 --- a/LiteLoader/Header/MC/StructurePoolBlockPredicateBlockMatchRandom.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolBlockPredicateBlockMatchRandom.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolBlockTagPredicateBlockTagStringMatches.hpp b/LiteLoader/include/llapi/mc/StructurePoolBlockTagPredicateBlockTagStringMatches.hpp similarity index 97% rename from LiteLoader/Header/MC/StructurePoolBlockTagPredicateBlockTagStringMatches.hpp rename to LiteLoader/include/llapi/mc/StructurePoolBlockTagPredicateBlockTagStringMatches.hpp index 0be0847..684dce3 100644 --- a/LiteLoader/Header/MC/StructurePoolBlockTagPredicateBlockTagStringMatches.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolBlockTagPredicateBlockTagStringMatches.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolBlockTagRule.hpp b/LiteLoader/include/llapi/mc/StructurePoolBlockTagRule.hpp similarity index 96% rename from LiteLoader/Header/MC/StructurePoolBlockTagRule.hpp rename to LiteLoader/include/llapi/mc/StructurePoolBlockTagRule.hpp index 86654f6..57d1b95 100644 --- a/LiteLoader/Header/MC/StructurePoolBlockTagRule.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolBlockTagRule.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructurePoolElement.hpp b/LiteLoader/include/llapi/mc/StructurePoolElement.hpp similarity index 99% rename from LiteLoader/Header/MC/StructurePoolElement.hpp rename to LiteLoader/include/llapi/mc/StructurePoolElement.hpp index 72dd199..76b3fe7 100644 --- a/LiteLoader/Header/MC/StructurePoolElement.hpp +++ b/LiteLoader/include/llapi/mc/StructurePoolElement.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureSettings.hpp b/LiteLoader/include/llapi/mc/StructureSettings.hpp similarity index 98% rename from LiteLoader/Header/MC/StructureSettings.hpp rename to LiteLoader/include/llapi/mc/StructureSettings.hpp index 5ef9ec9..af3ef65 100644 --- a/LiteLoader/Header/MC/StructureSettings.hpp +++ b/LiteLoader/include/llapi/mc/StructureSettings.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/StructureStart.hpp b/LiteLoader/include/llapi/mc/StructureStart.hpp similarity index 96% rename from LiteLoader/Header/MC/StructureStart.hpp rename to LiteLoader/include/llapi/mc/StructureStart.hpp index 44af888..9764f8a 100644 --- a/LiteLoader/Header/MC/StructureStart.hpp +++ b/LiteLoader/include/llapi/mc/StructureStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureTag.hpp b/LiteLoader/include/llapi/mc/StructureTag.hpp similarity index 96% rename from LiteLoader/Header/MC/StructureTag.hpp rename to LiteLoader/include/llapi/mc/StructureTag.hpp index b0097a1..cef0595 100644 --- a/LiteLoader/Header/MC/StructureTag.hpp +++ b/LiteLoader/include/llapi/mc/StructureTag.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureTemplate.hpp b/LiteLoader/include/llapi/mc/StructureTemplate.hpp similarity index 99% rename from LiteLoader/Header/MC/StructureTemplate.hpp rename to LiteLoader/include/llapi/mc/StructureTemplate.hpp index 050234c..4c42e00 100644 --- a/LiteLoader/Header/MC/StructureTemplate.hpp +++ b/LiteLoader/include/llapi/mc/StructureTemplate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/StructureTemplateData.hpp b/LiteLoader/include/llapi/mc/StructureTemplateData.hpp similarity index 98% rename from LiteLoader/Header/MC/StructureTemplateData.hpp rename to LiteLoader/include/llapi/mc/StructureTemplateData.hpp index f41045f..8f38d98 100644 --- a/LiteLoader/Header/MC/StructureTemplateData.hpp +++ b/LiteLoader/include/llapi/mc/StructureTemplateData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/StructureTemplateDataRequestPacket.hpp b/LiteLoader/include/llapi/mc/StructureTemplateDataRequestPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/StructureTemplateDataRequestPacket.hpp rename to LiteLoader/include/llapi/mc/StructureTemplateDataRequestPacket.hpp index fb5af67..3ea00fe 100644 --- a/LiteLoader/Header/MC/StructureTemplateDataRequestPacket.hpp +++ b/LiteLoader/include/llapi/mc/StructureTemplateDataRequestPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureTemplateDataResponsePacket.hpp b/LiteLoader/include/llapi/mc/StructureTemplateDataResponsePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/StructureTemplateDataResponsePacket.hpp rename to LiteLoader/include/llapi/mc/StructureTemplateDataResponsePacket.hpp index ac9a85a..53e4b96 100644 --- a/LiteLoader/Header/MC/StructureTemplateDataResponsePacket.hpp +++ b/LiteLoader/include/llapi/mc/StructureTemplateDataResponsePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureTemplateFeature.hpp b/LiteLoader/include/llapi/mc/StructureTemplateFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/StructureTemplateFeature.hpp rename to LiteLoader/include/llapi/mc/StructureTemplateFeature.hpp index f2e6a11..82c3b44 100644 --- a/LiteLoader/Header/MC/StructureTemplateFeature.hpp +++ b/LiteLoader/include/llapi/mc/StructureTemplateFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureTemplatePool.hpp b/LiteLoader/include/llapi/mc/StructureTemplatePool.hpp similarity index 96% rename from LiteLoader/Header/MC/StructureTemplatePool.hpp rename to LiteLoader/include/llapi/mc/StructureTemplatePool.hpp index b7c99c1..2e0796b 100644 --- a/LiteLoader/Header/MC/StructureTemplatePool.hpp +++ b/LiteLoader/include/llapi/mc/StructureTemplatePool.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/StructureVoid.hpp b/LiteLoader/include/llapi/mc/StructureVoid.hpp similarity index 98% rename from LiteLoader/Header/MC/StructureVoid.hpp rename to LiteLoader/include/llapi/mc/StructureVoid.hpp index 697423a..f903212 100644 --- a/LiteLoader/Header/MC/StructureVoid.hpp +++ b/LiteLoader/include/llapi/mc/StructureVoid.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubChunk.hpp b/LiteLoader/include/llapi/mc/SubChunk.hpp similarity index 97% rename from LiteLoader/Header/MC/SubChunk.hpp rename to LiteLoader/include/llapi/mc/SubChunk.hpp index 05ab405..36d2494 100644 --- a/LiteLoader/Header/MC/SubChunk.hpp +++ b/LiteLoader/include/llapi/mc/SubChunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubChunkBlockStorage.hpp b/LiteLoader/include/llapi/mc/SubChunkBlockStorage.hpp similarity index 97% rename from LiteLoader/Header/MC/SubChunkBlockStorage.hpp rename to LiteLoader/include/llapi/mc/SubChunkBlockStorage.hpp index deb022b..c75e23e 100644 --- a/LiteLoader/Header/MC/SubChunkBlockStorage.hpp +++ b/LiteLoader/include/llapi/mc/SubChunkBlockStorage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubChunkPos.hpp b/LiteLoader/include/llapi/mc/SubChunkPos.hpp similarity index 95% rename from LiteLoader/Header/MC/SubChunkPos.hpp rename to LiteLoader/include/llapi/mc/SubChunkPos.hpp index 1e2441c..63702a2 100644 --- a/LiteLoader/Header/MC/SubChunkPos.hpp +++ b/LiteLoader/include/llapi/mc/SubChunkPos.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubChunkRelighter.hpp b/LiteLoader/include/llapi/mc/SubChunkRelighter.hpp similarity index 99% rename from LiteLoader/Header/MC/SubChunkRelighter.hpp rename to LiteLoader/include/llapi/mc/SubChunkRelighter.hpp index 786f63d..b2c20f4 100644 --- a/LiteLoader/Header/MC/SubChunkRelighter.hpp +++ b/LiteLoader/include/llapi/mc/SubChunkRelighter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubClientConnectionRequest.hpp b/LiteLoader/include/llapi/mc/SubClientConnectionRequest.hpp similarity index 98% rename from LiteLoader/Header/MC/SubClientConnectionRequest.hpp rename to LiteLoader/include/llapi/mc/SubClientConnectionRequest.hpp index ec4a2d3..e99fa86 100644 --- a/LiteLoader/Header/MC/SubClientConnectionRequest.hpp +++ b/LiteLoader/include/llapi/mc/SubClientConnectionRequest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "persona.hpp" #include "Json.hpp" diff --git a/LiteLoader/Header/MC/SubClientLoginPacket.hpp b/LiteLoader/include/llapi/mc/SubClientLoginPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/SubClientLoginPacket.hpp rename to LiteLoader/include/llapi/mc/SubClientLoginPacket.hpp index b897742..9e3c570 100644 --- a/LiteLoader/Header/MC/SubClientLoginPacket.hpp +++ b/LiteLoader/include/llapi/mc/SubClientLoginPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubpackInfo.hpp b/LiteLoader/include/llapi/mc/SubpackInfo.hpp similarity index 94% rename from LiteLoader/Header/MC/SubpackInfo.hpp rename to LiteLoader/include/llapi/mc/SubpackInfo.hpp index 90268cd..7687712 100644 --- a/LiteLoader/Header/MC/SubpackInfo.hpp +++ b/LiteLoader/include/llapi/mc/SubpackInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubpackInfoCollection.hpp b/LiteLoader/include/llapi/mc/SubpackInfoCollection.hpp similarity index 95% rename from LiteLoader/Header/MC/SubpackInfoCollection.hpp rename to LiteLoader/include/llapi/mc/SubpackInfoCollection.hpp index 7c999c4..1022a48 100644 --- a/LiteLoader/Header/MC/SubpackInfoCollection.hpp +++ b/LiteLoader/include/llapi/mc/SubpackInfoCollection.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SubtreeDefinition.hpp b/LiteLoader/include/llapi/mc/SubtreeDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SubtreeDefinition.hpp rename to LiteLoader/include/llapi/mc/SubtreeDefinition.hpp index 0912822..3820374 100644 --- a/LiteLoader/Header/MC/SubtreeDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SubtreeDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/SubtreeNode.hpp b/LiteLoader/include/llapi/mc/SubtreeNode.hpp similarity index 95% rename from LiteLoader/Header/MC/SubtreeNode.hpp rename to LiteLoader/include/llapi/mc/SubtreeNode.hpp index 49fdb52..bcc24f5 100644 --- a/LiteLoader/Header/MC/SubtreeNode.hpp +++ b/LiteLoader/include/llapi/mc/SubtreeNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SummonActorGoal.hpp b/LiteLoader/include/llapi/mc/SummonActorGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/SummonActorGoal.hpp rename to LiteLoader/include/llapi/mc/SummonActorGoal.hpp index 4f9d386..ef426d3 100644 --- a/LiteLoader/Header/MC/SummonActorGoal.hpp +++ b/LiteLoader/include/llapi/mc/SummonActorGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SummonCommand.hpp b/LiteLoader/include/llapi/mc/SummonCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/SummonCommand.hpp rename to LiteLoader/include/llapi/mc/SummonCommand.hpp index 787bc07..287c207 100644 --- a/LiteLoader/Header/MC/SummonCommand.hpp +++ b/LiteLoader/include/llapi/mc/SummonCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SummonSpellData.hpp b/LiteLoader/include/llapi/mc/SummonSpellData.hpp similarity index 95% rename from LiteLoader/Header/MC/SummonSpellData.hpp rename to LiteLoader/include/llapi/mc/SummonSpellData.hpp index 1696b6e..4340f48 100644 --- a/LiteLoader/Header/MC/SummonSpellData.hpp +++ b/LiteLoader/include/llapi/mc/SummonSpellData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SummonSpellStage.hpp b/LiteLoader/include/llapi/mc/SummonSpellStage.hpp similarity index 95% rename from LiteLoader/Header/MC/SummonSpellStage.hpp rename to LiteLoader/include/llapi/mc/SummonSpellStage.hpp index 667d302..66cee38 100644 --- a/LiteLoader/Header/MC/SummonSpellStage.hpp +++ b/LiteLoader/include/llapi/mc/SummonSpellStage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SurfaceBuilderRegistry.hpp b/LiteLoader/include/llapi/mc/SurfaceBuilderRegistry.hpp similarity index 95% rename from LiteLoader/Header/MC/SurfaceBuilderRegistry.hpp rename to LiteLoader/include/llapi/mc/SurfaceBuilderRegistry.hpp index 2987275..706200a 100644 --- a/LiteLoader/Header/MC/SurfaceBuilderRegistry.hpp +++ b/LiteLoader/include/llapi/mc/SurfaceBuilderRegistry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SurfaceMaterialAdjustmentAttributes.hpp b/LiteLoader/include/llapi/mc/SurfaceMaterialAdjustmentAttributes.hpp similarity index 96% rename from LiteLoader/Header/MC/SurfaceMaterialAdjustmentAttributes.hpp rename to LiteLoader/include/llapi/mc/SurfaceMaterialAdjustmentAttributes.hpp index 043bf64..499b4fb 100644 --- a/LiteLoader/Header/MC/SurfaceMaterialAdjustmentAttributes.hpp +++ b/LiteLoader/include/llapi/mc/SurfaceMaterialAdjustmentAttributes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SurfaceMaterialAdjustmentEvaluated.hpp b/LiteLoader/include/llapi/mc/SurfaceMaterialAdjustmentEvaluated.hpp similarity index 96% rename from LiteLoader/Header/MC/SurfaceMaterialAdjustmentEvaluated.hpp rename to LiteLoader/include/llapi/mc/SurfaceMaterialAdjustmentEvaluated.hpp index c9977b8..ef706da 100644 --- a/LiteLoader/Header/MC/SurfaceMaterialAdjustmentEvaluated.hpp +++ b/LiteLoader/include/llapi/mc/SurfaceMaterialAdjustmentEvaluated.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SurvivalMode.hpp b/LiteLoader/include/llapi/mc/SurvivalMode.hpp similarity index 98% rename from LiteLoader/Header/MC/SurvivalMode.hpp rename to LiteLoader/include/llapi/mc/SurvivalMode.hpp index 33244d3..094791b 100644 --- a/LiteLoader/Header/MC/SurvivalMode.hpp +++ b/LiteLoader/include/llapi/mc/SurvivalMode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "GameMode.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SuspiciousStewItem.hpp b/LiteLoader/include/llapi/mc/SuspiciousStewItem.hpp similarity index 98% rename from LiteLoader/Header/MC/SuspiciousStewItem.hpp rename to LiteLoader/include/llapi/mc/SuspiciousStewItem.hpp index 6b57a9e..386ef13 100644 --- a/LiteLoader/Header/MC/SuspiciousStewItem.hpp +++ b/LiteLoader/include/llapi/mc/SuspiciousStewItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwamplandHut.hpp b/LiteLoader/include/llapi/mc/SwamplandHut.hpp similarity index 97% rename from LiteLoader/Header/MC/SwamplandHut.hpp rename to LiteLoader/include/llapi/mc/SwamplandHut.hpp index b36df2a..805b448 100644 --- a/LiteLoader/Header/MC/SwamplandHut.hpp +++ b/LiteLoader/include/llapi/mc/SwamplandHut.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SweetBerryBushBlock.hpp b/LiteLoader/include/llapi/mc/SweetBerryBushBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/SweetBerryBushBlock.hpp rename to LiteLoader/include/llapi/mc/SweetBerryBushBlock.hpp index 685dc0d..d1cd7c0 100644 --- a/LiteLoader/Header/MC/SweetBerryBushBlock.hpp +++ b/LiteLoader/include/llapi/mc/SweetBerryBushBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwellGoal.hpp b/LiteLoader/include/llapi/mc/SwellGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SwellGoal.hpp rename to LiteLoader/include/llapi/mc/SwellGoal.hpp index 1c98b66..bc49bad 100644 --- a/LiteLoader/Header/MC/SwellGoal.hpp +++ b/LiteLoader/include/llapi/mc/SwellGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimEnchant.hpp b/LiteLoader/include/llapi/mc/SwimEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimEnchant.hpp rename to LiteLoader/include/llapi/mc/SwimEnchant.hpp index ad7556c..48cb7ab 100644 --- a/LiteLoader/Header/MC/SwimEnchant.hpp +++ b/LiteLoader/include/llapi/mc/SwimEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimIdleDefinition.hpp b/LiteLoader/include/llapi/mc/SwimIdleDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimIdleDefinition.hpp rename to LiteLoader/include/llapi/mc/SwimIdleDefinition.hpp index f9b4c43..4d0302a 100644 --- a/LiteLoader/Header/MC/SwimIdleDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SwimIdleDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimIdleGoal.hpp b/LiteLoader/include/llapi/mc/SwimIdleGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimIdleGoal.hpp rename to LiteLoader/include/llapi/mc/SwimIdleGoal.hpp index ba98593..ee607f3 100644 --- a/LiteLoader/Header/MC/SwimIdleGoal.hpp +++ b/LiteLoader/include/llapi/mc/SwimIdleGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimMoveControl.hpp b/LiteLoader/include/llapi/mc/SwimMoveControl.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimMoveControl.hpp rename to LiteLoader/include/llapi/mc/SwimMoveControl.hpp index 425ea0d..6223325 100644 --- a/LiteLoader/Header/MC/SwimMoveControl.hpp +++ b/LiteLoader/include/llapi/mc/SwimMoveControl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveControl.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimWanderDefinition.hpp b/LiteLoader/include/llapi/mc/SwimWanderDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimWanderDefinition.hpp rename to LiteLoader/include/llapi/mc/SwimWanderDefinition.hpp index f42c63f..fb3335f 100644 --- a/LiteLoader/Header/MC/SwimWanderDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SwimWanderDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimWanderGoal.hpp b/LiteLoader/include/llapi/mc/SwimWanderGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimWanderGoal.hpp rename to LiteLoader/include/llapi/mc/SwimWanderGoal.hpp index 32d757f..3f42404 100644 --- a/LiteLoader/Header/MC/SwimWanderGoal.hpp +++ b/LiteLoader/include/llapi/mc/SwimWanderGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimWithEntityDefinition.hpp b/LiteLoader/include/llapi/mc/SwimWithEntityDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimWithEntityDefinition.hpp rename to LiteLoader/include/llapi/mc/SwimWithEntityDefinition.hpp index e5ea1c1..6ec2c93 100644 --- a/LiteLoader/Header/MC/SwimWithEntityDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SwimWithEntityDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwimWithEntityGoal.hpp b/LiteLoader/include/llapi/mc/SwimWithEntityGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SwimWithEntityGoal.hpp rename to LiteLoader/include/llapi/mc/SwimWithEntityGoal.hpp index 0498afa..17e004b 100644 --- a/LiteLoader/Header/MC/SwimWithEntityGoal.hpp +++ b/LiteLoader/include/llapi/mc/SwimWithEntityGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwoopAttackDefinition.hpp b/LiteLoader/include/llapi/mc/SwoopAttackDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/SwoopAttackDefinition.hpp rename to LiteLoader/include/llapi/mc/SwoopAttackDefinition.hpp index 461d6a3..e389dc4 100644 --- a/LiteLoader/Header/MC/SwoopAttackDefinition.hpp +++ b/LiteLoader/include/llapi/mc/SwoopAttackDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SwoopAttackGoal.hpp b/LiteLoader/include/llapi/mc/SwoopAttackGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/SwoopAttackGoal.hpp rename to LiteLoader/include/llapi/mc/SwoopAttackGoal.hpp index 06def39..497d033 100644 --- a/LiteLoader/Header/MC/SwoopAttackGoal.hpp +++ b/LiteLoader/include/llapi/mc/SwoopAttackGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SyncedAttribute.hpp b/LiteLoader/include/llapi/mc/SyncedAttribute.hpp similarity index 95% rename from LiteLoader/Header/MC/SyncedAttribute.hpp rename to LiteLoader/include/llapi/mc/SyncedAttribute.hpp index 34dd2e7..c74584e 100644 --- a/LiteLoader/Header/MC/SyncedAttribute.hpp +++ b/LiteLoader/include/llapi/mc/SyncedAttribute.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/SynchedActorData.hpp b/LiteLoader/include/llapi/mc/SynchedActorData.hpp similarity index 99% rename from LiteLoader/Header/MC/SynchedActorData.hpp rename to LiteLoader/include/llapi/mc/SynchedActorData.hpp index 52b35f9..8e5ee92 100644 --- a/LiteLoader/Header/MC/SynchedActorData.hpp +++ b/LiteLoader/include/llapi/mc/SynchedActorData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "DataItem.hpp" diff --git a/LiteLoader/Header/MC/SystemFilePicker.hpp b/LiteLoader/include/llapi/mc/SystemFilePicker.hpp similarity index 97% rename from LiteLoader/Header/MC/SystemFilePicker.hpp rename to LiteLoader/include/llapi/mc/SystemFilePicker.hpp index 830577d..be9ad62 100644 --- a/LiteLoader/Header/MC/SystemFilePicker.hpp +++ b/LiteLoader/include/llapi/mc/SystemFilePicker.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Tag.hpp b/LiteLoader/include/llapi/mc/Tag.hpp similarity index 97% rename from LiteLoader/Header/MC/Tag.hpp rename to LiteLoader/include/llapi/mc/Tag.hpp index ea3e83e..cf498c3 100644 --- a/LiteLoader/Header/MC/Tag.hpp +++ b/LiteLoader/include/llapi/mc/Tag.hpp @@ -1,11 +1,11 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here -#include "../third-party/Nlohmann/fifo_json.hpp" +#include #include #include #include diff --git a/LiteLoader/Header/MC/TagCommand.hpp b/LiteLoader/include/llapi/mc/TagCommand.hpp similarity index 97% rename from LiteLoader/Header/MC/TagCommand.hpp rename to LiteLoader/include/llapi/mc/TagCommand.hpp index 7145641..571f1ec 100644 --- a/LiteLoader/Header/MC/TagCommand.hpp +++ b/LiteLoader/include/llapi/mc/TagCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TagMemoryChunk.hpp b/LiteLoader/include/llapi/mc/TagMemoryChunk.hpp similarity index 97% rename from LiteLoader/Header/MC/TagMemoryChunk.hpp rename to LiteLoader/include/llapi/mc/TagMemoryChunk.hpp index fab051e..05ee59a 100644 --- a/LiteLoader/Header/MC/TagMemoryChunk.hpp +++ b/LiteLoader/include/llapi/mc/TagMemoryChunk.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA // Include Headers or Declare Types Here diff --git a/LiteLoader/Header/MC/TakeFlowerGoal.hpp b/LiteLoader/include/llapi/mc/TakeFlowerGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/TakeFlowerGoal.hpp rename to LiteLoader/include/llapi/mc/TakeFlowerGoal.hpp index 0c64727..5a363dd 100644 --- a/LiteLoader/Header/MC/TakeFlowerGoal.hpp +++ b/LiteLoader/include/llapi/mc/TakeFlowerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TakeItemActorPacket.hpp b/LiteLoader/include/llapi/mc/TakeItemActorPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/TakeItemActorPacket.hpp rename to LiteLoader/include/llapi/mc/TakeItemActorPacket.hpp index 48027b2..c9bd641 100644 --- a/LiteLoader/Header/MC/TakeItemActorPacket.hpp +++ b/LiteLoader/include/llapi/mc/TakeItemActorPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TakePictureCommand.hpp b/LiteLoader/include/llapi/mc/TakePictureCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TakePictureCommand.hpp rename to LiteLoader/include/llapi/mc/TakePictureCommand.hpp index 42f3d20..d96dd9f 100644 --- a/LiteLoader/Header/MC/TakePictureCommand.hpp +++ b/LiteLoader/include/llapi/mc/TakePictureCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TallGrass.hpp b/LiteLoader/include/llapi/mc/TallGrass.hpp similarity index 99% rename from LiteLoader/Header/MC/TallGrass.hpp rename to LiteLoader/include/llapi/mc/TallGrass.hpp index eea25f4..0eede21 100644 --- a/LiteLoader/Header/MC/TallGrass.hpp +++ b/LiteLoader/include/llapi/mc/TallGrass.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TallGrassFeature.hpp b/LiteLoader/include/llapi/mc/TallGrassFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/TallGrassFeature.hpp rename to LiteLoader/include/llapi/mc/TallGrassFeature.hpp index 5bdb3a9..62389e9 100644 --- a/LiteLoader/Header/MC/TallGrassFeature.hpp +++ b/LiteLoader/include/llapi/mc/TallGrassFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TameableComponent.hpp b/LiteLoader/include/llapi/mc/TameableComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TameableComponent.hpp rename to LiteLoader/include/llapi/mc/TameableComponent.hpp index d1c5695..f93809a 100644 --- a/LiteLoader/Header/MC/TameableComponent.hpp +++ b/LiteLoader/include/llapi/mc/TameableComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TameableDescription.hpp b/LiteLoader/include/llapi/mc/TameableDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TameableDescription.hpp rename to LiteLoader/include/llapi/mc/TameableDescription.hpp index 07e4030..b051d64 100644 --- a/LiteLoader/Header/MC/TameableDescription.hpp +++ b/LiteLoader/include/llapi/mc/TameableDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TargetBlock.hpp b/LiteLoader/include/llapi/mc/TargetBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/TargetBlock.hpp rename to LiteLoader/include/llapi/mc/TargetBlock.hpp index cb82378..6a40f41 100644 --- a/LiteLoader/Header/MC/TargetBlock.hpp +++ b/LiteLoader/include/llapi/mc/TargetBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TargetGoal.hpp b/LiteLoader/include/llapi/mc/TargetGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/TargetGoal.hpp rename to LiteLoader/include/llapi/mc/TargetGoal.hpp index cad80d4..c28bc6a 100644 --- a/LiteLoader/Header/MC/TargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/TargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TargetGoalDefinition.hpp b/LiteLoader/include/llapi/mc/TargetGoalDefinition.hpp similarity index 95% rename from LiteLoader/Header/MC/TargetGoalDefinition.hpp rename to LiteLoader/include/llapi/mc/TargetGoalDefinition.hpp index c8c84a2..bfbea98 100644 --- a/LiteLoader/Header/MC/TargetGoalDefinition.hpp +++ b/LiteLoader/include/llapi/mc/TargetGoalDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TargetNearbyDescription.hpp b/LiteLoader/include/llapi/mc/TargetNearbyDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TargetNearbyDescription.hpp rename to LiteLoader/include/llapi/mc/TargetNearbyDescription.hpp index a2387eb..1eabb1c 100644 --- a/LiteLoader/Header/MC/TargetNearbyDescription.hpp +++ b/LiteLoader/include/llapi/mc/TargetNearbyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TargetNearbySystem.hpp b/LiteLoader/include/llapi/mc/TargetNearbySystem.hpp similarity index 95% rename from LiteLoader/Header/MC/TargetNearbySystem.hpp rename to LiteLoader/include/llapi/mc/TargetNearbySystem.hpp index 343a2f0..84c2761 100644 --- a/LiteLoader/Header/MC/TargetNearbySystem.hpp +++ b/LiteLoader/include/llapi/mc/TargetNearbySystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TargetWhenPushedGoal.hpp b/LiteLoader/include/llapi/mc/TargetWhenPushedGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/TargetWhenPushedGoal.hpp rename to LiteLoader/include/llapi/mc/TargetWhenPushedGoal.hpp index 4c0b944..1bde517 100644 --- a/LiteLoader/Header/MC/TargetWhenPushedGoal.hpp +++ b/LiteLoader/include/llapi/mc/TargetWhenPushedGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TaskGroup.hpp b/LiteLoader/include/llapi/mc/TaskGroup.hpp similarity index 98% rename from LiteLoader/Header/MC/TaskGroup.hpp rename to LiteLoader/include/llapi/mc/TaskGroup.hpp index ec8103b..9146692 100644 --- a/LiteLoader/Header/MC/TaskGroup.hpp +++ b/LiteLoader/include/llapi/mc/TaskGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TaskResult.hpp b/LiteLoader/include/llapi/mc/TaskResult.hpp similarity index 96% rename from LiteLoader/Header/MC/TaskResult.hpp rename to LiteLoader/include/llapi/mc/TaskResult.hpp index e964bb3..3246820 100644 --- a/LiteLoader/Header/MC/TaskResult.hpp +++ b/LiteLoader/include/llapi/mc/TaskResult.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TaskStartInfo.hpp b/LiteLoader/include/llapi/mc/TaskStartInfo.hpp similarity index 96% rename from LiteLoader/Header/MC/TaskStartInfo.hpp rename to LiteLoader/include/llapi/mc/TaskStartInfo.hpp index 8c3240e..7dc52c4 100644 --- a/LiteLoader/Header/MC/TaskStartInfo.hpp +++ b/LiteLoader/include/llapi/mc/TaskStartInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TcpProxy.hpp b/LiteLoader/include/llapi/mc/TcpProxy.hpp similarity index 94% rename from LiteLoader/Header/MC/TcpProxy.hpp rename to LiteLoader/include/llapi/mc/TcpProxy.hpp index b6cc4d3..807654f 100644 --- a/LiteLoader/Header/MC/TcpProxy.hpp +++ b/LiteLoader/include/llapi/mc/TcpProxy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TeleportCommand.hpp b/LiteLoader/include/llapi/mc/TeleportCommand.hpp similarity index 98% rename from LiteLoader/Header/MC/TeleportCommand.hpp rename to LiteLoader/include/llapi/mc/TeleportCommand.hpp index ba7a787..304532a 100644 --- a/LiteLoader/Header/MC/TeleportCommand.hpp +++ b/LiteLoader/include/llapi/mc/TeleportCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TeleportComponent.hpp b/LiteLoader/include/llapi/mc/TeleportComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TeleportComponent.hpp rename to LiteLoader/include/llapi/mc/TeleportComponent.hpp index df968a2..b79deef 100644 --- a/LiteLoader/Header/MC/TeleportComponent.hpp +++ b/LiteLoader/include/llapi/mc/TeleportComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TeleportDescription.hpp b/LiteLoader/include/llapi/mc/TeleportDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TeleportDescription.hpp rename to LiteLoader/include/llapi/mc/TeleportDescription.hpp index e397b30..09b4a6d 100644 --- a/LiteLoader/Header/MC/TeleportDescription.hpp +++ b/LiteLoader/include/llapi/mc/TeleportDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TeleportRotationData.hpp b/LiteLoader/include/llapi/mc/TeleportRotationData.hpp similarity index 97% rename from LiteLoader/Header/MC/TeleportRotationData.hpp rename to LiteLoader/include/llapi/mc/TeleportRotationData.hpp index cb83535..1ae051f 100644 --- a/LiteLoader/Header/MC/TeleportRotationData.hpp +++ b/LiteLoader/include/llapi/mc/TeleportRotationData.hpp @@ -5,7 +5,7 @@ */ #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TeleportSystem.hpp b/LiteLoader/include/llapi/mc/TeleportSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/TeleportSystem.hpp rename to LiteLoader/include/llapi/mc/TeleportSystem.hpp index f4a7e5a..1b0dab2 100644 --- a/LiteLoader/Header/MC/TeleportSystem.hpp +++ b/LiteLoader/include/llapi/mc/TeleportSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TeleportTarget.hpp b/LiteLoader/include/llapi/mc/TeleportTarget.hpp similarity index 94% rename from LiteLoader/Header/MC/TeleportTarget.hpp rename to LiteLoader/include/llapi/mc/TeleportTarget.hpp index 46d2b83..327534b 100644 --- a/LiteLoader/Header/MC/TeleportTarget.hpp +++ b/LiteLoader/include/llapi/mc/TeleportTarget.hpp @@ -1,6 +1,6 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA //DO NOT EDIT THIS LINE diff --git a/LiteLoader/Header/MC/TeleportToSubcomponent.hpp b/LiteLoader/include/llapi/mc/TeleportToSubcomponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TeleportToSubcomponent.hpp rename to LiteLoader/include/llapi/mc/TeleportToSubcomponent.hpp index 9fedb24..842bcdf 100644 --- a/LiteLoader/Header/MC/TeleportToSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/TeleportToSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TellCommand.hpp b/LiteLoader/include/llapi/mc/TellCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TellCommand.hpp rename to LiteLoader/include/llapi/mc/TellCommand.hpp index 7a687a4..ea02efd 100644 --- a/LiteLoader/Header/MC/TellCommand.hpp +++ b/LiteLoader/include/llapi/mc/TellCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TellRawCommand.hpp b/LiteLoader/include/llapi/mc/TellRawCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TellRawCommand.hpp rename to LiteLoader/include/llapi/mc/TellRawCommand.hpp index 7205849..207a047 100644 --- a/LiteLoader/Header/MC/TellRawCommand.hpp +++ b/LiteLoader/include/llapi/mc/TellRawCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TemplateStructurePiece.hpp b/LiteLoader/include/llapi/mc/TemplateStructurePiece.hpp similarity index 97% rename from LiteLoader/Header/MC/TemplateStructurePiece.hpp rename to LiteLoader/include/llapi/mc/TemplateStructurePiece.hpp index 2e1c16d..e22720e 100644 --- a/LiteLoader/Header/MC/TemplateStructurePiece.hpp +++ b/LiteLoader/include/llapi/mc/TemplateStructurePiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TemporalAttributeBuff.hpp b/LiteLoader/include/llapi/mc/TemporalAttributeBuff.hpp similarity index 97% rename from LiteLoader/Header/MC/TemporalAttributeBuff.hpp rename to LiteLoader/include/llapi/mc/TemporalAttributeBuff.hpp index a79ada9..f65ebc1 100644 --- a/LiteLoader/Header/MC/TemporalAttributeBuff.hpp +++ b/LiteLoader/include/llapi/mc/TemporalAttributeBuff.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TemptGoal.hpp b/LiteLoader/include/llapi/mc/TemptGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/TemptGoal.hpp rename to LiteLoader/include/llapi/mc/TemptGoal.hpp index 8e8ce8a..842a512 100644 --- a/LiteLoader/Header/MC/TemptGoal.hpp +++ b/LiteLoader/include/llapi/mc/TemptGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TerrainBurstReactionComponent.hpp b/LiteLoader/include/llapi/mc/TerrainBurstReactionComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TerrainBurstReactionComponent.hpp rename to LiteLoader/include/llapi/mc/TerrainBurstReactionComponent.hpp index b7132a8..9da2979 100644 --- a/LiteLoader/Header/MC/TerrainBurstReactionComponent.hpp +++ b/LiteLoader/include/llapi/mc/TerrainBurstReactionComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TestForBlockCommand.hpp b/LiteLoader/include/llapi/mc/TestForBlockCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TestForBlockCommand.hpp rename to LiteLoader/include/llapi/mc/TestForBlockCommand.hpp index 3203607..663cec1 100644 --- a/LiteLoader/Header/MC/TestForBlockCommand.hpp +++ b/LiteLoader/include/llapi/mc/TestForBlockCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TestForBlocksCommand.hpp b/LiteLoader/include/llapi/mc/TestForBlocksCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TestForBlocksCommand.hpp rename to LiteLoader/include/llapi/mc/TestForBlocksCommand.hpp index 772ab91..a5bcc8e 100644 --- a/LiteLoader/Header/MC/TestForBlocksCommand.hpp +++ b/LiteLoader/include/llapi/mc/TestForBlocksCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TestForCommand.hpp b/LiteLoader/include/llapi/mc/TestForCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TestForCommand.hpp rename to LiteLoader/include/llapi/mc/TestForCommand.hpp index c24e8c5..f7d105d 100644 --- a/LiteLoader/Header/MC/TestForCommand.hpp +++ b/LiteLoader/include/llapi/mc/TestForCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TextObjectLocalizedText.hpp b/LiteLoader/include/llapi/mc/TextObjectLocalizedText.hpp similarity index 96% rename from LiteLoader/Header/MC/TextObjectLocalizedText.hpp rename to LiteLoader/include/llapi/mc/TextObjectLocalizedText.hpp index dff9df8..70ffa07 100644 --- a/LiteLoader/Header/MC/TextObjectLocalizedText.hpp +++ b/LiteLoader/include/llapi/mc/TextObjectLocalizedText.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TextObjectLocalizedTextWithParams.hpp b/LiteLoader/include/llapi/mc/TextObjectLocalizedTextWithParams.hpp similarity index 97% rename from LiteLoader/Header/MC/TextObjectLocalizedTextWithParams.hpp rename to LiteLoader/include/llapi/mc/TextObjectLocalizedTextWithParams.hpp index 9a07812..f349c9d 100644 --- a/LiteLoader/Header/MC/TextObjectLocalizedTextWithParams.hpp +++ b/LiteLoader/include/llapi/mc/TextObjectLocalizedTextWithParams.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TextObjectParser.hpp b/LiteLoader/include/llapi/mc/TextObjectParser.hpp similarity index 97% rename from LiteLoader/Header/MC/TextObjectParser.hpp rename to LiteLoader/include/llapi/mc/TextObjectParser.hpp index d11c21e..6d3c03d 100644 --- a/LiteLoader/Header/MC/TextObjectParser.hpp +++ b/LiteLoader/include/llapi/mc/TextObjectParser.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TextObjectRoot.hpp b/LiteLoader/include/llapi/mc/TextObjectRoot.hpp similarity index 96% rename from LiteLoader/Header/MC/TextObjectRoot.hpp rename to LiteLoader/include/llapi/mc/TextObjectRoot.hpp index 8ec8a3b..1187dd1 100644 --- a/LiteLoader/Header/MC/TextObjectRoot.hpp +++ b/LiteLoader/include/llapi/mc/TextObjectRoot.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TextObjectText.hpp b/LiteLoader/include/llapi/mc/TextObjectText.hpp similarity index 95% rename from LiteLoader/Header/MC/TextObjectText.hpp rename to LiteLoader/include/llapi/mc/TextObjectText.hpp index 9f4b76b..989ca5b 100644 --- a/LiteLoader/Header/MC/TextObjectText.hpp +++ b/LiteLoader/include/llapi/mc/TextObjectText.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TextPacket.hpp b/LiteLoader/include/llapi/mc/TextPacket.hpp similarity index 98% rename from LiteLoader/Header/MC/TextPacket.hpp rename to LiteLoader/include/llapi/mc/TextPacket.hpp index 17c3826..656ce46 100644 --- a/LiteLoader/Header/MC/TextPacket.hpp +++ b/LiteLoader/include/llapi/mc/TextPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TextureUVCoordinateSet.hpp b/LiteLoader/include/llapi/mc/TextureUVCoordinateSet.hpp similarity index 95% rename from LiteLoader/Header/MC/TextureUVCoordinateSet.hpp rename to LiteLoader/include/llapi/mc/TextureUVCoordinateSet.hpp index 8db1f17..16ebb4d 100644 --- a/LiteLoader/Header/MC/TextureUVCoordinateSet.hpp +++ b/LiteLoader/include/llapi/mc/TextureUVCoordinateSet.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TheEndDimension.hpp b/LiteLoader/include/llapi/mc/TheEndDimension.hpp similarity index 98% rename from LiteLoader/Header/MC/TheEndDimension.hpp rename to LiteLoader/include/llapi/mc/TheEndDimension.hpp index 2a0d341..b4f32cb 100644 --- a/LiteLoader/Header/MC/TheEndDimension.hpp +++ b/LiteLoader/include/llapi/mc/TheEndDimension.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TheEndGenerator.hpp b/LiteLoader/include/llapi/mc/TheEndGenerator.hpp similarity index 98% rename from LiteLoader/Header/MC/TheEndGenerator.hpp rename to LiteLoader/include/llapi/mc/TheEndGenerator.hpp index 580bfe4..b615ef6 100644 --- a/LiteLoader/Header/MC/TheEndGenerator.hpp +++ b/LiteLoader/include/llapi/mc/TheEndGenerator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TheEndSpikeHelper.hpp b/LiteLoader/include/llapi/mc/TheEndSpikeHelper.hpp similarity index 92% rename from LiteLoader/Header/MC/TheEndSpikeHelper.hpp rename to LiteLoader/include/llapi/mc/TheEndSpikeHelper.hpp index b2fb2c0..da6ea3e 100644 --- a/LiteLoader/Header/MC/TheEndSpikeHelper.hpp +++ b/LiteLoader/include/llapi/mc/TheEndSpikeHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SpikeFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ThinFenceBlock.hpp b/LiteLoader/include/llapi/mc/ThinFenceBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/ThinFenceBlock.hpp rename to LiteLoader/include/llapi/mc/ThinFenceBlock.hpp index 6567294..07a33e7 100644 --- a/LiteLoader/Header/MC/ThinFenceBlock.hpp +++ b/LiteLoader/include/llapi/mc/ThinFenceBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ThirdPartyInfo.hpp b/LiteLoader/include/llapi/mc/ThirdPartyInfo.hpp similarity index 94% rename from LiteLoader/Header/MC/ThirdPartyInfo.hpp rename to LiteLoader/include/llapi/mc/ThirdPartyInfo.hpp index 66d9f80..c48307c 100644 --- a/LiteLoader/Header/MC/ThirdPartyInfo.hpp +++ b/LiteLoader/include/llapi/mc/ThirdPartyInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Throwable.hpp b/LiteLoader/include/llapi/mc/Throwable.hpp similarity index 98% rename from LiteLoader/Header/MC/Throwable.hpp rename to LiteLoader/include/llapi/mc/Throwable.hpp index 1af48a1..5c8f902 100644 --- a/LiteLoader/Header/MC/Throwable.hpp +++ b/LiteLoader/include/llapi/mc/Throwable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ThrownEgg.hpp b/LiteLoader/include/llapi/mc/ThrownEgg.hpp similarity index 98% rename from LiteLoader/Header/MC/ThrownEgg.hpp rename to LiteLoader/include/llapi/mc/ThrownEgg.hpp index 488a09f..876cb54 100644 --- a/LiteLoader/Header/MC/ThrownEgg.hpp +++ b/LiteLoader/include/llapi/mc/ThrownEgg.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Throwable.hpp" diff --git a/LiteLoader/Header/MC/ThrownEnderpearl.hpp b/LiteLoader/include/llapi/mc/ThrownEnderpearl.hpp similarity index 98% rename from LiteLoader/Header/MC/ThrownEnderpearl.hpp rename to LiteLoader/include/llapi/mc/ThrownEnderpearl.hpp index ce1f91f..7be5c5b 100644 --- a/LiteLoader/Header/MC/ThrownEnderpearl.hpp +++ b/LiteLoader/include/llapi/mc/ThrownEnderpearl.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Throwable.hpp" diff --git a/LiteLoader/Header/MC/ThrownIceBomb.hpp b/LiteLoader/include/llapi/mc/ThrownIceBomb.hpp similarity index 98% rename from LiteLoader/Header/MC/ThrownIceBomb.hpp rename to LiteLoader/include/llapi/mc/ThrownIceBomb.hpp index 49cd122..ff0baad 100644 --- a/LiteLoader/Header/MC/ThrownIceBomb.hpp +++ b/LiteLoader/include/llapi/mc/ThrownIceBomb.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Throwable.hpp" diff --git a/LiteLoader/Header/MC/ThrownPotion.hpp b/LiteLoader/include/llapi/mc/ThrownPotion.hpp similarity index 98% rename from LiteLoader/Header/MC/ThrownPotion.hpp rename to LiteLoader/include/llapi/mc/ThrownPotion.hpp index 12e1b47..3bbe11e 100644 --- a/LiteLoader/Header/MC/ThrownPotion.hpp +++ b/LiteLoader/include/llapi/mc/ThrownPotion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Throwable.hpp" diff --git a/LiteLoader/Header/MC/ThrownPotionEffectSubcomponent.hpp b/LiteLoader/include/llapi/mc/ThrownPotionEffectSubcomponent.hpp similarity index 97% rename from LiteLoader/Header/MC/ThrownPotionEffectSubcomponent.hpp rename to LiteLoader/include/llapi/mc/ThrownPotionEffectSubcomponent.hpp index 08f25ab..ba539fb 100644 --- a/LiteLoader/Header/MC/ThrownPotionEffectSubcomponent.hpp +++ b/LiteLoader/include/llapi/mc/ThrownPotionEffectSubcomponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "SplashPotionEffectSubcomponent.hpp" diff --git a/LiteLoader/Header/MC/ThrownTrident.hpp b/LiteLoader/include/llapi/mc/ThrownTrident.hpp similarity index 98% rename from LiteLoader/Header/MC/ThrownTrident.hpp rename to LiteLoader/include/llapi/mc/ThrownTrident.hpp index 0c502ea..8d551bb 100644 --- a/LiteLoader/Header/MC/ThrownTrident.hpp +++ b/LiteLoader/include/llapi/mc/ThrownTrident.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "AbstractArrow.hpp" diff --git a/LiteLoader/Header/MC/Tick.hpp b/LiteLoader/include/llapi/mc/Tick.hpp similarity index 100% rename from LiteLoader/Header/MC/Tick.hpp rename to LiteLoader/include/llapi/mc/Tick.hpp diff --git a/LiteLoader/Header/MC/TickSyncPacket.hpp b/LiteLoader/include/llapi/mc/TickSyncPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/TickSyncPacket.hpp rename to LiteLoader/include/llapi/mc/TickSyncPacket.hpp index 33b6783..957235c 100644 --- a/LiteLoader/Header/MC/TickSyncPacket.hpp +++ b/LiteLoader/include/llapi/mc/TickSyncPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickWorldComponent.hpp b/LiteLoader/include/llapi/mc/TickWorldComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TickWorldComponent.hpp rename to LiteLoader/include/llapi/mc/TickWorldComponent.hpp index 7f3770e..9496429 100644 --- a/LiteLoader/Header/MC/TickWorldComponent.hpp +++ b/LiteLoader/include/llapi/mc/TickWorldComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickWorldDescription.hpp b/LiteLoader/include/llapi/mc/TickWorldDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TickWorldDescription.hpp rename to LiteLoader/include/llapi/mc/TickWorldDescription.hpp index d0034c2..0e8c13a 100644 --- a/LiteLoader/Header/MC/TickWorldDescription.hpp +++ b/LiteLoader/include/llapi/mc/TickWorldDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickingArea.hpp b/LiteLoader/include/llapi/mc/TickingArea.hpp similarity index 98% rename from LiteLoader/Header/MC/TickingArea.hpp rename to LiteLoader/include/llapi/mc/TickingArea.hpp index ea8eec9..05ded61 100644 --- a/LiteLoader/Header/MC/TickingArea.hpp +++ b/LiteLoader/include/llapi/mc/TickingArea.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickingAreaCommand.hpp b/LiteLoader/include/llapi/mc/TickingAreaCommand.hpp similarity index 97% rename from LiteLoader/Header/MC/TickingAreaCommand.hpp rename to LiteLoader/include/llapi/mc/TickingAreaCommand.hpp index f1c239b..11b853f 100644 --- a/LiteLoader/Header/MC/TickingAreaCommand.hpp +++ b/LiteLoader/include/llapi/mc/TickingAreaCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickingAreaDescription.hpp b/LiteLoader/include/llapi/mc/TickingAreaDescription.hpp similarity index 95% rename from LiteLoader/Header/MC/TickingAreaDescription.hpp rename to LiteLoader/include/llapi/mc/TickingAreaDescription.hpp index 23e6a22..fc41837 100644 --- a/LiteLoader/Header/MC/TickingAreaDescription.hpp +++ b/LiteLoader/include/llapi/mc/TickingAreaDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickingAreaList.hpp b/LiteLoader/include/llapi/mc/TickingAreaList.hpp similarity index 95% rename from LiteLoader/Header/MC/TickingAreaList.hpp rename to LiteLoader/include/llapi/mc/TickingAreaList.hpp index 9a53cf2..b48ce6a 100644 --- a/LiteLoader/Header/MC/TickingAreaList.hpp +++ b/LiteLoader/include/llapi/mc/TickingAreaList.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickingAreaListBase.hpp b/LiteLoader/include/llapi/mc/TickingAreaListBase.hpp similarity index 97% rename from LiteLoader/Header/MC/TickingAreaListBase.hpp rename to LiteLoader/include/llapi/mc/TickingAreaListBase.hpp index 6b4af0d..76b99fa 100644 --- a/LiteLoader/Header/MC/TickingAreaListBase.hpp +++ b/LiteLoader/include/llapi/mc/TickingAreaListBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickingAreaView.hpp b/LiteLoader/include/llapi/mc/TickingAreaView.hpp similarity index 98% rename from LiteLoader/Header/MC/TickingAreaView.hpp rename to LiteLoader/include/llapi/mc/TickingAreaView.hpp index 3734192..2d6b905 100644 --- a/LiteLoader/Header/MC/TickingAreaView.hpp +++ b/LiteLoader/include/llapi/mc/TickingAreaView.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TickingAreasManager.hpp b/LiteLoader/include/llapi/mc/TickingAreasManager.hpp similarity index 97% rename from LiteLoader/Header/MC/TickingAreasManager.hpp rename to LiteLoader/include/llapi/mc/TickingAreasManager.hpp index b456524..955880d 100644 --- a/LiteLoader/Header/MC/TickingAreasManager.hpp +++ b/LiteLoader/include/llapi/mc/TickingAreasManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TimeCommand.hpp b/LiteLoader/include/llapi/mc/TimeCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TimeCommand.hpp rename to LiteLoader/include/llapi/mc/TimeCommand.hpp index c5d8522..ad80942 100644 --- a/LiteLoader/Header/MC/TimeCommand.hpp +++ b/LiteLoader/include/llapi/mc/TimeCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Timer.hpp b/LiteLoader/include/llapi/mc/Timer.hpp similarity index 94% rename from LiteLoader/Header/MC/Timer.hpp rename to LiteLoader/include/llapi/mc/Timer.hpp index b64da02..977c30a 100644 --- a/LiteLoader/Header/MC/Timer.hpp +++ b/LiteLoader/include/llapi/mc/Timer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TimerComponent.hpp b/LiteLoader/include/llapi/mc/TimerComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TimerComponent.hpp rename to LiteLoader/include/llapi/mc/TimerComponent.hpp index 811ecfd..e87ea0d 100644 --- a/LiteLoader/Header/MC/TimerComponent.hpp +++ b/LiteLoader/include/llapi/mc/TimerComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TimerDefinition.hpp b/LiteLoader/include/llapi/mc/TimerDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/TimerDefinition.hpp rename to LiteLoader/include/llapi/mc/TimerDefinition.hpp index 32bb4a7..5ba45ba 100644 --- a/LiteLoader/Header/MC/TimerDefinition.hpp +++ b/LiteLoader/include/llapi/mc/TimerDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TimerSystem.hpp b/LiteLoader/include/llapi/mc/TimerSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/TimerSystem.hpp rename to LiteLoader/include/llapi/mc/TimerSystem.hpp index 49b29ab..5c628c8 100644 --- a/LiteLoader/Header/MC/TimerSystem.hpp +++ b/LiteLoader/include/llapi/mc/TimerSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TitleCommand.hpp b/LiteLoader/include/llapi/mc/TitleCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TitleCommand.hpp rename to LiteLoader/include/llapi/mc/TitleCommand.hpp index 5cda83a..4ae1648 100644 --- a/LiteLoader/Header/MC/TitleCommand.hpp +++ b/LiteLoader/include/llapi/mc/TitleCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TitleInfo.hpp b/LiteLoader/include/llapi/mc/TitleInfo.hpp similarity index 91% rename from LiteLoader/Header/MC/TitleInfo.hpp rename to LiteLoader/include/llapi/mc/TitleInfo.hpp index d6445a7..9060742 100644 --- a/LiteLoader/Header/MC/TitleInfo.hpp +++ b/LiteLoader/include/llapi/mc/TitleInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TitleRawCommand.hpp b/LiteLoader/include/llapi/mc/TitleRawCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/TitleRawCommand.hpp rename to LiteLoader/include/llapi/mc/TitleRawCommand.hpp index d5e5531..77befa5 100644 --- a/LiteLoader/Header/MC/TitleRawCommand.hpp +++ b/LiteLoader/include/llapi/mc/TitleRawCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TntBlock.hpp b/LiteLoader/include/llapi/mc/TntBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TntBlock.hpp rename to LiteLoader/include/llapi/mc/TntBlock.hpp index 5f18a52..db1ddcf 100644 --- a/LiteLoader/Header/MC/TntBlock.hpp +++ b/LiteLoader/include/llapi/mc/TntBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ToggleDownfallCommand.hpp b/LiteLoader/include/llapi/mc/ToggleDownfallCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/ToggleDownfallCommand.hpp rename to LiteLoader/include/llapi/mc/ToggleDownfallCommand.hpp index 70b975c..9ae3f4c 100644 --- a/LiteLoader/Header/MC/ToggleDownfallCommand.hpp +++ b/LiteLoader/include/llapi/mc/ToggleDownfallCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Token.hpp b/LiteLoader/include/llapi/mc/Token.hpp similarity index 95% rename from LiteLoader/Header/MC/Token.hpp rename to LiteLoader/include/llapi/mc/Token.hpp index 84e1604..d4deade 100644 --- a/LiteLoader/Header/MC/Token.hpp +++ b/LiteLoader/include/llapi/mc/Token.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ToolRecipes.hpp b/LiteLoader/include/llapi/mc/ToolRecipes.hpp similarity index 94% rename from LiteLoader/Header/MC/ToolRecipes.hpp rename to LiteLoader/include/llapi/mc/ToolRecipes.hpp index 9d172ba..87002dc 100644 --- a/LiteLoader/Header/MC/ToolRecipes.hpp +++ b/LiteLoader/include/llapi/mc/ToolRecipes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TopSnowBlock.hpp b/LiteLoader/include/llapi/mc/TopSnowBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TopSnowBlock.hpp rename to LiteLoader/include/llapi/mc/TopSnowBlock.hpp index 7cc5cd7..d07cfbf 100644 --- a/LiteLoader/Header/MC/TopSnowBlock.hpp +++ b/LiteLoader/include/llapi/mc/TopSnowBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TopSnowBlockItem.hpp b/LiteLoader/include/llapi/mc/TopSnowBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/TopSnowBlockItem.hpp rename to LiteLoader/include/llapi/mc/TopSnowBlockItem.hpp index 6933b3c..4b758a9 100644 --- a/LiteLoader/Header/MC/TopSnowBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/TopSnowBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TorchBlock.hpp b/LiteLoader/include/llapi/mc/TorchBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TorchBlock.hpp rename to LiteLoader/include/llapi/mc/TorchBlock.hpp index 2c03cdd..94e4a86 100644 --- a/LiteLoader/Header/MC/TorchBlock.hpp +++ b/LiteLoader/include/llapi/mc/TorchBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Trade.hpp b/LiteLoader/include/llapi/mc/Trade.hpp similarity index 94% rename from LiteLoader/Header/MC/Trade.hpp rename to LiteLoader/include/llapi/mc/Trade.hpp index f3c91d4..8929175 100644 --- a/LiteLoader/Header/MC/Trade.hpp +++ b/LiteLoader/include/llapi/mc/Trade.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Trade2ContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/Trade2ContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/Trade2ContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/Trade2ContainerManagerModel.hpp index ab2dd7b..f06e8dc 100644 --- a/LiteLoader/Header/MC/Trade2ContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/Trade2ContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeContainerManagerModel.hpp b/LiteLoader/include/llapi/mc/TradeContainerManagerModel.hpp similarity index 97% rename from LiteLoader/Header/MC/TradeContainerManagerModel.hpp rename to LiteLoader/include/llapi/mc/TradeContainerManagerModel.hpp index 2b7b1a1..7f7fd34 100644 --- a/LiteLoader/Header/MC/TradeContainerManagerModel.hpp +++ b/LiteLoader/include/llapi/mc/TradeContainerManagerModel.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ContainerManagerModel.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeGroup.hpp b/LiteLoader/include/llapi/mc/TradeGroup.hpp similarity index 94% rename from LiteLoader/Header/MC/TradeGroup.hpp rename to LiteLoader/include/llapi/mc/TradeGroup.hpp index 795f885..7f1c5cf 100644 --- a/LiteLoader/Header/MC/TradeGroup.hpp +++ b/LiteLoader/include/llapi/mc/TradeGroup.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeInterestGoal.hpp b/LiteLoader/include/llapi/mc/TradeInterestGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/TradeInterestGoal.hpp rename to LiteLoader/include/llapi/mc/TradeInterestGoal.hpp index 09ae7dc..df4e777 100644 --- a/LiteLoader/Header/MC/TradeInterestGoal.hpp +++ b/LiteLoader/include/llapi/mc/TradeInterestGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeItem.hpp b/LiteLoader/include/llapi/mc/TradeItem.hpp similarity index 94% rename from LiteLoader/Header/MC/TradeItem.hpp rename to LiteLoader/include/llapi/mc/TradeItem.hpp index 7941c3b..33bfe77 100644 --- a/LiteLoader/Header/MC/TradeItem.hpp +++ b/LiteLoader/include/llapi/mc/TradeItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeResupplyDescription.hpp b/LiteLoader/include/llapi/mc/TradeResupplyDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TradeResupplyDescription.hpp rename to LiteLoader/include/llapi/mc/TradeResupplyDescription.hpp index cc0e4e1..e69efcc 100644 --- a/LiteLoader/Header/MC/TradeResupplyDescription.hpp +++ b/LiteLoader/include/llapi/mc/TradeResupplyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeTable.hpp b/LiteLoader/include/llapi/mc/TradeTable.hpp similarity index 94% rename from LiteLoader/Header/MC/TradeTable.hpp rename to LiteLoader/include/llapi/mc/TradeTable.hpp index de60d13..b457d19 100644 --- a/LiteLoader/Header/MC/TradeTable.hpp +++ b/LiteLoader/include/llapi/mc/TradeTable.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeTables.hpp b/LiteLoader/include/llapi/mc/TradeTables.hpp similarity index 96% rename from LiteLoader/Header/MC/TradeTables.hpp rename to LiteLoader/include/llapi/mc/TradeTables.hpp index 9151482..fa8c443 100644 --- a/LiteLoader/Header/MC/TradeTables.hpp +++ b/LiteLoader/include/llapi/mc/TradeTables.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeTier.hpp b/LiteLoader/include/llapi/mc/TradeTier.hpp similarity index 94% rename from LiteLoader/Header/MC/TradeTier.hpp rename to LiteLoader/include/llapi/mc/TradeTier.hpp index eddadcd..34df2a2 100644 --- a/LiteLoader/Header/MC/TradeTier.hpp +++ b/LiteLoader/include/llapi/mc/TradeTier.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeWithPlayerGoal.hpp b/LiteLoader/include/llapi/mc/TradeWithPlayerGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/TradeWithPlayerGoal.hpp rename to LiteLoader/include/llapi/mc/TradeWithPlayerGoal.hpp index 7df6525..b4a2ceb 100644 --- a/LiteLoader/Header/MC/TradeWithPlayerGoal.hpp +++ b/LiteLoader/include/llapi/mc/TradeWithPlayerGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TradeableSystem.hpp b/LiteLoader/include/llapi/mc/TradeableSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/TradeableSystem.hpp rename to LiteLoader/include/llapi/mc/TradeableSystem.hpp index beb70cc..7c821d7 100644 --- a/LiteLoader/Header/MC/TradeableSystem.hpp +++ b/LiteLoader/include/llapi/mc/TradeableSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TraderMaterialTypeFunction.hpp b/LiteLoader/include/llapi/mc/TraderMaterialTypeFunction.hpp similarity index 97% rename from LiteLoader/Header/MC/TraderMaterialTypeFunction.hpp rename to LiteLoader/include/llapi/mc/TraderMaterialTypeFunction.hpp index d7c9c9e..ee3dc5e 100644 --- a/LiteLoader/Header/MC/TraderMaterialTypeFunction.hpp +++ b/LiteLoader/include/llapi/mc/TraderMaterialTypeFunction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LootItemFunction.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrailDescription.hpp b/LiteLoader/include/llapi/mc/TrailDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TrailDescription.hpp rename to LiteLoader/include/llapi/mc/TrailDescription.hpp index deb95be..2ec74fd 100644 --- a/LiteLoader/Header/MC/TrailDescription.hpp +++ b/LiteLoader/include/llapi/mc/TrailDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrailSystem.hpp b/LiteLoader/include/llapi/mc/TrailSystem.hpp similarity index 96% rename from LiteLoader/Header/MC/TrailSystem.hpp rename to LiteLoader/include/llapi/mc/TrailSystem.hpp index 1e73985..56ef557 100644 --- a/LiteLoader/Header/MC/TrailSystem.hpp +++ b/LiteLoader/include/llapi/mc/TrailSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TransactionalWorldBlockTarget.hpp b/LiteLoader/include/llapi/mc/TransactionalWorldBlockTarget.hpp similarity index 98% rename from LiteLoader/Header/MC/TransactionalWorldBlockTarget.hpp rename to LiteLoader/include/llapi/mc/TransactionalWorldBlockTarget.hpp index f3bbb7b..2ca9216 100644 --- a/LiteLoader/Header/MC/TransactionalWorldBlockTarget.hpp +++ b/LiteLoader/include/llapi/mc/TransactionalWorldBlockTarget.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TransferPacket.hpp b/LiteLoader/include/llapi/mc/TransferPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/TransferPacket.hpp rename to LiteLoader/include/llapi/mc/TransferPacket.hpp index 092f420..b484ea6 100644 --- a/LiteLoader/Header/MC/TransferPacket.hpp +++ b/LiteLoader/include/llapi/mc/TransferPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TransformationComponent.hpp b/LiteLoader/include/llapi/mc/TransformationComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TransformationComponent.hpp rename to LiteLoader/include/llapi/mc/TransformationComponent.hpp index fbc2b1e..1a19b05 100644 --- a/LiteLoader/Header/MC/TransformationComponent.hpp +++ b/LiteLoader/include/llapi/mc/TransformationComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TransformationDescription.hpp b/LiteLoader/include/llapi/mc/TransformationDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TransformationDescription.hpp rename to LiteLoader/include/llapi/mc/TransformationDescription.hpp index e62e504..00ed0e1 100644 --- a/LiteLoader/Header/MC/TransformationDescription.hpp +++ b/LiteLoader/include/llapi/mc/TransformationDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TransformationSystem.hpp b/LiteLoader/include/llapi/mc/TransformationSystem.hpp similarity index 95% rename from LiteLoader/Header/MC/TransformationSystem.hpp rename to LiteLoader/include/llapi/mc/TransformationSystem.hpp index 5b6c20a..75acfae 100644 --- a/LiteLoader/Header/MC/TransformationSystem.hpp +++ b/LiteLoader/include/llapi/mc/TransformationSystem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TransporterComponent.hpp b/LiteLoader/include/llapi/mc/TransporterComponent.hpp similarity index 97% rename from LiteLoader/Header/MC/TransporterComponent.hpp rename to LiteLoader/include/llapi/mc/TransporterComponent.hpp index ee71cbc..f1f4fdc 100644 --- a/LiteLoader/Header/MC/TransporterComponent.hpp +++ b/LiteLoader/include/llapi/mc/TransporterComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BaseCircuitComponent.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrapDoorBlock.hpp b/LiteLoader/include/llapi/mc/TrapDoorBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TrapDoorBlock.hpp rename to LiteLoader/include/llapi/mc/TrapDoorBlock.hpp index fe84dae..8c65ae7 100644 --- a/LiteLoader/Header/MC/TrapDoorBlock.hpp +++ b/LiteLoader/include/llapi/mc/TrapDoorBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TreeHelper.hpp b/LiteLoader/include/llapi/mc/TreeHelper.hpp similarity index 96% rename from LiteLoader/Header/MC/TreeHelper.hpp rename to LiteLoader/include/llapi/mc/TreeHelper.hpp index 10c7b4a..a496f86 100644 --- a/LiteLoader/Header/MC/TreeHelper.hpp +++ b/LiteLoader/include/llapi/mc/TreeHelper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TridentChannelingEnchant.hpp b/LiteLoader/include/llapi/mc/TridentChannelingEnchant.hpp similarity index 97% rename from LiteLoader/Header/MC/TridentChannelingEnchant.hpp rename to LiteLoader/include/llapi/mc/TridentChannelingEnchant.hpp index 505e534..7f5f63f 100644 --- a/LiteLoader/Header/MC/TridentChannelingEnchant.hpp +++ b/LiteLoader/include/llapi/mc/TridentChannelingEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TridentImpalerEnchant.hpp b/LiteLoader/include/llapi/mc/TridentImpalerEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/TridentImpalerEnchant.hpp rename to LiteLoader/include/llapi/mc/TridentImpalerEnchant.hpp index 776a287..f5dae23 100644 --- a/LiteLoader/Header/MC/TridentImpalerEnchant.hpp +++ b/LiteLoader/include/llapi/mc/TridentImpalerEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TridentItem.hpp b/LiteLoader/include/llapi/mc/TridentItem.hpp similarity index 98% rename from LiteLoader/Header/MC/TridentItem.hpp rename to LiteLoader/include/llapi/mc/TridentItem.hpp index 1565317..7be7de3 100644 --- a/LiteLoader/Header/MC/TridentItem.hpp +++ b/LiteLoader/include/llapi/mc/TridentItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TridentLoyaltyEnchant.hpp b/LiteLoader/include/llapi/mc/TridentLoyaltyEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/TridentLoyaltyEnchant.hpp rename to LiteLoader/include/llapi/mc/TridentLoyaltyEnchant.hpp index edef6dc..9bd2c4a 100644 --- a/LiteLoader/Header/MC/TridentLoyaltyEnchant.hpp +++ b/LiteLoader/include/llapi/mc/TridentLoyaltyEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TridentRiptideEnchant.hpp b/LiteLoader/include/llapi/mc/TridentRiptideEnchant.hpp similarity index 96% rename from LiteLoader/Header/MC/TridentRiptideEnchant.hpp rename to LiteLoader/include/llapi/mc/TridentRiptideEnchant.hpp index 2d71166..26665e3 100644 --- a/LiteLoader/Header/MC/TridentRiptideEnchant.hpp +++ b/LiteLoader/include/llapi/mc/TridentRiptideEnchant.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Enchant.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TriggerDescription.hpp b/LiteLoader/include/llapi/mc/TriggerDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TriggerDescription.hpp rename to LiteLoader/include/llapi/mc/TriggerDescription.hpp index c79e606..659d7e1 100644 --- a/LiteLoader/Header/MC/TriggerDescription.hpp +++ b/LiteLoader/include/llapi/mc/TriggerDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TripWireBlock.hpp b/LiteLoader/include/llapi/mc/TripWireBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TripWireBlock.hpp rename to LiteLoader/include/llapi/mc/TripWireBlock.hpp index 4068100..7adff88 100644 --- a/LiteLoader/Header/MC/TripWireBlock.hpp +++ b/LiteLoader/include/llapi/mc/TripWireBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TripWireHookBlock.hpp b/LiteLoader/include/llapi/mc/TripWireHookBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TripWireHookBlock.hpp rename to LiteLoader/include/llapi/mc/TripWireHookBlock.hpp index 589a7cd..94954e8 100644 --- a/LiteLoader/Header/MC/TripWireHookBlock.hpp +++ b/LiteLoader/include/llapi/mc/TripWireHookBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TripodCamera.hpp b/LiteLoader/include/llapi/mc/TripodCamera.hpp similarity index 98% rename from LiteLoader/Header/MC/TripodCamera.hpp rename to LiteLoader/include/llapi/mc/TripodCamera.hpp index 964f3d0..488b5b1 100644 --- a/LiteLoader/Header/MC/TripodCamera.hpp +++ b/LiteLoader/include/llapi/mc/TripodCamera.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/TripodCameraDescription.hpp b/LiteLoader/include/llapi/mc/TripodCameraDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TripodCameraDescription.hpp rename to LiteLoader/include/llapi/mc/TripodCameraDescription.hpp index 124fffc..8809a53 100644 --- a/LiteLoader/Header/MC/TripodCameraDescription.hpp +++ b/LiteLoader/include/llapi/mc/TripodCameraDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TropicalFish.hpp b/LiteLoader/include/llapi/mc/TropicalFish.hpp similarity index 98% rename from LiteLoader/Header/MC/TropicalFish.hpp rename to LiteLoader/include/llapi/mc/TropicalFish.hpp index 6e43efc..c1fa0b1 100644 --- a/LiteLoader/Header/MC/TropicalFish.hpp +++ b/LiteLoader/include/llapi/mc/TropicalFish.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "WaterAnimal.hpp" diff --git a/LiteLoader/Header/MC/TropicalFishInfo.hpp b/LiteLoader/include/llapi/mc/TropicalFishInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/TropicalFishInfo.hpp rename to LiteLoader/include/llapi/mc/TropicalFishInfo.hpp index e02d1ed..8324a7c 100644 --- a/LiteLoader/Header/MC/TropicalFishInfo.hpp +++ b/LiteLoader/include/llapi/mc/TropicalFishInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrustComponent.hpp b/LiteLoader/include/llapi/mc/TrustComponent.hpp similarity index 95% rename from LiteLoader/Header/MC/TrustComponent.hpp rename to LiteLoader/include/llapi/mc/TrustComponent.hpp index 0ed3f3e..8eeef35 100644 --- a/LiteLoader/Header/MC/TrustComponent.hpp +++ b/LiteLoader/include/llapi/mc/TrustComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrustDescription.hpp b/LiteLoader/include/llapi/mc/TrustDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TrustDescription.hpp rename to LiteLoader/include/llapi/mc/TrustDescription.hpp index a1f0f32..7b449cc 100644 --- a/LiteLoader/Header/MC/TrustDescription.hpp +++ b/LiteLoader/include/llapi/mc/TrustDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrustedKeys.hpp b/LiteLoader/include/llapi/mc/TrustedKeys.hpp similarity index 90% rename from LiteLoader/Header/MC/TrustedKeys.hpp rename to LiteLoader/include/llapi/mc/TrustedKeys.hpp index 4ab1658..031e252 100644 --- a/LiteLoader/Header/MC/TrustedKeys.hpp +++ b/LiteLoader/include/llapi/mc/TrustedKeys.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrustingComponent.hpp b/LiteLoader/include/llapi/mc/TrustingComponent.hpp similarity index 96% rename from LiteLoader/Header/MC/TrustingComponent.hpp rename to LiteLoader/include/llapi/mc/TrustingComponent.hpp index ed7a0c9..5311662 100644 --- a/LiteLoader/Header/MC/TrustingComponent.hpp +++ b/LiteLoader/include/llapi/mc/TrustingComponent.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TrustingDescription.hpp b/LiteLoader/include/llapi/mc/TrustingDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/TrustingDescription.hpp rename to LiteLoader/include/llapi/mc/TrustingDescription.hpp index 7202b77..ea079a3 100644 --- a/LiteLoader/Header/MC/TrustingDescription.hpp +++ b/LiteLoader/include/llapi/mc/TrustingDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Turtle.hpp b/LiteLoader/include/llapi/mc/Turtle.hpp similarity index 98% rename from LiteLoader/Header/MC/Turtle.hpp rename to LiteLoader/include/llapi/mc/Turtle.hpp index 673a89d..27ff5e1 100644 --- a/LiteLoader/Header/MC/Turtle.hpp +++ b/LiteLoader/include/llapi/mc/Turtle.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/TurtleEggBlock.hpp b/LiteLoader/include/llapi/mc/TurtleEggBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TurtleEggBlock.hpp rename to LiteLoader/include/llapi/mc/TurtleEggBlock.hpp index 0740f0e..7f59a18 100644 --- a/LiteLoader/Header/MC/TurtleEggBlock.hpp +++ b/LiteLoader/include/llapi/mc/TurtleEggBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TwistingVinesBlock.hpp b/LiteLoader/include/llapi/mc/TwistingVinesBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/TwistingVinesBlock.hpp rename to LiteLoader/include/llapi/mc/TwistingVinesBlock.hpp index 9df9471..4bcbf8d 100644 --- a/LiteLoader/Header/MC/TwistingVinesBlock.hpp +++ b/LiteLoader/include/llapi/mc/TwistingVinesBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/TwistingVinesClusterFeature.hpp b/LiteLoader/include/llapi/mc/TwistingVinesClusterFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/TwistingVinesClusterFeature.hpp rename to LiteLoader/include/llapi/mc/TwistingVinesClusterFeature.hpp index 8b05483..739e634 100644 --- a/LiteLoader/Header/MC/TwistingVinesClusterFeature.hpp +++ b/LiteLoader/include/llapi/mc/TwistingVinesClusterFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Types.hpp b/LiteLoader/include/llapi/mc/Types.hpp similarity index 99% rename from LiteLoader/Header/MC/Types.hpp rename to LiteLoader/include/llapi/mc/Types.hpp index be1554d..963975b 100644 --- a/LiteLoader/Header/MC/Types.hpp +++ b/LiteLoader/include/llapi/mc/Types.hpp @@ -1,7 +1,7 @@ #pragma once -#include "HookAPI.h" -#include "../Global.h" +#include +#include "llapi/Global.h" #include "Vec2.hpp" #include "Vec3.hpp" #include "BlockPos.hpp" @@ -438,7 +438,7 @@ public: class Command; }; -#include "../MC/Automation.hpp" +#include "Automation.hpp" class ClientBlobCache { public: @@ -1352,10 +1352,11 @@ public: } }; -/* + enum class BlockActorType : int { + UnKnow = 0x0, Furnace = 0x01, Chest = 0x02, NetherReactor = 0x03, @@ -1403,7 +1404,7 @@ enum class BlockActorType : int SculkCatalyst = 0x30, SculkShrieker = 0x31, }; - +/* enum class ActorType; */ diff --git a/LiteLoader/Header/MC/UnburiedConstraint.hpp b/LiteLoader/include/llapi/mc/UnburiedConstraint.hpp similarity index 96% rename from LiteLoader/Header/MC/UnburiedConstraint.hpp rename to LiteLoader/include/llapi/mc/UnburiedConstraint.hpp index b6e51d8..8d80b37 100644 --- a/LiteLoader/Header/MC/UnburiedConstraint.hpp +++ b/LiteLoader/include/llapi/mc/UnburiedConstraint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UnderwaterCanyonFeature.hpp b/LiteLoader/include/llapi/mc/UnderwaterCanyonFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/UnderwaterCanyonFeature.hpp rename to LiteLoader/include/llapi/mc/UnderwaterCanyonFeature.hpp index 21a6991..38d3453 100644 --- a/LiteLoader/Header/MC/UnderwaterCanyonFeature.hpp +++ b/LiteLoader/include/llapi/mc/UnderwaterCanyonFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "CanyonFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UnderwaterLargeCaveFeature.hpp b/LiteLoader/include/llapi/mc/UnderwaterLargeCaveFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/UnderwaterLargeCaveFeature.hpp rename to LiteLoader/include/llapi/mc/UnderwaterLargeCaveFeature.hpp index 15714a5..72a3569 100644 --- a/LiteLoader/Header/MC/UnderwaterLargeCaveFeature.hpp +++ b/LiteLoader/include/llapi/mc/UnderwaterLargeCaveFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UnderwaterTorchBlock.hpp b/LiteLoader/include/llapi/mc/UnderwaterTorchBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/UnderwaterTorchBlock.hpp rename to LiteLoader/include/llapi/mc/UnderwaterTorchBlock.hpp index 10d4b8b..5a611e5 100644 --- a/LiteLoader/Header/MC/UnderwaterTorchBlock.hpp +++ b/LiteLoader/include/llapi/mc/UnderwaterTorchBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TorchBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UndyedShulkerBoxBlock.hpp b/LiteLoader/include/llapi/mc/UndyedShulkerBoxBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/UndyedShulkerBoxBlock.hpp rename to LiteLoader/include/llapi/mc/UndyedShulkerBoxBlock.hpp index 0c8bff7..930dc79 100644 --- a/LiteLoader/Header/MC/UndyedShulkerBoxBlock.hpp +++ b/LiteLoader/include/llapi/mc/UndyedShulkerBoxBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ShulkerBoxBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UnverifiedCertificate.hpp b/LiteLoader/include/llapi/mc/UnverifiedCertificate.hpp similarity index 97% rename from LiteLoader/Header/MC/UnverifiedCertificate.hpp rename to LiteLoader/include/llapi/mc/UnverifiedCertificate.hpp index 4f30f0b..423bea4 100644 --- a/LiteLoader/Header/MC/UnverifiedCertificate.hpp +++ b/LiteLoader/include/llapi/mc/UnverifiedCertificate.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdateAttributesPacket.hpp b/LiteLoader/include/llapi/mc/UpdateAttributesPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/UpdateAttributesPacket.hpp rename to LiteLoader/include/llapi/mc/UpdateAttributesPacket.hpp index 805da16..38eb2f1 100644 --- a/LiteLoader/Header/MC/UpdateAttributesPacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdateAttributesPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdateBlockPacket.hpp b/LiteLoader/include/llapi/mc/UpdateBlockPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/UpdateBlockPacket.hpp rename to LiteLoader/include/llapi/mc/UpdateBlockPacket.hpp index 5d5fb2c..94ef275 100644 --- a/LiteLoader/Header/MC/UpdateBlockPacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdateBlockPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdateBlockPropertiesPacket.hpp b/LiteLoader/include/llapi/mc/UpdateBlockPropertiesPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/UpdateBlockPropertiesPacket.hpp rename to LiteLoader/include/llapi/mc/UpdateBlockPropertiesPacket.hpp index 4d553ab..1a7dddc 100644 --- a/LiteLoader/Header/MC/UpdateBlockPropertiesPacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdateBlockPropertiesPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdateBlockSyncedPacket.hpp b/LiteLoader/include/llapi/mc/UpdateBlockSyncedPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/UpdateBlockSyncedPacket.hpp rename to LiteLoader/include/llapi/mc/UpdateBlockSyncedPacket.hpp index 2bd3f10..20163ff 100644 --- a/LiteLoader/Header/MC/UpdateBlockSyncedPacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdateBlockSyncedPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdateEquipPacket.hpp b/LiteLoader/include/llapi/mc/UpdateEquipPacket.hpp similarity index 96% rename from LiteLoader/Header/MC/UpdateEquipPacket.hpp rename to LiteLoader/include/llapi/mc/UpdateEquipPacket.hpp index a0cb731..e2a4d8e 100644 --- a/LiteLoader/Header/MC/UpdateEquipPacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdateEquipPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdatePlayerGameTypePacket.hpp b/LiteLoader/include/llapi/mc/UpdatePlayerGameTypePacket.hpp similarity index 97% rename from LiteLoader/Header/MC/UpdatePlayerGameTypePacket.hpp rename to LiteLoader/include/llapi/mc/UpdatePlayerGameTypePacket.hpp index 2990ba7..3ec043a 100644 --- a/LiteLoader/Header/MC/UpdatePlayerGameTypePacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdatePlayerGameTypePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdateSoftEnumPacket.hpp b/LiteLoader/include/llapi/mc/UpdateSoftEnumPacket.hpp similarity index 97% rename from LiteLoader/Header/MC/UpdateSoftEnumPacket.hpp rename to LiteLoader/include/llapi/mc/UpdateSoftEnumPacket.hpp index 929bffd..102f583 100644 --- a/LiteLoader/Header/MC/UpdateSoftEnumPacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdateSoftEnumPacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UpdateTradePacket.hpp b/LiteLoader/include/llapi/mc/UpdateTradePacket.hpp similarity index 96% rename from LiteLoader/Header/MC/UpdateTradePacket.hpp rename to LiteLoader/include/llapi/mc/UpdateTradePacket.hpp index 45cd25b..06b96e0 100644 --- a/LiteLoader/Header/MC/UpdateTradePacket.hpp +++ b/LiteLoader/include/llapi/mc/UpdateTradePacket.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Packet.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UriListener.hpp b/LiteLoader/include/llapi/mc/UriListener.hpp similarity index 94% rename from LiteLoader/Header/MC/UriListener.hpp rename to LiteLoader/include/llapi/mc/UriListener.hpp index 89c6369..1657354 100644 --- a/LiteLoader/Header/MC/UriListener.hpp +++ b/LiteLoader/include/llapi/mc/UriListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/UseActorDefinition.hpp b/LiteLoader/include/llapi/mc/UseActorDefinition.hpp similarity index 95% rename from LiteLoader/Header/MC/UseActorDefinition.hpp rename to LiteLoader/include/llapi/mc/UseActorDefinition.hpp index 669a276..e34b6ab 100644 --- a/LiteLoader/Header/MC/UseActorDefinition.hpp +++ b/LiteLoader/include/llapi/mc/UseActorDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/UseActorNode.hpp b/LiteLoader/include/llapi/mc/UseActorNode.hpp similarity index 95% rename from LiteLoader/Header/MC/UseActorNode.hpp rename to LiteLoader/include/llapi/mc/UseActorNode.hpp index f7e869d..e610876 100644 --- a/LiteLoader/Header/MC/UseActorNode.hpp +++ b/LiteLoader/include/llapi/mc/UseActorNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Util.hpp b/LiteLoader/include/llapi/mc/Util.hpp similarity index 99% rename from LiteLoader/Header/MC/Util.hpp rename to LiteLoader/include/llapi/mc/Util.hpp index b67af0a..3847126 100644 --- a/LiteLoader/Header/MC/Util.hpp +++ b/LiteLoader/include/llapi/mc/Util.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaActorRendererId.hpp b/LiteLoader/include/llapi/mc/VanillaActorRendererId.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaActorRendererId.hpp rename to LiteLoader/include/llapi/mc/VanillaActorRendererId.hpp index 98772f8..6402425 100644 --- a/LiteLoader/Header/MC/VanillaActorRendererId.hpp +++ b/LiteLoader/include/llapi/mc/VanillaActorRendererId.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaActors.hpp b/LiteLoader/include/llapi/mc/VanillaActors.hpp similarity index 89% rename from LiteLoader/Header/MC/VanillaActors.hpp rename to LiteLoader/include/llapi/mc/VanillaActors.hpp index 07d1777..26a084a5 100644 --- a/LiteLoader/Header/MC/VanillaActors.hpp +++ b/LiteLoader/include/llapi/mc/VanillaActors.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaAppConfigs.hpp b/LiteLoader/include/llapi/mc/VanillaAppConfigs.hpp similarity index 98% rename from LiteLoader/Header/MC/VanillaAppConfigs.hpp rename to LiteLoader/include/llapi/mc/VanillaAppConfigs.hpp index bc06429..a6313af 100644 --- a/LiteLoader/Header/MC/VanillaAppConfigs.hpp +++ b/LiteLoader/include/llapi/mc/VanillaAppConfigs.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "AppConfigs.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBastionJigsawStructureBlockRules.hpp b/LiteLoader/include/llapi/mc/VanillaBastionJigsawStructureBlockRules.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaBastionJigsawStructureBlockRules.hpp rename to LiteLoader/include/llapi/mc/VanillaBastionJigsawStructureBlockRules.hpp index ffd8b7c..99311e4 100644 --- a/LiteLoader/Header/MC/VanillaBastionJigsawStructureBlockRules.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBastionJigsawStructureBlockRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBastionJigsawStructureElements.hpp b/LiteLoader/include/llapi/mc/VanillaBastionJigsawStructureElements.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaBastionJigsawStructureElements.hpp rename to LiteLoader/include/llapi/mc/VanillaBastionJigsawStructureElements.hpp index ea9f844..6a49cd5 100644 --- a/LiteLoader/Header/MC/VanillaBastionJigsawStructureElements.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBastionJigsawStructureElements.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBastionJigsawStructures.hpp b/LiteLoader/include/llapi/mc/VanillaBastionJigsawStructures.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaBastionJigsawStructures.hpp rename to LiteLoader/include/llapi/mc/VanillaBastionJigsawStructures.hpp index ddfaf4c..1c40be3 100644 --- a/LiteLoader/Header/MC/VanillaBastionJigsawStructures.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBastionJigsawStructures.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBiomes.hpp b/LiteLoader/include/llapi/mc/VanillaBiomes.hpp similarity index 99% rename from LiteLoader/Header/MC/VanillaBiomes.hpp rename to LiteLoader/include/llapi/mc/VanillaBiomes.hpp index eb3379f..211d442 100644 --- a/LiteLoader/Header/MC/VanillaBiomes.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBiomes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBlockConversion.hpp b/LiteLoader/include/llapi/mc/VanillaBlockConversion.hpp similarity index 94% rename from LiteLoader/Header/MC/VanillaBlockConversion.hpp rename to LiteLoader/include/llapi/mc/VanillaBlockConversion.hpp index 0126350..c12a89e 100644 --- a/LiteLoader/Header/MC/VanillaBlockConversion.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBlockConversion.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBlockStateTransformUtils.hpp b/LiteLoader/include/llapi/mc/VanillaBlockStateTransformUtils.hpp similarity index 97% rename from LiteLoader/Header/MC/VanillaBlockStateTransformUtils.hpp rename to LiteLoader/include/llapi/mc/VanillaBlockStateTransformUtils.hpp index 799d8cc..c347933 100644 --- a/LiteLoader/Header/MC/VanillaBlockStateTransformUtils.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBlockStateTransformUtils.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBlockTypes.hpp b/LiteLoader/include/llapi/mc/VanillaBlockTypes.hpp similarity index 99% rename from LiteLoader/Header/MC/VanillaBlockTypes.hpp rename to LiteLoader/include/llapi/mc/VanillaBlockTypes.hpp index 95e955e..f982d29 100644 --- a/LiteLoader/Header/MC/VanillaBlockTypes.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBlockTypes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBlockUpdater.hpp b/LiteLoader/include/llapi/mc/VanillaBlockUpdater.hpp similarity index 97% rename from LiteLoader/Header/MC/VanillaBlockUpdater.hpp rename to LiteLoader/include/llapi/mc/VanillaBlockUpdater.hpp index 4f477a4..e4325ef 100644 --- a/LiteLoader/Header/MC/VanillaBlockUpdater.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBlockUpdater.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBlocks.hpp b/LiteLoader/include/llapi/mc/VanillaBlocks.hpp similarity index 99% rename from LiteLoader/Header/MC/VanillaBlocks.hpp rename to LiteLoader/include/llapi/mc/VanillaBlocks.hpp index 78e2135..2e8c308 100644 --- a/LiteLoader/Header/MC/VanillaBlocks.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBlocks.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaBuiltInEntities.hpp b/LiteLoader/include/llapi/mc/VanillaBuiltInEntities.hpp similarity index 90% rename from LiteLoader/Header/MC/VanillaBuiltInEntities.hpp rename to LiteLoader/include/llapi/mc/VanillaBuiltInEntities.hpp index f4726b9..ae13cae 100644 --- a/LiteLoader/Header/MC/VanillaBuiltInEntities.hpp +++ b/LiteLoader/include/llapi/mc/VanillaBuiltInEntities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaDimensionFactory.hpp b/LiteLoader/include/llapi/mc/VanillaDimensionFactory.hpp similarity index 92% rename from LiteLoader/Header/MC/VanillaDimensionFactory.hpp rename to LiteLoader/include/llapi/mc/VanillaDimensionFactory.hpp index 917b382..8b2948b 100644 --- a/LiteLoader/Header/MC/VanillaDimensionFactory.hpp +++ b/LiteLoader/include/llapi/mc/VanillaDimensionFactory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaDimensions.hpp b/LiteLoader/include/llapi/mc/VanillaDimensions.hpp similarity index 98% rename from LiteLoader/Header/MC/VanillaDimensions.hpp rename to LiteLoader/include/llapi/mc/VanillaDimensions.hpp index 94b3c5b..a8547e8 100644 --- a/LiteLoader/Header/MC/VanillaDimensions.hpp +++ b/LiteLoader/include/llapi/mc/VanillaDimensions.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaFeatures.hpp b/LiteLoader/include/llapi/mc/VanillaFeatures.hpp similarity index 95% rename from LiteLoader/Header/MC/VanillaFeatures.hpp rename to LiteLoader/include/llapi/mc/VanillaFeatures.hpp index b88e305..8d3fc0f 100644 --- a/LiteLoader/Header/MC/VanillaFeatures.hpp +++ b/LiteLoader/include/llapi/mc/VanillaFeatures.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaGameModuleDedicatedServer.hpp b/LiteLoader/include/llapi/mc/VanillaGameModuleDedicatedServer.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaGameModuleDedicatedServer.hpp rename to LiteLoader/include/llapi/mc/VanillaGameModuleDedicatedServer.hpp index 2975ed2..65e7d17 100644 --- a/LiteLoader/Header/MC/VanillaGameModuleDedicatedServer.hpp +++ b/LiteLoader/include/llapi/mc/VanillaGameModuleDedicatedServer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaGameModuleServer.hpp b/LiteLoader/include/llapi/mc/VanillaGameModuleServer.hpp similarity index 98% rename from LiteLoader/Header/MC/VanillaGameModuleServer.hpp rename to LiteLoader/include/llapi/mc/VanillaGameModuleServer.hpp index 2c890f4..8dd7526 100644 --- a/LiteLoader/Header/MC/VanillaGameModuleServer.hpp +++ b/LiteLoader/include/llapi/mc/VanillaGameModuleServer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaGameVersions.hpp b/LiteLoader/include/llapi/mc/VanillaGameVersions.hpp similarity index 92% rename from LiteLoader/Header/MC/VanillaGameVersions.hpp rename to LiteLoader/include/llapi/mc/VanillaGameVersions.hpp index 5e2de74..58319b2 100644 --- a/LiteLoader/Header/MC/VanillaGameVersions.hpp +++ b/LiteLoader/include/llapi/mc/VanillaGameVersions.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaGoalDefinition.hpp b/LiteLoader/include/llapi/mc/VanillaGoalDefinition.hpp similarity index 89% rename from LiteLoader/Header/MC/VanillaGoalDefinition.hpp rename to LiteLoader/include/llapi/mc/VanillaGoalDefinition.hpp index f26da88..128f8f3 100644 --- a/LiteLoader/Header/MC/VanillaGoalDefinition.hpp +++ b/LiteLoader/include/llapi/mc/VanillaGoalDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaGoalUtility.hpp b/LiteLoader/include/llapi/mc/VanillaGoalUtility.hpp similarity index 90% rename from LiteLoader/Header/MC/VanillaGoalUtility.hpp rename to LiteLoader/include/llapi/mc/VanillaGoalUtility.hpp index d1378e4..27f955f 100644 --- a/LiteLoader/Header/MC/VanillaGoalUtility.hpp +++ b/LiteLoader/include/llapi/mc/VanillaGoalUtility.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaInPackagePacks.hpp b/LiteLoader/include/llapi/mc/VanillaInPackagePacks.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaInPackagePacks.hpp rename to LiteLoader/include/llapi/mc/VanillaInPackagePacks.hpp index 8a9e2e3..957925b 100644 --- a/LiteLoader/Header/MC/VanillaInPackagePacks.hpp +++ b/LiteLoader/include/llapi/mc/VanillaInPackagePacks.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaItemTiers.hpp b/LiteLoader/include/llapi/mc/VanillaItemTiers.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaItemTiers.hpp rename to LiteLoader/include/llapi/mc/VanillaItemTiers.hpp index 61d075b..10d1449 100644 --- a/LiteLoader/Header/MC/VanillaItemTiers.hpp +++ b/LiteLoader/include/llapi/mc/VanillaItemTiers.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaItems.hpp b/LiteLoader/include/llapi/mc/VanillaItems.hpp similarity index 99% rename from LiteLoader/Header/MC/VanillaItems.hpp rename to LiteLoader/include/llapi/mc/VanillaItems.hpp index e893f6a..1b9e026 100644 --- a/LiteLoader/Header/MC/VanillaItems.hpp +++ b/LiteLoader/include/llapi/mc/VanillaItems.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaLevelChunkUpgrade.hpp b/LiteLoader/include/llapi/mc/VanillaLevelChunkUpgrade.hpp similarity index 97% rename from LiteLoader/Header/MC/VanillaLevelChunkUpgrade.hpp rename to LiteLoader/include/llapi/mc/VanillaLevelChunkUpgrade.hpp index 57fc35a..df43745 100644 --- a/LiteLoader/Header/MC/VanillaLevelChunkUpgrade.hpp +++ b/LiteLoader/include/llapi/mc/VanillaLevelChunkUpgrade.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaOverworldBiomeSource.hpp b/LiteLoader/include/llapi/mc/VanillaOverworldBiomeSource.hpp similarity index 97% rename from LiteLoader/Header/MC/VanillaOverworldBiomeSource.hpp rename to LiteLoader/include/llapi/mc/VanillaOverworldBiomeSource.hpp index 23cbe36..46a9f48 100644 --- a/LiteLoader/Header/MC/VanillaOverworldBiomeSource.hpp +++ b/LiteLoader/include/llapi/mc/VanillaOverworldBiomeSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "LayerBiomeSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaServerGameplayEventListener.hpp b/LiteLoader/include/llapi/mc/VanillaServerGameplayEventListener.hpp similarity index 98% rename from LiteLoader/Header/MC/VanillaServerGameplayEventListener.hpp rename to LiteLoader/include/llapi/mc/VanillaServerGameplayEventListener.hpp index e9f668b..6ba049f 100644 --- a/LiteLoader/Header/MC/VanillaServerGameplayEventListener.hpp +++ b/LiteLoader/include/llapi/mc/VanillaServerGameplayEventListener.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaServerNetworkHandler.hpp b/LiteLoader/include/llapi/mc/VanillaServerNetworkHandler.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaServerNetworkHandler.hpp rename to LiteLoader/include/llapi/mc/VanillaServerNetworkHandler.hpp index eb9b6eb..b94d2c2 100644 --- a/LiteLoader/Header/MC/VanillaServerNetworkHandler.hpp +++ b/LiteLoader/include/llapi/mc/VanillaServerNetworkHandler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaStates.hpp b/LiteLoader/include/llapi/mc/VanillaStates.hpp similarity index 99% rename from LiteLoader/Header/MC/VanillaStates.hpp rename to LiteLoader/include/llapi/mc/VanillaStates.hpp index 5b29487..e7e9e34 100644 --- a/LiteLoader/Header/MC/VanillaStates.hpp +++ b/LiteLoader/include/llapi/mc/VanillaStates.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaSystemsRegistration.hpp b/LiteLoader/include/llapi/mc/VanillaSystemsRegistration.hpp similarity index 93% rename from LiteLoader/Header/MC/VanillaSystemsRegistration.hpp rename to LiteLoader/include/llapi/mc/VanillaSystemsRegistration.hpp index 6f0f2a7..569ab24 100644 --- a/LiteLoader/Header/MC/VanillaSystemsRegistration.hpp +++ b/LiteLoader/include/llapi/mc/VanillaSystemsRegistration.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaTreeFeature.hpp b/LiteLoader/include/llapi/mc/VanillaTreeFeature.hpp similarity index 98% rename from LiteLoader/Header/MC/VanillaTreeFeature.hpp rename to LiteLoader/include/llapi/mc/VanillaTreeFeature.hpp index df26186..f2cfe98 100644 --- a/LiteLoader/Header/MC/VanillaTreeFeature.hpp +++ b/LiteLoader/include/llapi/mc/VanillaTreeFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "JsonUtil.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaVillageJigsawStructureActorRules.hpp b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureActorRules.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaVillageJigsawStructureActorRules.hpp rename to LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureActorRules.hpp index bbb69f9..a46ccab 100644 --- a/LiteLoader/Header/MC/VanillaVillageJigsawStructureActorRules.hpp +++ b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureActorRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaVillageJigsawStructureBlockRules.hpp b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureBlockRules.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaVillageJigsawStructureBlockRules.hpp rename to LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureBlockRules.hpp index f73b698..0bc5a8c 100644 --- a/LiteLoader/Header/MC/VanillaVillageJigsawStructureBlockRules.hpp +++ b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureBlockRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaVillageJigsawStructureBlockTagRules.hpp b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureBlockTagRules.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaVillageJigsawStructureBlockTagRules.hpp rename to LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureBlockTagRules.hpp index 3089af4..ae2ceaa 100644 --- a/LiteLoader/Header/MC/VanillaVillageJigsawStructureBlockTagRules.hpp +++ b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureBlockTagRules.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaVillageJigsawStructureElements.hpp b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureElements.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaVillageJigsawStructureElements.hpp rename to LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureElements.hpp index 9def636..da92761 100644 --- a/LiteLoader/Header/MC/VanillaVillageJigsawStructureElements.hpp +++ b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructureElements.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaVillageJigsawStructures.hpp b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructures.hpp similarity index 96% rename from LiteLoader/Header/MC/VanillaVillageJigsawStructures.hpp rename to LiteLoader/include/llapi/mc/VanillaVillageJigsawStructures.hpp index 65b2644..4c84546 100644 --- a/LiteLoader/Header/MC/VanillaVillageJigsawStructures.hpp +++ b/LiteLoader/include/llapi/mc/VanillaVillageJigsawStructures.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VanillaWorldSystems.hpp b/LiteLoader/include/llapi/mc/VanillaWorldSystems.hpp similarity index 92% rename from LiteLoader/Header/MC/VanillaWorldSystems.hpp rename to LiteLoader/include/llapi/mc/VanillaWorldSystems.hpp index 5677b50..21a830a 100644 --- a/LiteLoader/Header/MC/VanillaWorldSystems.hpp +++ b/LiteLoader/include/llapi/mc/VanillaWorldSystems.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VarIntDataInput.hpp b/LiteLoader/include/llapi/mc/VarIntDataInput.hpp similarity index 95% rename from LiteLoader/Header/MC/VarIntDataInput.hpp rename to LiteLoader/include/llapi/mc/VarIntDataInput.hpp index b37bdcd..e9b47c0 100644 --- a/LiteLoader/Header/MC/VarIntDataInput.hpp +++ b/LiteLoader/include/llapi/mc/VarIntDataInput.hpp @@ -1,10 +1,10 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA -#include "MC/ReadOnlyBinaryStream.hpp" +#include "ReadOnlyBinaryStream.hpp" #undef BEFORE_EXTRA class VarIntDataInput { diff --git a/LiteLoader/Header/MC/VarIntDataOutput.hpp b/LiteLoader/include/llapi/mc/VarIntDataOutput.hpp similarity index 97% rename from LiteLoader/Header/MC/VarIntDataOutput.hpp rename to LiteLoader/include/llapi/mc/VarIntDataOutput.hpp index 45a7ac0..97bf2ac 100644 --- a/LiteLoader/Header/MC/VarIntDataOutput.hpp +++ b/LiteLoader/include/llapi/mc/VarIntDataOutput.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VariantDescription.hpp b/LiteLoader/include/llapi/mc/VariantDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/VariantDescription.hpp rename to LiteLoader/include/llapi/mc/VariantDescription.hpp index 4737301..bec8966 100644 --- a/LiteLoader/Header/MC/VariantDescription.hpp +++ b/LiteLoader/include/llapi/mc/VariantDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Vec2.hpp b/LiteLoader/include/llapi/mc/Vec2.hpp similarity index 97% rename from LiteLoader/Header/MC/Vec2.hpp rename to LiteLoader/include/llapi/mc/Vec2.hpp index 7c76fef..05a0991 100644 --- a/LiteLoader/Header/MC/Vec2.hpp +++ b/LiteLoader/include/llapi/mc/Vec2.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Vec3.hpp b/LiteLoader/include/llapi/mc/Vec3.hpp similarity index 99% rename from LiteLoader/Header/MC/Vec3.hpp rename to LiteLoader/include/llapi/mc/Vec3.hpp index d5f2537..082f227 100644 --- a/LiteLoader/Header/MC/Vec3.hpp +++ b/LiteLoader/include/llapi/mc/Vec3.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockPos.hpp" class Vec3 { diff --git a/LiteLoader/Header/MC/Vex.hpp b/LiteLoader/include/llapi/mc/Vex.hpp similarity index 98% rename from LiteLoader/Header/MC/Vex.hpp rename to LiteLoader/include/llapi/mc/Vex.hpp index c9efc51..ea56c39 100644 --- a/LiteLoader/Header/MC/Vex.hpp +++ b/LiteLoader/include/llapi/mc/Vex.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/VexCopyOwnerTargetGoal.hpp b/LiteLoader/include/llapi/mc/VexCopyOwnerTargetGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/VexCopyOwnerTargetGoal.hpp rename to LiteLoader/include/llapi/mc/VexCopyOwnerTargetGoal.hpp index 4ce101b..8c1a601 100644 --- a/LiteLoader/Header/MC/VexCopyOwnerTargetGoal.hpp +++ b/LiteLoader/include/llapi/mc/VexCopyOwnerTargetGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VexRandomMoveGoal.hpp b/LiteLoader/include/llapi/mc/VexRandomMoveGoal.hpp similarity index 96% rename from LiteLoader/Header/MC/VexRandomMoveGoal.hpp rename to LiteLoader/include/llapi/mc/VexRandomMoveGoal.hpp index 45413fe..c2a34b1 100644 --- a/LiteLoader/Header/MC/VexRandomMoveGoal.hpp +++ b/LiteLoader/include/llapi/mc/VexRandomMoveGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Village.hpp b/LiteLoader/include/llapi/mc/Village.hpp similarity index 99% rename from LiteLoader/Header/MC/Village.hpp rename to LiteLoader/include/llapi/mc/Village.hpp index 0472bec..24d2b03 100644 --- a/LiteLoader/Header/MC/Village.hpp +++ b/LiteLoader/include/llapi/mc/Village.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VillageFeature.hpp b/LiteLoader/include/llapi/mc/VillageFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/VillageFeature.hpp rename to LiteLoader/include/llapi/mc/VillageFeature.hpp index 9b58c84..a10584c 100644 --- a/LiteLoader/Header/MC/VillageFeature.hpp +++ b/LiteLoader/include/llapi/mc/VillageFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VillageManager.hpp b/LiteLoader/include/llapi/mc/VillageManager.hpp similarity index 98% rename from LiteLoader/Header/MC/VillageManager.hpp rename to LiteLoader/include/llapi/mc/VillageManager.hpp index dc760e4..0336b65 100644 --- a/LiteLoader/Header/MC/VillageManager.hpp +++ b/LiteLoader/include/llapi/mc/VillageManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VillagePiece.hpp b/LiteLoader/include/llapi/mc/VillagePiece.hpp similarity index 98% rename from LiteLoader/Header/MC/VillagePiece.hpp rename to LiteLoader/include/llapi/mc/VillagePiece.hpp index 884fe52..7f2e9a9 100644 --- a/LiteLoader/Header/MC/VillagePiece.hpp +++ b/LiteLoader/include/llapi/mc/VillagePiece.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PoolElementStructurePiece.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VillageStart.hpp b/LiteLoader/include/llapi/mc/VillageStart.hpp similarity index 96% rename from LiteLoader/Header/MC/VillageStart.hpp rename to LiteLoader/include/llapi/mc/VillageStart.hpp index 58c1d73..e5c1164 100644 --- a/LiteLoader/Header/MC/VillageStart.hpp +++ b/LiteLoader/include/llapi/mc/VillageStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Villager.hpp b/LiteLoader/include/llapi/mc/Villager.hpp similarity index 98% rename from LiteLoader/Header/MC/Villager.hpp rename to LiteLoader/include/llapi/mc/Villager.hpp index f6e572e..c0b79cd 100644 --- a/LiteLoader/Header/MC/Villager.hpp +++ b/LiteLoader/include/llapi/mc/Villager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "VillagerBase.hpp" diff --git a/LiteLoader/Header/MC/VillagerBase.hpp b/LiteLoader/include/llapi/mc/VillagerBase.hpp similarity index 98% rename from LiteLoader/Header/MC/VillagerBase.hpp rename to LiteLoader/include/llapi/mc/VillagerBase.hpp index 5c41c0f..7196452 100644 --- a/LiteLoader/Header/MC/VillagerBase.hpp +++ b/LiteLoader/include/llapi/mc/VillagerBase.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/VillagerV2.hpp b/LiteLoader/include/llapi/mc/VillagerV2.hpp similarity index 98% rename from LiteLoader/Header/MC/VillagerV2.hpp rename to LiteLoader/include/llapi/mc/VillagerV2.hpp index 839c292..8c9aae2 100644 --- a/LiteLoader/Header/MC/VillagerV2.hpp +++ b/LiteLoader/include/llapi/mc/VillagerV2.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "VillagerBase.hpp" diff --git a/LiteLoader/Header/MC/VindicationIllager.hpp b/LiteLoader/include/llapi/mc/VindicationIllager.hpp similarity index 98% rename from LiteLoader/Header/MC/VindicationIllager.hpp rename to LiteLoader/include/llapi/mc/VindicationIllager.hpp index f41bcce..97c0191 100644 --- a/LiteLoader/Header/MC/VindicationIllager.hpp +++ b/LiteLoader/include/llapi/mc/VindicationIllager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "HumanoidMonster.hpp" diff --git a/LiteLoader/Header/MC/VineBlock.hpp b/LiteLoader/include/llapi/mc/VineBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/VineBlock.hpp rename to LiteLoader/include/llapi/mc/VineBlock.hpp index cb252d8..82c80fb 100644 --- a/LiteLoader/Header/MC/VineBlock.hpp +++ b/LiteLoader/include/llapi/mc/VineBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VinesFeature.hpp b/LiteLoader/include/llapi/mc/VinesFeature.hpp similarity index 95% rename from LiteLoader/Header/MC/VinesFeature.hpp rename to LiteLoader/include/llapi/mc/VinesFeature.hpp index d12ccb5..f94c623 100644 --- a/LiteLoader/Header/MC/VinesFeature.hpp +++ b/LiteLoader/include/llapi/mc/VinesFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/VirtualCommandOrigin.hpp b/LiteLoader/include/llapi/mc/VirtualCommandOrigin.hpp similarity index 98% rename from LiteLoader/Header/MC/VirtualCommandOrigin.hpp rename to LiteLoader/include/llapi/mc/VirtualCommandOrigin.hpp index 6f8056d..29a8190 100644 --- a/LiteLoader/Header/MC/VirtualCommandOrigin.hpp +++ b/LiteLoader/include/llapi/mc/VirtualCommandOrigin.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "CommandOrigin.hpp" diff --git a/LiteLoader/Header/MC/WASDControlledDescription.hpp b/LiteLoader/include/llapi/mc/WASDControlledDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/WASDControlledDescription.hpp rename to LiteLoader/include/llapi/mc/WASDControlledDescription.hpp index f93ec82..793e638 100644 --- a/LiteLoader/Header/MC/WASDControlledDescription.hpp +++ b/LiteLoader/include/llapi/mc/WASDControlledDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WSAStartupSingleton.hpp b/LiteLoader/include/llapi/mc/WSAStartupSingleton.hpp similarity index 95% rename from LiteLoader/Header/MC/WSAStartupSingleton.hpp rename to LiteLoader/include/llapi/mc/WSAStartupSingleton.hpp index e4019b0..6ad7b93 100644 --- a/LiteLoader/Header/MC/WSAStartupSingleton.hpp +++ b/LiteLoader/include/llapi/mc/WSAStartupSingleton.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WSServerCommand.hpp b/LiteLoader/include/llapi/mc/WSServerCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/WSServerCommand.hpp rename to LiteLoader/include/llapi/mc/WSServerCommand.hpp index 829ce2f..0cfcdb1 100644 --- a/LiteLoader/Header/MC/WSServerCommand.hpp +++ b/LiteLoader/include/llapi/mc/WSServerCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WaitDefinition.hpp b/LiteLoader/include/llapi/mc/WaitDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/WaitDefinition.hpp rename to LiteLoader/include/llapi/mc/WaitDefinition.hpp index 7275d74..f345ec3 100644 --- a/LiteLoader/Header/MC/WaitDefinition.hpp +++ b/LiteLoader/include/llapi/mc/WaitDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/WaitNode.hpp b/LiteLoader/include/llapi/mc/WaitNode.hpp similarity index 95% rename from LiteLoader/Header/MC/WaitNode.hpp rename to LiteLoader/include/llapi/mc/WaitNode.hpp index 8281f4b..4eabcae 100644 --- a/LiteLoader/Header/MC/WaitNode.hpp +++ b/LiteLoader/include/llapi/mc/WaitNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WaitTicksDefinition.hpp b/LiteLoader/include/llapi/mc/WaitTicksDefinition.hpp similarity index 96% rename from LiteLoader/Header/MC/WaitTicksDefinition.hpp rename to LiteLoader/include/llapi/mc/WaitTicksDefinition.hpp index 8ec0b76..ad5f3c2 100644 --- a/LiteLoader/Header/MC/WaitTicksDefinition.hpp +++ b/LiteLoader/include/llapi/mc/WaitTicksDefinition.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #include "BehaviorDefinition.hpp" diff --git a/LiteLoader/Header/MC/WaitTicksNode.hpp b/LiteLoader/include/llapi/mc/WaitTicksNode.hpp similarity index 95% rename from LiteLoader/Header/MC/WaitTicksNode.hpp rename to LiteLoader/include/llapi/mc/WaitTicksNode.hpp index 7fe7a45..796163a 100644 --- a/LiteLoader/Header/MC/WaitTicksNode.hpp +++ b/LiteLoader/include/llapi/mc/WaitTicksNode.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WalkAnimationSpeedDescription.hpp b/LiteLoader/include/llapi/mc/WalkAnimationSpeedDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/WalkAnimationSpeedDescription.hpp rename to LiteLoader/include/llapi/mc/WalkAnimationSpeedDescription.hpp index 39d8024..1fa2125 100644 --- a/LiteLoader/Header/MC/WalkAnimationSpeedDescription.hpp +++ b/LiteLoader/include/llapi/mc/WalkAnimationSpeedDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WalkState.hpp b/LiteLoader/include/llapi/mc/WalkState.hpp similarity index 95% rename from LiteLoader/Header/MC/WalkState.hpp rename to LiteLoader/include/llapi/mc/WalkState.hpp index c7762df..90ed0a5 100644 --- a/LiteLoader/Header/MC/WalkState.hpp +++ b/LiteLoader/include/llapi/mc/WalkState.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PetSleepWithOwnerState.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WallBlock.hpp b/LiteLoader/include/llapi/mc/WallBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/WallBlock.hpp rename to LiteLoader/include/llapi/mc/WallBlock.hpp index d8d52ab..dfb4571 100644 --- a/LiteLoader/Header/MC/WallBlock.hpp +++ b/LiteLoader/include/llapi/mc/WallBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WallClimberPathNavigation.hpp b/LiteLoader/include/llapi/mc/WallClimberPathNavigation.hpp similarity index 97% rename from LiteLoader/Header/MC/WallClimberPathNavigation.hpp rename to LiteLoader/include/llapi/mc/WallClimberPathNavigation.hpp index 96d3ed5..e7b58f6 100644 --- a/LiteLoader/Header/MC/WallClimberPathNavigation.hpp +++ b/LiteLoader/include/llapi/mc/WallClimberPathNavigation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PathNavigation.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WanderingTrader.hpp b/LiteLoader/include/llapi/mc/WanderingTrader.hpp similarity index 98% rename from LiteLoader/Header/MC/WanderingTrader.hpp rename to LiteLoader/include/llapi/mc/WanderingTrader.hpp index 75b0667..63e6f83 100644 --- a/LiteLoader/Header/MC/WanderingTrader.hpp +++ b/LiteLoader/include/llapi/mc/WanderingTrader.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/WanderingTraderScheduler.hpp b/LiteLoader/include/llapi/mc/WanderingTraderScheduler.hpp similarity index 97% rename from LiteLoader/Header/MC/WanderingTraderScheduler.hpp rename to LiteLoader/include/llapi/mc/WanderingTraderScheduler.hpp index ace9739..641ef21 100644 --- a/LiteLoader/Header/MC/WanderingTraderScheduler.hpp +++ b/LiteLoader/include/llapi/mc/WanderingTraderScheduler.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WantsJockeyDescription.hpp b/LiteLoader/include/llapi/mc/WantsJockeyDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/WantsJockeyDescription.hpp rename to LiteLoader/include/llapi/mc/WantsJockeyDescription.hpp index 75839c1..4c20147 100644 --- a/LiteLoader/Header/MC/WantsJockeyDescription.hpp +++ b/LiteLoader/include/llapi/mc/WantsJockeyDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WarpedFungusOnAStickItem.hpp b/LiteLoader/include/llapi/mc/WarpedFungusOnAStickItem.hpp similarity index 98% rename from LiteLoader/Header/MC/WarpedFungusOnAStickItem.hpp rename to LiteLoader/include/llapi/mc/WarpedFungusOnAStickItem.hpp index 4bbee20..a71ab1d 100644 --- a/LiteLoader/Header/MC/WarpedFungusOnAStickItem.hpp +++ b/LiteLoader/include/llapi/mc/WarpedFungusOnAStickItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WaterAnimal.hpp b/LiteLoader/include/llapi/mc/WaterAnimal.hpp similarity index 98% rename from LiteLoader/Header/MC/WaterAnimal.hpp rename to LiteLoader/include/llapi/mc/WaterAnimal.hpp index 4f1cbef..914689b 100644 --- a/LiteLoader/Header/MC/WaterAnimal.hpp +++ b/LiteLoader/include/llapi/mc/WaterAnimal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Mob.hpp" diff --git a/LiteLoader/Header/MC/WaterBoundPathNavigation.hpp b/LiteLoader/include/llapi/mc/WaterBoundPathNavigation.hpp similarity index 97% rename from LiteLoader/Header/MC/WaterBoundPathNavigation.hpp rename to LiteLoader/include/llapi/mc/WaterBoundPathNavigation.hpp index 7e5f830..38664d6 100644 --- a/LiteLoader/Header/MC/WaterBoundPathNavigation.hpp +++ b/LiteLoader/include/llapi/mc/WaterBoundPathNavigation.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "PathNavigation.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WaterLilyBlockItem.hpp b/LiteLoader/include/llapi/mc/WaterLilyBlockItem.hpp similarity index 98% rename from LiteLoader/Header/MC/WaterLilyBlockItem.hpp rename to LiteLoader/include/llapi/mc/WaterLilyBlockItem.hpp index e6bdbc9..0617519 100644 --- a/LiteLoader/Header/MC/WaterLilyBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/WaterLilyBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WaterMovementDescription.hpp b/LiteLoader/include/llapi/mc/WaterMovementDescription.hpp similarity index 96% rename from LiteLoader/Header/MC/WaterMovementDescription.hpp rename to LiteLoader/include/llapi/mc/WaterMovementDescription.hpp index e7d681e..681e756 100644 --- a/LiteLoader/Header/MC/WaterMovementDescription.hpp +++ b/LiteLoader/include/llapi/mc/WaterMovementDescription.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WaterlilyBlock.hpp b/LiteLoader/include/llapi/mc/WaterlilyBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WaterlilyBlock.hpp rename to LiteLoader/include/llapi/mc/WaterlilyBlock.hpp index 8506fd9..e3cc1bc 100644 --- a/LiteLoader/Header/MC/WaterlilyBlock.hpp +++ b/LiteLoader/include/llapi/mc/WaterlilyBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BushBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WaterlilyFeature.hpp b/LiteLoader/include/llapi/mc/WaterlilyFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/WaterlilyFeature.hpp rename to LiteLoader/include/llapi/mc/WaterlilyFeature.hpp index 421720f..1c42070 100644 --- a/LiteLoader/Header/MC/WaterlilyFeature.hpp +++ b/LiteLoader/include/llapi/mc/WaterlilyFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeaponItem.hpp b/LiteLoader/include/llapi/mc/WeaponItem.hpp similarity index 98% rename from LiteLoader/Header/MC/WeaponItem.hpp rename to LiteLoader/include/llapi/mc/WeaponItem.hpp index 1b0d8dd..5c0ba28 100644 --- a/LiteLoader/Header/MC/WeaponItem.hpp +++ b/LiteLoader/include/llapi/mc/WeaponItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeaponRecipes.hpp b/LiteLoader/include/llapi/mc/WeaponRecipes.hpp similarity index 95% rename from LiteLoader/Header/MC/WeaponRecipes.hpp rename to LiteLoader/include/llapi/mc/WeaponRecipes.hpp index f6a8160..f77d1b2 100644 --- a/LiteLoader/Header/MC/WeaponRecipes.hpp +++ b/LiteLoader/include/llapi/mc/WeaponRecipes.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Weather.hpp b/LiteLoader/include/llapi/mc/Weather.hpp similarity index 98% rename from LiteLoader/Header/MC/Weather.hpp rename to LiteLoader/include/llapi/mc/Weather.hpp index 3f66e65..3f5d33c 100644 --- a/LiteLoader/Header/MC/Weather.hpp +++ b/LiteLoader/include/llapi/mc/Weather.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockSourceListener.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeatherCommand.hpp b/LiteLoader/include/llapi/mc/WeatherCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/WeatherCommand.hpp rename to LiteLoader/include/llapi/mc/WeatherCommand.hpp index 8505a19..d96f767 100644 --- a/LiteLoader/Header/MC/WeatherCommand.hpp +++ b/LiteLoader/include/llapi/mc/WeatherCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeatherHelpers.hpp b/LiteLoader/include/llapi/mc/WeatherHelpers.hpp similarity index 91% rename from LiteLoader/Header/MC/WeatherHelpers.hpp rename to LiteLoader/include/llapi/mc/WeatherHelpers.hpp index 8ef0c98..7b8e68d 100644 --- a/LiteLoader/Header/MC/WeatherHelpers.hpp +++ b/LiteLoader/include/llapi/mc/WeatherHelpers.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WebBlock.hpp b/LiteLoader/include/llapi/mc/WebBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WebBlock.hpp rename to LiteLoader/include/llapi/mc/WebBlock.hpp index 3a61c82..4045a7f 100644 --- a/LiteLoader/Header/MC/WebBlock.hpp +++ b/LiteLoader/include/llapi/mc/WebBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WebToken.hpp b/LiteLoader/include/llapi/mc/WebToken.hpp similarity index 97% rename from LiteLoader/Header/MC/WebToken.hpp rename to LiteLoader/include/llapi/mc/WebToken.hpp index 27735e6..c3c6743 100644 --- a/LiteLoader/Header/MC/WebToken.hpp +++ b/LiteLoader/include/llapi/mc/WebToken.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WebviewObserver.hpp b/LiteLoader/include/llapi/mc/WebviewObserver.hpp similarity index 97% rename from LiteLoader/Header/MC/WebviewObserver.hpp rename to LiteLoader/include/llapi/mc/WebviewObserver.hpp index b25df71..605e5ce 100644 --- a/LiteLoader/Header/MC/WebviewObserver.hpp +++ b/LiteLoader/include/llapi/mc/WebviewObserver.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeepingVinesBlock.hpp b/LiteLoader/include/llapi/mc/WeepingVinesBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/WeepingVinesBlock.hpp rename to LiteLoader/include/llapi/mc/WeepingVinesBlock.hpp index 4bbb229..9ac2c5e 100644 --- a/LiteLoader/Header/MC/WeepingVinesBlock.hpp +++ b/LiteLoader/include/llapi/mc/WeepingVinesBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeepingVinesClusterFeature.hpp b/LiteLoader/include/llapi/mc/WeepingVinesClusterFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/WeepingVinesClusterFeature.hpp rename to LiteLoader/include/llapi/mc/WeepingVinesClusterFeature.hpp index 654927e..131b83a 100644 --- a/LiteLoader/Header/MC/WeepingVinesClusterFeature.hpp +++ b/LiteLoader/include/llapi/mc/WeepingVinesClusterFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Feature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeightedPressurePlateBlock.hpp b/LiteLoader/include/llapi/mc/WeightedPressurePlateBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WeightedPressurePlateBlock.hpp rename to LiteLoader/include/llapi/mc/WeightedPressurePlateBlock.hpp index c2768f4..5559cbf 100644 --- a/LiteLoader/Header/MC/WeightedPressurePlateBlock.hpp +++ b/LiteLoader/include/llapi/mc/WeightedPressurePlateBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BasePressurePlateBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WeightedRandomFeature.hpp b/LiteLoader/include/llapi/mc/WeightedRandomFeature.hpp similarity index 96% rename from LiteLoader/Header/MC/WeightedRandomFeature.hpp rename to LiteLoader/include/llapi/mc/WeightedRandomFeature.hpp index d903306..e672eea 100644 --- a/LiteLoader/Header/MC/WeightedRandomFeature.hpp +++ b/LiteLoader/include/llapi/mc/WeightedRandomFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WellKnownBiomeTags.hpp b/LiteLoader/include/llapi/mc/WellKnownBiomeTags.hpp similarity index 95% rename from LiteLoader/Header/MC/WellKnownBiomeTags.hpp rename to LiteLoader/include/llapi/mc/WellKnownBiomeTags.hpp index ac1a5ee..b917662 100644 --- a/LiteLoader/Header/MC/WellKnownBiomeTags.hpp +++ b/LiteLoader/include/llapi/mc/WellKnownBiomeTags.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Whitelist.hpp b/LiteLoader/include/llapi/mc/Whitelist.hpp similarity index 96% rename from LiteLoader/Header/MC/Whitelist.hpp rename to LiteLoader/include/llapi/mc/Whitelist.hpp index fcbdfa6..0c37d64 100644 --- a/LiteLoader/Header/MC/Whitelist.hpp +++ b/LiteLoader/include/llapi/mc/Whitelist.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WhitelistCommand.hpp b/LiteLoader/include/llapi/mc/WhitelistCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/WhitelistCommand.hpp rename to LiteLoader/include/llapi/mc/WhitelistCommand.hpp index da3e887..644124b 100644 --- a/LiteLoader/Header/MC/WhitelistCommand.hpp +++ b/LiteLoader/include/llapi/mc/WhitelistCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WhitelistEntry.hpp b/LiteLoader/include/llapi/mc/WhitelistEntry.hpp similarity index 96% rename from LiteLoader/Header/MC/WhitelistEntry.hpp rename to LiteLoader/include/llapi/mc/WhitelistEntry.hpp index 6d703fe..9d4bb2b 100644 --- a/LiteLoader/Header/MC/WhitelistEntry.hpp +++ b/LiteLoader/include/llapi/mc/WhitelistEntry.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WhitelistFile.hpp b/LiteLoader/include/llapi/mc/WhitelistFile.hpp similarity index 95% rename from LiteLoader/Header/MC/WhitelistFile.hpp rename to LiteLoader/include/llapi/mc/WhitelistFile.hpp index 034f751..a89a0c9 100644 --- a/LiteLoader/Header/MC/WhitelistFile.hpp +++ b/LiteLoader/include/llapi/mc/WhitelistFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WinStackTrace.hpp b/LiteLoader/include/llapi/mc/WinStackTrace.hpp similarity index 95% rename from LiteLoader/Header/MC/WinStackTrace.hpp rename to LiteLoader/include/llapi/mc/WinStackTrace.hpp index c90f69c..28d3a7e 100644 --- a/LiteLoader/Header/MC/WinStackTrace.hpp +++ b/LiteLoader/include/llapi/mc/WinStackTrace.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WireframeQueue.hpp b/LiteLoader/include/llapi/mc/WireframeQueue.hpp similarity index 95% rename from LiteLoader/Header/MC/WireframeQueue.hpp rename to LiteLoader/include/llapi/mc/WireframeQueue.hpp index de0917b..2181ce4 100644 --- a/LiteLoader/Header/MC/WireframeQueue.hpp +++ b/LiteLoader/include/llapi/mc/WireframeQueue.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Witch.hpp b/LiteLoader/include/llapi/mc/Witch.hpp similarity index 98% rename from LiteLoader/Header/MC/Witch.hpp rename to LiteLoader/include/llapi/mc/Witch.hpp index 3490a6e..cfdce2e 100644 --- a/LiteLoader/Header/MC/Witch.hpp +++ b/LiteLoader/include/llapi/mc/Witch.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "HumanoidMonster.hpp" diff --git a/LiteLoader/Header/MC/WitherBoss.hpp b/LiteLoader/include/llapi/mc/WitherBoss.hpp similarity index 99% rename from LiteLoader/Header/MC/WitherBoss.hpp rename to LiteLoader/include/llapi/mc/WitherBoss.hpp index b3227b5..639e1dd 100644 --- a/LiteLoader/Header/MC/WitherBoss.hpp +++ b/LiteLoader/include/llapi/mc/WitherBoss.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Monster.hpp" diff --git a/LiteLoader/Header/MC/WitherBossSpawnUtilities.hpp b/LiteLoader/include/llapi/mc/WitherBossSpawnUtilities.hpp similarity index 93% rename from LiteLoader/Header/MC/WitherBossSpawnUtilities.hpp rename to LiteLoader/include/llapi/mc/WitherBossSpawnUtilities.hpp index 51269b4..5ea7633 100644 --- a/LiteLoader/Header/MC/WitherBossSpawnUtilities.hpp +++ b/LiteLoader/include/llapi/mc/WitherBossSpawnUtilities.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WitherRandomAttackPosGoal.hpp b/LiteLoader/include/llapi/mc/WitherRandomAttackPosGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/WitherRandomAttackPosGoal.hpp rename to LiteLoader/include/llapi/mc/WitherRandomAttackPosGoal.hpp index b10f506..95e4d2f 100644 --- a/LiteLoader/Header/MC/WitherRandomAttackPosGoal.hpp +++ b/LiteLoader/include/llapi/mc/WitherRandomAttackPosGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RandomStrollGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WitherRoseBlock.hpp b/LiteLoader/include/llapi/mc/WitherRoseBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WitherRoseBlock.hpp rename to LiteLoader/include/llapi/mc/WitherRoseBlock.hpp index 6d2c1a3..bbb14d1 100644 --- a/LiteLoader/Header/MC/WitherRoseBlock.hpp +++ b/LiteLoader/include/llapi/mc/WitherRoseBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "FlowerBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WitherSkull.hpp b/LiteLoader/include/llapi/mc/WitherSkull.hpp similarity index 98% rename from LiteLoader/Header/MC/WitherSkull.hpp rename to LiteLoader/include/llapi/mc/WitherSkull.hpp index 8e7be9c..925c665 100644 --- a/LiteLoader/Header/MC/WitherSkull.hpp +++ b/LiteLoader/include/llapi/mc/WitherSkull.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Fireball.hpp" diff --git a/LiteLoader/Header/MC/WitherTargetHighestDamage.hpp b/LiteLoader/include/llapi/mc/WitherTargetHighestDamage.hpp similarity index 97% rename from LiteLoader/Header/MC/WitherTargetHighestDamage.hpp rename to LiteLoader/include/llapi/mc/WitherTargetHighestDamage.hpp index b149f91..e76d909 100644 --- a/LiteLoader/Header/MC/WitherTargetHighestDamage.hpp +++ b/LiteLoader/include/llapi/mc/WitherTargetHighestDamage.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "TargetGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Wolf.hpp b/LiteLoader/include/llapi/mc/Wolf.hpp similarity index 98% rename from LiteLoader/Header/MC/Wolf.hpp rename to LiteLoader/include/llapi/mc/Wolf.hpp index f1a08fa..e551571 100644 --- a/LiteLoader/Header/MC/Wolf.hpp +++ b/LiteLoader/include/llapi/mc/Wolf.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Animal.hpp" diff --git a/LiteLoader/Header/MC/WoodBlock.hpp b/LiteLoader/include/llapi/mc/WoodBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WoodBlock.hpp rename to LiteLoader/include/llapi/mc/WoodBlock.hpp index 8fd285d..36157fb 100644 --- a/LiteLoader/Header/MC/WoodBlock.hpp +++ b/LiteLoader/include/llapi/mc/WoodBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "RotatedPillarBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WoodButtonBlock.hpp b/LiteLoader/include/llapi/mc/WoodButtonBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WoodButtonBlock.hpp rename to LiteLoader/include/llapi/mc/WoodButtonBlock.hpp index 11ea2ca..0363c0e 100644 --- a/LiteLoader/Header/MC/WoodButtonBlock.hpp +++ b/LiteLoader/include/llapi/mc/WoodButtonBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ButtonBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WoodSlabBlock.hpp b/LiteLoader/include/llapi/mc/WoodSlabBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WoodSlabBlock.hpp rename to LiteLoader/include/llapi/mc/WoodSlabBlock.hpp index e804420..7749de1 100644 --- a/LiteLoader/Header/MC/WoodSlabBlock.hpp +++ b/LiteLoader/include/llapi/mc/WoodSlabBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "SlabBlock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WoodSlabBlockItem.hpp b/LiteLoader/include/llapi/mc/WoodSlabBlockItem.hpp similarity index 97% rename from LiteLoader/Header/MC/WoodSlabBlockItem.hpp rename to LiteLoader/include/llapi/mc/WoodSlabBlockItem.hpp index 61597bd..761f0d3 100644 --- a/LiteLoader/Header/MC/WoodSlabBlockItem.hpp +++ b/LiteLoader/include/llapi/mc/WoodSlabBlockItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockItem.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WoodlandMansionFeature.hpp b/LiteLoader/include/llapi/mc/WoodlandMansionFeature.hpp similarity index 97% rename from LiteLoader/Header/MC/WoodlandMansionFeature.hpp rename to LiteLoader/include/llapi/mc/WoodlandMansionFeature.hpp index a5eb279..3c9aa9b 100644 --- a/LiteLoader/Header/MC/WoodlandMansionFeature.hpp +++ b/LiteLoader/include/llapi/mc/WoodlandMansionFeature.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "StructureFeature.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WoodlandMansionPieces.hpp b/LiteLoader/include/llapi/mc/WoodlandMansionPieces.hpp similarity index 96% rename from LiteLoader/Header/MC/WoodlandMansionPieces.hpp rename to LiteLoader/include/llapi/mc/WoodlandMansionPieces.hpp index a0e2333..5fd8f36 100644 --- a/LiteLoader/Header/MC/WoodlandMansionPieces.hpp +++ b/LiteLoader/include/llapi/mc/WoodlandMansionPieces.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WoodlandMansionStart.hpp b/LiteLoader/include/llapi/mc/WoodlandMansionStart.hpp similarity index 97% rename from LiteLoader/Header/MC/WoodlandMansionStart.hpp rename to LiteLoader/include/llapi/mc/WoodlandMansionStart.hpp index 9d3e5fb..030694e 100644 --- a/LiteLoader/Header/MC/WoodlandMansionStart.hpp +++ b/LiteLoader/include/llapi/mc/WoodlandMansionStart.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WoolCarpetBlock.hpp b/LiteLoader/include/llapi/mc/WoolCarpetBlock.hpp similarity index 99% rename from LiteLoader/Header/MC/WoolCarpetBlock.hpp rename to LiteLoader/include/llapi/mc/WoolCarpetBlock.hpp index 11b93a5..d9f3519 100644 --- a/LiteLoader/Header/MC/WoolCarpetBlock.hpp +++ b/LiteLoader/include/llapi/mc/WoolCarpetBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorkGoal.hpp b/LiteLoader/include/llapi/mc/WorkGoal.hpp similarity index 97% rename from LiteLoader/Header/MC/WorkGoal.hpp rename to LiteLoader/include/llapi/mc/WorkGoal.hpp index bf9ca97..34e676b 100644 --- a/LiteLoader/Header/MC/WorkGoal.hpp +++ b/LiteLoader/include/llapi/mc/WorkGoal.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "MoveToPOIGoal.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorkbenchBlock.hpp b/LiteLoader/include/llapi/mc/WorkbenchBlock.hpp similarity index 98% rename from LiteLoader/Header/MC/WorkbenchBlock.hpp rename to LiteLoader/include/llapi/mc/WorkbenchBlock.hpp index 54d46c3..b391b88 100644 --- a/LiteLoader/Header/MC/WorkbenchBlock.hpp +++ b/LiteLoader/include/llapi/mc/WorkbenchBlock.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "BlockLegacy.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorkerPool.hpp b/LiteLoader/include/llapi/mc/WorkerPool.hpp similarity index 97% rename from LiteLoader/Header/MC/WorkerPool.hpp rename to LiteLoader/include/llapi/mc/WorkerPool.hpp index a343fc9..18ff51a 100644 --- a/LiteLoader/Header/MC/WorkerPool.hpp +++ b/LiteLoader/include/llapi/mc/WorkerPool.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Bedrock.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldBlockTarget.hpp b/LiteLoader/include/llapi/mc/WorldBlockTarget.hpp similarity index 97% rename from LiteLoader/Header/MC/WorldBlockTarget.hpp rename to LiteLoader/include/llapi/mc/WorldBlockTarget.hpp index 5784fb5..d63171c 100644 --- a/LiteLoader/Header/MC/WorldBlockTarget.hpp +++ b/LiteLoader/include/llapi/mc/WorldBlockTarget.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldBuilderCommand.hpp b/LiteLoader/include/llapi/mc/WorldBuilderCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldBuilderCommand.hpp rename to LiteLoader/include/llapi/mc/WorldBuilderCommand.hpp index 0a6308a..413861c 100644 --- a/LiteLoader/Header/MC/WorldBuilderCommand.hpp +++ b/LiteLoader/include/llapi/mc/WorldBuilderCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldChangeTransaction.hpp b/LiteLoader/include/llapi/mc/WorldChangeTransaction.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldChangeTransaction.hpp rename to LiteLoader/include/llapi/mc/WorldChangeTransaction.hpp index 8ba7af0..8e42871 100644 --- a/LiteLoader/Header/MC/WorldChangeTransaction.hpp +++ b/LiteLoader/include/llapi/mc/WorldChangeTransaction.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldGenerator.hpp b/LiteLoader/include/llapi/mc/WorldGenerator.hpp similarity index 97% rename from LiteLoader/Header/MC/WorldGenerator.hpp rename to LiteLoader/include/llapi/mc/WorldGenerator.hpp index 22f8496..1be1758 100644 --- a/LiteLoader/Header/MC/WorldGenerator.hpp +++ b/LiteLoader/include/llapi/mc/WorldGenerator.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldHistoryPackSource.hpp b/LiteLoader/include/llapi/mc/WorldHistoryPackSource.hpp similarity index 97% rename from LiteLoader/Header/MC/WorldHistoryPackSource.hpp rename to LiteLoader/include/llapi/mc/WorldHistoryPackSource.hpp index b492ee3..60c33d0 100644 --- a/LiteLoader/Header/MC/WorldHistoryPackSource.hpp +++ b/LiteLoader/include/llapi/mc/WorldHistoryPackSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldLimitChunkSource.hpp b/LiteLoader/include/llapi/mc/WorldLimitChunkSource.hpp similarity index 97% rename from LiteLoader/Header/MC/WorldLimitChunkSource.hpp rename to LiteLoader/include/llapi/mc/WorldLimitChunkSource.hpp index 8cfea6f..2b00496 100644 --- a/LiteLoader/Header/MC/WorldLimitChunkSource.hpp +++ b/LiteLoader/include/llapi/mc/WorldLimitChunkSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ChunkSource.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldPackHistory.hpp b/LiteLoader/include/llapi/mc/WorldPackHistory.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldPackHistory.hpp rename to LiteLoader/include/llapi/mc/WorldPackHistory.hpp index 31ae20f..243b41d 100644 --- a/LiteLoader/Header/MC/WorldPackHistory.hpp +++ b/LiteLoader/include/llapi/mc/WorldPackHistory.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldPacksHistoryFile.hpp b/LiteLoader/include/llapi/mc/WorldPacksHistoryFile.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldPacksHistoryFile.hpp rename to LiteLoader/include/llapi/mc/WorldPacksHistoryFile.hpp index a64f2d2..2634fab 100644 --- a/LiteLoader/Header/MC/WorldPacksHistoryFile.hpp +++ b/LiteLoader/include/llapi/mc/WorldPacksHistoryFile.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Json.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldSessionEndPoint.hpp b/LiteLoader/include/llapi/mc/WorldSessionEndPoint.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldSessionEndPoint.hpp rename to LiteLoader/include/llapi/mc/WorldSessionEndPoint.hpp index d0ba105..0861eac 100644 --- a/LiteLoader/Header/MC/WorldSessionEndPoint.hpp +++ b/LiteLoader/include/llapi/mc/WorldSessionEndPoint.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldTemplateInfo.hpp b/LiteLoader/include/llapi/mc/WorldTemplateInfo.hpp similarity index 95% rename from LiteLoader/Header/MC/WorldTemplateInfo.hpp rename to LiteLoader/include/llapi/mc/WorldTemplateInfo.hpp index b592574..5cc2e28 100644 --- a/LiteLoader/Header/MC/WorldTemplateInfo.hpp +++ b/LiteLoader/include/llapi/mc/WorldTemplateInfo.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA #include "NetworkHandler.hpp" diff --git a/LiteLoader/Header/MC/WorldTemplateLevelData.hpp b/LiteLoader/include/llapi/mc/WorldTemplateLevelData.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldTemplateLevelData.hpp rename to LiteLoader/include/llapi/mc/WorldTemplateLevelData.hpp index 4dcd573..4d8e44c 100644 --- a/LiteLoader/Header/MC/WorldTemplateLevelData.hpp +++ b/LiteLoader/include/llapi/mc/WorldTemplateLevelData.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldTemplateManager.hpp b/LiteLoader/include/llapi/mc/WorldTemplateManager.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldTemplateManager.hpp rename to LiteLoader/include/llapi/mc/WorldTemplateManager.hpp index 4babe94..9b5e26a 100644 --- a/LiteLoader/Header/MC/WorldTemplateManager.hpp +++ b/LiteLoader/include/llapi/mc/WorldTemplateManager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldTemplateManagerProxyCallbacks.hpp b/LiteLoader/include/llapi/mc/WorldTemplateManagerProxyCallbacks.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldTemplateManagerProxyCallbacks.hpp rename to LiteLoader/include/llapi/mc/WorldTemplateManagerProxyCallbacks.hpp index 450b98c..5fceeba 100644 --- a/LiteLoader/Header/MC/WorldTemplateManagerProxyCallbacks.hpp +++ b/LiteLoader/include/llapi/mc/WorldTemplateManagerProxyCallbacks.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldTemplatePackManifest.hpp b/LiteLoader/include/llapi/mc/WorldTemplatePackManifest.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldTemplatePackManifest.hpp rename to LiteLoader/include/llapi/mc/WorldTemplatePackManifest.hpp index 7031514..2ce4554 100644 --- a/LiteLoader/Header/MC/WorldTemplatePackManifest.hpp +++ b/LiteLoader/include/llapi/mc/WorldTemplatePackManifest.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WorldTemplatePackSource.hpp b/LiteLoader/include/llapi/mc/WorldTemplatePackSource.hpp similarity index 96% rename from LiteLoader/Header/MC/WorldTemplatePackSource.hpp rename to LiteLoader/include/llapi/mc/WorldTemplatePackSource.hpp index bffb4c0..e6f7d19 100644 --- a/LiteLoader/Header/MC/WorldTemplatePackSource.hpp +++ b/LiteLoader/include/llapi/mc/WorldTemplatePackSource.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WritableBookItem.hpp b/LiteLoader/include/llapi/mc/WritableBookItem.hpp similarity index 98% rename from LiteLoader/Header/MC/WritableBookItem.hpp rename to LiteLoader/include/llapi/mc/WritableBookItem.hpp index e031c4d..5179446 100644 --- a/LiteLoader/Header/MC/WritableBookItem.hpp +++ b/LiteLoader/include/llapi/mc/WritableBookItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/WrittenBookItem.hpp b/LiteLoader/include/llapi/mc/WrittenBookItem.hpp similarity index 99% rename from LiteLoader/Header/MC/WrittenBookItem.hpp rename to LiteLoader/include/llapi/mc/WrittenBookItem.hpp index 28f1ce1..5fb9cee 100644 --- a/LiteLoader/Header/MC/WrittenBookItem.hpp +++ b/LiteLoader/include/llapi/mc/WrittenBookItem.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Item.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/XPCommand.hpp b/LiteLoader/include/llapi/mc/XPCommand.hpp similarity index 96% rename from LiteLoader/Header/MC/XPCommand.hpp rename to LiteLoader/include/llapi/mc/XPCommand.hpp index 0eb2f8c..2dc778d 100644 --- a/LiteLoader/Header/MC/XPCommand.hpp +++ b/LiteLoader/include/llapi/mc/XPCommand.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Command.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/ZipPackAccessStrategy.hpp b/LiteLoader/include/llapi/mc/ZipPackAccessStrategy.hpp similarity index 98% rename from LiteLoader/Header/MC/ZipPackAccessStrategy.hpp rename to LiteLoader/include/llapi/mc/ZipPackAccessStrategy.hpp index 91311d5..bb38cc4 100644 --- a/LiteLoader/Header/MC/ZipPackAccessStrategy.hpp +++ b/LiteLoader/include/llapi/mc/ZipPackAccessStrategy.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "PackAccessStrategy.hpp" diff --git a/LiteLoader/Header/MC/ZipPackAccessStrategyOwningFileAcccess.hpp b/LiteLoader/include/llapi/mc/ZipPackAccessStrategyOwningFileAcccess.hpp similarity index 97% rename from LiteLoader/Header/MC/ZipPackAccessStrategyOwningFileAcccess.hpp rename to LiteLoader/include/llapi/mc/ZipPackAccessStrategyOwningFileAcccess.hpp index 5627d6c..6034a12 100644 --- a/LiteLoader/Header/MC/ZipPackAccessStrategyOwningFileAcccess.hpp +++ b/LiteLoader/include/llapi/mc/ZipPackAccessStrategyOwningFileAcccess.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Core.hpp" #include "ZipPackAccessStrategy.hpp" diff --git a/LiteLoader/Header/MC/ZlibFileAccessWrapper.hpp b/LiteLoader/include/llapi/mc/ZlibFileAccessWrapper.hpp similarity index 95% rename from LiteLoader/Header/MC/ZlibFileAccessWrapper.hpp rename to LiteLoader/include/llapi/mc/ZlibFileAccessWrapper.hpp index fd64b44..4da2d47 100644 --- a/LiteLoader/Header/MC/ZlibFileAccessWrapper.hpp +++ b/LiteLoader/include/llapi/mc/ZlibFileAccessWrapper.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/Zombie.hpp b/LiteLoader/include/llapi/mc/Zombie.hpp similarity index 98% rename from LiteLoader/Header/MC/Zombie.hpp rename to LiteLoader/include/llapi/mc/Zombie.hpp index a042e9a..79d18a8 100644 --- a/LiteLoader/Header/MC/Zombie.hpp +++ b/LiteLoader/include/llapi/mc/Zombie.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "HumanoidMonster.hpp" diff --git a/LiteLoader/Header/MC/ZombieVillager.hpp b/LiteLoader/include/llapi/mc/ZombieVillager.hpp similarity index 98% rename from LiteLoader/Header/MC/ZombieVillager.hpp rename to LiteLoader/include/llapi/mc/ZombieVillager.hpp index 2cfb896..d320391 100644 --- a/LiteLoader/Header/MC/ZombieVillager.hpp +++ b/LiteLoader/include/llapi/mc/ZombieVillager.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "Actor.hpp" #include "Zombie.hpp" diff --git a/LiteLoader/Header/MC/_ProfilerLiteTimer.hpp b/LiteLoader/include/llapi/mc/_ProfilerLiteTimer.hpp similarity index 96% rename from LiteLoader/Header/MC/_ProfilerLiteTimer.hpp rename to LiteLoader/include/llapi/mc/_ProfilerLiteTimer.hpp index 5247814..4061a59 100644 --- a/LiteLoader/Header/MC/_ProfilerLiteTimer.hpp +++ b/LiteLoader/include/llapi/mc/_ProfilerLiteTimer.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #include "ProfilerLite.hpp" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/_TickPtr.hpp b/LiteLoader/include/llapi/mc/_TickPtr.hpp similarity index 94% rename from LiteLoader/Header/MC/_TickPtr.hpp rename to LiteLoader/include/llapi/mc/_TickPtr.hpp index 85c8f82..e8e48f3 100644 --- a/LiteLoader/Header/MC/_TickPtr.hpp +++ b/LiteLoader/include/llapi/mc/_TickPtr.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/glTFExporter.hpp b/LiteLoader/include/llapi/mc/glTFExporter.hpp similarity index 96% rename from LiteLoader/Header/MC/glTFExporter.hpp rename to LiteLoader/include/llapi/mc/glTFExporter.hpp index abbcbd7..2594b4b 100644 --- a/LiteLoader/Header/MC/glTFExporter.hpp +++ b/LiteLoader/include/llapi/mc/glTFExporter.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/persona.hpp b/LiteLoader/include/llapi/mc/persona.hpp similarity index 98% rename from LiteLoader/Header/MC/persona.hpp rename to LiteLoader/include/llapi/mc/persona.hpp index 6598908..8f9ddbd 100644 --- a/LiteLoader/Header/MC/persona.hpp +++ b/LiteLoader/include/llapi/mc/persona.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/MC/port.hpp b/LiteLoader/include/llapi/mc/port.hpp similarity index 92% rename from LiteLoader/Header/MC/port.hpp rename to LiteLoader/include/llapi/mc/port.hpp index ad2819b..06430dc 100644 --- a/LiteLoader/Header/MC/port.hpp +++ b/LiteLoader/include/llapi/mc/port.hpp @@ -1,7 +1,7 @@ // This Header is auto generated by BDSLiteLoader Toolchain #pragma once #define AUTO_GENERATED -#include "../Global.h" +#include "llapi/Global.h" #define BEFORE_EXTRA diff --git a/LiteLoader/Header/PERM/Foundation.hpp b/LiteLoader/include/llapi/perm/Foundation.hpp similarity index 99% rename from LiteLoader/Header/PERM/Foundation.hpp rename to LiteLoader/include/llapi/perm/Foundation.hpp index 2a4c064..1bb8a17 100644 --- a/LiteLoader/Header/PERM/Foundation.hpp +++ b/LiteLoader/include/llapi/perm/Foundation.hpp @@ -7,7 +7,7 @@ * */ #pragma once -#include +#include "llapi/Global.h" namespace PERM { diff --git a/LiteLoader/Header/PERM/Member.hpp b/LiteLoader/include/llapi/perm/Member.hpp similarity index 88% rename from LiteLoader/Header/PERM/Member.hpp rename to LiteLoader/include/llapi/perm/Member.hpp index acbae84..be28748 100644 --- a/LiteLoader/Header/PERM/Member.hpp +++ b/LiteLoader/include/llapi/perm/Member.hpp @@ -7,7 +7,7 @@ * */ #pragma once -#include "Foundation.hpp" +#include "llapi/perm/Foundation.hpp" namespace PERM { diff --git a/LiteLoader/Header/PERM/Permission.hpp b/LiteLoader/include/llapi/perm/Permission.hpp similarity index 96% rename from LiteLoader/Header/PERM/Permission.hpp rename to LiteLoader/include/llapi/perm/Permission.hpp index 4dea3b0..1abd110 100644 --- a/LiteLoader/Header/PERM/Permission.hpp +++ b/LiteLoader/include/llapi/perm/Permission.hpp @@ -7,8 +7,8 @@ * */ #pragma once -#include -#include "Foundation.hpp" +#include "Nlohmann/json.hpp" +#include "llapi/perm/Foundation.hpp" namespace PERM { diff --git a/LiteLoader/Header/PERM/Role.hpp b/LiteLoader/include/llapi/perm/Role.hpp similarity index 99% rename from LiteLoader/Header/PERM/Role.hpp rename to LiteLoader/include/llapi/perm/Role.hpp index b4c238a..7349c88 100644 --- a/LiteLoader/Header/PERM/Role.hpp +++ b/LiteLoader/include/llapi/perm/Role.hpp @@ -7,8 +7,8 @@ * */ #pragma once -#include "Member.hpp" -#include "Permission.hpp" +#include "llapi/perm/Member.hpp" +#include "llapi/perm/Permission.hpp" namespace PERM { diff --git a/LiteLoader/Header/Utils/Bstream.h b/LiteLoader/include/llapi/utils/Bstream.h similarity index 100% rename from LiteLoader/Header/Utils/Bstream.h rename to LiteLoader/include/llapi/utils/Bstream.h diff --git a/LiteLoader/Header/Utils/CryptHelper.h b/LiteLoader/include/llapi/utils/CryptHelper.h similarity index 51% rename from LiteLoader/Header/Utils/CryptHelper.h rename to LiteLoader/include/llapi/utils/CryptHelper.h index 3363e9c..7633754 100644 --- a/LiteLoader/Header/Utils/CryptHelper.h +++ b/LiteLoader/include/llapi/utils/CryptHelper.h @@ -1,5 +1,5 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include LIAPI std::string CalcMD5(const std::string& str); diff --git a/LiteLoader/Header/Utils/CsLock.h b/LiteLoader/include/llapi/utils/CsLock.h similarity index 91% rename from LiteLoader/Header/Utils/CsLock.h rename to LiteLoader/include/llapi/utils/CsLock.h index d6eb4ab..f705a78 100644 --- a/LiteLoader/Header/Utils/CsLock.h +++ b/LiteLoader/include/llapi/utils/CsLock.h @@ -1,6 +1,7 @@ #pragma once -#include "../Global.h" -#include + +#include "llapi/Global.h" +#include // ===== Critical Section Locker ===== // a simple lock which is much faster than std::mutex diff --git a/LiteLoader/Header/Utils/DbgHelper.h b/LiteLoader/include/llapi/utils/DbgHelper.h similarity index 94% rename from LiteLoader/Header/Utils/DbgHelper.h rename to LiteLoader/include/llapi/utils/DbgHelper.h index bf51f1f..1c045ec 100644 --- a/LiteLoader/Header/Utils/DbgHelper.h +++ b/LiteLoader/include/llapi/utils/DbgHelper.h @@ -1,6 +1,7 @@ #pragma once -#include -#include + +#include "llapi/Global.h" +#include #include class Logger; diff --git a/LiteLoader/Header/Utils/FileHelper.h b/LiteLoader/include/llapi/utils/FileHelper.h similarity index 86% rename from LiteLoader/Header/Utils/FileHelper.h rename to LiteLoader/include/llapi/utils/FileHelper.h index 0de1bb3..eb377e9 100644 --- a/LiteLoader/Header/Utils/FileHelper.h +++ b/LiteLoader/include/llapi/utils/FileHelper.h @@ -1,5 +1,5 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include #include #include diff --git a/LiteLoader/Header/Utils/Hash.h b/LiteLoader/include/llapi/utils/Hash.h similarity index 100% rename from LiteLoader/Header/Utils/Hash.h rename to LiteLoader/include/llapi/utils/Hash.h diff --git a/LiteLoader/Header/Utils/Json.h b/LiteLoader/include/llapi/utils/Json.h similarity index 99% rename from LiteLoader/Header/Utils/Json.h rename to LiteLoader/include/llapi/utils/Json.h index 1f78f44..c1f6393 100644 --- a/LiteLoader/Header/Utils/Json.h +++ b/LiteLoader/include/llapi/utils/Json.h @@ -1,6 +1,6 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include #include #include diff --git a/LiteLoader/Header/Utils/NetworkHelper.h b/LiteLoader/include/llapi/utils/NetworkHelper.h similarity index 90% rename from LiteLoader/Header/Utils/NetworkHelper.h rename to LiteLoader/include/llapi/utils/NetworkHelper.h index 787c82e..9200d85 100644 --- a/LiteLoader/Header/Utils/NetworkHelper.h +++ b/LiteLoader/include/llapi/utils/NetworkHelper.h @@ -1,8 +1,8 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include #include -#include +#include "httplib/httplib.h" // "http(s)://www.aaa.com/bbb/c.html" -> ""http(s)://www.aaa.com" & "/bbb/c.html" LIAPI void SplitHttpUrl(const std::string& url, std::string& host, std::string& path); diff --git a/LiteLoader/Header/Utils/Optional.h b/LiteLoader/include/llapi/utils/Optional.h similarity index 100% rename from LiteLoader/Header/Utils/Optional.h rename to LiteLoader/include/llapi/utils/Optional.h diff --git a/LiteLoader/Header/Utils/PatchHelper.h b/LiteLoader/include/llapi/utils/PatchHelper.h similarity index 100% rename from LiteLoader/Header/Utils/PatchHelper.h rename to LiteLoader/include/llapi/utils/PatchHelper.h diff --git a/LiteLoader/Header/Utils/PlayerMap.h b/LiteLoader/include/llapi/utils/PlayerMap.h similarity index 97% rename from LiteLoader/Header/Utils/PlayerMap.h rename to LiteLoader/include/llapi/utils/PlayerMap.h index 48ebb35..5bdb146 100644 --- a/LiteLoader/Header/Utils/PlayerMap.h +++ b/LiteLoader/include/llapi/utils/PlayerMap.h @@ -1,5 +1,5 @@ #pragma once -#include +#include "llapi/Global.h" class ServerPlayer; struct DePlayerCB { void* userdata; diff --git a/LiteLoader/Header/Utils/PluginOwnData.h b/LiteLoader/include/llapi/utils/PluginOwnData.h similarity index 98% rename from LiteLoader/Header/Utils/PluginOwnData.h rename to LiteLoader/include/llapi/utils/PluginOwnData.h index 4ede1a2..9d3bad9 100644 --- a/LiteLoader/Header/Utils/PluginOwnData.h +++ b/LiteLoader/include/llapi/utils/PluginOwnData.h @@ -20,7 +20,7 @@ #include "WinHelper.h" #include #include -#include "../Global.h" +#include "llapi/Global.h" LIAPI extern std::unordered_map> ll_PluginOwnData; diff --git a/LiteLoader/Header/Utils/RNG.h b/LiteLoader/include/llapi/utils/RNG.h similarity index 98% rename from LiteLoader/Header/Utils/RNG.h rename to LiteLoader/include/llapi/utils/RNG.h index 54774e1..039c3e8 100644 --- a/LiteLoader/Header/Utils/RNG.h +++ b/LiteLoader/include/llapi/utils/RNG.h @@ -7,8 +7,8 @@ * */ #pragma once -#include "Global.h" -#include +#include "llapi/Global.h" +#include "pcg/pcg_random.hpp" namespace RNG { template diff --git a/LiteLoader/Header/Utils/SRWLock.h b/LiteLoader/include/llapi/utils/SRWLock.h similarity index 93% rename from LiteLoader/Header/Utils/SRWLock.h rename to LiteLoader/include/llapi/utils/SRWLock.h index efa29e2..b39d3a6 100644 --- a/LiteLoader/Header/Utils/SRWLock.h +++ b/LiteLoader/include/llapi/utils/SRWLock.h @@ -1,5 +1,6 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" +#include class SRWLock { bool inited = false; diff --git a/LiteLoader/Header/Utils/STLHelper.h b/LiteLoader/include/llapi/utils/STLHelper.h similarity index 100% rename from LiteLoader/Header/Utils/STLHelper.h rename to LiteLoader/include/llapi/utils/STLHelper.h diff --git a/LiteLoader/Header/Utils/ShellLinkFile.h b/LiteLoader/include/llapi/utils/ShellLinkFile.h similarity index 99% rename from LiteLoader/Header/Utils/ShellLinkFile.h rename to LiteLoader/include/llapi/utils/ShellLinkFile.h index 923559e..309dd23 100644 --- a/LiteLoader/Header/Utils/ShellLinkFile.h +++ b/LiteLoader/include/llapi/utils/ShellLinkFile.h @@ -1,5 +1,5 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" struct IShellLinkW; struct IPersistFile; diff --git a/LiteLoader/Header/Utils/StringHelper.h b/LiteLoader/include/llapi/utils/StringHelper.h similarity index 98% rename from LiteLoader/Header/Utils/StringHelper.h rename to LiteLoader/include/llapi/utils/StringHelper.h index 021cb43..e208f3f 100644 --- a/LiteLoader/Header/Utils/StringHelper.h +++ b/LiteLoader/include/llapi/utils/StringHelper.h @@ -1,5 +1,5 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include #include diff --git a/LiteLoader/Header/Utils/StringReader.h b/LiteLoader/include/llapi/utils/StringReader.h similarity index 98% rename from LiteLoader/Header/Utils/StringReader.h rename to LiteLoader/include/llapi/utils/StringReader.h index 3b30f31..268c663 100644 --- a/LiteLoader/Header/Utils/StringReader.h +++ b/LiteLoader/include/llapi/utils/StringReader.h @@ -1,5 +1,5 @@ #pragma once -#include <../Global.h> +#include "llapi/Global.h" class StringReader { diff --git a/LiteLoader/Header/Utils/TypeConversionHelper.hpp b/LiteLoader/include/llapi/utils/TypeConversionHelper.hpp similarity index 94% rename from LiteLoader/Header/Utils/TypeConversionHelper.hpp rename to LiteLoader/include/llapi/utils/TypeConversionHelper.hpp index 640923c..dba95e5 100644 --- a/LiteLoader/Header/Utils/TypeConversionHelper.hpp +++ b/LiteLoader/include/llapi/utils/TypeConversionHelper.hpp @@ -1,7 +1,7 @@ #pragma once -#include <../Global.h> +#include "llapi/Global.h" #include -#include +#include "ModUtils/ModUtils.h" using namespace std; namespace TCHelper { diff --git a/LiteLoader/Header/Utils/VarInt.h b/LiteLoader/include/llapi/utils/VarInt.h similarity index 100% rename from LiteLoader/Header/Utils/VarInt.h rename to LiteLoader/include/llapi/utils/VarInt.h diff --git a/LiteLoader/Header/Utils/ViewHelper.h b/LiteLoader/include/llapi/utils/ViewHelper.h similarity index 100% rename from LiteLoader/Header/Utils/ViewHelper.h rename to LiteLoader/include/llapi/utils/ViewHelper.h diff --git a/LiteLoader/Header/Utils/WinHelper.h b/LiteLoader/include/llapi/utils/WinHelper.h similarity index 97% rename from LiteLoader/Header/Utils/WinHelper.h rename to LiteLoader/include/llapi/utils/WinHelper.h index 7fd7474..284d7da 100644 --- a/LiteLoader/Header/Utils/WinHelper.h +++ b/LiteLoader/include/llapi/utils/WinHelper.h @@ -1,5 +1,5 @@ #pragma once -#include "../Global.h" +#include "llapi/Global.h" #include #include diff --git a/LiteLoader/Main/AddonsHelper.cpp b/LiteLoader/src/liteloader/AddonsHelper.cpp similarity index 96% rename from LiteLoader/Main/AddonsHelper.cpp rename to LiteLoader/src/liteloader/AddonsHelper.cpp index 9d5274a..869bf3d 100644 --- a/LiteLoader/Main/AddonsHelper.cpp +++ b/LiteLoader/src/liteloader/AddonsHelper.cpp @@ -1,25 +1,25 @@ -#include "AddonsHelper.h" -#include
-#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "liteloader/AddonsHelper.h" +#include "liteloader/Config.h" +#include "llapi/EventAPI.h" +#include "llapi/RegCommandAPI.h" +#include "llapi/LLAPI.h" +#include +#include +#include +#include +#include +#include +#include "llapi/GlobalServiceAPI.h" +#include +#include #include -#include
-#include -#include +#include "liteloader/Config.h" +#include "llapi/LoggerAPI.h" +#include "llapi/I18nAPI.h" #include #include #include -#include +#include #include using namespace std; using namespace RegisterCommandHelper; @@ -49,7 +49,7 @@ inline bool isManifestFile(std::string const& filename) { return filename == "manifest.json" || filename == "pack_manifest.json"; } -#include +#include inline std::string FixMojangJson(std::string const& content) { Json::Value value; JsonHelpers::parseJson(content, value); @@ -79,7 +79,7 @@ std::optional parseAddonFromPath(std::filesystem::path addonPath) { addon.directory = UTF82String(addonPath.u8string()); auto ver = header["version"]; - addon.version = LL::Version(ver[0], ver[1], ver[2]); + addon.version = ll::Version(ver[0], ver[1], ver[2]); string type = manifest["modules"][0]["type"]; if (type == "resources") @@ -239,7 +239,7 @@ void FindManifest(vector& result, const string& path) { } std::string Addon::getPrintName() const { - if (LL::globalConfig.colorLog) + if (ll::globalConfig.colorLog) return ColorFormat::convertToConsole(std::string(name)); else return ColorFormat::removeColorCode(std::string(name)); @@ -619,7 +619,7 @@ bool AutoInstallAddons(string path) { std::error_code ec; if (!filesystem::exists(str2wstr(path))) { filesystem::create_directories(str2wstr(path), ec); - addonLogger.info(tr("ll.addonsHelper.autoInstall.tip.dirCreated", LL::globalConfig.addonsInstallPath)); + addonLogger.info(tr("ll.addonsHelper.autoInstall.tip.dirCreated", ll::globalConfig.addonsInstallPath)); return false; } std::vector toInstallList; @@ -659,13 +659,13 @@ bool AutoInstallAddons(string path) { } void InitAddonsHelper() { - if (LL::isDebugMode()) + if (ll::isDebugMode()) addonLogger.consoleLevel = addonLogger.debug.level; filesystem::remove_all(ADDON_INSTALL_TEMP_DIR); filesystem::create_directories(ADDON_INSTALL_TEMP_DIR); - AutoInstallAddons(LL::globalConfig.addonsInstallPath); + AutoInstallAddons(ll::globalConfig.addonsInstallPath); BuildAddonsList(); filesystem::remove_all(ADDON_INSTALL_TEMP_DIR); diff --git a/LiteLoader/Main/BStats.cpp b/LiteLoader/src/liteloader/BStats.cpp similarity index 94% rename from LiteLoader/Main/BStats.cpp rename to LiteLoader/src/liteloader/BStats.cpp index ca8cd46..8cfa89a 100644 --- a/LiteLoader/Main/BStats.cpp +++ b/LiteLoader/src/liteloader/BStats.cpp @@ -1,16 +1,16 @@ -#include "LiteLoader.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "liteloader/LiteLoader.h" +#include "llapi/EventAPI.h" +#include "llapi/Global.h" +#include "llapi/ScheduleAPI.h" +#include "llapi/ServerAPI.h" +#include +#include +#include +#include +#include +#include +#include +#include #define BSTATS_JSON(key, val) \ if (json.find(key) != json.end()) { \ @@ -225,8 +225,8 @@ nlohmann::json addAdvancedPie(const string& key, const unordered_map //#include // -//using namespace LL; +//using namespace ll; // //// Fix bug //TClasslessInstanceHook(bool, "?_read@ClientCacheBlobStatusPacket@@EEAA?AW4StreamReadResult@@AEAVReadOnlyBinaryStream@@@Z", @@ -185,7 +185,7 @@ //TInstanceHook(void, "?die@ServerPlayer@@UEAAXAEBVActorDamageSource@@@Z", ServerPlayer , ActorDamageSource* ds) //{ // original(this, ds); -// if (LL::globalConfig.enableFixMcBug) +// if (ll::globalConfig.enableFixMcBug) // { // auto name = getRealName(); // Schedule::delay([name]() { @@ -199,7 +199,7 @@ // //// Fix Fishing Hook changeDimension Crash //TInstanceHook(__int64, "?changeDimension@Actor@@UEAAXV?$AutomaticID@VDimension@@H@@@Z", Actor, unsigned int a1) { -// if (!LL::globalConfig.enableFixMcBug) +// if (!ll::globalConfig.enableFixMcBug) // return original(this, a1); // if ((int)this->getEntityTypeId() == 0x4D) // return 0; @@ -207,7 +207,7 @@ //} // //TClasslessInstanceHook(__int64, "?teleportEntity@EndGatewayBlockActor@@QEAAXAEAVActor@@@Z", Actor* a1) { -// if (!LL::globalConfig.enableFixMcBug) +// if (!ll::globalConfig.enableFixMcBug) // return original(this, a1); // if ((int)a1->getEntityTypeId() == 0x4D) // return 0; @@ -235,33 +235,33 @@ //// Fix command crash when server is stopping //TClasslessInstanceHook(void, "?fireEventPlayerMessage@MinecraftEventing@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@000@Z", // std::string const& a1, std::string const& a2, std::string const& a3, std::string const& a4) { -// if (LL::isServerStopping()) +// if (ll::isServerStopping()) // return; // original(this, a1, a2, a3, a4); //} //TClasslessInstanceHook(void, "?fireEventPlayerTransform@MinecraftEventing@@SAXAEAVPlayer@@@Z", // class Player& a1) { -// if (LL::isServerStopping()) +// if (ll::isServerStopping()) // return; // original(this, a1); //} // //TClasslessInstanceHook(void, "?fireEventPlayerTravelled@MinecraftEventing@@UEAAXPEAVPlayer@@M@Z", // class Player& a1, float a2) { -// if (LL::isServerStopping()) +// if (ll::isServerStopping()) // return; // original(this, a1, a2); //} //TClasslessInstanceHook(void, "?fireEventPlayerTeleported@MinecraftEventing@@SAXPEAVPlayer@@MW4TeleportationCause@1@H@Z", // class Player* a1, float a2, int a3, int a4) { -// if (LL::isServerStopping()) +// if (ll::isServerStopping()) // return; // original(this, a1, a2, a3, a4); //} // //// Set stdin mode to text mode if in wine environment //inline bool _tryFixConsoleInputMode() { -// if ((LL::globalConfig.enableFixMcBug && IsWineEnvironment()) || LL::globalConfig.enableForceUtf8Input) { +// if ((ll::globalConfig.enableFixMcBug && IsWineEnvironment()) || ll::globalConfig.enableForceUtf8Input) { // int result = _setmode(_fileno(stdin), _O_U8TEXT); // if (result == -1) { // logger.error("Cannot set stdin to utf8 text mode"); @@ -285,14 +285,14 @@ // //// Fix server broadcast bug. //TClasslessInstanceHook(bool, "?getLANBroadcast@LevelData@@QEBA_NXZ") { -// if (LL::globalConfig.enableFixBroadcastBug) { +// if (ll::globalConfig.enableFixBroadcastBug) { // return true; // } // return original(this); //} // //TClasslessInstanceHook(bool, "?getLANBroadcastIntent@LevelData@@QEBA_NXZ") { -// if (LL::globalConfig.enableFixBroadcastBug) { +// if (ll::globalConfig.enableFixBroadcastBug) { // return true; // } // return original(this); @@ -302,7 +302,7 @@ //bool pauseBLogging = false; //THook(__int64, "std::_Func_impl_no_alloc<,TaskResult>::_Do_call", // __int64 a1, __int64 a2) { -// if (LL::globalConfig.disableAutoCompactionLog) { +// if (ll::globalConfig.disableAutoCompactionLog) { // pauseBLogging = true; // auto v = original(a1, a2); // pauseBLogging = false; @@ -313,7 +313,7 @@ // //TClasslessInstanceHook(char, "?log_va@BedrockLog@@YAXW4LogCategory@1@V?$bitset@$02@std@@W4LogRule@1@W4LogAreaID@@IPEBDH4PEAD@Z", // char a2, int a3, int a4, unsigned int a5, __int64 a6, int a7, __int64 a8, __int64 a9) { -// if (LL::globalConfig.disableAutoCompactionLog && pauseBLogging) { +// if (ll::globalConfig.disableAutoCompactionLog && pauseBLogging) { // return 0; // } // return original(this, a2, a3, a4, a5, a6, a7, a8, a9); @@ -325,7 +325,7 @@ // //THook(void*, "??0ScopedTimer@ImguiProfiler@@QEAA@PEBD0_N@Z", // void* self, char* a2, char* a3, char a4) { -// if (LL::globalConfig.enableFixBDSCrash) { +// if (ll::globalConfig.enableFixBDSCrash) { // return nullptr; // } // return original(self, a2, a3, a4); @@ -333,7 +333,7 @@ // //THook(void, "??1ScopedTimer@ImguiProfiler@@UEAA@XZ", // void* self) { -// if (LL::globalConfig.enableFixBDSCrash) { +// if (ll::globalConfig.enableFixBDSCrash) { // return; // } // return original(self); @@ -342,7 +342,7 @@ //SHook2("_tickDimensionTransition", __int64, "40 53 55 41 56 41 57 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? 48 33 " // "C4 48 89 ?? ?? ?? 48 8B C2 4C 8B F9 48 8B C8 33 D2 49 8B D9 49 8B E8 E8 ?? ?? ?? ?? 4C 8B F0 48 85 C0", // __int64 a1, ActorOwnerComponent* a2, __int64 a3, void* a4) { -// if (LL::globalConfig.enableFixBDSCrash) { +// if (ll::globalConfig.enableFixBDSCrash) { // auto ac = Actor::tryGetFromComponent(*a2, 0); // if (ac) { // auto bs = &ac->getRegionConst(); @@ -355,7 +355,7 @@ // //THook(void, "?_trackMovement@GameEventMovementTrackingSystem@@CAXAEAVActor@@AEAVGameEventMovementTrackingComponent@@@Z", // Actor* a1, void* self) { -// if (LL::globalConfig.enableFixBDSCrash) { +// if (ll::globalConfig.enableFixBDSCrash) { // auto bs = &a1->getRegionConst(); // if (bs == nullptr || !bs) { // return; @@ -369,7 +369,7 @@ // //THook(LevelChunk*, "?getChunk@BlockSource@@QEBAPEAVLevelChunk@@AEBVChunkPos@@@Z", // BlockSource* self, ChunkPos* a2) { -// if (LL::globalConfig.enableFixBDSCrash) { +// if (ll::globalConfig.enableFixBDSCrash) { // LevelChunk* ptr = nullptr; // try { // ptr = original(self, a2); @@ -384,7 +384,7 @@ // //THook(__int64, "?getAvailableChunk@ChunkSource@@QEAA?AV?$shared_ptr@VLevelChunk@@@std@@AEBVChunkPos@@@Z", // __int64 a1, __int64 a2) { -// if (LL::globalConfig.enableFixBDSCrash) { +// if (ll::globalConfig.enableFixBDSCrash) { // __int64 ptr = NULL; // try { // ptr = original(a1, a2); @@ -400,7 +400,7 @@ // Actor) { // // auto bs = original(this); -// if (LL::globalConfig.enableFixBDSCrash) { +// if (ll::globalConfig.enableFixBDSCrash) { // if (!bs) { // return Level::getBlockSource(getDimensionId()); // } diff --git a/LiteLoader/Main/BuiltinCommands.cpp b/LiteLoader/src/liteloader/BuiltinCommands.cpp similarity index 94% rename from LiteLoader/Main/BuiltinCommands.cpp rename to LiteLoader/src/liteloader/BuiltinCommands.cpp index 890062c..93032bc 100644 --- a/LiteLoader/Main/BuiltinCommands.cpp +++ b/LiteLoader/src/liteloader/BuiltinCommands.cpp @@ -1,21 +1,21 @@ #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include
-#include
-#include "../ScriptEngine/Main/Configs.h" +#include "llapi/EventAPI.h" +#include "llapi/LLAPI.h" +#include "llapi/ServerAPI.h" +#include "llapi/RegCommandAPI.h" +#include "llapi/mc/CommandOrigin.hpp" +#include "llapi/mc/CommandOutput.hpp" +#include "llapi/mc/CommandPosition.hpp" +#include "llapi/mc/CommandRegistry.hpp" +#include "llapi/mc/Packet.hpp" +#include "llapi/mc/ServerPlayer.hpp" +#include "llapi/mc/VanillaDimensions.hpp" +#include "liteloader/Config.h" +#include "liteloader/PluginManager.h" +#include "ScriptEngine/src/main/Configs.h" using namespace RegisterCommandHelper; -using namespace LL; +using namespace ll; //static_assert(sizeof(CommandSelector) == 200); @@ -149,7 +149,7 @@ public: }; void LLListPluginsCommand(CommandOutput& output) { - auto plugins = LL::getAllPlugins(); + auto plugins = ll::getAllPlugins(); output.trSuccess("ll.cmd.listPlugin.overview", plugins.size()); std::ostringstream oss; @@ -170,7 +170,7 @@ void LLListPluginsCommand(CommandOutput& output) { } void LLPluginInfoCommand(CommandOutput& output, const string& pluginName) { - auto plugin = LL::getPlugin(pluginName); + auto plugin = ll::getPlugin(pluginName); if (plugin) { std::map outs; std::ostringstream oss; @@ -201,7 +201,7 @@ void LLPluginInfoCommand(CommandOutput& output, const string& pluginName) { } void LLVersionCommand(CommandOutput& output) { - output.trSuccess("ll.cmd.version.msg", LL::getBdsVersion(), LL::getLoaderVersionString(), LL::getServerProtocolVersion()); + output.trSuccess("ll.cmd.version.msg", ll::getBdsVersion(), ll::getLoaderVersionString(), ll::getServerProtocolVersion()); } void LLHelpCommand(CommandOutput& output) { @@ -209,7 +209,7 @@ void LLHelpCommand(CommandOutput& output) { } void LLLoadPluginCommand(CommandOutput& output, const string& path) { - // if (!LL::isDebugMode()) + // if (!ll::isDebugMode()) // return; if (PluginManager::loadPlugin(path, true)) { output.trSuccess("ll.cmd.loadPlugin.success", path); @@ -219,7 +219,7 @@ void LLLoadPluginCommand(CommandOutput& output, const string& path) { } void LLUnloadPluginCommand(CommandOutput& output, const string& pluginName) { - // if (!LL::isDebugMode()) + // if (!ll::isDebugMode()) // return; if (PluginManager::unloadPlugin(pluginName, true)) { output.trSuccess("ll.cmd.unloadPlugin.success", pluginName); @@ -229,7 +229,7 @@ void LLUnloadPluginCommand(CommandOutput& output, const string& pluginName) { } void LLReloadPluginCommand(CommandOutput& output, const string& pluginName, bool reloadAll) { - // if (!LL::isDebugMode()) + // if (!ll::isDebugMode()) // return; if (!reloadAll) { if (PluginManager::reloadPlugin(pluginName, true)) { @@ -316,7 +316,7 @@ public: // Register softenum vector pluginList; - for (auto& [name, p] : LL::getAllPlugins()) { + for (auto& [name, p] : ll::getAllPlugins()) { pluginList.push_back(name); } registry->addSoftEnum("PluginName", pluginList); @@ -381,7 +381,7 @@ void RegisterCommands() { Event::RegCmdEvent::subscribe([](Event::RegCmdEvent ev) { // Register commands LLCommand::setup(ev.mCommandRegistry); VersionCommand::setup(ev.mCommandRegistry); - if (LL::globalConfig.enableTpdimCommand) { + if (ll::globalConfig.enableTpdimCommand) { TeleportDimensionCommand::setup(ev.mCommandRegistry); } return true; diff --git a/LiteLoader/Main/BuiltinUnlockCmd.cpp b/LiteLoader/src/liteloader/BuiltinUnlockCmd.cpp similarity index 91% rename from LiteLoader/Main/BuiltinUnlockCmd.cpp rename to LiteLoader/src/liteloader/BuiltinUnlockCmd.cpp index 3edf4b3..736a504 100644 --- a/LiteLoader/Main/BuiltinUnlockCmd.cpp +++ b/LiteLoader/src/liteloader/BuiltinUnlockCmd.cpp @@ -1,7 +1,7 @@ -#include "Global.h" -#include
-#include -#include +#include "llapi/Global.h" +#include "liteloader/Config.h" +#include +#include "llapi/HookAPI.h" /////////////////// Built in UnlockCmd /////////////////// bool isUnlockCmdEnabled = true; @@ -19,10 +19,10 @@ TInstanceHook(void, "?registerCommand@CommandRegistry@@QEAAXAEBV?$basic_string@D throw std::runtime_error("There is already a command named " + name); } } - if (LL::globalConfig.enableUnlockCmd) { + if (ll::globalConfig.enableUnlockCmd) { flag1 |= 0x80; } - if (LL::globalConfig.debugMode) { + if (ll::globalConfig.debugMode) { LogCommandRegistration(name, description, perm, flag1, flag2); } return original(this, name, description, perm, flag1, flag2); @@ -32,7 +32,7 @@ class CommandSelectorBase; class CommandOrigin; //TClasslessInstanceHook(bool, "?isExpansionAllowed@CommandSelectorBase@@AEBA_NAEBVCommandOrigin@@@Z", // CommandOrigin* a2) { -// if (LL::globalConfig.enableUnlockCmd) { +// if (ll::globalConfig.enableUnlockCmd) { // original(this, a2); // return true; // } @@ -40,9 +40,9 @@ class CommandOrigin; //} //#include -#include -#include -#include +#include +#include +#include inline void tryChangeStringToRawText(CommandParameterData& data) { if (false /* config.xxxx*/ && data.tid.value == type_id().value) @@ -87,7 +87,7 @@ class CommandOrigin; } TClasslessInstanceHook(void, "?addEnumValueConstraints@CommandRegistry@@QEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@3@W4SemanticConstraint@@@Z", std::string const& enumName, std::vector const& enumValues, SemanticConstraint constraint) { - if (!LL::globalConfig.enableUnlockCmd) + if (!ll::globalConfig.enableUnlockCmd) return original(this, enumName, enumValues, constraint); if (constraint & SemanticConstraint::RequiresCheatsEnabled) { constraint = (SemanticConstraint)(constraint & (~SemanticConstraint::RequiresCheatsEnabled)); diff --git a/LiteLoader/Main/Config.cpp b/LiteLoader/src/liteloader/Config.cpp similarity index 94% rename from LiteLoader/Main/Config.cpp rename to LiteLoader/src/liteloader/Config.cpp index 6b46b20..cbd7c73 100644 --- a/LiteLoader/Main/Config.cpp +++ b/LiteLoader/src/liteloader/Config.cpp @@ -1,17 +1,17 @@ #include #include #include -#include -#include
-#include
-#include +#include +#include "liteloader/Config.h" +#include "liteloader/LiteLoader.h" +#include "llapi/LoggerAPI.h" using namespace std; -namespace LL { +namespace ll { LIAPI LLConfig globalConfig; -LIAPI LL::CommandLineOption commandLineOption; +LIAPI ll::CommandLineOption commandLineOption; void inline to_json(nlohmann::json& j, const LLConfig& conf) { // clang-format off @@ -96,7 +96,7 @@ void inline to_json(nlohmann::json& j, const LLConfig& conf) { void inline from_json(const nlohmann::json& j, LLConfig& conf) { conf.debugMode = j.value("DebugMode", false); - if (LL::commandLineOption.noColorOption) + if (ll::commandLineOption.noColorOption) conf.colorLog = false; else conf.colorLog = j.value("ColorLog", true); @@ -207,7 +207,7 @@ void inline from_json(const nlohmann::json& j, LLConfig& conf) { } } } -} // namespace LL +} // namespace ll inline bool SaveConfig(nlohmann::json& config) { std::ofstream of(LITELOADER_CONFIG_FILE); @@ -240,12 +240,12 @@ void ChooseLanguage() { std::cin >> selected; std::cin.ignore(); if (!languages[selected].empty()) { - LL::globalConfig.language = languages[selected]; + ll::globalConfig.language = languages[selected]; } } */ -bool LL::LoadLLConfig() { +bool ll::LoadLLConfig() { try { auto content = ReadAllFile(LITELOADER_CONFIG_FILE); @@ -255,17 +255,17 @@ bool LL::LoadLLConfig() { // ChooseLanguage(); // } filesystem::create_directories(filesystem::path(LITELOADER_CONFIG_FILE).remove_filename().u8string()); - LL::SaveLLConfig(); + ll::SaveLLConfig(); } else { try { auto out = nlohmann::json::parse(*content, nullptr, false, true); - LL::globalConfig = out; - auto config = nlohmann::json(LL::globalConfig); + ll::globalConfig = out; + auto config = nlohmann::json(ll::globalConfig); if (out != config) { logger.warn(tr("ll.config.warning.configOutdated", LITELOADER_CONFIG_FILE)); logger.warn(tr("ll.config.updating")); - LL::globalConfig.language = "system"; - config = nlohmann::json(LL::globalConfig); + ll::globalConfig.language = "system"; + config = nlohmann::json(ll::globalConfig); return SaveConfig(config); } return true; @@ -273,7 +273,7 @@ bool LL::LoadLLConfig() { logger.error("Fail to parse config file <{}> !", LITELOADER_CONFIG_FILE); logger.error("{}", e.what()); logger.error("Using default config file..."); - return LL::SaveLLConfig(); + return ll::SaveLLConfig(); } } } catch (const nlohmann::json::exception& e) { @@ -287,7 +287,7 @@ bool LL::LoadLLConfig() { return true; } -bool LL::SaveLLConfig() { - auto config = nlohmann::json(LL::globalConfig); +bool ll::SaveLLConfig() { + auto config = nlohmann::json(ll::globalConfig); return SaveConfig(config); } diff --git a/LiteLoader/Main/CrashLogger.cpp b/LiteLoader/src/liteloader/CrashLogger.cpp similarity index 89% rename from LiteLoader/Main/CrashLogger.cpp rename to LiteLoader/src/liteloader/CrashLogger.cpp index 86910ea..dfdae2e 100644 --- a/LiteLoader/Main/CrashLogger.cpp +++ b/LiteLoader/src/liteloader/CrashLogger.cpp @@ -1,17 +1,17 @@ -#include "Main/CrashLogger.h" -#include "Main/Config.h" -#include -#include -#include +#include "liteloader/CrashLogger.h" +#include "liteloader/Config.h" +#include "llapi/LoggerAPI.h" +#include +#include #include -#include -#include +#include +#include using namespace std; -using namespace LL; +using namespace ll; Logger crashLogger("CrashLogger"); -bool LL::StartCrashLoggerProcess() { +bool ll::StartCrashLoggerProcess() { if (IsDebuggerPresent()) { crashLogger.info(tr("ll.crashLogger.existsingDebuggerDetected")); return true; @@ -45,7 +45,7 @@ bool LL::StartCrashLoggerProcess() { return true; } -void LL::InitCrashLogger(bool enableCrashLogger) { +void ll::InitCrashLogger(bool enableCrashLogger) { // Enable PreLog Module try { LoadLibrary(CL_PRELOG_MODULE); diff --git a/LiteLoader/Main/LiteLoader.cpp b/LiteLoader/src/liteloader/LiteLoader.cpp similarity index 90% rename from LiteLoader/Main/LiteLoader.cpp rename to LiteLoader/src/liteloader/LiteLoader.cpp index 17224f7..780577b 100644 --- a/LiteLoader/Main/LiteLoader.cpp +++ b/LiteLoader/src/liteloader/LiteLoader.cpp @@ -1,22 +1,29 @@ -#include -#include -#include +#include #include #include -#include -#include -#include + + +#include +#include + #include -#include -#include -#include "Config.h" -#include "Loader.h" -#include "CrashLogger.h" -#include "AddonsHelper.h" -#include -#include "Version.h" -#include "MC/Minecraft.hpp" -#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include using namespace std; @@ -73,7 +80,7 @@ void DecompressResourcePacks() { } void CheckRunningBDS() { - if (!LL::globalConfig.enableCheckRunningBDS) + if (!ll::globalConfig.enableCheckRunningBDS) return; std::vector pids; PROCESSENTRY32 pe32{}; @@ -152,7 +159,7 @@ extern bool InitPlayerDatabase(); extern void RegisterSimpleServerLogger(); void Welcome() { - if (!LL::globalConfig.enableWelcomeText) + if (!ll::globalConfig.enableWelcomeText) return; @@ -177,19 +184,19 @@ void Welcome() { } void CheckDevMode() { - if (LL::globalConfig.debugMode) + if (ll::globalConfig.debugMode) logger.warn(tr("ll.main.warning.inDevMode")); } void CheckBetaVersion() { - if (LITELOADER_VERSION_STATUS != LL::Version::Release) { + if (LITELOADER_VERSION_STATUS != ll::Version::Release) { logger.warn(tr("ll.main.warning.betaVersion")); logger.warn(tr("ll.main.warning.productionEnv")); } } void CheckProtocolVersion() { - auto currentProtocol = LL::getServerProtocolVersion(); + auto currentProtocol = ll::getServerProtocolVersion(); if (TARGET_BDS_PROTOCOL_VERSION != currentProtocol) { logger.warn(tr("ll.main.warning.protocolVersionNotMatch.1"), TARGET_BDS_PROTOCOL_VERSION, currentProtocol); logger.warn(tr("ll.main.warning.protocolVersionNotMatch.2")); @@ -250,7 +257,7 @@ void LLMain() { auto i18n = Translation::load("plugins/LiteLoader/LangPack/"); // Load Config - LL::LoadLLConfig(); + ll::LoadLLConfig(); //Unzip packed Node Modules UnzipNodeModules(); @@ -259,12 +266,12 @@ void LLMain() { DecompressResourcePacks(); // If SEH Protection is not enabled (Debug mode), restore old SE translator - if (!LL::isDebugMode()) + if (!ll::isDebugMode()) _set_se_translator(oldSeTranslator); // Update default language - if (i18n && LL::globalConfig.language != "system") { - i18n->defaultLocaleName = LL::globalConfig.language; + if (i18n && ll::globalConfig.language != "system") { + i18n->defaultLocaleName = ll::globalConfig.language; } // Check Protocol Version @@ -284,14 +291,14 @@ void LLMain() { CheckRunningBDS(); // Builtin CrashLogger - LL::InitCrashLogger(LL::globalConfig.enableCrashLogger); + ll::InitCrashLogger(ll::globalConfig.enableCrashLogger); // Initialize Player Database InitPlayerDatabase(); // Rename Window HWND hwnd = GetConsoleWindow(); - std::wstring s = L"Bedrock Dedicated Server " + str2wstr(LL::getBdsVersion().substr(1)); + std::wstring s = L"Bedrock Dedicated Server " + str2wstr(ll::getBdsVersion().substr(1)); SetWindowText(hwnd, s.c_str()); // Register Exit Event Handler. @@ -306,12 +313,12 @@ void LLMain() { CheckDevMode(); // Addon Helper - if (LL::globalConfig.enableAddonsHelper) { + if (ll::globalConfig.enableAddonsHelper) { InitAddonsHelper(); } // Load plugins - LL::LoadMain(); + ll::LoadMain(); // Register built-in commands RegisterCommands(); @@ -344,7 +351,7 @@ THook(int, "main", int a, void* b) { char** str = static_cast(b); for (int i = 0; i < a; ++i) { if (strcmp(str[i], "--noColor") == 0) { - LL::commandLineOption.noColorOption = true; + ll::commandLineOption.noColorOption = true; break; } } diff --git a/LiteLoader/Main/Loader.cpp b/LiteLoader/src/liteloader/Loader.cpp similarity index 93% rename from LiteLoader/Main/Loader.cpp rename to LiteLoader/src/liteloader/Loader.cpp index b0612cf..4dec0c9 100644 --- a/LiteLoader/Main/Loader.cpp +++ b/LiteLoader/src/liteloader/Loader.cpp @@ -1,23 +1,23 @@ - #include
-#include +#include "liteloader/Loader.h" +#include #include #include #include -#include -#include -#include
-#include
-#include -#include -#include -#include -#include -#include -#include "Config.h" -#include "Version.h" -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using namespace std; @@ -192,7 +192,7 @@ void LoadParticleAPI() { } -void LL::LoadMain() { +void ll::LoadMain() { logger.info(tr("ll.loader.loadMain.start")); CleanOldScriptEngine(); @@ -263,7 +263,7 @@ void LL::LoadMain() { } if (PluginManager::getPlugin(lib) == nullptr) { - if (!RegisterPlugin(lib, pluginFileName, pluginFileName, LL::Version(1, 0, 0), {})) { + if (!RegisterPlugin(lib, pluginFileName, pluginFileName, ll::Version(1, 0, 0), {})) { logger.error(tr("ll.pluginManager.error.failToRegisterPlugin", UTF82String(path.u8string()))); if (getPlugin(pluginFileName)) { logger.error(tr("ll.pluginManager.error.hasBeenRegistered", pluginFileName)); @@ -283,22 +283,22 @@ void LL::LoadMain() { } // Load PermissionAPI - if(LL::globalConfig.enablePermissionAPI) { + if(ll::globalConfig.enablePermissionAPI) { if (filesystem::exists("plugins/LiteLoader/PermissionAPI.dll")) { LoadPermissionAPI(); } } - if(LL::globalConfig.enableParticleAPI) { + if(ll::globalConfig.enableParticleAPI) { if (filesystem::exists("plugins/LiteLoader/ParticleAPI.dll")) { LoadParticleAPI(); } } // Load ScriptEngine - if (LL::globalConfig.enableScriptEngine) { + if (ll::globalConfig.enableScriptEngine) { InitNodeJsDirectories(); - if (LL::globalConfig.alwaysLaunchScriptEngine || IsExistNodeJsPlugin() || IsExistScriptPlugin()) { + if (ll::globalConfig.alwaysLaunchScriptEngine || IsExistNodeJsPlugin() || IsExistScriptPlugin()) { LoadScriptEngine(); } } diff --git a/LiteLoader/Main/ModifyInfomation.cpp b/LiteLoader/src/liteloader/ModifyInfomation.cpp similarity index 87% rename from LiteLoader/Main/ModifyInfomation.cpp rename to LiteLoader/src/liteloader/ModifyInfomation.cpp index c3ca1b1..b8428e5 100644 --- a/LiteLoader/Main/ModifyInfomation.cpp +++ b/LiteLoader/src/liteloader/ModifyInfomation.cpp @@ -1,17 +1,17 @@ -#include -#include -#include -#include +#include +#include +#include +#include #include #include -#include "Main/Config.h" +#include using namespace std; Logger serverLogger("Server"); extern void CheckBetaVersion(); THook(std::string, "?getServerVersionString@Common@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ") { CheckBetaVersion(); - return original() + "(ProtocolVersion " + to_string(LL::getServerProtocolVersion()) + ") with " + fmt::format(LL::globalConfig.colorLog ? fg(fmt::color::light_sky_blue) | fmt::emphasis::bold | fmt::emphasis::italic : fmt::text_style(), "LiteLoaderBDS " + LL::getLoaderVersion().toString(true)); + return original() + "(ProtocolVersion " + to_string(ll::getServerProtocolVersion()) + ") with " + fmt::format(ll::globalConfig.colorLog ? fg(fmt::color::light_sky_blue) | fmt::emphasis::bold | fmt::emphasis::italic : fmt::text_style(), "LiteLoaderBDS " + ll::getLoaderVersion().toString(true)); } @@ -55,8 +55,8 @@ THook(void, "?PlatformBedrockLogOut@@YAXIPEBD@Z", int a1, const char* ts) { // return; // } -#include "LiteLoader.h" -#include +#include +#include namespace ModifyInfomation { int telemetryText = 0; } @@ -80,9 +80,9 @@ THook(void, "?log@BedrockLog@@YAXW4LogCategory@1@V?$bitset@$02@std@@W4LogRule@1@ return BedrockLog::log_va(a1, a2, a3, a4, a5, a6, a7, a8, va); } -#include -#include -#include +#include +#include +#include extern std::unordered_map resultOfOrigin; TClasslessInstanceHook(void*, "?send@CommandOutputSender@@UEAAXAEBVCommandOrigin@@AEBVCommandOutput@@@Z", class CommandOrigin const& origin, class CommandOutput const& output) { @@ -91,7 +91,7 @@ TClasslessInstanceHook(void*, "?send@CommandOutputSender@@UEAAXAEBVCommandOrigin std::cout.rdbuf(&tmpBuf); auto rv = original(this, origin, output); std::cout.rdbuf(oldBuf); - if (LL::isDebugMode() && LL::globalConfig.tickThreadId != std::this_thread::get_id()) { + if (ll::isDebugMode() && ll::globalConfig.tickThreadId != std::this_thread::get_id()) { logger.warn("The thread executing the CommandOutputSender::send is not the \"MC_SERVER\" thread"); logger.warn("Output: {}", tmpBuf.str()); } @@ -107,7 +107,7 @@ TClasslessInstanceHook(void*, "?send@CommandOutputSender@@UEAAXAEBVCommandOrigin resultOfOrigin.erase(it); return rv; } catch (...) { - if (LL::isDebugMode()) { + if (ll::isDebugMode()) { logger.warn("Output: {}", tmpBuf.str()); logger.warn("size of resultOfOrigin: {}", resultOfOrigin.size()); } @@ -120,7 +120,7 @@ TClasslessInstanceHook(void*, "?send@CommandOutputSender@@UEAAXAEBVCommandOrigin std::istringstream iss(tmpBuf.str()); string line; while (getline(iss, line)) { - if (LL::globalConfig.colorLog) + if (ll::globalConfig.colorLog) log << ColorFormat::convertToConsole(line, false) << Logger::endl; else log << ColorFormat::removeColorCode(line) << Logger::endl; diff --git a/LiteLoader/Main/ModifyPack.cpp b/LiteLoader/src/liteloader/ModifyPack.cpp similarity index 100% rename from LiteLoader/Main/ModifyPack.cpp rename to LiteLoader/src/liteloader/ModifyPack.cpp diff --git a/LiteLoader/Main/PluginManager.cpp b/LiteLoader/src/liteloader/PluginManager.cpp similarity index 87% rename from LiteLoader/Main/PluginManager.cpp rename to LiteLoader/src/liteloader/PluginManager.cpp index 548836e..41c6393 100644 --- a/LiteLoader/Main/PluginManager.cpp +++ b/LiteLoader/src/liteloader/PluginManager.cpp @@ -1,24 +1,24 @@ -#include "Main/PluginManager.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "llapi/I18nAPI.h" +#include +#include +#include #include #include -#include "../ScriptEngine/Main/Configs.h" +#include using namespace std; extern Logger logger; -std::unordered_map plugins; +std::unordered_map plugins; -bool LL::PluginManager::registerPlugin(HMODULE handle, std::string name, std::string desc, LL::Version version, +bool ll::PluginManager::registerPlugin(HMODULE handle, std::string name, std::string desc, ll::Version version, std::map others) { if (handle != nullptr) // DLL Plugin { @@ -31,7 +31,7 @@ bool LL::PluginManager::registerPlugin(HMODULE handle, std::string name, std::st } } - LL::Plugin plugin{name, desc, version, others}; + ll::Plugin plugin{name, desc, version, others}; plugin.handle = handle; try { plugin.type = others.at("PluginType") == "Script Plugin" ? Plugin::PluginType::ScriptPlugin : Plugin::PluginType::DllPlugin; @@ -52,7 +52,7 @@ bool LL::PluginManager::registerPlugin(HMODULE handle, std::string name, std::st return true; } -bool LL::PluginManager::unRegisterPlugin(std::string name) { +bool ll::PluginManager::unRegisterPlugin(std::string name) { auto plugin = getPlugin(name); if (plugin == nullptr) { return false; @@ -63,10 +63,10 @@ bool LL::PluginManager::unRegisterPlugin(std::string name) { } // Helper -LL::Plugin* GetPlugin_Raw(std::string name, bool includeScriptPlugin) { +ll::Plugin* GetPlugin_Raw(std::string name, bool includeScriptPlugin) { for (auto& it : plugins) { if (it.second.name == name || UTF82String(filesystem::path(str2wstr(it.second.filePath)).filename().u8string()) == name) { - if (!includeScriptPlugin && it.second.type == LL::Plugin::PluginType::ScriptPlugin) + if (!includeScriptPlugin && it.second.type == ll::Plugin::PluginType::ScriptPlugin) continue; return &it.second; } @@ -74,7 +74,7 @@ LL::Plugin* GetPlugin_Raw(std::string name, bool includeScriptPlugin) { return nullptr; } -LL::Plugin* LL::PluginManager::getPlugin(std::string name, bool includeScriptPlugin) { +ll::Plugin* ll::PluginManager::getPlugin(std::string name, bool includeScriptPlugin) { auto res = GetPlugin_Raw(name, includeScriptPlugin); if (res) return res; @@ -90,7 +90,7 @@ LL::Plugin* LL::PluginManager::getPlugin(std::string name, bool includeScriptPlu return nullptr; } -LL::Plugin* LL::PluginManager::getPlugin(HMODULE handle) { +ll::Plugin* ll::PluginManager::getPlugin(HMODULE handle) { if (!handle) return nullptr; @@ -102,12 +102,12 @@ LL::Plugin* LL::PluginManager::getPlugin(HMODULE handle) { return nullptr; } -bool LL::PluginManager::hasPlugin(std::string name, bool includeScriptPlugin) { +bool ll::PluginManager::hasPlugin(std::string name, bool includeScriptPlugin) { return getPlugin(name, includeScriptPlugin) != nullptr; } -std::unordered_map LL::PluginManager::getAllPlugins(bool includeScriptPlugin) { - std::unordered_map res; +std::unordered_map ll::PluginManager::getAllPlugins(bool includeScriptPlugin) { + std::unordered_map res; for (auto& [k, v] : plugins) { if (!includeScriptPlugin && v.type == Plugin::PluginType::ScriptPlugin) continue; @@ -116,8 +116,8 @@ std::unordered_map LL::PluginManager::getAllPlugins(bo return res; } -bool LL::PluginManager::loadPlugin(string pluginFilePath, bool outputResult, bool isHotLoad) { - // if (!LL::isDebugMode()) +bool ll::PluginManager::loadPlugin(string pluginFilePath, bool outputResult, bool isHotLoad) { + // if (!ll::isDebugMode()) // return false; try { filesystem::path path(filesystem::path(str2wstr(pluginFilePath)).lexically_normal()); @@ -179,7 +179,7 @@ bool LL::PluginManager::loadPlugin(string pluginFilePath, bool outputResult, boo auto lib = LoadLibrary(str2wstr(pluginFilePath).c_str()); if (lib) { if (getPlugin(lib) == nullptr) { - if (!RegisterPlugin(lib, pluginFileName, pluginFileName, LL::Version(1, 0, 0), {})) { + if (!RegisterPlugin(lib, pluginFileName, pluginFileName, ll::Version(1, 0, 0), {})) { logger.error(tr("ll.pluginManager.error.failToRegisterPlugin", pluginFilePath)); if (getPlugin(pluginFileName)) { logger.error(tr("ll.pluginManager.error.hasBeenRegistered", pluginFileName)); @@ -240,11 +240,11 @@ bool LL::PluginManager::loadPlugin(string pluginFilePath, bool outputResult, boo } } -bool LL::PluginManager::unloadPlugin(string pluginName, bool outputResult) { - // if (!LL::isDebugMode()) +bool ll::PluginManager::unloadPlugin(string pluginName, bool outputResult) { + // if (!ll::isDebugMode()) // return false; try { - LL::Plugin* plugin = getPlugin(pluginName); + ll::Plugin* plugin = getPlugin(pluginName); if (!plugin) { if (outputResult) { logger.error(tr("ll.pluginManager.error.pluginNotFound")); @@ -284,11 +284,11 @@ bool LL::PluginManager::unloadPlugin(string pluginName, bool outputResult) { } } -bool LL::PluginManager::reloadPlugin(string pluginName, bool outputResult) { - // if (!LL::isDebugMode()) +bool ll::PluginManager::reloadPlugin(string pluginName, bool outputResult) { + // if (!ll::isDebugMode()) // return false; try { - LL::Plugin* plugin = getPlugin(pluginName); + ll::Plugin* plugin = getPlugin(pluginName); if (!plugin) { if (outputResult) { logger.error(tr("ll.pluginManager.error.pluginNotFound")); @@ -327,8 +327,8 @@ bool LL::PluginManager::reloadPlugin(string pluginName, bool outputResult) { } } -int LL::PluginManager::reloadAllPlugins(bool outputResult) { - // if (!LL::isDebugMode()) +int ll::PluginManager::reloadAllPlugins(bool outputResult) { + // if (!ll::isDebugMode()) // return false; try { auto plugins = getAllPlugins(true); @@ -367,8 +367,8 @@ int LL::PluginManager::reloadAllPlugins(bool outputResult) { } } -bool LL::PluginManager::callEventAtHotLoad(std::string pluginName) { - // if (!LL::isDebugMode()) +bool ll::PluginManager::callEventAtHotLoad(std::string pluginName) { + // if (!ll::isDebugMode()) // return false; Schedule::nextTick([pluginName]() { Event::ServerStartedEvent().callToPlugin(pluginName); // ServerStartedEvent @@ -395,8 +395,8 @@ bool LL::PluginManager::callEventAtHotLoad(std::string pluginName) { return true; } -bool LL::PluginManager::callEventAtHotUnload(std::string pluginName) { - // if (!LL::isDebugMode()) +bool ll::PluginManager::callEventAtHotUnload(std::string pluginName) { + // if (!ll::isDebugMode()) // return false; auto players = Level::getAllPlayers(); for (auto& pl : players) // PlayerLeftEvent @@ -412,9 +412,9 @@ bool LL::PluginManager::callEventAtHotUnload(std::string pluginName) { } // Helper -LIAPI bool RegisterPlugin(HMODULE handle, std::string name, std::string desc, LL::Version version, +LIAPI bool RegisterPlugin(HMODULE handle, std::string name, std::string desc, ll::Version version, std::map others) { others["PluginType"] = "DLL Plugin"; others["PluginFilePath"] = handle ? GetModulePath(handle) : name; - return LL::PluginManager::registerPlugin(handle, name, desc, version, others); + return ll::PluginManager::registerPlugin(handle, name, desc, version, others); } \ No newline at end of file diff --git a/LiteLoader/Main/SEHProtection.cpp b/LiteLoader/src/liteloader/SEHProtection.cpp similarity index 92% rename from LiteLoader/Main/SEHProtection.cpp rename to LiteLoader/src/liteloader/SEHProtection.cpp index 3bfa4ea..d6e3a25 100644 --- a/LiteLoader/Main/SEHProtection.cpp +++ b/LiteLoader/src/liteloader/SEHProtection.cpp @@ -1,8 +1,8 @@ -#include -#include +#include +#include #include -#include -#include +#include +#include #include #include #include diff --git a/LiteLoader/Main/SimpleServerLogger.cpp b/LiteLoader/src/liteloader/SimpleServerLogger.cpp similarity index 76% rename from LiteLoader/Main/SimpleServerLogger.cpp rename to LiteLoader/src/liteloader/SimpleServerLogger.cpp index 39078b6..83573c0 100644 --- a/LiteLoader/Main/SimpleServerLogger.cpp +++ b/LiteLoader/src/liteloader/SimpleServerLogger.cpp @@ -1,16 +1,16 @@ -#include -#include -#include -#include
-#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include using namespace Event; void RegisterSimpleServerLogger() { - if (LL::globalConfig.enableSimpleServerLogger) { + if (ll::globalConfig.enableSimpleServerLogger) { Event::PlayerChatEvent::subscribe([](const Event::PlayerChatEvent& ev) { static Logger logger("Chat"); logger.info("<{}> {}", ev.mPlayer->getRealName(), ev.mMessage); @@ -24,10 +24,11 @@ void RegisterSimpleServerLogger() { } } -#include +#include +#include TInstanceHook(void, "?setPermissions@ServerPlayer@@UEAAXW4CommandPermissionLevel@@@Z", Player, CommandPermissionLevel perm) { - if (LL::globalConfig.enableSimpleServerLogger) { + if (ll::globalConfig.enableSimpleServerLogger) { static Logger logger("Permissions"); logger.info("<{}> {}({}) -> {}({})", getRealName(), magic_enum::enum_name(getCommandPermissionLevel()), (int)getCommandPermissionLevel(), magic_enum::enum_name(perm), (int)perm); @@ -36,7 +37,7 @@ TInstanceHook(void, "?setPermissions@ServerPlayer@@UEAAXW4CommandPermissionLevel } // ==> LiteLoader/Main/BuiltinUnlockCmd.cpp -#include +#include void LogCommandRegistration(std::string const& name, char const* description, enum CommandPermissionLevel perm, short flag1, short flag2) { static Logger logger("RegsterCommand"); logger.consoleLevel = logger.debug.level; diff --git a/LiteLoader/Main/dllmain.cpp b/LiteLoader/src/liteloader/dllmain.cpp similarity index 97% rename from LiteLoader/Main/dllmain.cpp rename to LiteLoader/src/liteloader/dllmain.cpp index 8f65092..265ac9b 100644 --- a/LiteLoader/Main/dllmain.cpp +++ b/LiteLoader/src/liteloader/dllmain.cpp @@ -7,7 +7,7 @@ #pragma comment(linker, "/export:?dlsym_reverse@@YA?AV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@H@Z=LLPreLoader.?dlsym_reverse@@YA?AV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@H@Z") -#include +#include BOOL WINAPI DllMain(HMODULE, DWORD ul_reason_for_call, LPVOID) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: diff --git a/LiteLoader/Kernel/AllowListAPI.cpp b/LiteLoader/src/llapi/AllowListAPI.cpp similarity index 100% rename from LiteLoader/Kernel/AllowListAPI.cpp rename to LiteLoader/src/llapi/AllowListAPI.cpp diff --git a/LiteLoader/Kernel/Compatibility.cpp b/LiteLoader/src/llapi/Compatibility.cpp similarity index 97% rename from LiteLoader/Kernel/Compatibility.cpp rename to LiteLoader/src/llapi/Compatibility.cpp index dd17511..dd11390 100644 --- a/LiteLoader/Kernel/Compatibility.cpp +++ b/LiteLoader/src/llapi/Compatibility.cpp @@ -1,7 +1,7 @@ #include -#include -#include -#include +#include +#include +#include extern Logger logger; LIAPI void OutputEventError(const std::string& errorMsg, const std::string& eventName, const std::string& pluginName) { diff --git a/LiteLoader/Kernel/EventAPI.cpp b/LiteLoader/src/llapi/EventAPI.cpp similarity index 95% rename from LiteLoader/Kernel/EventAPI.cpp rename to LiteLoader/src/llapi/EventAPI.cpp index d3e517b..97bca2f 100644 --- a/LiteLoader/Kernel/EventAPI.cpp +++ b/LiteLoader/src/llapi/EventAPI.cpp @@ -1,67 +1,67 @@ -#include
-#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -// #include -// #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +// #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // #include -#include -#include -#include +#include +#include +#include #include #include #include #include #include #include -#include -#include -#include -// #include -#include -#include -#include -#include -#include -#include -// #include -#include -#include -#include +#include +#include +#include +// #include +#include +#include +#include +#include +#include +#include +// #include +#include +#include +#include static_assert(offsetof(InventoryAction, source) == 0x0); static_assert(offsetof(InventoryAction, slot) == 0x0c); @@ -133,7 +133,7 @@ inline void OutputError(std::string errorMsg, int errorCode, std::string errorWh logger.error("Error: Code [{}] {}", errorCode, errorWhat); logger.error("In Event ({})", eventName); if (!pluginName.empty()) { - auto plugin = LL::getPlugin(pluginName); + auto plugin = ll::getPlugin(pluginName); if (plugin) { logger.error("In Plugin <{} {}>", plugin->name, plugin->version.toString()); } else { @@ -586,7 +586,7 @@ TInstanceHook(void, "?onEffectRemoved@ServerPlayer@@MEAAXAEAVMobEffectInstance@@ } /////////////////// PlayerPlaceBlock /////////////////// -#include +#include // 符号变更 TInstanceHook(char, "?checkBlockPermissions@BlockSource@@QEAA_NAEAVActor@@AEBVBlockPos@@EAEBVItemStack@@_N@Z", BlockSource, Actor* ac, BlockPos* bp, unsigned __int8 facing, ItemStackBase* item, bool a6) { @@ -621,8 +621,8 @@ TClasslessInstanceHook(void, "?sendBlockPlacedByPlayer@BlockEventCoordinator@@QE } /* -#include -#include +#include +#include TInstanceHook(bool, "?_useOn@BlockItem@@MEBA_NAEAVItemStack@@AEAVActor@@VBlockPos@@EAEBVVec3@@@Z", Item, ItemStack* a2, Actor* ac, BlockPos* a4, unsigned __int8 a5, class Vec3* a6) { @@ -869,7 +869,7 @@ TInstanceHook(bool, "?_calculatePlacePos@SignItem@@EEBA_NAEAVItemStackBase@@AEAV // return original(a1, a2, a3, a4, a5, a6); //} -#include +#include TInstanceHook(bool, "?useOn@SeedItemComponentLegacy@@QEAA_NAEAVItemStack@@AEAVActor@@AEBVBlockPos@@EAEBVVec3@@@Z", SeedItemComponentLegacy, ItemStack* a2, Actor* a3, BlockPos const* a4, unsigned char a5, Vec3 const* a6) { @@ -996,8 +996,8 @@ TInstanceHook(void, "?setSprinting@Mob@@UEAAX_N@Z", IF_LISTENED_END(PlayerSprintEvent) return original(this, sprinting); } -#include -#include +#include +#include /////////////////// PlayerSetArmor /////////////////// TInstanceHook(void, "?setArmor@Player@@UEAAXW4ArmorSlot@@AEBVItemStack@@@Z", Player, unsigned slot, ItemStack* it) { @@ -1071,7 +1071,7 @@ TInstanceHook(bool, "?canOpenContainerScreen@Player@@UEAA_NXZ", Player) { return rtn; } - if (LL::isDebugMode() && LL::globalConfig.tickThreadId != std::this_thread::get_id()) { + if (ll::isDebugMode() && ll::globalConfig.tickThreadId != std::this_thread::get_id()) { logger.warn("The thread executing the command \"{}\" is not the \"MC_SERVER\" thread", cmd); } if (sp) { @@ -1238,7 +1238,7 @@ TClasslessInstanceHook(bool, "?mayPlace@FireBlock@@UEBA_NAEAVBlockSource@@AEBVBl /////////////////// ContainerChange /////////////////// -// #include +// #include // TInstanceHook(void, "?_onItemChanged@LevelContainerModel@@MEAAXHAEBVItemStack@@0@Z", // LevelContainerModel, int slotNumber, ItemStack* oldItem, ItemStack* newItem) { @@ -1469,7 +1469,7 @@ TClasslessInstanceHook(bool, "?attack@ItemFrameBlock@@UEBA_NPEAVPlayer@@AEBVBloc } /////////////////// LiquidSpreadEvent /////////////////// -#include +#include TInstanceHook(bool, "?_canSpreadTo@LiquidBlockDynamic@@AEBA_NAEAVBlockSource@@AEBVBlockPos@@1E@Z", LiquidBlockDynamic, class BlockSource& bs, class BlockPos const& to, class BlockPos const& from, unsigned char unk) { auto rtn = original(this, bs, to, from, unk); @@ -1527,7 +1527,7 @@ TInstanceHook(void*, "?die@ServerPlayer@@UEAAXAEBVActorDamageSource@@@Z", Server return out; } -#include +#include /////////////////// PlayerDestroy /////////////////// // TInstanceHook(bool, "?destroyBlock@SurvivalMode@@UEAA_NAEBVBlockPos@@E@Z", @@ -1625,7 +1625,7 @@ TInstanceHook(bool, "?useItemOn@GameMode@@UEAA_NAEAVItemStack@@AEBVBlockPos@@EAE // } //////////////// PlayerUseItem & PlayerEat //////////////// -// #include +// #include TInstanceHook(bool, "?baseUseItem@GameMode@@QEAA_NAEAVItemStack@@@Z", GameMode, ItemStack& it) { auto pl = this->getPlayer(); IF_LISTENED(PlayerUseItemEvent) { @@ -1867,8 +1867,8 @@ THook(void, "?destroyBlocks@@YAXAEAVLevel@@AEBVAABB@@AEAVBlockSource@@H@Z", // return projectile; // } -// #include -#include +// #include +#include // static_assert(sizeof(ActorDefinitionIdentifier) == 176); // TInstanceHook(void, "?_shootFirework@CrossbowItem@@AEBAXAEBVItemInstance@@AEAVPlayer@@@Z", // CrossbowItem, void* a1, Player* a2) { @@ -1902,8 +1902,8 @@ THook(void, "?destroyBlocks@@YAXAEAVLevel@@AEBVAABB@@AEAVBlockSource@@H@Z", // return original(this, a2, a3, a4); // } -// #include -// #include +// #include +// #include ////////////// NpcCmd ////////////// // TInstanceHook(void, @@ -1991,19 +1991,19 @@ TClasslessInstanceHook(void, "?onScoreChanged@ServerScoreboard@@UEAAXAEBUScorebo } -#include +#include ////////////// ServerStarted ////////////// // 没有这个符号 TClasslessInstanceHook(void, "?onServerThreadStarted@MinecraftServerScriptEngine@@UEAA?AW4EventResult@@AEAVServerInstance@@@Z", class ServerInstance& ins) { - if(!LL::isDebugMode()) + if(!ll::isDebugMode()) _set_se_translator(seh_exception::TranslateSEHtoCE); - LL::globalConfig.tickThreadId = std::this_thread::get_id(); + ll::globalConfig.tickThreadId = std::this_thread::get_id(); Global = Global->getLevel(); Global = (ServerLevel*)Global->getLevel(); // Global = Global->getServerNetworkHandler(); - LL::globalConfig.serverStatus = LL::LLServerStatus::Running; + ll::globalConfig.serverStatus = ll::LLServerStatus::Running; IF_LISTENED(ServerStartedEvent) { ServerStartedEvent ev{}; @@ -2016,7 +2016,7 @@ TClasslessInstanceHook(void, "?onScoreChanged@ServerScoreboard@@UEAAXAEBUScorebo ////////////// ServerStopped ////////////// TClasslessInstanceHook(void, "??1DedicatedServer@@UEAA@XZ") { - LL::globalConfig.serverStatus = LL::LLServerStatus::Stopping; + ll::globalConfig.serverStatus = ll::LLServerStatus::Stopping; IF_LISTENED(ServerStoppedEvent) { ServerStoppedEvent ev{}; @@ -2027,7 +2027,7 @@ TClasslessInstanceHook(void, "??1DedicatedServer@@UEAA@XZ") { } TClasslessInstanceHook(void, "?execute@StopCommand@@UEBAXAEBVCommandOrigin@@AEAVCommandOutput@@@Z", class CommandOrigin const& origin, class CommandOutput& output) { - LL::globalConfig.serverStatus = LL::LLServerStatus::Stopping; + ll::globalConfig.serverStatus = ll::LLServerStatus::Stopping; original(this, origin, output); } @@ -2128,7 +2128,7 @@ TInstanceHook(int, "?startSleepInBed@Player@@UEAA?AW4BedSleepingResult@@AEBVBloc return original(this, blk); } -#include +#include ////////////// MobSpawn ////////////// TInstanceHook(Mob*, "?spawnMob@Spawner@@QEAAPEAVMob@@AEAVBlockSource@@AEBUActorDefinitionIdentifier@@PEAVActor@@AEBVVec3@@_N44@Z", @@ -2145,9 +2145,9 @@ TInstanceHook(int, "?startSleepInBed@Player@@UEAA?AW4BedSleepingResult@@AEBVBloc return original(this, a2, a3, a4, a5, a6, a7, a8); } -#include "Impl/FormPacketHelper.h" -#include -#include +#include +#include +#include ////////////// FormResponsePacket ////////////// TClasslessInstanceHook(void, "?handle@?$PacketHandlerDispatcherInstance@VModalFormResponsePacket@@$0A@@@UEBAXAEBVNetworkIdentifier@@AEAVNetEventCallback@@AEAV?$shared_ptr@VPacket@@@std@@@Z", diff --git a/LiteLoader/Kernel/FormPacketHelper.cpp b/LiteLoader/src/llapi/FormPacketHelper.cpp similarity index 94% rename from LiteLoader/Kernel/FormPacketHelper.cpp rename to LiteLoader/src/llapi/FormPacketHelper.cpp index 8f5f023..4165438 100644 --- a/LiteLoader/Kernel/FormPacketHelper.cpp +++ b/LiteLoader/src/llapi/FormPacketHelper.cpp @@ -1,17 +1,17 @@ -#include -#include -#include -#include +#include +#include +#include +#include -#include +#include #include -#include -#include
+#include +#include -#include -#include -#include -#include +#include +#include +#include +#include using namespace std; diff --git a/LiteLoader/Kernel/FormUI.cpp b/LiteLoader/src/llapi/FormUI.cpp similarity index 97% rename from LiteLoader/Kernel/FormUI.cpp rename to LiteLoader/src/llapi/FormUI.cpp index f3d6da2..ea306fe 100644 --- a/LiteLoader/Kernel/FormUI.cpp +++ b/LiteLoader/src/llapi/FormUI.cpp @@ -1,14 +1,14 @@ -#include +#include #include #include -#include +#include -#include -#include -#include -#include
+#include +#include +#include +#include #include -#include +#include using namespace std; diff --git a/LiteLoader/Kernel/I18nAPI.cpp b/LiteLoader/src/llapi/I18nAPI.cpp similarity index 97% rename from LiteLoader/Kernel/I18nAPI.cpp rename to LiteLoader/src/llapi/I18nAPI.cpp index 2086e4f..448e581 100644 --- a/LiteLoader/Kernel/I18nAPI.cpp +++ b/LiteLoader/src/llapi/I18nAPI.cpp @@ -1,6 +1,8 @@ -#include -#include -#include
+#include +#include +#include +#include + using namespace std; namespace fs = std::filesystem; @@ -241,7 +243,14 @@ I18nBase* loadFromImpl(HMODULE hPlugin, HMODULE hTarget) { ///////////////////////////// Encoding-CodePage Map ///////////////////////////// +#ifdef UNICODE +#include +#define UNICODE +#else +#include +#endif #undef UNICODE + namespace TextEncoding { const std::unordered_map Encoding_CodePage_Map = { {Encoding::ISO_8859_1, 28591}, diff --git a/LiteLoader/Kernel/KVDBAPI.cpp b/LiteLoader/src/llapi/KVDBAPI.cpp similarity index 96% rename from LiteLoader/Kernel/KVDBAPI.cpp rename to LiteLoader/src/llapi/KVDBAPI.cpp index bc7fa83..3afd661 100644 --- a/LiteLoader/Kernel/KVDBAPI.cpp +++ b/LiteLoader/src/llapi/KVDBAPI.cpp @@ -1,8 +1,8 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include Logger levelDBLogger("LevelDB"); diff --git a/LiteLoader/Kernel/LLAPI.cpp b/LiteLoader/src/llapi/LLAPI.cpp similarity index 60% rename from LiteLoader/Kernel/LLAPI.cpp rename to LiteLoader/src/llapi/LLAPI.cpp index af17572..842f286 100644 --- a/LiteLoader/Kernel/LLAPI.cpp +++ b/LiteLoader/src/llapi/LLAPI.cpp @@ -1,16 +1,16 @@ #pragma comment(lib, "version") -#include
-#include -#include
-#include -#include -#include
+#include +#include +#include +#include +#include +#include #include #include using namespace std; -std::string LL::getDataPath(const std::string& pluginName) { +std::string ll::getDataPath(const std::string& pluginName) { string dataPath = "plugins\\LiteLoader\\" + pluginName; if (!filesystem::exists(str2wstr(dataPath))) { std::error_code ec; @@ -19,53 +19,53 @@ std::string LL::getDataPath(const std::string& pluginName) { return dataPath; } -std::string LL::getLoaderVersionString() { +std::string ll::getLoaderVersionString() { return getLoaderVersion().toString(); } -LL::Version LL::getLoaderVersion() { - return Version(LITELOADER_VERSION_MAJOR, LITELOADER_VERSION_MINOR, LITELOADER_VERSION_REVISION, (LL::Version::Status)LITELOADER_VERSION_STATUS); +ll::Version ll::getLoaderVersion() { + return Version(LITELOADER_VERSION_MAJOR, LITELOADER_VERSION_MINOR, LITELOADER_VERSION_REVISION, (ll::Version::Status)LITELOADER_VERSION_STATUS); } -bool LL::isDebugMode() { - return LL::globalConfig.debugMode; +bool ll::isDebugMode() { + return ll::globalConfig.debugMode; } -LL::Plugin* LL::getPlugin(std::string name) { +ll::Plugin* ll::getPlugin(std::string name) { return PluginManager::getPlugin(name); } -LL::Plugin* LL::getPlugin(HMODULE handle) { +ll::Plugin* ll::getPlugin(HMODULE handle) { return PluginManager::getPlugin(handle); } -bool LL::hasPlugin(std::string name) { +bool ll::hasPlugin(std::string name) { return PluginManager::hasPlugin(name); } -std::unordered_map LL::getAllPlugins() { +std::unordered_map ll::getAllPlugins() { return PluginManager::getAllPlugins(); } -HMODULE LL::getLoaderHandle() { +HMODULE ll::getLoaderHandle() { return GetCurrentModule(); } // Version -LL::Version::Version(int major, int minor, int revision, Status status) +ll::Version::Version(int major, int minor, int revision, Status status) : major(major), minor(minor), revision(revision), status(status) { } -bool LL::Version::operator<(LL::Version b) { +bool ll::Version::operator<(ll::Version b) { return major < b.major || (major == b.major && minor < b.minor) || (major == b.major && minor == b.minor && revision < b.revision); } -bool LL::Version::operator==(LL::Version b) { +bool ll::Version::operator==(ll::Version b) { return major == b.major && minor == b.minor && revision == b.revision; } -std::string LL::Version::toString(bool needStatus) { +std::string ll::Version::toString(bool needStatus) { string res = to_string(major) + "." + to_string(minor) + "." + to_string(revision); if (needStatus) { if (status == Status::Beta) @@ -77,7 +77,7 @@ std::string LL::Version::toString(bool needStatus) { } -LL::Version LL::Version::parse(const std::string& str) { +ll::Version ll::Version::parse(const std::string& str) { Version ver; std::string a = str; std::string status; @@ -106,18 +106,18 @@ LL::Version LL::Version::parse(const std::string& str) { return ver; } -LL::ServerStatus LL::getServerStatus() { - return (LL::ServerStatus)(LL::globalConfig.serverStatus); +ll::ServerStatus ll::getServerStatus() { + return (ll::ServerStatus)(ll::globalConfig.serverStatus); } -bool LL::isServerStarting() { - return getServerStatus() == LL::ServerStatus::Starting; +bool ll::isServerStarting() { + return getServerStatus() == ll::ServerStatus::Starting; } -bool LL::isServerStopping() { - return getServerStatus() == LL::ServerStatus::Stopping; +bool ll::isServerStopping() { + return getServerStatus() == ll::ServerStatus::Stopping; } -std::string LL::getLanguage() { - return LL::globalConfig.language; +std::string ll::getLanguage() { + return ll::globalConfig.language; } \ No newline at end of file diff --git a/LiteLoader/Kernel/LoggerAPI.cpp b/LiteLoader/src/llapi/LoggerAPI.cpp similarity index 92% rename from LiteLoader/Kernel/LoggerAPI.cpp rename to LiteLoader/src/llapi/LoggerAPI.cpp index c5bd308..c8b44e3 100644 --- a/LiteLoader/Kernel/LoggerAPI.cpp +++ b/LiteLoader/src/llapi/LoggerAPI.cpp @@ -4,9 +4,9 @@ #pragma once -#include -#include "Main/Config.h" -#include +#include +#include +#include #include #include @@ -88,13 +88,13 @@ Logger::OutputStream::OutputStream(Logger* logger, int level, std::string&& cons bool checkLogLevel(int level, int outLevel) { if (level >= outLevel) return true; - if (level == -1 && LL::globalConfig.logLevel >= outLevel) + if (level == -1 && ll::globalConfig.logLevel >= outLevel) return true; return false; } #define H do_hash fmt::text_style getModeColor(string a1) { - if (!LL::globalConfig.colorLog) + if (!ll::globalConfig.colorLog) return fmt::text_style(); switch (H(a1.c_str())) { case H("INFO"): @@ -148,8 +148,8 @@ void Logger::endlImpl(HMODULE hPlugin, OutputStream& o) { auto text = o.os.str(); bool filterBanned = false; // Output Filter - if (LL::globalConfig.enableOutputFilter) - for (auto& regexStr : LL::globalConfig.outputFilterRegex) { + if (ll::globalConfig.enableOutputFilter) + for (auto& regexStr : ll::globalConfig.outputFilterRegex) { try { std::regex re(regexStr); if (std::regex_search(text, re) || std::regex_search(title, re)) { @@ -162,14 +162,14 @@ void Logger::endlImpl(HMODULE hPlugin, OutputStream& o) { if (checkLogLevel(o.logger->consoleLevel, o.level) && !filterBanned) { fmt::print( o.consoleFormat, - applyTextStyle(LL::globalConfig.colorLog ? fg(fmt::color::light_blue) : fmt::text_style(), + applyTextStyle(ll::globalConfig.colorLog ? fg(fmt::color::light_blue) : fmt::text_style(), fmt::format("{:%H:%M:%S}", fmt::localtime(_time64(nullptr)))), applyTextStyle(getModeColor(o.levelPrefix), o.levelPrefix), - applyTextStyle(LL::globalConfig.colorLog ? o.style : fmt::text_style(), title), - applyTextStyle(LL::globalConfig.colorLog ? o.style : fmt::text_style(), text)); + applyTextStyle(ll::globalConfig.colorLog ? o.style : fmt::text_style(), title), + applyTextStyle(ll::globalConfig.colorLog ? o.style : fmt::text_style(), text)); } - if (checkLogLevel(o.logger->fileLevel, o.level) && (LL::globalConfig.onlyFilterConsoleOutput || !filterBanned)) { + if (checkLogLevel(o.logger->fileLevel, o.level) && (ll::globalConfig.onlyFilterConsoleOutput || !filterBanned)) { if (o.logger->ofs.is_open() || PluginOwnData::hasImpl(hPlugin, LOGGER_CURRENT_FILE)) { auto fileContent = fmt::format(o.fileFormat, fmt::localtime(_time64(nullptr)), o.levelPrefix, title, text); if (o.logger->ofs.is_open()) @@ -180,7 +180,7 @@ void Logger::endlImpl(HMODULE hPlugin, OutputStream& o) { } } - if (checkLogLevel(o.logger->playerLevel, o.level) && o.logger->player && Player::isValid(o.logger->player) && (LL::globalConfig.onlyFilterConsoleOutput || !filterBanned)) { + if (checkLogLevel(o.logger->playerLevel, o.level) && o.logger->player && Player::isValid(o.logger->player) && (ll::globalConfig.onlyFilterConsoleOutput || !filterBanned)) { o.logger->player->sendTextPacket( fmt::format(o.playerFormat, fmt::localtime(_time64(nullptr)), o.levelPrefix, title, text)); } diff --git a/LiteLoader/Kernel/ObjectivePacketHelper.cpp b/LiteLoader/src/llapi/ObjectivePacketHelper.cpp similarity index 84% rename from LiteLoader/Kernel/ObjectivePacketHelper.cpp rename to LiteLoader/src/llapi/ObjectivePacketHelper.cpp index f255f12..03adec2 100644 --- a/LiteLoader/Kernel/ObjectivePacketHelper.cpp +++ b/LiteLoader/src/llapi/ObjectivePacketHelper.cpp @@ -1,5 +1,5 @@ #include -#include +#include std::set scoreIds; #define RAND_SCORE_ID() (uint64_t)((rand() << 16) + rand() + 1145140) diff --git a/LiteLoader/src/llapi/ParticleAPI.cpp b/LiteLoader/src/llapi/ParticleAPI.cpp new file mode 100644 index 0000000..d21e4cc --- /dev/null +++ b/LiteLoader/src/llapi/ParticleAPI.cpp @@ -0,0 +1,19 @@ +// +// Created by OEOTYAN on 2022/08/27. +// +#include +#include +#include +#include +#include +#include +#include +#include +//void InitParticle() { +// Event::ResourcePackInitEvent::subscribe([](const Event::ResourcePackInitEvent& ev) { +// ev.mRepo->setCustomResourcePackPath(PackType::PackType_Resources, R"(plugins/LiteLoader/ResourcePacks)"); +// return true; +// }); +//} + +ParticleAPI ParticleCUI::api{}; \ No newline at end of file diff --git a/LiteLoader/src/llapi/PermissionAPI.cpp b/LiteLoader/src/llapi/PermissionAPI.cpp new file mode 100644 index 0000000..a54f31e --- /dev/null +++ b/LiteLoader/src/llapi/PermissionAPI.cpp @@ -0,0 +1,3 @@ +#include + +DynPermissionAPI Permission::api{}; \ No newline at end of file diff --git a/LiteLoader/Kernel/PlayerInfoAPI.cpp b/LiteLoader/src/llapi/PlayerInfoAPI.cpp similarity index 94% rename from LiteLoader/Kernel/PlayerInfoAPI.cpp rename to LiteLoader/src/llapi/PlayerInfoAPI.cpp index 4148b5a..14cef4d 100644 --- a/LiteLoader/Kernel/PlayerInfoAPI.cpp +++ b/LiteLoader/src/llapi/PlayerInfoAPI.cpp @@ -1,11 +1,11 @@ -#include -#include -#include -#include -#include
-#include +#include +#include +#include +#include +#include +#include #include -#include +#include #define PLAYER_DATABASE_PATH "plugins/LiteLoader/PlayerDB.db" #define SQL_CREATE_PLAYER_TABLE \ diff --git a/LiteLoader/Kernel/RemoteCallAPI.cpp b/LiteLoader/src/llapi/RemoteCallAPI.cpp similarity index 97% rename from LiteLoader/Kernel/RemoteCallAPI.cpp rename to LiteLoader/src/llapi/RemoteCallAPI.cpp index 2fab250..8884cfa 100644 --- a/LiteLoader/Kernel/RemoteCallAPI.cpp +++ b/LiteLoader/src/llapi/RemoteCallAPI.cpp @@ -1,7 +1,7 @@ -#include "RemoteCallAPI.h" -#include -#include -#include +#include +#include +#include +#include extern Logger logger; @@ -41,7 +41,7 @@ bool removeFunc(std::string const& nameSpace, std::string const& funcName) { void _onCallError(std::string const& msg, HMODULE handle) { logger.error(msg); - auto plugin = LL::getPlugin(handle); + auto plugin = ll::getPlugin(handle); if (plugin) logger.error("In plugin <{}>", plugin->name); } diff --git a/LiteLoader/Kernel/ScheduleAPI.cpp b/LiteLoader/src/llapi/ScheduleAPI.cpp similarity index 92% rename from LiteLoader/Kernel/ScheduleAPI.cpp rename to LiteLoader/src/llapi/ScheduleAPI.cpp index 22003d8..4c5af75 100644 --- a/LiteLoader/Kernel/ScheduleAPI.cpp +++ b/LiteLoader/src/llapi/ScheduleAPI.cpp @@ -1,13 +1,13 @@ -#include -#include +#include +#include #include #include -#include
-#include
-#include -#include -#include -#include +#include +#include +#include +#include +#include +#include using namespace std; @@ -147,18 +147,18 @@ public: logger.error("SEH exception occurred in ScheduleTask!"); logger.error("{}", TextEncoding::toUTF8(e.what())); logger.error("TaskId: {}", t.taskId); - if (auto plugin = LL::getPlugin(t.handle)) + if (auto plugin = ll::getPlugin(t.handle)) logger.error("In Plugin: <{} {}>", plugin->name, plugin->version.toString()); } catch (const std::exception& e) { logger.error("Exception occurred in ScheduleTask!"); logger.error("{}", TextEncoding::toUTF8(e.what())); logger.error("TaskId: {}", t.taskId); - if (auto plugin = LL::getPlugin(t.handle)) + if (auto plugin = ll::getPlugin(t.handle)) logger.error("In Plugin: <{} {}>", plugin->name, plugin->version.toString()); } catch (...) { logger.error("Exception occurred in ScheduleTask!"); logger.error("TaskId: {}", t.taskId); - if (auto plugin = LL::getPlugin(t.handle)) + if (auto plugin = ll::getPlugin(t.handle)) logger.error("In Plugin: <{} {}>", plugin->name, plugin->version.toString()); } pop(); @@ -181,7 +181,7 @@ ScheduleTaskQueueType taskQueue; namespace Schedule { ScheduleTask delay(std::function task, unsigned long long tickDelay, HMODULE handle) { - if (LL::globalConfig.serverStatus >= LL::LLServerStatus::Stopping) + if (ll::globalConfig.serverStatus >= ll::LLServerStatus::Stopping) return ScheduleTask((unsigned)-1); ScheduleTaskData sche(ScheduleTaskData::TaskType::Delay, task, tickDelay, -1, -1, handle); locker.lock(); @@ -191,7 +191,7 @@ ScheduleTask delay(std::function task, unsigned long long tickDelay, } ScheduleTask repeat(std::function task, unsigned long long tickRepeat, int maxCount, HMODULE handle) { - if (LL::globalConfig.serverStatus >= LL::LLServerStatus::Stopping) + if (ll::globalConfig.serverStatus >= ll::LLServerStatus::Stopping) return ScheduleTask((unsigned)-1); ScheduleTaskData::TaskType type = maxCount < 0 ? ScheduleTaskData::TaskType::InfiniteRepeat : ScheduleTaskData::TaskType::Repeat; @@ -204,7 +204,7 @@ ScheduleTask repeat(std::function task, unsigned long long tickRepea ScheduleTask delayRepeat(std::function task, unsigned long long tickDelay, unsigned long long tickRepeat, int maxCount, HMODULE handle) { - if (LL::globalConfig.serverStatus >= LL::LLServerStatus::Stopping) + if (ll::globalConfig.serverStatus >= ll::LLServerStatus::Stopping) return ScheduleTask((unsigned)-1); ScheduleTaskData::TaskType type = maxCount < 0 ? ScheduleTaskData::TaskType::InfiniteRepeat : ScheduleTaskData::TaskType::Repeat; @@ -216,7 +216,7 @@ ScheduleTask delayRepeat(std::function task, unsigned long long tick } ScheduleTask nextTick(std::function task, HMODULE handle) { - if (LL::globalConfig.serverStatus >= LL::LLServerStatus::Stopping) + if (ll::globalConfig.serverStatus >= ll::LLServerStatus::Stopping) return ScheduleTask((unsigned)-1); ScheduleTaskData sche(ScheduleTaskData::TaskType::Delay, task, 1, -1, -1, handle); locker.lock(); diff --git a/LiteLoader/Kernel/ServerAPI.cpp b/LiteLoader/src/llapi/ServerAPI.cpp similarity index 66% rename from LiteLoader/Kernel/ServerAPI.cpp rename to LiteLoader/src/llapi/ServerAPI.cpp index cab0be7..74b8506 100644 --- a/LiteLoader/Kernel/ServerAPI.cpp +++ b/LiteLoader/src/llapi/ServerAPI.cpp @@ -1,12 +1,12 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include class UserEntityIdentifierComponent; -namespace LL { +namespace ll { std::string getBdsVersion() { return Common::getGameVersionString(); } @@ -22,4 +22,4 @@ bool setServerMotd(const std::string& motd) { Global->allowIncomingConnections(motd, true); return true; } -} // namespace LL +} // namespace ll diff --git a/LiteLoader/Kernel/Command/CommandOriginAPI.cpp b/LiteLoader/src/llapi/command/CommandOriginAPI.cpp similarity index 73% rename from LiteLoader/Kernel/Command/CommandOriginAPI.cpp rename to LiteLoader/src/llapi/command/CommandOriginAPI.cpp index 92a03d7..41a221f 100644 --- a/LiteLoader/Kernel/Command/CommandOriginAPI.cpp +++ b/LiteLoader/src/llapi/command/CommandOriginAPI.cpp @@ -1,6 +1,6 @@ - #include - #include -#include "MC/CompoundTag.hpp" +#include +#include +#include ServerPlayer* CommandOrigin::getPlayer() const { Actor* origin = getEntity(); diff --git a/LiteLoader/src/llapi/command/CommandOutputAPI.cpp b/LiteLoader/src/llapi/command/CommandOutputAPI.cpp new file mode 100644 index 0000000..6631989 --- /dev/null +++ b/LiteLoader/src/llapi/command/CommandOutputAPI.cpp @@ -0,0 +1,13 @@ +#include + +void CommandOutput::addMessage(const std::string& str) { + this->addMessage(str, {}, (CommandOutputMessageType)0); +} + +void CommandOutput::success(const std::string& str) { + this->success(str, {}); +} + +void CommandOutput::error(const std::string& str) { + this->error(str, {}); +} \ No newline at end of file diff --git a/LiteLoader/Kernel/Command/CommandRegistryAPI.cpp b/LiteLoader/src/llapi/command/CommandRegistryAPI.cpp similarity index 97% rename from LiteLoader/Kernel/Command/CommandRegistryAPI.cpp rename to LiteLoader/src/llapi/command/CommandRegistryAPI.cpp index 3d30beb..7e0ab78 100644 --- a/LiteLoader/Kernel/Command/CommandRegistryAPI.cpp +++ b/LiteLoader/src/llapi/command/CommandRegistryAPI.cpp @@ -1,10 +1,10 @@ #define COMMAND_REGISTRY_EXTRA - #include - #include - #include + #include + #include + #include #include - #include - #include + #include + #include static_assert(offsetof(CommandParameterData, options) == 73); static_assert(offsetof(CommandParameterData, name) == 16); static_assert(offsetof(CommandParameterData, unk56) == 56); @@ -91,9 +91,9 @@ return ""; } - #include
+ #include bool CommandRegistry::unregisterCommand(std::string const& name) { - if (!LL::globalConfig.debugMode) { + if (!ll::globalConfig.debugMode) { logger.error("unregister command is only enabled in debug mode"); return false; } diff --git a/LiteLoader/Kernel/Command/DynamicCommandAPI.cpp b/LiteLoader/src/llapi/command/DynamicCommandAPI.cpp similarity index 98% rename from LiteLoader/Kernel/Command/DynamicCommandAPI.cpp rename to LiteLoader/src/llapi/command/DynamicCommandAPI.cpp index b1172d0..874eb0f 100644 --- a/LiteLoader/Kernel/Command/DynamicCommandAPI.cpp +++ b/LiteLoader/src/llapi/command/DynamicCommandAPI.cpp @@ -1,24 +1,25 @@  //#define COMMAND_REGISTRY_EXTRA - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include - #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include #include - #include - #include + #include + #include + #include extern Logger logger; @@ -126,7 +127,7 @@ logger.error(errorMsg); logger.error("Error: Code [{}] {}", errorCode, errorWhat); logger.error("In Function ({})", func); - if (auto plugin = LL::getPlugin(handle)) + if (auto plugin = ll::getPlugin(handle)) logger.error("In Plugin <{}>", plugin->name); } @@ -536,7 +537,7 @@ std::string name = command->getCommandName(); auto handle = command->handle; try { - if (!LL::getPlugin(handle) && handle != GetCurrentModule()) + if (!ll::getPlugin(handle) && handle != GetCurrentModule()) throw std::runtime_error("Plugin that registered command \"" + name + "\" not found"); auto res = DynamicCommand::_setup(std::move(command)); if (!res) @@ -594,9 +595,9 @@ std::unique_ptr DynamicCommand::createCommand(std::string const& name, std::string const& description, CommandPermissionLevel permission, CommandFlag flag1, CommandFlag flag2, HMODULE handle) { return DynamicCommandInstance::create(name, description, permission, flag1 |= flag2, handle); } - #include - #include - #include
+ #include + #include + #include DynamicCommandInstance const* DynamicCommand::setup(std::unique_ptr commandInstance) { auto ptr = commandInstance.get(); @@ -697,7 +698,7 @@ } inline std::unique_ptr DynamicCommandInstance::create(std::string const& name, std::string const& description, CommandPermissionLevel permission, CommandFlag flag, HMODULE handle) { - if (LL::globalConfig.serverStatus != LL::LLServerStatus::Running) { + if (ll::globalConfig.serverStatus != ll::LLServerStatus::Running) { for (auto& cmd : delaySetupCommandInstances) { if (cmd->name == name) { logger.error("Command \"{}\" already exists", name); @@ -962,9 +963,9 @@ #ifdef TEST_DYNAMIC_COMMAND - #include - #include - #include + #include + #include + #include void setupTestParamCommand() { using Param = DynamicCommand::ParameterData; @@ -1278,7 +1279,7 @@ TClasslessInstanceHook(void, "?compile@BaseCommandBlock@@AEAAXAEBVCommandOrigin@@AEAVLevel@@@Z", class CommandOrigin const& origin, class Level& level) { - if (LL::globalConfig.tickThreadId != std::this_thread::get_id()) { + if (ll::globalConfig.tickThreadId != std::this_thread::get_id()) { SRWLockSharedHolder locker(delaySetupLock); return original(this, origin, level); } diff --git a/LiteLoader/Kernel/DB/Any.cpp b/LiteLoader/src/llapi/db/Any.cpp similarity index 99% rename from LiteLoader/Kernel/DB/Any.cpp rename to LiteLoader/src/llapi/db/Any.cpp index 18febd9..ce3927f 100644 --- a/LiteLoader/Kernel/DB/Any.cpp +++ b/LiteLoader/src/llapi/db/Any.cpp @@ -1,4 +1,4 @@ -#include +#include namespace DB { diff --git a/LiteLoader/Kernel/DB/ConnParams.cpp b/LiteLoader/src/llapi/db/ConnParams.cpp similarity index 98% rename from LiteLoader/Kernel/DB/ConnParams.cpp rename to LiteLoader/src/llapi/db/ConnParams.cpp index ba17982..9c5d971 100644 --- a/LiteLoader/Kernel/DB/ConnParams.cpp +++ b/LiteLoader/src/llapi/db/ConnParams.cpp @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include namespace DB { diff --git a/LiteLoader/Kernel/DB/Impl/MySQL/Session.cpp b/LiteLoader/src/llapi/db/Impl/MySQL/Session.cpp similarity index 98% rename from LiteLoader/Kernel/DB/Impl/MySQL/Session.cpp rename to LiteLoader/src/llapi/db/Impl/MySQL/Session.cpp index 50a0353..e156fbd 100644 --- a/LiteLoader/Kernel/DB/Impl/MySQL/Session.cpp +++ b/LiteLoader/src/llapi/db/Impl/MySQL/Session.cpp @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include #define OK 0 namespace DB { diff --git a/LiteLoader/Kernel/DB/Impl/MySQL/Stmt.cpp b/LiteLoader/src/llapi/db/Impl/MySQL/Stmt.cpp similarity index 99% rename from LiteLoader/Kernel/DB/Impl/MySQL/Stmt.cpp rename to LiteLoader/src/llapi/db/Impl/MySQL/Stmt.cpp index d610ab2..53d9c74 100644 --- a/LiteLoader/Kernel/DB/Impl/MySQL/Stmt.cpp +++ b/LiteLoader/src/llapi/db/Impl/MySQL/Stmt.cpp @@ -1,8 +1,8 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #define Wptr2MySQLSession(x) ((MySQLSession*)x.lock().get()) #pragma warning(disable : 4267) #pragma warning(disable : 26812) diff --git a/LiteLoader/Kernel/DB/Impl/SQLite/Session.cpp b/LiteLoader/src/llapi/db/Impl/SQLite/Session.cpp similarity index 96% rename from LiteLoader/Kernel/DB/Impl/SQLite/Session.cpp rename to LiteLoader/src/llapi/db/Impl/SQLite/Session.cpp index 0848d67..adf51aa 100644 --- a/LiteLoader/Kernel/DB/Impl/SQLite/Session.cpp +++ b/LiteLoader/src/llapi/db/Impl/SQLite/Session.cpp @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include namespace DB { diff --git a/LiteLoader/Kernel/DB/Impl/SQLite/Stmt.cpp b/LiteLoader/src/llapi/db/Impl/SQLite/Stmt.cpp similarity index 98% rename from LiteLoader/Kernel/DB/Impl/SQLite/Stmt.cpp rename to LiteLoader/src/llapi/db/Impl/SQLite/Stmt.cpp index 6fb7968..83eb69e 100644 --- a/LiteLoader/Kernel/DB/Impl/SQLite/Stmt.cpp +++ b/LiteLoader/src/llapi/db/Impl/SQLite/Stmt.cpp @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include namespace DB { diff --git a/LiteLoader/Kernel/DB/Row.cpp b/LiteLoader/src/llapi/db/Row.cpp similarity index 99% rename from LiteLoader/Kernel/DB/Row.cpp rename to LiteLoader/src/llapi/db/Row.cpp index d8a3268..ebcba6f 100644 --- a/LiteLoader/Kernel/DB/Row.cpp +++ b/LiteLoader/src/llapi/db/Row.cpp @@ -1,4 +1,4 @@ -#include +#include namespace DB { diff --git a/LiteLoader/Kernel/DB/RowSet.cpp b/LiteLoader/src/llapi/db/RowSet.cpp similarity index 98% rename from LiteLoader/Kernel/DB/RowSet.cpp rename to LiteLoader/src/llapi/db/RowSet.cpp index 2482859..2bd6377 100644 --- a/LiteLoader/Kernel/DB/RowSet.cpp +++ b/LiteLoader/src/llapi/db/RowSet.cpp @@ -1,4 +1,4 @@ -#include +#include namespace DB { diff --git a/LiteLoader/Kernel/DB/Session.cpp b/LiteLoader/src/llapi/db/Session.cpp similarity index 95% rename from LiteLoader/Kernel/DB/Session.cpp rename to LiteLoader/src/llapi/db/Session.cpp index 979dfa7..a0a59e4 100644 --- a/LiteLoader/Kernel/DB/Session.cpp +++ b/LiteLoader/src/llapi/db/Session.cpp @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include namespace DB { diff --git a/LiteLoader/Kernel/DB/Stmt.cpp b/LiteLoader/src/llapi/db/Stmt.cpp similarity index 94% rename from LiteLoader/Kernel/DB/Stmt.cpp rename to LiteLoader/src/llapi/db/Stmt.cpp index 7ab2124..8ce95f8 100644 --- a/LiteLoader/Kernel/DB/Stmt.cpp +++ b/LiteLoader/src/llapi/db/Stmt.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include namespace DB { diff --git a/LiteLoader/Kernel/MC/ActorAPI.cpp b/LiteLoader/src/llapi/mc/ActorAPI.cpp similarity index 88% rename from LiteLoader/Kernel/MC/ActorAPI.cpp rename to LiteLoader/src/llapi/mc/ActorAPI.cpp index d118d00..9c17b2f 100644 --- a/LiteLoader/Kernel/MC/ActorAPI.cpp +++ b/LiteLoader/src/llapi/mc/ActorAPI.cpp @@ -1,31 +1,32 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -//#include -//#include -#include -//#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +//#include +#include +//#include +#include +#include +#include +#include // class UserEntityIdentifierComponent; diff --git a/LiteLoader/Kernel/MC/ActorDamageSource.cpp b/LiteLoader/src/llapi/mc/ActorDamageSource.cpp similarity index 64% rename from LiteLoader/Kernel/MC/ActorDamageSource.cpp rename to LiteLoader/src/llapi/mc/ActorDamageSource.cpp index ef5fa28..35960f7 100644 --- a/LiteLoader/Kernel/MC/ActorDamageSource.cpp +++ b/LiteLoader/src/llapi/mc/ActorDamageSource.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include Actor* ActorDamageSource::getEntity() { ActorUniqueID v6 = getDamagingEntityUniqueID(); diff --git a/LiteLoader/Kernel/MC/BiomeAPI.cpp b/LiteLoader/src/llapi/mc/BiomeAPI.cpp similarity index 89% rename from LiteLoader/Kernel/MC/BiomeAPI.cpp rename to LiteLoader/src/llapi/mc/BiomeAPI.cpp index b9a64bc..33c1cd7 100644 --- a/LiteLoader/Kernel/MC/BiomeAPI.cpp +++ b/LiteLoader/src/llapi/mc/BiomeAPI.cpp @@ -1,7 +1,8 @@ -#include -#include -#include -#include +#include +#include +#include +#include +#include int Biome::getId() const { return dAccess(this); @@ -34,7 +35,7 @@ std::vector Biome::getBiomesByType(VanillaBiomeTypes type) { #ifdef DEBUG #include -#include +#include extern Logger logger; TClasslessInstanceHook2("startServerThread_TestBiome", void, "?startServerThread@ServerInstance@@QEAAXXZ") { diff --git a/LiteLoader/Kernel/MC/BlockAPI.cpp b/LiteLoader/src/llapi/mc/BlockAPI.cpp similarity index 78% rename from LiteLoader/Kernel/MC/BlockAPI.cpp rename to LiteLoader/src/llapi/mc/BlockAPI.cpp index 7b26eed..955947f 100644 --- a/LiteLoader/Kernel/MC/BlockAPI.cpp +++ b/LiteLoader/src/llapi/mc/BlockAPI.cpp @@ -1,12 +1,13 @@ -#include -#include
-#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include Block* Block::create(const string& name, unsigned short tileData) { BlockPalette* generator = Global->getBlockPalettePtr(); @@ -63,5 +64,5 @@ bool Block::setNbt(CompoundTag* nbt) { unsigned int const & Block::getRuntimeId() const{ // Actor::_playFlySound Line7 - return dAccess(this, 12); + return dAccess(this, 48); } \ No newline at end of file diff --git a/LiteLoader/Kernel/MC/BlockActorAPI.cpp b/LiteLoader/src/llapi/mc/BlockActorAPI.cpp similarity index 67% rename from LiteLoader/Kernel/MC/BlockActorAPI.cpp rename to LiteLoader/src/llapi/mc/BlockActorAPI.cpp index ced2fd3..3fefec1 100644 --- a/LiteLoader/Kernel/MC/BlockActorAPI.cpp +++ b/LiteLoader/src/llapi/mc/BlockActorAPI.cpp @@ -1,14 +1,14 @@ -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include unsigned int BlockActor::getBlockEntityType(Block* block) { - return block->getBlockEntityType(); // IDA Block::getBlockEntityType + return (unsigned int)block->getBlockEntityType(); // IDA Block::getBlockEntityType } bool BlockActor::refreshData() { diff --git a/LiteLoader/Kernel/MC/BlockInstanceAPI.cpp b/LiteLoader/src/llapi/mc/BlockInstanceAPI.cpp similarity index 84% rename from LiteLoader/Kernel/MC/BlockInstanceAPI.cpp rename to LiteLoader/src/llapi/mc/BlockInstanceAPI.cpp index b507f74..601326d 100644 --- a/LiteLoader/Kernel/MC/BlockInstanceAPI.cpp +++ b/LiteLoader/src/llapi/mc/BlockInstanceAPI.cpp @@ -1,15 +1,16 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include BlockInstance::BlockInstance(Block* block, BlockPos pos, int dimID) : block(block) @@ -103,5 +104,5 @@ bool BlockInstance::isNull() { return *this == BlockInstance::Null; } -#include +#include const BlockInstance BlockInstance::Null = BlockInstance(nullptr, BlockPos::MIN, VanillaDimensions::Undefined); diff --git a/LiteLoader/Kernel/MC/BlockLegacyAPI.cpp b/LiteLoader/src/llapi/mc/BlockLegacyAPI.cpp similarity index 81% rename from LiteLoader/Kernel/MC/BlockLegacyAPI.cpp rename to LiteLoader/src/llapi/mc/BlockLegacyAPI.cpp index c2bf103..206f68b 100644 --- a/LiteLoader/Kernel/MC/BlockLegacyAPI.cpp +++ b/LiteLoader/src/llapi/mc/BlockLegacyAPI.cpp @@ -1,7 +1,9 @@ -#include -#include -#include -#include +#include +#include +#include +#include +#include + Block* BlockLegacy::toBlock(unsigned short tileData) { auto* bl = (Block*)&getStateFromLegacyData(tileData); // 某些方块在 tileData 太大时会变成其他方块,原版 /setblock 指令就存在这个问题(也有可能是被设计成这样的?) diff --git a/LiteLoader/Kernel/MC/BlockSourceAPI.cpp b/LiteLoader/src/llapi/mc/BlockSourceAPI.cpp similarity index 60% rename from LiteLoader/Kernel/MC/BlockSourceAPI.cpp rename to LiteLoader/src/llapi/mc/BlockSourceAPI.cpp index 8165a03..d1e1e11 100644 --- a/LiteLoader/Kernel/MC/BlockSourceAPI.cpp +++ b/LiteLoader/src/llapi/mc/BlockSourceAPI.cpp @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include BlockInstance BlockSource::getBlockInstance(BlockPos a1) { return BlockInstance{const_cast(&getBlock(a1)), a1, this->getDimensionId()}; diff --git a/LiteLoader/Kernel/MC/ColorFormatAPI.cpp b/LiteLoader/src/llapi/mc/ColorFormatAPI.cpp similarity index 99% rename from LiteLoader/Kernel/MC/ColorFormatAPI.cpp rename to LiteLoader/src/llapi/mc/ColorFormatAPI.cpp index e783dd8..9781492 100644 --- a/LiteLoader/Kernel/MC/ColorFormatAPI.cpp +++ b/LiteLoader/src/llapi/mc/ColorFormatAPI.cpp @@ -1,7 +1,7 @@ -#include -#include +#include +#include extern Logger logger; -#include +#include namespace ColorFormat { std::unordered_map const colorCodeToConsoleMap = { {"§0", "\x1b[38;2;000;000;000m"}, // BLACK diff --git a/LiteLoader/Kernel/MC/ContainerAPI.cpp b/LiteLoader/src/llapi/mc/ContainerAPI.cpp similarity index 88% rename from LiteLoader/Kernel/MC/ContainerAPI.cpp rename to LiteLoader/src/llapi/mc/ContainerAPI.cpp index 8573eca..1ab210b 100644 --- a/LiteLoader/Kernel/MC/ContainerAPI.cpp +++ b/LiteLoader/src/llapi/mc/ContainerAPI.cpp @@ -1,8 +1,9 @@ -#include -#include -#include -#include -#include "third-party/magic_enum/magic_enum.hpp" +#include +#include +#include +#include +#include +#include LIAPI std::string Container::getTypeName() { ContainerType type = dAccess(this, 8); //IDA Container::Container diff --git a/LiteLoader/src/llapi/mc/GameModeAPI.cpp b/LiteLoader/src/llapi/mc/GameModeAPI.cpp new file mode 100644 index 0000000..3172ffd --- /dev/null +++ b/LiteLoader/src/llapi/mc/GameModeAPI.cpp @@ -0,0 +1,7 @@ +#include +#include +#include + +ServerPlayer* GameMode::getPlayer() { + return dAccess(this); +} \ No newline at end of file diff --git a/LiteLoader/Kernel/MC/HitResultAPI.cpp b/LiteLoader/src/llapi/mc/HitResultAPI.cpp similarity index 90% rename from LiteLoader/Kernel/MC/HitResultAPI.cpp rename to LiteLoader/src/llapi/mc/HitResultAPI.cpp index cd819bf..de0ffca 100644 --- a/LiteLoader/Kernel/MC/HitResultAPI.cpp +++ b/LiteLoader/src/llapi/mc/HitResultAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include FaceID HitResult::getFacing() { return dAccess(this, 28); diff --git a/LiteLoader/Kernel/MC/I18nAPI.cpp b/LiteLoader/src/llapi/mc/I18nAPI.cpp similarity index 83% rename from LiteLoader/Kernel/MC/I18nAPI.cpp rename to LiteLoader/src/llapi/mc/I18nAPI.cpp index bc8f60e..dcb1082 100644 --- a/LiteLoader/Kernel/MC/I18nAPI.cpp +++ b/LiteLoader/src/llapi/mc/I18nAPI.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include Localization const* I18n::getLanguage(std::string const& languageCode) { auto loc = _findLocaleFor(languageCode); diff --git a/LiteLoader/Kernel/MC/ItemActorAPI.cpp b/LiteLoader/src/llapi/mc/ItemActorAPI.cpp similarity index 52% rename from LiteLoader/Kernel/MC/ItemActorAPI.cpp rename to LiteLoader/src/llapi/mc/ItemActorAPI.cpp index 1497044..5b1bc5c 100644 --- a/LiteLoader/Kernel/MC/ItemActorAPI.cpp +++ b/LiteLoader/src/llapi/mc/ItemActorAPI.cpp @@ -1,19 +1,20 @@ -#include "Global.h" -#include +#include +#include +#include ItemStack* ItemActor::getItemStack() { return (ItemStack*)((uintptr_t)this + 1568); // IDA Player::take Line127 } int ItemActor::getDespawnTime() { - return dAccess(this); // ItemActor::NormalTick Line258 + return dAccess(this); // ItemActor::NormalTick Line258 } bool ItemActor::setDespawnTime(int a1) { - dAccess(this) = a1; + dAccess(this) = a1; return true; } int ItemActor::getLatestSpawnTime() { - return dAccess(this); + return dAccess(this); } \ No newline at end of file diff --git a/LiteLoader/Kernel/MC/ItemStackAPI.cpp b/LiteLoader/src/llapi/mc/ItemStackAPI.cpp similarity index 87% rename from LiteLoader/Kernel/MC/ItemStackAPI.cpp rename to LiteLoader/src/llapi/mc/ItemStackAPI.cpp index 32eadbe..7d8d437 100644 --- a/LiteLoader/Kernel/MC/ItemStackAPI.cpp +++ b/LiteLoader/src/llapi/mc/ItemStackAPI.cpp @@ -1,12 +1,13 @@ -#include "Global.h" -#include "MC/Item.hpp" -#include "MC/ItemStack.hpp" -#include "MC/Spawner.hpp" -#include "MC/Level.hpp" -#include "MC/ItemInstance.hpp" -#include "MC/I18n.hpp" -#include "MC/PropertiesSettings.hpp" -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -32,7 +33,7 @@ ItemStack* ItemStack::create(std::unique_ptr tag) { return item; } -#include +#include ItemStack* ItemStack::create(short itemId, int aux, int count) { auto item = ItemRegistry::getItem(itemId); if (item) diff --git a/LiteLoader/Kernel/MC/JsonHelpers.cpp b/LiteLoader/src/llapi/mc/JsonHelpers.cpp similarity index 90% rename from LiteLoader/Kernel/MC/JsonHelpers.cpp rename to LiteLoader/src/llapi/mc/JsonHelpers.cpp index e22018a..6c93fa1 100644 --- a/LiteLoader/Kernel/MC/JsonHelpers.cpp +++ b/LiteLoader/src/llapi/mc/JsonHelpers.cpp @@ -1,7 +1,7 @@ // // Created by User on 2022/10/29. // -#include "MC/JsonHelpers.hpp" +#include bool JsonHelpers::parseJson(std::string const &str, class Json::Value &value){ auto jsonRead = new Json::Reader(); diff --git a/LiteLoader/Kernel/MC/LevelAPI.cpp b/LiteLoader/src/llapi/mc/LevelAPI.cpp similarity index 93% rename from LiteLoader/Kernel/MC/LevelAPI.cpp rename to LiteLoader/src/llapi/mc/LevelAPI.cpp index 84237a8..94f0b63 100644 --- a/LiteLoader/Kernel/MC/LevelAPI.cpp +++ b/LiteLoader/src/llapi/mc/LevelAPI.cpp @@ -1,29 +1,30 @@ -#include +#include #include #include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include Actor* Level::getEntity(ActorUniqueID uniqueId) { @@ -341,7 +342,7 @@ bool Level::createExplosion(Vec3 pos, int dimId, Actor* source, float radius, bo return true; } -#include +#include ItemStack* Level::getItemStackFromId(short itemId, int aux) { auto item = ItemRegistry::getItem(itemId); if (item) diff --git a/LiteLoader/src/llapi/mc/MobAPI.cpp b/LiteLoader/src/llapi/mc/MobAPI.cpp new file mode 100644 index 0000000..2e281e7 --- /dev/null +++ b/LiteLoader/src/llapi/mc/MobAPI.cpp @@ -0,0 +1,13 @@ +//#include "MobAPI.h" +#include +#include +#include +#include +#include + +bool Mob::refreshInventory() { + sendInventory(true); + std::bitset<4> bits("1111"); + sendArmor(bits); + return true; +} diff --git a/LiteLoader/Kernel/MC/MolangAPI.cpp b/LiteLoader/src/llapi/mc/MolangAPI.cpp similarity index 100% rename from LiteLoader/Kernel/MC/MolangAPI.cpp rename to LiteLoader/src/llapi/mc/MolangAPI.cpp diff --git a/LiteLoader/Kernel/MC/NetworkIdentifierAPI.cpp b/LiteLoader/src/llapi/mc/NetworkIdentifierAPI.cpp similarity index 71% rename from LiteLoader/Kernel/MC/NetworkIdentifierAPI.cpp rename to LiteLoader/src/llapi/mc/NetworkIdentifierAPI.cpp index d61003b..f77b851 100644 --- a/LiteLoader/Kernel/MC/NetworkIdentifierAPI.cpp +++ b/LiteLoader/src/llapi/mc/NetworkIdentifierAPI.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include string NetworkIdentifier::getIP() { string rv =getAddress(); diff --git a/LiteLoader/Kernel/MC/PlayerAPI.cpp b/LiteLoader/src/llapi/mc/PlayerAPI.cpp similarity index 93% rename from LiteLoader/Kernel/MC/PlayerAPI.cpp rename to LiteLoader/src/llapi/mc/PlayerAPI.cpp index 0cc27cf..682cdd9 100644 --- a/LiteLoader/Kernel/MC/PlayerAPI.cpp +++ b/LiteLoader/src/llapi/mc/PlayerAPI.cpp @@ -1,46 +1,47 @@ -#include +#include -#include -#include -#include -#include +#include +#include +#include +#include -#include -#include +#include +#include -#include -#include -#include -#include -//#include +#include +#include +#include +#include +//#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#include -#include -#include +#include +#include +#include +#include #include -//#include -//#include -//#include +//#include +//#include +//#include extern Logger logger; @@ -71,7 +72,7 @@ string Player::getIP() { return getNetworkIdentifier()->getIP(); } -#include +#include string Player::getLanguageCode() { // auto map = Global->fetchConnectionRequest(*getNetworkIdentifier()).mRawToken.get()->mDataInfo.value_.map_; // for (auto& iter : *map) { @@ -98,7 +99,7 @@ string Player::getServerAddress() { int Player::getPlatform(){ //AddPlayerPacket::AddPlayerPacket Line59 - return dAccess(this, 256); + return dAccess(this, 2104); } Container & Player::getInventory(){ @@ -247,9 +248,9 @@ bool Player::runcmd(const string& cmd) { return sendCommandRequestPacket(cmd); } -// Container* Player::getEnderChestContainer() { -// return dAccess(this, 4032); // IDA Player::Player() Line239 -// } +//Container* Player::getEnderChestContainer() { +// return dAccess(this, 4032); // IDA Player::Player() Line239 +//} bool Player::transferServer(const string& address, unsigned short port) { return sendTransferPacket(address, port); @@ -257,12 +258,12 @@ bool Player::transferServer(const string& address, unsigned short port) { BlockPos const & Player::getSpawnPosition(){ //ServerNetworkHandler::_sendLevelData Line316 - return dAccess(this, 1797); + return dAccess(this, 1797*4); } AutomaticID Player::getSpawnDimension(){ //ServerNetworkHandler::_sendLevelData Line310 - return dAccess>(this, 1800); + return dAccess>(this, 1800*4); } std::pair Player::getRespawnPosition() { @@ -285,10 +286,10 @@ bool Player::setNbt(CompoundTag* nbt) { nbt->setPlayer(this); return true; } -#include -#include -#include -#include +#include +#include +#include +#include bool Player::refreshAttribute(class Attribute const& attribute) { return refreshAttributes({&attribute}); } @@ -619,7 +620,7 @@ bool Player::sendPlaySoundPacket(string SoundName, Vec3 Position, float Volume, return true; } -#include +#include // bool Player::sendAddItemEntityPacket(unsigned long long runtimeID, Item const& item, int stackSize, short aux, Vec3 pos, vector> dataItems) const { // BinaryStream wp; // wp.writeVarInt64(runtimeID); // RuntimeId @@ -757,7 +758,7 @@ bool Player::sendCommandRequestPacket(const string& cmd) { bool Player::sendTextTalkPacket(const string& msg) { return sendTextTalkPacket(msg, nullptr); } -#include +#include bool Player::sendTextTalkPacket(const string& msg, Player* target) { auto packet = TextPacket::createChat(getName(), msg, getXuid(), ""); if (target == nullptr) { diff --git a/LiteLoader/src/llapi/mc/ResourcePackRepositoryAPI.cpp b/LiteLoader/src/llapi/mc/ResourcePackRepositoryAPI.cpp new file mode 100644 index 0000000..aee1a14 --- /dev/null +++ b/LiteLoader/src/llapi/mc/ResourcePackRepositoryAPI.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include +#include +#include + + void ResourcePackRepository::setCustomResourcePackPath(PackType type, const std::string& path) { + auto CompositePack = dAccess(this, 48); + auto PackSourceFactory = getPackSourceFactory(); + auto& DirectoryPackSource = PackSourceFactory->createDirectoryPackSource(Core::Path(path), type, PackOrigin::PackOrigin_Dev, 0); + CompositePack->addPackSource((PackSource*)&DirectoryPackSource); + refreshPacks(); + } \ No newline at end of file diff --git a/LiteLoader/Kernel/MC/SpawnerAPI.cpp b/LiteLoader/src/llapi/mc/SpawnerAPI.cpp similarity index 76% rename from LiteLoader/Kernel/MC/SpawnerAPI.cpp rename to LiteLoader/src/llapi/mc/SpawnerAPI.cpp index 55011b1..46446e9 100644 --- a/LiteLoader/Kernel/MC/SpawnerAPI.cpp +++ b/LiteLoader/src/llapi/mc/SpawnerAPI.cpp @@ -1,9 +1,9 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include Mob* Spawner::spawnMob(Vec3& pos, int dim, std::string name) { try { diff --git a/LiteLoader/Kernel/MC/StaticVanillaBlocksAPI.cpp b/LiteLoader/src/llapi/mc/StaticVanillaBlocksAPI.cpp similarity index 100% rename from LiteLoader/Kernel/MC/StaticVanillaBlocksAPI.cpp rename to LiteLoader/src/llapi/mc/StaticVanillaBlocksAPI.cpp diff --git a/LiteLoader/Kernel/MC/StructureTemplateAPI.cpp b/LiteLoader/src/llapi/mc/StructureTemplateAPI.cpp similarity index 86% rename from LiteLoader/Kernel/MC/StructureTemplateAPI.cpp rename to LiteLoader/src/llapi/mc/StructureTemplateAPI.cpp index 0f7f598..ddb4ead 100644 --- a/LiteLoader/Kernel/MC/StructureTemplateAPI.cpp +++ b/LiteLoader/src/llapi/mc/StructureTemplateAPI.cpp @@ -1,9 +1,9 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include StructureTemplate StructureTemplate::fromTag(std::string name, CompoundTag const& tag) { StructureTemplate st(name); @@ -39,7 +39,7 @@ return st; } - #include + #include bool StructureTemplate::toWorld(int dimID, BlockPos const& p1, Mirror mirror, Rotation rotation) { auto palette = Global->getBlockPalettePtr(); auto bs = Level::getBlockSource(dimID); diff --git a/LiteLoader/Kernel/MC/Types.cpp b/LiteLoader/src/llapi/mc/Types.cpp similarity index 98% rename from LiteLoader/Kernel/MC/Types.cpp rename to LiteLoader/src/llapi/mc/Types.cpp index 859f9b4..403b368 100644 --- a/LiteLoader/Kernel/MC/Types.cpp +++ b/LiteLoader/src/llapi/mc/Types.cpp @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include // ChunkBlockPos::ChunkBlockPos(BlockPos const& pos, short minHeight) //{ diff --git a/LiteLoader/Kernel/NBT/ByteArrayTagAPI.cpp b/LiteLoader/src/llapi/nbt/ByteArrayTagAPI.cpp similarity index 93% rename from LiteLoader/Kernel/NBT/ByteArrayTagAPI.cpp rename to LiteLoader/src/llapi/nbt/ByteArrayTagAPI.cpp index a9eeea4..73a8904 100644 --- a/LiteLoader/Kernel/NBT/ByteArrayTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/ByteArrayTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include TagMemoryChunk& ByteArrayTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/ByteTagAPI.cpp b/LiteLoader/src/llapi/nbt/ByteTagAPI.cpp similarity index 91% rename from LiteLoader/Kernel/NBT/ByteTagAPI.cpp rename to LiteLoader/src/llapi/nbt/ByteTagAPI.cpp index 8895007..ccf1b4c 100644 --- a/LiteLoader/Kernel/NBT/ByteTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/ByteTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include unsigned char& ByteTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/CompoundTagAPI.cpp b/LiteLoader/src/llapi/nbt/CompoundTagAPI.cpp similarity index 98% rename from LiteLoader/Kernel/NBT/CompoundTagAPI.cpp rename to LiteLoader/src/llapi/nbt/CompoundTagAPI.cpp index c0615d3..8192d79 100644 --- a/LiteLoader/Kernel/NBT/CompoundTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/CompoundTagAPI.cpp @@ -1,25 +1,25 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include @@ -194,7 +194,7 @@ std::unique_ptr CompoundTag::fromBlockActor(BlockActor* blockActor) using namespace nbt; using namespace std; -#include +#include extern Logger logger; inline void OutputNBTError(std::string const& errorMsg, int errorCode, std::string errorWhat, std::string const& functionName) { @@ -336,7 +336,7 @@ std::vector> CompoundTag::nbtListFromBinary(std::st #pragma region To Network NBT //////////////////// To Network //////////////////// -#include +#include std::string CompoundTag::toNetworkNBT() const { BinaryStream bs; bs.writeCompoundTag(*this); @@ -1158,7 +1158,7 @@ string CompoundTag::toSNBT(int indent, SnbtFormat snbtFormat) { #pragma endregion #pragma region To Pretty SNBT -#include +#include void __appendPrettyString(std::ostringstream& oss, std::string const& str, PrettySnbtFormat const& format) { for (auto& c : str) { diff --git a/LiteLoader/Kernel/NBT/DoubleTagAPI.cpp b/LiteLoader/src/llapi/nbt/DoubleTagAPI.cpp similarity index 91% rename from LiteLoader/Kernel/NBT/DoubleTagAPI.cpp rename to LiteLoader/src/llapi/nbt/DoubleTagAPI.cpp index 18ed171..727c524 100644 --- a/LiteLoader/Kernel/NBT/DoubleTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/DoubleTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include double& DoubleTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/EndTagAPI.cpp b/LiteLoader/src/llapi/nbt/EndTagAPI.cpp similarity index 91% rename from LiteLoader/Kernel/NBT/EndTagAPI.cpp rename to LiteLoader/src/llapi/nbt/EndTagAPI.cpp index 68a46fd..55a4c88 100644 --- a/LiteLoader/Kernel/NBT/EndTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/EndTagAPI.cpp @@ -1,4 +1,4 @@ -#include +#include nullptr_t EndTag::value() { return nullptr; diff --git a/LiteLoader/Kernel/NBT/FloatTagAPI.cpp b/LiteLoader/src/llapi/nbt/FloatTagAPI.cpp similarity index 91% rename from LiteLoader/Kernel/NBT/FloatTagAPI.cpp rename to LiteLoader/src/llapi/nbt/FloatTagAPI.cpp index 71cf126..a31185a 100644 --- a/LiteLoader/Kernel/NBT/FloatTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/FloatTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include float& FloatTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/Int64TagAPI.cpp b/LiteLoader/src/llapi/nbt/Int64TagAPI.cpp similarity index 91% rename from LiteLoader/Kernel/NBT/Int64TagAPI.cpp rename to LiteLoader/src/llapi/nbt/Int64TagAPI.cpp index 5346f2a..441e023 100644 --- a/LiteLoader/Kernel/NBT/Int64TagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/Int64TagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include int64_t& Int64Tag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/IntArrayTagAPI.cpp b/LiteLoader/src/llapi/nbt/IntArrayTagAPI.cpp similarity index 93% rename from LiteLoader/Kernel/NBT/IntArrayTagAPI.cpp rename to LiteLoader/src/llapi/nbt/IntArrayTagAPI.cpp index 14c764a..bd92c70 100644 --- a/LiteLoader/Kernel/NBT/IntArrayTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/IntArrayTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include TagMemoryChunk& IntArrayTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/IntTagAPI.cpp b/LiteLoader/src/llapi/nbt/IntTagAPI.cpp similarity index 90% rename from LiteLoader/Kernel/NBT/IntTagAPI.cpp rename to LiteLoader/src/llapi/nbt/IntTagAPI.cpp index 8d11ce4..74612ad 100644 --- a/LiteLoader/Kernel/NBT/IntTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/IntTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include int& IntTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/ListTagAPI.cpp b/LiteLoader/src/llapi/nbt/ListTagAPI.cpp similarity index 80% rename from LiteLoader/Kernel/NBT/ListTagAPI.cpp rename to LiteLoader/src/llapi/nbt/ListTagAPI.cpp index b30eb1f..b0cf358 100644 --- a/LiteLoader/Kernel/NBT/ListTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/ListTagAPI.cpp @@ -1,17 +1,18 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include std::unique_ptr ListTag::create() { return std::unique_ptr((ListTag*)Tag::newTag(Tag::Type::List).release()); diff --git a/LiteLoader/Kernel/NBT/PrettySnbtFormatAPI.cpp b/LiteLoader/src/llapi/nbt/PrettySnbtFormatAPI.cpp similarity index 99% rename from LiteLoader/Kernel/NBT/PrettySnbtFormatAPI.cpp rename to LiteLoader/src/llapi/nbt/PrettySnbtFormatAPI.cpp index b2c5ea5..2c53487 100644 --- a/LiteLoader/Kernel/NBT/PrettySnbtFormatAPI.cpp +++ b/LiteLoader/src/llapi/nbt/PrettySnbtFormatAPI.cpp @@ -1,5 +1,5 @@ -#include -#include +#include +#include #define ForEachTagType(op) \ op(Tag::Type::End); \ diff --git a/LiteLoader/Kernel/NBT/ShortTagAPI.cpp b/LiteLoader/src/llapi/nbt/ShortTagAPI.cpp similarity index 91% rename from LiteLoader/Kernel/NBT/ShortTagAPI.cpp rename to LiteLoader/src/llapi/nbt/ShortTagAPI.cpp index b0ac72b..f824382 100644 --- a/LiteLoader/Kernel/NBT/ShortTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/ShortTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include short& ShortTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/StringTagAPI.cpp b/LiteLoader/src/llapi/nbt/StringTagAPI.cpp similarity index 91% rename from LiteLoader/Kernel/NBT/StringTagAPI.cpp rename to LiteLoader/src/llapi/nbt/StringTagAPI.cpp index 9339005..c107a3b 100644 --- a/LiteLoader/Kernel/NBT/StringTagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/StringTagAPI.cpp @@ -1,4 +1,5 @@ -#include +#include +#include std::string& StringTag::value() { return dAccess(this); diff --git a/LiteLoader/Kernel/NBT/TagAPI.cpp b/LiteLoader/src/llapi/nbt/TagAPI.cpp similarity index 94% rename from LiteLoader/Kernel/NBT/TagAPI.cpp rename to LiteLoader/src/llapi/nbt/TagAPI.cpp index 73ad8f7..83f6004 100644 --- a/LiteLoader/Kernel/NBT/TagAPI.cpp +++ b/LiteLoader/src/llapi/nbt/TagAPI.cpp @@ -1,16 +1,16 @@ -#include "Global.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include #include diff --git a/LiteLoader/Kernel/NBT/TagMemoryChunk.cpp b/LiteLoader/src/llapi/nbt/TagMemoryChunk.cpp similarity index 94% rename from LiteLoader/Kernel/NBT/TagMemoryChunk.cpp rename to LiteLoader/src/llapi/nbt/TagMemoryChunk.cpp index b185a75..7f4361a 100644 --- a/LiteLoader/Kernel/NBT/TagMemoryChunk.cpp +++ b/LiteLoader/src/llapi/nbt/TagMemoryChunk.cpp @@ -1,4 +1,4 @@ -#include +#include TagMemoryChunk::TagMemoryChunk(char data[], size_t size) : capacity(size) diff --git a/LiteLoader/Kernel/Network/BinaryStreamAPI.cpp b/LiteLoader/src/llapi/network/BinaryStreamAPI.cpp similarity index 93% rename from LiteLoader/Kernel/Network/BinaryStreamAPI.cpp rename to LiteLoader/src/llapi/network/BinaryStreamAPI.cpp index d8598ff..d72a620 100644 --- a/LiteLoader/Kernel/Network/BinaryStreamAPI.cpp +++ b/LiteLoader/src/llapi/network/BinaryStreamAPI.cpp @@ -1,7 +1,7 @@ -#include -#include -#include -#include +#include +#include +#include +#include void BinaryStream::write(const void* origin, size_t num){ //BatchedNetworkPeer::flush Line24 diff --git a/LiteLoader/Kernel/Network/PacketAPI.cpp b/LiteLoader/src/llapi/network/PacketAPI.cpp similarity index 88% rename from LiteLoader/Kernel/Network/PacketAPI.cpp rename to LiteLoader/src/llapi/network/PacketAPI.cpp index 33cb0bb..d67df1f 100644 --- a/LiteLoader/Kernel/Network/PacketAPI.cpp +++ b/LiteLoader/src/llapi/network/PacketAPI.cpp @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include #define INCLUDE_ALL_PACKET #define SIZE_STATIC_ASSERT_IF_DEFINE @@ -12,191 +12,191 @@ extern Logger logger; #ifdef INCLUDE_ALL_PACKET -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include -// #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include #endif INCLUDE_ALL_PACKET @@ -480,7 +480,7 @@ inline size_t getPacketSize() { #pragma region Packet Command #include -#include +#include #include #include using Param = DynamicCommand::ParameterData; @@ -533,7 +533,7 @@ void autoGenerate() { // add include oss << std::endl; forEachPacket([&](Packet const& packet, std::string className, size_t size) { - oss << fmt::format("#include \n", className); + oss << fmt::format("#include \n", className); }); oss << std::endl; replaceString(content, "#ifdef INCLUDE_ALL_PACKET\n", "#endif", oss.str()); diff --git a/LiteLoader/Kernel/Network/ReadOnlyBinaryStreamAPI.cpp b/LiteLoader/src/llapi/network/ReadOnlyBinaryStreamAPI.cpp similarity index 80% rename from LiteLoader/Kernel/Network/ReadOnlyBinaryStreamAPI.cpp rename to LiteLoader/src/llapi/network/ReadOnlyBinaryStreamAPI.cpp index 6df5652..92248ad 100644 --- a/LiteLoader/Kernel/Network/ReadOnlyBinaryStreamAPI.cpp +++ b/LiteLoader/src/llapi/network/ReadOnlyBinaryStreamAPI.cpp @@ -1,8 +1,8 @@ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include std::string const& ReadOnlyBinaryStream::getData() const { return *pBuf; diff --git a/LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp b/LiteLoader/src/llapi/scoreboard/ObjectiveAPI.cpp similarity index 83% rename from LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp rename to LiteLoader/src/llapi/scoreboard/ObjectiveAPI.cpp index 986b60d..cf6eb24 100644 --- a/LiteLoader/Kernel/Scoreboard/ObjectiveAPI.cpp +++ b/LiteLoader/src/llapi/scoreboard/ObjectiveAPI.cpp @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include // helper #define H do_hash diff --git a/LiteLoader/Kernel/Scoreboard/ScoreboardAPI.cpp b/LiteLoader/src/llapi/scoreboard/ScoreboardAPI.cpp similarity index 95% rename from LiteLoader/Kernel/Scoreboard/ScoreboardAPI.cpp rename to LiteLoader/src/llapi/scoreboard/ScoreboardAPI.cpp index bd9bfd1..c085720 100644 --- a/LiteLoader/Kernel/Scoreboard/ScoreboardAPI.cpp +++ b/LiteLoader/src/llapi/scoreboard/ScoreboardAPI.cpp @@ -1,14 +1,14 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include LIAPI Objective* Scoreboard::newObjective(const std::string& objname, const std::string& displayName) { std::string criteria = "dummy"; diff --git a/LiteLoader/Kernel/Utils/CryptHelper.cpp b/LiteLoader/src/llapi/utils/CryptHelper.cpp similarity index 97% rename from LiteLoader/Kernel/Utils/CryptHelper.cpp rename to LiteLoader/src/llapi/utils/CryptHelper.cpp index 52ca319..56a4716 100644 --- a/LiteLoader/Kernel/Utils/CryptHelper.cpp +++ b/LiteLoader/src/llapi/utils/CryptHelper.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include diff --git a/LiteLoader/Kernel/Utils/CsLock.cpp b/LiteLoader/src/llapi/utils/CsLock.cpp similarity index 94% rename from LiteLoader/Kernel/Utils/CsLock.cpp rename to LiteLoader/src/llapi/utils/CsLock.cpp index ea7b598..9a7dc00 100644 --- a/LiteLoader/Kernel/Utils/CsLock.cpp +++ b/LiteLoader/src/llapi/utils/CsLock.cpp @@ -1,4 +1,4 @@ -#include +#include CsLock::CsLock() { if (!inited) { diff --git a/LiteLoader/Kernel/Utils/DbgHelper.cpp b/LiteLoader/src/llapi/utils/DbgHelper.cpp similarity index 96% rename from LiteLoader/Kernel/Utils/DbgHelper.cpp rename to LiteLoader/src/llapi/utils/DbgHelper.cpp index b9645ee..5632f19 100644 --- a/LiteLoader/Kernel/Utils/DbgHelper.cpp +++ b/LiteLoader/src/llapi/utils/DbgHelper.cpp @@ -1,13 +1,13 @@ -#include -#include +#include +#include #include -#include -#include -#include
+#include +#include +#include #include #include #include -#include +#include #include using namespace std; extern Logger logger; @@ -105,7 +105,7 @@ wstring MapModuleFromAddr(HANDLE hProcess, void* address) { bool PrintCurrentStackTraceback(PEXCEPTION_POINTERS e, Logger* l) { Logger& debugLogger = l ? *l : logger; - if (!LL::globalConfig.enableErrorStackTraceback) { + if (!ll::globalConfig.enableErrorStackTraceback) { logger.error("* Stack traceback is disabled by config file."); return true; } @@ -113,7 +113,7 @@ bool PrintCurrentStackTraceback(PEXCEPTION_POINTERS e, Logger* l) { HANDLE hProcess = GetCurrentProcess(); HANDLE hThread = GetCurrentThread(); DWORD threadId = GetCurrentThreadId(); - bool cacheSymbol = LL::globalConfig.cacheErrorStackTracebackSymbol; + bool cacheSymbol = ll::globalConfig.cacheErrorStackTracebackSymbol; bool res = false; std::thread printThread([e, hProcess, hThread, threadId, cacheSymbol, &res, &debugLogger]() { diff --git a/LiteLoader/Kernel/Utils/FileHelper.cpp b/LiteLoader/src/llapi/utils/FileHelper.cpp similarity index 94% rename from LiteLoader/Kernel/Utils/FileHelper.cpp rename to LiteLoader/src/llapi/utils/FileHelper.cpp index f554b7d..5b2af8d 100644 --- a/LiteLoader/Kernel/Utils/FileHelper.cpp +++ b/LiteLoader/src/llapi/utils/FileHelper.cpp @@ -1,7 +1,7 @@ -#include -#include -#include -#include
+#include +#include +#include +#include #include #include using namespace std; diff --git a/LiteLoader/Kernel/Utils/GlobalService.cpp b/LiteLoader/src/llapi/utils/GlobalService.cpp similarity index 90% rename from LiteLoader/Kernel/Utils/GlobalService.cpp rename to LiteLoader/src/llapi/utils/GlobalService.cpp index cffd5fd..024273b 100644 --- a/LiteLoader/Kernel/Utils/GlobalService.cpp +++ b/LiteLoader/src/llapi/utils/GlobalService.cpp @@ -1,14 +1,15 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // Minecraft TInstanceHook(void, "?initAsDedicatedServer@Minecraft@@QEAAXXZ", Minecraft) { @@ -89,7 +90,7 @@ TInstanceHook(void*, "??0RakPeer@RakNet@@QEAA@XZ", RakNet::RakPeer) { return original(this); } // Scoreboard -#include +#include TInstanceHook(Scoreboard*, "??0ServerScoreboard@@QEAA@VCommandSoftEnumRegistry@@PEAVLevelStorage@@@Z", Scoreboard, void** a2, class LevelStorage* a3) { Scoreboard* sc = original(this, a2, a3); @@ -107,10 +108,10 @@ TInstanceHook(Scoreboard*, "??0ServerScoreboard@@QEAA@VCommandSoftEnumRegistry@@ // } // PropertiesSettings // -> BuiltinBugFix.cpp -#include "MC/PropertiesSettings.hpp" +#include TInstanceHook(size_t, "??0PropertiesSettings@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z", PropertiesSettings, const std::string& file) { auto out = original(this, file); -// if (LL::globalConfig.enableUnoccupyPort19132) { +// if (ll::globalConfig.enableUnoccupyPort19132) { // // logger.warn("If you turn on this feature, your server will not be displayed on the LAN"); // DWORD v4Flag, v6Flag; // VirtualProtect((void*)&SharedConstants::NetworkDefaultGamePort, 4, PAGE_READWRITE, &v4Flag); diff --git a/LiteLoader/Kernel/Utils/NetworkHelper.cpp b/LiteLoader/src/llapi/utils/NetworkHelper.cpp similarity index 94% rename from LiteLoader/Kernel/Utils/NetworkHelper.cpp rename to LiteLoader/src/llapi/utils/NetworkHelper.cpp index c9d43c6..d76bcf7 100644 --- a/LiteLoader/Kernel/Utils/NetworkHelper.cpp +++ b/LiteLoader/src/llapi/utils/NetworkHelper.cpp @@ -1,11 +1,11 @@ -#include -#include -#include
+#include +#include +#include #include -#include +#include #include -#include -#include
+#include +#include using namespace std; @@ -40,7 +40,7 @@ bool HttpGet(const string& url, const httplib::Headers& headers, const function< cli->set_connection_timeout(timeout, 0); std::thread([cli, headers, callback, path{std::move(path)}]() { - if (!LL::isDebugMode()) + if (!ll::isDebugMode()) _set_se_translator(seh_exception::TranslateSEHtoCE); try { auto response = cli->Get(path.c_str(), headers); @@ -86,7 +86,7 @@ bool HttpPost(const string& url, const httplib::Headers& headers, const string& cli->set_connection_timeout(timeout, 0); std::thread([cli, headers, data, type, callback, path{std::move(path)}]() { - if (!LL::isDebugMode()) + if (!ll::isDebugMode()) _set_se_translator(seh_exception::TranslateSEHtoCE); try { auto response = cli->Post(path.c_str(), headers, data, type.c_str()); diff --git a/LiteLoader/Kernel/Utils/PlayerMap.cpp b/LiteLoader/src/llapi/utils/PlayerMap.cpp similarity index 89% rename from LiteLoader/Kernel/Utils/PlayerMap.cpp rename to LiteLoader/src/llapi/utils/PlayerMap.cpp index b4fcfd6..267122d 100644 --- a/LiteLoader/Kernel/Utils/PlayerMap.cpp +++ b/LiteLoader/src/llapi/utils/PlayerMap.cpp @@ -1,5 +1,7 @@ -#include -#include +#include +#include +#include + // PlayerMap.h // BUG: DON'T USE GLOBAL VAR WITH A CUSTOM CONSTRUCTION!!!! // static std::vector depcbs; diff --git a/LiteLoader/Kernel/Utils/PluginOwnData.cpp b/LiteLoader/src/llapi/utils/PluginOwnData.cpp similarity index 65% rename from LiteLoader/Kernel/Utils/PluginOwnData.cpp rename to LiteLoader/src/llapi/utils/PluginOwnData.cpp index 8a0bc12..b19f299 100644 --- a/LiteLoader/Kernel/Utils/PluginOwnData.cpp +++ b/LiteLoader/src/llapi/utils/PluginOwnData.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/LiteLoader/Kernel/Utils/SRWLock.cpp b/LiteLoader/src/llapi/utils/SRWLock.cpp similarity index 94% rename from LiteLoader/Kernel/Utils/SRWLock.cpp rename to LiteLoader/src/llapi/utils/SRWLock.cpp index f146016..c9443a6 100644 --- a/LiteLoader/Kernel/Utils/SRWLock.cpp +++ b/LiteLoader/src/llapi/utils/SRWLock.cpp @@ -1,5 +1,6 @@ -#include -#include + +#include +#include SRWLock::SRWLock() { if (!inited) { diff --git a/LiteLoader/src/llapi/utils/STLHelper.cpp b/LiteLoader/src/llapi/utils/STLHelper.cpp new file mode 100644 index 0000000..43518d9 --- /dev/null +++ b/LiteLoader/src/llapi/utils/STLHelper.cpp @@ -0,0 +1 @@ +#include \ No newline at end of file diff --git a/LiteLoader/Kernel/Utils/ShellLinkFile.cpp b/LiteLoader/src/llapi/utils/ShellLinkFile.cpp similarity index 99% rename from LiteLoader/Kernel/Utils/ShellLinkFile.cpp rename to LiteLoader/src/llapi/utils/ShellLinkFile.cpp index 749d263..f663eed 100644 --- a/LiteLoader/Kernel/Utils/ShellLinkFile.cpp +++ b/LiteLoader/src/llapi/utils/ShellLinkFile.cpp @@ -1,6 +1,6 @@ #include -#include -#include +#include +#include void ShellLinkFile::_Init() { auto res = ::CoInitialize(nullptr); diff --git a/LiteLoader/Kernel/Utils/StringHelper.cpp b/LiteLoader/src/llapi/utils/StringHelper.cpp similarity index 97% rename from LiteLoader/Kernel/Utils/StringHelper.cpp rename to LiteLoader/src/llapi/utils/StringHelper.cpp index 1bb2d5f..5f4a0d9 100644 --- a/LiteLoader/Kernel/Utils/StringHelper.cpp +++ b/LiteLoader/src/llapi/utils/StringHelper.cpp @@ -1,7 +1,7 @@ -#include +#include #include #include -#include +#include using namespace std; wstring str2wstr(const string& str) { diff --git a/LiteLoader/Kernel/Utils/StringReader.cpp b/LiteLoader/src/llapi/utils/StringReader.cpp similarity index 99% rename from LiteLoader/Kernel/Utils/StringReader.cpp rename to LiteLoader/src/llapi/utils/StringReader.cpp index 9e01863..12c3efc 100644 --- a/LiteLoader/Kernel/Utils/StringReader.cpp +++ b/LiteLoader/src/llapi/utils/StringReader.cpp @@ -1,4 +1,4 @@ -#include +#include #include //////////////////////////////// CONSTRUCTOR //////////////////////////////// diff --git a/LiteLoader/Kernel/Utils/WinHelper.cpp b/LiteLoader/src/llapi/utils/WinHelper.cpp similarity index 95% rename from LiteLoader/Kernel/Utils/WinHelper.cpp rename to LiteLoader/src/llapi/utils/WinHelper.cpp index 6cfe227..cef15af 100644 --- a/LiteLoader/Kernel/Utils/WinHelper.cpp +++ b/LiteLoader/src/llapi/utils/WinHelper.cpp @@ -1,12 +1,12 @@ -#include -#include -#include
-#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include -#include
+#include using namespace std; @@ -73,7 +73,7 @@ bool NewProcess(const std::string& process, std::function #include #include diff --git a/LiteLoader/Header/third-party/Nlohmann/fifo_json.hpp b/LiteLoader/third-party/include/Nlohmann/fifo_json.hpp similarity index 100% rename from LiteLoader/Header/third-party/Nlohmann/fifo_json.hpp rename to LiteLoader/third-party/include/Nlohmann/fifo_json.hpp diff --git a/LiteLoader/Header/third-party/Nlohmann/fifo_map.hpp b/LiteLoader/third-party/include/Nlohmann/fifo_map.hpp similarity index 100% rename from LiteLoader/Header/third-party/Nlohmann/fifo_map.hpp rename to LiteLoader/third-party/include/Nlohmann/fifo_map.hpp diff --git a/LiteLoader/Header/third-party/Nlohmann/json.hpp b/LiteLoader/third-party/include/Nlohmann/json.hpp similarity index 100% rename from LiteLoader/Header/third-party/Nlohmann/json.hpp rename to LiteLoader/third-party/include/Nlohmann/json.hpp diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Assertion.h b/LiteLoader/third-party/include/SQLiteCpp/Assertion.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Assertion.h rename to LiteLoader/third-party/include/SQLiteCpp/Assertion.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Backup.h b/LiteLoader/third-party/include/SQLiteCpp/Backup.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Backup.h rename to LiteLoader/third-party/include/SQLiteCpp/Backup.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Column.h b/LiteLoader/third-party/include/SQLiteCpp/Column.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Column.h rename to LiteLoader/third-party/include/SQLiteCpp/Column.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Database.h b/LiteLoader/third-party/include/SQLiteCpp/Database.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Database.h rename to LiteLoader/third-party/include/SQLiteCpp/Database.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Exception.h b/LiteLoader/third-party/include/SQLiteCpp/Exception.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Exception.h rename to LiteLoader/third-party/include/SQLiteCpp/Exception.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/SQLiteCpp.h b/LiteLoader/third-party/include/SQLiteCpp/SQLiteCpp.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/SQLiteCpp.h rename to LiteLoader/third-party/include/SQLiteCpp/SQLiteCpp.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Statement.h b/LiteLoader/third-party/include/SQLiteCpp/Statement.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Statement.h rename to LiteLoader/third-party/include/SQLiteCpp/Statement.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Transaction.h b/LiteLoader/third-party/include/SQLiteCpp/Transaction.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Transaction.h rename to LiteLoader/third-party/include/SQLiteCpp/Transaction.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/Utils.h b/LiteLoader/third-party/include/SQLiteCpp/Utils.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/Utils.h rename to LiteLoader/third-party/include/SQLiteCpp/Utils.h diff --git a/LiteLoader/Header/third-party/SQLiteCpp/VariadicBind.h b/LiteLoader/third-party/include/SQLiteCpp/VariadicBind.h similarity index 100% rename from LiteLoader/Header/third-party/SQLiteCpp/VariadicBind.h rename to LiteLoader/third-party/include/SQLiteCpp/VariadicBind.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/compact_enc_det.h b/LiteLoader/third-party/include/compact_enc_det/compact_enc_det.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/compact_enc_det.h rename to LiteLoader/third-party/include/compact_enc_det/compact_enc_det.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/compact_enc_det_generated_tables.h b/LiteLoader/third-party/include/compact_enc_det/compact_enc_det_generated_tables.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/compact_enc_det_generated_tables.h rename to LiteLoader/third-party/include/compact_enc_det/compact_enc_det_generated_tables.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/compact_enc_det_generated_tables2.h b/LiteLoader/third-party/include/compact_enc_det/compact_enc_det_generated_tables2.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/compact_enc_det_generated_tables2.h rename to LiteLoader/third-party/include/compact_enc_det/compact_enc_det_generated_tables2.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/compact_enc_det_hint_code.h b/LiteLoader/third-party/include/compact_enc_det/compact_enc_det_hint_code.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/compact_enc_det_hint_code.h rename to LiteLoader/third-party/include/compact_enc_det/compact_enc_det_hint_code.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/detail_head_string.inc b/LiteLoader/third-party/include/compact_enc_det/detail_head_string.inc similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/detail_head_string.inc rename to LiteLoader/third-party/include/compact_enc_det/detail_head_string.inc diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/basictypes.h b/LiteLoader/third-party/include/compact_enc_det/util/basictypes.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/basictypes.h rename to LiteLoader/third-party/include/compact_enc_det/util/basictypes.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/case_insensitive_hash.h b/LiteLoader/third-party/include/compact_enc_det/util/case_insensitive_hash.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/case_insensitive_hash.h rename to LiteLoader/third-party/include/compact_enc_det/util/case_insensitive_hash.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/commandlineflags.h b/LiteLoader/third-party/include/compact_enc_det/util/commandlineflags.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/commandlineflags.h rename to LiteLoader/third-party/include/compact_enc_det/util/commandlineflags.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/encodings/encodings.h b/LiteLoader/third-party/include/compact_enc_det/util/encodings/encodings.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/encodings/encodings.h rename to LiteLoader/third-party/include/compact_enc_det/util/encodings/encodings.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/encodings/encodings.pb.h b/LiteLoader/third-party/include/compact_enc_det/util/encodings/encodings.pb.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/encodings/encodings.pb.h rename to LiteLoader/third-party/include/compact_enc_det/util/encodings/encodings.pb.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/languages/languages.h b/LiteLoader/third-party/include/compact_enc_det/util/languages/languages.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/languages/languages.h rename to LiteLoader/third-party/include/compact_enc_det/util/languages/languages.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/languages/languages.pb.h b/LiteLoader/third-party/include/compact_enc_det/util/languages/languages.pb.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/languages/languages.pb.h rename to LiteLoader/third-party/include/compact_enc_det/util/languages/languages.pb.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/logging.h b/LiteLoader/third-party/include/compact_enc_det/util/logging.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/logging.h rename to LiteLoader/third-party/include/compact_enc_det/util/logging.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/port.h b/LiteLoader/third-party/include/compact_enc_det/util/port.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/port.h rename to LiteLoader/third-party/include/compact_enc_det/util/port.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/string_util.h b/LiteLoader/third-party/include/compact_enc_det/util/string_util.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/string_util.h rename to LiteLoader/third-party/include/compact_enc_det/util/string_util.h diff --git a/LiteLoader/Header/third-party/compact_enc_det/util/varsetter.h b/LiteLoader/third-party/include/compact_enc_det/util/varsetter.h similarity index 100% rename from LiteLoader/Header/third-party/compact_enc_det/util/varsetter.h rename to LiteLoader/third-party/include/compact_enc_det/util/varsetter.h diff --git a/LiteLoader/Header/third-party/dbghelp/dbghelp.h b/LiteLoader/third-party/include/dbghelp/dbghelp.h similarity index 100% rename from LiteLoader/Header/third-party/dbghelp/dbghelp.h rename to LiteLoader/third-party/include/dbghelp/dbghelp.h diff --git a/LiteLoader/Header/third-party/detours/detours.h b/LiteLoader/third-party/include/detours/detours.h similarity index 100% rename from LiteLoader/Header/third-party/detours/detours.h rename to LiteLoader/third-party/include/detours/detours.h diff --git a/LiteLoader/Header/third-party/detours/detver.h b/LiteLoader/third-party/include/detours/detver.h similarity index 100% rename from LiteLoader/Header/third-party/detours/detver.h rename to LiteLoader/third-party/include/detours/detver.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall.h b/LiteLoader/third-party/include/dyncall/dyncall.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall.h rename to LiteLoader/third-party/include/dyncall/dyncall.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_alloc.h b/LiteLoader/third-party/include/dyncall/dyncall_alloc.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_alloc.h rename to LiteLoader/third-party/include/dyncall/dyncall_alloc.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_alloc_wx.h b/LiteLoader/third-party/include/dyncall/dyncall_alloc_wx.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_alloc_wx.h rename to LiteLoader/third-party/include/dyncall/dyncall_alloc_wx.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_args.h b/LiteLoader/third-party/include/dyncall/dyncall_args.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_args.h rename to LiteLoader/third-party/include/dyncall/dyncall_args.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_callback.h b/LiteLoader/third-party/include/dyncall/dyncall_callback.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_callback.h rename to LiteLoader/third-party/include/dyncall/dyncall_callback.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_callf.h b/LiteLoader/third-party/include/dyncall/dyncall_callf.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_callf.h rename to LiteLoader/third-party/include/dyncall/dyncall_callf.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_callvm.h b/LiteLoader/third-party/include/dyncall/dyncall_callvm.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_callvm.h rename to LiteLoader/third-party/include/dyncall/dyncall_callvm.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_config.h b/LiteLoader/third-party/include/dyncall/dyncall_config.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_config.h rename to LiteLoader/third-party/include/dyncall/dyncall_config.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_macros.h b/LiteLoader/third-party/include/dyncall/dyncall_macros.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_macros.h rename to LiteLoader/third-party/include/dyncall/dyncall_macros.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_signature.h b/LiteLoader/third-party/include/dyncall/dyncall_signature.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_signature.h rename to LiteLoader/third-party/include/dyncall/dyncall_signature.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_struct.h b/LiteLoader/third-party/include/dyncall/dyncall_struct.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_struct.h rename to LiteLoader/third-party/include/dyncall/dyncall_struct.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_thunk.h b/LiteLoader/third-party/include/dyncall/dyncall_thunk.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_thunk.h rename to LiteLoader/third-party/include/dyncall/dyncall_thunk.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_types.h b/LiteLoader/third-party/include/dyncall/dyncall_types.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_types.h rename to LiteLoader/third-party/include/dyncall/dyncall_types.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_utils.h b/LiteLoader/third-party/include/dyncall/dyncall_utils.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_utils.h rename to LiteLoader/third-party/include/dyncall/dyncall_utils.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_value.h b/LiteLoader/third-party/include/dyncall/dyncall_value.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_value.h rename to LiteLoader/third-party/include/dyncall/dyncall_value.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_vector.h b/LiteLoader/third-party/include/dyncall/dyncall_vector.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_vector.h rename to LiteLoader/third-party/include/dyncall/dyncall_vector.h diff --git a/LiteLoader/Header/third-party/dyncall/dyncall_version.h b/LiteLoader/third-party/include/dyncall/dyncall_version.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dyncall_version.h rename to LiteLoader/third-party/include/dyncall/dyncall_version.h diff --git a/LiteLoader/Header/third-party/dyncall/dynload.h b/LiteLoader/third-party/include/dyncall/dynload.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dynload.h rename to LiteLoader/third-party/include/dyncall/dynload.h diff --git a/LiteLoader/Header/third-party/dyncall/dynload_alloc.h b/LiteLoader/third-party/include/dyncall/dynload_alloc.h similarity index 100% rename from LiteLoader/Header/third-party/dyncall/dynload_alloc.h rename to LiteLoader/third-party/include/dyncall/dynload_alloc.h diff --git a/LiteLoader/third-party/include/entt/config/config.h b/LiteLoader/third-party/include/entt/config/config.h new file mode 100644 index 0000000..06c42e8 --- /dev/null +++ b/LiteLoader/third-party/include/entt/config/config.h @@ -0,0 +1,81 @@ +#ifndef ENTT_CONFIG_CONFIG_H +#define ENTT_CONFIG_CONFIG_H + +#include "version.h" + +#if defined(__cpp_exceptions) && !defined(ENTT_NOEXCEPTION) +# define ENTT_CONSTEXPR +# define ENTT_THROW throw +# define ENTT_TRY try +# define ENTT_CATCH catch(...) +#else +# define ENTT_CONSTEXPR constexpr // use only with throwing functions (waiting for C++20) +# define ENTT_THROW +# define ENTT_TRY if(true) +# define ENTT_CATCH if(false) +#endif + +#ifdef ENTT_USE_ATOMIC +# include +# define ENTT_MAYBE_ATOMIC(Type) std::atomic +#else +# define ENTT_MAYBE_ATOMIC(Type) Type +#endif + +#ifndef ENTT_ID_TYPE +# include +# define ENTT_ID_TYPE std::uint32_t +#endif + +#ifndef ENTT_SPARSE_PAGE +# define ENTT_SPARSE_PAGE 4096 +#endif + +#ifndef ENTT_PACKED_PAGE +# define ENTT_PACKED_PAGE 1024 +#endif + +#ifdef ENTT_DISABLE_ASSERT +# undef ENTT_ASSERT +# define ENTT_ASSERT(condition, msg) (void(0)) +#elif !defined ENTT_ASSERT +# include +# define ENTT_ASSERT(condition, msg) assert(condition) +#endif + +#ifdef ENTT_DISABLE_ASSERT +# undef ENTT_ASSERT_CONSTEXPR +# define ENTT_ASSERT_CONSTEXPR(condition, msg) (void(0)) +#elif !defined ENTT_ASSERT_CONSTEXPR +# define ENTT_ASSERT_CONSTEXPR(condition, msg) ENTT_ASSERT(condition, msg) +#endif + +#ifdef ENTT_NO_ETO +# define ENTT_ETO_TYPE(Type) void +#else +# define ENTT_ETO_TYPE(Type) Type +#endif + +#ifdef ENTT_STANDARD_CPP +# define ENTT_NONSTD false +#else +# define ENTT_NONSTD true +# if defined __clang__ || defined __GNUC__ +# define ENTT_PRETTY_FUNCTION __PRETTY_FUNCTION__ +# define ENTT_PRETTY_FUNCTION_PREFIX '=' +# define ENTT_PRETTY_FUNCTION_SUFFIX ']' +# elif defined _MSC_VER +# define ENTT_PRETTY_FUNCTION __FUNCSIG__ +# define ENTT_PRETTY_FUNCTION_PREFIX '<' +# define ENTT_PRETTY_FUNCTION_SUFFIX '>' +# endif +#endif + +#if defined _MSC_VER +# pragma detect_mismatch("entt.version", ENTT_VERSION) +# pragma detect_mismatch("entt.noexcept", ENTT_XSTR(ENTT_TRY)) +# pragma detect_mismatch("entt.id", ENTT_XSTR(ENTT_ID_TYPE)) +# pragma detect_mismatch("entt.nonstd", ENTT_XSTR(ENTT_NONSTD)) +#endif + +#endif diff --git a/LiteLoader/third-party/include/entt/config/macro.h b/LiteLoader/third-party/include/entt/config/macro.h new file mode 100644 index 0000000..0fec4c7 --- /dev/null +++ b/LiteLoader/third-party/include/entt/config/macro.h @@ -0,0 +1,7 @@ +#ifndef ENTT_CONFIG_MACRO_H +#define ENTT_CONFIG_MACRO_H + +#define ENTT_STR(arg) #arg +#define ENTT_XSTR(arg) ENTT_STR(arg) + +#endif diff --git a/LiteLoader/third-party/include/entt/config/version.h b/LiteLoader/third-party/include/entt/config/version.h new file mode 100644 index 0000000..a07438d --- /dev/null +++ b/LiteLoader/third-party/include/entt/config/version.h @@ -0,0 +1,14 @@ +#ifndef ENTT_CONFIG_VERSION_H +#define ENTT_CONFIG_VERSION_H + +#include "macro.h" + +#define ENTT_VERSION_MAJOR 3 +#define ENTT_VERSION_MINOR 11 +#define ENTT_VERSION_PATCH 0 + +#define ENTT_VERSION \ + ENTT_XSTR(ENTT_VERSION_MAJOR) \ + "." ENTT_XSTR(ENTT_VERSION_MINOR) "." ENTT_XSTR(ENTT_VERSION_PATCH) + +#endif diff --git a/LiteLoader/third-party/include/entt/container/dense_map.hpp b/LiteLoader/third-party/include/entt/container/dense_map.hpp new file mode 100644 index 0000000..df77fa1 --- /dev/null +++ b/LiteLoader/third-party/include/entt/container/dense_map.hpp @@ -0,0 +1,1060 @@ +#ifndef ENTT_CONTAINER_DENSE_MAP_HPP +#define ENTT_CONTAINER_DENSE_MAP_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/compressed_pair.hpp" +#include "../core/iterator.hpp" +#include "../core/memory.hpp" +#include "../core/type_traits.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct dense_map_node final { + using value_type = std::pair; + + template + dense_map_node(const std::size_t pos, Args &&...args) + : next{pos}, + element{std::forward(args)...} {} + + template + dense_map_node(std::allocator_arg_t, const Allocator &allocator, const std::size_t pos, Args &&...args) + : next{pos}, + element{entt::make_obj_using_allocator(allocator, std::forward(args)...)} {} + + template + dense_map_node(std::allocator_arg_t, const Allocator &allocator, const dense_map_node &other) + : next{other.next}, + element{entt::make_obj_using_allocator(allocator, other.element)} {} + + template + dense_map_node(std::allocator_arg_t, const Allocator &allocator, dense_map_node &&other) + : next{other.next}, + element{entt::make_obj_using_allocator(allocator, std::move(other.element))} {} + + std::size_t next; + value_type element; +}; + +template +class dense_map_iterator final { + template + friend class dense_map_iterator; + + using first_type = decltype(std::as_const(std::declval()->element.first)); + using second_type = decltype((std::declval()->element.second)); + +public: + using value_type = std::pair; + using pointer = input_iterator_pointer; + using reference = value_type; + using difference_type = std::ptrdiff_t; + using iterator_category = std::input_iterator_tag; + + constexpr dense_map_iterator() noexcept + : it{} {} + + constexpr dense_map_iterator(const It iter) noexcept + : it{iter} {} + + template && std::is_constructible_v>> + constexpr dense_map_iterator(const dense_map_iterator &other) noexcept + : it{other.it} {} + + constexpr dense_map_iterator &operator++() noexcept { + return ++it, *this; + } + + constexpr dense_map_iterator operator++(int) noexcept { + dense_map_iterator orig = *this; + return ++(*this), orig; + } + + constexpr dense_map_iterator &operator--() noexcept { + return --it, *this; + } + + constexpr dense_map_iterator operator--(int) noexcept { + dense_map_iterator orig = *this; + return operator--(), orig; + } + + constexpr dense_map_iterator &operator+=(const difference_type value) noexcept { + it += value; + return *this; + } + + constexpr dense_map_iterator operator+(const difference_type value) const noexcept { + dense_map_iterator copy = *this; + return (copy += value); + } + + constexpr dense_map_iterator &operator-=(const difference_type value) noexcept { + return (*this += -value); + } + + constexpr dense_map_iterator operator-(const difference_type value) const noexcept { + return (*this + -value); + } + + [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { + return {it[value].element.first, it[value].element.second}; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return operator*(); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return {it->element.first, it->element.second}; + } + + template + friend constexpr std::ptrdiff_t operator-(const dense_map_iterator &, const dense_map_iterator &) noexcept; + + template + friend constexpr bool operator==(const dense_map_iterator &, const dense_map_iterator &) noexcept; + + template + friend constexpr bool operator<(const dense_map_iterator &, const dense_map_iterator &) noexcept; + +private: + It it; +}; + +template +[[nodiscard]] constexpr std::ptrdiff_t operator-(const dense_map_iterator &lhs, const dense_map_iterator &rhs) noexcept { + return lhs.it - rhs.it; +} + +template +[[nodiscard]] constexpr bool operator==(const dense_map_iterator &lhs, const dense_map_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const dense_map_iterator &lhs, const dense_map_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +[[nodiscard]] constexpr bool operator<(const dense_map_iterator &lhs, const dense_map_iterator &rhs) noexcept { + return lhs.it < rhs.it; +} + +template +[[nodiscard]] constexpr bool operator>(const dense_map_iterator &lhs, const dense_map_iterator &rhs) noexcept { + return rhs < lhs; +} + +template +[[nodiscard]] constexpr bool operator<=(const dense_map_iterator &lhs, const dense_map_iterator &rhs) noexcept { + return !(lhs > rhs); +} + +template +[[nodiscard]] constexpr bool operator>=(const dense_map_iterator &lhs, const dense_map_iterator &rhs) noexcept { + return !(lhs < rhs); +} + +template +class dense_map_local_iterator final { + template + friend class dense_map_local_iterator; + + using first_type = decltype(std::as_const(std::declval()->element.first)); + using second_type = decltype((std::declval()->element.second)); + +public: + using value_type = std::pair; + using pointer = input_iterator_pointer; + using reference = value_type; + using difference_type = std::ptrdiff_t; + using iterator_category = std::input_iterator_tag; + + constexpr dense_map_local_iterator() noexcept + : it{}, + offset{} {} + + constexpr dense_map_local_iterator(It iter, const std::size_t pos) noexcept + : it{iter}, + offset{pos} {} + + template && std::is_constructible_v>> + constexpr dense_map_local_iterator(const dense_map_local_iterator &other) noexcept + : it{other.it}, + offset{other.offset} {} + + constexpr dense_map_local_iterator &operator++() noexcept { + return offset = it[offset].next, *this; + } + + constexpr dense_map_local_iterator operator++(int) noexcept { + dense_map_local_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return operator*(); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return {it[offset].element.first, it[offset].element.second}; + } + + [[nodiscard]] constexpr std::size_t index() const noexcept { + return offset; + } + +private: + It it; + std::size_t offset; +}; + +template +[[nodiscard]] constexpr bool operator==(const dense_map_local_iterator &lhs, const dense_map_local_iterator &rhs) noexcept { + return lhs.index() == rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator!=(const dense_map_local_iterator &lhs, const dense_map_local_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Associative container for key-value pairs with unique keys. + * + * Internally, elements are organized into buckets. Which bucket an element is + * placed into depends entirely on the hash of its key. Keys with the same hash + * code appear in the same bucket. + * + * @tparam Key Key type of the associative container. + * @tparam Type Mapped type of the associative container. + * @tparam Hash Type of function to use to hash the keys. + * @tparam KeyEqual Type of function to use to compare the keys for equality. + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class dense_map { + static constexpr float default_threshold = 0.875f; + static constexpr std::size_t minimum_capacity = 8u; + + using node_type = internal::dense_map_node; + using alloc_traits = typename std::allocator_traits; + static_assert(std::is_same_v>, "Invalid value type"); + using sparse_container_type = std::vector>; + using packed_container_type = std::vector>; + + template + [[nodiscard]] std::size_t key_to_bucket(const Other &key) const noexcept { + return fast_mod(sparse.second()(key), bucket_count()); + } + + template + [[nodiscard]] auto constrained_find(const Other &key, std::size_t bucket) { + for(auto it = begin(bucket), last = end(bucket); it != last; ++it) { + if(packed.second()(it->first, key)) { + return begin() + static_cast(it.index()); + } + } + + return end(); + } + + template + [[nodiscard]] auto constrained_find(const Other &key, std::size_t bucket) const { + for(auto it = cbegin(bucket), last = cend(bucket); it != last; ++it) { + if(packed.second()(it->first, key)) { + return cbegin() + static_cast(it.index()); + } + } + + return cend(); + } + + template + [[nodiscard]] auto insert_or_do_nothing(Other &&key, Args &&...args) { + const auto index = key_to_bucket(key); + + if(auto it = constrained_find(key, index); it != end()) { + return std::make_pair(it, false); + } + + packed.first().emplace_back(sparse.first()[index], std::piecewise_construct, std::forward_as_tuple(std::forward(key)), std::forward_as_tuple(std::forward(args)...)); + sparse.first()[index] = packed.first().size() - 1u; + rehash_if_required(); + + return std::make_pair(--end(), true); + } + + template + [[nodiscard]] auto insert_or_overwrite(Other &&key, Arg &&value) { + const auto index = key_to_bucket(key); + + if(auto it = constrained_find(key, index); it != end()) { + it->second = std::forward(value); + return std::make_pair(it, false); + } + + packed.first().emplace_back(sparse.first()[index], std::forward(key), std::forward(value)); + sparse.first()[index] = packed.first().size() - 1u; + rehash_if_required(); + + return std::make_pair(--end(), true); + } + + void move_and_pop(const std::size_t pos) { + if(const auto last = size() - 1u; pos != last) { + size_type *curr = sparse.first().data() + key_to_bucket(packed.first().back().element.first); + packed.first()[pos] = std::move(packed.first().back()); + for(; *curr != last; curr = &packed.first()[*curr].next) {} + *curr = pos; + } + + packed.first().pop_back(); + } + + void rehash_if_required() { + if(size() > (bucket_count() * max_load_factor())) { + rehash(bucket_count() * 2u); + } + } + +public: + /*! @brief Key type of the container. */ + using key_type = Key; + /*! @brief Mapped type of the container. */ + using mapped_type = Type; + /*! @brief Key-value type of the container. */ + using value_type = std::pair; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Type of function to use to hash the keys. */ + using hasher = Hash; + /*! @brief Type of function to use to compare the keys for equality. */ + using key_equal = KeyEqual; + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Input iterator type. */ + using iterator = internal::dense_map_iterator; + /*! @brief Constant input iterator type. */ + using const_iterator = internal::dense_map_iterator; + /*! @brief Input iterator type. */ + using local_iterator = internal::dense_map_local_iterator; + /*! @brief Constant input iterator type. */ + using const_local_iterator = internal::dense_map_local_iterator; + + /*! @brief Default constructor. */ + dense_map() + : dense_map{minimum_capacity} {} + + /** + * @brief Constructs an empty container with a given allocator. + * @param allocator The allocator to use. + */ + explicit dense_map(const allocator_type &allocator) + : dense_map{minimum_capacity, hasher{}, key_equal{}, allocator} {} + + /** + * @brief Constructs an empty container with a given allocator and user + * supplied minimal number of buckets. + * @param cnt Minimal number of buckets. + * @param allocator The allocator to use. + */ + dense_map(const size_type cnt, const allocator_type &allocator) + : dense_map{cnt, hasher{}, key_equal{}, allocator} {} + + /** + * @brief Constructs an empty container with a given allocator, hash + * function and user supplied minimal number of buckets. + * @param cnt Minimal number of buckets. + * @param hash Hash function to use. + * @param allocator The allocator to use. + */ + dense_map(const size_type cnt, const hasher &hash, const allocator_type &allocator) + : dense_map{cnt, hash, key_equal{}, allocator} {} + + /** + * @brief Constructs an empty container with a given allocator, hash + * function, compare function and user supplied minimal number of buckets. + * @param cnt Minimal number of buckets. + * @param hash Hash function to use. + * @param equal Compare function to use. + * @param allocator The allocator to use. + */ + explicit dense_map(const size_type cnt, const hasher &hash = hasher{}, const key_equal &equal = key_equal{}, const allocator_type &allocator = allocator_type{}) + : sparse{allocator, hash}, + packed{allocator, equal}, + threshold{default_threshold} { + rehash(cnt); + } + + /*! @brief Default copy constructor. */ + dense_map(const dense_map &) = default; + + /** + * @brief Allocator-extended copy constructor. + * @param other The instance to copy from. + * @param allocator The allocator to use. + */ + dense_map(const dense_map &other, const allocator_type &allocator) + : sparse{std::piecewise_construct, std::forward_as_tuple(other.sparse.first(), allocator), std::forward_as_tuple(other.sparse.second())}, + packed{std::piecewise_construct, std::forward_as_tuple(other.packed.first(), allocator), std::forward_as_tuple(other.packed.second())}, + threshold{other.threshold} {} + + /*! @brief Default move constructor. */ + dense_map(dense_map &&) noexcept(std::is_nothrow_move_constructible_v> &&std::is_nothrow_move_constructible_v>) = default; + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + dense_map(dense_map &&other, const allocator_type &allocator) + : sparse{std::piecewise_construct, std::forward_as_tuple(std::move(other.sparse.first()), allocator), std::forward_as_tuple(std::move(other.sparse.second()))}, + packed{std::piecewise_construct, std::forward_as_tuple(std::move(other.packed.first()), allocator), std::forward_as_tuple(std::move(other.packed.second()))}, + threshold{other.threshold} {} + + /** + * @brief Default copy assignment operator. + * @return This container. + */ + dense_map &operator=(const dense_map &) = default; + + /** + * @brief Default move assignment operator. + * @return This container. + */ + dense_map &operator=(dense_map &&) noexcept(std::is_nothrow_move_assignable_v> &&std::is_nothrow_move_assignable_v>) = default; + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return sparse.first().get_allocator(); + } + + /** + * @brief Returns an iterator to the beginning. + * + * The returned iterator points to the first instance of the internal array. + * If the array is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first instance of the internal array. + */ + [[nodiscard]] const_iterator cbegin() const noexcept { + return packed.first().begin(); + } + + /*! @copydoc cbegin */ + [[nodiscard]] const_iterator begin() const noexcept { + return cbegin(); + } + + /*! @copydoc begin */ + [[nodiscard]] iterator begin() noexcept { + return packed.first().begin(); + } + + /** + * @brief Returns an iterator to the end. + * + * The returned iterator points to the element following the last instance + * of the internal array. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the element following the last instance of the + * internal array. + */ + [[nodiscard]] const_iterator cend() const noexcept { + return packed.first().end(); + } + + /*! @copydoc cend */ + [[nodiscard]] const_iterator end() const noexcept { + return cend(); + } + + /*! @copydoc end */ + [[nodiscard]] iterator end() noexcept { + return packed.first().end(); + } + + /** + * @brief Checks whether a container is empty. + * @return True if the container is empty, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return packed.first().empty(); + } + + /** + * @brief Returns the number of elements in a container. + * @return Number of elements in a container. + */ + [[nodiscard]] size_type size() const noexcept { + return packed.first().size(); + } + + /** + * @brief Returns the maximum possible number of elements. + * @return Maximum possible number of elements. + */ + [[nodiscard]] size_type max_size() const noexcept { + return packed.first().max_size(); + } + + /*! @brief Clears the container. */ + void clear() noexcept { + sparse.first().clear(); + packed.first().clear(); + rehash(0u); + } + + /** + * @brief Inserts an element into the container, if the key does not exist. + * @param value A key-value pair eventually convertible to the value type. + * @return A pair consisting of an iterator to the inserted element (or to + * the element that prevented the insertion) and a bool denoting whether the + * insertion took place. + */ + std::pair insert(const value_type &value) { + return insert_or_do_nothing(value.first, value.second); + } + + /*! @copydoc insert */ + std::pair insert(value_type &&value) { + return insert_or_do_nothing(std::move(value.first), std::move(value.second)); + } + + /** + * @copydoc insert + * @tparam Arg Type of the key-value pair to insert into the container. + */ + template + std::enable_if_t, std::pair> + insert(Arg &&value) { + return insert_or_do_nothing(std::forward(value).first, std::forward(value).second); + } + + /** + * @brief Inserts elements into the container, if their keys do not exist. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of elements. + * @param last An iterator past the last element of the range of elements. + */ + template + void insert(It first, It last) { + for(; first != last; ++first) { + insert(*first); + } + } + + /** + * @brief Inserts an element into the container or assigns to the current + * element if the key already exists. + * @tparam Arg Type of the value to insert or assign. + * @param key A key used both to look up and to insert if not found. + * @param value A value to insert or assign. + * @return A pair consisting of an iterator to the element and a bool + * denoting whether the insertion took place. + */ + template + std::pair insert_or_assign(const key_type &key, Arg &&value) { + return insert_or_overwrite(key, std::forward(value)); + } + + /*! @copydoc insert_or_assign */ + template + std::pair insert_or_assign(key_type &&key, Arg &&value) { + return insert_or_overwrite(std::move(key), std::forward(value)); + } + + /** + * @brief Constructs an element in-place, if the key does not exist. + * + * The element is also constructed when the container already has the key, + * in which case the newly constructed object is destroyed immediately. + * + * @tparam Args Types of arguments to forward to the constructor of the + * element. + * @param args Arguments to forward to the constructor of the element. + * @return A pair consisting of an iterator to the inserted element (or to + * the element that prevented the insertion) and a bool denoting whether the + * insertion took place. + */ + template + std::pair emplace([[maybe_unused]] Args &&...args) { + if constexpr(sizeof...(Args) == 0u) { + return insert_or_do_nothing(key_type{}); + } else if constexpr(sizeof...(Args) == 1u) { + return insert_or_do_nothing(std::forward(args).first..., std::forward(args).second...); + } else if constexpr(sizeof...(Args) == 2u) { + return insert_or_do_nothing(std::forward(args)...); + } else { + auto &node = packed.first().emplace_back(packed.first().size(), std::forward(args)...); + const auto index = key_to_bucket(node.element.first); + + if(auto it = constrained_find(node.element.first, index); it != end()) { + packed.first().pop_back(); + return std::make_pair(it, false); + } + + std::swap(node.next, sparse.first()[index]); + rehash_if_required(); + + return std::make_pair(--end(), true); + } + } + + /** + * @brief Inserts in-place if the key does not exist, does nothing if the + * key exists. + * @tparam Args Types of arguments to forward to the constructor of the + * element. + * @param key A key used both to look up and to insert if not found. + * @param args Arguments to forward to the constructor of the element. + * @return A pair consisting of an iterator to the inserted element (or to + * the element that prevented the insertion) and a bool denoting whether the + * insertion took place. + */ + template + std::pair try_emplace(const key_type &key, Args &&...args) { + return insert_or_do_nothing(key, std::forward(args)...); + } + + /*! @copydoc try_emplace */ + template + std::pair try_emplace(key_type &&key, Args &&...args) { + return insert_or_do_nothing(std::move(key), std::forward(args)...); + } + + /** + * @brief Removes an element from a given position. + * @param pos An iterator to the element to remove. + * @return An iterator following the removed element. + */ + iterator erase(const_iterator pos) { + const auto diff = pos - cbegin(); + erase(pos->first); + return begin() + diff; + } + + /** + * @brief Removes the given elements from a container. + * @param first An iterator to the first element of the range of elements. + * @param last An iterator past the last element of the range of elements. + * @return An iterator following the last removed element. + */ + iterator erase(const_iterator first, const_iterator last) { + const auto dist = first - cbegin(); + + for(auto from = last - cbegin(); from != dist; --from) { + erase(packed.first()[from - 1u].element.first); + } + + return (begin() + dist); + } + + /** + * @brief Removes the element associated with a given key. + * @param key A key value of an element to remove. + * @return Number of elements removed (either 0 or 1). + */ + size_type erase(const key_type &key) { + for(size_type *curr = sparse.first().data() + key_to_bucket(key); *curr != (std::numeric_limits::max)(); curr = &packed.first()[*curr].next) { + if(packed.second()(packed.first()[*curr].element.first, key)) { + const auto index = *curr; + *curr = packed.first()[*curr].next; + move_and_pop(index); + return 1u; + } + } + + return 0u; + } + + /** + * @brief Exchanges the contents with those of a given container. + * @param other Container to exchange the content with. + */ + void swap(dense_map &other) { + using std::swap; + swap(sparse, other.sparse); + swap(packed, other.packed); + swap(threshold, other.threshold); + } + + /** + * @brief Accesses a given element with bounds checking. + * @param key A key of an element to find. + * @return A reference to the mapped value of the requested element. + */ + [[nodiscard]] mapped_type &at(const key_type &key) { + auto it = find(key); + ENTT_ASSERT(it != end(), "Invalid key"); + return it->second; + } + + /*! @copydoc at */ + [[nodiscard]] const mapped_type &at(const key_type &key) const { + auto it = find(key); + ENTT_ASSERT(it != cend(), "Invalid key"); + return it->second; + } + + /** + * @brief Accesses or inserts a given element. + * @param key A key of an element to find or insert. + * @return A reference to the mapped value of the requested element. + */ + [[nodiscard]] mapped_type &operator[](const key_type &key) { + return insert_or_do_nothing(key).first->second; + } + + /** + * @brief Accesses or inserts a given element. + * @param key A key of an element to find or insert. + * @return A reference to the mapped value of the requested element. + */ + [[nodiscard]] mapped_type &operator[](key_type &&key) { + return insert_or_do_nothing(std::move(key)).first->second; + } + + /** + * @brief Returns the number of elements matching a key (either 1 or 0). + * @param key Key value of an element to search for. + * @return Number of elements matching the key (either 1 or 0). + */ + [[nodiscard]] size_type count(const key_type &key) const { + return find(key) != end(); + } + + /** + * @brief Returns the number of elements matching a key (either 1 or 0). + * @tparam Other Type of the key value of an element to search for. + * @param key Key value of an element to search for. + * @return Number of elements matching the key (either 1 or 0). + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + count(const Other &key) const { + return find(key) != end(); + } + + /** + * @brief Finds an element with a given key. + * @param key Key value of an element to search for. + * @return An iterator to an element with the given key. If no such element + * is found, a past-the-end iterator is returned. + */ + [[nodiscard]] iterator find(const key_type &key) { + return constrained_find(key, key_to_bucket(key)); + } + + /*! @copydoc find */ + [[nodiscard]] const_iterator find(const key_type &key) const { + return constrained_find(key, key_to_bucket(key)); + } + + /** + * @brief Finds an element with a key that compares _equivalent_ to a given + * key. + * @tparam Other Type of the key value of an element to search for. + * @param key Key value of an element to search for. + * @return An iterator to an element with the given key. If no such element + * is found, a past-the-end iterator is returned. + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + find(const Other &key) { + return constrained_find(key, key_to_bucket(key)); + } + + /*! @copydoc find */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + find(const Other &key) const { + return constrained_find(key, key_to_bucket(key)); + } + + /** + * @brief Returns a range containing all elements with a given key. + * @param key Key value of an element to search for. + * @return A pair of iterators pointing to the first element and past the + * last element of the range. + */ + [[nodiscard]] std::pair equal_range(const key_type &key) { + const auto it = find(key); + return {it, it + !(it == end())}; + } + + /*! @copydoc equal_range */ + [[nodiscard]] std::pair equal_range(const key_type &key) const { + const auto it = find(key); + return {it, it + !(it == cend())}; + } + + /** + * @brief Returns a range containing all elements that compare _equivalent_ + * to a given key. + * @tparam Other Type of an element to search for. + * @param key Key value of an element to search for. + * @return A pair of iterators pointing to the first element and past the + * last element of the range. + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t>> + equal_range(const Other &key) { + const auto it = find(key); + return {it, it + !(it == end())}; + } + + /*! @copydoc equal_range */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t>> + equal_range(const Other &key) const { + const auto it = find(key); + return {it, it + !(it == cend())}; + } + + /** + * @brief Checks if the container contains an element with a given key. + * @param key Key value of an element to search for. + * @return True if there is such an element, false otherwise. + */ + [[nodiscard]] bool contains(const key_type &key) const { + return (find(key) != cend()); + } + + /** + * @brief Checks if the container contains an element with a key that + * compares _equivalent_ to a given value. + * @tparam Other Type of the key value of an element to search for. + * @param key Key value of an element to search for. + * @return True if there is such an element, false otherwise. + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + contains(const Other &key) const { + return (find(key) != cend()); + } + + /** + * @brief Returns an iterator to the beginning of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the beginning of the given bucket. + */ + [[nodiscard]] const_local_iterator cbegin(const size_type index) const { + return {packed.first().begin(), sparse.first()[index]}; + } + + /** + * @brief Returns an iterator to the beginning of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the beginning of the given bucket. + */ + [[nodiscard]] const_local_iterator begin(const size_type index) const { + return cbegin(index); + } + + /** + * @brief Returns an iterator to the beginning of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the beginning of the given bucket. + */ + [[nodiscard]] local_iterator begin(const size_type index) { + return {packed.first().begin(), sparse.first()[index]}; + } + + /** + * @brief Returns an iterator to the end of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the end of the given bucket. + */ + [[nodiscard]] const_local_iterator cend([[maybe_unused]] const size_type index) const { + return {packed.first().begin(), (std::numeric_limits::max)()}; + } + + /** + * @brief Returns an iterator to the end of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the end of the given bucket. + */ + [[nodiscard]] const_local_iterator end(const size_type index) const { + return cend(index); + } + + /** + * @brief Returns an iterator to the end of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the end of the given bucket. + */ + [[nodiscard]] local_iterator end([[maybe_unused]] const size_type index) { + return {packed.first().begin(), (std::numeric_limits::max)()}; + } + + /** + * @brief Returns the number of buckets. + * @return The number of buckets. + */ + [[nodiscard]] size_type bucket_count() const { + return sparse.first().size(); + } + + /** + * @brief Returns the maximum number of buckets. + * @return The maximum number of buckets. + */ + [[nodiscard]] size_type max_bucket_count() const { + return sparse.first().max_size(); + } + + /** + * @brief Returns the number of elements in a given bucket. + * @param index The index of the bucket to examine. + * @return The number of elements in the given bucket. + */ + [[nodiscard]] size_type bucket_size(const size_type index) const { + return static_cast(std::distance(begin(index), end(index))); + } + + /** + * @brief Returns the bucket for a given key. + * @param key The value of the key to examine. + * @return The bucket for the given key. + */ + [[nodiscard]] size_type bucket(const key_type &key) const { + return key_to_bucket(key); + } + + /** + * @brief Returns the average number of elements per bucket. + * @return The average number of elements per bucket. + */ + [[nodiscard]] float load_factor() const { + return size() / static_cast(bucket_count()); + } + + /** + * @brief Returns the maximum average number of elements per bucket. + * @return The maximum average number of elements per bucket. + */ + [[nodiscard]] float max_load_factor() const { + return threshold; + } + + /** + * @brief Sets the desired maximum average number of elements per bucket. + * @param value A desired maximum average number of elements per bucket. + */ + void max_load_factor(const float value) { + ENTT_ASSERT(value > 0.f, "Invalid load factor"); + threshold = value; + rehash(0u); + } + + /** + * @brief Reserves at least the specified number of buckets and regenerates + * the hash table. + * @param cnt New number of buckets. + */ + void rehash(const size_type cnt) { + auto value = cnt > minimum_capacity ? cnt : minimum_capacity; + const auto cap = static_cast(size() / max_load_factor()); + value = value > cap ? value : cap; + + if(const auto sz = next_power_of_two(value); sz != bucket_count()) { + sparse.first().resize(sz); + + for(auto &&elem: sparse.first()) { + elem = std::numeric_limits::max(); + } + + for(size_type pos{}, last = size(); pos < last; ++pos) { + const auto index = key_to_bucket(packed.first()[pos].element.first); + packed.first()[pos].next = std::exchange(sparse.first()[index], pos); + } + } + } + + /** + * @brief Reserves space for at least the specified number of elements and + * regenerates the hash table. + * @param cnt New number of elements. + */ + void reserve(const size_type cnt) { + packed.first().reserve(cnt); + rehash(static_cast(std::ceil(cnt / max_load_factor()))); + } + + /** + * @brief Returns the function used to hash the keys. + * @return The function used to hash the keys. + */ + [[nodiscard]] hasher hash_function() const { + return sparse.second(); + } + + /** + * @brief Returns the function used to compare keys for equality. + * @return The function used to compare keys for equality. + */ + [[nodiscard]] key_equal key_eq() const { + return packed.second(); + } + +private: + compressed_pair sparse; + compressed_pair packed; + float threshold; +}; + +} // namespace entt + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace std { + +template +struct uses_allocator, Allocator> + : std::true_type {}; + +} // namespace std + +/** + * Internal details not to be documented. + * @endcond + */ + +#endif diff --git a/LiteLoader/third-party/include/entt/container/dense_set.hpp b/LiteLoader/third-party/include/entt/container/dense_set.hpp new file mode 100644 index 0000000..ab5c1bb --- /dev/null +++ b/LiteLoader/third-party/include/entt/container/dense_set.hpp @@ -0,0 +1,895 @@ +#ifndef ENTT_CONTAINER_DENSE_SET_HPP +#define ENTT_CONTAINER_DENSE_SET_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/compressed_pair.hpp" +#include "../core/memory.hpp" +#include "../core/type_traits.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class dense_set_iterator final { + template + friend class dense_set_iterator; + +public: + using value_type = typename It::value_type::second_type; + using pointer = const value_type *; + using reference = const value_type &; + using difference_type = std::ptrdiff_t; + using iterator_category = std::random_access_iterator_tag; + + constexpr dense_set_iterator() noexcept + : it{} {} + + constexpr dense_set_iterator(const It iter) noexcept + : it{iter} {} + + template && std::is_constructible_v>> + constexpr dense_set_iterator(const dense_set_iterator &other) noexcept + : it{other.it} {} + + constexpr dense_set_iterator &operator++() noexcept { + return ++it, *this; + } + + constexpr dense_set_iterator operator++(int) noexcept { + dense_set_iterator orig = *this; + return ++(*this), orig; + } + + constexpr dense_set_iterator &operator--() noexcept { + return --it, *this; + } + + constexpr dense_set_iterator operator--(int) noexcept { + dense_set_iterator orig = *this; + return operator--(), orig; + } + + constexpr dense_set_iterator &operator+=(const difference_type value) noexcept { + it += value; + return *this; + } + + constexpr dense_set_iterator operator+(const difference_type value) const noexcept { + dense_set_iterator copy = *this; + return (copy += value); + } + + constexpr dense_set_iterator &operator-=(const difference_type value) noexcept { + return (*this += -value); + } + + constexpr dense_set_iterator operator-(const difference_type value) const noexcept { + return (*this + -value); + } + + [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { + return it[value].second; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return std::addressof(it->second); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return *operator->(); + } + + template + friend constexpr std::ptrdiff_t operator-(const dense_set_iterator &, const dense_set_iterator &) noexcept; + + template + friend constexpr bool operator==(const dense_set_iterator &, const dense_set_iterator &) noexcept; + + template + friend constexpr bool operator<(const dense_set_iterator &, const dense_set_iterator &) noexcept; + +private: + It it; +}; + +template +[[nodiscard]] constexpr std::ptrdiff_t operator-(const dense_set_iterator &lhs, const dense_set_iterator &rhs) noexcept { + return lhs.it - rhs.it; +} + +template +[[nodiscard]] constexpr bool operator==(const dense_set_iterator &lhs, const dense_set_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const dense_set_iterator &lhs, const dense_set_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +[[nodiscard]] constexpr bool operator<(const dense_set_iterator &lhs, const dense_set_iterator &rhs) noexcept { + return lhs.it < rhs.it; +} + +template +[[nodiscard]] constexpr bool operator>(const dense_set_iterator &lhs, const dense_set_iterator &rhs) noexcept { + return rhs < lhs; +} + +template +[[nodiscard]] constexpr bool operator<=(const dense_set_iterator &lhs, const dense_set_iterator &rhs) noexcept { + return !(lhs > rhs); +} + +template +[[nodiscard]] constexpr bool operator>=(const dense_set_iterator &lhs, const dense_set_iterator &rhs) noexcept { + return !(lhs < rhs); +} + +template +class dense_set_local_iterator final { + template + friend class dense_set_local_iterator; + +public: + using value_type = typename It::value_type::second_type; + using pointer = const value_type *; + using reference = const value_type &; + using difference_type = std::ptrdiff_t; + using iterator_category = std::forward_iterator_tag; + + constexpr dense_set_local_iterator() noexcept + : it{}, + offset{} {} + + constexpr dense_set_local_iterator(It iter, const std::size_t pos) noexcept + : it{iter}, + offset{pos} {} + + template && std::is_constructible_v>> + constexpr dense_set_local_iterator(const dense_set_local_iterator &other) noexcept + : it{other.it}, + offset{other.offset} {} + + constexpr dense_set_local_iterator &operator++() noexcept { + return offset = it[offset].first, *this; + } + + constexpr dense_set_local_iterator operator++(int) noexcept { + dense_set_local_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return std::addressof(it[offset].second); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return *operator->(); + } + + [[nodiscard]] constexpr std::size_t index() const noexcept { + return offset; + } + +private: + It it; + std::size_t offset; +}; + +template +[[nodiscard]] constexpr bool operator==(const dense_set_local_iterator &lhs, const dense_set_local_iterator &rhs) noexcept { + return lhs.index() == rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator!=(const dense_set_local_iterator &lhs, const dense_set_local_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Associative container for unique objects of a given type. + * + * Internally, elements are organized into buckets. Which bucket an element is + * placed into depends entirely on its hash. Elements with the same hash code + * appear in the same bucket. + * + * @tparam Type Value type of the associative container. + * @tparam Hash Type of function to use to hash the values. + * @tparam KeyEqual Type of function to use to compare the values for equality. + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class dense_set { + static constexpr float default_threshold = 0.875f; + static constexpr std::size_t minimum_capacity = 8u; + + using node_type = std::pair; + using alloc_traits = std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using sparse_container_type = std::vector>; + using packed_container_type = std::vector>; + + template + [[nodiscard]] std::size_t value_to_bucket(const Other &value) const noexcept { + return fast_mod(sparse.second()(value), bucket_count()); + } + + template + [[nodiscard]] auto constrained_find(const Other &value, std::size_t bucket) { + for(auto it = begin(bucket), last = end(bucket); it != last; ++it) { + if(packed.second()(*it, value)) { + return begin() + static_cast(it.index()); + } + } + + return end(); + } + + template + [[nodiscard]] auto constrained_find(const Other &value, std::size_t bucket) const { + for(auto it = cbegin(bucket), last = cend(bucket); it != last; ++it) { + if(packed.second()(*it, value)) { + return cbegin() + static_cast(it.index()); + } + } + + return cend(); + } + + template + [[nodiscard]] auto insert_or_do_nothing(Other &&value) { + const auto index = value_to_bucket(value); + + if(auto it = constrained_find(value, index); it != end()) { + return std::make_pair(it, false); + } + + packed.first().emplace_back(sparse.first()[index], std::forward(value)); + sparse.first()[index] = packed.first().size() - 1u; + rehash_if_required(); + + return std::make_pair(--end(), true); + } + + void move_and_pop(const std::size_t pos) { + if(const auto last = size() - 1u; pos != last) { + size_type *curr = sparse.first().data() + value_to_bucket(packed.first().back().second); + packed.first()[pos] = std::move(packed.first().back()); + for(; *curr != last; curr = &packed.first()[*curr].first) {} + *curr = pos; + } + + packed.first().pop_back(); + } + + void rehash_if_required() { + if(size() > (bucket_count() * max_load_factor())) { + rehash(bucket_count() * 2u); + } + } + +public: + /*! @brief Key type of the container. */ + using key_type = Type; + /*! @brief Value type of the container. */ + using value_type = Type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Type of function to use to hash the elements. */ + using hasher = Hash; + /*! @brief Type of function to use to compare the elements for equality. */ + using key_equal = KeyEqual; + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Random access iterator type. */ + using iterator = internal::dense_set_iterator; + /*! @brief Constant random access iterator type. */ + using const_iterator = internal::dense_set_iterator; + /*! @brief Forward iterator type. */ + using local_iterator = internal::dense_set_local_iterator; + /*! @brief Constant forward iterator type. */ + using const_local_iterator = internal::dense_set_local_iterator; + + /*! @brief Default constructor. */ + dense_set() + : dense_set{minimum_capacity} {} + + /** + * @brief Constructs an empty container with a given allocator. + * @param allocator The allocator to use. + */ + explicit dense_set(const allocator_type &allocator) + : dense_set{minimum_capacity, hasher{}, key_equal{}, allocator} {} + + /** + * @brief Constructs an empty container with a given allocator and user + * supplied minimal number of buckets. + * @param cnt Minimal number of buckets. + * @param allocator The allocator to use. + */ + dense_set(const size_type cnt, const allocator_type &allocator) + : dense_set{cnt, hasher{}, key_equal{}, allocator} {} + + /** + * @brief Constructs an empty container with a given allocator, hash + * function and user supplied minimal number of buckets. + * @param cnt Minimal number of buckets. + * @param hash Hash function to use. + * @param allocator The allocator to use. + */ + dense_set(const size_type cnt, const hasher &hash, const allocator_type &allocator) + : dense_set{cnt, hash, key_equal{}, allocator} {} + + /** + * @brief Constructs an empty container with a given allocator, hash + * function, compare function and user supplied minimal number of buckets. + * @param cnt Minimal number of buckets. + * @param hash Hash function to use. + * @param equal Compare function to use. + * @param allocator The allocator to use. + */ + explicit dense_set(const size_type cnt, const hasher &hash = hasher{}, const key_equal &equal = key_equal{}, const allocator_type &allocator = allocator_type{}) + : sparse{allocator, hash}, + packed{allocator, equal}, + threshold{default_threshold} { + rehash(cnt); + } + + /*! @brief Default copy constructor. */ + dense_set(const dense_set &) = default; + + /** + * @brief Allocator-extended copy constructor. + * @param other The instance to copy from. + * @param allocator The allocator to use. + */ + dense_set(const dense_set &other, const allocator_type &allocator) + : sparse{std::piecewise_construct, std::forward_as_tuple(other.sparse.first(), allocator), std::forward_as_tuple(other.sparse.second())}, + packed{std::piecewise_construct, std::forward_as_tuple(other.packed.first(), allocator), std::forward_as_tuple(other.packed.second())}, + threshold{other.threshold} {} + + /*! @brief Default move constructor. */ + dense_set(dense_set &&) noexcept(std::is_nothrow_move_constructible_v> &&std::is_nothrow_move_constructible_v>) = default; + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + dense_set(dense_set &&other, const allocator_type &allocator) + : sparse{std::piecewise_construct, std::forward_as_tuple(std::move(other.sparse.first()), allocator), std::forward_as_tuple(std::move(other.sparse.second()))}, + packed{std::piecewise_construct, std::forward_as_tuple(std::move(other.packed.first()), allocator), std::forward_as_tuple(std::move(other.packed.second()))}, + threshold{other.threshold} {} + + /** + * @brief Default copy assignment operator. + * @return This container. + */ + dense_set &operator=(const dense_set &) = default; + + /** + * @brief Default move assignment operator. + * @return This container. + */ + dense_set &operator=(dense_set &&) noexcept(std::is_nothrow_move_assignable_v> &&std::is_nothrow_move_assignable_v>) = default; + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return sparse.first().get_allocator(); + } + + /** + * @brief Returns an iterator to the beginning. + * + * The returned iterator points to the first instance of the internal array. + * If the array is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first instance of the internal array. + */ + [[nodiscard]] const_iterator cbegin() const noexcept { + return packed.first().begin(); + } + + /*! @copydoc cbegin */ + [[nodiscard]] const_iterator begin() const noexcept { + return cbegin(); + } + + /*! @copydoc begin */ + [[nodiscard]] iterator begin() noexcept { + return packed.first().begin(); + } + + /** + * @brief Returns an iterator to the end. + * + * The returned iterator points to the element following the last instance + * of the internal array. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the element following the last instance of the + * internal array. + */ + [[nodiscard]] const_iterator cend() const noexcept { + return packed.first().end(); + } + + /*! @copydoc cend */ + [[nodiscard]] const_iterator end() const noexcept { + return cend(); + } + + /*! @copydoc end */ + [[nodiscard]] iterator end() noexcept { + return packed.first().end(); + } + + /** + * @brief Checks whether a container is empty. + * @return True if the container is empty, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return packed.first().empty(); + } + + /** + * @brief Returns the number of elements in a container. + * @return Number of elements in a container. + */ + [[nodiscard]] size_type size() const noexcept { + return packed.first().size(); + } + + /** + * @brief Returns the maximum possible number of elements. + * @return Maximum possible number of elements. + */ + [[nodiscard]] size_type max_size() const noexcept { + return packed.first().max_size(); + } + + /*! @brief Clears the container. */ + void clear() noexcept { + sparse.first().clear(); + packed.first().clear(); + rehash(0u); + } + + /** + * @brief Inserts an element into the container, if it does not exist. + * @param value An element to insert into the container. + * @return A pair consisting of an iterator to the inserted element (or to + * the element that prevented the insertion) and a bool denoting whether the + * insertion took place. + */ + std::pair insert(const value_type &value) { + return insert_or_do_nothing(value); + } + + /*! @copydoc insert */ + std::pair insert(value_type &&value) { + return insert_or_do_nothing(std::move(value)); + } + + /** + * @brief Inserts elements into the container, if they do not exist. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of elements. + * @param last An iterator past the last element of the range of elements. + */ + template + void insert(It first, It last) { + for(; first != last; ++first) { + insert(*first); + } + } + + /** + * @brief Constructs an element in-place, if it does not exist. + * + * The element is also constructed when the container already has the key, + * in which case the newly constructed object is destroyed immediately. + * + * @tparam Args Types of arguments to forward to the constructor of the + * element. + * @param args Arguments to forward to the constructor of the element. + * @return A pair consisting of an iterator to the inserted element (or to + * the element that prevented the insertion) and a bool denoting whether the + * insertion took place. + */ + template + std::pair emplace(Args &&...args) { + if constexpr(((sizeof...(Args) == 1u) && ... && std::is_same_v, value_type>)) { + return insert_or_do_nothing(std::forward(args)...); + } else { + auto &node = packed.first().emplace_back(std::piecewise_construct, std::make_tuple(packed.first().size()), std::forward_as_tuple(std::forward(args)...)); + const auto index = value_to_bucket(node.second); + + if(auto it = constrained_find(node.second, index); it != end()) { + packed.first().pop_back(); + return std::make_pair(it, false); + } + + std::swap(node.first, sparse.first()[index]); + rehash_if_required(); + + return std::make_pair(--end(), true); + } + } + + /** + * @brief Removes an element from a given position. + * @param pos An iterator to the element to remove. + * @return An iterator following the removed element. + */ + iterator erase(const_iterator pos) { + const auto diff = pos - cbegin(); + erase(*pos); + return begin() + diff; + } + + /** + * @brief Removes the given elements from a container. + * @param first An iterator to the first element of the range of elements. + * @param last An iterator past the last element of the range of elements. + * @return An iterator following the last removed element. + */ + iterator erase(const_iterator first, const_iterator last) { + const auto dist = first - cbegin(); + + for(auto from = last - cbegin(); from != dist; --from) { + erase(packed.first()[from - 1u].second); + } + + return (begin() + dist); + } + + /** + * @brief Removes the element associated with a given value. + * @param value Value of an element to remove. + * @return Number of elements removed (either 0 or 1). + */ + size_type erase(const value_type &value) { + for(size_type *curr = sparse.first().data() + value_to_bucket(value); *curr != (std::numeric_limits::max)(); curr = &packed.first()[*curr].first) { + if(packed.second()(packed.first()[*curr].second, value)) { + const auto index = *curr; + *curr = packed.first()[*curr].first; + move_and_pop(index); + return 1u; + } + } + + return 0u; + } + + /** + * @brief Exchanges the contents with those of a given container. + * @param other Container to exchange the content with. + */ + void swap(dense_set &other) { + using std::swap; + swap(sparse, other.sparse); + swap(packed, other.packed); + swap(threshold, other.threshold); + } + + /** + * @brief Returns the number of elements matching a value (either 1 or 0). + * @param key Key value of an element to search for. + * @return Number of elements matching the key (either 1 or 0). + */ + [[nodiscard]] size_type count(const value_type &key) const { + return find(key) != end(); + } + + /** + * @brief Returns the number of elements matching a key (either 1 or 0). + * @tparam Other Type of the key value of an element to search for. + * @param key Key value of an element to search for. + * @return Number of elements matching the key (either 1 or 0). + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + count(const Other &key) const { + return find(key) != end(); + } + + /** + * @brief Finds an element with a given value. + * @param value Value of an element to search for. + * @return An iterator to an element with the given value. If no such + * element is found, a past-the-end iterator is returned. + */ + [[nodiscard]] iterator find(const value_type &value) { + return constrained_find(value, value_to_bucket(value)); + } + + /*! @copydoc find */ + [[nodiscard]] const_iterator find(const value_type &value) const { + return constrained_find(value, value_to_bucket(value)); + } + + /** + * @brief Finds an element that compares _equivalent_ to a given value. + * @tparam Other Type of an element to search for. + * @param value Value of an element to search for. + * @return An iterator to an element with the given value. If no such + * element is found, a past-the-end iterator is returned. + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + find(const Other &value) { + return constrained_find(value, value_to_bucket(value)); + } + + /*! @copydoc find */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + find(const Other &value) const { + return constrained_find(value, value_to_bucket(value)); + } + + /** + * @brief Returns a range containing all elements with a given value. + * @param value Value of an element to search for. + * @return A pair of iterators pointing to the first element and past the + * last element of the range. + */ + [[nodiscard]] std::pair equal_range(const value_type &value) { + const auto it = find(value); + return {it, it + !(it == end())}; + } + + /*! @copydoc equal_range */ + [[nodiscard]] std::pair equal_range(const value_type &value) const { + const auto it = find(value); + return {it, it + !(it == cend())}; + } + + /** + * @brief Returns a range containing all elements that compare _equivalent_ + * to a given value. + * @tparam Other Type of an element to search for. + * @param value Value of an element to search for. + * @return A pair of iterators pointing to the first element and past the + * last element of the range. + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t>> + equal_range(const Other &value) { + const auto it = find(value); + return {it, it + !(it == end())}; + } + + /*! @copydoc equal_range */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t>> + equal_range(const Other &value) const { + const auto it = find(value); + return {it, it + !(it == cend())}; + } + + /** + * @brief Checks if the container contains an element with a given value. + * @param value Value of an element to search for. + * @return True if there is such an element, false otherwise. + */ + [[nodiscard]] bool contains(const value_type &value) const { + return (find(value) != cend()); + } + + /** + * @brief Checks if the container contains an element that compares + * _equivalent_ to a given value. + * @tparam Other Type of an element to search for. + * @param value Value of an element to search for. + * @return True if there is such an element, false otherwise. + */ + template + [[nodiscard]] std::enable_if_t && is_transparent_v, std::conditional_t> + contains(const Other &value) const { + return (find(value) != cend()); + } + + /** + * @brief Returns an iterator to the beginning of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the beginning of the given bucket. + */ + [[nodiscard]] const_local_iterator cbegin(const size_type index) const { + return {packed.first().begin(), sparse.first()[index]}; + } + + /** + * @brief Returns an iterator to the beginning of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the beginning of the given bucket. + */ + [[nodiscard]] const_local_iterator begin(const size_type index) const { + return cbegin(index); + } + + /** + * @brief Returns an iterator to the beginning of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the beginning of the given bucket. + */ + [[nodiscard]] local_iterator begin(const size_type index) { + return {packed.first().begin(), sparse.first()[index]}; + } + + /** + * @brief Returns an iterator to the end of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the end of the given bucket. + */ + [[nodiscard]] const_local_iterator cend([[maybe_unused]] const size_type index) const { + return {packed.first().begin(), (std::numeric_limits::max)()}; + } + + /** + * @brief Returns an iterator to the end of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the end of the given bucket. + */ + [[nodiscard]] const_local_iterator end(const size_type index) const { + return cend(index); + } + + /** + * @brief Returns an iterator to the end of a given bucket. + * @param index An index of a bucket to access. + * @return An iterator to the end of the given bucket. + */ + [[nodiscard]] local_iterator end([[maybe_unused]] const size_type index) { + return {packed.first().begin(), (std::numeric_limits::max)()}; + } + + /** + * @brief Returns the number of buckets. + * @return The number of buckets. + */ + [[nodiscard]] size_type bucket_count() const { + return sparse.first().size(); + } + + /** + * @brief Returns the maximum number of buckets. + * @return The maximum number of buckets. + */ + [[nodiscard]] size_type max_bucket_count() const { + return sparse.first().max_size(); + } + + /** + * @brief Returns the number of elements in a given bucket. + * @param index The index of the bucket to examine. + * @return The number of elements in the given bucket. + */ + [[nodiscard]] size_type bucket_size(const size_type index) const { + return static_cast(std::distance(begin(index), end(index))); + } + + /** + * @brief Returns the bucket for a given element. + * @param value The value of the element to examine. + * @return The bucket for the given element. + */ + [[nodiscard]] size_type bucket(const value_type &value) const { + return value_to_bucket(value); + } + + /** + * @brief Returns the average number of elements per bucket. + * @return The average number of elements per bucket. + */ + [[nodiscard]] float load_factor() const { + return size() / static_cast(bucket_count()); + } + + /** + * @brief Returns the maximum average number of elements per bucket. + * @return The maximum average number of elements per bucket. + */ + [[nodiscard]] float max_load_factor() const { + return threshold; + } + + /** + * @brief Sets the desired maximum average number of elements per bucket. + * @param value A desired maximum average number of elements per bucket. + */ + void max_load_factor(const float value) { + ENTT_ASSERT(value > 0.f, "Invalid load factor"); + threshold = value; + rehash(0u); + } + + /** + * @brief Reserves at least the specified number of buckets and regenerates + * the hash table. + * @param cnt New number of buckets. + */ + void rehash(const size_type cnt) { + auto value = cnt > minimum_capacity ? cnt : minimum_capacity; + const auto cap = static_cast(size() / max_load_factor()); + value = value > cap ? value : cap; + + if(const auto sz = next_power_of_two(value); sz != bucket_count()) { + sparse.first().resize(sz); + + for(auto &&elem: sparse.first()) { + elem = std::numeric_limits::max(); + } + + for(size_type pos{}, last = size(); pos < last; ++pos) { + const auto index = value_to_bucket(packed.first()[pos].second); + packed.first()[pos].first = std::exchange(sparse.first()[index], pos); + } + } + } + + /** + * @brief Reserves space for at least the specified number of elements and + * regenerates the hash table. + * @param cnt New number of elements. + */ + void reserve(const size_type cnt) { + packed.first().reserve(cnt); + rehash(static_cast(std::ceil(cnt / max_load_factor()))); + } + + /** + * @brief Returns the function used to hash the elements. + * @return The function used to hash the elements. + */ + [[nodiscard]] hasher hash_function() const { + return sparse.second(); + } + + /** + * @brief Returns the function used to compare elements for equality. + * @return The function used to compare elements for equality. + */ + [[nodiscard]] key_equal key_eq() const { + return packed.second(); + } + +private: + compressed_pair sparse; + compressed_pair packed; + float threshold; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/container/fwd.hpp b/LiteLoader/third-party/include/entt/container/fwd.hpp new file mode 100644 index 0000000..eb8098d --- /dev/null +++ b/LiteLoader/third-party/include/entt/container/fwd.hpp @@ -0,0 +1,26 @@ +#ifndef ENTT_CONTAINER_FWD_HPP +#define ENTT_CONTAINER_FWD_HPP + +#include +#include + +namespace entt { + +template< + typename Key, + typename Type, + typename = std::hash, + typename = std::equal_to, + typename = std::allocator>> +class dense_map; + +template< + typename Type, + typename = std::hash, + typename = std::equal_to, + typename = std::allocator> +class dense_set; + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/core/algorithm.hpp b/LiteLoader/third-party/include/entt/core/algorithm.hpp similarity index 96% rename from LiteLoader/Header/third-party/entt/core/algorithm.hpp rename to LiteLoader/third-party/include/entt/core/algorithm.hpp index eda7e8d..44c47ef 100644 --- a/LiteLoader/Header/third-party/entt/core/algorithm.hpp +++ b/LiteLoader/third-party/include/entt/core/algorithm.hpp @@ -1,18 +1,15 @@ #ifndef ENTT_CORE_ALGORITHM_HPP #define ENTT_CORE_ALGORITHM_HPP - -#include -#include -#include #include #include +#include +#include +#include #include "utility.hpp" - namespace entt { - /** * @brief Function object to wrap `std::sort` in a class type. * @@ -36,12 +33,11 @@ struct std_sort { * @param args Arguments to forward to the sort function, if any. */ template, typename... Args> - void operator()(It first, It last, Compare compare = Compare{}, Args &&... args) const { + void operator()(It first, It last, Compare compare = Compare{}, Args &&...args) const { std::sort(std::forward(args)..., std::move(first), std::move(last), std::move(compare)); } }; - /*! @brief Function object for performing insertion sort. */ struct insertion_sort { /** @@ -62,8 +58,8 @@ struct insertion_sort { auto value = std::move(*it); auto pre = it; - for(; pre > first && compare(value, *(pre-1)); --pre) { - *pre = std::move(*(pre-1)); + for(; pre > first && compare(value, *(pre - 1)); --pre) { + *pre = std::move(*(pre - 1)); } *pre = std::move(value); @@ -72,7 +68,6 @@ struct insertion_sort { } }; - /** * @brief Function object for performing LSD radix sort. * @tparam Bit Number of bits processed per pass. @@ -137,8 +132,6 @@ struct radix_sort { } }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/core/any.hpp b/LiteLoader/third-party/include/entt/core/any.hpp new file mode 100644 index 0000000..0095a40 --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/any.hpp @@ -0,0 +1,510 @@ +#ifndef ENTT_CORE_ANY_HPP +#define ENTT_CORE_ANY_HPP + +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/utility.hpp" +#include "fwd.hpp" +#include "type_info.hpp" +#include "type_traits.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +enum class any_operation : std::uint8_t { + copy, + move, + transfer, + assign, + destroy, + compare, + get +}; + +enum class any_policy : std::uint8_t { + owner, + ref, + cref +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief A SBO friendly, type-safe container for single values of any type. + * @tparam Len Size of the storage reserved for the small buffer optimization. + * @tparam Align Optional alignment requirement. + */ +template +class basic_any { + using operation = internal::any_operation; + using policy = internal::any_policy; + using vtable_type = const void *(const operation, const basic_any &, const void *); + + struct storage_type { + alignas(Align) std::byte data[Len + !Len]; + }; + + template + static constexpr bool in_situ = Len && alignof(Type) <= Align && sizeof(Type) <= Len &&std::is_nothrow_move_constructible_v; + + template + static const void *basic_vtable(const operation op, const basic_any &value, const void *other) { + static_assert(!std::is_same_v && std::is_same_v>, Type>, "Invalid type"); + const Type *element = nullptr; + + if constexpr(in_situ) { + element = value.owner() ? reinterpret_cast(&value.storage) : static_cast(value.instance); + } else { + element = static_cast(value.instance); + } + + switch(op) { + case operation::copy: + if constexpr(std::is_copy_constructible_v) { + static_cast(const_cast(other))->initialize(*element); + } + break; + case operation::move: + if constexpr(in_situ) { + if(value.owner()) { + return new(&static_cast(const_cast(other))->storage) Type{std::move(*const_cast(element))}; + } + } + + return (static_cast(const_cast(other))->instance = std::exchange(const_cast(value).instance, nullptr)); + case operation::transfer: + if constexpr(std::is_move_assignable_v) { + *const_cast(element) = std::move(*static_cast(const_cast(other))); + return other; + } + [[fallthrough]]; + case operation::assign: + if constexpr(std::is_copy_assignable_v) { + *const_cast(element) = *static_cast(other); + return other; + } + break; + case operation::destroy: + if constexpr(in_situ) { + element->~Type(); + } else if constexpr(std::is_array_v) { + delete[] element; + } else { + delete element; + } + break; + case operation::compare: + if constexpr(!std::is_function_v && !std::is_array_v && is_equality_comparable_v) { + return *element == *static_cast(other) ? other : nullptr; + } else { + return (element == other) ? other : nullptr; + } + case operation::get: + return element; + } + + return nullptr; + } + + template + void initialize([[maybe_unused]] Args &&...args) { + info = &type_id>>(); + + if constexpr(!std::is_void_v) { + vtable = basic_vtable>>; + + if constexpr(std::is_lvalue_reference_v) { + static_assert(sizeof...(Args) == 1u && (std::is_lvalue_reference_v && ...), "Invalid arguments"); + mode = std::is_const_v> ? policy::cref : policy::ref; + instance = (std::addressof(args), ...); + } else if constexpr(in_situ>>) { + if constexpr(sizeof...(Args) != 0u && std::is_aggregate_v>>) { + new(&storage) std::remove_cv_t>{std::forward(args)...}; + } else { + new(&storage) std::remove_cv_t>(std::forward(args)...); + } + } else { + if constexpr(sizeof...(Args) != 0u && std::is_aggregate_v>>) { + instance = new std::remove_cv_t>{std::forward(args)...}; + } else { + instance = new std::remove_cv_t>(std::forward(args)...); + } + } + } + } + + basic_any(const basic_any &other, const policy pol) noexcept + : instance{other.data()}, + info{other.info}, + vtable{other.vtable}, + mode{pol} {} + +public: + /*! @brief Size of the internal storage. */ + static constexpr auto length = Len; + /*! @brief Alignment requirement. */ + static constexpr auto alignment = Align; + + /*! @brief Default constructor. */ + constexpr basic_any() noexcept + : basic_any{std::in_place_type} {} + + /** + * @brief Constructs a wrapper by directly initializing the new object. + * @tparam Type Type of object to use to initialize the wrapper. + * @tparam Args Types of arguments to use to construct the new instance. + * @param args Parameters to use to construct the instance. + */ + template + explicit basic_any(std::in_place_type_t, Args &&...args) + : instance{}, + info{}, + vtable{}, + mode{policy::owner} { + initialize(std::forward(args)...); + } + + /** + * @brief Constructs a wrapper from a given value. + * @tparam Type Type of object to use to initialize the wrapper. + * @param value An instance of an object to use to initialize the wrapper. + */ + template, basic_any>>> + basic_any(Type &&value) + : basic_any{std::in_place_type>, std::forward(value)} {} + + /** + * @brief Copy constructor. + * @param other The instance to copy from. + */ + basic_any(const basic_any &other) + : basic_any{} { + if(other.vtable) { + other.vtable(operation::copy, other, this); + } + } + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + basic_any(basic_any &&other) noexcept + : instance{}, + info{other.info}, + vtable{other.vtable}, + mode{other.mode} { + if(other.vtable) { + other.vtable(operation::move, other, this); + } + } + + /*! @brief Frees the internal storage, whatever it means. */ + ~basic_any() { + if(vtable && owner()) { + vtable(operation::destroy, *this, nullptr); + } + } + + /** + * @brief Copy assignment operator. + * @param other The instance to copy from. + * @return This any object. + */ + basic_any &operator=(const basic_any &other) { + reset(); + + if(other.vtable) { + other.vtable(operation::copy, other, this); + } + + return *this; + } + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This any object. + */ + basic_any &operator=(basic_any &&other) noexcept { + reset(); + + if(other.vtable) { + other.vtable(operation::move, other, this); + info = other.info; + vtable = other.vtable; + mode = other.mode; + } + + return *this; + } + + /** + * @brief Value assignment operator. + * @tparam Type Type of object to use to initialize the wrapper. + * @param value An instance of an object to use to initialize the wrapper. + * @return This any object. + */ + template + std::enable_if_t, basic_any>, basic_any &> + operator=(Type &&value) { + emplace>(std::forward(value)); + return *this; + } + + /** + * @brief Returns the object type if any, `type_id()` otherwise. + * @return The object type if any, `type_id()` otherwise. + */ + [[nodiscard]] const type_info &type() const noexcept { + return *info; + } + + /** + * @brief Returns an opaque pointer to the contained instance. + * @return An opaque pointer the contained instance, if any. + */ + [[nodiscard]] const void *data() const noexcept { + return vtable ? vtable(operation::get, *this, nullptr) : nullptr; + } + + /** + * @brief Returns an opaque pointer to the contained instance. + * @param req Expected type. + * @return An opaque pointer the contained instance, if any. + */ + [[nodiscard]] const void *data(const type_info &req) const noexcept { + return *info == req ? data() : nullptr; + } + + /** + * @brief Returns an opaque pointer to the contained instance. + * @return An opaque pointer the contained instance, if any. + */ + [[nodiscard]] void *data() noexcept { + return mode == policy::cref ? nullptr : const_cast(std::as_const(*this).data()); + } + + /** + * @brief Returns an opaque pointer to the contained instance. + * @param req Expected type. + * @return An opaque pointer the contained instance, if any. + */ + [[nodiscard]] void *data(const type_info &req) noexcept { + return mode == policy::cref ? nullptr : const_cast(std::as_const(*this).data(req)); + } + + /** + * @brief Replaces the contained object by creating a new instance directly. + * @tparam Type Type of object to use to initialize the wrapper. + * @tparam Args Types of arguments to use to construct the new instance. + * @param args Parameters to use to construct the instance. + */ + template + void emplace(Args &&...args) { + reset(); + initialize(std::forward(args)...); + } + + /** + * @brief Assigns a value to the contained object without replacing it. + * @param other The value to assign to the contained object. + * @return True in case of success, false otherwise. + */ + bool assign(const basic_any &other) { + if(vtable && mode != policy::cref && *info == *other.info) { + return (vtable(operation::assign, *this, other.data()) != nullptr); + } + + return false; + } + + /*! @copydoc assign */ + bool assign(basic_any &&other) { + if(vtable && mode != policy::cref && *info == *other.info) { + if(auto *val = other.data(); val) { + return (vtable(operation::transfer, *this, val) != nullptr); + } else { + return (vtable(operation::assign, *this, std::as_const(other).data()) != nullptr); + } + } + + return false; + } + + /*! @brief Destroys contained object */ + void reset() { + if(vtable && owner()) { + vtable(operation::destroy, *this, nullptr); + } + + // unnecessary but it helps to detect nasty bugs + ENTT_ASSERT((instance = nullptr) == nullptr, ""); + info = &type_id(); + vtable = nullptr; + mode = policy::owner; + } + + /** + * @brief Returns false if a wrapper is empty, true otherwise. + * @return False if the wrapper is empty, true otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return vtable != nullptr; + } + + /** + * @brief Checks if two wrappers differ in their content. + * @param other Wrapper with which to compare. + * @return False if the two objects differ in their content, true otherwise. + */ + [[nodiscard]] bool operator==(const basic_any &other) const noexcept { + if(vtable && *info == *other.info) { + return (vtable(operation::compare, *this, other.data()) != nullptr); + } + + return (!vtable && !other.vtable); + } + + /** + * @brief Checks if two wrappers differ in their content. + * @param other Wrapper with which to compare. + * @return True if the two objects differ in their content, false otherwise. + */ + [[nodiscard]] bool operator!=(const basic_any &other) const noexcept { + return !(*this == other); + } + + /** + * @brief Aliasing constructor. + * @return A wrapper that shares a reference to an unmanaged object. + */ + [[nodiscard]] basic_any as_ref() noexcept { + return basic_any{*this, (mode == policy::cref ? policy::cref : policy::ref)}; + } + + /*! @copydoc as_ref */ + [[nodiscard]] basic_any as_ref() const noexcept { + return basic_any{*this, policy::cref}; + } + + /** + * @brief Returns true if a wrapper owns its object, false otherwise. + * @return True if the wrapper owns its object, false otherwise. + */ + [[nodiscard]] bool owner() const noexcept { + return (mode == policy::owner); + } + +private: + union { + const void *instance; + storage_type storage; + }; + const type_info *info; + vtable_type *vtable; + policy mode; +}; + +/** + * @brief Performs type-safe access to the contained object. + * @tparam Type Type to which conversion is required. + * @tparam Len Size of the storage reserved for the small buffer optimization. + * @tparam Align Alignment requirement. + * @param data Target any object. + * @return The element converted to the requested type. + */ +template +Type any_cast(const basic_any &data) noexcept { + const auto *const instance = any_cast>(&data); + ENTT_ASSERT(instance, "Invalid instance"); + return static_cast(*instance); +} + +/*! @copydoc any_cast */ +template +Type any_cast(basic_any &data) noexcept { + // forces const on non-reference types to make them work also with wrappers for const references + auto *const instance = any_cast>(&data); + ENTT_ASSERT(instance, "Invalid instance"); + return static_cast(*instance); +} + +/*! @copydoc any_cast */ +template +Type any_cast(basic_any &&data) noexcept { + if constexpr(std::is_copy_constructible_v>>) { + if(auto *const instance = any_cast>(&data); instance) { + return static_cast(std::move(*instance)); + } else { + return any_cast(data); + } + } else { + auto *const instance = any_cast>(&data); + ENTT_ASSERT(instance, "Invalid instance"); + return static_cast(std::move(*instance)); + } +} + +/*! @copydoc any_cast */ +template +const Type *any_cast(const basic_any *data) noexcept { + const auto &info = type_id>(); + return static_cast(data->data(info)); +} + +/*! @copydoc any_cast */ +template +Type *any_cast(basic_any *data) noexcept { + if constexpr(std::is_const_v) { + // last attempt to make wrappers for const references return their values + return any_cast(&std::as_const(*data)); + } else { + const auto &info = type_id>(); + return static_cast(data->data(info)); + } +} + +/** + * @brief Constructs a wrapper from a given type, passing it all arguments. + * @tparam Type Type of object to use to initialize the wrapper. + * @tparam Len Size of the storage reserved for the small buffer optimization. + * @tparam Align Optional alignment requirement. + * @tparam Args Types of arguments to use to construct the new instance. + * @param args Parameters to use to construct the instance. + * @return A properly initialized wrapper for an object of the given type. + */ +template::length, std::size_t Align = basic_any::alignment, typename... Args> +basic_any make_any(Args &&...args) { + return basic_any{std::in_place_type, std::forward(args)...}; +} + +/** + * @brief Forwards its argument and avoids copies for lvalue references. + * @tparam Len Size of the storage reserved for the small buffer optimization. + * @tparam Align Optional alignment requirement. + * @tparam Type Type of argument to use to construct the new instance. + * @param value Parameter to use to construct the instance. + * @return A properly initialized and not necessarily owning wrapper. + */ +template::length, std::size_t Align = basic_any::alignment, typename Type> +basic_any forward_as_any(Type &&value) { + return basic_any{std::in_place_type, std::forward(value)}; +} + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/core/attribute.h b/LiteLoader/third-party/include/entt/core/attribute.h new file mode 100644 index 0000000..b1d0503 --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/attribute.h @@ -0,0 +1,30 @@ +#ifndef ENTT_CORE_ATTRIBUTE_H +#define ENTT_CORE_ATTRIBUTE_H + +#ifndef ENTT_EXPORT +# if defined _WIN32 || defined __CYGWIN__ || defined _MSC_VER +# define ENTT_EXPORT __declspec(dllexport) +# define ENTT_IMPORT __declspec(dllimport) +# define ENTT_HIDDEN +# elif defined __GNUC__ && __GNUC__ >= 4 +# define ENTT_EXPORT __attribute__((visibility("default"))) +# define ENTT_IMPORT __attribute__((visibility("default"))) +# define ENTT_HIDDEN __attribute__((visibility("hidden"))) +# else /* Unsupported compiler */ +# define ENTT_EXPORT +# define ENTT_IMPORT +# define ENTT_HIDDEN +# endif +#endif + +#ifndef ENTT_API +# if defined ENTT_API_EXPORT +# define ENTT_API ENTT_EXPORT +# elif defined ENTT_API_IMPORT +# define ENTT_API ENTT_IMPORT +# else /* No API */ +# define ENTT_API +# endif +#endif + +#endif diff --git a/LiteLoader/third-party/include/entt/core/compressed_pair.hpp b/LiteLoader/third-party/include/entt/core/compressed_pair.hpp new file mode 100644 index 0000000..4971388 --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/compressed_pair.hpp @@ -0,0 +1,279 @@ +#ifndef ENTT_CORE_COMPRESSED_PAIR_HPP +#define ENTT_CORE_COMPRESSED_PAIR_HPP + +#include +#include +#include +#include +#include "type_traits.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct compressed_pair_element { + using reference = Type &; + using const_reference = const Type &; + + template>> + constexpr compressed_pair_element() noexcept(std::is_nothrow_default_constructible_v) + : value{} {} + + template>, compressed_pair_element>>> + constexpr compressed_pair_element(Arg &&arg) noexcept(std::is_nothrow_constructible_v) + : value{std::forward(arg)} {} + + template + constexpr compressed_pair_element(std::tuple args, std::index_sequence) noexcept(std::is_nothrow_constructible_v) + : value{std::forward(std::get(args))...} {} + + [[nodiscard]] constexpr reference get() noexcept { + return value; + } + + [[nodiscard]] constexpr const_reference get() const noexcept { + return value; + } + +private: + Type value; +}; + +template +struct compressed_pair_element>>: Type { + using reference = Type &; + using const_reference = const Type &; + using base_type = Type; + + template>> + constexpr compressed_pair_element() noexcept(std::is_nothrow_default_constructible_v) + : base_type{} {} + + template>, compressed_pair_element>>> + constexpr compressed_pair_element(Arg &&arg) noexcept(std::is_nothrow_constructible_v) + : base_type{std::forward(arg)} {} + + template + constexpr compressed_pair_element(std::tuple args, std::index_sequence) noexcept(std::is_nothrow_constructible_v) + : base_type{std::forward(std::get(args))...} {} + + [[nodiscard]] constexpr reference get() noexcept { + return *this; + } + + [[nodiscard]] constexpr const_reference get() const noexcept { + return *this; + } +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief A compressed pair. + * + * A pair that exploits the _Empty Base Class Optimization_ (or _EBCO_) to + * reduce its final size to a minimum. + * + * @tparam First The type of the first element that the pair stores. + * @tparam Second The type of the second element that the pair stores. + */ +template +class compressed_pair final + : internal::compressed_pair_element, + internal::compressed_pair_element { + using first_base = internal::compressed_pair_element; + using second_base = internal::compressed_pair_element; + +public: + /*! @brief The type of the first element that the pair stores. */ + using first_type = First; + /*! @brief The type of the second element that the pair stores. */ + using second_type = Second; + + /** + * @brief Default constructor, conditionally enabled. + * + * This constructor is only available when the types that the pair stores + * are both at least default constructible. + * + * @tparam Dummy Dummy template parameter used for internal purposes. + */ + template && std::is_default_constructible_v>> + constexpr compressed_pair() noexcept(std::is_nothrow_default_constructible_v &&std::is_nothrow_default_constructible_v) + : first_base{}, + second_base{} {} + + /** + * @brief Copy constructor. + * @param other The instance to copy from. + */ + constexpr compressed_pair(const compressed_pair &other) noexcept(std::is_nothrow_copy_constructible_v &&std::is_nothrow_copy_constructible_v) = default; + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + constexpr compressed_pair(compressed_pair &&other) noexcept(std::is_nothrow_move_constructible_v &&std::is_nothrow_move_constructible_v) = default; + + /** + * @brief Constructs a pair from its values. + * @tparam Arg Type of value to use to initialize the first element. + * @tparam Other Type of value to use to initialize the second element. + * @param arg Value to use to initialize the first element. + * @param other Value to use to initialize the second element. + */ + template + constexpr compressed_pair(Arg &&arg, Other &&other) noexcept(std::is_nothrow_constructible_v &&std::is_nothrow_constructible_v) + : first_base{std::forward(arg)}, + second_base{std::forward(other)} {} + + /** + * @brief Constructs a pair by forwarding the arguments to its parts. + * @tparam Args Types of arguments to use to initialize the first element. + * @tparam Other Types of arguments to use to initialize the second element. + * @param args Arguments to use to initialize the first element. + * @param other Arguments to use to initialize the second element. + */ + template + constexpr compressed_pair(std::piecewise_construct_t, std::tuple args, std::tuple other) noexcept(std::is_nothrow_constructible_v &&std::is_nothrow_constructible_v) + : first_base{std::move(args), std::index_sequence_for{}}, + second_base{std::move(other), std::index_sequence_for{}} {} + + /** + * @brief Copy assignment operator. + * @param other The instance to copy from. + * @return This compressed pair object. + */ + constexpr compressed_pair &operator=(const compressed_pair &other) noexcept(std::is_nothrow_copy_assignable_v &&std::is_nothrow_copy_assignable_v) = default; + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This compressed pair object. + */ + constexpr compressed_pair &operator=(compressed_pair &&other) noexcept(std::is_nothrow_move_assignable_v &&std::is_nothrow_move_assignable_v) = default; + + /** + * @brief Returns the first element that a pair stores. + * @return The first element that a pair stores. + */ + [[nodiscard]] constexpr first_type &first() noexcept { + return static_cast(*this).get(); + } + + /*! @copydoc first */ + [[nodiscard]] constexpr const first_type &first() const noexcept { + return static_cast(*this).get(); + } + + /** + * @brief Returns the second element that a pair stores. + * @return The second element that a pair stores. + */ + [[nodiscard]] constexpr second_type &second() noexcept { + return static_cast(*this).get(); + } + + /*! @copydoc second */ + [[nodiscard]] constexpr const second_type &second() const noexcept { + return static_cast(*this).get(); + } + + /** + * @brief Swaps two compressed pair objects. + * @param other The compressed pair to swap with. + */ + constexpr void swap(compressed_pair &other) noexcept(std::is_nothrow_swappable_v &&std::is_nothrow_swappable_v) { + using std::swap; + swap(first(), other.first()); + swap(second(), other.second()); + } + + /** + * @brief Extracts an element from the compressed pair. + * @tparam Index An integer value that is either 0 or 1. + * @return Returns a reference to the first element if `Index` is 0 and a + * reference to the second element if `Index` is 1. + */ + template + constexpr decltype(auto) get() noexcept { + if constexpr(Index == 0u) { + return first(); + } else { + static_assert(Index == 1u, "Index out of bounds"); + return second(); + } + } + + /*! @copydoc get */ + template + constexpr decltype(auto) get() const noexcept { + if constexpr(Index == 0u) { + return first(); + } else { + static_assert(Index == 1u, "Index out of bounds"); + return second(); + } + } +}; + +/** + * @brief Deduction guide. + * @tparam Type Type of value to use to initialize the first element. + * @tparam Other Type of value to use to initialize the second element. + */ +template +compressed_pair(Type &&, Other &&) -> compressed_pair, std::decay_t>; + +/** + * @brief Swaps two compressed pair objects. + * @tparam First The type of the first element that the pairs store. + * @tparam Second The type of the second element that the pairs store. + * @param lhs A valid compressed pair object. + * @param rhs A valid compressed pair object. + */ +template +inline constexpr void swap(compressed_pair &lhs, compressed_pair &rhs) { + lhs.swap(rhs); +} + +} // namespace entt + +// disable structured binding support for clang 6, it messes when specializing tuple_size +#if !defined __clang_major__ || __clang_major__ > 6 +namespace std { + +/** + * @brief `std::tuple_size` specialization for `compressed_pair`s. + * @tparam First The type of the first element that the pair stores. + * @tparam Second The type of the second element that the pair stores. + */ +template +struct tuple_size>: integral_constant {}; + +/** + * @brief `std::tuple_element` specialization for `compressed_pair`s. + * @tparam Index The index of the type to return. + * @tparam First The type of the first element that the pair stores. + * @tparam Second The type of the second element that the pair stores. + */ +template +struct tuple_element>: conditional { + static_assert(Index < 2u, "Index out of bounds"); +}; + +} // namespace std +#endif + +#endif diff --git a/LiteLoader/third-party/include/entt/core/enum.hpp b/LiteLoader/third-party/include/entt/core/enum.hpp new file mode 100644 index 0000000..5922c2f --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/enum.hpp @@ -0,0 +1,97 @@ +#ifndef ENTT_CORE_ENUM_HPP +#define ENTT_CORE_ENUM_HPP + +#include + +namespace entt { + +/** + * @brief Enable bitmask support for enum classes. + * @tparam Type The enum type for which to enable bitmask support. + */ +template +struct enum_as_bitmask: std::false_type {}; + +/*! @copydoc enum_as_bitmask */ +template +struct enum_as_bitmask>: std::is_enum {}; + +/** + * @brief Helper variable template. + * @tparam Type The enum class type for which to enable bitmask support. + */ +template +inline constexpr bool enum_as_bitmask_v = enum_as_bitmask::value; + +} // namespace entt + +/** + * @brief Operator available for enums for which bitmask support is enabled. + * @tparam Type Enum class type. + * @param lhs The first value to use. + * @param rhs The second value to use. + * @return The result of invoking the operator on the underlying types of the + * two values provided. + */ +template +[[nodiscard]] constexpr std::enable_if_t, Type> +operator|(const Type lhs, const Type rhs) noexcept { + return static_cast(static_cast>(lhs) | static_cast>(rhs)); +} + +/*! @copydoc operator| */ +template +[[nodiscard]] constexpr std::enable_if_t, Type> +operator&(const Type lhs, const Type rhs) noexcept { + return static_cast(static_cast>(lhs) & static_cast>(rhs)); +} + +/*! @copydoc operator| */ +template +[[nodiscard]] constexpr std::enable_if_t, Type> +operator^(const Type lhs, const Type rhs) noexcept { + return static_cast(static_cast>(lhs) ^ static_cast>(rhs)); +} + +/** + * @brief Operator available for enums for which bitmask support is enabled. + * @tparam Type Enum class type. + * @param value The value to use. + * @return The result of invoking the operator on the underlying types of the + * value provided. + */ +template +[[nodiscard]] constexpr std::enable_if_t, Type> +operator~(const Type value) noexcept { + return static_cast(~static_cast>(value)); +} + +/*! @copydoc operator~ */ +template +[[nodiscard]] constexpr std::enable_if_t, bool> +operator!(const Type value) noexcept { + return !static_cast>(value); +} + +/*! @copydoc operator| */ +template +constexpr std::enable_if_t, Type &> +operator|=(Type &lhs, const Type rhs) noexcept { + return (lhs = (lhs | rhs)); +} + +/*! @copydoc operator| */ +template +constexpr std::enable_if_t, Type &> +operator&=(Type &lhs, const Type rhs) noexcept { + return (lhs = (lhs & rhs)); +} + +/*! @copydoc operator| */ +template +constexpr std::enable_if_t, Type &> +operator^=(Type &lhs, const Type rhs) noexcept { + return (lhs = (lhs ^ rhs)); +} + +#endif diff --git a/LiteLoader/Header/third-party/entt/core/family.hpp b/LiteLoader/third-party/include/entt/core/family.hpp similarity index 86% rename from LiteLoader/Header/third-party/entt/core/family.hpp rename to LiteLoader/third-party/include/entt/core/family.hpp index de0a8ce..642ae2f 100644 --- a/LiteLoader/Header/third-party/entt/core/family.hpp +++ b/LiteLoader/third-party/include/entt/core/family.hpp @@ -1,14 +1,11 @@ #ifndef ENTT_CORE_FAMILY_HPP #define ENTT_CORE_FAMILY_HPP - #include "../config/config.h" #include "fwd.hpp" - namespace entt { - /** * @brief Dynamic identifier generator. * @@ -22,16 +19,14 @@ class family { public: /*! @brief Unsigned integer type. */ - using family_type = id_type; + using value_type = id_type; /*! @brief Statically generated unique identifier for the given type. */ template // at the time I'm writing, clang crashes during compilation if auto is used instead of family_type - inline static const family_type type = identifier++; + inline static const value_type value = identifier++; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/Header/third-party/entt/core/fwd.hpp b/LiteLoader/third-party/include/entt/core/fwd.hpp similarity index 81% rename from LiteLoader/Header/third-party/entt/core/fwd.hpp rename to LiteLoader/third-party/include/entt/core/fwd.hpp index 193aad8..472ed12 100644 --- a/LiteLoader/Header/third-party/entt/core/fwd.hpp +++ b/LiteLoader/third-party/include/entt/core/fwd.hpp @@ -1,27 +1,20 @@ #ifndef ENTT_CORE_FWD_HPP #define ENTT_CORE_FWD_HPP - -#include +#include #include "../config/config.h" - namespace entt { - -template)> +template class basic_any; - /*! @brief Alias declaration for type identifiers. */ using id_type = ENTT_ID_TYPE; - /*! @brief Alias declaration for the most common use case. */ using any = basic_any<>; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/core/hashed_string.hpp b/LiteLoader/third-party/include/entt/core/hashed_string.hpp new file mode 100644 index 0000000..02a50a9 --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/hashed_string.hpp @@ -0,0 +1,334 @@ +#ifndef ENTT_CORE_HASHED_STRING_HPP +#define ENTT_CORE_HASHED_STRING_HPP + +#include +#include +#include "fwd.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct fnv1a_traits; + +template<> +struct fnv1a_traits { + using type = std::uint32_t; + static constexpr std::uint32_t offset = 2166136261; + static constexpr std::uint32_t prime = 16777619; +}; + +template<> +struct fnv1a_traits { + using type = std::uint64_t; + static constexpr std::uint64_t offset = 14695981039346656037ull; + static constexpr std::uint64_t prime = 1099511628211ull; +}; + +template +struct basic_hashed_string { + using value_type = Char; + using size_type = std::size_t; + using hash_type = id_type; + + const value_type *repr; + size_type length; + hash_type hash; +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Zero overhead unique identifier. + * + * A hashed string is a compile-time tool that allows users to use + * human-readable identifiers in the codebase while using their numeric + * counterparts at runtime.
+ * Because of that, a hashed string can also be used in constant expressions if + * required. + * + * @warning + * This class doesn't take ownership of user-supplied strings nor does it make a + * copy of them. + * + * @tparam Char Character type. + */ +template +class basic_hashed_string: internal::basic_hashed_string { + using base_type = internal::basic_hashed_string; + using hs_traits = internal::fnv1a_traits; + + struct const_wrapper { + // non-explicit constructor on purpose + constexpr const_wrapper(const Char *str) noexcept + : repr{str} {} + + const Char *repr; + }; + + // Fowler–Noll–Vo hash function v. 1a - the good + [[nodiscard]] static constexpr auto helper(const Char *str) noexcept { + base_type base{str, 0u, hs_traits::offset}; + + for(; str[base.length]; ++base.length) { + base.hash = (base.hash ^ static_cast(str[base.length])) * hs_traits::prime; + } + + return base; + } + + // Fowler–Noll–Vo hash function v. 1a - the good + [[nodiscard]] static constexpr auto helper(const Char *str, const std::size_t len) noexcept { + base_type base{str, len, hs_traits::offset}; + + for(size_type pos{}; pos < len; ++pos) { + base.hash = (base.hash ^ static_cast(str[pos])) * hs_traits::prime; + } + + return base; + } + +public: + /*! @brief Character type. */ + using value_type = typename base_type::value_type; + /*! @brief Unsigned integer type. */ + using size_type = typename base_type::size_type; + /*! @brief Unsigned integer type. */ + using hash_type = typename base_type::hash_type; + + /** + * @brief Returns directly the numeric representation of a string view. + * @param str Human-readable identifier. + * @param len Length of the string to hash. + * @return The numeric representation of the string. + */ + [[nodiscard]] static constexpr hash_type value(const value_type *str, const size_type len) noexcept { + return basic_hashed_string{str, len}; + } + + /** + * @brief Returns directly the numeric representation of a string. + * @tparam N Number of characters of the identifier. + * @param str Human-readable identifier. + * @return The numeric representation of the string. + */ + template + [[nodiscard]] static constexpr hash_type value(const value_type (&str)[N]) noexcept { + return basic_hashed_string{str}; + } + + /** + * @brief Returns directly the numeric representation of a string. + * @param wrapper Helps achieving the purpose by relying on overloading. + * @return The numeric representation of the string. + */ + [[nodiscard]] static constexpr hash_type value(const_wrapper wrapper) noexcept { + return basic_hashed_string{wrapper}; + } + + /*! @brief Constructs an empty hashed string. */ + constexpr basic_hashed_string() noexcept + : base_type{} {} + + /** + * @brief Constructs a hashed string from a string view. + * @param str Human-readable identifier. + * @param len Length of the string to hash. + */ + constexpr basic_hashed_string(const value_type *str, const size_type len) noexcept + : base_type{helper(str, len)} {} + + /** + * @brief Constructs a hashed string from an array of const characters. + * @tparam N Number of characters of the identifier. + * @param str Human-readable identifier. + */ + template + constexpr basic_hashed_string(const value_type (&str)[N]) noexcept + : base_type{helper(str)} {} + + /** + * @brief Explicit constructor on purpose to avoid constructing a hashed + * string directly from a `const value_type *`. + * + * @warning + * The lifetime of the string is not extended nor is it copied. + * + * @param wrapper Helps achieving the purpose by relying on overloading. + */ + explicit constexpr basic_hashed_string(const_wrapper wrapper) noexcept + : base_type{helper(wrapper.repr)} {} + + /** + * @brief Returns the size a hashed string. + * @return The size of the hashed string. + */ + [[nodiscard]] constexpr size_type size() const noexcept { + return base_type::length; + } + + /** + * @brief Returns the human-readable representation of a hashed string. + * @return The string used to initialize the hashed string. + */ + [[nodiscard]] constexpr const value_type *data() const noexcept { + return base_type::repr; + } + + /** + * @brief Returns the numeric representation of a hashed string. + * @return The numeric representation of the hashed string. + */ + [[nodiscard]] constexpr hash_type value() const noexcept { + return base_type::hash; + } + + /*! @copydoc data */ + [[nodiscard]] constexpr operator const value_type *() const noexcept { + return data(); + } + + /** + * @brief Returns the numeric representation of a hashed string. + * @return The numeric representation of the hashed string. + */ + [[nodiscard]] constexpr operator hash_type() const noexcept { + return value(); + } +}; + +/** + * @brief Deduction guide. + * @tparam Char Character type. + * @param str Human-readable identifier. + * @param len Length of the string to hash. + */ +template +basic_hashed_string(const Char *str, const std::size_t len) -> basic_hashed_string; + +/** + * @brief Deduction guide. + * @tparam Char Character type. + * @tparam N Number of characters of the identifier. + * @param str Human-readable identifier. + */ +template +basic_hashed_string(const Char (&str)[N]) -> basic_hashed_string; + +/** + * @brief Compares two hashed strings. + * @tparam Char Character type. + * @param lhs A valid hashed string. + * @param rhs A valid hashed string. + * @return True if the two hashed strings are identical, false otherwise. + */ +template +[[nodiscard]] constexpr bool operator==(const basic_hashed_string &lhs, const basic_hashed_string &rhs) noexcept { + return lhs.value() == rhs.value(); +} + +/** + * @brief Compares two hashed strings. + * @tparam Char Character type. + * @param lhs A valid hashed string. + * @param rhs A valid hashed string. + * @return True if the two hashed strings differ, false otherwise. + */ +template +[[nodiscard]] constexpr bool operator!=(const basic_hashed_string &lhs, const basic_hashed_string &rhs) noexcept { + return !(lhs == rhs); +} + +/** + * @brief Compares two hashed strings. + * @tparam Char Character type. + * @param lhs A valid hashed string. + * @param rhs A valid hashed string. + * @return True if the first element is less than the second, false otherwise. + */ +template +[[nodiscard]] constexpr bool operator<(const basic_hashed_string &lhs, const basic_hashed_string &rhs) noexcept { + return lhs.value() < rhs.value(); +} + +/** + * @brief Compares two hashed strings. + * @tparam Char Character type. + * @param lhs A valid hashed string. + * @param rhs A valid hashed string. + * @return True if the first element is less than or equal to the second, false + * otherwise. + */ +template +[[nodiscard]] constexpr bool operator<=(const basic_hashed_string &lhs, const basic_hashed_string &rhs) noexcept { + return !(rhs < lhs); +} + +/** + * @brief Compares two hashed strings. + * @tparam Char Character type. + * @param lhs A valid hashed string. + * @param rhs A valid hashed string. + * @return True if the first element is greater than the second, false + * otherwise. + */ +template +[[nodiscard]] constexpr bool operator>(const basic_hashed_string &lhs, const basic_hashed_string &rhs) noexcept { + return rhs < lhs; +} + +/** + * @brief Compares two hashed strings. + * @tparam Char Character type. + * @param lhs A valid hashed string. + * @param rhs A valid hashed string. + * @return True if the first element is greater than or equal to the second, + * false otherwise. + */ +template +[[nodiscard]] constexpr bool operator>=(const basic_hashed_string &lhs, const basic_hashed_string &rhs) noexcept { + return !(lhs < rhs); +} + +/*! @brief Aliases for common character types. */ +using hashed_string = basic_hashed_string; + +/*! @brief Aliases for common character types. */ +using hashed_wstring = basic_hashed_string; + +inline namespace literals { + +/** + * @brief User defined literal for hashed strings. + * @param str The literal without its suffix. + * @return A properly initialized hashed string. + */ +[[nodiscard]] constexpr hashed_string operator"" _hs(const char *str, std::size_t) noexcept { + return hashed_string{str}; +} + +/** + * @brief User defined literal for hashed wstrings. + * @param str The literal without its suffix. + * @return A properly initialized hashed wstring. + */ +[[nodiscard]] constexpr hashed_wstring operator"" _hws(const wchar_t *str, std::size_t) noexcept { + return hashed_wstring{str}; +} + +} // namespace literals + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/core/ident.hpp b/LiteLoader/third-party/include/entt/core/ident.hpp new file mode 100644 index 0000000..2ff6026 --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/ident.hpp @@ -0,0 +1,35 @@ +#ifndef ENTT_CORE_IDENT_HPP +#define ENTT_CORE_IDENT_HPP + +#include +#include +#include +#include "fwd.hpp" +#include "type_traits.hpp" + +namespace entt { + +/** + * @brief Type integral identifiers. + * @tparam Type List of types for which to generate identifiers. + */ +template +class ident { + template + [[nodiscard]] static constexpr id_type get(std::index_sequence) noexcept { + static_assert((std::is_same_v || ...), "Invalid type"); + return (0 + ... + (std::is_same_v...>>> ? id_type{Index} : id_type{})); + } + +public: + /*! @brief Unsigned integer type. */ + using value_type = id_type; + + /*! @brief Statically generated unique identifier for the given type. */ + template + static constexpr value_type value = get>(std::index_sequence_for{}); +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/core/iterator.hpp b/LiteLoader/third-party/include/entt/core/iterator.hpp new file mode 100644 index 0000000..42db97e --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/iterator.hpp @@ -0,0 +1,197 @@ +#ifndef ENTT_CORE_ITERATOR_HPP +#define ENTT_CORE_ITERATOR_HPP + +#include +#include +#include +#include + +namespace entt { + +/** + * @brief Helper type to use as pointer with input iterators. + * @tparam Type of wrapped value. + */ +template +struct input_iterator_pointer final { + /*! @brief Value type. */ + using value_type = Type; + /*! @brief Pointer type. */ + using pointer = Type *; + /*! @brief Reference type. */ + using reference = Type &; + + /** + * @brief Constructs a proxy object by move. + * @param val Value to use to initialize the proxy object. + */ + constexpr input_iterator_pointer(value_type &&val) noexcept(std::is_nothrow_move_constructible_v) + : value{std::move(val)} {} + + /** + * @brief Access operator for accessing wrapped values. + * @return A pointer to the wrapped value. + */ + [[nodiscard]] constexpr pointer operator->() noexcept { + return std::addressof(value); + } + + /** + * @brief Dereference operator for accessing wrapped values. + * @return A reference to the wrapped value. + */ + [[nodiscard]] constexpr reference operator*() noexcept { + return value; + } + +private: + Type value; +}; + +/** + * @brief Plain iota iterator (waiting for C++20). + * @tparam Type Value type. + */ +template +class iota_iterator final { + static_assert(std::is_integral_v, "Not an integral type"); + +public: + /*! @brief Value type, likely an integral one. */ + using value_type = Type; + /*! @brief Invalid pointer type. */ + using pointer = void; + /*! @brief Non-reference type, same as value type. */ + using reference = value_type; + /*! @brief Difference type. */ + using difference_type = std::ptrdiff_t; + /*! @brief Iterator category. */ + using iterator_category = std::input_iterator_tag; + + /*! @brief Default constructor. */ + constexpr iota_iterator() noexcept + : current{} {} + + /** + * @brief Constructs an iota iterator from a given value. + * @param init The initial value assigned to the iota iterator. + */ + constexpr iota_iterator(const value_type init) noexcept + : current{init} {} + + /** + * @brief Pre-increment operator. + * @return This iota iterator. + */ + constexpr iota_iterator &operator++() noexcept { + return ++current, *this; + } + + /** + * @brief Post-increment operator. + * @return This iota iterator. + */ + constexpr iota_iterator operator++(int) noexcept { + iota_iterator orig = *this; + return ++(*this), orig; + } + + /** + * @brief Dereference operator. + * @return The underlying value. + */ + [[nodiscard]] constexpr reference operator*() const noexcept { + return current; + } + +private: + value_type current; +}; + +/** + * @brief Comparison operator. + * @tparam Type Value type of the iota iterator. + * @param lhs A properly initialized iota iterator. + * @param rhs A properly initialized iota iterator. + * @return True if the two iterators are identical, false otherwise. + */ +template +[[nodiscard]] constexpr bool operator==(const iota_iterator &lhs, const iota_iterator &rhs) noexcept { + return *lhs == *rhs; +} + +/** + * @brief Comparison operator. + * @tparam Type Value type of the iota iterator. + * @param lhs A properly initialized iota iterator. + * @param rhs A properly initialized iota iterator. + * @return True if the two iterators differ, false otherwise. + */ +template +[[nodiscard]] constexpr bool operator!=(const iota_iterator &lhs, const iota_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +/** + * @brief Utility class to create an iterable object from a pair of iterators. + * @tparam It Type of iterator. + * @tparam Sentinel Type of sentinel. + */ +template +struct iterable_adaptor final { + /*! @brief Value type. */ + using value_type = typename std::iterator_traits::value_type; + /*! @brief Iterator type. */ + using iterator = It; + /*! @brief Sentinel type. */ + using sentinel = Sentinel; + + /*! @brief Default constructor. */ + constexpr iterable_adaptor() noexcept(std::is_nothrow_default_constructible_v &&std::is_nothrow_default_constructible_v) + : first{}, + last{} {} + + /** + * @brief Creates an iterable object from a pair of iterators. + * @param from Begin iterator. + * @param to End iterator. + */ + constexpr iterable_adaptor(iterator from, sentinel to) noexcept(std::is_nothrow_move_constructible_v &&std::is_nothrow_move_constructible_v) + : first{std::move(from)}, + last{std::move(to)} {} + + /** + * @brief Returns an iterator to the beginning. + * @return An iterator to the first element of the range. + */ + [[nodiscard]] constexpr iterator begin() const noexcept { + return first; + } + + /** + * @brief Returns an iterator to the end. + * @return An iterator to the element following the last element of the + * range. + */ + [[nodiscard]] constexpr sentinel end() const noexcept { + return last; + } + + /*! @copydoc begin */ + [[nodiscard]] constexpr iterator cbegin() const noexcept { + return begin(); + } + + /*! @copydoc end */ + [[nodiscard]] constexpr sentinel cend() const noexcept { + return end(); + } + +private: + It first; + Sentinel last; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/core/memory.hpp b/LiteLoader/third-party/include/entt/core/memory.hpp new file mode 100644 index 0000000..d4e44f4 --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/memory.hpp @@ -0,0 +1,289 @@ +#ifndef ENTT_CORE_MEMORY_HPP +#define ENTT_CORE_MEMORY_HPP + +#include +#include +#include +#include +#include +#include +#include "../config/config.h" + +namespace entt { + +/** + * @brief Checks whether a value is a power of two or not. + * @param value A value that may or may not be a power of two. + * @return True if the value is a power of two, false otherwise. + */ +[[nodiscard]] inline constexpr bool is_power_of_two(const std::size_t value) noexcept { + return value && ((value & (value - 1)) == 0); +} + +/** + * @brief Computes the smallest power of two greater than or equal to a value. + * @param value The value to use. + * @return The smallest power of two greater than or equal to the given value. + */ +[[nodiscard]] inline constexpr std::size_t next_power_of_two(const std::size_t value) noexcept { + ENTT_ASSERT_CONSTEXPR(value < (std::size_t{1u} << (std::numeric_limits::digits - 1)), "Numeric limits exceeded"); + std::size_t curr = value - (value != 0u); + + for(int next = 1; next < std::numeric_limits::digits; next = next * 2) { + curr |= curr >> next; + } + + return ++curr; +} + +/** + * @brief Fast module utility function (powers of two only). + * @param value A value for which to calculate the modulus. + * @param mod _Modulus_, it must be a power of two. + * @return The common remainder. + */ +[[nodiscard]] inline constexpr std::size_t fast_mod(const std::size_t value, const std::size_t mod) noexcept { + ENTT_ASSERT_CONSTEXPR(is_power_of_two(mod), "Value must be a power of two"); + return value & (mod - 1u); +} + +/** + * @brief Unwraps fancy pointers, does nothing otherwise (waiting for C++20). + * @tparam Type Pointer type. + * @param ptr Fancy or raw pointer. + * @return A raw pointer that represents the address of the original pointer. + */ +template +[[nodiscard]] constexpr auto to_address(Type &&ptr) noexcept { + if constexpr(std::is_pointer_v>) { + return ptr; + } else { + return to_address(std::forward(ptr).operator->()); + } +} + +/** + * @brief Utility function to design allocation-aware containers. + * @tparam Allocator Type of allocator. + * @param lhs A valid allocator. + * @param rhs Another valid allocator. + */ +template +constexpr void propagate_on_container_copy_assignment([[maybe_unused]] Allocator &lhs, [[maybe_unused]] Allocator &rhs) noexcept { + if constexpr(std::allocator_traits::propagate_on_container_copy_assignment::value) { + lhs = rhs; + } +} + +/** + * @brief Utility function to design allocation-aware containers. + * @tparam Allocator Type of allocator. + * @param lhs A valid allocator. + * @param rhs Another valid allocator. + */ +template +constexpr void propagate_on_container_move_assignment([[maybe_unused]] Allocator &lhs, [[maybe_unused]] Allocator &rhs) noexcept { + if constexpr(std::allocator_traits::propagate_on_container_move_assignment::value) { + lhs = std::move(rhs); + } +} + +/** + * @brief Utility function to design allocation-aware containers. + * @tparam Allocator Type of allocator. + * @param lhs A valid allocator. + * @param rhs Another valid allocator. + */ +template +constexpr void propagate_on_container_swap([[maybe_unused]] Allocator &lhs, [[maybe_unused]] Allocator &rhs) noexcept { + if constexpr(std::allocator_traits::propagate_on_container_swap::value) { + using std::swap; + swap(lhs, rhs); + } else { + ENTT_ASSERT_CONSTEXPR(lhs == rhs, "Cannot swap the containers"); + } +} + +/** + * @brief Deleter for allocator-aware unique pointers (waiting for C++20). + * @tparam Args Types of arguments to use to construct the object. + */ +template +struct allocation_deleter: private Allocator { + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Pointer type. */ + using pointer = typename std::allocator_traits::pointer; + + /** + * @brief Inherited constructors. + * @param alloc The allocator to use. + */ + constexpr allocation_deleter(const allocator_type &alloc) noexcept(std::is_nothrow_copy_constructible_v) + : Allocator{alloc} {} + + /** + * @brief Destroys the pointed object and deallocates its memory. + * @param ptr A valid pointer to an object of the given type. + */ + constexpr void operator()(pointer ptr) noexcept(std::is_nothrow_destructible_v) { + using alloc_traits = typename std::allocator_traits; + alloc_traits::destroy(*this, to_address(ptr)); + alloc_traits::deallocate(*this, ptr, 1u); + } +}; + +/** + * @brief Allows `std::unique_ptr` to use allocators (waiting for C++20). + * @tparam Type Type of object to allocate for and to construct. + * @tparam Allocator Type of allocator used to manage memory and elements. + * @tparam Args Types of arguments to use to construct the object. + * @param allocator The allocator to use. + * @param args Parameters to use to construct the object. + * @return A properly initialized unique pointer with a custom deleter. + */ +template +ENTT_CONSTEXPR auto allocate_unique(Allocator &allocator, Args &&...args) { + static_assert(!std::is_array_v, "Array types are not supported"); + + using alloc_traits = typename std::allocator_traits::template rebind_traits; + using allocator_type = typename alloc_traits::allocator_type; + + allocator_type alloc{allocator}; + auto ptr = alloc_traits::allocate(alloc, 1u); + + ENTT_TRY { + alloc_traits::construct(alloc, to_address(ptr), std::forward(args)...); + } + ENTT_CATCH { + alloc_traits::deallocate(alloc, ptr, 1u); + ENTT_THROW; + } + + return std::unique_ptr>{ptr, alloc}; +} + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct uses_allocator_construction { + template + static constexpr auto args([[maybe_unused]] const Allocator &allocator, Params &&...params) noexcept { + if constexpr(!std::uses_allocator_v && std::is_constructible_v) { + return std::forward_as_tuple(std::forward(params)...); + } else { + static_assert(std::uses_allocator_v, "Ill-formed request"); + + if constexpr(std::is_constructible_v) { + return std::tuple{std::allocator_arg, allocator, std::forward(params)...}; + } else { + static_assert(std::is_constructible_v, "Ill-formed request"); + return std::forward_as_tuple(std::forward(params)..., allocator); + } + } + } +}; + +template +struct uses_allocator_construction> { + using type = std::pair; + + template + static constexpr auto args(const Allocator &allocator, std::piecewise_construct_t, First &&first, Second &&second) noexcept { + return std::make_tuple( + std::piecewise_construct, + std::apply([&allocator](auto &&...curr) { return uses_allocator_construction::args(allocator, std::forward(curr)...); }, std::forward(first)), + std::apply([&allocator](auto &&...curr) { return uses_allocator_construction::args(allocator, std::forward(curr)...); }, std::forward(second))); + } + + template + static constexpr auto args(const Allocator &allocator) noexcept { + return uses_allocator_construction::args(allocator, std::piecewise_construct, std::tuple<>{}, std::tuple<>{}); + } + + template + static constexpr auto args(const Allocator &allocator, First &&first, Second &&second) noexcept { + return uses_allocator_construction::args(allocator, std::piecewise_construct, std::forward_as_tuple(std::forward(first)), std::forward_as_tuple(std::forward(second))); + } + + template + static constexpr auto args(const Allocator &allocator, const std::pair &value) noexcept { + return uses_allocator_construction::args(allocator, std::piecewise_construct, std::forward_as_tuple(value.first), std::forward_as_tuple(value.second)); + } + + template + static constexpr auto args(const Allocator &allocator, std::pair &&value) noexcept { + return uses_allocator_construction::args(allocator, std::piecewise_construct, std::forward_as_tuple(std::move(value.first)), std::forward_as_tuple(std::move(value.second))); + } +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Uses-allocator construction utility (waiting for C++20). + * + * Primarily intended for internal use. Prepares the argument list needed to + * create an object of a given type by means of uses-allocator construction. + * + * @tparam Type Type to return arguments for. + * @tparam Allocator Type of allocator used to manage memory and elements. + * @tparam Args Types of arguments to use to construct the object. + * @param allocator The allocator to use. + * @param args Parameters to use to construct the object. + * @return The arguments needed to create an object of the given type. + */ +template +constexpr auto uses_allocator_construction_args(const Allocator &allocator, Args &&...args) noexcept { + return internal::uses_allocator_construction::args(allocator, std::forward(args)...); +} + +/** + * @brief Uses-allocator construction utility (waiting for C++20). + * + * Primarily intended for internal use. Creates an object of a given type by + * means of uses-allocator construction. + * + * @tparam Type Type of object to create. + * @tparam Allocator Type of allocator used to manage memory and elements. + * @tparam Args Types of arguments to use to construct the object. + * @param allocator The allocator to use. + * @param args Parameters to use to construct the object. + * @return A newly created object of the given type. + */ +template +constexpr Type make_obj_using_allocator(const Allocator &allocator, Args &&...args) { + return std::make_from_tuple(internal::uses_allocator_construction::args(allocator, std::forward(args)...)); +} + +/** + * @brief Uses-allocator construction utility (waiting for C++20). + * + * Primarily intended for internal use. Creates an object of a given type by + * means of uses-allocator construction at an uninitialized memory location. + * + * @tparam Type Type of object to create. + * @tparam Allocator Type of allocator used to manage memory and elements. + * @tparam Args Types of arguments to use to construct the object. + * @param value Memory location in which to place the object. + * @param allocator The allocator to use. + * @param args Parameters to use to construct the object. + * @return A pointer to the newly created object of the given type. + */ +template +constexpr Type *uninitialized_construct_using_allocator(Type *value, const Allocator &allocator, Args &&...args) { + return std::apply([value](auto &&...curr) { return new(value) Type(std::forward(curr)...); }, internal::uses_allocator_construction::args(allocator, std::forward(args)...)); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/core/monostate.hpp b/LiteLoader/third-party/include/entt/core/monostate.hpp similarity index 93% rename from LiteLoader/Header/third-party/entt/core/monostate.hpp rename to LiteLoader/third-party/include/entt/core/monostate.hpp index e25dd53..88225db 100644 --- a/LiteLoader/Header/third-party/entt/core/monostate.hpp +++ b/LiteLoader/third-party/include/entt/core/monostate.hpp @@ -1,14 +1,11 @@ #ifndef ENTT_CORE_MONOSTATE_HPP #define ENTT_CORE_MONOSTATE_HPP - #include "../config/config.h" #include "fwd.hpp" - namespace entt { - /** * @brief Minimal implementation of the monostate pattern. * @@ -28,7 +25,7 @@ struct monostate { * @param val User data to assign to the given key. */ template - void operator=(Type val) const ENTT_NOEXCEPT { + void operator=(Type val) const noexcept { value = val; } @@ -38,7 +35,7 @@ struct monostate { * @return Stored value, if any. */ template - operator Type() const ENTT_NOEXCEPT { + operator Type() const noexcept { return value; } @@ -47,7 +44,6 @@ private: inline static ENTT_MAYBE_ATOMIC(Type) value{}; }; - /** * @brief Helper variable template. * @tparam Value Value used to differentiate between different variables. @@ -55,8 +51,6 @@ private: template inline monostate monostate_v = {}; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/core/tuple.hpp b/LiteLoader/third-party/include/entt/core/tuple.hpp new file mode 100644 index 0000000..fa2147c --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/tuple.hpp @@ -0,0 +1,103 @@ +#ifndef ENTT_CORE_TUPLE_HPP +#define ENTT_CORE_TUPLE_HPP + +#include +#include +#include + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct is_tuple_impl: std::false_type {}; + +template +struct is_tuple_impl>: std::true_type {}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Provides the member constant `value` to true if a given type is a + * tuple, false otherwise. + * @tparam Type The type to test. + */ +template +struct is_tuple: internal::is_tuple_impl> {}; + +/** + * @brief Helper variable template. + * @tparam Type The type to test. + */ +template +inline constexpr bool is_tuple_v = is_tuple::value; + +/** + * @brief Utility function to unwrap tuples of a single element. + * @tparam Type Tuple type of any sizes. + * @param value A tuple object of the given type. + * @return The tuple itself if it contains more than one element, the first + * element otherwise. + */ +template +constexpr decltype(auto) unwrap_tuple(Type &&value) noexcept { + if constexpr(std::tuple_size_v> == 1u) { + return std::get<0>(std::forward(value)); + } else { + return std::forward(value); + } +} + +/** + * @brief Utility class to forward-and-apply tuple objects. + * @tparam Func Type of underlying invocable object. + */ +template +struct forward_apply: private Func { + /** + * @brief Constructs a forward-and-apply object. + * @tparam Args Types of arguments to use to construct the new instance. + * @param args Parameters to use to construct the instance. + */ + template + constexpr forward_apply(Args &&...args) noexcept(std::is_nothrow_constructible_v) + : Func{std::forward(args)...} {} + + /** + * @brief Forwards and applies the arguments with the underlying function. + * @tparam Type Tuple-like type to forward to the underlying function. + * @param args Parameters to forward to the underlying function. + * @return Return value of the underlying function, if any. + */ + template + constexpr decltype(auto) operator()(Type &&args) noexcept(noexcept(std::apply(std::declval(), args))) { + return std::apply(static_cast(*this), std::forward(args)); + } + + /*! @copydoc operator()() */ + template + constexpr decltype(auto) operator()(Type &&args) const noexcept(noexcept(std::apply(std::declval(), args))) { + return std::apply(static_cast(*this), std::forward(args)); + } +}; + +/** + * @brief Deduction guide. + * @tparam Func Type of underlying invocable object. + */ +template +forward_apply(Func) -> forward_apply>>; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/core/type_info.hpp b/LiteLoader/third-party/include/entt/core/type_info.hpp new file mode 100644 index 0000000..bcf4977 --- /dev/null +++ b/LiteLoader/third-party/include/entt/core/type_info.hpp @@ -0,0 +1,274 @@ +#ifndef ENTT_CORE_TYPE_INFO_HPP +#define ENTT_CORE_TYPE_INFO_HPP + +#include +#include +#include +#include "../config/config.h" +#include "../core/attribute.h" +#include "fwd.hpp" +#include "hashed_string.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +struct ENTT_API type_index final { + [[nodiscard]] static id_type next() noexcept { + static ENTT_MAYBE_ATOMIC(id_type) value{}; + return value++; + } +}; + +template +[[nodiscard]] constexpr auto stripped_type_name() noexcept { +#if defined ENTT_PRETTY_FUNCTION + std::string_view pretty_function{ENTT_PRETTY_FUNCTION}; + auto first = pretty_function.find_first_not_of(' ', pretty_function.find_first_of(ENTT_PRETTY_FUNCTION_PREFIX) + 1); + auto value = pretty_function.substr(first, pretty_function.find_last_of(ENTT_PRETTY_FUNCTION_SUFFIX) - first); + return value; +#else + return std::string_view{""}; +#endif +} + +template().find_first_of('.')> +[[nodiscard]] static constexpr std::string_view type_name(int) noexcept { + constexpr auto value = stripped_type_name(); + return value; +} + +template +[[nodiscard]] static std::string_view type_name(char) noexcept { + static const auto value = stripped_type_name(); + return value; +} + +template().find_first_of('.')> +[[nodiscard]] static constexpr id_type type_hash(int) noexcept { + constexpr auto stripped = stripped_type_name(); + constexpr auto value = hashed_string::value(stripped.data(), stripped.size()); + return value; +} + +template +[[nodiscard]] static id_type type_hash(char) noexcept { + static const auto value = [](const auto stripped) { + return hashed_string::value(stripped.data(), stripped.size()); + }(stripped_type_name()); + return value; +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Type sequential identifier. + * @tparam Type Type for which to generate a sequential identifier. + */ +template +struct ENTT_API type_index final { + /** + * @brief Returns the sequential identifier of a given type. + * @return The sequential identifier of a given type. + */ + [[nodiscard]] static id_type value() noexcept { + static const id_type value = internal::type_index::next(); + return value; + } + + /*! @copydoc value */ + [[nodiscard]] constexpr operator id_type() const noexcept { + return value(); + } +}; + +/** + * @brief Type hash. + * @tparam Type Type for which to generate a hash value. + */ +template +struct type_hash final { + /** + * @brief Returns the numeric representation of a given type. + * @return The numeric representation of the given type. + */ +#if defined ENTT_PRETTY_FUNCTION + [[nodiscard]] static constexpr id_type value() noexcept { + return internal::type_hash(0); +#else + [[nodiscard]] static constexpr id_type value() noexcept { + return type_index::value(); +#endif + } + + /*! @copydoc value */ + [[nodiscard]] constexpr operator id_type() const noexcept { + return value(); + } +}; + +/** + * @brief Type name. + * @tparam Type Type for which to generate a name. + */ +template +struct type_name final { + /** + * @brief Returns the name of a given type. + * @return The name of the given type. + */ + [[nodiscard]] static constexpr std::string_view value() noexcept { + return internal::type_name(0); + } + + /*! @copydoc value */ + [[nodiscard]] constexpr operator std::string_view() const noexcept { + return value(); + } +}; + +/*! @brief Implementation specific information about a type. */ +struct type_info final { + /** + * @brief Constructs a type info object for a given type. + * @tparam Type Type for which to construct a type info object. + */ + template + constexpr type_info(std::in_place_type_t) noexcept + : seq{type_index>>::value()}, + identifier{type_hash>>::value()}, + alias{type_name>>::value()} {} + + /** + * @brief Type index. + * @return Type index. + */ + [[nodiscard]] constexpr id_type index() const noexcept { + return seq; + } + + /** + * @brief Type hash. + * @return Type hash. + */ + [[nodiscard]] constexpr id_type hash() const noexcept { + return identifier; + } + + /** + * @brief Type name. + * @return Type name. + */ + [[nodiscard]] constexpr std::string_view name() const noexcept { + return alias; + } + +private: + id_type seq; + id_type identifier; + std::string_view alias; +}; + +/** + * @brief Compares the contents of two type info objects. + * @param lhs A type info object. + * @param rhs A type info object. + * @return True if the two type info objects are identical, false otherwise. + */ +[[nodiscard]] inline constexpr bool operator==(const type_info &lhs, const type_info &rhs) noexcept { + return lhs.hash() == rhs.hash(); +} + +/** + * @brief Compares the contents of two type info objects. + * @param lhs A type info object. + * @param rhs A type info object. + * @return True if the two type info objects differ, false otherwise. + */ +[[nodiscard]] inline constexpr bool operator!=(const type_info &lhs, const type_info &rhs) noexcept { + return !(lhs == rhs); +} + +/** + * @brief Compares two type info objects. + * @param lhs A valid type info object. + * @param rhs A valid type info object. + * @return True if the first element is less than the second, false otherwise. + */ +[[nodiscard]] constexpr bool operator<(const type_info &lhs, const type_info &rhs) noexcept { + return lhs.index() < rhs.index(); +} + +/** + * @brief Compares two type info objects. + * @param lhs A valid type info object. + * @param rhs A valid type info object. + * @return True if the first element is less than or equal to the second, false + * otherwise. + */ +[[nodiscard]] constexpr bool operator<=(const type_info &lhs, const type_info &rhs) noexcept { + return !(rhs < lhs); +} + +/** + * @brief Compares two type info objects. + * @param lhs A valid type info object. + * @param rhs A valid type info object. + * @return True if the first element is greater than the second, false + * otherwise. + */ +[[nodiscard]] constexpr bool operator>(const type_info &lhs, const type_info &rhs) noexcept { + return rhs < lhs; +} + +/** + * @brief Compares two type info objects. + * @param lhs A valid type info object. + * @param rhs A valid type info object. + * @return True if the first element is greater than or equal to the second, + * false otherwise. + */ +[[nodiscard]] constexpr bool operator>=(const type_info &lhs, const type_info &rhs) noexcept { + return !(lhs < rhs); +} + +/** + * @brief Returns the type info object associated to a given type. + * + * The returned element refers to an object with static storage duration.
+ * The type doesn't need to be a complete type. If the type is a reference, the + * result refers to the referenced type. In all cases, top-level cv-qualifiers + * are ignored. + * + * @tparam Type Type for which to generate a type info object. + * @return A reference to a properly initialized type info object. + */ +template +[[nodiscard]] const type_info &type_id() noexcept { + if constexpr(std::is_same_v>>) { + static type_info instance{std::in_place_type}; + return instance; + } else { + return type_id>>(); + } +} + +/*! @copydoc type_id */ +template +[[nodiscard]] const type_info &type_id(Type &&) noexcept { + return type_id>>(); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/core/type_traits.hpp b/LiteLoader/third-party/include/entt/core/type_traits.hpp similarity index 67% rename from LiteLoader/Header/third-party/entt/core/type_traits.hpp rename to LiteLoader/third-party/include/entt/core/type_traits.hpp index 2edcf5d..4352e2f 100644 --- a/LiteLoader/Header/third-party/entt/core/type_traits.hpp +++ b/LiteLoader/third-party/include/entt/core/type_traits.hpp @@ -1,7 +1,6 @@ #ifndef ENTT_CORE_TYPE_TRAITS_HPP #define ENTT_CORE_TYPE_TRAITS_HPP - #include #include #include @@ -9,10 +8,8 @@ #include "../config/config.h" #include "fwd.hpp" - namespace entt { - /** * @brief Utility class to disambiguate overloaded functions. * @tparam N Number of choices available. @@ -20,17 +17,13 @@ namespace entt { template struct choice_t // Unfortunately, doxygen cannot parse such a construct. - /*! @cond TURN_OFF_DOXYGEN */ - : choice_t - /*! @endcond */ + : /*! @cond TURN_OFF_DOXYGEN */ choice_t /*! @endcond */ {}; - /*! @copybrief choice_t */ template<> struct choice_t<0> {}; - /** * @brief Variable template for the choice trick. * @tparam N Number of choices available. @@ -38,7 +31,6 @@ struct choice_t<0> {}; template inline constexpr choice_t choice{}; - /** * @brief Identity type trait. * @@ -53,7 +45,6 @@ struct type_identity { using type = Type; }; - /** * @brief Helper type. * @tparam Type A type. @@ -61,7 +52,6 @@ struct type_identity { template using type_identity_t = typename type_identity::type; - /** * @brief A type-only `sizeof` wrapper that returns 0 where `sizeof` complains. * @tparam Type The type of which to return the size. @@ -70,30 +60,25 @@ using type_identity_t = typename type_identity::type; template struct size_of: std::integral_constant {}; - /*! @copydoc size_of */ template struct size_of> - : std::integral_constant -{}; - + : std::integral_constant {}; /** * @brief Helper variable template. * @tparam Type The type of which to return the size. */ -template +template inline constexpr std::size_t size_of_v = size_of::value; - /** * @brief Using declaration to be used to _repeat_ the same type a number of * times equal to the size of a given parameter pack. * @tparam Type A type to repeat. */ template -using unpack_as_t = Type; - +using unpack_as_type = Type; /** * @brief Helper variable template to be used to _repeat_ the same value a @@ -101,8 +86,7 @@ using unpack_as_t = Type; * @tparam Value A value to repeat. */ template -inline constexpr auto unpack_as_v = Value; - +inline constexpr auto unpack_as_value = Value; /** * @brief Wraps a static constant. @@ -111,7 +95,6 @@ inline constexpr auto unpack_as_v = Value; template using integral_constant = std::integral_constant; - /** * @brief Alias template to facilitate the creation of named values. * @tparam Value A constant value at least convertible to `id_type`. @@ -119,7 +102,6 @@ using integral_constant = std::integral_constant; template using tag = integral_constant; - /** * @brief A class to use to push around lists of types, nothing more. * @tparam Type Types provided by the type list. @@ -132,36 +114,31 @@ struct type_list { static constexpr auto size = sizeof...(Type); }; - /*! @brief Primary template isn't defined on purpose. */ template struct type_list_element; - /** * @brief Provides compile-time indexed access to the types of a type list. * @tparam Index Index of the type to return. - * @tparam Type First type provided by the type list. + * @tparam First First type provided by the type list. * @tparam Other Other types provided by the type list. */ -template -struct type_list_element> - : type_list_element> -{}; - +template +struct type_list_element> + : type_list_element> {}; /** * @brief Provides compile-time indexed access to the types of a type list. - * @tparam Type First type provided by the type list. + * @tparam First First type provided by the type list. * @tparam Other Other types provided by the type list. */ -template -struct type_list_element<0u, type_list> { +template +struct type_list_element<0u, type_list> { /*! @brief Searched type. */ - using type = Type; + using type = First; }; - /** * @brief Helper type. * @tparam Index Index of the type to return. @@ -170,6 +147,57 @@ struct type_list_element<0u, type_list> { template using type_list_element_t = typename type_list_element::type; +/*! @brief Primary template isn't defined on purpose. */ +template +struct type_list_index; + +/** + * @brief Provides compile-time type access to the types of a type list. + * @tparam Type Type to look for and for which to return the index. + * @tparam First First type provided by the type list. + * @tparam Other Other types provided by the type list. + */ +template +struct type_list_index> { + /*! @brief Unsigned integer type. */ + using value_type = std::size_t; + /*! @brief Compile-time position of the given type in the sublist. */ + static constexpr value_type value = 1u + type_list_index>::value; +}; + +/** + * @brief Provides compile-time type access to the types of a type list. + * @tparam Type Type to look for and for which to return the index. + * @tparam Other Other types provided by the type list. + */ +template +struct type_list_index> { + static_assert(type_list_index>::value == sizeof...(Other), "Non-unique type"); + /*! @brief Unsigned integer type. */ + using value_type = std::size_t; + /*! @brief Compile-time position of the given type in the sublist. */ + static constexpr value_type value = 0u; +}; + +/** + * @brief Provides compile-time type access to the types of a type list. + * @tparam Type Type to look for and for which to return the index. + */ +template +struct type_list_index> { + /*! @brief Unsigned integer type. */ + using value_type = std::size_t; + /*! @brief Compile-time position of the given type in the sublist. */ + static constexpr value_type value = 0u; +}; + +/** + * @brief Helper variable template. + * @tparam List Type list. + * @tparam Type Type to look for and for which to return the index. + */ +template +inline constexpr std::size_t type_list_index_v = type_list_index::value; /** * @brief Concatenates multiple type lists. @@ -178,14 +206,14 @@ using type_list_element_t = typename type_list_element::type; * @return A type list composed by the types of both the type lists. */ template -constexpr type_list operator+(type_list, type_list) { return {}; } - +constexpr type_list operator+(type_list, type_list) { + return {}; +} /*! @brief Primary template isn't defined on purpose. */ template struct type_list_cat; - /*! @brief Concatenates multiple type lists. */ template<> struct type_list_cat<> { @@ -193,7 +221,6 @@ struct type_list_cat<> { using type = type_list<>; }; - /** * @brief Concatenates multiple type lists. * @tparam Type Types provided by the first type list. @@ -206,7 +233,6 @@ struct type_list_cat, type_list, List...> { using type = typename type_list_cat, List...>::type; }; - /** * @brief Concatenates multiple type lists. * @tparam Type Types provided by the type list. @@ -217,7 +243,6 @@ struct type_list_cat> { using type = type_list; }; - /** * @brief Helper type. * @tparam List Type lists to concatenate. @@ -225,12 +250,10 @@ struct type_list_cat> { template using type_list_cat_t = typename type_list_cat::type; - /*! @brief Primary template isn't defined on purpose. */ template struct type_list_unique; - /** * @brief Removes duplicates types from a type list. * @tparam Type One of the types provided by the given type list. @@ -240,13 +263,11 @@ template struct type_list_unique> { /*! @brief A type list without duplicate types. */ using type = std::conditional_t< - std::disjunction_v...>, + (std::is_same_v || ...), typename type_list_unique>::type, - type_list_cat_t, typename type_list_unique>::type> - >; + type_list_cat_t, typename type_list_unique>::type>>; }; - /*! @brief Removes duplicates types from a type list. */ template<> struct type_list_unique> { @@ -254,7 +275,6 @@ struct type_list_unique> { using type = type_list<>; }; - /** * @brief Helper type. * @tparam Type A type list. @@ -262,7 +282,6 @@ struct type_list_unique> { template using type_list_unique_t = typename type_list_unique::type; - /** * @brief Provides the member constant `value` to true if a type list contains a * given type, false otherwise. @@ -272,7 +291,6 @@ using type_list_unique_t = typename type_list_unique::type; template struct type_list_contains; - /** * @copybrief type_list_contains * @tparam Type Types provided by the type list. @@ -281,21 +299,18 @@ struct type_list_contains; template struct type_list_contains, Other>: std::disjunction...> {}; - /** * @brief Helper variable template. * @tparam List Type list. * @tparam Type Type to look for. */ -template +template inline constexpr bool type_list_contains_v = type_list_contains::value; - /*! @brief Primary template isn't defined on purpose. */ template struct type_list_diff; - /** * @brief Computes the difference between two type lists. * @tparam Type Types provided by the first type list. @@ -307,7 +322,6 @@ struct type_list_diff, type_list> { using type = type_list_cat_t, Type>, type_list<>, type_list>...>; }; - /** * @brief Helper type. * @tparam List Type lists between which to compute the difference. @@ -315,6 +329,28 @@ struct type_list_diff, type_list> { template using type_list_diff_t = typename type_list_diff::type; +/*! @brief Primary template isn't defined on purpose. */ +template class> +struct type_list_transform; + +/** + * @brief Applies a given _function_ to a type list and generate a new list. + * @tparam Type Types provided by the type list. + * @tparam Op Unary operation as template class with a type member named `type`. + */ +template class Op> +struct type_list_transform, Op> { + /*! @brief Resulting type list after applying the transform function. */ + using type = type_list::type...>; +}; + +/** + * @brief Helper type. + * @tparam List Type list. + * @tparam Op Unary operation as template class with a type member named `type`. + */ +template class Op> +using type_list_transform_t = typename type_list_transform::type; /** * @brief A class to use to push around lists of constant values, nothing more. @@ -328,12 +364,10 @@ struct value_list { static constexpr auto size = sizeof...(Value); }; - /*! @brief Primary template isn't defined on purpose. */ template struct value_list_element; - /** * @brief Provides compile-time indexed access to the values of a value list. * @tparam Index Index of the value to return. @@ -342,9 +376,7 @@ struct value_list_element; */ template struct value_list_element> - : value_list_element> -{}; - + : value_list_element> {}; /** * @brief Provides compile-time indexed access to the types of a type list. @@ -357,7 +389,6 @@ struct value_list_element<0u, value_list> { static constexpr auto value = Value; }; - /** * @brief Helper type. * @tparam Index Index of the value to return. @@ -366,7 +397,6 @@ struct value_list_element<0u, value_list> { template inline constexpr auto value_list_element_v = value_list_element::value; - /** * @brief Concatenates multiple value lists. * @tparam Value Values provided by the first value list. @@ -374,14 +404,14 @@ inline constexpr auto value_list_element_v = value_list_element::va * @return A value list composed by the values of both the value lists. */ template -constexpr value_list operator+(value_list, value_list) { return {}; } - +constexpr value_list operator+(value_list, value_list) { + return {}; +} /*! @brief Primary template isn't defined on purpose. */ template struct value_list_cat; - /*! @brief Concatenates multiple value lists. */ template<> struct value_list_cat<> { @@ -389,7 +419,6 @@ struct value_list_cat<> { using type = value_list<>; }; - /** * @brief Concatenates multiple value lists. * @tparam Value Values provided by the first value list. @@ -402,7 +431,6 @@ struct value_list_cat, value_list, List...> { using type = typename value_list_cat, List...>::type; }; - /** * @brief Concatenates multiple value lists. * @tparam Value Values provided by the value list. @@ -413,7 +441,6 @@ struct value_list_cat> { using type = value_list; }; - /** * @brief Helper type. * @tparam List Value lists to concatenate. @@ -421,12 +448,10 @@ struct value_list_cat> { template using value_list_cat_t = typename value_list_cat::type; - /*! @brief Same as std::is_invocable, but with tuples. */ template struct is_applicable: std::false_type {}; - /** * @copybrief is_applicable * @tparam Func A valid function type. @@ -436,7 +461,6 @@ struct is_applicable: std::false_type {}; template class Tuple, typename... Args> struct is_applicable>: std::is_invocable {}; - /** * @copybrief is_applicable * @tparam Func A valid function type. @@ -446,7 +470,6 @@ struct is_applicable>: std::is_invocable {}; template class Tuple, typename... Args> struct is_applicable>: std::is_invocable {}; - /** * @brief Helper variable template. * @tparam Func A valid function type. @@ -455,12 +478,10 @@ struct is_applicable>: std::is_invocable inline constexpr bool is_applicable_v = is_applicable::value; - /*! @brief Same as std::is_invocable_r, but with tuples for arguments. */ template struct is_applicable_r: std::false_type {}; - /** * @copybrief is_applicable_r * @tparam Ret The type to which the return type of the function should be @@ -471,7 +492,6 @@ struct is_applicable_r: std::false_type {}; template struct is_applicable_r>: std::is_invocable_r {}; - /** * @brief Helper variable template. * @tparam Ret The type to which the return type of the function should be @@ -482,7 +502,6 @@ struct is_applicable_r>: std::is_invocable_r inline constexpr bool is_applicable_r_v = is_applicable_r::value; - /** * @brief Provides the member constant `value` to true if a given type is * complete, false otherwise. @@ -491,12 +510,10 @@ inline constexpr bool is_applicable_r_v = is_applicable_r::valu template struct is_complete: std::false_type {}; - /*! @copydoc is_complete */ template struct is_complete>: std::true_type {}; - /** * @brief Helper variable template. * @tparam Type The type to test. @@ -504,7 +521,6 @@ struct is_complete>: std::true_type {} template inline constexpr bool is_complete_v = is_complete::value; - /** * @brief Provides the member constant `value` to true if a given type is an * iterator, false otherwise. @@ -513,13 +529,30 @@ inline constexpr bool is_complete_v = is_complete::value; template struct is_iterator: std::false_type {}; +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct has_iterator_category: std::false_type {}; + +template +struct has_iterator_category::iterator_category>>: std::true_type {}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ /*! @copydoc is_iterator */ template -struct is_iterator::iterator_category>> - : std::true_type -{}; - +struct is_iterator>, void>>> + : internal::has_iterator_category {}; /** * @brief Helper variable template. @@ -528,86 +561,40 @@ struct is_iterator::iterat template inline constexpr bool is_iterator_v = is_iterator::value; - /** - * @brief Provides the member constant `value` to true if a given type is of the - * required iterator type, false otherwise. - * @tparam Type The type to test. - * @tparam It Required iterator type. + * @brief Provides the member constant `value` to true if a given type is both + * an empty and non-final class, false otherwise. + * @tparam Type The type to test */ -template -struct is_iterator_type: std::false_type {}; - - -/*! @copydoc is_iterator_type */ -template -struct is_iterator_type && std::is_same_v>> - : std::true_type -{}; - - -/*! @copydoc is_iterator_type */ -template -struct is_iterator_type, std::void_t>> - : is_iterator_type -{}; - +template +struct is_ebco_eligible + : std::conjunction, std::negation>> {}; /** * @brief Helper variable template. * @tparam Type The type to test. - * @tparam It Required iterator type. */ -template -inline constexpr bool is_iterator_type_v = is_iterator_type::value; - +template +inline constexpr bool is_ebco_eligible_v = is_ebco_eligible::value; /** - * @cond TURN_OFF_DOXYGEN - * Internal details not to be documented. + * @brief Provides the member constant `value` to true if `Type::is_transparent` + * is valid and denotes a type, false otherwise. + * @tparam Type The type to test. */ +template +struct is_transparent: std::false_type {}; - -namespace internal { - - -template -[[nodiscard]] constexpr bool is_equality_comparable(...) { return false; } - - +/*! @copydoc is_transparent */ template -[[nodiscard]] constexpr auto is_equality_comparable(choice_t<0>) --> decltype(std::declval() == std::declval()) { return true; } - - -template -[[nodiscard]] constexpr auto is_equality_comparable(choice_t<1>) --> decltype(std::declval(), std::declval() == std::declval()) { - if constexpr(is_iterator_v) { - return true; - } else if constexpr(std::is_same_v) { - return is_equality_comparable(choice<0>); - } else { - return is_equality_comparable(choice<2>); - } -} - - -template -[[nodiscard]] constexpr auto is_equality_comparable(choice_t<2>) --> decltype(std::declval(), std::declval() == std::declval()) { - return is_equality_comparable(choice<2>) && is_equality_comparable(choice<2>); -} - - -} - +struct is_transparent>: std::true_type {}; /** - * Internal details not to be documented. - * @endcond + * @brief Helper variable template. + * @tparam Type The type to test. */ - +template +inline constexpr bool is_transparent_v = is_transparent::value; /** * @brief Provides the member constant `value` to true if a given type is @@ -615,17 +602,70 @@ template * @tparam Type The type to test. */ template -struct is_equality_comparable: std::bool_constant(choice<2>)> {}; +struct is_equality_comparable: std::false_type {}; +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct has_tuple_size_value: std::false_type {}; + +template +struct has_tuple_size_value::value)>>: std::true_type {}; + +template +[[nodiscard]] constexpr bool unpack_maybe_equality_comparable(std::index_sequence) { + return (is_equality_comparable>::value && ...); +} + +template +[[nodiscard]] constexpr bool maybe_equality_comparable(choice_t<0>) { + return true; +} + +template +[[nodiscard]] constexpr auto maybe_equality_comparable(choice_t<1>) -> decltype(std::declval(), bool{}) { + if constexpr(is_iterator_v) { + return true; + } else if constexpr(std::is_same_v) { + return maybe_equality_comparable(choice<0>); + } else { + return is_equality_comparable::value; + } +} + +template +[[nodiscard]] constexpr std::enable_if_t>>, bool> maybe_equality_comparable(choice_t<2>) { + if constexpr(has_tuple_size_value::value) { + return unpack_maybe_equality_comparable(std::make_index_sequence::value>{}); + } else { + return maybe_equality_comparable(choice<1>); + } +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/*! @copydoc is_equality_comparable */ +template +struct is_equality_comparable() == std::declval())>> + : std::bool_constant(choice<2>)> {}; /** * @brief Helper variable template. * @tparam Type The type to test. */ -template +template inline constexpr bool is_equality_comparable_v = is_equality_comparable::value; - /** * @brief Transcribes the constness of a type to another type. * @tparam To The type to which to transcribe the constness. @@ -637,15 +677,13 @@ struct constness_as { using type = std::remove_const_t; }; - /*! @copydoc constness_as */ template struct constness_as { /*! @brief The type resulting from the transcription of the constness. */ - using type = std::add_const_t; + using type = const To; }; - /** * @brief Alias template to facilitate the transcription of the constness. * @tparam To The type to which to transcribe the constness. @@ -654,7 +692,6 @@ struct constness_as { template using constness_as_t = typename constness_as::type; - /** * @brief Extracts the class of a non-static member object or function. * @tparam Member A pointer to a non-static member object or function. @@ -664,20 +701,19 @@ class member_class { static_assert(std::is_member_pointer_v, "Invalid pointer type to non-static member object or function"); template - static Class * clazz(Ret(Class:: *)(Args...)); + static Class *clazz(Ret (Class::*)(Args...)); template - static Class * clazz(Ret(Class:: *)(Args...) const); + static Class *clazz(Ret (Class::*)(Args...) const); template - static Class * clazz(Type Class:: *); + static Class *clazz(Type Class::*); public: /*! @brief The class of the given non-static member object or function. */ using type = std::remove_pointer_t()))>; }; - /** * @brief Helper type. * @tparam Member A pointer to a non-static member object or function. @@ -685,8 +721,38 @@ public: template using member_class_t = typename member_class::type; +/** + * @brief Extracts the n-th argument of a given function or member function. + * @tparam Index The index of the argument to extract. + * @tparam Candidate A valid function, member function or data member. + */ +template +class nth_argument { + template + static constexpr type_list pick_up(Ret (*)(Args...)); -} + template + static constexpr type_list pick_up(Ret (Class ::*)(Args...)); + template + static constexpr type_list pick_up(Ret (Class ::*)(Args...) const); + + template + static constexpr type_list pick_up(Type Class ::*); + +public: + /*! @brief N-th argument of the given function or member function. */ + using type = type_list_element_t; +}; + +/** + * @brief Helper type. + * @tparam Index The index of the argument to extract. + * @tparam Candidate A valid function, member function or data member. + */ +template +using nth_argument_t = typename nth_argument::type; + +} // namespace entt #endif diff --git a/LiteLoader/Header/third-party/entt/core/utility.hpp b/LiteLoader/third-party/include/entt/core/utility.hpp similarity index 69% rename from LiteLoader/Header/third-party/entt/core/utility.hpp rename to LiteLoader/third-party/include/entt/core/utility.hpp index 4e081b7..e38f689 100644 --- a/LiteLoader/Header/third-party/entt/core/utility.hpp +++ b/LiteLoader/third-party/include/entt/core/utility.hpp @@ -1,16 +1,16 @@ #ifndef ENTT_CORE_UTILITY_HPP #define ENTT_CORE_UTILITY_HPP - +#include #include -#include "../config/config.h" - namespace entt { - /*! @brief Identity function object (waiting for C++20). */ struct identity { + /*! @brief Indicates that this is a transparent function object. */ + using is_transparent = void; + /** * @brief Returns its argument unchanged. * @tparam Type Type of the argument. @@ -18,12 +18,11 @@ struct identity { * @return The submitted value as-is. */ template - [[nodiscard]] constexpr Type && operator()(Type &&value) const ENTT_NOEXCEPT { + [[nodiscard]] constexpr Type &&operator()(Type &&value) const noexcept { return std::forward(value); } }; - /** * @brief Constant utility to disambiguate overloaded members of a class. * @tparam Type Type of the desired overload. @@ -32,8 +31,9 @@ struct identity { * @return Pointer to the member. */ template -[[nodiscard]] constexpr auto overload(Type Class:: *member) ENTT_NOEXCEPT { return member; } - +[[nodiscard]] constexpr auto overload(Type Class::*member) noexcept { + return member; +} /** * @brief Constant utility to disambiguate overloaded functions. @@ -42,8 +42,9 @@ template * @return Pointer to the function. */ template -[[nodiscard]] constexpr auto overload(Func *func) ENTT_NOEXCEPT { return func; } - +[[nodiscard]] constexpr auto overload(Func *func) noexcept { + return func; +} /** * @brief Helper type for visitors. @@ -54,15 +55,12 @@ struct overloaded: Func... { using Func::operator()...; }; - /** * @brief Deduction guide. * @tparam Func Types of function objects. */ template -overloaded(Func...) --> overloaded; - +overloaded(Func...) -> overloaded; /** * @brief Basic implementation of a y-combinator. @@ -74,9 +72,8 @@ struct y_combinator { * @brief Constructs a y-combinator from a given function. * @param recursive A potentially recursive function. */ - y_combinator(Func recursive): - func{std::move(recursive)} - {} + constexpr y_combinator(Func recursive) noexcept(std::is_nothrow_move_constructible_v) + : func{std::move(recursive)} {} /** * @brief Invokes a y-combinator and therefore its underlying function. @@ -84,14 +81,14 @@ struct y_combinator { * @param args Parameters to use to invoke the underlying function. * @return Return value of the underlying function, if any. */ - template - decltype(auto) operator()(Args &&... args) const { + template + constexpr decltype(auto) operator()(Args &&...args) const noexcept(std::is_nothrow_invocable_v) { return func(*this, std::forward(args)...); } /*! @copydoc operator()() */ - template - decltype(auto) operator()(Args &&... args) { + template + constexpr decltype(auto) operator()(Args &&...args) noexcept(std::is_nothrow_invocable_v) { return func(*this, std::forward(args)...); } @@ -99,8 +96,6 @@ private: Func func; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/entity/component.hpp b/LiteLoader/third-party/include/entt/entity/component.hpp new file mode 100644 index 0000000..07fc9f4 --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/component.hpp @@ -0,0 +1,64 @@ +#ifndef ENTT_ENTITY_COMPONENT_HPP +#define ENTT_ENTITY_COMPONENT_HPP + +#include +#include +#include "../config/config.h" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct in_place_delete: std::bool_constant && std::is_move_assignable_v)> {}; + +template +struct in_place_delete> + : std::true_type {}; + +template +struct page_size: std::integral_constant * ENTT_PACKED_PAGE> {}; + +template +struct page_size>> + : std::integral_constant {}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Common way to access various properties of components. + * @tparam Type Type of component. + */ +template +struct component_traits { + static_assert(std::is_same_v, Type>, "Unsupported type"); + + /*! @brief Component type. */ + using type = Type; + + /*! @brief Pointer stability, default is `false`. */ + static constexpr bool in_place_delete = internal::in_place_delete::value; + /*! @brief Page size, default is `ENTT_PACKED_PAGE` for non-empty types. */ + static constexpr std::size_t page_size = internal::page_size::value; +}; + +/** + * @brief Helper variable template. + * @tparam Type Type of component. + */ +template +inline constexpr bool ignore_as_empty_v = (std::is_void_v || component_traits::page_size == 0u); + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/entity/entity.hpp b/LiteLoader/third-party/include/entt/entity/entity.hpp similarity index 53% rename from LiteLoader/Header/third-party/entt/entity/entity.hpp rename to LiteLoader/third-party/include/entt/entity/entity.hpp index 318c2ac..fd7c96b 100644 --- a/LiteLoader/Header/third-party/entt/entity/entity.hpp +++ b/LiteLoader/third-party/include/entt/entity/entity.hpp @@ -1,98 +1,85 @@ #ifndef ENTT_ENTITY_ENTITY_HPP #define ENTT_ENTITY_ENTITY_HPP - #include #include #include #include "../config/config.h" - +#include "fwd.hpp" namespace entt { - /** * @cond TURN_OFF_DOXYGEN * Internal details not to be documented. */ - namespace internal { - template struct entt_traits; - template struct entt_traits>> - : entt_traits> -{}; - + : entt_traits> {}; template struct entt_traits>> - : entt_traits -{}; - + : entt_traits {}; template<> struct entt_traits { using entity_type = std::uint32_t; using version_type = std::uint16_t; - using difference_type = std::int64_t; static constexpr entity_type entity_mask = 0xFFFFF; static constexpr entity_type version_mask = 0xFFF; static constexpr std::size_t entity_shift = 20u; }; - template<> struct entt_traits { using entity_type = std::uint64_t; using version_type = std::uint32_t; - using difference_type = std::int64_t; static constexpr entity_type entity_mask = 0xFFFFFFFF; static constexpr entity_type version_mask = 0xFFFFFFFF; static constexpr std::size_t entity_shift = 32u; }; - -} - +} // namespace internal /** * Internal details not to be documented. * @endcond */ - /** * @brief Entity traits. * @tparam Type Type of identifier. */ template -class entt_traits: private internal::entt_traits { - using traits_type = internal::entt_traits; +class entt_traits: internal::entt_traits { + using base_type = internal::entt_traits; public: /*! @brief Value type. */ using value_type = Type; /*! @brief Underlying entity type. */ - using entity_type = typename traits_type::entity_type; + using entity_type = typename base_type::entity_type; /*! @brief Underlying version type. */ - using version_type = typename traits_type::version_type; - /*! @brief Difference type. */ - using difference_type = typename traits_type::difference_type; + using version_type = typename base_type::version_type; + /*! @brief Reserved identifier. */ + static constexpr entity_type reserved = base_type::entity_mask | (base_type::version_mask << base_type::entity_shift); + /*! @brief Page size, default is `ENTT_SPARSE_PAGE`. */ + static constexpr auto page_size = ENTT_SPARSE_PAGE; /** * @brief Converts an entity to its underlying type. * @param value The value to convert. * @return The integral representation of the given value. */ - [[nodiscard]] static constexpr entity_type to_integral(const value_type value) ENTT_NOEXCEPT { + [[nodiscard]] static constexpr entity_type to_integral(const value_type value) noexcept { return static_cast(value); } @@ -101,8 +88,8 @@ public: * @param value The value to convert. * @return The integral representation of the entity part. */ - [[nodiscard]] static constexpr entity_type to_entity(const value_type value) ENTT_NOEXCEPT { - return (to_integral(value) & traits_type::entity_mask); + [[nodiscard]] static constexpr entity_type to_entity(const value_type value) noexcept { + return (to_integral(value) & base_type::entity_mask); } /** @@ -110,9 +97,8 @@ public: * @param value The value to convert. * @return The integral representation of the version part. */ - [[nodiscard]] static constexpr version_type to_version(const value_type value) ENTT_NOEXCEPT { - constexpr auto mask = (traits_type::version_mask << traits_type::entity_shift); - return ((to_integral(value) & mask) >> traits_type::entity_shift); + [[nodiscard]] static constexpr version_type to_version(const value_type value) noexcept { + return (to_integral(value) >> base_type::entity_shift); } /** @@ -125,34 +111,64 @@ public: * @param version The version part of the identifier. * @return A properly constructed identifier. */ - [[nodiscard]] static constexpr value_type construct(const entity_type entity = traits_type::entity_mask, const version_type version = traits_type::version_mask) ENTT_NOEXCEPT { - return value_type{(entity & traits_type::entity_mask) | (static_cast(version) << traits_type::entity_shift)}; + [[nodiscard]] static constexpr value_type construct(const entity_type entity, const version_type version) noexcept { + return value_type{(entity & base_type::entity_mask) | (static_cast(version) << base_type::entity_shift)}; + } + + /** + * @brief Combines two identifiers in a single one. + * + * The returned identifier is a copy of the first element except for its + * version, which is taken from the second element. + * + * @param lhs The identifier from which to take the entity part. + * @param rhs The identifier from which to take the version part. + * @return A properly constructed identifier. + */ + [[nodiscard]] static constexpr value_type combine(const entity_type lhs, const entity_type rhs) noexcept { + constexpr auto mask = (base_type::version_mask << base_type::entity_shift); + return value_type{(lhs & base_type::entity_mask) | (rhs & mask)}; } }; - /** - * @brief Converts an entity to its underlying type. + * @copydoc entt_traits::to_integral * @tparam Entity The value type. - * @param entity The value to convert. - * @return The integral representation of the given value. */ template -[[nodiscard]] constexpr auto to_integral(const Entity entity) ENTT_NOEXCEPT { - return entt_traits::to_integral(entity); +[[nodiscard]] constexpr typename entt_traits::entity_type to_integral(const Entity value) noexcept { + return entt_traits::to_integral(value); } +/** + * @copydoc entt_traits::to_entity + * @tparam Entity The value type. + */ +template +[[nodiscard]] constexpr typename entt_traits::entity_type to_entity(const Entity value) noexcept { + return entt_traits::to_entity(value); +} -/*! @brief Null object for all entity identifiers. */ +/** + * @copydoc entt_traits::to_version + * @tparam Entity The value type. + */ +template +[[nodiscard]] constexpr typename entt_traits::version_type to_version(const Entity value) noexcept { + return entt_traits::to_version(value); +} + +/*! @brief Null object for all identifiers. */ struct null_t { /** * @brief Converts the null object to identifiers of any type. - * @tparam Entity Type of entity identifier. + * @tparam Entity Type of identifier. * @return The null representation for the given type. */ template - [[nodiscard]] constexpr operator Entity() const ENTT_NOEXCEPT { - return entt_traits::construct(); + [[nodiscard]] constexpr operator Entity() const noexcept { + using entity_traits = entt_traits; + return entity_traits::combine(entity_traits::reserved, entity_traits::reserved); } /** @@ -160,7 +176,7 @@ struct null_t { * @param other A null object. * @return True in all cases. */ - [[nodiscard]] constexpr bool operator==([[maybe_unused]] const null_t other) const ENTT_NOEXCEPT { + [[nodiscard]] constexpr bool operator==([[maybe_unused]] const null_t other) const noexcept { return true; } @@ -169,81 +185,69 @@ struct null_t { * @param other A null object. * @return False in all cases. */ - [[nodiscard]] constexpr bool operator!=([[maybe_unused]] const null_t other) const ENTT_NOEXCEPT { + [[nodiscard]] constexpr bool operator!=([[maybe_unused]] const null_t other) const noexcept { return false; } /** - * @brief Compares a null object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a null object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @return False if the two elements differ, true otherwise. */ template - [[nodiscard]] constexpr bool operator==(const Entity entity) const ENTT_NOEXCEPT { - return entt_traits::to_entity(entity) == entt_traits::to_entity(*this); + [[nodiscard]] constexpr bool operator==(const Entity entity) const noexcept { + using entity_traits = entt_traits; + return entity_traits::to_entity(entity) == entity_traits::to_entity(*this); } /** - * @brief Compares a null object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a null object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @return True if the two elements differ, false otherwise. */ template - [[nodiscard]] constexpr bool operator!=(const Entity entity) const ENTT_NOEXCEPT { + [[nodiscard]] constexpr bool operator!=(const Entity entity) const noexcept { return !(entity == *this); } - - /** - * @brief Creates a null object from an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier to turn into a null object. - * @return The null representation for the given identifier. - */ - template - [[nodiscard]] constexpr Entity operator|(const Entity entity) const ENTT_NOEXCEPT { - return entt_traits::construct(entt_traits::to_entity(*this), entt_traits::to_version(entity)); - } }; - /** - * @brief Compares a null object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a null object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @param other A null object yet to be converted. * @return False if the two elements differ, true otherwise. */ template -[[nodiscard]] constexpr bool operator==(const Entity entity, const null_t other) ENTT_NOEXCEPT { +[[nodiscard]] constexpr bool operator==(const Entity entity, const null_t other) noexcept { return other.operator==(entity); } - /** - * @brief Compares a null object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a null object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @param other A null object yet to be converted. * @return True if the two elements differ, false otherwise. */ template -[[nodiscard]] constexpr bool operator!=(const Entity entity, const null_t other) ENTT_NOEXCEPT { +[[nodiscard]] constexpr bool operator!=(const Entity entity, const null_t other) noexcept { return !(other == entity); } - -/*! @brief Tombstone object for all entity identifiers. */ +/*! @brief Tombstone object for all identifiers. */ struct tombstone_t { /** * @brief Converts the tombstone object to identifiers of any type. - * @tparam Entity Type of entity identifier. + * @tparam Entity Type of identifier. * @return The tombstone representation for the given type. */ template - [[nodiscard]] constexpr operator Entity() const ENTT_NOEXCEPT { - return entt_traits::construct(); + [[nodiscard]] constexpr operator Entity() const noexcept { + using entity_traits = entt_traits; + return entity_traits::combine(entity_traits::reserved, entity_traits::reserved); } /** @@ -251,7 +255,7 @@ struct tombstone_t { * @param other A tombstone object. * @return True in all cases. */ - [[nodiscard]] constexpr bool operator==([[maybe_unused]] const tombstone_t other) const ENTT_NOEXCEPT { + [[nodiscard]] constexpr bool operator==([[maybe_unused]] const tombstone_t other) const noexcept { return true; } @@ -260,92 +264,76 @@ struct tombstone_t { * @param other A tombstone object. * @return False in all cases. */ - [[nodiscard]] constexpr bool operator!=([[maybe_unused]] const tombstone_t other) const ENTT_NOEXCEPT { + [[nodiscard]] constexpr bool operator!=([[maybe_unused]] const tombstone_t other) const noexcept { return false; } /** - * @brief Compares a tombstone object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a tombstone object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @return False if the two elements differ, true otherwise. */ template - [[nodiscard]] constexpr bool operator==(const Entity entity) const ENTT_NOEXCEPT { - return entt_traits::to_version(entity) == entt_traits::to_version(*this); + [[nodiscard]] constexpr bool operator==(const Entity entity) const noexcept { + using entity_traits = entt_traits; + return entity_traits::to_version(entity) == entity_traits::to_version(*this); } /** - * @brief Compares a tombstone object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a tombstone object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @return True if the two elements differ, false otherwise. */ template - [[nodiscard]] constexpr bool operator!=(const Entity entity) const ENTT_NOEXCEPT { + [[nodiscard]] constexpr bool operator!=(const Entity entity) const noexcept { return !(entity == *this); } - - /** - * @brief Creates a tombstone object from an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier to turn into a tombstone object. - * @return The tombstone representation for the given identifier. - */ - template - [[nodiscard]] constexpr Entity operator|(const Entity entity) const ENTT_NOEXCEPT { - return entt_traits::construct(entt_traits::to_entity(entity)); - } }; - /** - * @brief Compares a tombstone object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a tombstone object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @param other A tombstone object yet to be converted. * @return False if the two elements differ, true otherwise. */ template -[[nodiscard]] constexpr bool operator==(const Entity entity, const tombstone_t other) ENTT_NOEXCEPT { +[[nodiscard]] constexpr bool operator==(const Entity entity, const tombstone_t other) noexcept { return other.operator==(entity); } - /** - * @brief Compares a tombstone object and an entity identifier of any type. - * @tparam Entity Type of entity identifier. - * @param entity Entity identifier with which to compare. + * @brief Compares a tombstone object and an identifier of any type. + * @tparam Entity Type of identifier. + * @param entity Identifier with which to compare. * @param other A tombstone object yet to be converted. * @return True if the two elements differ, false otherwise. */ template -[[nodiscard]] constexpr bool operator!=(const Entity entity, const tombstone_t other) ENTT_NOEXCEPT { +[[nodiscard]] constexpr bool operator!=(const Entity entity, const tombstone_t other) noexcept { return !(other == entity); } - /** * @brief Compile-time constant for null entities. * - * There exist implicit conversions from this variable to entity identifiers of - * any allowed type. Similarly, there exist comparision operators between the - * null entity and any other entity identifier. + * There exist implicit conversions from this variable to identifiers of any + * allowed type. Similarly, there exist comparison operators between the null + * entity and any other identifier. */ inline constexpr null_t null{}; - /** * @brief Compile-time constant for tombstone entities. * - * There exist implicit conversions from this variable to entity identifiers of - * any allowed type. Similarly, there exist comparision operators between the - * tombstone entity and any other entity identifier. + * There exist implicit conversions from this variable to identifiers of any + * allowed type. Similarly, there exist comparison operators between the + * tombstone entity and any other identifier. */ inline constexpr tombstone_t tombstone{}; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/entity/fwd.hpp b/LiteLoader/third-party/include/entt/entity/fwd.hpp new file mode 100644 index 0000000..8cc49aa --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/fwd.hpp @@ -0,0 +1,174 @@ +#ifndef ENTT_ENTITY_FWD_HPP +#define ENTT_ENTITY_FWD_HPP + +#include +#include +#include "../core/fwd.hpp" +#include "../core/type_traits.hpp" + +namespace entt { + +/*! @brief Default entity identifier. */ +enum class entity : id_type {}; + +template> +class basic_sparse_set; + +template, typename = void> +class basic_storage; + +template, typename = void> +struct storage_type; + +template>> +struct storage_for; + +template +class sigh_storage_mixin; + +template> +class basic_registry; + +template +class basic_view; + +template> +class basic_runtime_view; + +template +class basic_group; + +template +class basic_observer; + +template +class basic_organizer; + +template +struct basic_handle; + +template +class basic_snapshot; + +template +class basic_snapshot_loader; + +template +class basic_continuous_loader; + +/** + * @brief Alias for exclusion lists. + * @tparam Type List of types. + */ +template +using exclude_t = type_list; + +/** + * @brief Variable template for exclusion lists. + * @tparam Type List of types. + */ +template +inline constexpr exclude_t exclude{}; + +/** + * @brief Alias for lists of observed components. + * @tparam Type List of types. + */ +template +using get_t = type_list; + +/** + * @brief Variable template for lists of observed components. + * @tparam Type List of types. + */ +template +inline constexpr get_t get{}; + +/** + * @brief Alias for lists of owned components. + * @tparam Type List of types. + */ +template +using owned_t = type_list; + +/** + * @brief Variable template for lists of owned components. + * @tparam Type List of types. + */ +template +inline constexpr owned_t owned{}; + +/*! @brief Alias declaration for the most common use case. */ +using sparse_set = basic_sparse_set<>; + +/** + * @brief Alias declaration for the most common use case. + * @tparam Type Type of objects assigned to the entities. + */ +template +using storage = basic_storage; + +/*! @brief Alias declaration for the most common use case. */ +using registry = basic_registry<>; + +/*! @brief Alias declaration for the most common use case. */ +using observer = basic_observer; + +/*! @brief Alias declaration for the most common use case. */ +using organizer = basic_organizer; + +/*! @brief Alias declaration for the most common use case. */ +using handle = basic_handle; + +/*! @brief Alias declaration for the most common use case. */ +using const_handle = basic_handle; + +/** + * @brief Alias declaration for the most common use case. + * @tparam Args Other template parameters. + */ +template +using handle_view = basic_handle; + +/** + * @brief Alias declaration for the most common use case. + * @tparam Args Other template parameters. + */ +template +using const_handle_view = basic_handle; + +/*! @brief Alias declaration for the most common use case. */ +using snapshot = basic_snapshot; + +/*! @brief Alias declaration for the most common use case. */ +using snapshot_loader = basic_snapshot_loader; + +/*! @brief Alias declaration for the most common use case. */ +using continuous_loader = basic_continuous_loader; + +/** + * @brief Alias declaration for the most common use case. + * @tparam Get Types of storage iterated by the view. + * @tparam Exclude Types of storage used to filter the view. + */ +template> +using view = basic_view, type_list_transform_t>; + +/*! @brief Alias declaration for the most common use case. */ +using runtime_view = basic_runtime_view; + +/*! @brief Alias declaration for the most common use case. */ +using const_runtime_view = basic_runtime_view; + +/** + * @brief Alias declaration for the most common use case. + * @tparam Owned Types of storage _owned_ by the group. + * @tparam Get Types of storage _observed_ by the group. + * @tparam Exclude Types of storage used to filter the group. + */ +template +using group = basic_group, type_list_transform_t, type_list_transform_t>; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/entity/group.hpp b/LiteLoader/third-party/include/entt/entity/group.hpp new file mode 100644 index 0000000..f385986 --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/group.hpp @@ -0,0 +1,852 @@ +#ifndef ENTT_ENTITY_GROUP_HPP +#define ENTT_ENTITY_GROUP_HPP + +#include +#include +#include +#include "../config/config.h" +#include "../core/iterator.hpp" +#include "../core/type_traits.hpp" +#include "component.hpp" +#include "entity.hpp" +#include "fwd.hpp" +#include "sparse_set.hpp" +#include "storage.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class extended_group_iterator; + +template +class extended_group_iterator, get_t> { + template + auto index_to_element(Type &cpool) const { + if constexpr(ignore_as_empty_v) { + return std::make_tuple(); + } else { + return std::forward_as_tuple(cpool.rbegin()[it.index()]); + } + } + +public: + using difference_type = std::ptrdiff_t; + using value_type = decltype(std::tuple_cat(std::make_tuple(*std::declval()), std::declval().get_as_tuple({})..., std::declval().get_as_tuple({})...)); + using pointer = input_iterator_pointer; + using reference = value_type; + using iterator_category = std::input_iterator_tag; + + constexpr extended_group_iterator() + : it{}, + pools{} {} + + extended_group_iterator(It from, const std::tuple &cpools) + : it{from}, + pools{cpools} {} + + extended_group_iterator &operator++() noexcept { + return ++it, *this; + } + + extended_group_iterator operator++(int) noexcept { + extended_group_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] reference operator*() const noexcept { + return std::tuple_cat(std::make_tuple(*it), index_to_element(*std::get(pools))..., std::get(pools)->get_as_tuple(*it)...); + } + + [[nodiscard]] pointer operator->() const noexcept { + return operator*(); + } + + template + friend constexpr bool operator==(const extended_group_iterator &, const extended_group_iterator &) noexcept; + +private: + It it; + std::tuple pools; +}; + +template +[[nodiscard]] constexpr bool operator==(const extended_group_iterator &lhs, const extended_group_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const extended_group_iterator &lhs, const extended_group_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Group. + * + * Primary template isn't defined on purpose. All the specializations give a + * compile-time error, but for a few reasonable cases. + */ +template +class basic_group; + +/** + * @brief Non-owning group. + * + * A non-owning group returns all entities and only the entities that are at + * least in the given storage. Moreover, it's guaranteed that the entity list is + * tightly packed in memory for fast iterations. + * + * @b Important + * + * Iterators aren't invalidated if: + * + * * New elements are added to the storage. + * * The entity currently pointed is modified (for example, components are added + * or removed from it). + * * The entity currently pointed is destroyed. + * + * In all other cases, modifying the pools iterated by the group in any way + * invalidates all the iterators and using them results in undefined behavior. + * + * @tparam Get Types of storage _observed_ by the group. + * @tparam Exclude Types of storage used to filter the group. + */ +template +class basic_group, get_t, exclude_t> { + using underlying_type = std::common_type_t; + using basic_common_type = std::common_type_t; + + template + static constexpr std::size_t index_of = type_list_index_v, type_list>; + +public: + /*! @brief Underlying entity identifier. */ + using entity_type = underlying_type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Common type among all storage types. */ + using base_type = basic_common_type; + /*! @brief Random access iterator type. */ + using iterator = typename base_type::iterator; + /*! @brief Reversed iterator type. */ + using reverse_iterator = typename base_type::reverse_iterator; + /*! @brief Iterable group type. */ + using iterable = iterable_adaptor, get_t>>; + + /*! @brief Default constructor to use to create empty, invalid groups. */ + basic_group() noexcept + : handler{} {} + + /** + * @brief Constructs a group from a set of storage classes. + * @param ref The actual entities to iterate. + * @param gpool Storage types to iterate _observed_ by the group. + */ + basic_group(basic_common_type &ref, Get &...gpool) noexcept + : handler{&ref}, + pools{&gpool...} {} + + /** + * @brief Returns a const reference to the underlying handler. + * @return A const reference to the underlying handler. + */ + [[nodiscard]] const base_type &handle() const noexcept { + return *handler; + } + + /** + * @brief Returns the storage for a given component type. + * @tparam Type Type of component of which to return the storage. + * @return The storage for the given component type. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + return storage>(); + } + + /** + * @brief Returns the storage for a given index. + * @tparam Index Index of the storage to return. + * @return The storage for the given index. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + return *std::get(pools); + } + + /** + * @brief Returns the number of entities that are part of the group. + * @return Number of entities that are part of the group. + */ + [[nodiscard]] size_type size() const noexcept { + return *this ? handler->size() : size_type{}; + } + + /** + * @brief Returns the number of elements that a group has currently + * allocated space for. + * @return Capacity of the group. + */ + [[nodiscard]] size_type capacity() const noexcept { + return *this ? handler->capacity() : size_type{}; + } + + /*! @brief Requests the removal of unused capacity. */ + void shrink_to_fit() { + if(*this) { + handler->shrink_to_fit(); + } + } + + /** + * @brief Checks whether a group is empty. + * @return True if the group is empty, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return !*this || handler->empty(); + } + + /** + * @brief Returns an iterator to the first entity of the group. + * + * The returned iterator points to the first entity of the group. If the + * group is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first entity of the group. + */ + [[nodiscard]] iterator begin() const noexcept { + return *this ? handler->begin() : iterator{}; + } + + /** + * @brief Returns an iterator that is past the last entity of the group. + * + * The returned iterator points to the entity following the last entity of + * the group. Attempting to dereference the returned iterator results in + * undefined behavior. + * + * @return An iterator to the entity following the last entity of the + * group. + */ + [[nodiscard]] iterator end() const noexcept { + return *this ? handler->end() : iterator{}; + } + + /** + * @brief Returns an iterator to the first entity of the reversed group. + * + * The returned iterator points to the first entity of the reversed group. + * If the group is empty, the returned iterator will be equal to `rend()`. + * + * @return An iterator to the first entity of the reversed group. + */ + [[nodiscard]] reverse_iterator rbegin() const noexcept { + return *this ? handler->rbegin() : reverse_iterator{}; + } + + /** + * @brief Returns an iterator that is past the last entity of the reversed + * group. + * + * The returned iterator points to the entity following the last entity of + * the reversed group. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the entity following the last entity of the + * reversed group. + */ + [[nodiscard]] reverse_iterator rend() const noexcept { + return *this ? handler->rend() : reverse_iterator{}; + } + + /** + * @brief Returns the first entity of the group, if any. + * @return The first entity of the group if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type front() const noexcept { + const auto it = begin(); + return it != end() ? *it : null; + } + + /** + * @brief Returns the last entity of the group, if any. + * @return The last entity of the group if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type back() const noexcept { + const auto it = rbegin(); + return it != rend() ? *it : null; + } + + /** + * @brief Finds an entity. + * @param entt A valid identifier. + * @return An iterator to the given entity if it's found, past the end + * iterator otherwise. + */ + [[nodiscard]] iterator find(const entity_type entt) const noexcept { + const auto it = *this ? handler->find(entt) : iterator{}; + return it != end() && *it == entt ? it : end(); + } + + /** + * @brief Returns the identifier that occupies the given position. + * @param pos Position of the element to return. + * @return The identifier that occupies the given position. + */ + [[nodiscard]] entity_type operator[](const size_type pos) const { + return begin()[pos]; + } + + /** + * @brief Checks if a group is properly initialized. + * @return True if the group is properly initialized, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return handler != nullptr; + } + + /** + * @brief Checks if a group contains an entity. + * @param entt A valid identifier. + * @return True if the group contains the given entity, false otherwise. + */ + [[nodiscard]] bool contains(const entity_type entt) const noexcept { + return *this && handler->contains(entt); + } + + /** + * @brief Returns the components assigned to the given entity. + * + * Prefer this function instead of `registry::get` during iterations. It has + * far better performance than its counterpart. + * + * @warning + * Attempting to use an invalid component type results in a compilation + * error. Attempting to use an entity that doesn't belong to the group + * results in undefined behavior. + * + * @tparam Type Types of components to get. + * @param entt A valid identifier. + * @return The components assigned to the entity. + */ + template + [[nodiscard]] decltype(auto) get(const entity_type entt) const { + if constexpr(sizeof...(Type) == 0) { + return std::apply([entt](auto *...curr) { return std::tuple_cat(curr->get_as_tuple(entt)...); }, pools); + } else if constexpr(sizeof...(Type) == 1) { + return (std::get>(pools)->get(entt), ...); + } else { + return std::tuple_cat(std::get>(pools)->get_as_tuple(entt)...); + } + } + + /** + * @brief Iterates entities and components and applies the given function + * object to them. + * + * The function object is invoked for each entity. It is provided with the + * entity itself and a set of references to non-empty components. The + * _constness_ of the components is as requested.
+ * The signature of the function must be equivalent to one of the following + * forms: + * + * @code{.cpp} + * void(const entity_type, Type &...); + * void(Type &...); + * @endcode + * + * @note + * Empty types aren't explicitly instantiated and therefore they are never + * returned during iterations. + * + * @tparam Func Type of the function object to invoke. + * @param func A valid function object. + */ + template + void each(Func func) const { + for(const auto entt: *this) { + if constexpr(is_applicable_v{}, std::declval().get({})))>) { + std::apply(func, std::tuple_cat(std::make_tuple(entt), get(entt))); + } else { + std::apply(func, get(entt)); + } + } + } + + /** + * @brief Returns an iterable object to use to _visit_ a group. + * + * The iterable object returns tuples that contain the current entity and a + * set of references to its non-empty components. The _constness_ of the + * components is as requested. + * + * @note + * Empty types aren't explicitly instantiated and therefore they are never + * returned during iterations. + * + * @return An iterable object to use to _visit_ the group. + */ + [[nodiscard]] iterable each() const noexcept { + return iterable{{begin(), pools}, {end(), pools}}; + } + + /** + * @brief Sort a group according to the given comparison function. + * + * Sort the group so that iterating it with a couple of iterators returns + * entities and components in the expected order. See `begin` and `end` for + * more details. + * + * The comparison function object must return `true` if the first element + * is _less_ than the second one, `false` otherwise. The signature of the + * comparison function should be equivalent to one of the following: + * + * @code{.cpp} + * bool(std::tuple, std::tuple); + * bool(const Type &..., const Type &...); + * bool(const Entity, const Entity); + * @endcode + * + * Where `Type` are such that they are iterated by the group.
+ * Moreover, the comparison function object shall induce a + * _strict weak ordering_ on the values. + * + * The sort function object must offer a member function template + * `operator()` that accepts three arguments: + * + * * An iterator to the first element of the range to sort. + * * An iterator past the last element of the range to sort. + * * A comparison function to use to compare the elements. + * + * @tparam Type Optional types of components to compare. + * @tparam Compare Type of comparison function object. + * @tparam Sort Type of sort function object. + * @tparam Args Types of arguments to forward to the sort function object. + * @param compare A valid comparison function object. + * @param algo A valid sort function object. + * @param args Arguments to forward to the sort function object, if any. + */ + template + void sort(Compare compare, Sort algo = Sort{}, Args &&...args) { + if(*this) { + if constexpr(sizeof...(Type) == 0) { + static_assert(std::is_invocable_v, "Invalid comparison function"); + handler->sort(std::move(compare), std::move(algo), std::forward(args)...); + } else { + auto comp = [this, &compare](const entity_type lhs, const entity_type rhs) { + if constexpr(sizeof...(Type) == 1) { + return compare((std::get>(pools)->get(lhs), ...), (std::get>(pools)->get(rhs), ...)); + } else { + return compare(std::forward_as_tuple(std::get>(pools)->get(lhs)...), std::forward_as_tuple(std::get>(pools)->get(rhs)...)); + } + }; + + handler->sort(std::move(comp), std::move(algo), std::forward(args)...); + } + } + } + + /** + * @brief Sort the shared pool of entities according to the given component. + * + * Non-owning groups of the same type share with the registry a pool of + * entities with its own order that doesn't depend on the order of any pool + * of components. Users can order the underlying data structure so that it + * respects the order of the pool of the given component. + * + * @note + * The shared pool of entities and thus its order is affected by the changes + * to each and every pool that it tracks. Therefore changes to those pools + * can quickly ruin the order imposed to the pool of entities shared between + * the non-owning groups. + * + * @tparam Type Type of component to use to impose the order. + */ + template + void sort() const { + if(*this) { + handler->respect(*std::get>(pools)); + } + } + +private: + base_type *const handler; + const std::tuple pools; +}; + +/** + * @brief Owning group. + * + * Owning groups returns all entities and only the entities that are at + * least in the given storage. Moreover: + * + * * It's guaranteed that the entity list is tightly packed in memory for fast + * iterations. + * * It's guaranteed that all components in the owned storage are tightly packed + * in memory for even faster iterations and to allow direct access. + * * They stay true to the order of the owned storage and all instances have the + * same order in memory. + * + * The more types of storage are owned, the faster it is to iterate a group. + * + * @b Important + * + * Iterators aren't invalidated if: + * + * * New elements are added to the storage. + * * The entity currently pointed is modified (for example, components are added + * or removed from it). + * * The entity currently pointed is destroyed. + * + * In all other cases, modifying the pools iterated by the group in any way + * invalidates all the iterators and using them results in undefined behavior. + * + * @tparam Owned Types of storage _owned_ by the group. + * @tparam Get Types of storage _observed_ by the group. + * @tparam Exclude Types of storage used to filter the group. + */ +template +class basic_group, get_t, exclude_t> { + using underlying_type = std::common_type_t; + using basic_common_type = std::common_type_t; + + template + static constexpr std::size_t index_of = type_list_index_v, type_list>; + +public: + /*! @brief Underlying entity identifier. */ + using entity_type = underlying_type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Common type among all storage types. */ + using base_type = basic_common_type; + /*! @brief Random access iterator type. */ + using iterator = typename base_type::iterator; + /*! @brief Reversed iterator type. */ + using reverse_iterator = typename base_type::reverse_iterator; + /*! @brief Iterable group type. */ + using iterable = iterable_adaptor, get_t>>; + + /*! @brief Default constructor to use to create empty, invalid groups. */ + basic_group() noexcept + : length{} {} + + /** + * @brief Constructs a group from a set of storage classes. + * @param extent The actual number of entities to iterate. + * @param opool Storage types to iterate _owned_ by the group. + * @param gpool Storage types to iterate _observed_ by the group. + */ + basic_group(const std::size_t &extent, Owned &...opool, Get &...gpool) noexcept + : pools{&opool..., &gpool...}, + length{&extent} {} + + /** + * @brief Returns the storage for a given component type. + * @tparam Type Type of component of which to return the storage. + * @return The storage for the given component type. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + return storage>(); + } + + /** + * @brief Returns the storage for a given index. + * @tparam Index Index of the storage to return. + * @return The storage for the given index. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + return *std::get(pools); + } + + /** + * @brief Returns the number of entities that that are part of the group. + * @return Number of entities that that are part of the group. + */ + [[nodiscard]] size_type size() const noexcept { + return *this ? *length : size_type{}; + } + + /** + * @brief Checks whether a group is empty. + * @return True if the group is empty, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return !*this || !*length; + } + + /** + * @brief Returns an iterator to the first entity of the group. + * + * The returned iterator points to the first entity of the group. If the + * group is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first entity of the group. + */ + [[nodiscard]] iterator begin() const noexcept { + return *this ? (std::get<0>(pools)->base_type::end() - *length) : iterator{}; + } + + /** + * @brief Returns an iterator that is past the last entity of the group. + * + * The returned iterator points to the entity following the last entity of + * the group. Attempting to dereference the returned iterator results in + * undefined behavior. + * + * @return An iterator to the entity following the last entity of the + * group. + */ + [[nodiscard]] iterator end() const noexcept { + return *this ? std::get<0>(pools)->base_type::end() : iterator{}; + } + + /** + * @brief Returns an iterator to the first entity of the reversed group. + * + * The returned iterator points to the first entity of the reversed group. + * If the group is empty, the returned iterator will be equal to `rend()`. + * + * @return An iterator to the first entity of the reversed group. + */ + [[nodiscard]] reverse_iterator rbegin() const noexcept { + return *this ? std::get<0>(pools)->base_type::rbegin() : reverse_iterator{}; + } + + /** + * @brief Returns an iterator that is past the last entity of the reversed + * group. + * + * The returned iterator points to the entity following the last entity of + * the reversed group. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the entity following the last entity of the + * reversed group. + */ + [[nodiscard]] reverse_iterator rend() const noexcept { + return *this ? (std::get<0>(pools)->base_type::rbegin() + *length) : reverse_iterator{}; + } + + /** + * @brief Returns the first entity of the group, if any. + * @return The first entity of the group if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type front() const noexcept { + const auto it = begin(); + return it != end() ? *it : null; + } + + /** + * @brief Returns the last entity of the group, if any. + * @return The last entity of the group if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type back() const noexcept { + const auto it = rbegin(); + return it != rend() ? *it : null; + } + + /** + * @brief Finds an entity. + * @param entt A valid identifier. + * @return An iterator to the given entity if it's found, past the end + * iterator otherwise. + */ + [[nodiscard]] iterator find(const entity_type entt) const noexcept { + const auto it = *this ? std::get<0>(pools)->find(entt) : iterator{}; + return it != end() && it >= begin() && *it == entt ? it : end(); + } + + /** + * @brief Returns the identifier that occupies the given position. + * @param pos Position of the element to return. + * @return The identifier that occupies the given position. + */ + [[nodiscard]] entity_type operator[](const size_type pos) const { + return begin()[pos]; + } + + /** + * @brief Checks if a group is properly initialized. + * @return True if the group is properly initialized, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return length != nullptr; + } + + /** + * @brief Checks if a group contains an entity. + * @param entt A valid identifier. + * @return True if the group contains the given entity, false otherwise. + */ + [[nodiscard]] bool contains(const entity_type entt) const noexcept { + return *this && std::get<0>(pools)->contains(entt) && (std::get<0>(pools)->index(entt) < (*length)); + } + + /** + * @brief Returns the components assigned to the given entity. + * + * Prefer this function instead of `registry::get` during iterations. It has + * far better performance than its counterpart. + * + * @warning + * Attempting to use an invalid component type results in a compilation + * error. Attempting to use an entity that doesn't belong to the group + * results in undefined behavior. + * + * @tparam Type Types of components to get. + * @param entt A valid identifier. + * @return The components assigned to the entity. + */ + template + [[nodiscard]] decltype(auto) get(const entity_type entt) const { + if constexpr(sizeof...(Type) == 0) { + return std::apply([entt](auto *...curr) { return std::tuple_cat(curr->get_as_tuple(entt)...); }, pools); + } else if constexpr(sizeof...(Type) == 1) { + return (std::get>(pools)->get(entt), ...); + } else { + return std::tuple_cat(std::get>(pools)->get_as_tuple(entt)...); + } + } + + /** + * @brief Iterates entities and components and applies the given function + * object to them. + * + * The function object is invoked for each entity. It is provided with the + * entity itself and a set of references to non-empty components. The + * _constness_ of the components is as requested.
+ * The signature of the function must be equivalent to one of the following + * forms: + * + * @code{.cpp} + * void(const entity_type, Type &...); + * void(Type &...); + * @endcode + * + * @note + * Empty types aren't explicitly instantiated and therefore they are never + * returned during iterations. + * + * @tparam Func Type of the function object to invoke. + * @param func A valid function object. + */ + template + void each(Func func) const { + for(auto args: each()) { + if constexpr(is_applicable_v{}, std::declval().get({})))>) { + std::apply(func, args); + } else { + std::apply([&func](auto, auto &&...less) { func(std::forward(less)...); }, args); + } + } + } + + /** + * @brief Returns an iterable object to use to _visit_ a group. + * + * The iterable object returns tuples that contain the current entity and a + * set of references to its non-empty components. The _constness_ of the + * components is as requested. + * + * @note + * Empty types aren't explicitly instantiated and therefore they are never + * returned during iterations. + * + * @return An iterable object to use to _visit_ the group. + */ + [[nodiscard]] iterable each() const noexcept { + return {{begin(), pools}, {end(), pools}}; + } + + /** + * @brief Sort a group according to the given comparison function. + * + * Sort the group so that iterating it with a couple of iterators returns + * entities and components in the expected order. See `begin` and `end` for + * more details. + * + * The comparison function object must return `true` if the first element + * is _less_ than the second one, `false` otherwise. The signature of the + * comparison function should be equivalent to one of the following: + * + * @code{.cpp} + * bool(std::tuple, std::tuple); + * bool(const Type &, const Type &); + * bool(const Entity, const Entity); + * @endcode + * + * Where `Type` are either owned types or not but still such that they are + * iterated by the group.
+ * Moreover, the comparison function object shall induce a + * _strict weak ordering_ on the values. + * + * The sort function object must offer a member function template + * `operator()` that accepts three arguments: + * + * * An iterator to the first element of the range to sort. + * * An iterator past the last element of the range to sort. + * * A comparison function to use to compare the elements. + * + * @tparam Type Optional types of components to compare. + * @tparam Compare Type of comparison function object. + * @tparam Sort Type of sort function object. + * @tparam Args Types of arguments to forward to the sort function object. + * @param compare A valid comparison function object. + * @param algo A valid sort function object. + * @param args Arguments to forward to the sort function object, if any. + */ + template + void sort(Compare compare, Sort algo = Sort{}, Args &&...args) const { + if constexpr(sizeof...(Type) == 0) { + static_assert(std::is_invocable_v, "Invalid comparison function"); + std::get<0>(pools)->sort_n(*length, std::move(compare), std::move(algo), std::forward(args)...); + } else { + auto comp = [this, &compare](const entity_type lhs, const entity_type rhs) { + if constexpr(sizeof...(Type) == 1) { + return compare((std::get>(pools)->get(lhs), ...), (std::get>(pools)->get(rhs), ...)); + } else { + return compare(std::forward_as_tuple(std::get>(pools)->get(lhs)...), std::forward_as_tuple(std::get>(pools)->get(rhs)...)); + } + }; + + std::get<0>(pools)->sort_n(*length, std::move(comp), std::move(algo), std::forward(args)...); + } + + std::apply([this](auto *head, auto *...other) { + for(auto next = *length; next; --next) { + const auto pos = next - 1; + [[maybe_unused]] const auto entt = head->data()[pos]; + (other->swap_elements(other->data()[pos], entt), ...); + } + }, + pools); + } + +private: + const std::tuple pools; + const size_type *const length; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/entity/handle.hpp b/LiteLoader/third-party/include/entt/entity/handle.hpp similarity index 54% rename from LiteLoader/Header/third-party/entt/entity/handle.hpp rename to LiteLoader/third-party/include/entt/entity/handle.hpp index 036e067..a42aeb0 100644 --- a/LiteLoader/Header/third-party/entt/entity/handle.hpp +++ b/LiteLoader/third-party/include/entt/entity/handle.hpp @@ -1,31 +1,107 @@ #ifndef ENTT_ENTITY_HANDLE_HPP #define ENTT_ENTITY_HANDLE_HPP - +#include #include #include #include -#include "../config/config.h" +#include "../core/iterator.hpp" #include "../core/type_traits.hpp" +#include "entity.hpp" #include "fwd.hpp" -#include "registry.hpp" - namespace entt { +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class handle_storage_iterator final { + template + friend class handle_storage_iterator; + + using underlying_type = std::remove_reference_t; + using entity_type = typename underlying_type::entity_type; + +public: + using value_type = typename std::iterator_traits::value_type; + using pointer = input_iterator_pointer; + using reference = value_type; + using difference_type = std::ptrdiff_t; + using iterator_category = std::input_iterator_tag; + + constexpr handle_storage_iterator() noexcept + : entt{null}, + it{}, + last{} {} + + constexpr handle_storage_iterator(entity_type value, It from, It to) noexcept + : entt{value}, + it{from}, + last{to} { + while(it != last && !it->second.contains(entt)) { ++it; } + } + + constexpr handle_storage_iterator &operator++() noexcept { + while(++it != last && !it->second.contains(entt)) {} + return *this; + } + + constexpr handle_storage_iterator operator++(int) noexcept { + handle_storage_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return *it; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return operator*(); + } + + template + friend constexpr bool operator==(const handle_storage_iterator &, const handle_storage_iterator &) noexcept; + +private: + entity_type entt; + It it; + It last; +}; + +template +[[nodiscard]] constexpr bool operator==(const handle_storage_iterator &lhs, const handle_storage_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const handle_storage_iterator &lhs, const handle_storage_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ /** * @brief Non-owning handle to an entity. * * Tiny wrapper around a registry and an entity. * - * @tparam Entity A valid entity type (see entt_traits for more details). - * @tparam Type Types to which to restrict the scope of a handle. + * @tparam Registry Basic registry type. + * @tparam Scope Types to which to restrict the scope of a handle. */ -template +template struct basic_handle { /*! @brief Type of registry accepted by the handle. */ - using registry_type = constness_as_t>, Entity>; + using registry_type = Registry; /*! @brief Underlying entity identifier. */ using entity_type = typename registry_type::entity_type; /*! @brief Underlying version type. */ @@ -34,29 +110,33 @@ struct basic_handle { using size_type = typename registry_type::size_type; /*! @brief Constructs an invalid handle. */ - basic_handle() ENTT_NOEXCEPT - : reg{}, entt{null} - {} + basic_handle() noexcept + : reg{}, + entt{null} {} /** * @brief Constructs a handle from a given registry and entity. * @param ref An instance of the registry class. - * @param value An entity identifier. + * @param value A valid identifier. */ - basic_handle(registry_type &ref, entity_type value) ENTT_NOEXCEPT - : reg{&ref}, entt{value} - {} + basic_handle(registry_type &ref, entity_type value) noexcept + : reg{&ref}, + entt{value} {} /** - * @brief Compares two handles. - * @tparam Args Template parameters of the handle with which to compare. - * @param other Handle with which to compare. - * @return True if both handles refer to the same registry and the same - * entity, false otherwise. + * @brief Returns an iterable object to use to _visit_ a handle. + * + * The iterable object returns a pair that contains the name and a reference + * to the current storage.
+ * Returned storage are those that contain the entity associated with the + * handle. + * + * @return An iterable object to use to _visit_ the handle. */ - template - [[nodiscard]] bool operator==(const basic_handle &other) const ENTT_NOEXCEPT { - return reg == other.registry() && entt == other.entity(); + [[nodiscard]] auto storage() const noexcept { + auto iterable = reg->storage(); + using iterator_type = internal::handle_storage_iterator; + return iterable_adaptor{iterator_type{entt, iterable.begin(), iterable.end()}, iterator_type{entt, iterable.end(), iterable.end()}}; } /** @@ -67,21 +147,18 @@ struct basic_handle { * entity. */ template - operator basic_handle() const ENTT_NOEXCEPT { - static_assert( - (std::is_same_v || std::is_same_v, Entity>) - && (sizeof...(Type) == 0 || ((sizeof...(Args) != 0 && sizeof...(Args) <= sizeof...(Type)) && ... && (type_list_contains_v, Args>))), - "Invalid conversion between different handles" - ); + operator basic_handle() const noexcept { + static_assert(std::is_same_v || std::is_same_v, Registry>, "Invalid conversion between different handles"); + static_assert((sizeof...(Scope) == 0 || ((sizeof...(Args) != 0 && sizeof...(Args) <= sizeof...(Scope)) && ... && (type_list_contains_v, Args>))), "Invalid conversion between different handles"); return reg ? basic_handle{*reg, entt} : basic_handle{}; } /** * @brief Converts a handle to its underlying entity. - * @return An entity identifier. + * @return The contained identifier. */ - [[nodiscard]] operator entity_type() const ENTT_NOEXCEPT { + [[nodiscard]] operator entity_type() const noexcept { return entity(); } @@ -89,7 +166,7 @@ struct basic_handle { * @brief Checks if a handle refers to non-null registry pointer and entity. * @return True if the handle refers to non-null registry and entity, false otherwise. */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { + [[nodiscard]] explicit operator bool() const noexcept { return reg && reg->valid(entt); } @@ -105,7 +182,7 @@ struct basic_handle { * @brief Returns a pointer to the underlying registry, if any. * @return A pointer to the underlying registry, if any. */ - [[nodiscard]] registry_type * registry() const ENTT_NOEXCEPT { + [[nodiscard]] registry_type *registry() const noexcept { return reg; } @@ -113,21 +190,17 @@ struct basic_handle { * @brief Returns the entity associated with a handle. * @return The entity associated with the handle. */ - [[nodiscard]] entity_type entity() const ENTT_NOEXCEPT { + [[nodiscard]] entity_type entity() const noexcept { return entt; } - /** - * @brief Destroys the entity associated with a handle. - * @sa basic_registry::destroy - */ + /*! @brief Destroys the entity associated with a handle. */ void destroy() { reg->destroy(entt); } /** * @brief Destroys the entity associated with a handle. - * @sa basic_registry::destroy * @param version A desired version upon destruction. */ void destroy(const version_type version) { @@ -136,103 +209,79 @@ struct basic_handle { /** * @brief Assigns the given component to a handle. - * @sa basic_registry::emplace * @tparam Component Type of component to create. * @tparam Args Types of arguments to use to construct the component. * @param args Parameters to use to initialize the component. * @return A reference to the newly created component. */ template - decltype(auto) emplace(Args &&... args) const { - static_assert(((sizeof...(Type) == 0) || ... || std::is_same_v), "Invalid type"); + decltype(auto) emplace(Args &&...args) const { + static_assert(((sizeof...(Scope) == 0) || ... || std::is_same_v), "Invalid type"); return reg->template emplace(entt, std::forward(args)...); } /** * @brief Assigns or replaces the given component for a handle. - * @sa basic_registry::emplace_or_replace * @tparam Component Type of component to assign or replace. * @tparam Args Types of arguments to use to construct the component. * @param args Parameters to use to initialize the component. * @return A reference to the newly created component. */ template - decltype(auto) emplace_or_replace(Args &&... args) const { - static_assert(((sizeof...(Type) == 0) || ... || std::is_same_v), "Invalid type"); + decltype(auto) emplace_or_replace(Args &&...args) const { + static_assert(((sizeof...(Scope) == 0) || ... || std::is_same_v), "Invalid type"); return reg->template emplace_or_replace(entt, std::forward(args)...); } /** * @brief Patches the given component for a handle. - * @sa basic_registry::patch * @tparam Component Type of component to patch. * @tparam Func Types of the function objects to invoke. * @param func Valid function objects. * @return A reference to the patched component. */ template - decltype(auto) patch(Func &&... func) const { - static_assert(((sizeof...(Type) == 0) || ... || std::is_same_v), "Invalid type"); + decltype(auto) patch(Func &&...func) const { + static_assert(((sizeof...(Scope) == 0) || ... || std::is_same_v), "Invalid type"); return reg->template patch(entt, std::forward(func)...); } /** * @brief Replaces the given component for a handle. - * @sa basic_registry::replace * @tparam Component Type of component to replace. * @tparam Args Types of arguments to use to construct the component. * @param args Parameters to use to initialize the component. * @return A reference to the component being replaced. */ template - decltype(auto) replace(Args &&... args) const { - static_assert(((sizeof...(Type) == 0) || ... || std::is_same_v), "Invalid type"); + decltype(auto) replace(Args &&...args) const { + static_assert(((sizeof...(Scope) == 0) || ... || std::is_same_v), "Invalid type"); return reg->template replace(entt, std::forward(args)...); } /** * @brief Removes the given components from a handle. - * @sa basic_registry::remove * @tparam Component Types of components to remove. * @return The number of components actually removed. */ template size_type remove() const { - static_assert(sizeof...(Type) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); + static_assert(sizeof...(Scope) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); return reg->template remove(entt); } /** * @brief Erases the given components from a handle. - * @sa basic_registry::erase * @tparam Component Types of components to erase. */ template void erase() const { - static_assert(sizeof...(Type) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); + static_assert(sizeof...(Scope) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); reg->template erase(entt); } - /*! @copydoc remove */ - template - [[deprecated("Use ::remove instead")]] - size_type remove_if_exists() const { - return remove(); - } - - /** - * @brief Removes all the components from a handle and makes it orphaned. - * @sa basic_registry::remove_all - */ - [[deprecated("No longer supported")]] - void remove_all() const { - static_assert(sizeof...(Type) == 0, "Invalid operation"); - reg->remove_all(entt); - } - /** * @brief Checks if a handle has all the given components. - * @sa basic_registry::all_of * @tparam Component Components for which to perform the check. * @return True if the handle has all the components, false otherwise. */ @@ -243,7 +292,6 @@ struct basic_handle { /** * @brief Checks if a handle has at least one of the given components. - * @sa basic_registry::any_of * @tparam Component Components for which to perform the check. * @return True if the handle has at least one of the given components, * false otherwise. @@ -255,39 +303,36 @@ struct basic_handle { /** * @brief Returns references to the given components for a handle. - * @sa basic_registry::get * @tparam Component Types of components to get. * @return References to the components owned by the handle. */ template [[nodiscard]] decltype(auto) get() const { - static_assert(sizeof...(Type) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); + static_assert(sizeof...(Scope) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); return reg->template get(entt); } /** * @brief Returns a reference to the given component for a handle. - * @sa basic_registry::get_or_emplace * @tparam Component Type of component to get. * @tparam Args Types of arguments to use to construct the component. * @param args Parameters to use to initialize the component. * @return Reference to the component owned by the handle. */ template - [[nodiscard]] decltype(auto) get_or_emplace(Args &&... args) const { - static_assert(((sizeof...(Type) == 0) || ... || std::is_same_v), "Invalid type"); + [[nodiscard]] decltype(auto) get_or_emplace(Args &&...args) const { + static_assert(((sizeof...(Scope) == 0) || ... || std::is_same_v), "Invalid type"); return reg->template get_or_emplace(entt, std::forward(args)...); } /** * @brief Returns pointers to the given components for a handle. - * @sa basic_registry::try_get * @tparam Component Types of components to get. * @return Pointers to the components owned by the handle. */ template [[nodiscard]] auto try_get() const { - static_assert(sizeof...(Type) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); + static_assert(sizeof...(Scope) == 0 || (type_list_contains_v, Component> && ...), "Invalid type"); return reg->template try_get(entt); } @@ -299,57 +344,39 @@ struct basic_handle { return reg->orphan(entt); } - /** - * @brief Visits a handle and returns the types for its components. - * @sa basic_registry::visit - * @tparam Func Type of the function object to invoke. - * @param func A valid function object. - */ - template - void visit(Func &&func) const { - reg->visit(entt, std::forward(func)); - } - private: registry_type *reg; entity_type entt; }; +/** + * @brief Compares two handles. + * @tparam Args Scope of the first handle. + * @tparam Other Scope of the second handle. + * @param lhs A valid handle. + * @param rhs A valid handle. + * @return True if both handles refer to the same registry and the same + * entity, false otherwise. + */ +template +[[nodiscard]] bool operator==(const basic_handle &lhs, const basic_handle &rhs) noexcept { + return lhs.registry() == rhs.registry() && lhs.entity() == rhs.entity(); +} /** * @brief Compares two handles. - * @tparam Type A valid entity type (see entt_traits for more details). - * @tparam Other A valid entity type (see entt_traits for more details). + * @tparam Args Scope of the first handle. + * @tparam Other Scope of the second handle. * @param lhs A valid handle. * @param rhs A valid handle. * @return False if both handles refer to the same registry and the same * entity, true otherwise. */ -template -bool operator!=(const basic_handle &lhs, const basic_handle &rhs) ENTT_NOEXCEPT { +template +[[nodiscard]] bool operator!=(const basic_handle &lhs, const basic_handle &rhs) noexcept { return !(lhs == rhs); } - -/** - * @brief Deduction guide. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -basic_handle(basic_registry &, Entity) --> basic_handle; - - -/** - * @brief Deduction guide. - * @tparam Entity A valid entity type (see entt_traits for more details). - */ -template -basic_handle(const basic_registry &, Entity) --> basic_handle; - - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/entity/helper.hpp b/LiteLoader/third-party/include/entt/entity/helper.hpp new file mode 100644 index 0000000..7440937 --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/helper.hpp @@ -0,0 +1,144 @@ +#ifndef ENTT_ENTITY_HELPER_HPP +#define ENTT_ENTITY_HELPER_HPP + +#include +#include +#include "../core/fwd.hpp" +#include "../core/type_traits.hpp" +#include "../signal/delegate.hpp" +#include "component.hpp" +#include "fwd.hpp" +#include "group.hpp" +#include "view.hpp" + +namespace entt { + +/** + * @brief Converts a registry to a view. + * @tparam Registry Basic registry type. + */ +template +class as_view { + template + auto dispatch(get_t, exclude_t) const { + return reg.template view...>(exclude_t...>{}); + } + +public: + /*! @brief Type of registry to convert. */ + using registry_type = Registry; + /*! @brief Underlying entity identifier. */ + using entity_type = std::remove_const_t; + + /** + * @brief Constructs a converter for a given registry. + * @param source A valid reference to a registry. + */ + as_view(registry_type &source) noexcept + : reg{source} {} + + /** + * @brief Conversion function from a registry to a view. + * @tparam Get Type of storage used to construct the view. + * @tparam Exclude Types of storage used to filter the view. + * @return A newly created view. + */ + template + operator basic_view() const { + return dispatch(Get{}, Exclude{}); + } + +private: + registry_type ® +}; + +/** + * @brief Converts a registry to a group. + * @tparam Registry Basic registry type. + */ +template +class as_group { + template + auto dispatch(owned_t, get_t, exclude_t) const { + if constexpr(std::is_const_v) { + return reg.template group_if_exists(get_t{}, exclude_t{}); + } else { + return reg.template group...>(get_t...>{}, exclude_t...>{}); + } + } + +public: + /*! @brief Type of registry to convert. */ + using registry_type = Registry; + /*! @brief Underlying entity identifier. */ + using entity_type = std::remove_const_t; + + /** + * @brief Constructs a converter for a given registry. + * @param source A valid reference to a registry. + */ + as_group(registry_type &source) noexcept + : reg{source} {} + + /** + * @brief Conversion function from a registry to a group. + * @tparam Owned Types of _owned_ by the group. + * @tparam Get Types of storage _observed_ by the group. + * @tparam Exclude Types of storage used to filter the group. + * @return A newly created group. + */ + template + operator basic_group() const { + return dispatch(Owned{}, Get{}, Exclude{}); + } + +private: + registry_type ® +}; + +/** + * @brief Helper to create a listener that directly invokes a member function. + * @tparam Member Member function to invoke on a component of the given type. + * @tparam Registry Basic registry type. + * @param reg A registry that contains the given entity and its components. + * @param entt Entity from which to get the component. + */ +template>> +void invoke(Registry ®, const typename Registry::entity_type entt) { + static_assert(std::is_member_function_pointer_v, "Invalid pointer to non-static member function"); + delegate func; + func.template connect(reg.template get>(entt)); + func(reg, entt); +} + +/** + * @brief Returns the entity associated with a given component. + * + * @warning + * Currently, this function only works correctly with the default pool as it + * makes assumptions about how the components are laid out. + * + * @tparam Registry Basic registry type. + * @tparam Component Type of component. + * @param reg A registry that contains the given entity and its components. + * @param instance A valid component instance. + * @return The entity associated with the given component. + */ +template +typename Registry::entity_type to_entity(const Registry ®, const Component &instance) { + const auto &storage = reg.template storage(); + const typename Registry::base_type &base = storage; + const auto *addr = std::addressof(instance); + + for(auto it = base.rbegin(), last = base.rend(); it < last; it += component_traits::page_size) { + if(const auto dist = (addr - std::addressof(storage.get(*it))); dist >= 0 && dist < static_cast(component_traits::page_size)) { + return *(it + dist); + } + } + + return null; +} + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/entity/observer.hpp b/LiteLoader/third-party/include/entt/entity/observer.hpp similarity index 79% rename from LiteLoader/Header/third-party/entt/entity/observer.hpp rename to LiteLoader/third-party/include/entt/entity/observer.hpp index 3665203..5c1f503 100644 --- a/LiteLoader/Header/third-party/entt/entity/observer.hpp +++ b/LiteLoader/third-party/include/entt/entity/observer.hpp @@ -1,30 +1,22 @@ #ifndef ENTT_ENTITY_OBSERVER_HPP #define ENTT_ENTITY_OBSERVER_HPP - -#include #include #include -#include +#include #include -#include "../config/config.h" +#include #include "../core/type_traits.hpp" #include "../signal/delegate.hpp" -#include "registry.hpp" -#include "storage.hpp" -#include "utility.hpp" -#include "entity.hpp" #include "fwd.hpp" - +#include "storage.hpp" namespace entt { - /*! @brief Grouping matcher. */ template struct matcher {}; - /** * @brief Collector. * @@ -34,7 +26,6 @@ struct matcher {}; template struct basic_collector; - /** * @brief Collector. * @@ -52,7 +43,7 @@ struct basic_collector<> { * @return The updated collector. */ template - static constexpr auto group(exclude_t = {}) ENTT_NOEXCEPT { + static constexpr auto group(exclude_t = {}) noexcept { return basic_collector, type_list<>, type_list, AllOf...>>{}; } @@ -62,7 +53,7 @@ struct basic_collector<> { * @return The updated collector. */ template - static constexpr auto update() ENTT_NOEXCEPT { + static constexpr auto update() noexcept { return basic_collector, type_list<>, AnyOf>>{}; } }; @@ -87,7 +78,7 @@ struct basic_collector, type_list, Rule * @return The updated collector. */ template - static constexpr auto group(exclude_t = {}) ENTT_NOEXCEPT { + static constexpr auto group(exclude_t = {}) noexcept { return basic_collector, type_list<>, type_list, AllOf...>, current_type, Other...>{}; } @@ -97,7 +88,7 @@ struct basic_collector, type_list, Rule * @return The updated collector. */ template - static constexpr auto update() ENTT_NOEXCEPT { + static constexpr auto update() noexcept { return basic_collector, type_list<>, AnyOf>, current_type, Other...>{}; } @@ -108,17 +99,15 @@ struct basic_collector, type_list, Rule * @return The updated collector. */ template - static constexpr auto where(exclude_t = {}) ENTT_NOEXCEPT { + static constexpr auto where(exclude_t = {}) noexcept { using extended_type = matcher, type_list, Rule...>; return basic_collector{}; } }; - /*! @brief Variable template used to ease the definition of collectors. */ inline constexpr basic_collector<> collector{}; - /** * @brief Observer. * @@ -166,11 +155,11 @@ inline constexpr basic_collector<> collector{}; * from the registry before being destroyed to avoid crashes due to dangling * pointers. * - * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Registry Basic registry type. */ -template -class basic_observer { - using payload_type = std::uint32_t; +template +class basic_observer: private basic_storage { + using base_type = basic_storage; template struct matcher_handler; @@ -178,32 +167,32 @@ class basic_observer { template struct matcher_handler, type_list, AnyOf>> { template - static void maybe_valid_if(basic_observer &obs, basic_registry ®, const Entity entt) { + static void maybe_valid_if(basic_observer &obs, Registry ®, const typename Registry::entity_type entt) { if(reg.template all_of(entt) && !reg.template any_of(entt)) { - if(!obs.storage.contains(entt)) { - obs.storage.emplace(entt); + if(!obs.contains(entt)) { + obs.emplace(entt); } - obs.storage.get(entt) |= (1 << Index); + obs.get(entt) |= (1 << Index); } } template - static void discard_if(basic_observer &obs, basic_registry &, const Entity entt) { - if(obs.storage.contains(entt) && !(obs.storage.get(entt) &= (~(1 << Index)))) { - obs.storage.erase(entt); + static void discard_if(basic_observer &obs, Registry &, const typename Registry::entity_type entt) { + if(obs.contains(entt) && !(obs.get(entt) &= (~(1 << Index)))) { + obs.erase(entt); } } template - static void connect(basic_observer &obs, basic_registry ®) { + static void connect(basic_observer &obs, Registry ®) { (reg.template on_destroy().template connect<&discard_if>(obs), ...); (reg.template on_construct().template connect<&discard_if>(obs), ...); reg.template on_update().template connect<&maybe_valid_if>(obs); reg.template on_destroy().template connect<&discard_if>(obs); } - static void disconnect(basic_observer &obs, basic_registry ®) { + static void disconnect(basic_observer &obs, Registry ®) { (reg.template on_destroy().disconnect(obs), ...); (reg.template on_construct().disconnect(obs), ...); reg.template on_update().disconnect(obs); @@ -214,32 +203,33 @@ class basic_observer { template struct matcher_handler, type_list, type_list, AllOf...>> { template - static void maybe_valid_if(basic_observer &obs, basic_registry ®, const Entity entt) { - if([®, entt]() { + static void maybe_valid_if(basic_observer &obs, Registry ®, const typename Registry::entity_type entt) { + auto condition = [®, entt]() { if constexpr(sizeof...(Ignore) == 0) { return reg.template all_of(entt) && !reg.template any_of(entt); } else { return reg.template all_of(entt) && ((std::is_same_v || !reg.template any_of(entt)) && ...) && !reg.template any_of(entt); } - }()) - { - if(!obs.storage.contains(entt)) { - obs.storage.emplace(entt); + }; + + if(condition()) { + if(!obs.contains(entt)) { + obs.emplace(entt); } - obs.storage.get(entt) |= (1 << Index); + obs.get(entt) |= (1 << Index); } } template - static void discard_if(basic_observer &obs, basic_registry &, const Entity entt) { - if(obs.storage.contains(entt) && !(obs.storage.get(entt) &= (~(1 << Index)))) { - obs.storage.erase(entt); + static void discard_if(basic_observer &obs, Registry &, const typename Registry::entity_type entt) { + if(obs.contains(entt) && !(obs.get(entt) &= (~(1 << Index)))) { + obs.erase(entt); } } template - static void connect(basic_observer &obs, basic_registry ®) { + static void connect(basic_observer &obs, Registry ®) { (reg.template on_destroy().template connect<&discard_if>(obs), ...); (reg.template on_construct().template connect<&discard_if>(obs), ...); (reg.template on_construct().template connect<&maybe_valid_if>(obs), ...); @@ -248,7 +238,7 @@ class basic_observer { (reg.template on_construct().template connect<&discard_if>(obs), ...); } - static void disconnect(basic_observer &obs, basic_registry ®) { + static void disconnect(basic_observer &obs, Registry ®) { (reg.template on_destroy().disconnect(obs), ...); (reg.template on_construct().disconnect(obs), ...); (reg.template on_construct().disconnect(obs), ...); @@ -259,30 +249,30 @@ class basic_observer { }; template - static void disconnect(basic_registry ®, basic_observer &obs) { + static void disconnect(Registry ®, basic_observer &obs) { (matcher_handler::disconnect(obs, reg), ...); } template - void connect(basic_registry ®, std::index_sequence) { - static_assert(sizeof...(Matcher) < std::numeric_limits::digits, "Too many matchers"); + void connect(Registry ®, std::index_sequence) { + static_assert(sizeof...(Matcher) < std::numeric_limits::digits, "Too many matchers"); (matcher_handler::template connect(*this, reg), ...); release.template connect<&basic_observer::disconnect>(reg); } public: + /*! Basic registry type. */ + using registry_type = Registry; /*! @brief Underlying entity identifier. */ - using entity_type = Entity; + using entity_type = typename registry_type::entity_type; /*! @brief Unsigned integer type. */ using size_type = std::size_t; /*! @brief Random access iterator type. */ - using iterator = typename basic_sparse_set::iterator; + using iterator = typename registry_type::base_type::iterator; /*! @brief Default constructor. */ basic_observer() - : release{}, - storage{} - {} + : release{} {} /*! @brief Default copy constructor, deleted on purpose. */ basic_observer(const basic_observer &) = delete; @@ -295,9 +285,8 @@ public: * @param reg A valid reference to a registry. */ template - basic_observer(basic_registry ®, basic_collector) - : basic_observer{} - { + basic_observer(registry_type ®, basic_collector) + : basic_observer{} { connect(reg, std::index_sequence_for{}); } @@ -308,13 +297,13 @@ public: * @brief Default copy assignment operator, deleted on purpose. * @return This observer. */ - basic_observer & operator=(const basic_observer &) = delete; + basic_observer &operator=(const basic_observer &) = delete; /** * @brief Default move assignment operator, deleted on purpose. * @return This observer. */ - basic_observer & operator=(basic_observer &&) = delete; + basic_observer &operator=(basic_observer &&) = delete; /** * @brief Connects an observer to a given registry. @@ -322,10 +311,10 @@ public: * @param reg A valid reference to a registry. */ template - void connect(basic_registry ®, basic_collector) { + void connect(registry_type ®, basic_collector) { disconnect(); connect(reg, std::index_sequence_for{}); - storage.clear(); + base_type::clear(); } /*! @brief Disconnects an observer from the registry it keeps track of. */ @@ -340,16 +329,16 @@ public: * @brief Returns the number of elements in an observer. * @return Number of elements. */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { - return storage.size(); + [[nodiscard]] size_type size() const noexcept { + return base_type::size(); } /** * @brief Checks whether an observer is empty. * @return True if the observer is empty, false otherwise. */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { - return storage.empty(); + [[nodiscard]] bool empty() const noexcept { + return base_type::empty(); } /** @@ -364,8 +353,8 @@ public: * * @return A pointer to the array of entities. */ - [[nodiscard]] const entity_type * data() const ENTT_NOEXCEPT { - return storage.data(); + [[nodiscard]] const entity_type *data() const noexcept { + return base_type::data(); } /** @@ -376,8 +365,8 @@ public: * * @return An iterator to the first entity of the observer. */ - [[nodiscard]] iterator begin() const ENTT_NOEXCEPT { - return storage.basic_sparse_set::begin(); + [[nodiscard]] iterator begin() const noexcept { + return base_type::base_type::begin(); } /** @@ -390,13 +379,13 @@ public: * @return An iterator to the entity following the last entity of the * observer. */ - [[nodiscard]] iterator end() const ENTT_NOEXCEPT { - return storage.basic_sparse_set::end(); + [[nodiscard]] iterator end() const noexcept { + return base_type::base_type::end(); } /*! @brief Clears the underlying container. */ - void clear() ENTT_NOEXCEPT { - storage.clear(); + void clear() noexcept { + base_type::clear(); } /** @@ -436,11 +425,8 @@ public: private: delegate release; - basic_storage storage; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/Header/third-party/entt/entity/organizer.hpp b/LiteLoader/third-party/include/entt/entity/organizer.hpp similarity index 51% rename from LiteLoader/Header/third-party/entt/entity/organizer.hpp rename to LiteLoader/third-party/include/entt/entity/organizer.hpp index d0ed9c8..ebda20b 100644 --- a/LiteLoader/Header/third-party/entt/entity/organizer.hpp +++ b/LiteLoader/third-party/include/entt/entity/organizer.hpp @@ -1,115 +1,98 @@ #ifndef ENTT_ENTITY_ORGANIZER_HPP #define ENTT_ENTITY_ORGANIZER_HPP - #include -#include #include -#include #include #include #include "../core/type_info.hpp" #include "../core/type_traits.hpp" +#include "../core/utility.hpp" +#include "../graph/adjacency_matrix.hpp" +#include "../graph/flow.hpp" #include "fwd.hpp" #include "helper.hpp" - namespace entt { - /** * @cond TURN_OFF_DOXYGEN * Internal details not to be documented. */ - namespace internal { - template struct is_view: std::false_type {}; -template -struct is_view, Component...>>: std::true_type {}; +template +struct is_view>: std::true_type {}; template inline constexpr bool is_view_v = is_view::value; - template struct unpack_type { using ro = std::conditional_t< - type_list_contains_v> || (std::is_const_v && !type_list_contains_v>), + type_list_contains_v || (std::is_const_v && !type_list_contains_v>), type_list>, - type_list<> - >; + type_list<>>; using rw = std::conditional_t< - type_list_contains_v> || (!std::is_const_v && !type_list_contains_v>), + type_list_contains_v> || (!std::is_const_v && !type_list_contains_v), type_list, - type_list<> - >; + type_list<>>; }; -template -struct unpack_type, type_list> { +template +struct unpack_type, type_list> { using ro = type_list<>; using rw = type_list<>; }; -template -struct unpack_type, type_list> - : unpack_type, type_list> -{}; +template +struct unpack_type, type_list> + : unpack_type, type_list> {}; -template -struct unpack_type, Component...>, type_list> { - using ro = type_list_cat_t, typename unpack_type>::ro...>; - using rw = type_list_cat_t>::rw...>; +template +struct unpack_type, exclude_t>, type_list> { + using ro = type_list_cat_t, typename unpack_type, type_list>::ro...>; + using rw = type_list_cat_t, type_list>::rw...>; }; -template -struct unpack_type, Component...>, type_list> - : unpack_type, Component...>, type_list> -{}; - +template +struct unpack_type, exclude_t>, type_list> + : unpack_type, exclude_t>, type_list> {}; template -struct resource; +struct resource_traits; template -struct resource, type_list> { +struct resource_traits, type_list> { using args = type_list...>; using ro = type_list_cat_t>::ro..., typename unpack_type>::ro...>; using rw = type_list_cat_t>::rw..., typename unpack_type>::rw...>; }; - template -resource...>, type_list> free_function_to_resource(Ret(*)(Args...)); +resource_traits...>, type_list> free_function_to_resource_traits(Ret (*)(Args...)); template -resource...>, type_list> constrained_function_to_resource(Ret(*)(Type &, Args...)); +resource_traits...>, type_list> constrained_function_to_resource_traits(Ret (*)(Type &, Args...)); template -resource...>, type_list> constrained_function_to_resource(Ret(Class:: *)(Args...)); +resource_traits...>, type_list> constrained_function_to_resource_traits(Ret (Class::*)(Args...)); template -resource...>, type_list> constrained_function_to_resource(Ret(Class:: *)(Args...) const); - -template -resource, type_list> to_resource(); - - -} +resource_traits...>, type_list> constrained_function_to_resource_traits(Ret (Class::*)(Args...) const); +} // namespace internal /** * Internal details not to be documented. * @endcond */ - /** * @brief Utility class for creating a static task graph. * @@ -119,13 +102,13 @@ resource, type_list> to_resource(); * goal of the tool. Instead, they are returned to the user in the form of a * graph that allows for safe execution. * - * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Registry Basic registry type. */ -template +template class basic_organizer final { - using callback_type = void(const void *, entt::basic_registry &); - using prepare_type = void(entt::basic_registry &); - using dependency_type = std::size_t(const bool, type_info *, const std::size_t); + using callback_type = void(const void *, Registry &); + using prepare_type = void(Registry &); + using dependency_type = std::size_t(const bool, const type_info **, const std::size_t); struct vertex_data final { std::size_t ro_count{}; @@ -135,117 +118,54 @@ class basic_organizer final { callback_type *callback{}; dependency_type *dependency; prepare_type *prepare{}; - type_info info{}; + const type_info *info{}; }; template - [[nodiscard]] static decltype(auto) extract(basic_registry ®) { - if constexpr(std::is_same_v>) { + [[nodiscard]] static decltype(auto) extract(Registry ®) { + if constexpr(std::is_same_v) { return reg; } else if constexpr(internal::is_view_v) { return as_view{reg}; } else { - return reg.template ctx_or_set>(); + return reg.ctx().template emplace>(); } } template - [[nodiscard]] static auto to_args(basic_registry ®, type_list) { + [[nodiscard]] static auto to_args(Registry ®, type_list) { return std::tuple(reg))...>(extract(reg)...); } template - static std::size_t fill_dependencies(type_list, [[maybe_unused]] type_info *buffer, [[maybe_unused]] const std::size_t count) { + static std::size_t fill_dependencies(type_list, [[maybe_unused]] const type_info **buffer, [[maybe_unused]] const std::size_t count) { if constexpr(sizeof...(Type) == 0u) { return {}; } else { - type_info info[sizeof...(Type)]{type_id()...}; - const auto length = (std::min)(count, sizeof...(Type)); - std::copy_n(info, length, buffer); + const type_info *info[sizeof...(Type)]{&type_id()...}; + const auto length = count < sizeof...(Type) ? count : sizeof...(Type); + + for(std::size_t pos{}; pos < length; ++pos) { + buffer[pos] = info[pos]; + } + return length; } } template void track_dependencies(std::size_t index, const bool requires_registry, type_list, type_list) { - dependencies[type_hash>::value()].emplace_back(index, requires_registry || (sizeof...(RO) + sizeof...(RW) == 0u)); - (dependencies[type_hash::value()].emplace_back(index, false), ...); - (dependencies[type_hash::value()].emplace_back(index, true), ...); - } - - [[nodiscard]] std::vector adjacency_matrix() { - const auto length = vertices.size(); - std::vector edges(length * length, false); - - // creates the ajacency matrix - for(const auto &deps: dependencies) { - const auto last = deps.second.cend(); - auto it = deps.second.cbegin(); - - while(it != last) { - if(it->second) { - // rw item - if(auto curr = it++; it != last) { - if(it->second) { - edges[curr->first * length + it->first] = true; - } else { - if(const auto next = std::find_if(it, last, [](const auto &elem) { return elem.second; }); next != last) { - for(; it != next; ++it) { - edges[curr->first * length + it->first] = true; - edges[it->first * length + next->first] = true; - } - } else { - for(; it != next; ++it) { - edges[curr->first * length + it->first] = true; - } - } - } - } - } else { - // ro item, possibly only on first iteration - if(const auto next = std::find_if(it, last, [](const auto &elem) { return elem.second; }); next != last) { - for(; it != next; ++it) { - edges[it->first * length + next->first] = true; - } - } else { - it = last; - } - } - } - } - - // computes the transitive closure - for(std::size_t vk{}; vk < length; ++vk) { - for(std::size_t vi{}; vi < length; ++vi) { - for(std::size_t vj{}; vj < length; ++vj) { - edges[vi * length + vj] = edges[vi * length + vj] || (edges[vi * length + vk] && edges[vk * length + vj]); - } - } - } - - // applies the transitive reduction - for(std::size_t vert{}; vert < length; ++vert) { - edges[vert * length + vert] = false; - } - - for(std::size_t vj{}; vj < length; ++vj) { - for(std::size_t vi{}; vi < length; ++vi) { - if(edges[vi * length + vj]) { - for(std::size_t vk{}; vk < length; ++vk) { - if(edges[vj * length + vk]) { - edges[vi * length + vk] = false; - } - } - } - } - } - - return edges; + builder.bind(static_cast(index)); + builder.set(type_hash::value(), requires_registry || (sizeof...(RO) + sizeof...(RW) == 0u)); + (builder.ro(type_hash::value()), ...); + (builder.rw(type_hash::value()), ...); } public: + /*! Basic registry type. */ + using registry_type = Registry; /*! @brief Underlying entity identifier. */ - using entity_type = Entity; + using entity_type = typename registry_type::entity_type; /*! @brief Unsigned integer type. */ using size_type = std::size_t; /*! @brief Raw task function type. */ @@ -262,8 +182,7 @@ public: vertex(const bool vtype, vertex_data data, std::vector edges) : is_top_level{vtype}, node{std::move(data)}, - reachable{std::move(edges)} - {} + reachable{std::move(edges)} {} /** * @brief Fills a buffer with the type info objects for the writable @@ -272,7 +191,7 @@ public: * @param length The length of the user-supplied buffer. * @return The number of type info objects written to the buffer. */ - size_type ro_dependency(type_info *buffer, const std::size_t length) const ENTT_NOEXCEPT { + size_type ro_dependency(const type_info **buffer, const std::size_t length) const noexcept { return node.dependency(false, buffer, length); } @@ -283,7 +202,7 @@ public: * @param length The length of the user-supplied buffer. * @return The number of type info objects written to the buffer. */ - size_type rw_dependency(type_info *buffer, const std::size_t length) const ENTT_NOEXCEPT { + size_type rw_dependency(const type_info **buffer, const std::size_t length) const noexcept { return node.dependency(true, buffer, length); } @@ -291,7 +210,7 @@ public: * @brief Returns the number of read-only resources of a vertex. * @return The number of read-only resources of the vertex. */ - size_type ro_count() const ENTT_NOEXCEPT { + size_type ro_count() const noexcept { return node.ro_count; } @@ -299,7 +218,7 @@ public: * @brief Returns the number of writable resources of a vertex. * @return The number of writable resources of the vertex. */ - size_type rw_count() const ENTT_NOEXCEPT { + size_type rw_count() const noexcept { return node.rw_count; } @@ -307,7 +226,7 @@ public: * @brief Checks if a vertex is also a top-level one. * @return True if the vertex is a top-level one, false otherwise. */ - bool top_level() const ENTT_NOEXCEPT { + bool top_level() const noexcept { return is_top_level; } @@ -315,15 +234,15 @@ public: * @brief Returns a type info object associated with a vertex. * @return A properly initialized type info object. */ - type_info info() const ENTT_NOEXCEPT { - return node.info; + const type_info &info() const noexcept { + return *node.info; } /** * @brief Returns a user defined name associated with a vertex, if any. * @return The user defined name associated with the vertex, if any. */ - const char * name() const ENTT_NOEXCEPT { + const char *name() const noexcept { return node.name; } @@ -331,7 +250,7 @@ public: * @brief Returns the function associated with a vertex. * @return The function associated with the vertex. */ - function_type * callback() const ENTT_NOEXCEPT { + function_type *callback() const noexcept { return node.callback; } @@ -339,7 +258,7 @@ public: * @brief Returns the payload associated with a vertex, if any. * @return The payload associated with the vertex, if any. */ - const void * data() const ENTT_NOEXCEPT { + const void *data() const noexcept { return node.payload; } @@ -347,7 +266,7 @@ public: * @brief Returns the list of nodes reachable from a given vertex. * @return The list of nodes reachable from the vertex. */ - const std::vector & children() const ENTT_NOEXCEPT { + const std::vector &children() const noexcept { return reachable; } @@ -356,7 +275,7 @@ public: * are properly instantiated before using them. * @param reg A valid registry. */ - void prepare(basic_registry ®) const { + void prepare(registry_type ®) const { node.prepare ? node.prepare(reg) : void(); } @@ -374,25 +293,25 @@ public: */ template void emplace(const char *name = nullptr) { - using resource_type = decltype(internal::free_function_to_resource(Candidate)); - constexpr auto requires_registry = type_list_contains_v>; + using resource_type = decltype(internal::free_function_to_resource_traits(Candidate)); + constexpr auto requires_registry = type_list_contains_v; - callback_type *callback = +[](const void *, basic_registry ®) { + callback_type *callback = +[](const void *, registry_type ®) { std::apply(Candidate, to_args(reg, typename resource_type::args{})); }; - track_dependencies(vertices.size(), requires_registry, typename resource_type::ro{}, typename resource_type::rw{}); - - vertices.push_back({ + vertex_data vdata{ resource_type::ro::size, resource_type::rw::size, name, nullptr, callback, - +[](const bool rw, type_info *buffer, const std::size_t length) { return rw ? fill_dependencies(typename resource_type::rw{}, buffer, length) : fill_dependencies(typename resource_type::ro{}, buffer, length); }, - +[](basic_registry ®) { void(to_args(reg, typename resource_type::args{})); }, - type_id>() - }); + +[](const bool rw, const type_info **buffer, const std::size_t length) { return rw ? fill_dependencies(typename resource_type::rw{}, buffer, length) : fill_dependencies(typename resource_type::ro{}, buffer, length); }, + +[](registry_type ®) { void(to_args(reg, typename resource_type::args{})); }, + &type_id>()}; + + track_dependencies(vertices.size(), requires_registry, typename resource_type::ro{}, typename resource_type::rw{}); + vertices.push_back(std::move(vdata)); } /** @@ -406,30 +325,26 @@ public: */ template void emplace(Type &value_or_instance, const char *name = nullptr) { - using resource_type = decltype(internal::constrained_function_to_resource(Candidate)); - constexpr auto requires_registry = type_list_contains_v>; + using resource_type = decltype(internal::constrained_function_to_resource_traits(Candidate)); + constexpr auto requires_registry = type_list_contains_v; - callback_type *callback = +[](const void *payload, basic_registry ®) { + callback_type *callback = +[](const void *payload, registry_type ®) { Type *curr = static_cast(const_cast *>(payload)); std::apply(Candidate, std::tuple_cat(std::forward_as_tuple(*curr), to_args(reg, typename resource_type::args{}))); }; - track_dependencies(vertices.size(), requires_registry, typename resource_type::ro{}, typename resource_type::rw{}); - - vertices.push_back({ + vertex_data vdata{ resource_type::ro::size, resource_type::rw::size, name, &value_or_instance, callback, - +[](const bool rw, type_info *buffer, const std::size_t length) { - return rw ? fill_dependencies(typename resource_type::rw{}, buffer, length) : fill_dependencies(typename resource_type::ro{}, buffer, length); - }, - +[](basic_registry ®) { - void(to_args(reg, typename resource_type::args{})); - }, - type_id>() - }); + +[](const bool rw, const type_info **buffer, const std::size_t length) { return rw ? fill_dependencies(typename resource_type::rw{}, buffer, length) : fill_dependencies(typename resource_type::ro{}, buffer, length); }, + +[](registry_type ®) { void(to_args(reg, typename resource_type::args{})); }, + &type_id>()}; + + track_dependencies(vertices.size(), requires_registry, typename resource_type::ro{}, typename resource_type::rw{}); + vertices.push_back(std::move(vdata)); } /** @@ -442,21 +357,20 @@ public: */ template void emplace(function_type *func, const void *payload = nullptr, const char *name = nullptr) { - using resource_type = internal::resource, type_list>; + using resource_type = internal::resource_traits, type_list>; track_dependencies(vertices.size(), true, typename resource_type::ro{}, typename resource_type::rw{}); - vertices.push_back({ + vertex_data vdata{ resource_type::ro::size, resource_type::rw::size, name, payload, func, - +[](const bool rw, type_info *buffer, const std::size_t length) { - return rw ? fill_dependencies(typename resource_type::rw{}, buffer, length) : fill_dependencies(typename resource_type::ro{}, buffer, length); - }, + +[](const bool rw, const type_info **buffer, const std::size_t length) { return rw ? fill_dependencies(typename resource_type::rw{}, buffer, length) : fill_dependencies(typename resource_type::ro{}, buffer, length); }, nullptr, - type_info{} - }); + &type_id()}; + + vertices.push_back(std::move(vdata)); } /** @@ -464,28 +378,19 @@ public: * @return The adjacency list of the task graph. */ std::vector graph() { - const auto edges = adjacency_matrix(); - - // creates the adjacency list std::vector adjacency_list{}; adjacency_list.reserve(vertices.size()); + auto adjacency_matrix = builder.graph(); - for(std::size_t col{}, length = vertices.size(); col < length; ++col) { + for(auto curr: adjacency_matrix.vertices()) { + const auto iterable = adjacency_matrix.in_edges(curr); std::vector reachable{}; - const auto row = col * length; - bool is_top_level = true; - for(std::size_t next{}; next < length; ++next) { - if(edges[row + next]) { - reachable.push_back(next); - } + for(auto &&edge: adjacency_matrix.out_edges(curr)) { + reachable.push_back(edge.second); } - for(std::size_t next{}; next < length && is_top_level; ++next) { - is_top_level = !edges[next * length + col]; - } - - adjacency_list.emplace_back(is_top_level, vertices[col], std::move(reachable)); + adjacency_list.emplace_back(iterable.cbegin() == iterable.cend(), vertices[curr], std::move(reachable)); } return adjacency_list; @@ -493,17 +398,15 @@ public: /*! @brief Erases all elements from a container. */ void clear() { - dependencies.clear(); + builder.clear(); vertices.clear(); } private: - std::unordered_map>> dependencies; std::vector vertices; + flow builder; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/entity/registry.hpp b/LiteLoader/third-party/include/entt/entity/registry.hpp new file mode 100644 index 0000000..4841640 --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/registry.hpp @@ -0,0 +1,1530 @@ +#ifndef ENTT_ENTITY_REGISTRY_HPP +#define ENTT_ENTITY_REGISTRY_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../container/dense_map.hpp" +#include "../core/algorithm.hpp" +#include "../core/any.hpp" +#include "../core/compressed_pair.hpp" +#include "../core/fwd.hpp" +#include "../core/iterator.hpp" +#include "../core/memory.hpp" +#include "../core/type_info.hpp" +#include "../core/type_traits.hpp" +#include "../core/utility.hpp" +#include "component.hpp" +#include "entity.hpp" +#include "fwd.hpp" +#include "group.hpp" +#include "sparse_set.hpp" +#include "storage.hpp" +#include "view.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class registry_storage_iterator final { + template + friend class registry_storage_iterator; + + using mapped_type = std::remove_reference_t()->second)>; + +public: + using value_type = std::pair &>; + using pointer = input_iterator_pointer; + using reference = value_type; + using difference_type = std::ptrdiff_t; + using iterator_category = std::input_iterator_tag; + + constexpr registry_storage_iterator() noexcept + : it{} {} + + constexpr registry_storage_iterator(It iter) noexcept + : it{iter} {} + + template && std::is_constructible_v>> + constexpr registry_storage_iterator(const registry_storage_iterator &other) noexcept + : registry_storage_iterator{other.it} {} + + constexpr registry_storage_iterator &operator++() noexcept { + return ++it, *this; + } + + constexpr registry_storage_iterator operator++(int) noexcept { + registry_storage_iterator orig = *this; + return ++(*this), orig; + } + + constexpr registry_storage_iterator &operator--() noexcept { + return --it, *this; + } + + constexpr registry_storage_iterator operator--(int) noexcept { + registry_storage_iterator orig = *this; + return operator--(), orig; + } + + constexpr registry_storage_iterator &operator+=(const difference_type value) noexcept { + it += value; + return *this; + } + + constexpr registry_storage_iterator operator+(const difference_type value) const noexcept { + registry_storage_iterator copy = *this; + return (copy += value); + } + + constexpr registry_storage_iterator &operator-=(const difference_type value) noexcept { + return (*this += -value); + } + + constexpr registry_storage_iterator operator-(const difference_type value) const noexcept { + return (*this + -value); + } + + [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { + return {it[value].first, *it[value].second}; + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return {it->first, *it->second}; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return operator*(); + } + + template + friend constexpr std::ptrdiff_t operator-(const registry_storage_iterator &, const registry_storage_iterator &) noexcept; + + template + friend constexpr bool operator==(const registry_storage_iterator &, const registry_storage_iterator &) noexcept; + + template + friend constexpr bool operator<(const registry_storage_iterator &, const registry_storage_iterator &) noexcept; + +private: + It it; +}; + +template +[[nodiscard]] constexpr std::ptrdiff_t operator-(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { + return lhs.it - rhs.it; +} + +template +[[nodiscard]] constexpr bool operator==(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +[[nodiscard]] constexpr bool operator<(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { + return lhs.it < rhs.it; +} + +template +[[nodiscard]] constexpr bool operator>(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { + return rhs < lhs; +} + +template +[[nodiscard]] constexpr bool operator<=(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { + return !(lhs > rhs); +} + +template +[[nodiscard]] constexpr bool operator>=(const registry_storage_iterator &lhs, const registry_storage_iterator &rhs) noexcept { + return !(lhs < rhs); +} + +class registry_context { + using key_type = id_type; + using mapped_type = basic_any<0u>; + using container_type = dense_map; + +public: + template + [[deprecated("Use ::emplace_as instead")]] Type &emplace_hint(const id_type id, Args &&...args) { + return emplace_as(id, std::forward(args)...); + } + + template + Type &emplace_as(const id_type id, Args &&...args) { + return any_cast(ctx.try_emplace(id, std::in_place_type, std::forward(args)...).first->second); + } + + template + Type &emplace(Args &&...args) { + return emplace_as(type_id().hash(), std::forward(args)...); + } + + template + Type &insert_or_assign(const id_type id, Type &&value) { + return any_cast> &>(ctx.insert_or_assign(id, std::forward(value)).first->second); + } + + template + Type &insert_or_assign(Type &&value) { + return insert_or_assign(type_id().hash(), std::forward(value)); + } + + template + bool erase(const id_type id = type_id().hash()) { + const auto it = ctx.find(id); + return it != ctx.end() && it->second.type() == type_id() ? (ctx.erase(it), true) : false; + } + + template + [[deprecated("Use ::get instead")]] [[nodiscard]] const Type &at(const id_type id = type_id().hash()) const { + return get(id); + } + + template + [[deprecated("Use ::get instead")]] [[nodiscard]] Type &at(const id_type id = type_id().hash()) { + return get(id); + } + + template + [[nodiscard]] const Type &get(const id_type id = type_id().hash()) const { + return any_cast(ctx.at(id)); + } + + template + [[nodiscard]] Type &get(const id_type id = type_id().hash()) { + return any_cast(ctx.at(id)); + } + + template + [[nodiscard]] const Type *find(const id_type id = type_id().hash()) const { + const auto it = ctx.find(id); + return it != ctx.cend() ? any_cast(&it->second) : nullptr; + } + + template + [[nodiscard]] Type *find(const id_type id = type_id().hash()) { + const auto it = ctx.find(id); + return it != ctx.end() ? any_cast(&it->second) : nullptr; + } + + template + [[nodiscard]] bool contains(const id_type id = type_id().hash()) const { + const auto it = ctx.find(id); + return it != ctx.cend() && it->second.type() == type_id(); + } + +private: + container_type ctx; +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Fast and reliable entity-component system. + * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class basic_registry { + using alloc_traits = typename std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using basic_common_type = basic_sparse_set; + using entity_traits = entt_traits; + + template + using storage_for_type = typename storage_for>>::type; + + template + struct group_handler; + + template + struct group_handler, get_t, Owned...> { + // nasty workaround for an issue with the toolset v141 that doesn't accept a fold expression here + static_assert(!std::disjunction_v::in_place_delete>...>, "Groups do not support in-place delete"); + using value_type = std::conditional_t; + value_type current{}; + + template + group_handler(Args &&...args) + : current{std::forward(args)...} {} + + template + void maybe_valid_if(basic_registry &owner, const Entity entt) { + [[maybe_unused]] const auto cpools = std::forward_as_tuple(owner.assure()...); + + const auto is_valid = ((std::is_same_v || std::get &>(cpools).contains(entt)) && ...) + && ((std::is_same_v || owner.assure().contains(entt)) && ...) + && ((std::is_same_v || !owner.assure().contains(entt)) && ...); + + if constexpr(sizeof...(Owned) == 0) { + if(is_valid && !current.contains(entt)) { + current.emplace(entt); + } + } else { + if(is_valid && !(std::get<0>(cpools).index(entt) < current)) { + const auto pos = current++; + (std::get &>(cpools).swap_elements(std::get &>(cpools).data()[pos], entt), ...); + } + } + } + + void discard_if([[maybe_unused]] basic_registry &owner, const Entity entt) { + if constexpr(sizeof...(Owned) == 0) { + current.remove(entt); + } else { + if(const auto cpools = std::forward_as_tuple(owner.assure()...); std::get<0>(cpools).contains(entt) && (std::get<0>(cpools).index(entt) < current)) { + const auto pos = --current; + (std::get &>(cpools).swap_elements(std::get &>(cpools).data()[pos], entt), ...); + } + } + } + }; + + struct group_data { + std::size_t size; + std::shared_ptr group; + bool (*owned)(const id_type) noexcept; + bool (*get)(const id_type) noexcept; + bool (*exclude)(const id_type) noexcept; + }; + + template + [[nodiscard]] auto &assure(const id_type id = type_hash::value()) { + static_assert(std::is_same_v>, "Non-decayed types not allowed"); + auto &cpool = pools[id]; + + if(!cpool) { + cpool = std::allocate_shared>>(get_allocator(), get_allocator()); + cpool->bind(forward_as_any(*this)); + } + + ENTT_ASSERT(cpool->type() == type_id(), "Unexpected type"); + return static_cast &>(*cpool); + } + + template + [[nodiscard]] const auto &assure(const id_type id = type_hash::value()) const { + static_assert(std::is_same_v>, "Non-decayed types not allowed"); + + if(const auto it = pools.find(id); it != pools.cend()) { + ENTT_ASSERT(it->second->type() == type_id(), "Unexpected type"); + return static_cast &>(*it->second); + } + + static storage_for_type placeholder{}; + return placeholder; + } + + auto generate_identifier(const std::size_t pos) noexcept { + ENTT_ASSERT(pos < entity_traits::to_entity(null), "No entities available"); + return entity_traits::combine(static_cast(pos), {}); + } + + auto recycle_identifier() noexcept { + ENTT_ASSERT(free_list != null, "No entities available"); + const auto curr = entity_traits::to_entity(free_list); + free_list = entity_traits::combine(entity_traits::to_integral(epool[curr]), tombstone); + return (epool[curr] = entity_traits::combine(curr, entity_traits::to_integral(epool[curr]))); + } + + auto release_entity(const Entity entt, const typename entity_traits::version_type version) { + const typename entity_traits::version_type vers = version + (version == entity_traits::to_version(tombstone)); + epool[entity_traits::to_entity(entt)] = entity_traits::construct(entity_traits::to_integral(free_list), vers); + free_list = entity_traits::combine(entity_traits::to_integral(entt), tombstone); + return vers; + } + + void rebind() { + for(auto &&curr: pools) { + curr.second->bind(forward_as_any(*this)); + } + } + +public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Underlying entity identifier. */ + using entity_type = Entity; + /*! @brief Underlying version type. */ + using version_type = typename entity_traits::version_type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Common type among all storage types. */ + using base_type = basic_common_type; + /*! @brief Context type. */ + using context = internal::registry_context; + + /*! @brief Default constructor. */ + basic_registry() + : basic_registry{allocator_type{}} {} + + /** + * @brief Constructs an empty registry with a given allocator. + * @param allocator The allocator to use. + */ + explicit basic_registry(const allocator_type &allocator) + : basic_registry{0u, allocator} {} + + /** + * @brief Allocates enough memory upon construction to store `count` pools. + * @param count The number of pools to allocate memory for. + * @param allocator The allocator to use. + */ + basic_registry(const size_type count, const allocator_type &allocator = allocator_type{}) + : vars{}, + free_list{tombstone}, + epool{allocator}, + pools{allocator}, + groups{allocator} { + pools.reserve(count); + } + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + basic_registry(basic_registry &&other) noexcept + : vars{std::move(other.vars)}, + free_list{std::move(other.free_list)}, + epool{std::move(other.epool)}, + pools{std::move(other.pools)}, + groups{std::move(other.groups)} { + rebind(); + } + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This registry. + */ + basic_registry &operator=(basic_registry &&other) noexcept { + vars = std::move(other.vars); + free_list = std::move(other.free_list); + epool = std::move(other.epool); + pools = std::move(other.pools); + groups = std::move(other.groups); + + rebind(); + + return *this; + } + + /** + * @brief Exchanges the contents with those of a given registry. + * @param other Registry to exchange the content with. + */ + void swap(basic_registry &other) { + using std::swap; + swap(vars, other.vars); + swap(free_list, other.free_list); + swap(epool, other.epool); + swap(pools, other.pools); + swap(groups, other.groups); + + rebind(); + other.rebind(); + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return epool.get_allocator(); + } + + /** + * @brief Returns an iterable object to use to _visit_ a registry. + * + * The iterable object returns a pair that contains the name and a reference + * to the current storage. + * + * @return An iterable object to use to _visit_ the registry. + */ + [[nodiscard]] auto storage() noexcept { + return iterable_adaptor{internal::registry_storage_iterator{pools.begin()}, internal::registry_storage_iterator{pools.end()}}; + } + + /*! @copydoc storage */ + [[nodiscard]] auto storage() const noexcept { + return iterable_adaptor{internal::registry_storage_iterator{pools.cbegin()}, internal::registry_storage_iterator{pools.cend()}}; + } + + /** + * @brief Finds the storage associated with a given name, if any. + * @param id Name used to map the storage within the registry. + * @return A pointer to the storage if it exists, a null pointer otherwise. + */ + [[nodiscard]] base_type *storage(const id_type id) { + return const_cast(std::as_const(*this).storage(id)); + } + + /** + * @brief Finds the storage associated with a given name, if any. + * @param id Name used to map the storage within the registry. + * @return A pointer to the storage if it exists, a null pointer otherwise. + */ + [[nodiscard]] const base_type *storage(const id_type id) const { + const auto it = pools.find(id); + return it == pools.cend() ? nullptr : it->second.get(); + } + + /** + * @brief Returns the storage for a given component type. + * @tparam Type Type of component of which to return the storage. + * @param id Optional name used to map the storage within the registry. + * @return The storage for the given component type. + */ + template + decltype(auto) storage(const id_type id = type_hash::value()) { + return assure(id); + } + + /** + * @brief Returns the storage for a given component type. + * + * @warning + * If a storage for the given component doesn't exist yet, a temporary + * placeholder is returned instead. + * + * @tparam Type Type of component of which to return the storage. + * @param id Optional name used to map the storage within the registry. + * @return The storage for the given component type. + */ + template + decltype(auto) storage(const id_type id = type_hash::value()) const { + return assure(id); + } + + /** + * @brief Returns the number of entities created so far. + * @return Number of entities created so far. + */ + [[nodiscard]] size_type size() const noexcept { + return epool.size(); + } + + /** + * @brief Returns the number of entities still in use. + * @return Number of entities still in use. + */ + [[nodiscard]] size_type alive() const { + auto sz = epool.size(); + + for(auto curr = free_list; curr != null; --sz) { + curr = epool[entity_traits::to_entity(curr)]; + } + + return sz; + } + + /** + * @brief Increases the capacity (number of entities) of the registry. + * @param cap Desired capacity. + */ + void reserve(const size_type cap) { + epool.reserve(cap); + } + + /** + * @brief Returns the number of entities that a registry has currently + * allocated space for. + * @return Capacity of the registry. + */ + [[nodiscard]] size_type capacity() const noexcept { + return epool.capacity(); + } + + /** + * @brief Checks whether the registry is empty (no entities still in use). + * @return True if the registry is empty, false otherwise. + */ + [[nodiscard]] bool empty() const { + return !alive(); + } + + /** + * @brief Direct access to the list of entities of a registry. + * + * The returned pointer is such that range `[data(), data() + size())` is + * always a valid range, even if the registry is empty. + * + * @warning + * This list contains both valid and destroyed entities and isn't suitable + * for direct use. + * + * @return A pointer to the array of entities. + */ + [[nodiscard]] const entity_type *data() const noexcept { + return epool.data(); + } + + /** + * @brief Returns the head of the list of released entities. + * + * This function is intended for use in conjunction with `assign`.
+ * The returned entity has an invalid identifier in all cases. + * + * @return The head of the list of released entities. + */ + [[nodiscard]] entity_type released() const noexcept { + return free_list; + } + + /** + * @brief Checks if an identifier refers to a valid entity. + * @param entt An identifier, either valid or not. + * @return True if the identifier is valid, false otherwise. + */ + [[nodiscard]] bool valid(const entity_type entt) const { + const auto pos = size_type(entity_traits::to_entity(entt)); + return (pos < epool.size() && epool[pos] == entt); + } + + /** + * @brief Returns the actual version for an identifier. + * @param entt A valid identifier. + * @return The version for the given identifier if valid, the tombstone + * version otherwise. + */ + [[nodiscard]] version_type current(const entity_type entt) const { + const auto pos = size_type(entity_traits::to_entity(entt)); + return entity_traits::to_version(pos < epool.size() ? epool[pos] : tombstone); + } + + /** + * @brief Creates a new entity or recycles a destroyed one. + * @return A valid identifier. + */ + [[nodiscard]] entity_type create() { + return (free_list == null) ? epool.emplace_back(generate_identifier(epool.size())) : recycle_identifier(); + } + + /** + * @copybrief create + * + * If the requested entity isn't in use, the suggested identifier is used. + * Otherwise, a new identifier is generated. + * + * @param hint Required identifier. + * @return A valid identifier. + */ + [[nodiscard]] entity_type create(const entity_type hint) { + const auto length = epool.size(); + + if(hint == null || hint == tombstone) { + return create(); + } else if(const auto req = entity_traits::to_entity(hint); !(req < length)) { + epool.resize(size_type(req) + 1u, null); + + for(auto pos = length; pos < req; ++pos) { + release_entity(generate_identifier(pos), {}); + } + + return (epool[req] = hint); + } else if(const auto curr = entity_traits::to_entity(epool[req]); req == curr) { + return create(); + } else { + auto *it = &free_list; + for(; entity_traits::to_entity(*it) != req; it = &epool[entity_traits::to_entity(*it)]) {} + *it = entity_traits::combine(curr, entity_traits::to_integral(*it)); + return (epool[req] = hint); + } + } + + /** + * @brief Assigns each element in a range an identifier. + * + * @sa create + * + * @tparam It Type of forward iterator. + * @param first An iterator to the first element of the range to generate. + * @param last An iterator past the last element of the range to generate. + */ + template + void create(It first, It last) { + for(; free_list != null && first != last; ++first) { + *first = recycle_identifier(); + } + + const auto length = epool.size(); + epool.resize(length + std::distance(first, last), null); + + for(auto pos = length; first != last; ++first, ++pos) { + *first = epool[pos] = generate_identifier(pos); + } + } + + /** + * @brief Assigns identifiers to an empty registry. + * + * This function is intended for use in conjunction with `data`, `size` and + * `released`.
+ * Don't try to inject ranges of randomly generated entities nor the _wrong_ + * head for the list of destroyed entities. There is no guarantee that a + * registry will continue to work properly in this case. + * + * @warning + * There must be no entities still alive for this to work properly. + * + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @param destroyed The head of the list of destroyed entities. + */ + template + void assign(It first, It last, const entity_type destroyed) { + ENTT_ASSERT(!alive(), "Entities still alive"); + epool.assign(first, last); + free_list = destroyed; + } + + /** + * @brief Releases an identifier. + * + * The version is updated and the identifier can be recycled at any time. + * + * @warning + * Attempting to use an invalid entity results in undefined behavior. + * + * @param entt A valid identifier. + * @return The version of the recycled entity. + */ + version_type release(const entity_type entt) { + return release(entt, static_cast(entity_traits::to_version(entt) + 1u)); + } + + /** + * @brief Releases an identifier. + * + * The suggested version or the valid version closest to the suggested one + * is used instead of the implicitly generated version. + * + * @sa release + * + * @param entt A valid identifier. + * @param version A desired version upon destruction. + * @return The version actually assigned to the entity. + */ + version_type release(const entity_type entt, const version_type version) { + ENTT_ASSERT(valid(entt), "Invalid identifier"); + ENTT_ASSERT(std::all_of(pools.cbegin(), pools.cend(), [entt](auto &&curr) { return (curr.second->current(entt) == entity_traits::to_version(tombstone)); }), "Non-orphan entity"); + return release_entity(entt, version); + } + + /** + * @brief Releases all identifiers in a range. + * + * @sa release + * + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + */ + template + void release(It first, It last) { + for(; first != last; ++first) { + release(*first); + } + } + + /** + * @brief Destroys an entity and releases its identifier. + * + * @sa release + * + * @warning + * Adding or removing components to an entity that is being destroyed can + * result in undefined behavior. Attempting to use an invalid entity results + * in undefined behavior. + * + * @param entt A valid identifier. + * @return The version of the recycled entity. + */ + version_type destroy(const entity_type entt) { + return destroy(entt, static_cast(entity_traits::to_version(entt) + 1u)); + } + + /** + * @brief Destroys an entity and releases its identifier. + * + * The suggested version or the valid version closest to the suggested one + * is used instead of the implicitly generated version. + * + * @sa destroy + * + * @param entt A valid identifier. + * @param version A desired version upon destruction. + * @return The version actually assigned to the entity. + */ + version_type destroy(const entity_type entt, const version_type version) { + for(size_type pos = pools.size(); pos; --pos) { + pools.begin()[pos - 1u].second->remove(entt); + } + + return release(entt, version); + } + + /** + * @brief Destroys all entities in a range and releases their identifiers. + * + * @sa destroy + * + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + */ + template + void destroy(It first, It last) { + for(; first != last; ++first) { + destroy(*first); + } + } + + /** + * @brief Assigns the given component to an entity. + * + * The component must have a proper constructor or be of aggregate type. + * + * @warning + * Attempting to assign a component to an entity that already owns it + * results in undefined behavior. + * + * @tparam Type Type of component to create. + * @tparam Args Types of arguments to use to construct the component. + * @param entt A valid identifier. + * @param args Parameters to use to initialize the component. + * @return A reference to the newly created component. + */ + template + decltype(auto) emplace(const entity_type entt, Args &&...args) { + return assure().emplace(entt, std::forward(args)...); + } + + /** + * @brief Assigns each entity in a range the given component. + * + * @sa emplace + * + * @tparam Type Type of component to create. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @param value An instance of the component to assign. + */ + template + void insert(It first, It last, const Type &value = {}) { + assure().insert(first, last, value); + } + + /** + * @brief Assigns each entity in a range the given components. + * + * @sa emplace + * + * @tparam Type Type of component to create. + * @tparam EIt Type of input iterator. + * @tparam CIt Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @param from An iterator to the first element of the range of components. + */ + template::value_type, Type>>> + void insert(EIt first, EIt last, CIt from) { + assure().insert(first, last, from); + } + + /** + * @brief Assigns or replaces the given component for an entity. + * + * @sa emplace + * @sa replace + * + * @tparam Type Type of component to assign or replace. + * @tparam Args Types of arguments to use to construct the component. + * @param entt A valid identifier. + * @param args Parameters to use to initialize the component. + * @return A reference to the newly created component. + */ + template + decltype(auto) emplace_or_replace(const entity_type entt, Args &&...args) { + if(auto &cpool = assure(); cpool.contains(entt)) { + return cpool.patch(entt, [&args...](auto &...curr) { ((curr = Type{std::forward(args)...}), ...); }); + } else { + return cpool.emplace(entt, std::forward(args)...); + } + } + + /** + * @brief Patches the given component for an entity. + * + * The signature of the function should be equivalent to the following: + * + * @code{.cpp} + * void(Type &); + * @endcode + * + * @note + * Empty types aren't explicitly instantiated and therefore they are never + * returned. However, this function can be used to trigger an update signal + * for them. + * + * @warning + * Attempting to to patch a component of an entity that doesn't own it + * results in undefined behavior. + * + * @tparam Type Type of component to patch. + * @tparam Func Types of the function objects to invoke. + * @param entt A valid identifier. + * @param func Valid function objects. + * @return A reference to the patched component. + */ + template + decltype(auto) patch(const entity_type entt, Func &&...func) { + return assure().patch(entt, std::forward(func)...); + } + + /** + * @brief Replaces the given component for an entity. + * + * The component must have a proper constructor or be of aggregate type. + * + * @warning + * Attempting to replace a component of an entity that doesn't own it + * results in undefined behavior. + * + * @tparam Type Type of component to replace. + * @tparam Args Types of arguments to use to construct the component. + * @param entt A valid identifier. + * @param args Parameters to use to initialize the component. + * @return A reference to the component being replaced. + */ + template + decltype(auto) replace(const entity_type entt, Args &&...args) { + return patch(entt, [&args...](auto &...curr) { ((curr = Type{std::forward(args)...}), ...); }); + } + + /** + * @brief Removes the given components from an entity. + * + * @tparam Type Type of component to remove. + * @tparam Other Other types of components to remove. + * @param entt A valid identifier. + * @return The number of components actually removed. + */ + template + size_type remove(const entity_type entt) { + return (assure().remove(entt) + ... + assure().remove(entt)); + } + + /** + * @brief Removes the given components from all the entities in a range. + * + * @sa remove + * + * @tparam Type Type of component to remove. + * @tparam Other Other types of components to remove. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @return The number of components actually removed. + */ + template + size_type remove(It first, It last) { + if constexpr(sizeof...(Other) == 0u) { + return assure().remove(std::move(first), std::move(last)); + } else { + size_type count{}; + + for(auto cpools = std::forward_as_tuple(assure(), assure()...); first != last; ++first) { + count += std::apply([entt = *first](auto &...curr) { return (curr.remove(entt) + ... + 0u); }, cpools); + } + + return count; + } + } + + /** + * @brief Erases the given components from an entity. + * + * @warning + * Attempting to erase a component from an entity that doesn't own it + * results in undefined behavior. + * + * @tparam Type Types of components to erase. + * @tparam Other Other types of components to erase. + * @param entt A valid identifier. + */ + template + void erase(const entity_type entt) { + (assure().erase(entt), (assure().erase(entt), ...)); + } + + /** + * @brief Erases the given components from all the entities in a range. + * + * @sa erase + * + * @tparam Type Types of components to erase. + * @tparam Other Other types of components to erase. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + */ + template + void erase(It first, It last) { + if constexpr(sizeof...(Other) == 0u) { + assure().erase(std::move(first), std::move(last)); + } else { + for(auto cpools = std::forward_as_tuple(assure(), assure()...); first != last; ++first) { + std::apply([entt = *first](auto &...curr) { (curr.erase(entt), ...); }, cpools); + } + } + } + + /** + * @brief Removes all tombstones from a registry or only the pools for the + * given components. + * @tparam Type Types of components for which to clear all tombstones. + */ + template + void compact() { + if constexpr(sizeof...(Type) == 0) { + for(auto &&curr: pools) { + curr.second->compact(); + } + } else { + (assure().compact(), ...); + } + } + + /** + * @brief Check if an entity is part of all the given storage. + * @tparam Type Type of storage to check for. + * @param entt A valid identifier. + * @return True if the entity is part of all the storage, false otherwise. + */ + template + [[nodiscard]] bool all_of(const entity_type entt) const { + return (assure>().contains(entt) && ...); + } + + /** + * @brief Check if an entity is part of at least one given storage. + * @tparam Type Type of storage to check for. + * @param entt A valid identifier. + * @return True if the entity is part of at least one storage, false + * otherwise. + */ + template + [[nodiscard]] bool any_of(const entity_type entt) const { + return (assure>().contains(entt) || ...); + } + + /** + * @brief Returns references to the given components for an entity. + * + * @warning + * Attempting to get a component from an entity that doesn't own it results + * in undefined behavior. + * + * @tparam Type Types of components to get. + * @param entt A valid identifier. + * @return References to the components owned by the entity. + */ + template + [[nodiscard]] decltype(auto) get([[maybe_unused]] const entity_type entt) const { + if constexpr(sizeof...(Type) == 1u) { + return (assure>().get(entt), ...); + } else { + return std::forward_as_tuple(get(entt)...); + } + } + + /*! @copydoc get */ + template + [[nodiscard]] decltype(auto) get([[maybe_unused]] const entity_type entt) { + if constexpr(sizeof...(Type) == 1u) { + return (const_cast(std::as_const(*this).template get(entt)), ...); + } else { + return std::forward_as_tuple(get(entt)...); + } + } + + /** + * @brief Returns a reference to the given component for an entity. + * + * In case the entity doesn't own the component, the parameters provided are + * used to construct it. + * + * @sa get + * @sa emplace + * + * @tparam Type Type of component to get. + * @tparam Args Types of arguments to use to construct the component. + * @param entt A valid identifier. + * @param args Parameters to use to initialize the component. + * @return Reference to the component owned by the entity. + */ + template + [[nodiscard]] decltype(auto) get_or_emplace(const entity_type entt, Args &&...args) { + if(auto &cpool = assure(); cpool.contains(entt)) { + return cpool.get(entt); + } else { + return cpool.emplace(entt, std::forward(args)...); + } + } + + /** + * @brief Returns pointers to the given components for an entity. + * + * @note + * The registry retains ownership of the pointed-to components. + * + * @tparam Type Types of components to get. + * @param entt A valid identifier. + * @return Pointers to the components owned by the entity. + */ + template + [[nodiscard]] auto try_get([[maybe_unused]] const entity_type entt) const { + if constexpr(sizeof...(Type) == 1) { + const auto &cpool = assure...>(); + return cpool.contains(entt) ? std::addressof(cpool.get(entt)) : nullptr; + } else { + return std::make_tuple(try_get(entt)...); + } + } + + /*! @copydoc try_get */ + template + [[nodiscard]] auto try_get([[maybe_unused]] const entity_type entt) { + if constexpr(sizeof...(Type) == 1) { + return (const_cast(std::as_const(*this).template try_get(entt)), ...); + } else { + return std::make_tuple(try_get(entt)...); + } + } + + /** + * @brief Clears a whole registry or the pools for the given components. + * @tparam Type Types of components to remove from their entities. + */ + template + void clear() { + if constexpr(sizeof...(Type) == 0) { + for(auto &&curr: pools) { + curr.second->clear(); + } + + each([this](const auto entity) { this->release(entity); }); + } else { + (assure().clear(), ...); + } + } + + /** + * @brief Iterates all the entities that are still in use. + * + * The signature of the function should be equivalent to the following: + * + * @code{.cpp} + * void(const Entity); + * @endcode + * + * It's not defined whether entities created during iteration are returned. + * + * @tparam Func Type of the function object to invoke. + * @param func A valid function object. + */ + template + void each(Func func) const { + if(free_list == null) { + for(auto pos = epool.size(); pos; --pos) { + func(epool[pos - 1]); + } + } else { + for(auto pos = epool.size(); pos; --pos) { + if(const auto entity = epool[pos - 1]; entity_traits::to_entity(entity) == (pos - 1)) { + func(entity); + } + } + } + } + + /** + * @brief Checks if an entity has components assigned. + * @param entt A valid identifier. + * @return True if the entity has no components assigned, false otherwise. + */ + [[nodiscard]] bool orphan(const entity_type entt) const { + return std::none_of(pools.cbegin(), pools.cend(), [entt](auto &&curr) { return curr.second->contains(entt); }); + } + + /** + * @brief Returns a sink object for the given component. + * + * Use this function to receive notifications whenever a new instance of the + * given component is created and assigned to an entity.
+ * The function type for a listener is equivalent to: + * + * @code{.cpp} + * void(basic_registry &, Entity); + * @endcode + * + * Listeners are invoked **after** assigning the component to the entity. + * + * @sa sink + * + * @tparam Type Type of component of which to get the sink. + * @return A temporary sink object. + */ + template + [[nodiscard]] auto on_construct() { + return assure().on_construct(); + } + + /** + * @brief Returns a sink object for the given component. + * + * Use this function to receive notifications whenever an instance of the + * given component is explicitly updated.
+ * The function type for a listener is equivalent to: + * + * @code{.cpp} + * void(basic_registry &, Entity); + * @endcode + * + * Listeners are invoked **after** updating the component. + * + * @sa sink + * + * @tparam Type Type of component of which to get the sink. + * @return A temporary sink object. + */ + template + [[nodiscard]] auto on_update() { + return assure().on_update(); + } + + /** + * @brief Returns a sink object for the given component. + * + * Use this function to receive notifications whenever an instance of the + * given component is removed from an entity and thus destroyed.
+ * The function type for a listener is equivalent to: + * + * @code{.cpp} + * void(basic_registry &, Entity); + * @endcode + * + * Listeners are invoked **before** removing the component from the entity. + * + * @sa sink + * + * @tparam Type Type of component of which to get the sink. + * @return A temporary sink object. + */ + template + [[nodiscard]] auto on_destroy() { + return assure().on_destroy(); + } + + /** + * @brief Returns a view for the given components. + * + * Views are created on the fly and share with the registry its internal + * data structures. Feel free to discard them after the use.
+ * Creating and destroying a view is an incredibly cheap operation. As a + * rule of thumb, storing a view should never be an option. + * + * @tparam Type Type of component used to construct the view. + * @tparam Other Other types of components used to construct the view. + * @tparam Exclude Types of components used to filter the view. + * @return A newly created view. + */ + template + [[nodiscard]] basic_view, storage_for_type...>, exclude_t...>> + view(exclude_t = {}) const { + return {assure>(), assure>()..., assure>()...}; + } + + /*! @copydoc view */ + template + [[nodiscard]] basic_view, storage_for_type...>, exclude_t...>> + view(exclude_t = {}) { + return {assure>(), assure>()..., assure>()...}; + } + + /** + * @brief Returns a group for the given components. + * + * Groups are created on the fly and share with the registry its internal + * data structures. Feel free to discard them after the use.
+ * Creating and destroying a group is an incredibly cheap operation. As a + * rule of thumb, storing a group should never be an option. + * + * Groups support exclusion lists and can own types of components. The more + * types are owned by a group, the faster it is to iterate entities and + * components.
+ * However, groups also affect some features of the registry such as the + * creation and destruction of components. + * + * @note + * Pools of components that are owned by a group cannot be sorted anymore. + * The group takes the ownership of the pools and arrange components so as + * to iterate them as fast as possible. + * + * @tparam Owned Type of storage _owned_ by the group. + * @tparam Get Type of storage _observed_ by the group. + * @tparam Exclude Type of storage used to filter the group. + * @return A newly created group. + */ + template + [[nodiscard]] basic_group...>, get_t...>, exclude_t...>> + group(get_t = {}, exclude_t = {}) { + static_assert(sizeof...(Owned) + sizeof...(Get) > 0, "Exclusion-only groups are not supported"); + static_assert(sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude) > 1, "Single component groups are not allowed"); + + using handler_type = group_handler...>, get_t...>, std::remove_const_t...>; + + const auto cpools = std::forward_as_tuple(assure>()..., assure>()...); + constexpr auto size = sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude); + handler_type *handler = nullptr; + + auto it = std::find_if(groups.cbegin(), groups.cend(), [size](const auto &gdata) { + return gdata.size == size + && (gdata.owned(type_hash>::value()) && ...) + && (gdata.get(type_hash>::value()) && ...) + && (gdata.exclude(type_hash>::value()) && ...); + }); + + if(it != groups.cend()) { + handler = static_cast(it->group.get()); + } else { + group_data candidate = { + size, + std::apply([this](auto &&...args) { return std::allocate_shared(get_allocator(), std::forward(args)...); }, entt::uses_allocator_construction_args(get_allocator())), + []([[maybe_unused]] const id_type ctype) noexcept { return ((ctype == type_hash>::value()) || ...); }, + []([[maybe_unused]] const id_type ctype) noexcept { return ((ctype == type_hash>::value()) || ...); }, + []([[maybe_unused]] const id_type ctype) noexcept { return ((ctype == type_hash>::value()) || ...); }, + }; + + handler = static_cast(candidate.group.get()); + + const void *maybe_valid_if = nullptr; + const void *discard_if = nullptr; + + if constexpr(sizeof...(Owned) == 0) { + groups.push_back(std::move(candidate)); + } else { + [[maybe_unused]] auto has_conflict = [size](const auto &gdata) { + const auto overlapping = (0u + ... + gdata.owned(type_hash>::value())); + const auto sz = overlapping + (0u + ... + gdata.get(type_hash>::value())) + (0u + ... + gdata.exclude(type_hash>::value())); + return !overlapping || ((sz == size) || (sz == gdata.size)); + }; + + ENTT_ASSERT(std::all_of(groups.cbegin(), groups.cend(), std::move(has_conflict)), "Conflicting groups"); + + const auto next = std::find_if_not(groups.cbegin(), groups.cend(), [size](const auto &gdata) { + return !(0u + ... + gdata.owned(type_hash>::value())) || (size > gdata.size); + }); + + const auto prev = std::find_if(std::make_reverse_iterator(next), groups.crend(), [](const auto &gdata) { + return (0u + ... + gdata.owned(type_hash>::value())); + }); + + maybe_valid_if = (next == groups.cend() ? maybe_valid_if : next->group.get()); + discard_if = (prev == groups.crend() ? discard_if : prev->group.get()); + groups.insert(next, std::move(candidate)); + } + + (on_construct>().before(maybe_valid_if).template connect<&handler_type::template maybe_valid_if>>(*handler), ...); + (on_construct>().before(maybe_valid_if).template connect<&handler_type::template maybe_valid_if>>(*handler), ...); + (on_destroy>().before(maybe_valid_if).template connect<&handler_type::template maybe_valid_if>>(*handler), ...); + + (on_destroy>().before(discard_if).template connect<&handler_type::discard_if>(*handler), ...); + (on_destroy>().before(discard_if).template connect<&handler_type::discard_if>(*handler), ...); + (on_construct>().before(discard_if).template connect<&handler_type::discard_if>(*handler), ...); + + if constexpr(sizeof...(Owned) == 0) { + for(const auto entity: view(exclude)) { + handler->current.emplace(entity); + } + } else { + // we cannot iterate backwards because we want to leave behind valid entities in case of owned types + for(auto *first = std::get<0>(cpools).data(), *last = first + std::get<0>(cpools).size(); first != last; ++first) { + handler->template maybe_valid_if...>>>(*this, *first); + } + } + } + + return {handler->current, std::get> &>(cpools)..., std::get> &>(cpools)...}; + } + + /*! @copydoc group */ + template + [[nodiscard]] basic_group...>, get_t...>, exclude_t...>> + group_if_exists(get_t = {}, exclude_t = {}) const { + auto it = std::find_if(groups.cbegin(), groups.cend(), [](const auto &gdata) { + return gdata.size == (sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude)) + && (gdata.owned(type_hash>::value()) && ...) + && (gdata.get(type_hash>::value()) && ...) + && (gdata.exclude(type_hash>::value()) && ...); + }); + + if(it == groups.cend()) { + return {}; + } else { + using handler_type = group_handler...>, get_t...>, std::remove_const_t...>; + return {static_cast(it->group.get())->current, assure>()..., assure>()...}; + } + } + + /** + * @brief Checks whether the given components belong to any group. + * @tparam Component Types of components in which one is interested. + * @return True if the pools of the given components are _free_, false + * otherwise. + */ + template + [[nodiscard]] bool owned() const { + return std::any_of(groups.cbegin(), groups.cend(), [](auto &&gdata) { return (gdata.owned(type_hash>::value()) || ...); }); + } + + /** + * @brief Checks whether a group can be sorted. + * @tparam Owned Type of storage _owned_ by the group. + * @tparam Get Type of storage _observed_ by the group. + * @tparam Exclude Type of storage used to filter the group. + * @return True if the group can be sorted, false otherwise. + */ + template + [[nodiscard]] bool sortable(const basic_group, get_t, exclude_t> &) noexcept { + constexpr auto size = sizeof...(Owned) + sizeof...(Get) + sizeof...(Exclude); + auto pred = [size](const auto &gdata) { return (0u + ... + gdata.owned(type_hash::value())) && (size < gdata.size); }; + return std::find_if(groups.cbegin(), groups.cend(), std::move(pred)) == groups.cend(); + } + + /** + * @brief Sorts the elements of a given component. + * + * The order remains valid until a component of the given type is assigned + * to or removed from an entity.
+ * The comparison function object returns `true` if the first element is + * _less_ than the second one, `false` otherwise. Its signature is also + * equivalent to one of the following: + * + * @code{.cpp} + * bool(const Entity, const Entity); + * bool(const Type &, const Type &); + * @endcode + * + * Moreover, it shall induce a _strict weak ordering_ on the values.
+ * The sort function object offers an `operator()` that accepts: + * + * * An iterator to the first element of the range to sort. + * * An iterator past the last element of the range to sort. + * * A comparison function object to use to compare the elements. + * + * The comparison function object hasn't necessarily the type of the one + * passed along with the other parameters to this member function. + * + * @warning + * Pools of components owned by a group cannot be sorted. + * + * @tparam Type Type of components to sort. + * @tparam Compare Type of comparison function object. + * @tparam Sort Type of sort function object. + * @tparam Args Types of arguments to forward to the sort function object. + * @param compare A valid comparison function object. + * @param algo A valid sort function object. + * @param args Arguments to forward to the sort function object, if any. + */ + template + void sort(Compare compare, Sort algo = Sort{}, Args &&...args) { + ENTT_ASSERT(!owned(), "Cannot sort owned storage"); + auto &cpool = assure(); + + if constexpr(std::is_invocable_v) { + auto comp = [&cpool, compare = std::move(compare)](const auto lhs, const auto rhs) { return compare(std::as_const(cpool.get(lhs)), std::as_const(cpool.get(rhs))); }; + cpool.sort(std::move(comp), std::move(algo), std::forward(args)...); + } else { + cpool.sort(std::move(compare), std::move(algo), std::forward(args)...); + } + } + + /** + * @brief Sorts two pools of components in the same way. + * + * Being `To` and `From` the two sets, after invoking this function an + * iterator for `To` returns elements according to the following rules: + * + * * All entities in `To` that are also in `From` are returned first + * according to the order they have in `From`. + * * All entities in `To` that are not in `From` are returned in no + * particular order after all the other entities. + * + * Any subsequent change to `From` won't affect the order in `To`. + * + * @warning + * Pools of components owned by a group cannot be sorted. + * + * @tparam To Type of components to sort. + * @tparam From Type of components to use to sort. + */ + template + void sort() { + ENTT_ASSERT(!owned(), "Cannot sort owned storage"); + assure().respect(assure()); + } + + /** + * @brief Returns the context object, that is, a general purpose container. + * @return The context object, that is, a general purpose container. + */ + context &ctx() noexcept { + return vars; + } + + /*! @copydoc ctx */ + const context &ctx() const noexcept { + return vars; + } + +private: + context vars; + entity_type free_list; + std::vector epool; + // std::shared_ptr because of its type erased allocator which is useful here + dense_map, identity, std::equal_to, typename alloc_traits::template rebind_alloc>>> pools; + std::vector> groups; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/entity/runtime_view.hpp b/LiteLoader/third-party/include/entt/entity/runtime_view.hpp new file mode 100644 index 0000000..7ffad5c --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/runtime_view.hpp @@ -0,0 +1,335 @@ +#ifndef ENTT_ENTITY_RUNTIME_VIEW_HPP +#define ENTT_ENTITY_RUNTIME_VIEW_HPP + +#include +#include +#include +#include +#include +#include "entity.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class runtime_view_iterator final { + using iterator_type = typename Set::iterator; + + [[nodiscard]] bool valid() const { + return (!tombstone_check || *it != tombstone) + && std::all_of(++pools->begin(), pools->end(), [entt = *it](const auto *curr) { return curr->contains(entt); }) + && std::none_of(filter->cbegin(), filter->cend(), [entt = *it](const auto *curr) { return curr && curr->contains(entt); }); + } + +public: + using difference_type = typename iterator_type::difference_type; + using value_type = typename iterator_type::value_type; + using pointer = typename iterator_type::pointer; + using reference = typename iterator_type::reference; + using iterator_category = std::bidirectional_iterator_tag; + + constexpr runtime_view_iterator() noexcept + : pools{}, + filter{}, + it{}, + tombstone_check{} {} + + runtime_view_iterator(const std::vector &cpools, const std::vector &ignore, iterator_type curr) noexcept + : pools{&cpools}, + filter{&ignore}, + it{curr}, + tombstone_check{pools->size() == 1u && (*pools)[0u]->policy() == deletion_policy::in_place} { + if(it != (*pools)[0]->end() && !valid()) { + ++(*this); + } + } + + runtime_view_iterator &operator++() { + while(++it != (*pools)[0]->end() && !valid()) {} + return *this; + } + + runtime_view_iterator operator++(int) { + runtime_view_iterator orig = *this; + return ++(*this), orig; + } + + runtime_view_iterator &operator--() { + while(--it != (*pools)[0]->begin() && !valid()) {} + return *this; + } + + runtime_view_iterator operator--(int) { + runtime_view_iterator orig = *this; + return operator--(), orig; + } + + [[nodiscard]] pointer operator->() const noexcept { + return it.operator->(); + } + + [[nodiscard]] reference operator*() const noexcept { + return *operator->(); + } + + [[nodiscard]] constexpr bool operator==(const runtime_view_iterator &other) const noexcept { + return it == other.it; + } + + [[nodiscard]] constexpr bool operator!=(const runtime_view_iterator &other) const noexcept { + return !(*this == other); + } + +private: + const std::vector *pools; + const std::vector *filter; + iterator_type it; + bool tombstone_check; +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Generic runtime view. + * + * Runtime views iterate over those entities that have at least all the given + * components in their bags. During initialization, a runtime view looks at the + * number of entities available for each component and picks up a reference to + * the smallest set of candidate entities in order to get a performance boost + * when iterate.
+ * Order of elements during iterations are highly dependent on the order of the + * underlying data structures. See sparse_set and its specializations for more + * details. + * + * @b Important + * + * Iterators aren't invalidated if: + * + * * New instances of the given components are created and assigned to entities. + * * The entity currently pointed is modified (as an example, if one of the + * given components is removed from the entity to which the iterator points). + * * The entity currently pointed is destroyed. + * + * In all the other cases, modifying the pools of the given components in any + * way invalidates all the iterators and using them results in undefined + * behavior. + * + * @note + * Views share references to the underlying data structures of the registry that + * generated them. Therefore any change to the entities and to the components + * made by means of the registry are immediately reflected by the views, unless + * a pool was missing when the view was built (in this case, the view won't + * have a valid reference and won't be updated accordingly). + * + * @warning + * Lifetime of a view must not overcome that of the registry that generated it. + * In any other case, attempting to use a view results in undefined behavior. + * + * @tparam Type Common base type. + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class basic_runtime_view { + using alloc_traits = std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using container_type = std::vector; + +public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Underlying entity identifier. */ + using entity_type = typename Type::entity_type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Common type among all storage types. */ + using base_type = Type; + /*! @brief Bidirectional iterator type. */ + using iterator = internal::runtime_view_iterator; + + /*! @brief Default constructor to use to create empty, invalid views. */ + basic_runtime_view() noexcept + : basic_runtime_view{allocator_type{}} {} + + /** + * @brief Constructs an empty, invalid view with a given allocator. + * @param allocator The allocator to use. + */ + explicit basic_runtime_view(const allocator_type &allocator) + : pools{allocator}, + filter{allocator} {} + + /*! @brief Default copy constructor. */ + basic_runtime_view(const basic_runtime_view &) = default; + + /** + * @brief Allocator-extended copy constructor. + * @param other The instance to copy from. + * @param allocator The allocator to use. + */ + basic_runtime_view(const basic_runtime_view &other, const allocator_type &allocator) + : pools{other.pools, allocator}, + filter{other.filter, allocator} {} + + /*! @brief Default move constructor. */ + basic_runtime_view(basic_runtime_view &&) noexcept(std::is_nothrow_move_constructible_v) = default; + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + basic_runtime_view(basic_runtime_view &&other, const allocator_type &allocator) + : pools{std::move(other.pools), allocator}, + filter{std::move(other.filter), allocator} {} + + /** + * @brief Default copy assignment operator. + * @return This container. + */ + basic_runtime_view &operator=(const basic_runtime_view &) = default; + + /** + * @brief Default move assignment operator. + * @return This container. + */ + basic_runtime_view &operator=(basic_runtime_view &&) noexcept(std::is_nothrow_move_assignable_v) = default; + + /** + * @brief Exchanges the contents with those of a given view. + * @param other View to exchange the content with. + */ + void swap(basic_runtime_view &other) { + using std::swap; + swap(pools, other.pools); + swap(filter, other.filter); + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return pools.get_allocator(); + } + + /*! @brief Clears the view. */ + void clear() { + pools.clear(); + filter.clear(); + } + + /** + * @brief Appends an opaque storage object to a runtime view. + * @param base An opaque reference to a storage object. + * @return This runtime view. + */ + basic_runtime_view &iterate(base_type &base) { + if(pools.empty() || !(base.size() < pools[0u]->size())) { + pools.push_back(&base); + } else { + pools.push_back(std::exchange(pools[0u], &base)); + } + + return *this; + } + + /** + * @brief Adds an opaque storage object as a filter of a runtime view. + * @param base An opaque reference to a storage object. + * @return This runtime view. + */ + basic_runtime_view &exclude(base_type &base) { + filter.push_back(&base); + return *this; + } + + /** + * @brief Estimates the number of entities iterated by the view. + * @return Estimated number of entities iterated by the view. + */ + [[nodiscard]] size_type size_hint() const { + return pools.empty() ? size_type{} : pools.front()->size(); + } + + /** + * @brief Returns an iterator to the first entity that has the given + * components. + * + * The returned iterator points to the first entity that has the given + * components. If the view is empty, the returned iterator will be equal to + * `end()`. + * + * @return An iterator to the first entity that has the given components. + */ + [[nodiscard]] iterator begin() const { + return pools.empty() ? iterator{} : iterator{pools, filter, pools[0]->begin()}; + } + + /** + * @brief Returns an iterator that is past the last entity that has the + * given components. + * + * The returned iterator points to the entity following the last entity that + * has the given components. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the entity following the last entity that has the + * given components. + */ + [[nodiscard]] iterator end() const { + return pools.empty() ? iterator{} : iterator{pools, filter, pools[0]->end()}; + } + + /** + * @brief Checks if a view contains an entity. + * @param entt A valid identifier. + * @return True if the view contains the given entity, false otherwise. + */ + [[nodiscard]] bool contains(const entity_type entt) const { + return !pools.empty() + && std::all_of(pools.cbegin(), pools.cend(), [entt](const auto *curr) { return curr->contains(entt); }) + && std::none_of(filter.cbegin(), filter.cend(), [entt](const auto *curr) { return curr && curr->contains(entt); }); + } + + /** + * @brief Iterates entities and applies the given function object to them. + * + * The function object is invoked for each entity. It is provided only with + * the entity itself. To get the components, users can use the registry with + * which the view was built.
+ * The signature of the function should be equivalent to the following: + * + * @code{.cpp} + * void(const entity_type); + * @endcode + * + * @tparam Func Type of the function object to invoke. + * @param func A valid function object. + */ + template + void each(Func func) const { + for(const auto entity: *this) { + func(entity); + } + } + +private: + container_type pools; + container_type filter; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/entity/snapshot.hpp b/LiteLoader/third-party/include/entt/entity/snapshot.hpp similarity index 74% rename from LiteLoader/Header/third-party/entt/entity/snapshot.hpp rename to LiteLoader/third-party/include/entt/entity/snapshot.hpp index 2ce0abf..d60befc 100644 --- a/LiteLoader/Header/third-party/entt/entity/snapshot.hpp +++ b/LiteLoader/third-party/include/entt/entity/snapshot.hpp @@ -1,25 +1,23 @@ #ifndef ENTT_ENTITY_SNAPSHOT_HPP #define ENTT_ENTITY_SNAPSHOT_HPP - #include #include #include #include #include -#include #include #include #include "../config/config.h" +#include "../container/dense_map.hpp" #include "../core/type_traits.hpp" +#include "component.hpp" #include "entity.hpp" #include "fwd.hpp" -#include "registry.hpp" - +#include "view.hpp" namespace entt { - /** * @brief Utility class to create snapshots from a registry. * @@ -28,16 +26,16 @@ namespace entt { * This type can be used in both cases if provided with a correctly configured * output archive. * - * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Registry Basic registry type. */ -template +template class basic_snapshot { - using traits_type = entt_traits; + using entity_traits = entt_traits; template void get(Archive &archive, std::size_t sz, It first, It last) const { - const auto view = reg->template view>(); - archive(typename traits_type::entity_type(sz)); + const auto view = reg->template view(); + archive(typename entity_traits::entity_type(sz)); while(first != last) { const auto entt = *(first++); @@ -62,22 +60,23 @@ class basic_snapshot { } public: + /*! Basic registry type. */ + using registry_type = Registry; /*! @brief Underlying entity identifier. */ - using entity_type = Entity; + using entity_type = typename registry_type::entity_type; /** * @brief Constructs an instance that is bound to a given registry. * @param source A valid reference to a registry. */ - basic_snapshot(const basic_registry &source) ENTT_NOEXCEPT - : reg{&source} - {} + basic_snapshot(const registry_type &source) noexcept + : reg{&source} {} /*! @brief Default move constructor. */ - basic_snapshot(basic_snapshot &&) = default; + basic_snapshot(basic_snapshot &&) noexcept = default; /*! @brief Default move assignment operator. @return This snapshot. */ - basic_snapshot & operator=(basic_snapshot &&) = default; + basic_snapshot &operator=(basic_snapshot &&) noexcept = default; /** * @brief Puts aside all the entities from the underlying registry. @@ -90,17 +89,16 @@ public: * @return An object of this type to continue creating the snapshot. */ template - const basic_snapshot & entities(Archive &archive) const { + const basic_snapshot &entities(Archive &archive) const { const auto sz = reg->size(); - archive(typename traits_type::entity_type(sz)); + archive(typename entity_traits::entity_type(sz + 1u)); + archive(reg->released()); for(auto first = reg->data(), last = first + sz; first != last; ++first) { archive(*first); } - archive(reg->released()); - return *this; } @@ -116,10 +114,10 @@ public: * @return An object of this type to continue creating the snapshot. */ template - const basic_snapshot & component(Archive &archive) const { + const basic_snapshot &component(Archive &archive) const { if constexpr(sizeof...(Component) == 1u) { const auto view = reg->template view(); - (component(archive, view.data(), view.data() + view.size()), ...); + (component(archive, view.rbegin(), view.rend()), ...); return *this; } else { (component(archive), ...); @@ -142,16 +140,15 @@ public: * @return An object of this type to continue creating the snapshot. */ template - const basic_snapshot & component(Archive &archive, It first, It last) const { + const basic_snapshot &component(Archive &archive, It first, It last) const { component(archive, first, last, std::index_sequence_for{}); return *this; } private: - const basic_registry *reg; + const registry_type *reg; }; - /** * @brief Utility class to restore a snapshot as a whole. * @@ -160,58 +157,59 @@ private: * originally had.
* An example of use is the implementation of a save/restore utility. * - * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Registry Basic registry type. */ -template +template class basic_snapshot_loader { - using traits_type = entt_traits; + using entity_traits = entt_traits; - template + template void assign(Archive &archive) const { - typename traits_type::entity_type length{}; + typename entity_traits::entity_type length{}; + entity_type entt; + archive(length); - entity_type entt{}; - - if constexpr(std::tuple_size_vtemplate view().get({}))> == 0) { + if constexpr(ignore_as_empty_v) { while(length--) { archive(entt); const auto entity = reg->valid(entt) ? entt : reg->create(entt); ENTT_ASSERT(entity == entt, "Entity not available for use"); - reg->template emplace(entity); + reg->template emplace(entt); } } else { - Type instance{}; + Component instance; while(length--) { archive(entt, instance); const auto entity = reg->valid(entt) ? entt : reg->create(entt); ENTT_ASSERT(entity == entt, "Entity not available for use"); - reg->template emplace(entity, std::move(instance)); + reg->template emplace(entt, std::move(instance)); } } } public: + /*! Basic registry type. */ + using registry_type = Registry; /*! @brief Underlying entity identifier. */ - using entity_type = Entity; + using entity_type = typename registry_type::entity_type; /** * @brief Constructs an instance that is bound to a given registry. * @param source A valid reference to a registry. */ - basic_snapshot_loader(basic_registry &source) ENTT_NOEXCEPT - : reg{&source} - { + basic_snapshot_loader(registry_type &source) noexcept + : reg{&source} { // restoring a snapshot as a whole requires a clean registry ENTT_ASSERT(reg->empty(), "Registry must be empty"); } /*! @brief Default move constructor. */ - basic_snapshot_loader(basic_snapshot_loader &&) = default; + basic_snapshot_loader(basic_snapshot_loader &&) noexcept = default; /*! @brief Default move assignment operator. @return This loader. */ - basic_snapshot_loader & operator=(basic_snapshot_loader &&) = default; + basic_snapshot_loader &operator=(basic_snapshot_loader &&) noexcept = default; /** * @brief Restores entities that were in use during serialization. @@ -224,20 +222,17 @@ public: * @return A valid loader to continue restoring data. */ template - const basic_snapshot_loader & entities(Archive &archive) const { - typename traits_type::entity_type length{}; + const basic_snapshot_loader &entities(Archive &archive) const { + typename entity_traits::entity_type length{}; archive(length); std::vector all(length); - for(decltype(length) pos{}; pos < length; ++pos) { + for(std::size_t pos{}; pos < length; ++pos) { archive(all[pos]); } - entity_type destroyed; - archive(destroyed); - - reg->assign(all.cbegin(), all.cend(), destroyed); + reg->assign(++all.cbegin(), all.cend(), all[0u]); return *this; } @@ -256,7 +251,7 @@ public: * @return A valid loader to continue restoring data. */ template - const basic_snapshot_loader & component(Archive &archive) const { + const basic_snapshot_loader &component(Archive &archive) const { (assign(archive), ...); return *this; } @@ -271,19 +266,20 @@ public: * * @return A valid loader to continue restoring data. */ - const basic_snapshot_loader & orphans() const { - reg->orphans([this](const auto entt) { - reg->release(entt); + const basic_snapshot_loader &orphans() const { + reg->each([this](const auto entt) { + if(reg->orphan(entt)) { + reg->release(entt); + } }); return *this; } private: - basic_registry *reg; + registry_type *reg; }; - /** * @brief Utility class for _continuous loading_. * @@ -298,13 +294,13 @@ private: * the requirement of transferring somehow parts of the representation side to * side. * - * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Registry Basic registry type. */ -template +template class basic_continuous_loader { - using traits_type = entt_traits; + using entity_traits = entt_traits; - void destroy(Entity entt) { + void destroy(typename Registry::entity_type entt) { if(const auto it = remloc.find(entt); it == remloc.cend()) { const auto local = reg->create(); remloc.emplace(entt, std::make_pair(local, true)); @@ -312,7 +308,7 @@ class basic_continuous_loader { } } - void restore(Entity entt) { + void restore(typename Registry::entity_type entt) { const auto it = remloc.find(entt); if(it == remloc.cend()) { @@ -329,8 +325,7 @@ class basic_continuous_loader { } template - auto update(int, Container &container) - -> decltype(typename Container::mapped_type{}, void()) { + auto update(int, Container &container) -> decltype(typename Container::mapped_type{}, void()) { // map like container Container other; @@ -348,12 +343,12 @@ class basic_continuous_loader { } } - std::swap(container, other); + using std::swap; + swap(container, other); } template - auto update(char, Container &container) - -> decltype(typename Container::value_type{}, void()) { + auto update(char, Container &container) -> decltype(typename Container::value_type{}, void()) { // vector like container static_assert(std::is_same_v, "Invalid value type"); @@ -362,9 +357,9 @@ class basic_continuous_loader { } } - template - void update([[maybe_unused]] Other &instance, [[maybe_unused]] Member Type:: *member) { - if constexpr(!std::is_same_v) { + template + void update([[maybe_unused]] Component &instance, [[maybe_unused]] Member Other::*member) { + if constexpr(!std::is_same_v) { return; } else if constexpr(std::is_same_v) { instance.*member = map(instance.*member); @@ -385,48 +380,49 @@ class basic_continuous_loader { } } - template - void assign(Archive &archive, [[maybe_unused]] Member Type:: *... member) { - typename traits_type::entity_type length{}; + template + void assign(Archive &archive, [[maybe_unused]] Member Other::*...member) { + typename entity_traits::entity_type length{}; + entity_type entt; + archive(length); - entity_type entt{}; - - if constexpr(std::tuple_size_vtemplate view().get({}))> == 0) { + if constexpr(ignore_as_empty_v) { while(length--) { archive(entt); restore(entt); - reg->template emplace_or_replace(map(entt)); + reg->template emplace_or_replace(map(entt)); } } else { - Other instance{}; + Component instance; while(length--) { archive(entt, instance); (update(instance, member), ...); restore(entt); - reg->template emplace_or_replace(map(entt), std::move(instance)); + reg->template emplace_or_replace(map(entt), std::move(instance)); } } } public: + /*! Basic registry type. */ + using registry_type = Registry; /*! @brief Underlying entity identifier. */ - using entity_type = Entity; + using entity_type = typename registry_type::entity_type; /** * @brief Constructs an instance that is bound to a given registry. * @param source A valid reference to a registry. */ - basic_continuous_loader(basic_registry &source) ENTT_NOEXCEPT - : reg{&source} - {} + basic_continuous_loader(registry_type &source) noexcept + : reg{&source} {} /*! @brief Default move constructor. */ basic_continuous_loader(basic_continuous_loader &&) = default; /*! @brief Default move assignment operator. @return This loader. */ - basic_continuous_loader & operator=(basic_continuous_loader &&) = default; + basic_continuous_loader &operator=(basic_continuous_loader &&) = default; /** * @brief Restores entities that were in use during serialization. @@ -439,25 +435,24 @@ public: * @return A non-const reference to this loader. */ template - basic_continuous_loader & entities(Archive &archive) { - typename traits_type::entity_type length{}; + basic_continuous_loader &entities(Archive &archive) { + typename entity_traits::entity_type length{}; entity_type entt{}; archive(length); + // discards the head of the list of destroyed entities + archive(entt); - for(decltype(length) pos{}; pos < length; ++pos) { + for(std::size_t pos{}, last = length - 1u; pos < last; ++pos) { archive(entt); - if(const auto entity = traits_type::to_entity(entt); entity == pos) { + if(const auto entity = entity_traits::to_entity(entt); entity == pos) { restore(entt); } else { destroy(entt); } } - // discards the head of the list of destroyed entities - archive(entt); - return *this; } @@ -474,14 +469,14 @@ public: * * @tparam Component Type of component to restore. * @tparam Archive Type of input archive. - * @tparam Type Types of components to update with local counterparts. + * @tparam Other Types of components to update with local counterparts. * @tparam Member Types of members to update with their local counterparts. * @param archive A valid reference to an input archive. * @param member Members to update with their local counterparts. * @return A non-const reference to this loader. */ - template - basic_continuous_loader & component(Archive &archive, Member Type:: *... member) { + template + basic_continuous_loader &component(Archive &archive, Member Other::*...member) { (remove_if_exists(), ...); (assign(archive, member...), ...); return *this; @@ -495,7 +490,7 @@ public: * * @return A non-const reference to this loader. */ - basic_continuous_loader & shrink() { + basic_continuous_loader &shrink() { auto it = remloc.begin(); while(it != remloc.cend()) { @@ -527,9 +522,11 @@ public: * * @return A non-const reference to this loader. */ - basic_continuous_loader & orphans() { - reg->orphans([this](const auto entt) { - reg->release(entt); + basic_continuous_loader &orphans() { + reg->each([this](const auto entt) { + if(reg->orphan(entt)) { + reg->release(entt); + } }); return *this; @@ -537,19 +534,19 @@ public: /** * @brief Tests if a loader knows about a given entity. - * @param entt An entity identifier. + * @param entt A valid identifier. * @return True if `entity` is managed by the loader, false otherwise. */ - [[nodiscard]] bool contains(entity_type entt) const ENTT_NOEXCEPT { + [[nodiscard]] bool contains(entity_type entt) const noexcept { return (remloc.find(entt) != remloc.cend()); } /** * @brief Returns the identifier to which an entity refers. - * @param entt An entity identifier. + * @param entt A valid identifier. * @return The local identifier if any, the null entity otherwise. */ - [[nodiscard]] entity_type map(entity_type entt) const ENTT_NOEXCEPT { + [[nodiscard]] entity_type map(entity_type entt) const noexcept { const auto it = remloc.find(entt); entity_type other = null; @@ -561,12 +558,10 @@ public: } private: - std::unordered_map> remloc; - basic_registry *reg; + dense_map> remloc; + registry_type *reg; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/entity/sparse_set.hpp b/LiteLoader/third-party/include/entt/entity/sparse_set.hpp new file mode 100644 index 0000000..96aa172 --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/sparse_set.hpp @@ -0,0 +1,976 @@ +#ifndef ENTT_ENTITY_SPARSE_SET_HPP +#define ENTT_ENTITY_SPARSE_SET_HPP + +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/algorithm.hpp" +#include "../core/any.hpp" +#include "../core/memory.hpp" +#include "../core/type_info.hpp" +#include "entity.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct sparse_set_iterator final { + using value_type = typename Container::value_type; + using pointer = typename Container::const_pointer; + using reference = typename Container::const_reference; + using difference_type = typename Container::difference_type; + using iterator_category = std::random_access_iterator_tag; + + constexpr sparse_set_iterator() noexcept + : packed{}, + offset{} {} + + constexpr sparse_set_iterator(const Container &ref, const difference_type idx) noexcept + : packed{std::addressof(ref)}, + offset{idx} {} + + constexpr sparse_set_iterator &operator++() noexcept { + return --offset, *this; + } + + constexpr sparse_set_iterator operator++(int) noexcept { + sparse_set_iterator orig = *this; + return ++(*this), orig; + } + + constexpr sparse_set_iterator &operator--() noexcept { + return ++offset, *this; + } + + constexpr sparse_set_iterator operator--(int) noexcept { + sparse_set_iterator orig = *this; + return operator--(), orig; + } + + constexpr sparse_set_iterator &operator+=(const difference_type value) noexcept { + offset -= value; + return *this; + } + + constexpr sparse_set_iterator operator+(const difference_type value) const noexcept { + sparse_set_iterator copy = *this; + return (copy += value); + } + + constexpr sparse_set_iterator &operator-=(const difference_type value) noexcept { + return (*this += -value); + } + + constexpr sparse_set_iterator operator-(const difference_type value) const noexcept { + return (*this + -value); + } + + [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { + return packed->data()[index() - value]; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return packed->data() + index(); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return *operator->(); + } + + [[nodiscard]] constexpr difference_type index() const noexcept { + return offset - 1; + } + +private: + const Container *packed; + difference_type offset; +}; + +template +[[nodiscard]] constexpr std::ptrdiff_t operator-(const sparse_set_iterator &lhs, const sparse_set_iterator &rhs) noexcept { + return rhs.index() - lhs.index(); +} + +template +[[nodiscard]] constexpr bool operator==(const sparse_set_iterator &lhs, const sparse_set_iterator &rhs) noexcept { + return lhs.index() == rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator!=(const sparse_set_iterator &lhs, const sparse_set_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +[[nodiscard]] constexpr bool operator<(const sparse_set_iterator &lhs, const sparse_set_iterator &rhs) noexcept { + return lhs.index() > rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator>(const sparse_set_iterator &lhs, const sparse_set_iterator &rhs) noexcept { + return lhs.index() < rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator<=(const sparse_set_iterator &lhs, const sparse_set_iterator &rhs) noexcept { + return !(lhs > rhs); +} + +template +[[nodiscard]] constexpr bool operator>=(const sparse_set_iterator &lhs, const sparse_set_iterator &rhs) noexcept { + return !(lhs < rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/*! @brief Sparse set deletion policy. */ +enum class deletion_policy : std::uint8_t { + /*! @brief Swap-and-pop deletion policy. */ + swap_and_pop = 0u, + /*! @brief In-place deletion policy. */ + in_place = 1u +}; + +/** + * @brief Basic sparse set implementation. + * + * Sparse set or packed array or whatever is the name users give it.
+ * Two arrays: an _external_ one and an _internal_ one; a _sparse_ one and a + * _packed_ one; one used for direct access through contiguous memory, the other + * one used to get the data through an extra level of indirection.
+ * This is largely used by the registry to offer users the fastest access ever + * to the components. Views and groups in general are almost entirely designed + * around sparse sets. + * + * This type of data structure is widely documented in the literature and on the + * web. This is nothing more than a customized implementation suitable for the + * purpose of the framework. + * + * @note + * Internal data structures arrange elements to maximize performance. There are + * no guarantees that entities are returned in the insertion order when iterate + * a sparse set. Do not make assumption on the order in any case. + * + * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class basic_sparse_set { + using alloc_traits = std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using sparse_container_type = std::vector>; + using packed_container_type = std::vector; + using entity_traits = entt_traits; + + [[nodiscard]] auto sparse_ptr(const Entity entt) const { + const auto pos = static_cast(entity_traits::to_entity(entt)); + const auto page = pos / entity_traits::page_size; + return (page < sparse.size() && sparse[page]) ? (sparse[page] + fast_mod(pos, entity_traits::page_size)) : nullptr; + } + + [[nodiscard]] auto &sparse_ref(const Entity entt) const { + ENTT_ASSERT(sparse_ptr(entt), "Invalid element"); + const auto pos = static_cast(entity_traits::to_entity(entt)); + return sparse[pos / entity_traits::page_size][fast_mod(pos, entity_traits::page_size)]; + } + + [[nodiscard]] auto &assure_at_least(const Entity entt) { + const auto pos = static_cast(entity_traits::to_entity(entt)); + const auto page = pos / entity_traits::page_size; + + if(!(page < sparse.size())) { + sparse.resize(page + 1u, nullptr); + } + + if(!sparse[page]) { + auto page_allocator{packed.get_allocator()}; + sparse[page] = alloc_traits::allocate(page_allocator, entity_traits::page_size); + std::uninitialized_fill(sparse[page], sparse[page] + entity_traits::page_size, null); + } + + auto &elem = sparse[page][fast_mod(pos, entity_traits::page_size)]; + ENTT_ASSERT(elem == null, "Slot not available"); + return elem; + } + + void release_sparse_pages() { + auto page_allocator{packed.get_allocator()}; + + for(auto &&page: sparse) { + if(page != nullptr) { + std::destroy(page, page + entity_traits::page_size); + alloc_traits::deallocate(page_allocator, page, entity_traits::page_size); + page = nullptr; + } + } + } + +private: + virtual const void *get_at(const std::size_t) const { + return nullptr; + } + + virtual void swap_at(const std::size_t, const std::size_t) {} + virtual void move_element(const std::size_t, const std::size_t) {} + +protected: + /*! @brief Random access iterator type. */ + using basic_iterator = internal::sparse_set_iterator; + + /** + * @brief Erases an entity from a sparse set. + * @param it An iterator to the element to pop. + */ + void swap_and_pop(const basic_iterator it) { + ENTT_ASSERT(mode == deletion_policy::swap_and_pop, "Deletion policy mismatched"); + auto &self = sparse_ref(*it); + const auto entt = entity_traits::to_entity(self); + sparse_ref(packed.back()) = entity_traits::combine(entt, entity_traits::to_integral(packed.back())); + packed[static_cast(entt)] = packed.back(); + // unnecessary but it helps to detect nasty bugs + ENTT_ASSERT((packed.back() = null, true), ""); + // lazy self-assignment guard + self = null; + packed.pop_back(); + } + + /** + * @brief Erases an entity from a sparse set. + * @param it An iterator to the element to pop. + */ + void in_place_pop(const basic_iterator it) { + ENTT_ASSERT(mode == deletion_policy::in_place, "Deletion policy mismatched"); + const auto entt = entity_traits::to_entity(std::exchange(sparse_ref(*it), null)); + packed[static_cast(entt)] = std::exchange(free_list, entity_traits::combine(entt, entity_traits::reserved)); + } + +protected: + /** + * @brief Erases entities from a sparse set. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + */ + virtual void pop(basic_iterator first, basic_iterator last) { + if(mode == deletion_policy::swap_and_pop) { + for(; first != last; ++first) { + swap_and_pop(first); + } + } else { + for(; first != last; ++first) { + in_place_pop(first); + } + } + } + + /** + * @brief Assigns an entity to a sparse set. + * @param entt A valid identifier. + * @param force_back Force back insertion. + * @return Iterator pointing to the emplaced element. + */ + virtual basic_iterator try_emplace(const Entity entt, const bool force_back, const void * = nullptr) { + ENTT_ASSERT(!contains(entt), "Set already contains entity"); + + if(auto &elem = assure_at_least(entt); free_list == null || force_back) { + packed.push_back(entt); + elem = entity_traits::combine(static_cast(packed.size() - 1u), entity_traits::to_integral(entt)); + return begin(); + } else { + const auto pos = static_cast(entity_traits::to_entity(free_list)); + elem = entity_traits::combine(entity_traits::to_integral(free_list), entity_traits::to_integral(entt)); + free_list = std::exchange(packed[pos], entt); + return --(end() - pos); + } + } + +public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Underlying entity identifier. */ + using entity_type = typename entity_traits::value_type; + /*! @brief Underlying version type. */ + using version_type = typename entity_traits::version_type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Pointer type to contained entities. */ + using pointer = typename packed_container_type::const_pointer; + /*! @brief Random access iterator type. */ + using iterator = basic_iterator; + /*! @brief Constant random access iterator type. */ + using const_iterator = iterator; + /*! @brief Reverse iterator type. */ + using reverse_iterator = std::reverse_iterator; + /*! @brief Constant reverse iterator type. */ + using const_reverse_iterator = reverse_iterator; + + /*! @brief Default constructor. */ + basic_sparse_set() + : basic_sparse_set{type_id()} {} + + /** + * @brief Constructs an empty container with a given allocator. + * @param allocator The allocator to use. + */ + explicit basic_sparse_set(const allocator_type &allocator) + : basic_sparse_set{type_id(), deletion_policy::swap_and_pop, allocator} {} + + /** + * @brief Constructs an empty container with the given policy and allocator. + * @param pol Type of deletion policy. + * @param allocator The allocator to use (possibly default-constructed). + */ + explicit basic_sparse_set(deletion_policy pol, const allocator_type &allocator = {}) + : basic_sparse_set{type_id(), pol, allocator} {} + + /** + * @brief Constructs an empty container with the given value type, policy + * and allocator. + * @param value Returned value type, if any. + * @param pol Type of deletion policy. + * @param allocator The allocator to use (possibly default-constructed). + */ + explicit basic_sparse_set(const type_info &value, deletion_policy pol = deletion_policy::swap_and_pop, const allocator_type &allocator = {}) + : sparse{allocator}, + packed{allocator}, + info{&value}, + free_list{tombstone}, + mode{pol} {} + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + basic_sparse_set(basic_sparse_set &&other) noexcept + : sparse{std::move(other.sparse)}, + packed{std::move(other.packed)}, + info{other.info}, + free_list{std::exchange(other.free_list, tombstone)}, + mode{other.mode} {} + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + basic_sparse_set(basic_sparse_set &&other, const allocator_type &allocator) noexcept + : sparse{std::move(other.sparse), allocator}, + packed{std::move(other.packed), allocator}, + info{other.info}, + free_list{std::exchange(other.free_list, tombstone)}, + mode{other.mode} { + ENTT_ASSERT(alloc_traits::is_always_equal::value || packed.get_allocator() == other.packed.get_allocator(), "Copying a sparse set is not allowed"); + } + + /*! @brief Default destructor. */ + virtual ~basic_sparse_set() { + release_sparse_pages(); + } + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This sparse set. + */ + basic_sparse_set &operator=(basic_sparse_set &&other) noexcept { + ENTT_ASSERT(alloc_traits::is_always_equal::value || packed.get_allocator() == other.packed.get_allocator(), "Copying a sparse set is not allowed"); + + release_sparse_pages(); + sparse = std::move(other.sparse); + packed = std::move(other.packed); + info = other.info; + free_list = std::exchange(other.free_list, tombstone); + mode = other.mode; + return *this; + } + + /** + * @brief Exchanges the contents with those of a given sparse set. + * @param other Sparse set to exchange the content with. + */ + void swap(basic_sparse_set &other) { + using std::swap; + swap(sparse, other.sparse); + swap(packed, other.packed); + swap(info, other.info); + swap(free_list, other.free_list); + swap(mode, other.mode); + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return packed.get_allocator(); + } + + /** + * @brief Returns the deletion policy of a sparse set. + * @return The deletion policy of the sparse set. + */ + [[nodiscard]] deletion_policy policy() const noexcept { + return mode; + } + + /** + * @brief Increases the capacity of a sparse set. + * + * If the new capacity is greater than the current capacity, new storage is + * allocated, otherwise the method does nothing. + * + * @param cap Desired capacity. + */ + virtual void reserve(const size_type cap) { + packed.reserve(cap); + } + + /** + * @brief Returns the number of elements that a sparse set has currently + * allocated space for. + * @return Capacity of the sparse set. + */ + [[nodiscard]] virtual size_type capacity() const noexcept { + return packed.capacity(); + } + + /*! @brief Requests the removal of unused capacity. */ + virtual void shrink_to_fit() { + packed.shrink_to_fit(); + } + + /** + * @brief Returns the extent of a sparse set. + * + * The extent of a sparse set is also the size of the internal sparse array. + * There is no guarantee that the internal packed array has the same size. + * Usually the size of the internal sparse array is equal or greater than + * the one of the internal packed array. + * + * @return Extent of the sparse set. + */ + [[nodiscard]] size_type extent() const noexcept { + return sparse.size() * entity_traits::page_size; + } + + /** + * @brief Returns the number of elements in a sparse set. + * + * The number of elements is also the size of the internal packed array. + * There is no guarantee that the internal sparse array has the same size. + * Usually the size of the internal sparse array is equal or greater than + * the one of the internal packed array. + * + * @return Number of elements. + */ + [[nodiscard]] size_type size() const noexcept { + return packed.size(); + } + + /** + * @brief Checks whether a sparse set is empty. + * @return True if the sparse set is empty, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return packed.empty(); + } + + /** + * @brief Direct access to the internal packed array. + * @return A pointer to the internal packed array. + */ + [[nodiscard]] pointer data() const noexcept { + return packed.data(); + } + + /** + * @brief Returns an iterator to the beginning. + * + * The returned iterator points to the first entity of the internal packed + * array. If the sparse set is empty, the returned iterator will be equal to + * `end()`. + * + * @return An iterator to the first entity of the sparse set. + */ + [[nodiscard]] const_iterator begin() const noexcept { + const auto pos = static_cast(packed.size()); + return iterator{packed, pos}; + } + + /*! @copydoc begin */ + [[nodiscard]] const_iterator cbegin() const noexcept { + return begin(); + } + + /** + * @brief Returns an iterator to the end. + * + * The returned iterator points to the element following the last entity in + * a sparse set. Attempting to dereference the returned iterator results in + * undefined behavior. + * + * @return An iterator to the element following the last entity of a sparse + * set. + */ + [[nodiscard]] iterator end() const noexcept { + return iterator{packed, {}}; + } + + /*! @copydoc end */ + [[nodiscard]] const_iterator cend() const noexcept { + return end(); + } + + /** + * @brief Returns a reverse iterator to the beginning. + * + * The returned iterator points to the first entity of the reversed internal + * packed array. If the sparse set is empty, the returned iterator will be + * equal to `rend()`. + * + * @return An iterator to the first entity of the reversed internal packed + * array. + */ + [[nodiscard]] const_reverse_iterator rbegin() const noexcept { + return std::make_reverse_iterator(end()); + } + + /*! @copydoc rbegin */ + [[nodiscard]] const_reverse_iterator crbegin() const noexcept { + return rbegin(); + } + + /** + * @brief Returns a reverse iterator to the end. + * + * The returned iterator points to the element following the last entity in + * the reversed sparse set. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the element following the last entity of the + * reversed sparse set. + */ + [[nodiscard]] reverse_iterator rend() const noexcept { + return std::make_reverse_iterator(begin()); + } + + /*! @copydoc rend */ + [[nodiscard]] const_reverse_iterator crend() const noexcept { + return rend(); + } + + /** + * @brief Finds an entity. + * @param entt A valid identifier. + * @return An iterator to the given entity if it's found, past the end + * iterator otherwise. + */ + [[nodiscard]] iterator find(const entity_type entt) const noexcept { + return contains(entt) ? --(end() - index(entt)) : end(); + } + + /** + * @brief Checks if a sparse set contains an entity. + * @param entt A valid identifier. + * @return True if the sparse set contains the entity, false otherwise. + */ + [[nodiscard]] bool contains(const entity_type entt) const noexcept { + const auto elem = sparse_ptr(entt); + constexpr auto cap = entity_traits::to_entity(null); + // testing versions permits to avoid accessing the packed array + return elem && (((~cap & entity_traits::to_integral(entt)) ^ entity_traits::to_integral(*elem)) < cap); + } + + /** + * @brief Returns the contained version for an identifier. + * @param entt A valid identifier. + * @return The version for the given identifier if present, the tombstone + * version otherwise. + */ + [[nodiscard]] version_type current(const entity_type entt) const noexcept { + const auto elem = sparse_ptr(entt); + constexpr auto fallback = entity_traits::to_version(tombstone); + return elem ? entity_traits::to_version(*elem) : fallback; + } + + /** + * @brief Returns the position of an entity in a sparse set. + * + * @warning + * Attempting to get the position of an entity that doesn't belong to the + * sparse set results in undefined behavior. + * + * @param entt A valid identifier. + * @return The position of the entity in the sparse set. + */ + [[nodiscard]] size_type index(const entity_type entt) const noexcept { + ENTT_ASSERT(contains(entt), "Set does not contain entity"); + return static_cast(entity_traits::to_entity(sparse_ref(entt))); + } + + /** + * @brief Returns the entity at specified location, with bounds checking. + * @param pos The position for which to return the entity. + * @return The entity at specified location if any, a null entity otherwise. + */ + [[nodiscard]] entity_type at(const size_type pos) const noexcept { + return pos < packed.size() ? packed[pos] : null; + } + + /** + * @brief Returns the entity at specified location, without bounds checking. + * @param pos The position for which to return the entity. + * @return The entity at specified location. + */ + [[nodiscard]] entity_type operator[](const size_type pos) const noexcept { + ENTT_ASSERT(pos < packed.size(), "Position is out of bounds"); + return packed[pos]; + } + + /** + * @brief Returns the element assigned to an entity, if any. + * + * @warning + * Attempting to use an entity that doesn't belong to the sparse set results + * in undefined behavior. + * + * @param entt A valid identifier. + * @return An opaque pointer to the element assigned to the entity, if any. + */ + [[nodiscard]] const void *get(const entity_type entt) const noexcept { + return get_at(index(entt)); + } + + /*! @copydoc get */ + [[nodiscard]] void *get(const entity_type entt) noexcept { + return const_cast(std::as_const(*this).get(entt)); + } + + /** + * @brief Assigns an entity to a sparse set. + * + * @warning + * Attempting to assign an entity that already belongs to the sparse set + * results in undefined behavior. + * + * @param entt A valid identifier. + * @param value Optional opaque value to forward to mixins, if any. + * @return Iterator pointing to the emplaced element in case of success, the + * `end()` iterator otherwise. + */ + iterator emplace(const entity_type entt, const void *value = nullptr) { + return try_emplace(entt, false, value); + } + + /** + * @brief Bump the version number of an entity. + * + * @warning + * Attempting to bump the version of an entity that doesn't belong to the + * sparse set results in undefined behavior. + * + * @param entt A valid identifier. + */ + void bump(const entity_type entt) { + auto &entity = sparse_ref(entt); + ENTT_ASSERT(entt != tombstone && entity != null, "Cannot set the required version"); + entity = entity_traits::combine(entity_traits::to_integral(entity), entity_traits::to_integral(entt)); + packed[static_cast(entity_traits::to_entity(entity))] = entt; + } + + /** + * @brief Assigns one or more entities to a sparse set. + * + * @warning + * Attempting to assign an entity that already belongs to the sparse set + * results in undefined behavior. + * + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @return Iterator pointing to the first element inserted in case of + * success, the `end()` iterator otherwise. + */ + template + iterator insert(It first, It last) { + for(auto it = first; it != last; ++it) { + try_emplace(*it, true); + } + + return first == last ? end() : find(*first); + } + + /** + * @brief Erases an entity from a sparse set. + * + * @warning + * Attempting to erase an entity that doesn't belong to the sparse set + * results in undefined behavior. + * + * @param entt A valid identifier. + */ + void erase(const entity_type entt) { + const auto it = --(end() - index(entt)); + pop(it, it + 1u); + } + + /** + * @brief Erases entities from a set. + * + * @sa erase + * + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + */ + template + void erase(It first, It last) { + if constexpr(std::is_same_v) { + pop(first, last); + } else { + for(; first != last; ++first) { + erase(*first); + } + } + } + + /** + * @brief Removes an entity from a sparse set if it exists. + * @param entt A valid identifier. + * @return True if the entity is actually removed, false otherwise. + */ + bool remove(const entity_type entt) { + return contains(entt) && (erase(entt), true); + } + + /** + * @brief Removes entities from a sparse set if they exist. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @return The number of entities actually removed. + */ + template + size_type remove(It first, It last) { + size_type count{}; + + for(; first != last; ++first) { + count += remove(*first); + } + + return count; + } + + /*! @brief Removes all tombstones from the packed array of a sparse set. */ + void compact() { + size_type from = packed.size(); + for(; from && packed[from - 1u] == tombstone; --from) {} + + for(auto *it = &free_list; *it != null && from; it = std::addressof(packed[entity_traits::to_entity(*it)])) { + if(const size_type to = entity_traits::to_entity(*it); to < from) { + --from; + move_element(from, to); + + using std::swap; + swap(packed[from], packed[to]); + + const auto entity = static_cast(to); + sparse_ref(packed[to]) = entity_traits::combine(entity, entity_traits::to_integral(packed[to])); + *it = entity_traits::combine(static_cast(from), entity_traits::reserved); + for(; from && packed[from - 1u] == tombstone; --from) {} + } + } + + free_list = tombstone; + packed.resize(from); + } + + /** + * @brief Swaps two entities in a sparse set. + * + * For what it's worth, this function affects both the internal sparse array + * and the internal packed array. Users should not care of that anyway. + * + * @warning + * Attempting to swap entities that don't belong to the sparse set results + * in undefined behavior. + * + * @param lhs A valid identifier. + * @param rhs A valid identifier. + */ + void swap_elements(const entity_type lhs, const entity_type rhs) { + ENTT_ASSERT(contains(lhs) && contains(rhs), "Set does not contain entities"); + + auto &entt = sparse_ref(lhs); + auto &other = sparse_ref(rhs); + + const auto from = entity_traits::to_entity(entt); + const auto to = entity_traits::to_entity(other); + + // basic no-leak guarantee (with invalid state) if swapping throws + swap_at(static_cast(from), static_cast(to)); + entt = entity_traits::combine(to, entity_traits::to_integral(packed[from])); + other = entity_traits::combine(from, entity_traits::to_integral(packed[to])); + + using std::swap; + swap(packed[from], packed[to]); + } + + /** + * @brief Sort the first count elements according to the given comparison + * function. + * + * The comparison function object must return `true` if the first element + * is _less_ than the second one, `false` otherwise. The signature of the + * comparison function should be equivalent to the following: + * + * @code{.cpp} + * bool(const Entity, const Entity); + * @endcode + * + * Moreover, the comparison function object shall induce a + * _strict weak ordering_ on the values. + * + * The sort function object must offer a member function template + * `operator()` that accepts three arguments: + * + * * An iterator to the first element of the range to sort. + * * An iterator past the last element of the range to sort. + * * A comparison function to use to compare the elements. + * + * @tparam Compare Type of comparison function object. + * @tparam Sort Type of sort function object. + * @tparam Args Types of arguments to forward to the sort function object. + * @param length Number of elements to sort. + * @param compare A valid comparison function object. + * @param algo A valid sort function object. + * @param args Arguments to forward to the sort function object, if any. + */ + template + void sort_n(const size_type length, Compare compare, Sort algo = Sort{}, Args &&...args) { + ENTT_ASSERT(!(length > packed.size()), "Length exceeds the number of elements"); + ENTT_ASSERT(free_list == null, "Partial sorting with tombstones is not supported"); + + algo(packed.rend() - length, packed.rend(), std::move(compare), std::forward(args)...); + + for(size_type pos{}; pos < length; ++pos) { + auto curr = pos; + auto next = index(packed[curr]); + + while(curr != next) { + const auto idx = index(packed[next]); + const auto entt = packed[curr]; + + swap_at(next, idx); + const auto entity = static_cast(curr); + sparse_ref(entt) = entity_traits::combine(entity, entity_traits::to_integral(packed[curr])); + curr = std::exchange(next, idx); + } + } + } + + /** + * @brief Sort all elements according to the given comparison function. + * + * @sa sort_n + * + * @tparam Compare Type of comparison function object. + * @tparam Sort Type of sort function object. + * @tparam Args Types of arguments to forward to the sort function object. + * @param compare A valid comparison function object. + * @param algo A valid sort function object. + * @param args Arguments to forward to the sort function object, if any. + */ + template + void sort(Compare compare, Sort algo = Sort{}, Args &&...args) { + compact(); + sort_n(packed.size(), std::move(compare), std::move(algo), std::forward(args)...); + } + + /** + * @brief Sort entities according to their order in another sparse set. + * + * Entities that are part of both the sparse sets are ordered internally + * according to the order they have in `other`. All the other entities goes + * to the end of the list and there are no guarantees on their order.
+ * In other terms, this function can be used to impose the same order on two + * sets by using one of them as a master and the other one as a slave. + * + * Iterating the sparse set with a couple of iterators returns elements in + * the expected order after a call to `respect`. See `begin` and `end` for + * more details. + * + * @param other The sparse sets that imposes the order of the entities. + */ + void respect(const basic_sparse_set &other) { + compact(); + + const auto to = other.end(); + auto from = other.begin(); + + for(size_type pos = packed.size() - 1; pos && from != to; ++from) { + if(contains(*from)) { + if(*from != packed[pos]) { + // basic no-leak guarantee (with invalid state) if swapping throws + swap_elements(packed[pos], *from); + } + + --pos; + } + } + } + + /*! @brief Clears a sparse set. */ + void clear() { + if(const auto last = end(); free_list == null) { + pop(begin(), last); + } else { + for(auto &&entity: *this) { + // tombstone filter on itself + if(const auto it = find(entity); it != last) { + pop(it, it + 1u); + } + } + } + + free_list = tombstone; + packed.clear(); + } + + /** + * @brief Returned value type, if any. + * @return Returned value type, if any. + */ + const type_info &type() const noexcept { + return *info; + } + + /*! @brief Forwards variables to derived classes, if any. */ + virtual void bind(any) noexcept {} + +private: + sparse_container_type sparse; + packed_container_type packed; + const type_info *info; + entity_type free_list; + deletion_policy mode; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/entity/storage.hpp b/LiteLoader/third-party/include/entt/entity/storage.hpp new file mode 100644 index 0000000..9bd6d11 --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/storage.hpp @@ -0,0 +1,941 @@ +#ifndef ENTT_ENTITY_STORAGE_HPP +#define ENTT_ENTITY_STORAGE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/compressed_pair.hpp" +#include "../core/iterator.hpp" +#include "../core/memory.hpp" +#include "../core/type_info.hpp" +#include "component.hpp" +#include "entity.hpp" +#include "fwd.hpp" +#include "sparse_set.hpp" +#include "storage_mixin.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class storage_iterator final { + friend storage_iterator; + + using container_type = std::remove_const_t; + using alloc_traits = std::allocator_traits; + using comp_traits = component_traits>; + + using iterator_traits = std::iterator_traits, + typename alloc_traits::template rebind_traits::element_type>::const_pointer, + typename alloc_traits::template rebind_traits::element_type>::pointer>>; + +public: + using value_type = typename iterator_traits::value_type; + using pointer = typename iterator_traits::pointer; + using reference = typename iterator_traits::reference; + using difference_type = typename iterator_traits::difference_type; + using iterator_category = std::random_access_iterator_tag; + + constexpr storage_iterator() noexcept = default; + + constexpr storage_iterator(Container *ref, const difference_type idx) noexcept + : packed{ref}, + offset{idx} {} + + template, typename = std::enable_if_t> + constexpr storage_iterator(const storage_iterator> &other) noexcept + : storage_iterator{other.packed, other.offset} {} + + constexpr storage_iterator &operator++() noexcept { + return --offset, *this; + } + + constexpr storage_iterator operator++(int) noexcept { + storage_iterator orig = *this; + return ++(*this), orig; + } + + constexpr storage_iterator &operator--() noexcept { + return ++offset, *this; + } + + constexpr storage_iterator operator--(int) noexcept { + storage_iterator orig = *this; + return operator--(), orig; + } + + constexpr storage_iterator &operator+=(const difference_type value) noexcept { + offset -= value; + return *this; + } + + constexpr storage_iterator operator+(const difference_type value) const noexcept { + storage_iterator copy = *this; + return (copy += value); + } + + constexpr storage_iterator &operator-=(const difference_type value) noexcept { + return (*this += -value); + } + + constexpr storage_iterator operator-(const difference_type value) const noexcept { + return (*this + -value); + } + + [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { + const auto pos = index() - value; + return (*packed)[pos / comp_traits::page_size][fast_mod(pos, comp_traits::page_size)]; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + const auto pos = index(); + return (*packed)[pos / comp_traits::page_size] + fast_mod(pos, comp_traits::page_size); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return *operator->(); + } + + [[nodiscard]] constexpr difference_type index() const noexcept { + return offset - 1; + } + +private: + Container *packed; + difference_type offset; +}; + +template +[[nodiscard]] constexpr std::ptrdiff_t operator-(const storage_iterator &lhs, const storage_iterator &rhs) noexcept { + return rhs.index() - lhs.index(); +} + +template +[[nodiscard]] constexpr bool operator==(const storage_iterator &lhs, const storage_iterator &rhs) noexcept { + return lhs.index() == rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator!=(const storage_iterator &lhs, const storage_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +[[nodiscard]] constexpr bool operator<(const storage_iterator &lhs, const storage_iterator &rhs) noexcept { + return lhs.index() > rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator>(const storage_iterator &lhs, const storage_iterator &rhs) noexcept { + return lhs.index() < rhs.index(); +} + +template +[[nodiscard]] constexpr bool operator<=(const storage_iterator &lhs, const storage_iterator &rhs) noexcept { + return !(lhs > rhs); +} + +template +[[nodiscard]] constexpr bool operator>=(const storage_iterator &lhs, const storage_iterator &rhs) noexcept { + return !(lhs < rhs); +} + +template +class extended_storage_iterator final { + template + friend class extended_storage_iterator; + +public: + using value_type = decltype(std::tuple_cat(std::make_tuple(*std::declval()), std::forward_as_tuple(*std::declval()...))); + using pointer = input_iterator_pointer; + using reference = value_type; + using difference_type = std::ptrdiff_t; + using iterator_category = std::input_iterator_tag; + + constexpr extended_storage_iterator() + : it{} {} + + constexpr extended_storage_iterator(It base, Other... other) + : it{base, other...} {} + + template && ...) && (std::is_constructible_v && ...)>> + constexpr extended_storage_iterator(const extended_storage_iterator &other) + : it{other.it} {} + + constexpr extended_storage_iterator &operator++() noexcept { + return ++std::get(it), (++std::get(it), ...), *this; + } + + constexpr extended_storage_iterator operator++(int) noexcept { + extended_storage_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return operator*(); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return {*std::get(it), *std::get(it)...}; + } + + template + friend constexpr bool operator==(const extended_storage_iterator &, const extended_storage_iterator &) noexcept; + +private: + std::tuple it; +}; + +template +[[nodiscard]] constexpr bool operator==(const extended_storage_iterator &lhs, const extended_storage_iterator &rhs) noexcept { + return std::get<0>(lhs.it) == std::get<0>(rhs.it); +} + +template +[[nodiscard]] constexpr bool operator!=(const extended_storage_iterator &lhs, const extended_storage_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Basic storage implementation. + * + * Internal data structures arrange elements to maximize performance. There are + * no guarantees that objects are returned in the insertion order when iterate + * a storage. Do not make assumption on the order in any case. + * + * @warning + * Empty types aren't explicitly instantiated. Therefore, many of the functions + * normally available for non-empty types will not be available for empty ones. + * + * @tparam Type Type of objects assigned to the entities. + * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class basic_storage: public basic_sparse_set::template rebind_alloc> { + using alloc_traits = std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using underlying_type = basic_sparse_set>; + using container_type = std::vector>; + using comp_traits = component_traits; + + static constexpr bool is_pinned_type_v = !(std::is_move_constructible_v && std::is_move_assignable_v); + + [[nodiscard]] auto &element_at(const std::size_t pos) const { + return packed.first()[pos / comp_traits::page_size][fast_mod(pos, comp_traits::page_size)]; + } + + auto assure_at_least(const std::size_t pos) { + auto &&container = packed.first(); + const auto idx = pos / comp_traits::page_size; + + if(!(idx < container.size())) { + auto curr = container.size(); + container.resize(idx + 1u, nullptr); + + ENTT_TRY { + for(const auto last = container.size(); curr < last; ++curr) { + container[curr] = alloc_traits::allocate(packed.second(), comp_traits::page_size); + } + } + ENTT_CATCH { + container.resize(curr); + ENTT_THROW; + } + } + + return container[idx] + fast_mod(pos, comp_traits::page_size); + } + + template + auto emplace_element(const Entity entt, const bool force_back, Args &&...args) { + const auto it = base_type::try_emplace(entt, force_back); + + ENTT_TRY { + auto elem = assure_at_least(static_cast(it.index())); + entt::uninitialized_construct_using_allocator(to_address(elem), packed.second(), std::forward(args)...); + } + ENTT_CATCH { + base_type::pop(it, it + 1u); + ENTT_THROW; + } + + return it; + } + + void shrink_to_size(const std::size_t sz) { + for(auto pos = sz, length = base_type::size(); pos < length; ++pos) { + if constexpr(comp_traits::in_place_delete) { + if(base_type::at(pos) != tombstone) { + std::destroy_at(std::addressof(element_at(pos))); + } + } else { + std::destroy_at(std::addressof(element_at(pos))); + } + } + + auto &&container = packed.first(); + auto page_allocator{packed.second()}; + const auto from = (sz + comp_traits::page_size - 1u) / comp_traits::page_size; + + for(auto pos = from, last = container.size(); pos < last; ++pos) { + alloc_traits::deallocate(page_allocator, container[pos], comp_traits::page_size); + } + + container.resize(from); + } + +private: + const void *get_at(const std::size_t pos) const final { + return std::addressof(element_at(pos)); + } + + void swap_at([[maybe_unused]] const std::size_t lhs, [[maybe_unused]] const std::size_t rhs) final { + // use a runtime value to avoid compile-time suppression that drives the code coverage tool crazy + ENTT_ASSERT((lhs + 1u) && !is_pinned_type_v, "Pinned type"); + + if constexpr(!is_pinned_type_v) { + using std::swap; + swap(element_at(lhs), element_at(rhs)); + } + } + + void move_element([[maybe_unused]] const std::size_t from, [[maybe_unused]] const std::size_t to) final { + // use a runtime value to avoid compile-time suppression that drives the code coverage tool crazy + ENTT_ASSERT((from + 1u) && !is_pinned_type_v, "Pinned type"); + + if constexpr(!is_pinned_type_v) { + auto &elem = element_at(from); + entt::uninitialized_construct_using_allocator(to_address(assure_at_least(to)), packed.second(), std::move(elem)); + std::destroy_at(std::addressof(elem)); + } + } + +protected: + /*! @brief Random access iterator type. */ + using basic_iterator = typename underlying_type::basic_iterator; + + /** + * @brief Erases entities from a sparse set. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + */ + void pop(basic_iterator first, basic_iterator last) override { + for(; first != last; ++first) { + // cannot use first.index() because it would break with cross iterators + auto &elem = element_at(base_type::index(*first)); + + if constexpr(comp_traits::in_place_delete) { + base_type::in_place_pop(first); + std::destroy_at(std::addressof(elem)); + } else { + auto &other = element_at(base_type::size() - 1u); + // destroying on exit allows reentrant destructors + [[maybe_unused]] auto unused = std::exchange(elem, std::move(other)); + std::destroy_at(std::addressof(other)); + base_type::swap_and_pop(first); + } + } + } + + /** + * @brief Assigns an entity to a storage. + * @param entt A valid identifier. + * @param value Optional opaque value. + * @param force_back Force back insertion. + * @return Iterator pointing to the emplaced element. + */ + basic_iterator try_emplace([[maybe_unused]] const Entity entt, const bool force_back, const void *value) override { + if(value) { + if constexpr(std::is_copy_constructible_v) { + return emplace_element(entt, force_back, *static_cast(value)); + } else { + return base_type::end(); + } + } else { + if constexpr(std::is_default_constructible_v) { + return emplace_element(entt, force_back); + } else { + return base_type::end(); + } + } + } + +public: + /*! @brief Base type. */ + using base_type = underlying_type; + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Type of the objects assigned to entities. */ + using value_type = Type; + /*! @brief Underlying entity identifier. */ + using entity_type = Entity; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Pointer type to contained elements. */ + using pointer = typename container_type::pointer; + /*! @brief Constant pointer type to contained elements. */ + using const_pointer = typename alloc_traits::template rebind_traits::const_pointer; + /*! @brief Random access iterator type. */ + using iterator = internal::storage_iterator; + /*! @brief Constant random access iterator type. */ + using const_iterator = internal::storage_iterator; + /*! @brief Reverse iterator type. */ + using reverse_iterator = std::reverse_iterator; + /*! @brief Constant reverse iterator type. */ + using const_reverse_iterator = std::reverse_iterator; + /*! @brief Extended iterable storage proxy. */ + using iterable = iterable_adaptor>; + /*! @brief Constant extended iterable storage proxy. */ + using const_iterable = iterable_adaptor>; + + /*! @brief Default constructor. */ + basic_storage() + : basic_storage{allocator_type{}} {} + + /** + * @brief Constructs an empty storage with a given allocator. + * @param allocator The allocator to use. + */ + explicit basic_storage(const allocator_type &allocator) + : base_type{type_id(), deletion_policy{comp_traits::in_place_delete}, allocator}, + packed{container_type{allocator}, allocator} {} + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + basic_storage(basic_storage &&other) noexcept + : base_type{std::move(other)}, + packed{std::move(other.packed)} {} + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + basic_storage(basic_storage &&other, const allocator_type &allocator) noexcept + : base_type{std::move(other), allocator}, + packed{container_type{std::move(other.packed.first()), allocator}, allocator} { + ENTT_ASSERT(alloc_traits::is_always_equal::value || packed.second() == other.packed.second(), "Copying a storage is not allowed"); + } + + /*! @brief Default destructor. */ + ~basic_storage() override { + shrink_to_size(0u); + } + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This storage. + */ + basic_storage &operator=(basic_storage &&other) noexcept { + ENTT_ASSERT(alloc_traits::is_always_equal::value || packed.second() == other.packed.second(), "Copying a storage is not allowed"); + + shrink_to_size(0u); + base_type::operator=(std::move(other)); + packed.first() = std::move(other.packed.first()); + propagate_on_container_move_assignment(packed.second(), other.packed.second()); + return *this; + } + + /** + * @brief Exchanges the contents with those of a given storage. + * @param other Storage to exchange the content with. + */ + void swap(basic_storage &other) { + using std::swap; + underlying_type::swap(other); + propagate_on_container_swap(packed.second(), other.packed.second()); + swap(packed.first(), other.packed.first()); + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return allocator_type{packed.second()}; + } + + /** + * @brief Increases the capacity of a storage. + * + * If the new capacity is greater than the current capacity, new storage is + * allocated, otherwise the method does nothing. + * + * @param cap Desired capacity. + */ + void reserve(const size_type cap) override { + if(cap != 0u) { + base_type::reserve(cap); + assure_at_least(cap - 1u); + } + } + + /** + * @brief Returns the number of elements that a storage has currently + * allocated space for. + * @return Capacity of the storage. + */ + [[nodiscard]] size_type capacity() const noexcept override { + return packed.first().size() * comp_traits::page_size; + } + + /*! @brief Requests the removal of unused capacity. */ + void shrink_to_fit() override { + base_type::shrink_to_fit(); + shrink_to_size(base_type::size()); + } + + /** + * @brief Direct access to the array of objects. + * @return A pointer to the array of objects. + */ + [[nodiscard]] const_pointer raw() const noexcept { + return packed.first().data(); + } + + /*! @copydoc raw */ + [[nodiscard]] pointer raw() noexcept { + return packed.first().data(); + } + + /** + * @brief Returns an iterator to the beginning. + * + * The returned iterator points to the first instance of the internal array. + * If the storage is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first instance of the internal array. + */ + [[nodiscard]] const_iterator cbegin() const noexcept { + const auto pos = static_cast(base_type::size()); + return const_iterator{&packed.first(), pos}; + } + + /*! @copydoc cbegin */ + [[nodiscard]] const_iterator begin() const noexcept { + return cbegin(); + } + + /*! @copydoc begin */ + [[nodiscard]] iterator begin() noexcept { + const auto pos = static_cast(base_type::size()); + return iterator{&packed.first(), pos}; + } + + /** + * @brief Returns an iterator to the end. + * + * The returned iterator points to the element following the last instance + * of the internal array. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the element following the last instance of the + * internal array. + */ + [[nodiscard]] const_iterator cend() const noexcept { + return const_iterator{&packed.first(), {}}; + } + + /*! @copydoc cend */ + [[nodiscard]] const_iterator end() const noexcept { + return cend(); + } + + /*! @copydoc end */ + [[nodiscard]] iterator end() noexcept { + return iterator{&packed.first(), {}}; + } + + /** + * @brief Returns a reverse iterator to the beginning. + * + * The returned iterator points to the first instance of the reversed + * internal array. If the storage is empty, the returned iterator will be + * equal to `rend()`. + * + * @return An iterator to the first instance of the reversed internal array. + */ + [[nodiscard]] const_reverse_iterator crbegin() const noexcept { + return std::make_reverse_iterator(cend()); + } + + /*! @copydoc crbegin */ + [[nodiscard]] const_reverse_iterator rbegin() const noexcept { + return crbegin(); + } + + /*! @copydoc rbegin */ + [[nodiscard]] reverse_iterator rbegin() noexcept { + return std::make_reverse_iterator(end()); + } + + /** + * @brief Returns a reverse iterator to the end. + * + * The returned iterator points to the element following the last instance + * of the reversed internal array. Attempting to dereference the returned + * iterator results in undefined behavior. + * + * @return An iterator to the element following the last instance of the + * reversed internal array. + */ + [[nodiscard]] const_reverse_iterator crend() const noexcept { + return std::make_reverse_iterator(cbegin()); + } + + /*! @copydoc crend */ + [[nodiscard]] const_reverse_iterator rend() const noexcept { + return crend(); + } + + /*! @copydoc rend */ + [[nodiscard]] reverse_iterator rend() noexcept { + return std::make_reverse_iterator(begin()); + } + + /** + * @brief Returns the object assigned to an entity. + * + * @warning + * Attempting to use an entity that doesn't belong to the storage results in + * undefined behavior. + * + * @param entt A valid identifier. + * @return The object assigned to the entity. + */ + [[nodiscard]] const value_type &get(const entity_type entt) const noexcept { + return element_at(base_type::index(entt)); + } + + /*! @copydoc get */ + [[nodiscard]] value_type &get(const entity_type entt) noexcept { + return const_cast(std::as_const(*this).get(entt)); + } + + /** + * @brief Returns the object assigned to an entity as a tuple. + * @param entt A valid identifier. + * @return The object assigned to the entity as a tuple. + */ + [[nodiscard]] std::tuple get_as_tuple(const entity_type entt) const noexcept { + return std::forward_as_tuple(get(entt)); + } + + /*! @copydoc get_as_tuple */ + [[nodiscard]] std::tuple get_as_tuple(const entity_type entt) noexcept { + return std::forward_as_tuple(get(entt)); + } + + /** + * @brief Assigns an entity to a storage and constructs its object. + * + * @warning + * Attempting to use an entity that already belongs to the storage results + * in undefined behavior. + * + * @tparam Args Types of arguments to use to construct the object. + * @param entt A valid identifier. + * @param args Parameters to use to construct an object for the entity. + * @return A reference to the newly created object. + */ + template + value_type &emplace(const entity_type entt, Args &&...args) { + if constexpr(std::is_aggregate_v) { + const auto it = emplace_element(entt, false, Type{std::forward(args)...}); + return element_at(static_cast(it.index())); + } else { + const auto it = emplace_element(entt, false, std::forward(args)...); + return element_at(static_cast(it.index())); + } + } + + /** + * @brief Updates the instance assigned to a given entity in-place. + * @tparam Func Types of the function objects to invoke. + * @param entt A valid identifier. + * @param func Valid function objects. + * @return A reference to the updated instance. + */ + template + value_type &patch(const entity_type entt, Func &&...func) { + const auto idx = base_type::index(entt); + auto &elem = element_at(idx); + (std::forward(func)(elem), ...); + return elem; + } + + /** + * @brief Assigns one or more entities to a storage and constructs their + * objects from a given instance. + * + * @warning + * Attempting to assign an entity that already belongs to the storage + * results in undefined behavior. + * + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @param value An instance of the object to construct. + */ + template + void insert(It first, It last, const value_type &value = {}) { + for(; first != last; ++first) { + emplace_element(*first, true, value); + } + } + + /** + * @brief Assigns one or more entities to a storage and constructs their + * objects from a given range. + * + * @sa construct + * + * @tparam EIt Type of input iterator. + * @tparam CIt Type of input iterator. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @param from An iterator to the first element of the range of objects. + */ + template::value_type, value_type>>> + void insert(EIt first, EIt last, CIt from) { + for(; first != last; ++first, ++from) { + emplace_element(*first, true, *from); + } + } + + /** + * @brief Returns an iterable object to use to _visit_ a storage. + * + * The iterable object returns a tuple that contains the current entity and + * a reference to its component. + * + * @return An iterable object to use to _visit_ the storage. + */ + [[nodiscard]] iterable each() noexcept { + return {internal::extended_storage_iterator{base_type::begin(), begin()}, internal::extended_storage_iterator{base_type::end(), end()}}; + } + + /*! @copydoc each */ + [[nodiscard]] const_iterable each() const noexcept { + return {internal::extended_storage_iterator{base_type::cbegin(), cbegin()}, internal::extended_storage_iterator{base_type::cend(), cend()}}; + } + +private: + compressed_pair packed; +}; + +/*! @copydoc basic_storage */ +template +class basic_storage>> + : public basic_sparse_set::template rebind_alloc> { + using alloc_traits = std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using underlying_type = basic_sparse_set>; + using comp_traits = component_traits; + +public: + /*! @brief Base type. */ + using base_type = underlying_type; + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Type of the objects assigned to entities. */ + using value_type = Type; + /*! @brief Underlying entity identifier. */ + using entity_type = Entity; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Extended iterable storage proxy. */ + using iterable = iterable_adaptor>; + /*! @brief Constant extended iterable storage proxy. */ + using const_iterable = iterable_adaptor>; + + /*! @brief Default constructor. */ + basic_storage() + : basic_storage{allocator_type{}} {} + + /** + * @brief Constructs an empty container with a given allocator. + * @param allocator The allocator to use. + */ + explicit basic_storage(const allocator_type &allocator) + : base_type{type_id(), deletion_policy{comp_traits::in_place_delete}, allocator} {} + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + basic_storage(basic_storage &&other) noexcept = default; + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + basic_storage(basic_storage &&other, const allocator_type &allocator) noexcept + : base_type{std::move(other), allocator} {} + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This storage. + */ + basic_storage &operator=(basic_storage &&other) noexcept = default; + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return allocator_type{base_type::get_allocator()}; + } + + /** + * @brief Returns the object assigned to an entity, that is `void`. + * + * @warning + * Attempting to use an entity that doesn't belong to the storage results in + * undefined behavior. + * + * @param entt A valid identifier. + */ + void get([[maybe_unused]] const entity_type entt) const noexcept { + ENTT_ASSERT(base_type::contains(entt), "Storage does not contain entity"); + } + + /** + * @brief Returns an empty tuple. + * + * @warning + * Attempting to use an entity that doesn't belong to the storage results in + * undefined behavior. + * + * @param entt A valid identifier. + * @return Returns an empty tuple. + */ + [[nodiscard]] std::tuple<> get_as_tuple([[maybe_unused]] const entity_type entt) const noexcept { + ENTT_ASSERT(base_type::contains(entt), "Storage does not contain entity"); + return std::tuple{}; + } + + /** + * @brief Assigns an entity to a storage and constructs its object. + * + * @warning + * Attempting to use an entity that already belongs to the storage results + * in undefined behavior. + * + * @tparam Args Types of arguments to use to construct the object. + * @param entt A valid identifier. + */ + template + void emplace(const entity_type entt, Args &&...) { + base_type::try_emplace(entt, false); + } + + /** + * @brief Updates the instance assigned to a given entity in-place. + * @tparam Func Types of the function objects to invoke. + * @param entt A valid identifier. + * @param func Valid function objects. + */ + template + void patch([[maybe_unused]] const entity_type entt, Func &&...func) { + ENTT_ASSERT(base_type::contains(entt), "Storage does not contain entity"); + (std::forward(func)(), ...); + } + + /** + * @brief Assigns entities to a storage. + * @tparam It Type of input iterator. + * @tparam Args Types of optional arguments. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + */ + template + void insert(It first, It last, Args &&...) { + for(; first != last; ++first) { + base_type::try_emplace(*first, true); + } + } + + /** + * @brief Returns an iterable object to use to _visit_ a storage. + * + * The iterable object returns a tuple that contains the current entity. + * + * @return An iterable object to use to _visit_ the storage. + */ + [[nodiscard]] iterable each() noexcept { + return {internal::extended_storage_iterator{base_type::begin()}, internal::extended_storage_iterator{base_type::end()}}; + } + + /*! @copydoc each */ + [[nodiscard]] const_iterable each() const noexcept { + return {internal::extended_storage_iterator{base_type::cbegin()}, internal::extended_storage_iterator{base_type::cend()}}; + } +}; + +/** + * @brief Provides a common way to define storage types. + * @tparam Type Storage value type. + * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +struct storage_type { + /*! @brief Type-to-storage conversion result. */ + using type = sigh_storage_mixin>; +}; + +/** + * @brief Helper type. + * @tparam Args Arguments to forward. + */ +template +using storage_type_t = typename storage_type::type; + +/** + * Type-to-storage conversion utility that preserves constness. + * @tparam Type Storage value type, eventually const. + * @tparam Entity A valid entity type (see entt_traits for more details). + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +struct storage_for { + /*! @brief Type-to-storage conversion result. */ + using type = constness_as_t, Entity, Allocator>, Type>; +}; + +/** + * @brief Helper type. + * @tparam Args Arguments to forward. + */ +template +using storage_for_t = typename storage_for::type; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/entity/storage_mixin.hpp b/LiteLoader/third-party/include/entt/entity/storage_mixin.hpp new file mode 100644 index 0000000..0686e4e --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/storage_mixin.hpp @@ -0,0 +1,236 @@ +#ifndef ENTT_ENTITY_SIGH_STORAGE_MIXIN_HPP +#define ENTT_ENTITY_SIGH_STORAGE_MIXIN_HPP + +#include +#include "../config/config.h" +#include "../core/any.hpp" +#include "../signal/sigh.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @brief Mixin type used to add signal support to storage types. + * + * The function type of a listener is equivalent to: + * + * @code{.cpp} + * void(basic_registry &, entity_type); + * @endcode + * + * This applies to all signals made available. + * + * @tparam Type The type of the underlying storage. + */ +template +class sigh_storage_mixin final: public Type { + using basic_registry_type = basic_registry; + using sigh_type = sigh; + using basic_iterator = typename Type::basic_iterator; + + void pop(basic_iterator first, basic_iterator last) override { + ENTT_ASSERT(owner != nullptr, "Invalid pointer to registry"); + + for(; first != last; ++first) { + const auto entt = *first; + destruction.publish(*owner, entt); + const auto it = Type::find(entt); + Type::pop(it, it + 1u); + } + } + + basic_iterator try_emplace(const typename basic_registry_type::entity_type entt, const bool force_back, const void *value) final { + ENTT_ASSERT(owner != nullptr, "Invalid pointer to registry"); + Type::try_emplace(entt, force_back, value); + construction.publish(*owner, entt); + return Type::find(entt); + } + +public: + /*! @brief Allocator type. */ + using allocator_type = typename Type::allocator_type; + /*! @brief Underlying entity identifier. */ + using entity_type = typename Type::entity_type; + /*! @brief Expected registry type. */ + using registry_type = basic_registry_type; + + /*! @brief Default constructor. */ + sigh_storage_mixin() + : sigh_storage_mixin{allocator_type{}} {} + + /** + * @brief Constructs an empty storage with a given allocator. + * @param allocator The allocator to use. + */ + explicit sigh_storage_mixin(const allocator_type &allocator) + : Type{allocator}, + owner{}, + construction{allocator}, + destruction{allocator}, + update{allocator} {} + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + sigh_storage_mixin(sigh_storage_mixin &&other) noexcept + : Type{std::move(other)}, + owner{other.owner}, + construction{std::move(other.construction)}, + destruction{std::move(other.destruction)}, + update{std::move(other.update)} {} + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + sigh_storage_mixin(sigh_storage_mixin &&other, const allocator_type &allocator) noexcept + : Type{std::move(other), allocator}, + owner{other.owner}, + construction{std::move(other.construction), allocator}, + destruction{std::move(other.destruction), allocator}, + update{std::move(other.update), allocator} {} + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This storage. + */ + sigh_storage_mixin &operator=(sigh_storage_mixin &&other) noexcept { + Type::operator=(std::move(other)); + owner = other.owner; + construction = std::move(other.construction); + destruction = std::move(other.destruction); + update = std::move(other.update); + return *this; + } + + /** + * @brief Exchanges the contents with those of a given storage. + * @param other Storage to exchange the content with. + */ + void swap(sigh_storage_mixin &other) { + using std::swap; + Type::swap(other); + swap(owner, other.owner); + swap(construction, other.construction); + swap(destruction, other.destruction); + swap(update, other.update); + } + + /** + * @brief Returns a sink object. + * + * The sink returned by this function can be used to receive notifications + * whenever a new instance is created and assigned to an entity.
+ * Listeners are invoked after the object has been assigned to the entity. + * + * @sa sink + * + * @return A temporary sink object. + */ + [[nodiscard]] auto on_construct() noexcept { + return sink{construction}; + } + + /** + * @brief Returns a sink object. + * + * The sink returned by this function can be used to receive notifications + * whenever an instance is explicitly updated.
+ * Listeners are invoked after the object has been updated. + * + * @sa sink + * + * @return A temporary sink object. + */ + [[nodiscard]] auto on_update() noexcept { + return sink{update}; + } + + /** + * @brief Returns a sink object. + * + * The sink returned by this function can be used to receive notifications + * whenever an instance is removed from an entity and thus destroyed.
+ * Listeners are invoked before the object has been removed from the entity. + * + * @sa sink + * + * @return A temporary sink object. + */ + [[nodiscard]] auto on_destroy() noexcept { + return sink{destruction}; + } + + /** + * @brief Assigns entities to a storage. + * @tparam Args Types of arguments to use to construct the object. + * @param entt A valid identifier. + * @param args Parameters to use to initialize the object. + * @return A reference to the newly created object. + */ + template + decltype(auto) emplace(const entity_type entt, Args &&...args) { + ENTT_ASSERT(owner != nullptr, "Invalid pointer to registry"); + Type::emplace(entt, std::forward(args)...); + construction.publish(*owner, entt); + return this->get(entt); + } + + /** + * @brief Patches the given instance for an entity. + * @tparam Func Types of the function objects to invoke. + * @param entt A valid identifier. + * @param func Valid function objects. + * @return A reference to the patched instance. + */ + template + decltype(auto) patch(const entity_type entt, Func &&...func) { + ENTT_ASSERT(owner != nullptr, "Invalid pointer to registry"); + Type::patch(entt, std::forward(func)...); + update.publish(*owner, entt); + return this->get(entt); + } + + /** + * @brief Assigns entities to a storage. + * @tparam It Type of input iterator. + * @tparam Args Types of arguments to use to construct the objects assigned + * to the entities. + * @param first An iterator to the first element of the range of entities. + * @param last An iterator past the last element of the range of entities. + * @param args Parameters to use to initialize the objects assigned to the + * entities. + */ + template + void insert(It first, It last, Args &&...args) { + ENTT_ASSERT(owner != nullptr, "Invalid pointer to registry"); + Type::insert(first, last, std::forward(args)...); + + for(auto it = construction.empty() ? last : first; it != last; ++it) { + construction.publish(*owner, *it); + } + } + + /** + * @brief Forwards variables to derived classes, if any. + * @param value A variable wrapped in an opaque container. + */ + void bind(any value) noexcept final { + auto *reg = any_cast(&value); + owner = reg ? reg : owner; + Type::bind(std::move(value)); + } + +private: + basic_registry_type *owner; + sigh_type construction; + sigh_type destruction; + sigh_type update; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/entity/view.hpp b/LiteLoader/third-party/include/entt/entity/view.hpp new file mode 100644 index 0000000..5c732ed --- /dev/null +++ b/LiteLoader/third-party/include/entt/entity/view.hpp @@ -0,0 +1,861 @@ +#ifndef ENTT_ENTITY_VIEW_HPP +#define ENTT_ENTITY_VIEW_HPP + +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/iterator.hpp" +#include "../core/type_traits.hpp" +#include "component.hpp" +#include "entity.hpp" +#include "fwd.hpp" +#include "sparse_set.hpp" +#include "storage.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class view_iterator final { + using iterator_type = typename Type::const_iterator; + + [[nodiscard]] bool valid() const noexcept { + return ((Get != 0u) || (*it != tombstone)) + && std::apply([entt = *it](const auto *...curr) { return (curr->contains(entt) && ...); }, pools) + && std::apply([entt = *it](const auto *...curr) { return (!curr->contains(entt) && ...); }, filter); + } + +public: + using value_type = typename iterator_type::value_type; + using pointer = typename iterator_type::pointer; + using reference = typename iterator_type::reference; + using difference_type = typename iterator_type::difference_type; + using iterator_category = std::forward_iterator_tag; + + constexpr view_iterator() noexcept + : it{}, + last{}, + pools{}, + filter{} {} + + view_iterator(iterator_type curr, iterator_type to, std::array all_of, std::array none_of) noexcept + : it{curr}, + last{to}, + pools{all_of}, + filter{none_of} { + while(it != last && !valid()) { + ++it; + } + } + + view_iterator &operator++() noexcept { + while(++it != last && !valid()) {} + return *this; + } + + view_iterator operator++(int) noexcept { + view_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] pointer operator->() const noexcept { + return &*it; + } + + [[nodiscard]] reference operator*() const noexcept { + return *operator->(); + } + + template + friend constexpr bool operator==(const view_iterator &, const view_iterator &) noexcept; + +private: + iterator_type it; + iterator_type last; + std::array pools; + std::array filter; +}; + +template +[[nodiscard]] constexpr bool operator==(const view_iterator &lhs, const view_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const view_iterator &lhs, const view_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +struct extended_view_iterator final { + using difference_type = std::ptrdiff_t; + using value_type = decltype(std::tuple_cat(std::make_tuple(*std::declval()), std::declval().get_as_tuple({})...)); + using pointer = input_iterator_pointer; + using reference = value_type; + using iterator_category = std::input_iterator_tag; + + constexpr extended_view_iterator() + : it{}, + pools{} {} + + extended_view_iterator(It from, std::tuple storage) + : it{from}, + pools{storage} {} + + extended_view_iterator &operator++() noexcept { + return ++it, *this; + } + + extended_view_iterator operator++(int) noexcept { + extended_view_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] reference operator*() const noexcept { + return std::apply([entt = *it](auto *...curr) { return std::tuple_cat(std::make_tuple(entt), curr->get_as_tuple(entt)...); }, pools); + } + + [[nodiscard]] pointer operator->() const noexcept { + return operator*(); + } + + template + friend bool constexpr operator==(const extended_view_iterator &, const extended_view_iterator &) noexcept; + +private: + It it; + std::tuple pools; +}; + +template +[[nodiscard]] constexpr bool operator==(const extended_view_iterator &lhs, const extended_view_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const extended_view_iterator &lhs, const extended_view_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief View implementation. + * + * Primary template isn't defined on purpose. All the specializations give a + * compile-time error, but for a few reasonable cases. + */ +template +class basic_view; + +/** + * @brief Multi component view. + * + * Multi component views iterate over those entities that are at least in the + * given storage. During initialization, a multi component view looks at the + * number of entities available for each component and uses the smallest set in + * order to get a performance boost when iterating. + * + * @b Important + * + * Iterators aren't invalidated if: + * + * * New elements are added to the storage. + * * The entity currently pointed is modified (for example, components are added + * or removed from it). + * * The entity currently pointed is destroyed. + * + * In all other cases, modifying the pools iterated by the view in any way + * invalidates all the iterators and using them results in undefined behavior. + * + * @tparam Get Types of storage iterated by the view. + * @tparam Exclude Types of storage used to filter the view. + */ +template +class basic_view, exclude_t> { + using underlying_type = std::common_type_t; + using basic_common_type = std::common_type_t; + + template + friend class basic_view; + + template + static constexpr std::size_t index_of = type_list_index_v, type_list>; + + [[nodiscard]] auto opaque_check_set() const noexcept { + std::array other{}; + std::apply([&other, pos = 0u, view = view](const auto *...curr) mutable { ((curr == view ? void() : void(other[pos++] = curr)), ...); }, pools); + return other; + } + + [[nodiscard]] auto filter_as_array() const noexcept { + return std::apply([](const auto *...curr) { return std::array{curr...}; }, filter); + } + + template + [[nodiscard]] auto dispatch_get(const std::tuple &curr) const { + if constexpr(Curr == Other) { + return std::forward_as_tuple(std::get(curr)...); + } else { + return storage().get_as_tuple(std::get<0>(curr)); + } + } + + [[nodiscard]] auto reject(const underlying_type entt) const noexcept { + return std::apply([entt](const auto *...curr) { return (curr->contains(entt) || ...); }, filter); + } + + template + void each(Func &func, std::index_sequence) const { + for(const auto curr: storage().each()) { + if(const auto entt = std::get<0>(curr); ((sizeof...(Get) != 1u) || (entt != tombstone)) && ((Curr == Index || storage().contains(entt)) && ...) && !reject(entt)) { + if constexpr(is_applicable_v{}, std::declval().get({})))>) { + std::apply(func, std::tuple_cat(std::make_tuple(entt), dispatch_get(curr)...)); + } else { + std::apply(func, std::tuple_cat(dispatch_get(curr)...)); + } + } + } + } + + template + void pick_and_each(Func &func, std::index_sequence seq) const { + ((&storage() == view ? each(func, seq) : void()), ...); + } + +public: + /*! @brief Underlying entity identifier. */ + using entity_type = underlying_type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Common type among all storage types. */ + using base_type = basic_common_type; + /*! @brief Bidirectional iterator type. */ + using iterator = internal::view_iterator; + /*! @brief Iterable view type. */ + using iterable = iterable_adaptor>; + + /*! @brief Default constructor to use to create empty, invalid views. */ + basic_view() noexcept + : pools{}, + filter{}, + view{} {} + + /** + * @brief Constructs a multi-type view from a set of storage classes. + * @param value The storage for the types to iterate. + * @param exclude The storage for the types used to filter the view. + */ + basic_view(Get &...value, Exclude &...exclude) noexcept + : pools{&value...}, + filter{&exclude...}, + view{[](const base_type *first, const auto *...other) { ((first = other->size() < first->size() ? other : first), ...); return first; }(&value...)} {} + + /** + * @brief Constructs a multi-type view from a set of storage classes. + * @param value The storage for the types to iterate. + * @param exclude The storage for the types used to filter the view. + */ + basic_view(std::tuple value, std::tuple exclude = {}) noexcept + : pools{std::apply([](auto &...curr) { return std::make_tuple(&curr...); }, value)}, + filter{std::apply([](auto &...curr) { return std::make_tuple(&curr...); }, exclude)}, + view{std::apply([](const base_type *first, const auto *...other) { ((first = other->size() < first->size() ? other : first), ...); return first; }, pools)} {} + + /** + * @brief Creates a new view driven by a given component in its iterations. + * @tparam Type Type of component used to drive the iteration. + * @return A new view driven by the given component in its iterations. + */ + template + [[nodiscard]] basic_view use() const noexcept { + return use>(); + } + + /** + * @brief Creates a new view driven by a given component in its iterations. + * @tparam Index Index of the component used to drive the iteration. + * @return A new view driven by the given component in its iterations. + */ + template + [[nodiscard]] basic_view use() const noexcept { + basic_view other{*this}; + other.view = &storage(); + return other; + } + + /** + * @brief Updates the internal leading view if required. + * @return A newly created and internally optimized view. + */ + [[nodiscard]] basic_view refresh() const noexcept { + return std::apply([](auto *...elem) { return basic_view{*elem...}; }, std::tuple_cat(pools, filter)); + } + + /** + * @brief Returns the leading storage of a view. + * @return The leading storage of the view. + */ + [[nodiscard]] const base_type &handle() const noexcept { + return *view; + } + + /** + * @brief Returns the storage for a given component type. + * @tparam Comp Type of component of which to return the storage. + * @return The storage for the given component type. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + return storage>(); + } + + /** + * @brief Returns the storage for a given index. + * @tparam Index Index of the storage to return. + * @return The storage for the given index. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + return *std::get(pools); + } + + /** + * @brief Estimates the number of entities iterated by the view. + * @return Estimated number of entities iterated by the view. + */ + [[nodiscard]] size_type size_hint() const noexcept { + return view->size(); + } + + /** + * @brief Returns an iterator to the first entity of the view. + * + * The returned iterator points to the first entity of the view. If the view + * is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first entity of the view. + */ + [[nodiscard]] iterator begin() const noexcept { + return iterator{view->begin(), view->end(), opaque_check_set(), filter_as_array()}; + } + + /** + * @brief Returns an iterator that is past the last entity of the view. + * + * The returned iterator points to the entity following the last entity of + * the view. Attempting to dereference the returned iterator results in + * undefined behavior. + * + * @return An iterator to the entity following the last entity of the view. + */ + [[nodiscard]] iterator end() const noexcept { + return iterator{view->end(), view->end(), opaque_check_set(), filter_as_array()}; + } + + /** + * @brief Returns the first entity of the view, if any. + * @return The first entity of the view if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type front() const noexcept { + const auto it = begin(); + return it != end() ? *it : null; + } + + /** + * @brief Returns the last entity of the view, if any. + * @return The last entity of the view if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type back() const noexcept { + auto it = view->rbegin(); + for(const auto last = view->rend(); it != last && !contains(*it); ++it) {} + return it == view->rend() ? null : *it; + } + + /** + * @brief Finds an entity. + * @param entt A valid identifier. + * @return An iterator to the given entity if it's found, past the end + * iterator otherwise. + */ + [[nodiscard]] iterator find(const entity_type entt) const noexcept { + return contains(entt) ? iterator{view->find(entt), view->end(), opaque_check_set(), filter_as_array()} : end(); + } + + /** + * @brief Returns the components assigned to the given entity. + * @param entt A valid identifier. + * @return The components assigned to the given entity. + */ + [[nodiscard]] decltype(auto) operator[](const entity_type entt) const { + return get(entt); + } + + /** + * @brief Checks if a view is properly initialized. + * @return True if the view is properly initialized, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return view != nullptr; + } + + /** + * @brief Checks if a view contains an entity. + * @param entt A valid identifier. + * @return True if the view contains the given entity, false otherwise. + */ + [[nodiscard]] bool contains(const entity_type entt) const noexcept { + return std::apply([entt](const auto *...curr) { return (curr->contains(entt) && ...); }, pools) + && std::apply([entt](const auto *...curr) { return (!curr->contains(entt) && ...); }, filter); + } + + /** + * @brief Returns the components assigned to the given entity. + * + * @warning + * Attempting to use an entity that doesn't belong to the view results in + * undefined behavior. + * + * @tparam Type Types of components to get. + * @param entt A valid identifier. + * @return The components assigned to the entity. + */ + template + [[nodiscard]] decltype(auto) get(const entity_type entt) const { + if constexpr(sizeof...(Type) == 0) { + return std::apply([entt](auto *...curr) { return std::tuple_cat(curr->get_as_tuple(entt)...); }, pools); + } else if constexpr(sizeof...(Type) == 1) { + return (storage>().get(entt), ...); + } else { + return std::tuple_cat(storage>().get_as_tuple(entt)...); + } + } + + /** + * @brief Returns the components assigned to the given entity. + * + * @warning + * Attempting to use an entity that doesn't belong to the view results in + * undefined behavior. + * + * @tparam First Index of a component to get. + * @tparam Other Indexes of other components to get. + * @param entt A valid identifier. + * @return The components assigned to the entity. + */ + template + [[nodiscard]] decltype(auto) get(const entity_type entt) const { + if constexpr(sizeof...(Other) == 0) { + return storage().get(entt); + } else { + return std::tuple_cat(storage().get_as_tuple(entt), storage().get_as_tuple(entt)...); + } + } + + /** + * @brief Iterates entities and components and applies the given function + * object to them. + * + * The function object is invoked for each entity. It is provided with the + * entity itself and a set of references to non-empty components. The + * _constness_ of the components is as requested.
+ * The signature of the function must be equivalent to one of the following + * forms: + * + * @code{.cpp} + * void(const entity_type, Type &...); + * void(Type &...); + * @endcode + * + * @tparam Func Type of the function object to invoke. + * @param func A valid function object. + */ + template + void each(Func func) const { + pick_and_each(func, std::index_sequence_for{}); + } + + /** + * @brief Returns an iterable object to use to _visit_ a view. + * + * The iterable object returns a tuple that contains the current entity and + * a set of references to its non-empty components. The _constness_ of the + * components is as requested. + * + * @return An iterable object to use to _visit_ the view. + */ + [[nodiscard]] iterable each() const noexcept { + return {internal::extended_view_iterator{begin(), pools}, internal::extended_view_iterator{end(), pools}}; + } + + /** + * @brief Combines two views in a _more specific_ one (friend function). + * @tparam OGet Component list of the view to combine with. + * @tparam OExclude Filter list of the view to combine with. + * @param other The view to combine with. + * @return A more specific view. + */ + template + [[nodiscard]] auto operator|(const basic_view, exclude_t> &other) const noexcept { + return std::make_from_tuple, exclude_t>>( + std::apply([](auto *...curr) { return std::forward_as_tuple(*curr...); }, std::tuple_cat(pools, other.pools, filter, other.filter))); + } + +private: + std::tuple pools; + std::tuple filter; + const base_type *view; +}; + +/** + * @brief Single component view specialization. + * + * Single component views are specialized in order to get a boost in terms of + * performance. This kind of views can access the underlying data structure + * directly and avoid superfluous checks. + * + * @b Important + * + * Iterators aren't invalidated if: + * + * * New elements are added to the storage. + * * The entity currently pointed is modified (for example, components are added + * or removed from it). + * * The entity currently pointed is destroyed. + * + * In all other cases, modifying the pool iterated by the view in any way + * invalidates all the iterators and using them results in undefined behavior. + * + * @tparam Get Type of storage iterated by the view. + */ +template +class basic_view, exclude_t<>, std::void_t::in_place_delete>>> { + template + friend class basic_view; + +public: + /*! @brief Underlying entity identifier. */ + using entity_type = typename Get::entity_type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Common type among all storage types. */ + using base_type = typename Get::base_type; + /*! @brief Random access iterator type. */ + using iterator = typename base_type::iterator; + /*! @brief Reversed iterator type. */ + using reverse_iterator = typename base_type::reverse_iterator; + /*! @brief Iterable view type. */ + using iterable = decltype(std::declval().each()); + + /*! @brief Default constructor to use to create empty, invalid views. */ + basic_view() noexcept + : pools{}, + filter{} {} + + /** + * @brief Constructs a single-type view from a storage class. + * @param ref The storage for the type to iterate. + */ + basic_view(Get &ref) noexcept + : pools{&ref}, + filter{} {} + + /** + * @brief Constructs a single-type view from a storage class. + * @param ref The storage for the type to iterate. + */ + basic_view(std::tuple ref, std::tuple<> = {}) noexcept + : pools{&std::get<0>(ref)}, + filter{} {} + + /** + * @brief Returns the leading storage of a view. + * @return The leading storage of the view. + */ + [[nodiscard]] const base_type &handle() const noexcept { + return storage(); + } + + /** + * @brief Returns the storage for a given component type. + * @tparam Type Type of component of which to return the storage. + * @return The storage for the given component type. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + static_assert(std::is_same_v, typename Get::value_type>, "Invalid component type"); + return storage<0>(); + } + + /** + * @brief Returns the storage for a given index. + * @tparam Index Index of the storage to return. + * @return The storage for the given index. + */ + template + [[nodiscard]] decltype(auto) storage() const noexcept { + return *std::get(pools); + } + + /** + * @brief Returns the number of entities that have the given component. + * @return Number of entities that have the given component. + */ + [[nodiscard]] size_type size() const noexcept { + return handle().size(); + } + + /** + * @brief Checks whether a view is empty. + * @return True if the view is empty, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return handle().empty(); + } + + /** + * @brief Returns an iterator to the first entity of the view. + * + * The returned iterator points to the first entity of the view. If the view + * is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first entity of the view. + */ + [[nodiscard]] iterator begin() const noexcept { + return handle().begin(); + } + + /** + * @brief Returns an iterator that is past the last entity of the view. + * + * The returned iterator points to the entity following the last entity of + * the view. Attempting to dereference the returned iterator results in + * undefined behavior. + * + * @return An iterator to the entity following the last entity of the view. + */ + [[nodiscard]] iterator end() const noexcept { + return handle().end(); + } + + /** + * @brief Returns an iterator to the first entity of the reversed view. + * + * The returned iterator points to the first entity of the reversed view. If + * the view is empty, the returned iterator will be equal to `rend()`. + * + * @return An iterator to the first entity of the reversed view. + */ + [[nodiscard]] reverse_iterator rbegin() const noexcept { + return handle().rbegin(); + } + + /** + * @brief Returns an iterator that is past the last entity of the reversed + * view. + * + * The returned iterator points to the entity following the last entity of + * the reversed view. Attempting to dereference the returned iterator + * results in undefined behavior. + * + * @return An iterator to the entity following the last entity of the + * reversed view. + */ + [[nodiscard]] reverse_iterator rend() const noexcept { + return handle().rend(); + } + + /** + * @brief Returns the first entity of the view, if any. + * @return The first entity of the view if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type front() const noexcept { + return empty() ? null : *begin(); + } + + /** + * @brief Returns the last entity of the view, if any. + * @return The last entity of the view if one exists, the null entity + * otherwise. + */ + [[nodiscard]] entity_type back() const noexcept { + return empty() ? null : *rbegin(); + } + + /** + * @brief Finds an entity. + * @param entt A valid identifier. + * @return An iterator to the given entity if it's found, past the end + * iterator otherwise. + */ + [[nodiscard]] iterator find(const entity_type entt) const noexcept { + return contains(entt) ? handle().find(entt) : end(); + } + + /** + * @brief Returns the identifier that occupies the given position. + * @param pos Position of the element to return. + * @return The identifier that occupies the given position. + */ + [[nodiscard]] entity_type operator[](const size_type pos) const { + return begin()[pos]; + } + + /** + * @brief Returns the component assigned to the given entity. + * @param entt A valid identifier. + * @return The component assigned to the given entity. + */ + [[nodiscard]] decltype(auto) operator[](const entity_type entt) const { + return storage().get(entt); + } + + /** + * @brief Checks if a view is properly initialized. + * @return True if the view is properly initialized, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return std::get<0>(pools) != nullptr; + } + + /** + * @brief Checks if a view contains an entity. + * @param entt A valid identifier. + * @return True if the view contains the given entity, false otherwise. + */ + [[nodiscard]] bool contains(const entity_type entt) const noexcept { + return handle().contains(entt); + } + + /** + * @brief Returns the component assigned to the given entity. + * + * @warning + * Attempting to use an entity that doesn't belong to the view results in + * undefined behavior. + * + * @tparam Type Type or index of the component to get. + * @param entt A valid identifier. + * @return The component assigned to the entity. + */ + template + [[nodiscard]] decltype(auto) get(const entity_type entt) const { + if constexpr(sizeof...(Type) == 0) { + return storage().get_as_tuple(entt); + } else { + static_assert((std::is_same_v, typename Get::value_type> && ...), "Invalid component type"); + return storage().get(entt); + } + } + + /*! @copydoc get */ + template + [[nodiscard]] decltype(auto) get(const entity_type entt) const { + return storage().get(entt); + } + + /** + * @brief Iterates entities and components and applies the given function + * object to them. + * + * The function object is invoked for each entity. It is provided with the + * entity itself and a reference to the component if it's a non-empty one. + * The _constness_ of the component is as requested.
+ * The signature of the function must be equivalent to one of the following + * forms: + * + * @code{.cpp} + * void(const entity_type, Type &); + * void(typename Type &); + * @endcode + * + * @note + * Empty types aren't explicitly instantiated and therefore they are never + * returned during iterations. + * + * @tparam Func Type of the function object to invoke. + * @param func A valid function object. + */ + template + void each(Func func) const { + if constexpr(is_applicable_v) { + for(const auto pack: each()) { + std::apply(func, pack); + } + } else if constexpr(ignore_as_empty_v) { + for(size_type pos{}, last = size(); pos < last; ++pos) { + func(); + } + } else { + for(auto &&component: storage()) { + func(component); + } + } + } + + /** + * @brief Returns an iterable object to use to _visit_ a view. + * + * The iterable object returns a tuple that contains the current entity and + * a reference to its component if it's a non-empty one. The _constness_ of + * the component is as requested. + * + * @return An iterable object to use to _visit_ the view. + */ + [[nodiscard]] iterable each() const noexcept { + return storage().each(); + } + + /** + * @brief Combines two views in a _more specific_ one (friend function). + * @tparam OGet Component list of the view to combine with. + * @tparam OExclude Filter list of the view to combine with. + * @param other The view to combine with. + * @return A more specific view. + */ + template + [[nodiscard]] auto operator|(const basic_view, exclude_t> &other) const noexcept { + return std::make_from_tuple, exclude_t>>( + std::apply([](auto *...curr) { return std::forward_as_tuple(*curr...); }, std::tuple_cat(pools, other.pools, other.filter))); + } + +private: + std::tuple pools; + std::tuple<> filter; +}; + +/** + * @brief Deduction guide. + * @tparam Type Type of storage classes used to create the view. + * @param storage The storage for the types to iterate. + */ +template +basic_view(Type &...storage) -> basic_view, exclude_t<>>; + +/** + * @brief Deduction guide. + * @tparam Get Types of components iterated by the view. + * @tparam Exclude Types of components used to filter the view. + */ +template +basic_view(std::tuple, std::tuple = {}) -> basic_view, exclude_t>; + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/entt.hpp b/LiteLoader/third-party/include/entt/entt.hpp similarity index 73% rename from LiteLoader/Header/third-party/entt/entt.hpp rename to LiteLoader/third-party/include/entt/entt.hpp index 5248169..3544fb6 100644 --- a/LiteLoader/Header/third-party/entt/entt.hpp +++ b/LiteLoader/third-party/include/entt/entt.hpp @@ -1,11 +1,21 @@ +// IWYU pragma: begin_exports +#include "config/config.h" +#include "config/macro.h" #include "config/version.h" +#include "container/dense_map.hpp" +#include "container/dense_set.hpp" #include "core/algorithm.hpp" #include "core/any.hpp" #include "core/attribute.h" +#include "core/compressed_pair.hpp" +#include "core/enum.hpp" #include "core/family.hpp" #include "core/hashed_string.hpp" #include "core/ident.hpp" +#include "core/iterator.hpp" +#include "core/memory.hpp" #include "core/monostate.hpp" +#include "core/tuple.hpp" #include "core/type_info.hpp" #include "core/type_traits.hpp" #include "core/utility.hpp" @@ -16,18 +26,20 @@ #include "entity/helper.hpp" #include "entity/observer.hpp" #include "entity/organizer.hpp" -#include "entity/poly_storage.hpp" #include "entity/registry.hpp" #include "entity/runtime_view.hpp" #include "entity/snapshot.hpp" #include "entity/sparse_set.hpp" #include "entity/storage.hpp" -#include "entity/utility.hpp" +#include "entity/storage_mixin.hpp" #include "entity/view.hpp" +#include "graph/adjacency_matrix.hpp" +#include "graph/dot.hpp" +#include "graph/flow.hpp" #include "locator/locator.hpp" #include "meta/adl_pointer.hpp" #include "meta/container.hpp" -#include "meta/ctx.hpp" +#include "meta/context.hpp" #include "meta/factory.hpp" #include "meta/meta.hpp" #include "meta/node.hpp" @@ -43,9 +55,10 @@ #include "process/process.hpp" #include "process/scheduler.hpp" #include "resource/cache.hpp" -#include "resource/handle.hpp" #include "resource/loader.hpp" +#include "resource/resource.hpp" #include "signal/delegate.hpp" #include "signal/dispatcher.hpp" #include "signal/emitter.hpp" #include "signal/sigh.hpp" +// IWYU pragma: end_exports diff --git a/LiteLoader/third-party/include/entt/fwd.hpp b/LiteLoader/third-party/include/entt/fwd.hpp new file mode 100644 index 0000000..4b6e60c --- /dev/null +++ b/LiteLoader/third-party/include/entt/fwd.hpp @@ -0,0 +1,11 @@ +// IWYU pragma: begin_exports +#include "container/fwd.hpp" +#include "core/fwd.hpp" +#include "entity/fwd.hpp" +#include "graph/fwd.hpp" +#include "meta/fwd.hpp" +#include "poly/fwd.hpp" +#include "process/fwd.hpp" +#include "resource/fwd.hpp" +#include "signal/fwd.hpp" +// IWYU pragma: end_exports diff --git a/LiteLoader/third-party/include/entt/graph/adjacency_matrix.hpp b/LiteLoader/third-party/include/entt/graph/adjacency_matrix.hpp new file mode 100644 index 0000000..b0b0e25 --- /dev/null +++ b/LiteLoader/third-party/include/entt/graph/adjacency_matrix.hpp @@ -0,0 +1,348 @@ +#ifndef ENTT_GRAPH_ADJACENCY_MATRIX_HPP +#define ENTT_GRAPH_ADJACENCY_MATRIX_HPP + +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/iterator.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class edge_iterator { + using size_type = std::size_t; + +public: + using value_type = std::pair; + using pointer = input_iterator_pointer; + using reference = value_type; + using difference_type = std::ptrdiff_t; + using iterator_category = std::input_iterator_tag; + + constexpr edge_iterator() noexcept + : it{}, + vert{}, + pos{}, + last{}, + offset{} {} + + constexpr edge_iterator(It base, const size_type vertices, const size_type from, const size_type to, const size_type step) noexcept + : it{std::move(base)}, + vert{vertices}, + pos{from}, + last{to}, + offset{step} { + for(; pos != last && !it[pos]; pos += offset) {} + } + + constexpr edge_iterator &operator++() noexcept { + for(pos += offset; pos != last && !it[pos]; pos += offset) {} + return *this; + } + + constexpr edge_iterator operator++(int) noexcept { + edge_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return *operator->(); + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return std::make_pair(pos / vert, pos % vert); + } + + template + friend constexpr bool operator==(const edge_iterator &, const edge_iterator &) noexcept; + +private: + It it; + size_type vert; + size_type pos; + size_type last; + size_type offset{}; +}; + +template +[[nodiscard]] inline constexpr bool operator==(const edge_iterator &lhs, const edge_iterator &rhs) noexcept { + return lhs.pos == rhs.pos; +} + +template +[[nodiscard]] inline constexpr bool operator!=(const edge_iterator &lhs, const edge_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Basic implementation of a directed adjacency matrix. + * @tparam Category Either a directed or undirected category tag. + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class adjacency_matrix { + using alloc_traits = std::allocator_traits; + static_assert(std::is_base_of_v, "Invalid graph category"); + static_assert(std::is_same_v, "Invalid value type"); + using container_type = std::vector>; + +public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Vertex type. */ + using vertex_type = size_type; + /*! @brief Edge type. */ + using edge_type = std::pair; + /*! @brief Vertex iterator type. */ + using vertex_iterator = iota_iterator; + /*! @brief Edge iterator type. */ + using edge_iterator = internal::edge_iterator; + /*! @brief Out edge iterator type. */ + using out_edge_iterator = edge_iterator; + /*! @brief In edge iterator type. */ + using in_edge_iterator = edge_iterator; + /*! @brief Graph category tag. */ + using graph_category = Category; + + /*! @brief Default constructor. */ + adjacency_matrix() noexcept(noexcept(allocator_type{})) + : adjacency_matrix{0u} {} + + /** + * @brief Constructs an empty container with a given allocator. + * @param allocator The allocator to use. + */ + explicit adjacency_matrix(const allocator_type &allocator) noexcept + : adjacency_matrix{0u, allocator} {} + + /** + * @brief Constructs an empty container with a given allocator and user + * supplied number of vertices. + * @param vertices Number of vertices. + * @param allocator The allocator to use. + */ + adjacency_matrix(const size_type vertices, const allocator_type &allocator = allocator_type{}) + : matrix{vertices * vertices, allocator}, + vert{vertices} {} + + /** + * @brief Copy constructor. + * @param other The instance to copy from. + */ + adjacency_matrix(const adjacency_matrix &other) + : adjacency_matrix{other, other.get_allocator()} {} + + /** + * @brief Allocator-extended copy constructor. + * @param other The instance to copy from. + * @param allocator The allocator to use. + */ + adjacency_matrix(const adjacency_matrix &other, const allocator_type &allocator) + : matrix{other.matrix, allocator}, + vert{other.vert} {} + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + adjacency_matrix(adjacency_matrix &&other) noexcept + : adjacency_matrix{std::move(other), other.get_allocator()} {} + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + adjacency_matrix(adjacency_matrix &&other, const allocator_type &allocator) + : matrix{std::move(other.matrix), allocator}, + vert{std::exchange(other.vert, 0u)} {} + + /** + * @brief Default copy assignment operator. + * @param other The instance to copy from. + * @return This container. + */ + adjacency_matrix &operator=(const adjacency_matrix &other) { + matrix = other.matrix; + vert = other.vert; + return *this; + } + + /** + * @brief Default move assignment operator. + * @param other The instance to move from. + * @return This container. + */ + adjacency_matrix &operator=(adjacency_matrix &&other) noexcept { + matrix = std::move(other.matrix); + vert = std::exchange(other.vert, 0u); + return *this; + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return matrix.get_allocator(); + } + + /*! @brief Clears the adjacency matrix. */ + void clear() noexcept { + matrix.clear(); + vert = {}; + } + + /** + * @brief Exchanges the contents with those of a given adjacency matrix. + * @param other Adjacency matrix to exchange the content with. + */ + void swap(adjacency_matrix &other) { + using std::swap; + swap(matrix, other.matrix); + swap(vert, other.vert); + } + + /** + * @brief Returns the number of vertices. + * @return The number of vertices. + */ + [[nodiscard]] size_type size() const noexcept { + return vert; + } + + /** + * @brief Returns an iterable object to visit all vertices of a matrix. + * @return An iterable object to visit all vertices of a matrix. + */ + [[nodiscard]] iterable_adaptor vertices() const noexcept { + return {0u, vert}; + } + + /** + * @brief Returns an iterable object to visit all edges of a matrix. + * @return An iterable object to visit all edges of a matrix. + */ + [[nodiscard]] iterable_adaptor edges() const noexcept { + const auto it = matrix.cbegin(); + const auto sz = matrix.size(); + return {{it, vert, 0u, sz, 1u}, {it, vert, sz, sz, 1u}}; + } + + /** + * @brief Returns an iterable object to visit all out edges of a vertex. + * @param vertex The vertex of which to return all out edges. + * @return An iterable object to visit all out edges of a vertex. + */ + [[nodiscard]] iterable_adaptor out_edges(const vertex_type vertex) const noexcept { + const auto it = matrix.cbegin(); + const auto from = vertex * vert; + const auto to = vertex * vert + vert; + return {{it, vert, from, to, 1u}, {it, vert, to, to, 1u}}; + } + + /** + * @brief Returns an iterable object to visit all in edges of a vertex. + * @param vertex The vertex of which to return all in edges. + * @return An iterable object to visit all in edges of a vertex. + */ + [[nodiscard]] iterable_adaptor in_edges(const vertex_type vertex) const noexcept { + const auto it = matrix.cbegin(); + const auto from = vertex; + const auto to = vert * (vert - 1u) + vertex; + return {{it, vert, from, to, vert}, {it, vert, to, to, vert}}; + } + + /** + * @brief Resizes an adjacency matrix. + * @param vertices The new number of vertices. + */ + void resize(const size_type vertices) { + adjacency_matrix other{vertices, get_allocator()}; + + for(auto [lhs, rhs]: edges()) { + other.insert(lhs, rhs); + } + + other.swap(*this); + } + + /** + * @brief Inserts an edge into the adjacency matrix, if it does not exist. + * @param lhs The left hand vertex of the edge. + * @param rhs The right hand vertex of the edge. + * @return A pair consisting of an iterator to the inserted element (or to + * the element that prevented the insertion) and a bool denoting whether the + * insertion took place. + */ + std::pair insert(const vertex_type lhs, const vertex_type rhs) { + const auto pos = lhs * vert + rhs; + + if constexpr(std::is_same_v) { + const auto rev = rhs * vert + lhs; + ENTT_ASSERT(matrix[pos] == matrix[rev], "Something went really wrong"); + matrix[rev] = 1u; + } + + const auto inserted = !std::exchange(matrix[pos], 1u); + return {edge_iterator{matrix.cbegin(), vert, pos, matrix.size(), 1u}, inserted}; + } + + /** + * @brief Removes the edge associated with a pair of given vertices. + * @param lhs The left hand vertex of the edge. + * @param rhs The right hand vertex of the edge. + * @return Number of elements removed (either 0 or 1). + */ + size_type erase(const vertex_type lhs, const vertex_type rhs) { + const auto pos = lhs * vert + rhs; + + if constexpr(std::is_same_v) { + const auto rev = rhs * vert + lhs; + ENTT_ASSERT(matrix[pos] == matrix[rev], "Something went really wrong"); + matrix[rev] = 0u; + } + + return std::exchange(matrix[pos], 0u); + } + + /** + * @brief Checks if an adjacency matrix contains a given edge. + * @param lhs The left hand vertex of the edge. + * @param rhs The right hand vertex of the edge. + * @return True if there is such an edge, false otherwise. + */ + [[nodiscard]] bool contains(const vertex_type lhs, const vertex_type rhs) const { + const auto pos = lhs * vert + rhs; + return pos < matrix.size() && matrix[pos]; + } + +private: + container_type matrix; + size_type vert; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/graph/dot.hpp b/LiteLoader/third-party/include/entt/graph/dot.hpp new file mode 100644 index 0000000..1da13e8 --- /dev/null +++ b/LiteLoader/third-party/include/entt/graph/dot.hpp @@ -0,0 +1,58 @@ +#ifndef ENTT_GRAPH_DOT_HPP +#define ENTT_GRAPH_DOT_HPP + +#include +#include +#include "fwd.hpp" + +namespace entt { + +/** + * @brief Outputs a graph in dot format. + * @tparam Graph Graph type, valid as long as it exposes edges and vertices. + * @tparam Writer Vertex decorator type. + * @param out A standard output stream. + * @param graph The graph to output. + * @param writer Vertex decorator object. + */ +template +void dot(std::ostream &out, const Graph &graph, Writer writer) { + static_assert(std::is_base_of_v, "Invalid graph category"); + + if constexpr(std::is_same_v) { + out << "graph{"; + } else { + out << "digraph{"; + } + + for(auto &&vertex: graph.vertices()) { + out << vertex << "["; + writer(out, vertex); + out << "];"; + } + + for(auto [lhs, rhs]: graph.edges()) { + if constexpr(std::is_same_v) { + out << lhs << "--" << rhs << ";"; + } else { + out << lhs << "->" << rhs << ";"; + } + } + + out << "}"; +} + +/** + * @brief Outputs a graph in dot format. + * @tparam Graph Graph type, valid as long as it exposes edges and vertices. + * @param out A standard output stream. + * @param graph The graph to output. + */ +template +void dot(std::ostream &out, const Graph &graph) { + return dot(out, graph, [](auto &&...) {}); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/graph/flow.hpp b/LiteLoader/third-party/include/entt/graph/flow.hpp new file mode 100644 index 0000000..d121f50 --- /dev/null +++ b/LiteLoader/third-party/include/entt/graph/flow.hpp @@ -0,0 +1,327 @@ +#ifndef ENTT_GRAPH_FLOW_HPP +#define ENTT_GRAPH_FLOW_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../container/dense_map.hpp" +#include "../container/dense_set.hpp" +#include "../core/compressed_pair.hpp" +#include "../core/fwd.hpp" +#include "../core/iterator.hpp" +#include "../core/utility.hpp" +#include "adjacency_matrix.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @brief Utility class for creating task graphs. + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class basic_flow { + using alloc_traits = std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using task_container_type = dense_set, typename alloc_traits::template rebind_alloc>; + using ro_rw_container_type = std::vector, typename alloc_traits::template rebind_alloc>>; + using deps_container_type = dense_map, typename alloc_traits::template rebind_alloc>>; + + void emplace(const id_type res, const bool is_rw) { + ENTT_ASSERT(index.first() < vertices.size(), "Invalid node"); + + if(!deps.contains(res) && sync_on != vertices.size()) { + deps[res].emplace_back(sync_on, true); + } + + deps[res].emplace_back(index.first(), is_rw); + } + +public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Iterable task list. */ + using iterable = iterable_adaptor; + + /*! @brief Default constructor. */ + basic_flow() + : basic_flow{allocator_type{}} {} + + /** + * @brief Constructs a flow builder with a given allocator. + * @param allocator The allocator to use. + */ + explicit basic_flow(const allocator_type &allocator) + : index{0u, allocator}, + vertices{}, + deps{}, + sync_on{} {} + + /*! @brief Default copy constructor. */ + basic_flow(const basic_flow &) = default; + + /** + * @brief Allocator-extended copy constructor. + * @param other The instance to copy from. + * @param allocator The allocator to use. + */ + basic_flow(const basic_flow &other, const allocator_type &allocator) + : index{other.index.first(), allocator}, + vertices{other.vertices, allocator}, + deps{other.deps, allocator}, + sync_on{other.sync_on} {} + + /*! @brief Default move constructor. */ + basic_flow(basic_flow &&) noexcept = default; + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + basic_flow(basic_flow &&other, const allocator_type &allocator) + : index{other.index.first(), allocator}, + vertices{std::move(other.vertices), allocator}, + deps{std::move(other.deps), allocator}, + sync_on{other.sync_on} {} + + /** + * @brief Default copy assignment operator. + * @return This flow builder. + */ + basic_flow &operator=(const basic_flow &) = default; + + /** + * @brief Default move assignment operator. + * @return This flow builder. + */ + basic_flow &operator=(basic_flow &&) noexcept = default; + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return allocator_type{index.second()}; + } + + /** + * @brief Returns the identifier at specified location. + * @param pos Position of the identifier to return. + * @return The requested identifier. + */ + [[nodiscard]] id_type operator[](const size_type pos) const { + return vertices.cbegin()[pos]; + } + + /*! @brief Clears the flow builder. */ + void clear() noexcept { + index.first() = sync_on = {}; + vertices.clear(); + deps.clear(); + } + + /** + * @brief Exchanges the contents with those of a given flow builder. + * @param other Flow builder to exchange the content with. + */ + void swap(basic_flow &other) { + using std::swap; + std::swap(index, other.index); + std::swap(vertices, other.vertices); + std::swap(deps, other.deps); + std::swap(sync_on, other.sync_on); + } + + /** + * @brief Returns the number of tasks. + * @return The number of tasks. + */ + [[nodiscard]] size_type size() const noexcept { + return vertices.size(); + } + + /** + * @brief Binds a task to a flow builder. + * @param value Task identifier. + * @return This flow builder. + */ + basic_flow &bind(const id_type value) { + sync_on += (sync_on == vertices.size()); + const auto it = vertices.emplace(value).first; + index.first() = size_type(it - vertices.begin()); + return *this; + } + + /** + * @brief Turns the current task into a sync point. + * @return This flow builder. + */ + basic_flow &sync() { + ENTT_ASSERT(index.first() < vertices.size(), "Invalid node"); + sync_on = index.first(); + + for(const auto &elem: deps) { + elem.second.emplace_back(sync_on, true); + } + + return *this; + } + + /** + * @brief Assigns a resource to the current task with a given access mode. + * @param res Resource identifier. + * @param is_rw Access mode. + * @return This flow builder. + */ + basic_flow &set(const id_type res, bool is_rw = false) { + emplace(res, is_rw); + return *this; + } + + /** + * @brief Assigns a read-only resource to the current task. + * @param res Resource identifier. + * @return This flow builder. + */ + basic_flow &ro(const id_type res) { + emplace(res, false); + return *this; + } + + /** + * @brief Assigns a range of read-only resources to the current task. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of elements. + * @param last An iterator past the last element of the range of elements. + * @return This flow builder. + */ + template + std::enable_if_t::value_type>, id_type>, basic_flow &> + ro(It first, It last) { + for(; first != last; ++first) { + emplace(*first, false); + } + + return *this; + } + + /** + * @brief Assigns a writable resource to the current task. + * @param res Resource identifier. + * @return This flow builder. + */ + basic_flow &rw(const id_type res) { + emplace(res, true); + return *this; + } + + /** + * @brief Assigns a range of writable resources to the current task. + * @tparam It Type of input iterator. + * @param first An iterator to the first element of the range of elements. + * @param last An iterator past the last element of the range of elements. + * @return This flow builder. + */ + template + std::enable_if_t::value_type>, id_type>, basic_flow &> + rw(It first, It last) { + for(; first != last; ++first) { + emplace(*first, true); + } + + return *this; + } + + /** + * @brief Generates a task graph for the current content. + * @return The adjacency matrix of the task graph. + */ + [[nodiscard]] adjacency_matrix graph() const { + const auto length = vertices.size(); + adjacency_matrix matrix{length}; + + // creates the adjacency matrix + for(const auto &elem: deps) { + const auto last = elem.second.cend(); + auto it = elem.second.cbegin(); + + while(it != last) { + if(it->second) { + // rw item + if(auto curr = it++; it != last) { + if(it->second) { + matrix.insert(curr->first, it->first); + } else if(const auto next = std::find_if(it, last, [](const auto &value) { return value.second; }); next != last) { + for(; it != next; ++it) { + matrix.insert(curr->first, it->first); + matrix.insert(it->first, next->first); + } + } else { + for(; it != next; ++it) { + matrix.insert(curr->first, it->first); + } + } + } + } else { + // ro item (first iteration only) + if(const auto next = std::find_if(it, last, [](const auto &value) { return value.second; }); next != last) { + for(; it != next; ++it) { + matrix.insert(it->first, next->first); + } + } else { + it = last; + } + } + } + } + + // computes the transitive closure + for(std::size_t vk{}; vk < length; ++vk) { + for(std::size_t vi{}; vi < length; ++vi) { + for(std::size_t vj{}; vj < length; ++vj) { + if(matrix.contains(vi, vk) && matrix.contains(vk, vj)) { + matrix.insert(vi, vj); + } + } + } + } + + // applies the transitive reduction + for(std::size_t vert{}; vert < length; ++vert) { + matrix.erase(vert, vert); + } + + for(std::size_t vj{}; vj < length; ++vj) { + for(std::size_t vi{}; vi < length; ++vi) { + if(matrix.contains(vi, vj)) { + for(std::size_t vk{}; vk < length; ++vk) { + if(matrix.contains(vj, vk)) { + matrix.erase(vi, vk); + } + } + } + } + } + + return matrix; + } + +private: + compressed_pair index; + task_container_type vertices; + deps_container_type deps; + size_type sync_on; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/graph/fwd.hpp b/LiteLoader/third-party/include/entt/graph/fwd.hpp new file mode 100644 index 0000000..963082f --- /dev/null +++ b/LiteLoader/third-party/include/entt/graph/fwd.hpp @@ -0,0 +1,27 @@ +#ifndef ENTT_GRAPH_FWD_HPP +#define ENTT_GRAPH_FWD_HPP + +#include +#include +#include "../core/fwd.hpp" + +namespace entt { + +/*! @brief Undirected graph category tag. */ +struct directed_tag {}; + +/*! @brief Directed graph category tag. */ +struct undirected_tag: directed_tag {}; + +template> +class adjacency_matrix; + +template> +class basic_flow; + +/*! @brief Alias declaration for the most common use case. */ +using flow = basic_flow<>; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/locator/locator.hpp b/LiteLoader/third-party/include/entt/locator/locator.hpp new file mode 100644 index 0000000..e33377a --- /dev/null +++ b/LiteLoader/third-party/include/entt/locator/locator.hpp @@ -0,0 +1,135 @@ +#ifndef ENTT_LOCATOR_LOCATOR_HPP +#define ENTT_LOCATOR_LOCATOR_HPP + +#include +#include +#include "../config/config.h" + +namespace entt { + +/** + * @brief Service locator, nothing more. + * + * A service locator is used to do what it promises: locate services.
+ * Usually service locators are tightly bound to the services they expose and + * thus it's hard to define a general purpose class to do that. This tiny class + * tries to fill the gap and to get rid of the burden of defining a different + * specific locator for each application. + * + * @note + * Users shouldn't retain references to a service. The recommended way is to + * retrieve the service implementation currently set each and every time the + * need for it arises. The risk is to incur in unexpected behaviors otherwise. + * + * @tparam Service Service type. + */ +template +class locator final { + class service_handle { + friend class locator; + std::shared_ptr value{}; + }; + +public: + /*! @brief Service type. */ + using type = Service; + /*! @brief Service node type. */ + using node_type = service_handle; + + /*! @brief Default constructor, deleted on purpose. */ + locator() = delete; + /*! @brief Default destructor, deleted on purpose. */ + ~locator() = delete; + + /** + * @brief Checks whether a service locator contains a value. + * @return True if the service locator contains a value, false otherwise. + */ + [[nodiscard]] static bool has_value() noexcept { + return (service != nullptr); + } + + /** + * @brief Returns a reference to a valid service, if any. + * + * @warning + * Invoking this function can result in undefined behavior if the service + * hasn't been set yet. + * + * @return A reference to the service currently set, if any. + */ + [[nodiscard]] static Service &value() noexcept { + ENTT_ASSERT(has_value(), "Service not available"); + return *service; + } + + /** + * @brief Returns a service if available or sets it from a fallback type. + * + * Arguments are used only if a service doesn't already exist. In all other + * cases, they are discarded. + * + * @tparam Args Types of arguments to use to construct the fallback service. + * @tparam Impl Fallback service type. + * @param args Parameters to use to construct the fallback service. + * @return A reference to a valid service. + */ + template + [[nodiscard]] static Service &value_or(Args &&...args) { + return service ? *service : emplace(std::forward(args)...); + } + + /** + * @brief Sets or replaces a service. + * @tparam Impl Service type. + * @tparam Args Types of arguments to use to construct the service. + * @param args Parameters to use to construct the service. + * @return A reference to a valid service. + */ + template + static Service &emplace(Args &&...args) { + service = std::make_shared(std::forward(args)...); + return *service; + } + + /** + * @brief Sets or replaces a service using a given allocator. + * @tparam Impl Service type. + * @tparam Allocator Type of allocator used to manage memory and elements. + * @tparam Args Types of arguments to use to construct the service. + * @param alloc The allocator to use. + * @param args Parameters to use to construct the service. + * @return A reference to a valid service. + */ + template + static Service &allocate_emplace(Allocator alloc, Args &&...args) { + service = std::allocate_shared(alloc, std::forward(args)...); + return *service; + } + + /** + * @brief Returns a handle to the underlying service. + * @return A handle to the underlying service. + */ + static node_type handle() noexcept { + node_type node{}; + node.value = service; + return node; + } + + /** + * @brief Resets or replaces a service. + * @param other Optional handle with which to replace the service. + */ + static void reset(const node_type &other = {}) noexcept { + service = other.value; + } + +private: + // std::shared_ptr because of its type erased allocator which is useful here + inline static std::shared_ptr service{}; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/meta/adl_pointer.hpp b/LiteLoader/third-party/include/entt/meta/adl_pointer.hpp similarity index 97% rename from LiteLoader/Header/third-party/entt/meta/adl_pointer.hpp rename to LiteLoader/third-party/include/entt/meta/adl_pointer.hpp index 39e747b..5bb768a 100644 --- a/LiteLoader/Header/third-party/entt/meta/adl_pointer.hpp +++ b/LiteLoader/third-party/include/entt/meta/adl_pointer.hpp @@ -1,10 +1,8 @@ #ifndef ENTT_META_ADL_POINTER_HPP #define ENTT_META_ADL_POINTER_HPP - namespace entt { - /** * @brief ADL based lookup function for dereferencing meta pointer-like types. * @tparam Type Element type. @@ -16,7 +14,6 @@ decltype(auto) dereference_meta_pointer_like(const Type &value) { return *value; } - /** * @brief Fake ADL based lookup function for meta pointer-like types. * @tparam Type Element type. @@ -33,8 +30,6 @@ struct adl_meta_pointer_like { } }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/meta/container.hpp b/LiteLoader/third-party/include/entt/meta/container.hpp new file mode 100644 index 0000000..dc8a173 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/container.hpp @@ -0,0 +1,247 @@ +#ifndef ENTT_META_CONTAINER_HPP +#define ENTT_META_CONTAINER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../container/dense_map.hpp" +#include "../container/dense_set.hpp" +#include "context.hpp" +#include "meta.hpp" +#include "type_traits.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct is_dynamic_sequence_container: std::false_type {}; + +template +struct is_dynamic_sequence_container>: std::true_type {}; + +template +struct is_key_only_meta_associative_container: std::true_type {}; + +template +struct is_key_only_meta_associative_container>: std::false_type {}; + +template +struct basic_meta_sequence_container_traits { + using iterator = meta_sequence_container::iterator; + using size_type = std::size_t; + + [[nodiscard]] static size_type size(const any &container) noexcept { + return any_cast(container).size(); + } + + [[nodiscard]] static bool resize([[maybe_unused]] any &container, [[maybe_unused]] size_type sz) { + if constexpr(is_dynamic_sequence_container::value) { + if(auto *const cont = any_cast(&container); cont) { + cont->resize(sz); + return true; + } + } + + return false; + } + + [[nodiscard]] static iterator iter(const meta_ctx &ctx, any &container, const bool as_end) { + if(auto *const cont = any_cast(&container); cont) { + return iterator{ctx, as_end ? cont->end() : cont->begin()}; + } + + const Type &as_const = any_cast(container); + return iterator{ctx, as_end ? as_const.end() : as_const.begin()}; + } + + [[nodiscard]] static iterator insert_or_erase([[maybe_unused]] const meta_ctx &ctx, [[maybe_unused]] any &container, [[maybe_unused]] const any &handle, [[maybe_unused]] meta_any &value) { + if constexpr(is_dynamic_sequence_container::value) { + if(auto *const cont = any_cast(&container); cont) { + typename Type::const_iterator it{}; + + if(auto *non_const = any_cast(&handle); non_const) { + it = *non_const; + } else { + it = any_cast(handle); + } + + if(value) { + // this abomination is necessary because only on macos value_type and const_reference are different types for std::vector + if(value.allow_cast() || value.allow_cast()) { + const auto *element = value.try_cast>(); + return iterator{ctx, cont->insert(it, element ? *element : value.cast())}; + } + } else { + return iterator{ctx, cont->erase(it)}; + } + } + } + + return iterator{}; + } +}; + +template +struct basic_meta_associative_container_traits { + using iterator = meta_associative_container::iterator; + using size_type = std::size_t; + + static constexpr auto key_only = is_key_only_meta_associative_container::value; + + [[nodiscard]] static size_type size(const any &container) noexcept { + return any_cast(container).size(); + } + + [[nodiscard]] static bool clear(any &container) { + if(auto *const cont = any_cast(&container); cont) { + cont->clear(); + return true; + } + + return false; + } + + [[nodiscard]] static iterator iter(const meta_ctx &ctx, any &container, const bool as_end) { + if(auto *const cont = any_cast(&container); cont) { + return iterator{ctx, std::bool_constant{}, as_end ? cont->end() : cont->begin()}; + } + + const auto &as_const = any_cast(container); + return iterator{ctx, std::bool_constant{}, as_end ? as_const.end() : as_const.begin()}; + } + + [[nodiscard]] static size_type insert_or_erase(any &container, meta_any &key, meta_any &value) { + if(auto *const cont = any_cast(&container); cont && key.allow_cast()) { + if(value) { + if constexpr(key_only) { + return cont->insert(key.cast()).second; + } else { + return value.allow_cast() && cont->emplace(key.cast(), value.cast()).second; + } + } else { + return cont->erase(key.cast()); + } + } + + return 0u; + } + + [[nodiscard]] static iterator find(const meta_ctx &ctx, any &container, meta_any &key) { + if(key.allow_cast()) { + if(auto *const cont = any_cast(&container); cont) { + return iterator{ctx, std::bool_constant{}, cont->find(key.cast())}; + } + + return iterator{ctx, std::bool_constant{}, any_cast(container).find(key.cast())}; + } + + return iterator{}; + } +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Meta sequence container traits for `std::vector`s of any type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_sequence_container_traits> + : internal::basic_meta_sequence_container_traits> {}; + +/** + * @brief Meta sequence container traits for `std::array`s of any type. + * @tparam Type Template arguments for the container. + * @tparam N Template arguments for the container. + */ +template +struct meta_sequence_container_traits> + : internal::basic_meta_sequence_container_traits> {}; + +/** + * @brief Meta sequence container traits for `std::list`s of any type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_sequence_container_traits> + : internal::basic_meta_sequence_container_traits> {}; + +/** + * @brief Meta sequence container traits for `std::deque`s of any type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_sequence_container_traits> + : internal::basic_meta_sequence_container_traits> {}; + +/** + * @brief Meta associative container traits for `std::map`s of any type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_associative_container_traits> + : internal::basic_meta_associative_container_traits> {}; + +/** + * @brief Meta associative container traits for `std::unordered_map`s of any + * type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_associative_container_traits> + : internal::basic_meta_associative_container_traits> {}; + +/** + * @brief Meta associative container traits for `std::set`s of any type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_associative_container_traits> + : internal::basic_meta_associative_container_traits> {}; + +/** + * @brief Meta associative container traits for `std::unordered_set`s of any + * type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_associative_container_traits> + : internal::basic_meta_associative_container_traits> {}; + +/** + * @brief Meta associative container traits for `dense_map`s of any type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_associative_container_traits> + : internal::basic_meta_associative_container_traits> {}; + +/** + * @brief Meta associative container traits for `dense_set`s of any type. + * @tparam Args Template arguments for the container. + */ +template +struct meta_associative_container_traits> + : internal::basic_meta_associative_container_traits> {}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/meta/context.hpp b/LiteLoader/third-party/include/entt/meta/context.hpp new file mode 100644 index 0000000..d9ea622 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/context.hpp @@ -0,0 +1,67 @@ +#ifndef ENTT_META_CTX_HPP +#define ENTT_META_CTX_HPP + +#include "../container/dense_map.hpp" +#include "../core/fwd.hpp" +#include "../core/utility.hpp" + +namespace entt { + +class meta_ctx; + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +struct meta_type_node; + +struct meta_context { + dense_map value{}; + + static inline meta_context &from(meta_ctx &ctx); + static inline const meta_context &from(const meta_ctx &ctx); +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/*! @brief Disambiguation tag for constructors and the like. */ +class meta_ctx_arg_t final {}; + +/*! @brief Constant of type meta_context_arg_t used to disambiguate calls. */ +inline constexpr meta_ctx_arg_t meta_ctx_arg{}; + +/*! @brief Opaque meta context type. */ +class meta_ctx: private internal::meta_context { + /*! @brief Attorney idiom like model to access the base class. */ + friend struct internal::meta_context; +}; + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +inline internal::meta_context &internal::meta_context::from(meta_ctx &ctx) { + return ctx; +} + +inline const internal::meta_context &internal::meta_context::from(const meta_ctx &ctx) { + return ctx; +} + +/** + * Internal details not to be documented. + * @endcond + */ + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/meta/factory.hpp b/LiteLoader/third-party/include/entt/meta/factory.hpp new file mode 100644 index 0000000..b548ec8 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/factory.hpp @@ -0,0 +1,643 @@ +#ifndef ENTT_META_FACTORY_HPP +#define ENTT_META_FACTORY_HPP + +#include +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/fwd.hpp" +#include "../core/type_info.hpp" +#include "../core/type_traits.hpp" +#include "../locator/locator.hpp" +#include "context.hpp" +#include "meta.hpp" +#include "node.hpp" +#include "policy.hpp" +#include "range.hpp" +#include "resolve.hpp" +#include "utility.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +inline decltype(auto) owner(meta_ctx &ctx, const type_info &info) { + auto &&context = internal::meta_context::from(ctx); + ENTT_ASSERT(context.value.contains(info.hash()), "Type not available"); + return context.value[info.hash()]; +} + +inline meta_base_node &meta_extend(internal::meta_type_node &parent, const id_type id, meta_base_node node) { + return parent.details->base.insert_or_assign(id, std::move(node)).first->second; +} + +inline meta_conv_node &meta_extend(internal::meta_type_node &parent, const id_type id, meta_conv_node node) { + return parent.details->conv.insert_or_assign(id, std::move(node)).first->second; +} + +inline meta_ctor_node &meta_extend(internal::meta_type_node &parent, const id_type id, meta_ctor_node node) { + return parent.details->ctor.insert_or_assign(id, std::move(node)).first->second; +} + +inline meta_dtor_node &meta_extend(internal::meta_type_node &parent, meta_dtor_node node) { + return (parent.dtor = std::move(node)); +} + +inline meta_data_node &meta_extend(internal::meta_type_node &parent, const id_type id, meta_data_node node) { + return parent.details->data.insert_or_assign(id, std::move(node)).first->second; +} + +inline meta_func_node &meta_extend(internal::meta_type_node &parent, const id_type id, meta_func_node node) { + if(auto it = parent.details->func.find(id); it != parent.details->func.end()) { + for(auto *curr = &it->second; curr; curr = curr->next.get()) { + if(curr->invoke == node.invoke) { + node.next = std::move(curr->next); + *curr = std::move(node); + return *curr; + } + } + + // locally overloaded function + node.next = std::make_shared(std::move(parent.details->func[id])); + } + + return parent.details->func.insert_or_assign(id, std::move(node)).first->second; +} + +inline meta_prop_node &meta_extend(dense_map &prop, const id_type id, meta_prop_node node) { + return (prop[id] = std::move(node)); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Basic meta factory to be used for reflection purposes. + * @tparam Type Reflected type for which the factory was created. + */ +template +class meta_factory { + template + void data(const id_type id, std::index_sequence) noexcept { + using data_type = std::invoke_result_t; + using args_type = type_list)>::args_type...>; + static_assert(Policy::template value, "Invalid return type for the given policy"); + + auto &&elem = internal::meta_extend( + internal::owner(*ctx, *info), + id, + internal::meta_data_node{ + /* this is never static */ + (std::is_member_object_pointer_v)> && ... && std::is_const_v>) ? internal::meta_traits::is_const : internal::meta_traits::is_none, + Setter::size, + &internal::resolve>>, + &meta_arg::size != 1u, type_list_element_t>...>>, + +[](meta_handle instance, meta_any value) { return (meta_setter>(*instance.operator->(), value.as_ref()) || ...); }, + &meta_getter}); + + bucket = &elem.prop; + } + +public: + /*! @brief Default constructor. */ + meta_factory() noexcept + : meta_factory{locator::value_or()} {} + + /** + * @brief Context aware constructor. + * @param area The context into which to construct meta types. + */ + meta_factory(meta_ctx &area) noexcept + : ctx{&area}, + bucket{}, + info{&type_id()} { + auto &&elem = internal::owner(*ctx, *info); + + if(!elem.details) { + elem.details = std::make_shared(); + } + + bucket = &elem.details->prop; + } + + /** + * @brief Assigns a custom unique identifier to a meta type. + * @param id A custom unique identifier. + * @return An extended meta factory for the given type. + */ + auto type(const id_type id) noexcept { + auto &&elem = internal::owner(*ctx, *info); + ENTT_ASSERT(elem.id == id || !resolve(*ctx, id), "Duplicate identifier"); + bucket = &elem.details->prop; + elem.id = id; + return *this; + } + + /** + * @brief Assigns a meta base to a meta type. + * + * A reflected base class must be a real base class of the reflected type. + * + * @tparam Base Type of the base class to assign to the meta type. + * @return A meta factory for the parent type. + */ + template + auto base() noexcept { + static_assert(!std::is_same_v && std::is_base_of_v, "Invalid base type"); + + internal::meta_extend( + internal::owner(*ctx, *info), + type_id().hash(), + internal::meta_base_node{ + &internal::resolve, + +[](const void *instance) noexcept { + return static_cast(static_cast(static_cast(instance))); + }}); + + bucket = nullptr; + return *this; + } + + /** + * @brief Assigns a meta conversion function to a meta type. + * + * Conversion functions can be either free functions or member + * functions.
+ * In case of free functions, they must accept a const reference to an + * instance of the parent type as an argument. In case of member functions, + * they should have no arguments at all. + * + * @tparam Candidate The actual function to use for the conversion. + * @return A meta factory for the parent type. + */ + template + auto conv() noexcept { + using conv_type = std::remove_cv_t>>; + + internal::meta_extend( + internal::owner(*ctx, *info), + type_id().hash(), + internal::meta_conv_node{ + +[](const meta_ctx &area, const void *instance) { + return forward_as_meta(area, std::invoke(Candidate, *static_cast(instance))); + }}); + + bucket = nullptr; + return *this; + } + + /** + * @brief Assigns a meta conversion function to a meta type. + * + * The given type must be such that an instance of the reflected type can be + * converted to it. + * + * @tparam To Type of the conversion function to assign to the meta type. + * @return A meta factory for the parent type. + */ + template + auto conv() noexcept { + using conv_type = std::remove_cv_t>; + + internal::meta_extend( + internal::owner(*ctx, *info), + type_id().hash(), + internal::meta_conv_node{ + +[](const meta_ctx &area, const void *instance) { + return forward_as_meta(area, static_cast(*static_cast(instance))); + }}); + + bucket = nullptr; + return *this; + } + + /** + * @brief Assigns a meta constructor to a meta type. + * + * Both member functions and free function can be assigned to meta types in + * the role of constructors. All that is required is that they return an + * instance of the underlying type.
+ * From a client's point of view, nothing changes if a constructor of a meta + * type is a built-in one or not. + * + * @tparam Candidate The actual function to use as a constructor. + * @tparam Policy Optional policy (no policy set by default). + * @return An extended meta factory for the parent type. + */ + template + auto ctor() noexcept { + using descriptor = meta_function_helper_t; + static_assert(Policy::template value, "Invalid return type for the given policy"); + static_assert(std::is_same_v>, Type>, "The function doesn't return an object of the required type"); + + internal::meta_extend( + internal::owner(*ctx, *info), + type_id().hash(), + internal::meta_ctor_node{ + descriptor::args_type::size, + &meta_arg, + &meta_construct}); + + bucket = nullptr; + return *this; + } + + /** + * @brief Assigns a meta constructor to a meta type. + * + * A meta constructor is uniquely identified by the types of its arguments + * and is such that there exists an actual constructor of the underlying + * type that can be invoked with parameters whose types are those given. + * + * @tparam Args Types of arguments to use to construct an instance. + * @return An extended meta factory for the parent type. + */ + template + auto ctor() noexcept { + // default constructor is already implicitly generated, no need for redundancy + if constexpr(sizeof...(Args) != 0u) { + using descriptor = meta_function_helper_t; + + internal::meta_extend( + internal::owner(*ctx, *info), + type_id().hash(), + internal::meta_ctor_node{ + descriptor::args_type::size, + &meta_arg, + &meta_construct}); + } + + bucket = nullptr; + return *this; + } + + /** + * @brief Assigns a meta destructor to a meta type. + * + * Both free functions and member functions can be assigned to meta types in + * the role of destructors.
+ * The signature of a free function should be identical to the following: + * + * @code{.cpp} + * void(Type &); + * @endcode + * + * Member functions should not take arguments instead.
+ * The purpose is to give users the ability to free up resources that + * require special treatment before an object is actually destroyed. + * + * @tparam Func The actual function to use as a destructor. + * @return A meta factory for the parent type. + */ + template + auto dtor() noexcept { + static_assert(std::is_invocable_v, "The function doesn't accept an object of the type provided"); + + internal::meta_extend( + internal::owner(*ctx, *info), + internal::meta_dtor_node{ + +[](void *instance) { std::invoke(Func, *static_cast(instance)); }}); + + bucket = nullptr; + return *this; + } + + /** + * @brief Assigns a meta data to a meta type. + * + * Both data members and static and global variables, as well as constants + * of any kind, can be assigned to a meta type.
+ * From a client's point of view, all the variables associated with the + * reflected object will appear as if they were part of the type itself. + * + * @tparam Data The actual variable to attach to the meta type. + * @tparam Policy Optional policy (no policy set by default). + * @param id Unique identifier. + * @return An extended meta factory for the parent type. + */ + template + auto data(const id_type id) noexcept { + if constexpr(std::is_member_object_pointer_v) { + using data_type = std::remove_reference_t>; + + auto &&elem = internal::meta_extend( + internal::owner(*ctx, *info), + id, + internal::meta_data_node{ + /* this is never static */ + std::is_const_v ? internal::meta_traits::is_const : internal::meta_traits::is_none, + 1u, + &internal::resolve>, + &meta_arg>>, + &meta_setter, + &meta_getter}); + + bucket = &elem.prop; + } else { + using data_type = std::remove_reference_t>; + + auto &&elem = internal::meta_extend( + internal::owner(*ctx, *info), + id, + internal::meta_data_node{ + ((std::is_same_v> || std::is_const_v) ? internal::meta_traits::is_const : internal::meta_traits::is_none) | internal::meta_traits::is_static, + 1u, + &internal::resolve>, + &meta_arg>>, + &meta_setter, + &meta_getter}); + + bucket = &elem.prop; + } + + return *this; + } + + /** + * @brief Assigns a meta data to a meta type by means of its setter and + * getter. + * + * Setters and getters can be either free functions, member functions or a + * mix of them.
+ * In case of free functions, setters and getters must accept a reference to + * an instance of the parent type as their first argument. A setter has then + * an extra argument of a type convertible to that of the parameter to + * set.
+ * In case of member functions, getters have no arguments at all, while + * setters has an argument of a type convertible to that of the parameter to + * set. + * + * @tparam Setter The actual function to use as a setter. + * @tparam Getter The actual function to use as a getter. + * @tparam Policy Optional policy (no policy set by default). + * @param id Unique identifier. + * @return An extended meta factory for the parent type. + */ + template + auto data(const id_type id) noexcept { + using data_type = std::invoke_result_t; + static_assert(Policy::template value, "Invalid return type for the given policy"); + + if constexpr(std::is_same_v) { + auto &&elem = internal::meta_extend( + internal::owner(*ctx, *info), + id, + internal::meta_data_node{ + /* this is never static */ + internal::meta_traits::is_const, + 0u, + &internal::resolve>>, + &meta_arg>, + &meta_setter, + &meta_getter}); + + bucket = &elem.prop; + } else { + using args_type = typename meta_function_helper_t::args_type; + + auto &&elem = internal::meta_extend( + internal::owner(*ctx, *info), + id, + internal::meta_data_node{ + /* this is never static nor const */ + internal::meta_traits::is_none, + 1u, + &internal::resolve>>, + &meta_arg>>, + &meta_setter, + &meta_getter}); + + bucket = &elem.prop; + } + + return *this; + } + + /** + * @brief Assigns a meta data to a meta type by means of its setters and + * getter. + * + * Multi-setter support for meta data members. All setters are tried in the + * order of definition before returning to the caller.
+ * Setters can be either free functions, member functions or a mix of them + * and are provided via a `value_list` type. + * + * @sa data + * + * @tparam Setter The actual functions to use as setters. + * @tparam Getter The actual getter function. + * @tparam Policy Optional policy (no policy set by default). + * @param id Unique identifier. + * @return An extended meta factory for the parent type. + */ + template + auto data(const id_type id) noexcept { + data(id, std::make_index_sequence{}); + return *this; + } + + /** + * @brief Assigns a meta function to a meta type. + * + * Both member functions and free functions can be assigned to a meta + * type.
+ * From a client's point of view, all the functions associated with the + * reflected object will appear as if they were part of the type itself. + * + * @tparam Candidate The actual function to attach to the meta type. + * @tparam Policy Optional policy (no policy set by default). + * @param id Unique identifier. + * @return An extended meta factory for the parent type. + */ + template + auto func(const id_type id) noexcept { + using descriptor = meta_function_helper_t; + static_assert(Policy::template value, "Invalid return type for the given policy"); + + auto &&elem = internal::meta_extend( + internal::owner(*ctx, *info), + id, + internal::meta_func_node{ + (descriptor::is_const ? internal::meta_traits::is_const : internal::meta_traits::is_none) | (descriptor::is_static ? internal::meta_traits::is_static : internal::meta_traits::is_none), + descriptor::args_type::size, + &internal::resolve, void, std::remove_cv_t>>>, + &meta_arg, + &meta_invoke}); + + bucket = &elem.prop; + return *this; + } + + /** + * @brief Assigns a property to the last meta object created. + * + * Both the key and the value (if any) must be at least copy constructible. + * + * @tparam Value Optional type of the property value. + * @param id Property key. + * @param value Optional property value. + * @return An extended meta factory for the given type. + */ + template + meta_factory prop(id_type id, [[maybe_unused]] Value &&...value) { + ENTT_ASSERT(bucket != nullptr, "Meta object does not support properties"); + + if constexpr(sizeof...(Value) == 0u) { + internal::meta_extend( + *bucket, + id, + internal::meta_prop_node{ + &internal::resolve}); + } else { + internal::meta_extend( + *bucket, + id, + internal::meta_prop_node{ + &internal::resolve>..., + std::make_shared>(std::forward(value))...}); + } + + return *this; + } + +private: + meta_ctx *ctx; + dense_map *bucket; + const type_info *info; +}; + +/** + * @brief Utility function to use for reflection. + * + * This is the point from which everything starts.
+ * By invoking this function with a type that is not yet reflected, a meta type + * is created to which it will be possible to attach meta objects through a + * dedicated factory. + * + * @tparam Type Type to reflect. + * @param ctx The context into which to construct meta types. + * @return A meta factory for the given type. + */ +template +[[nodiscard]] auto meta(meta_ctx &ctx) noexcept { + auto &&context = internal::meta_context::from(ctx); + // make sure the type exists in the context before returning a factory + context.value.try_emplace(type_id().hash(), internal::resolve(context)); + return meta_factory{ctx}; +} + +/** + * @brief Utility function to use for reflection. + * + * This is the point from which everything starts.
+ * By invoking this function with a type that is not yet reflected, a meta type + * is created to which it will be possible to attach meta objects through a + * dedicated factory. + * + * @tparam Type Type to reflect. + * @return A meta factory for the given type. + */ +template +[[nodiscard]] auto meta() noexcept { + return meta(locator::value_or()); +} + +/** + * @brief Resets a type and all its parts. + * + * Resets a type and all its data members, member functions and properties, as + * well as its constructors, destructors and conversion functions if any.
+ * Base classes aren't reset but the link between the two types is removed. + * + * The type is also removed from the set of searchable types. + * + * @param id Unique identifier. + * @param ctx The context from which to reset meta types. + */ +inline void meta_reset(meta_ctx &ctx, const id_type id) noexcept { + auto &&context = internal::meta_context::from(ctx); + + for(auto it = context.value.begin(); it != context.value.end();) { + if(it->second.id == id) { + it = context.value.erase(it); + } else { + ++it; + } + } +} + +/** + * @brief Resets a type and all its parts. + * + * Resets a type and all its data members, member functions and properties, as + * well as its constructors, destructors and conversion functions if any.
+ * Base classes aren't reset but the link between the two types is removed. + * + * The type is also removed from the set of searchable types. + * + * @param id Unique identifier. + */ +inline void meta_reset(const id_type id) noexcept { + meta_reset(locator::value_or(), id); +} + +/** + * @brief Resets a type and all its parts. + * + * @sa meta_reset + * + * @tparam Type Type to reset. + * @param ctx The context from which to reset meta types. + */ +template +void meta_reset(meta_ctx &ctx) noexcept { + internal::meta_context::from(ctx).value.erase(type_id().hash()); +} + +/** + * @brief Resets a type and all its parts. + * + * @sa meta_reset + * + * @tparam Type Type to reset. + */ +template +void meta_reset() noexcept { + meta_reset(locator::value_or()); +} + +/** + * @brief Resets all meta types. + * + * @sa meta_reset + * + * @param ctx The context from which to reset meta types. + */ +inline void meta_reset(meta_ctx &ctx) noexcept { + internal::meta_context::from(ctx).value.clear(); +} + +/** + * @brief Resets all meta types. + * + * @sa meta_reset + */ +inline void meta_reset() noexcept { + meta_reset(locator::value_or()); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/meta/fwd.hpp b/LiteLoader/third-party/include/entt/meta/fwd.hpp new file mode 100644 index 0000000..fa0c57a --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/fwd.hpp @@ -0,0 +1,24 @@ +#ifndef ENTT_META_FWD_HPP +#define ENTT_META_FWD_HPP + +namespace entt { + +class meta_sequence_container; + +class meta_associative_container; + +class meta_any; + +struct meta_handle; + +struct meta_prop; + +struct meta_data; + +struct meta_func; + +class meta_type; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/meta/meta.hpp b/LiteLoader/third-party/include/entt/meta/meta.hpp new file mode 100644 index 0000000..f8cb917 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/meta.hpp @@ -0,0 +1,1949 @@ +#ifndef ENTT_META_META_HPP +#define ENTT_META_META_HPP + +#include +#include +#include +#include +#include +#include "../config/config.h" +#include "../core/any.hpp" +#include "../core/fwd.hpp" +#include "../core/iterator.hpp" +#include "../core/type_info.hpp" +#include "../core/type_traits.hpp" +#include "../core/utility.hpp" +#include "../locator/locator.hpp" +#include "adl_pointer.hpp" +#include "context.hpp" +#include "fwd.hpp" +#include "node.hpp" +#include "range.hpp" +#include "type_traits.hpp" + +namespace entt { + +class meta_any; +class meta_type; + +/*! @brief Proxy object for sequence containers. */ +class meta_sequence_container { + class meta_iterator; + +public: + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Meta iterator type. */ + using iterator = meta_iterator; + + /** + * @brief Context aware constructor. + * @param area The context from which to search for meta types. + */ + meta_sequence_container(const meta_ctx &area = locator::value_or()) noexcept + : ctx{&area} {} + + /** + * @brief Rebinds a proxy object to a sequence container type. + * @tparam Type Type of container to wrap. + * @param instance The container to wrap. + */ + template + void rebind(any instance) noexcept { + value_type_node = &internal::resolve; + size_fn = &meta_sequence_container_traits::size; + resize_fn = &meta_sequence_container_traits::resize; + iter_fn = &meta_sequence_container_traits::iter; + insert_or_erase_fn = &meta_sequence_container_traits::insert_or_erase; + storage = std::move(instance); + } + + [[nodiscard]] inline meta_type value_type() const noexcept; + [[nodiscard]] inline size_type size() const noexcept; + inline bool resize(const size_type); + inline bool clear(); + [[nodiscard]] inline iterator begin(); + [[nodiscard]] inline iterator end(); + inline iterator insert(iterator, meta_any); + inline iterator erase(iterator); + [[nodiscard]] inline meta_any operator[](const size_type); + [[nodiscard]] inline explicit operator bool() const noexcept; + +private: + const meta_ctx *ctx{}; + internal::meta_type_node (*value_type_node)(const internal::meta_context &){}; + size_type (*size_fn)(const any &) noexcept {}; + bool (*resize_fn)(any &, size_type){}; + iterator (*iter_fn)(const meta_ctx &, any &, const bool){}; + iterator (*insert_or_erase_fn)(const meta_ctx &, any &, const any &, meta_any &){}; + any storage{}; +}; + +/*! @brief Proxy object for associative containers. */ +class meta_associative_container { + class meta_iterator; + +public: + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Meta iterator type. */ + using iterator = meta_iterator; + + /** + * @brief Context aware constructor. + * @param area The context from which to search for meta types. + */ + meta_associative_container(const meta_ctx &area = locator::value_or()) noexcept + : ctx{&area} {} + + /** + * @brief Rebinds a proxy object to an associative container type. + * @tparam Type Type of container to wrap. + * @param instance The container to wrap. + */ + template + void rebind(any instance) noexcept { + if constexpr(!meta_associative_container_traits::key_only) { + mapped_type_node = &internal::resolve; + } + + key_only_container = meta_associative_container_traits::key_only; + key_type_node = &internal::resolve; + value_type_node = &internal::resolve; + size_fn = &meta_associative_container_traits::size; + clear_fn = &meta_associative_container_traits::clear; + iter_fn = &meta_associative_container_traits::iter; + insert_or_erase_fn = &meta_associative_container_traits::insert_or_erase; + find_fn = &meta_associative_container_traits::find; + storage = std::move(instance); + } + + [[nodiscard]] inline bool key_only() const noexcept; + [[nodiscard]] inline meta_type key_type() const noexcept; + [[nodiscard]] inline meta_type mapped_type() const noexcept; + [[nodiscard]] inline meta_type value_type() const noexcept; + [[nodiscard]] inline size_type size() const noexcept; + inline bool clear(); + [[nodiscard]] inline iterator begin(); + [[nodiscard]] inline iterator end(); + inline bool insert(meta_any); + inline bool insert(meta_any, meta_any); + inline size_type erase(meta_any); + [[nodiscard]] inline iterator find(meta_any); + [[nodiscard]] inline explicit operator bool() const noexcept; + +private: + const meta_ctx *ctx{}; + bool key_only_container{}; + internal::meta_type_node (*key_type_node)(const internal::meta_context &){}; + internal::meta_type_node (*mapped_type_node)(const internal::meta_context &){}; + internal::meta_type_node (*value_type_node)(const internal::meta_context &){}; + size_type (*size_fn)(const any &) noexcept {}; + bool (*clear_fn)(any &){}; + iterator (*iter_fn)(const meta_ctx &, any &, const bool){}; + size_type (*insert_or_erase_fn)(any &, meta_any &, meta_any &){}; + iterator (*find_fn)(const meta_ctx &, any &, meta_any &){}; + any storage{}; +}; + +/*! @brief Opaque wrapper for values of any type. */ +class meta_any { + enum class operation : std::uint8_t { + deref, + seq, + assoc + }; + + using vtable_type = void(const operation, const any &, void *); + + template + static void basic_vtable([[maybe_unused]] const operation op, [[maybe_unused]] const any &value, [[maybe_unused]] void *other) { + static_assert(std::is_same_v>, Type>, "Invalid type"); + + if constexpr(!std::is_void_v) { + switch(op) { + case operation::deref: + if constexpr(is_meta_pointer_like_v) { + if constexpr(std::is_function_v::element_type>) { + static_cast(other)->emplace(any_cast(value)); + } else if constexpr(!std::is_same_v::element_type>, void>) { + using in_place_type = decltype(adl_meta_pointer_like::dereference(any_cast(value))); + + if constexpr(std::is_constructible_v) { + if(const auto &pointer_like = any_cast(value); pointer_like) { + static_cast(other)->emplace(adl_meta_pointer_like::dereference(pointer_like)); + } + } else { + static_cast(other)->emplace(adl_meta_pointer_like::dereference(any_cast(value))); + } + } + } + break; + case operation::seq: + if constexpr(is_complete_v>) { + static_cast(other)->rebind(std::move(const_cast(value))); + } + break; + case operation::assoc: + if constexpr(is_complete_v>) { + static_cast(other)->rebind(std::move(const_cast(value))); + } + break; + } + } + } + + void release() { + if(node.dtor.dtor && owner()) { + node.dtor.dtor(storage.data()); + } + } + + meta_any(const meta_ctx &area, const meta_any &other, any ref) noexcept + : storage{std::move(ref)}, + ctx{&area}, + node{storage ? other.node : internal::meta_type_node{}}, + vtable{storage ? other.vtable : &basic_vtable} {} + +public: + /*! Default constructor. */ + meta_any() noexcept + : meta_any{meta_ctx_arg, locator::value_or()} {} + + /** + * @brief Context aware constructor. + * @param area The context from which to search for meta types. + */ + meta_any(meta_ctx_arg_t, const meta_ctx &area) noexcept + : storage{}, + ctx{&area}, + node{}, + vtable{&basic_vtable} {} + + /** + * @brief Constructs a wrapper by directly initializing the new object. + * @tparam Type Type of object to use to initialize the wrapper. + * @tparam Args Types of arguments to use to construct the new instance. + * @param args Parameters to use to construct the instance. + */ + template + explicit meta_any(std::in_place_type_t, Args &&...args) + : meta_any{locator::value_or(), std::in_place_type, std::forward(args)...} {} + + /** + * @brief Constructs a wrapper by directly initializing the new object. + * @tparam Type Type of object to use to initialize the wrapper. + * @tparam Args Types of arguments to use to construct the new instance. + * @param area The context from which to search for meta types. + * @param args Parameters to use to construct the instance. + */ + template + explicit meta_any(const meta_ctx &area, std::in_place_type_t, Args &&...args) + : storage{std::in_place_type, std::forward(args)...}, + ctx{&area}, + node{internal::resolve>>(internal::meta_context::from(*ctx))}, + vtable{&basic_vtable>>} {} + + /** + * @brief Constructs a wrapper from a given value. + * @tparam Type Type of object to use to initialize the wrapper. + * @param value An instance of an object to use to initialize the wrapper. + */ + template, meta_any>>> + meta_any(Type &&value) + : meta_any{locator::value_or(), std::forward(value)} {} + + /** + * @brief Constructs a wrapper from a given value. + * @tparam Type Type of object to use to initialize the wrapper. + * @param area The context from which to search for meta types. + * @param value An instance of an object to use to initialize the wrapper. + */ + template, meta_any>>> + meta_any(const meta_ctx &area, Type &&value) + : meta_any{area, std::in_place_type>, std::forward(value)} {} + + /** + * @brief Context aware copy constructor. + * @param area The context from which to search for meta types. + * @param other The instance to copy from. + */ + meta_any(const meta_ctx &area, const meta_any &other) + : meta_any{other} { + ctx = &area; + node = node.resolve ? node.resolve(internal::meta_context::from(*ctx)) : node; + } + + /** + * @brief Context aware move constructor. + * @param area The context from which to search for meta types. + * @param other The instance to move from. + */ + meta_any(const meta_ctx &area, meta_any &&other) + : meta_any{std::move(other)} { + ctx = &area; + node = node.resolve ? node.resolve(internal::meta_context::from(*ctx)) : node; + } + + /** + * @brief Copy constructor. + * @param other The instance to copy from. + */ + meta_any(const meta_any &other) = default; + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + meta_any(meta_any &&other) noexcept + : storage{std::move(other.storage)}, + ctx{other.ctx}, + node{std::exchange(other.node, internal::meta_type_node{})}, + vtable{std::exchange(other.vtable, &basic_vtable)} {} + + /*! @brief Frees the internal storage, whatever it means. */ + ~meta_any() { + release(); + } + + /** + * @brief Copy assignment operator. + * @param other The instance to copy from. + * @return This meta any object. + */ + meta_any &operator=(const meta_any &other) { + release(); + storage = other.storage; + ctx = other.ctx; + node = other.node; + vtable = other.vtable; + return *this; + } + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This meta any object. + */ + meta_any &operator=(meta_any &&other) noexcept { + release(); + storage = std::move(other.storage); + ctx = other.ctx; + node = std::exchange(other.node, internal::meta_type_node{}); + vtable = std::exchange(other.vtable, &basic_vtable); + return *this; + } + + /** + * @brief Value assignment operator. + * @tparam Type Type of object to use to initialize the wrapper. + * @param value An instance of an object to use to initialize the wrapper. + * @return This meta any object. + */ + template + std::enable_if_t, meta_any>, meta_any &> + operator=(Type &&value) { + emplace>(std::forward(value)); + return *this; + } + + /*! @copydoc any::type */ + [[nodiscard]] inline meta_type type() const noexcept; + + /*! @copydoc any::data */ + [[nodiscard]] const void *data() const noexcept { + return storage.data(); + } + + /*! @copydoc any::data */ + [[nodiscard]] void *data() noexcept { + return storage.data(); + } + + /** + * @brief Invokes the underlying function, if possible. + * @tparam Args Types of arguments to use to invoke the function. + * @param id Unique identifier. + * @param args Parameters to use to invoke the function. + * @return A wrapper containing the returned value, if any. + */ + template + meta_any invoke(const id_type id, Args &&...args) const; + + /*! @copydoc invoke */ + template + meta_any invoke(const id_type id, Args &&...args); + + /** + * @brief Sets the value of a given variable. + * @tparam Type Type of value to assign. + * @param id Unique identifier. + * @param value Parameter to use to set the underlying variable. + * @return True in case of success, false otherwise. + */ + template + bool set(const id_type id, Type &&value); + + /** + * @brief Gets the value of a given variable. + * @param id Unique identifier. + * @return A wrapper containing the value of the underlying variable. + */ + [[nodiscard]] meta_any get(const id_type id) const; + + /*! @copydoc get */ + [[nodiscard]] meta_any get(const id_type id); + + /** + * @brief Tries to cast an instance to a given type. + * @tparam Type Type to which to cast the instance. + * @return A (possibly null) pointer to the contained instance. + */ + template + [[nodiscard]] const Type *try_cast() const { + const auto other = internal::resolve>(internal::meta_context::from(*ctx)); + return static_cast(internal::try_cast(internal::meta_context::from(*ctx), node, other, data())); + } + + /*! @copydoc try_cast */ + template + [[nodiscard]] Type *try_cast() { + if constexpr(std::is_const_v) { + return std::as_const(*this).try_cast>(); + } else { + const auto other = internal::resolve>(internal::meta_context::from(*ctx)); + return static_cast(const_cast(internal::try_cast(internal::meta_context::from(*ctx), node, other, data()))); + } + } + + /** + * @brief Tries to cast an instance to a given type. + * + * @warning + * Attempting to perform an invalid cast results is undefined behavior. + * + * @tparam Type Type to which to cast the instance. + * @return A reference to the contained instance. + */ + template + [[nodiscard]] Type cast() const { + auto *const instance = try_cast>(); + ENTT_ASSERT(instance, "Invalid instance"); + return static_cast(*instance); + } + + /*! @copydoc cast */ + template + [[nodiscard]] Type cast() { + // forces const on non-reference types to make them work also with wrappers for const references + auto *const instance = try_cast>(); + ENTT_ASSERT(instance, "Invalid instance"); + return static_cast(*instance); + } + + /** + * @brief Converts an object in such a way that a given cast becomes viable. + * @param type Meta type to which the cast is requested. + * @return A valid meta any object if there exists a viable conversion, an + * invalid one otherwise. + */ + [[nodiscard]] meta_any allow_cast(const meta_type &type) const; + + /** + * @brief Converts an object in such a way that a given cast becomes viable. + * @param type Meta type to which the cast is requested. + * @return True if there exists a viable conversion, false otherwise. + */ + [[nodiscard]] bool allow_cast(const meta_type &type) { + if(auto other = std::as_const(*this).allow_cast(type); other) { + if(other.owner()) { + std::swap(*this, other); + } + + return true; + } + + return false; + } + + /** + * @brief Converts an object in such a way that a given cast becomes viable. + * @tparam Type Type to which the cast is requested. + * @return A valid meta any object if there exists a viable conversion, an + * invalid one otherwise. + */ + template + [[nodiscard]] meta_any allow_cast() const { + if constexpr(std::is_reference_v && !std::is_const_v>) { + return meta_any{meta_ctx_arg, *ctx}; + } else { + auto other = internal::resolve>>(internal::meta_context::from(*ctx)); + return allow_cast(meta_type{*ctx, other}); + } + } + + /** + * @brief Converts an object in such a way that a given cast becomes viable. + * @tparam Type Type to which the cast is requested. + * @return True if there exists a viable conversion, false otherwise. + */ + template + bool allow_cast() { + auto other = internal::resolve>>(internal::meta_context::from(*ctx)); + return allow_cast(meta_type{*ctx, other}) && (!(std::is_reference_v && !std::is_const_v>) || storage.data() != nullptr); + } + + /*! @copydoc any::emplace */ + template + void emplace(Args &&...args) { + release(); + storage.emplace(std::forward(args)...); + node = internal::resolve>>(internal::meta_context::from(*ctx)); + vtable = &basic_vtable>>; + } + + /*! @copydoc any::assign */ + bool assign(const meta_any &other); + + /*! @copydoc any::assign */ + bool assign(meta_any &&other); + + /*! @copydoc any::reset */ + void reset() { + release(); + storage.reset(); + node = {}; + vtable = &basic_vtable; + } + + /** + * @brief Returns a sequence container proxy. + * @return A sequence container proxy for the underlying object. + */ + [[nodiscard]] meta_sequence_container as_sequence_container() noexcept { + any detached = storage.as_ref(); + meta_sequence_container proxy{*ctx}; + vtable(operation::seq, detached, &proxy); + return proxy; + } + + /*! @copydoc as_sequence_container */ + [[nodiscard]] meta_sequence_container as_sequence_container() const noexcept { + any detached = storage.as_ref(); + meta_sequence_container proxy{*ctx}; + vtable(operation::seq, detached, &proxy); + return proxy; + } + + /** + * @brief Returns an associative container proxy. + * @return An associative container proxy for the underlying object. + */ + [[nodiscard]] meta_associative_container as_associative_container() noexcept { + any detached = storage.as_ref(); + meta_associative_container proxy{*ctx}; + vtable(operation::assoc, detached, &proxy); + return proxy; + } + + /*! @copydoc as_associative_container */ + [[nodiscard]] meta_associative_container as_associative_container() const noexcept { + any detached = storage.as_ref(); + meta_associative_container proxy{*ctx}; + vtable(operation::assoc, detached, &proxy); + return proxy; + } + + /** + * @brief Indirection operator for dereferencing opaque objects. + * @return A wrapper that shares a reference to an unmanaged object if the + * wrapped element is dereferenceable, an invalid meta any otherwise. + */ + [[nodiscard]] meta_any operator*() const noexcept { + meta_any ret{meta_ctx_arg, *ctx}; + vtable(operation::deref, storage, &ret); + return ret; + } + + /** + * @brief Returns false if a wrapper is invalid, true otherwise. + * @return False if the wrapper is invalid, true otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return !(node.info == nullptr); + } + + /*! @copydoc any::operator== */ + [[nodiscard]] bool operator==(const meta_any &other) const noexcept { + return (ctx == other.ctx) && ((!node.info && !other.node.info) || (node.info && other.node.info && *node.info == *other.node.info && storage == other.storage)); + } + + /*! @copydoc any::operator!= */ + [[nodiscard]] bool operator!=(const meta_any &other) const noexcept { + return !(*this == other); + } + + /*! @copydoc any::as_ref */ + [[nodiscard]] meta_any as_ref() noexcept { + return meta_any{*ctx, *this, storage.as_ref()}; + } + + /*! @copydoc any::as_ref */ + [[nodiscard]] meta_any as_ref() const noexcept { + return meta_any{*ctx, *this, storage.as_ref()}; + } + + /*! @copydoc any::owner */ + [[nodiscard]] bool owner() const noexcept { + return storage.owner(); + } + +private: + any storage; + const meta_ctx *ctx; + internal::meta_type_node node; + vtable_type *vtable; +}; + +/** + * @brief Forwards its argument and avoids copies for lvalue references. + * @tparam Type Type of argument to use to construct the new instance. + * @param value Parameter to use to construct the instance. + * @param ctx The context from which to search for meta types. + * @return A properly initialized and not necessarily owning wrapper. + */ +template +meta_any forward_as_meta(const meta_ctx &ctx, Type &&value) { + return meta_any{ctx, std::in_place_type, std::forward(value)}; +} + +/** + * @brief Forwards its argument and avoids copies for lvalue references. + * @tparam Type Type of argument to use to construct the new instance. + * @param value Parameter to use to construct the instance. + * @return A properly initialized and not necessarily owning wrapper. + */ +template +meta_any forward_as_meta(Type &&value) { + return forward_as_meta(locator::value_or(), std::forward(value)); +} + +/** + * @brief Opaque pointers to instances of any type. + * + * A handle doesn't perform copies and isn't responsible for the contained + * object. It doesn't prolong the lifetime of the pointed instance.
+ * Handles are used to generate references to actual objects when needed. + */ +struct meta_handle { + /*! Default constructor. */ + meta_handle() noexcept + : meta_handle{meta_ctx_arg, locator::value_or()} {} + + /** + * @brief Context aware constructor. + * @param area The context from which to search for meta types. + */ + meta_handle(meta_ctx_arg_t, const meta_ctx &area) noexcept + : any{meta_ctx_arg, area} {} + + /** + * @brief Creates a handle that points to an unmanaged object. + * @param value An instance of an object to use to initialize the handle. + */ + meta_handle(meta_any &value) noexcept + : any{value.as_ref()} {} + + /** + * @brief Creates a handle that points to an unmanaged object. + * @param value An instance of an object to use to initialize the handle. + */ + meta_handle(const meta_any &value) noexcept + : any{value.as_ref()} {} + + /** + * @brief Creates a handle that points to an unmanaged object. + * @tparam Type Type of object to use to initialize the handle. + * @param ctx The context from which to search for meta types. + * @param value An instance of an object to use to initialize the handle. + */ + template, meta_handle>>> + meta_handle(const meta_ctx &ctx, Type &value) noexcept + : any{ctx, std::in_place_type, value} {} + + /** + * @brief Creates a handle that points to an unmanaged object. + * @tparam Type Type of object to use to initialize the handle. + * @param value An instance of an object to use to initialize the handle. + */ + template, meta_handle>>> + meta_handle(Type &value) noexcept + : meta_handle{locator::value_or(), value} {} + + /** + * @brief Context aware copy constructor. + * @param area The context from which to search for meta types. + * @param other The instance to copy from. + */ + meta_handle(const meta_ctx &area, const meta_handle &other) + : any{area, other.any} {} + + /** + * @brief Context aware move constructor. + * @param area The context from which to search for meta types. + * @param other The instance to move from. + */ + meta_handle(const meta_ctx &area, meta_handle &&other) + : any{area, std::move(other.any)} {} + + /*! @brief Default copy constructor, deleted on purpose. */ + meta_handle(const meta_handle &) = delete; + + /*! @brief Default move constructor. */ + meta_handle(meta_handle &&) = default; + + /** + * @brief Default copy assignment operator, deleted on purpose. + * @return This meta handle. + */ + meta_handle &operator=(const meta_handle &) = delete; + + /** + * @brief Default move assignment operator. + * @return This meta handle. + */ + meta_handle &operator=(meta_handle &&) = default; + + /** + * @brief Returns false if a handle is invalid, true otherwise. + * @return False if the handle is invalid, true otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return static_cast(any); + } + + /** + * @brief Access operator for accessing the contained opaque object. + * @return A wrapper that shares a reference to an unmanaged object. + */ + [[nodiscard]] meta_any *operator->() { + return &any; + } + + /*! @copydoc operator-> */ + [[nodiscard]] const meta_any *operator->() const { + return &any; + } + +private: + meta_any any; +}; + +/*! @brief Opaque wrapper for properties of any type. */ +struct meta_prop { + /*! @brief Default constructor. */ + meta_prop() noexcept + : node{}, + ctx{} {} + + /** + * @brief Context aware constructor for meta objects. + * @param area The context from which to search for meta types. + * @param curr The underlying node with which to construct the instance. + */ + meta_prop(const meta_ctx &area, const internal::meta_prop_node &curr) noexcept + : node{&curr}, + ctx{&area} {} + + /** + * @brief Returns the stored value by copy. + * @return A wrapper containing the value stored with the property. + */ + [[nodiscard]] meta_any value() const { + return node->value ? node->type(internal::meta_context::from(*ctx)).from_void(*ctx, nullptr, node->value.get()) : meta_any{meta_ctx_arg, *ctx}; + } + + /** + * @brief Returns true if an object is valid, false otherwise. + * @return True if the object is valid, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return (node != nullptr); + } + +private: + const internal::meta_prop_node *node; + const meta_ctx *ctx; +}; + +/*! @brief Opaque wrapper for data members. */ +struct meta_data { + /*! @brief Unsigned integer type. */ + using size_type = typename internal::meta_data_node::size_type; + + /*! @brief Default constructor. */ + meta_data() noexcept + : node{}, + ctx{} {} + + /** + * @brief Context aware constructor for meta objects. + * @param area The context from which to search for meta types. + * @param curr The underlying node with which to construct the instance. + */ + meta_data(const meta_ctx &area, const internal::meta_data_node &curr) noexcept + : node{&curr}, + ctx{&area} {} + + /** + * @brief Returns the number of setters available. + * @return The number of setters available. + */ + [[nodiscard]] size_type arity() const noexcept { + return node->arity; + } + + /** + * @brief Indicates whether a data member is constant or not. + * @return True if the data member is constant, false otherwise. + */ + [[nodiscard]] bool is_const() const noexcept { + return static_cast(node->traits & internal::meta_traits::is_const); + } + + /** + * @brief Indicates whether a data member is static or not. + * @return True if the data member is static, false otherwise. + */ + [[nodiscard]] bool is_static() const noexcept { + return static_cast(node->traits & internal::meta_traits::is_static); + } + + /*! @copydoc meta_any::type */ + [[nodiscard]] inline meta_type type() const noexcept; + + /** + * @brief Sets the value of a given variable. + * @tparam Type Type of value to assign. + * @param instance An opaque instance of the underlying type. + * @param value Parameter to use to set the underlying variable. + * @return True in case of success, false otherwise. + */ + template + bool set(meta_handle instance, Type &&value) const { + return node->set && node->set(meta_handle{*ctx, std::move(instance)}, meta_any{*ctx, std::forward(value)}); + } + + /** + * @brief Gets the value of a given variable. + * @param instance An opaque instance of the underlying type. + * @return A wrapper containing the value of the underlying variable. + */ + [[nodiscard]] meta_any get(meta_handle instance) const { + return node->get(*ctx, meta_handle{*ctx, std::move(instance)}); + } + + /** + * @brief Returns the type accepted by the i-th setter. + * @param index Index of the setter of which to return the accepted type. + * @return The type accepted by the i-th setter. + */ + [[nodiscard]] inline meta_type arg(const size_type index) const noexcept; + + /** + * @brief Returns a range to visit registered meta properties. + * @return An iterable range to visit registered meta properties. + */ + [[nodiscard]] meta_range prop() const noexcept { + return {{*ctx, node->prop.cbegin()}, {*ctx, node->prop.cend()}}; + } + + /** + * @brief Lookup utility for meta properties. + * @param key The key to use to search for a property. + * @return The registered meta property for the given key, if any. + */ + [[nodiscard]] meta_prop prop(const id_type key) const { + const auto it = node->prop.find(key); + return it != node->prop.cend() ? meta_prop{*ctx, it->second} : meta_prop{}; + } + + /** + * @brief Returns true if an object is valid, false otherwise. + * @return True if the object is valid, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return (node != nullptr); + } + +private: + const internal::meta_data_node *node; + const meta_ctx *ctx; +}; + +/*! @brief Opaque wrapper for member functions. */ +struct meta_func { + /*! @brief Unsigned integer type. */ + using size_type = typename internal::meta_func_node::size_type; + + /*! @brief Default constructor. */ + meta_func() noexcept + : node{}, + ctx{} {} + + /** + * @brief Context aware constructor for meta objects. + * @param area The context from which to search for meta types. + * @param curr The underlying node with which to construct the instance. + */ + meta_func(const meta_ctx &area, const internal::meta_func_node &curr) noexcept + : node{&curr}, + ctx{&area} {} + + /** + * @brief Returns the number of arguments accepted by a member function. + * @return The number of arguments accepted by the member function. + */ + [[nodiscard]] size_type arity() const noexcept { + return node->arity; + } + + /** + * @brief Indicates whether a member function is constant or not. + * @return True if the member function is constant, false otherwise. + */ + [[nodiscard]] bool is_const() const noexcept { + return static_cast(node->traits & internal::meta_traits::is_const); + } + + /** + * @brief Indicates whether a member function is static or not. + * @return True if the member function is static, false otherwise. + */ + [[nodiscard]] bool is_static() const noexcept { + return static_cast(node->traits & internal::meta_traits::is_static); + } + + /** + * @brief Returns the return type of a member function. + * @return The return type of the member function. + */ + [[nodiscard]] inline meta_type ret() const noexcept; + + /** + * @brief Returns the type of the i-th argument of a member function. + * @param index Index of the argument of which to return the type. + * @return The type of the i-th argument of a member function. + */ + [[nodiscard]] inline meta_type arg(const size_type index) const noexcept; + + /** + * @brief Invokes the underlying function, if possible. + * + * @warning + * The context of the arguments is **not** changed.
+ * It's up to the caller to bind them to the right context(s). + * + * @param instance An opaque instance of the underlying type. + * @param args Parameters to use to invoke the function. + * @param sz Number of parameters to use to invoke the function. + * @return A wrapper containing the returned value, if any. + */ + meta_any invoke(meta_handle instance, meta_any *const args, const size_type sz) const { + return sz == arity() ? node->invoke(*ctx, meta_handle{*ctx, std::move(instance)}, args) : meta_any{meta_ctx_arg, *ctx}; + } + + /** + * @copybrief invoke + * @tparam Args Types of arguments to use to invoke the function. + * @param instance An opaque instance of the underlying type. + * @param args Parameters to use to invoke the function. + * @return A wrapper containing the returned value, if any. + */ + template + meta_any invoke(meta_handle instance, Args &&...args) const { + meta_any arguments[sizeof...(Args) + 1u]{{*ctx, std::forward(args)}...}; + return invoke(meta_handle{*ctx, std::move(instance)}, arguments, sizeof...(Args)); + } + + /*! @copydoc meta_data::prop */ + [[nodiscard]] meta_range prop() const noexcept { + return {{*ctx, node->prop.cbegin()}, {*ctx, node->prop.cend()}}; + } + + /** + * @brief Lookup utility for meta properties. + * @param key The key to use to search for a property. + * @return The registered meta property for the given key, if any. + */ + [[nodiscard]] meta_prop prop(const id_type key) const { + const auto it = node->prop.find(key); + return it != node->prop.cend() ? meta_prop{*ctx, it->second} : meta_prop{}; + } + + /** + * @brief Returns the next overload of a given function, if any. + * @return The next overload of the given function, if any. + */ + [[nodiscard]] meta_func next() const { + return node->next ? meta_func{*ctx, *node->next} : meta_func{}; + } + + /** + * @brief Returns true if an object is valid, false otherwise. + * @return True if the object is valid, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return (node != nullptr); + } + +private: + const internal::meta_func_node *node; + const meta_ctx *ctx; +}; + +/*! @brief Opaque wrapper for types. */ +class meta_type { + template + [[nodiscard]] auto lookup(meta_any *const args, const typename internal::meta_type_node::size_type sz, [[maybe_unused]] bool constness, Func next) const { + decltype(next()) candidate = nullptr; + size_type same{}; + bool ambiguous{}; + + for(auto curr = next(); curr; curr = next()) { + if constexpr(std::is_same_v, internal::meta_func_node>) { + if(constness && !static_cast(curr->traits & internal::meta_traits::is_const)) { + continue; + } + } + + if(curr->arity == sz) { + size_type match{}; + size_type pos{}; + + for(; pos < sz && args[pos]; ++pos) { + const auto other = curr->arg(*ctx, pos); + const auto type = args[pos].type(); + + if(const auto &info = other.info(); info == type.info()) { + ++match; + } else if(!((type.node.details && (type.node.details->base.contains(info.hash()) || type.node.details->conv.contains(info.hash()))) || (type.node.conversion_helper && other.node.conversion_helper))) { + break; + } + } + + if(pos == sz) { + if(!candidate || match > same) { + candidate = curr; + same = match; + ambiguous = false; + } else if(match == same) { + if constexpr(std::is_same_v, internal::meta_func_node>) { + if(static_cast(curr->traits & internal::meta_traits::is_const) != static_cast(candidate->traits & internal::meta_traits::is_const)) { + candidate = static_cast(candidate->traits & internal::meta_traits::is_const) ? curr : candidate; + ambiguous = false; + continue; + } + } + + ambiguous = true; + } + } + } + } + + return ambiguous ? nullptr : candidate; + } + +public: + /*! @brief Unsigned integer type. */ + using size_type = typename internal::meta_type_node::size_type; + + /*! @brief Default constructor. */ + meta_type() noexcept + : node{}, + ctx{} {} + + /** + * @brief Context aware constructor for meta objects. + * @param area The context from which to search for meta types. + * @param curr The underlying node with which to construct the instance. + */ + meta_type(const meta_ctx &area, const internal::meta_type_node &curr) noexcept + : node{curr}, + ctx{&area} {} + + /** + * @brief Context aware constructor for meta objects. + * @param area The context from which to search for meta types. + * @param curr The underlying node with which to construct the instance. + */ + meta_type(const meta_ctx &area, const internal::meta_base_node &curr) noexcept + : meta_type{area, curr.type(internal::meta_context::from(area))} {} + + /** + * @brief Returns the type info object of the underlying type. + * @return The type info object of the underlying type. + */ + [[nodiscard]] const type_info &info() const noexcept { + return *node.info; + } + + /** + * @brief Returns the identifier assigned to a type. + * @return The identifier assigned to the type. + */ + [[nodiscard]] id_type id() const noexcept { + return node.id; + } + + /** + * @brief Returns the size of the underlying type if known. + * @return The size of the underlying type if known, 0 otherwise. + */ + [[nodiscard]] size_type size_of() const noexcept { + return node.size_of; + } + + /** + * @brief Checks whether a type refers to an arithmetic type or not. + * @return True if the underlying type is an arithmetic type, false + * otherwise. + */ + [[nodiscard]] bool is_arithmetic() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_arithmetic); + } + + /** + * @brief Checks whether a type refers to an integral type or not. + * @return True if the underlying type is an integral type, false otherwise. + */ + [[nodiscard]] bool is_integral() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_integral); + } + + /** + * @brief Checks whether a type refers to a signed type or not. + * @return True if the underlying type is a signed type, false otherwise. + */ + [[nodiscard]] bool is_signed() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_signed); + } + + /** + * @brief Checks whether a type refers to an array type or not. + * @return True if the underlying type is an array type, false otherwise. + */ + [[nodiscard]] bool is_array() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_array); + } + + /** + * @brief Checks whether a type refers to an enum or not. + * @return True if the underlying type is an enum, false otherwise. + */ + [[nodiscard]] bool is_enum() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_enum); + } + + /** + * @brief Checks whether a type refers to a class or not. + * @return True if the underlying type is a class, false otherwise. + */ + [[nodiscard]] bool is_class() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_class); + } + + /** + * @brief Checks whether a type refers to a pointer or not. + * @return True if the underlying type is a pointer, false otherwise. + */ + [[nodiscard]] bool is_pointer() const noexcept { + return node.info && (node.info->hash() != remove_pointer().info().hash()); + } + + /** + * @brief Provides the type for which the pointer is defined. + * @return The type for which the pointer is defined or this type if it + * doesn't refer to a pointer type. + */ + [[nodiscard]] meta_type remove_pointer() const noexcept { + return {*ctx, node.remove_pointer(internal::meta_context::from(*ctx))}; + } + + /** + * @brief Checks whether a type is a pointer-like type or not. + * @return True if the underlying type is a pointer-like one, false + * otherwise. + */ + [[nodiscard]] bool is_pointer_like() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_meta_pointer_like); + } + + /** + * @brief Checks whether a type refers to a sequence container or not. + * @return True if the type is a sequence container, false otherwise. + */ + [[nodiscard]] bool is_sequence_container() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_meta_sequence_container); + } + + /** + * @brief Checks whether a type refers to an associative container or not. + * @return True if the type is an associative container, false otherwise. + */ + [[nodiscard]] bool is_associative_container() const noexcept { + return static_cast(node.traits & internal::meta_traits::is_meta_associative_container); + } + + /** + * @brief Checks whether a type refers to a recognized class template + * specialization or not. + * @return True if the type is a recognized class template specialization, + * false otherwise. + */ + [[nodiscard]] bool is_template_specialization() const noexcept { + return (node.templ.arity != 0u); + } + + /** + * @brief Returns the number of template arguments. + * @return The number of template arguments. + */ + [[nodiscard]] size_type template_arity() const noexcept { + return node.templ.arity; + } + + /** + * @brief Returns a tag for the class template of the underlying type. + * @return The tag for the class template of the underlying type. + */ + [[nodiscard]] inline meta_type template_type() const noexcept { + return node.templ.type ? meta_type{*ctx, node.templ.type(internal::meta_context::from(*ctx))} : meta_type{}; + } + + /** + * @brief Returns the type of the i-th template argument of a type. + * @param index Index of the template argument of which to return the type. + * @return The type of the i-th template argument of a type. + */ + [[nodiscard]] inline meta_type template_arg(const size_type index) const noexcept { + return index < template_arity() ? meta_type{*ctx, node.templ.arg(internal::meta_context::from(*ctx), index)} : meta_type{}; + } + + /** + * @brief Returns a range to visit registered top-level base meta types. + * @return An iterable range to visit registered top-level base meta types. + */ + [[nodiscard]] meta_range base() const noexcept { + using range_type = meta_range; + return node.details ? range_type{{*ctx, node.details->base.cbegin()}, {*ctx, node.details->base.cend()}} : range_type{}; + } + + /** + * @brief Returns a range to visit registered top-level meta data. + * @return An iterable range to visit registered top-level meta data. + */ + [[nodiscard]] meta_range data() const noexcept { + using range_type = meta_range; + return node.details ? range_type{{*ctx, node.details->data.cbegin()}, {*ctx, node.details->data.cend()}} : range_type{}; + } + + /** + * @brief Lookup utility for meta data (bases are also visited). + * @param id Unique identifier. + * @return The registered meta data for the given identifier, if any. + */ + [[nodiscard]] meta_data data(const id_type id) const { + if(node.details) { + if(const auto it = node.details->data.find(id); it != node.details->data.cend()) { + return meta_data{*ctx, it->second}; + } + } + + for(auto &&curr: base()) { + if(auto elem = curr.second.data(id); elem) { + return elem; + } + } + + return meta_data{}; + } + + /** + * @brief Returns a range to visit registered top-level functions. + * @return An iterable range to visit registered top-level functions. + */ + [[nodiscard]] meta_range func() const noexcept { + using return_type = meta_range; + return node.details ? return_type{{*ctx, node.details->func.cbegin()}, {*ctx, node.details->func.cend()}} : return_type{}; + } + + /** + * @brief Lookup utility for meta functions (bases are also visited). + * + * In case of overloaded functions, the first one with the required + * identifier is returned. + * + * @param id Unique identifier. + * @return The registered meta function for the given identifier, if any. + */ + [[nodiscard]] meta_func func(const id_type id) const { + if(node.details) { + if(const auto it = node.details->func.find(id); it != node.details->func.cend()) { + return meta_func{*ctx, it->second}; + } + } + + for(auto &&curr: base()) { + if(auto elem = curr.second.func(id); elem) { + return elem; + } + } + + return meta_func{}; + } + + /** + * @brief Creates an instance of the underlying type, if possible. + * + * If suitable, the implicitly generated default constructor is used. + * + * @warning + * The context of the arguments is **not** changed.
+ * It's up to the caller to bind them to the right context(s). + * + * @param args Parameters to use to construct the instance. + * @param sz Number of parameters to use to construct the instance. + * @return A wrapper containing the new instance, if any. + */ + [[nodiscard]] meta_any construct(meta_any *const args, const size_type sz) const { + if(node.details) { + if(const auto *candidate = lookup(args, sz, false, [first = node.details->ctor.cbegin(), last = node.details->ctor.cend()]() mutable { return first == last ? nullptr : &(first++)->second; }); candidate) { + return candidate->invoke(*ctx, args); + } + } + + if(sz == 0u && node.default_constructor) { + return node.default_constructor(*ctx); + } + + return meta_any{meta_ctx_arg, *ctx}; + } + + /** + * @copybrief construct + * @tparam Args Types of arguments to use to construct the instance. + * @param args Parameters to use to construct the instance. + * @return A wrapper containing the new instance, if any. + */ + template + [[nodiscard]] meta_any construct(Args &&...args) const { + meta_any arguments[sizeof...(Args) + 1u]{{*ctx, std::forward(args)}...}; + return construct(arguments, sizeof...(Args)); + } + + /** + * @brief Wraps an opaque element of the underlying type. + * @param element A valid pointer to an element of the underlying type. + * @return A wrapper that references the given instance. + */ + meta_any from_void(void *element) const { + return (element && node.from_void) ? node.from_void(*ctx, element, nullptr) : meta_any{meta_ctx_arg, *ctx}; + } + + /*! @copydoc from_void */ + meta_any from_void(const void *element) const { + return (element && node.from_void) ? node.from_void(*ctx, nullptr, element) : meta_any{meta_ctx_arg, *ctx}; + } + + /** + * @brief Invokes a function given an identifier, if possible. + * + * @warning + * The context of the arguments is **not** changed.
+ * It's up to the caller to bind them to the right context(s). + * + * @param id Unique identifier. + * @param instance An opaque instance of the underlying type. + * @param args Parameters to use to invoke the function. + * @param sz Number of parameters to use to invoke the function. + * @return A wrapper containing the returned value, if any. + */ + meta_any invoke(const id_type id, meta_handle instance, meta_any *const args, const size_type sz) const { + if(node.details) { + if(auto it = node.details->func.find(id); it != node.details->func.cend()) { + if(const auto *candidate = lookup(args, sz, (instance->data() == nullptr), [curr = &it->second]() mutable { return curr ? std::exchange(curr, curr->next.get()) : nullptr; }); candidate) { + return candidate->invoke(*ctx, meta_handle{*ctx, std::move(instance)}, args); + } + } + } + + for(auto &&curr: base()) { + if(auto elem = curr.second.invoke(id, *instance.operator->(), args, sz); elem) { + return elem; + } + } + + return meta_any{meta_ctx_arg, *ctx}; + } + + /** + * @copybrief invoke + * + * @param id Unique identifier. + * @tparam Args Types of arguments to use to invoke the function. + * @param instance An opaque instance of the underlying type. + * @param args Parameters to use to invoke the function. + * @return A wrapper containing the returned value, if any. + */ + template + meta_any invoke(const id_type id, meta_handle instance, Args &&...args) const { + meta_any arguments[sizeof...(Args) + 1u]{{*ctx, std::forward(args)}...}; + return invoke(id, meta_handle{*ctx, std::move(instance)}, arguments, sizeof...(Args)); + } + + /** + * @brief Sets the value of a given variable. + * @tparam Type Type of value to assign. + * @param id Unique identifier. + * @param instance An opaque instance of the underlying type. + * @param value Parameter to use to set the underlying variable. + * @return True in case of success, false otherwise. + */ + template + bool set(const id_type id, meta_handle instance, Type &&value) const { + const auto candidate = data(id); + return candidate && candidate.set(std::move(instance), std::forward(value)); + } + + /** + * @brief Gets the value of a given variable. + * @param id Unique identifier. + * @param instance An opaque instance of the underlying type. + * @return A wrapper containing the value of the underlying variable. + */ + [[nodiscard]] meta_any get(const id_type id, meta_handle instance) const { + const auto candidate = data(id); + return candidate ? candidate.get(std::move(instance)) : meta_any{meta_ctx_arg, *ctx}; + } + + /** + * @brief Returns a range to visit registered top-level meta properties. + * @return An iterable range to visit registered top-level meta properties. + */ + [[nodiscard]] meta_range prop() const noexcept { + using range_type = meta_range; + return node.details ? range_type{{*ctx, node.details->prop.cbegin()}, {*ctx, node.details->prop.cend()}} : range_type{}; + } + + /** + * @brief Lookup utility for meta properties (bases are also visited). + * @param key The key to use to search for a property. + * @return The registered meta property for the given key, if any. + */ + [[nodiscard]] meta_prop prop(const id_type key) const { + if(node.details) { + if(const auto it = node.details->prop.find(key); it != node.details->prop.cend()) { + return meta_prop{*ctx, it->second}; + } + } + + for(auto &&curr: base()) { + if(auto elem = curr.second.prop(key); elem) { + return elem; + } + } + + return meta_prop{}; + } + + /** + * @brief Returns true if an object is valid, false otherwise. + * @return True if the object is valid, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return !(ctx == nullptr); + } + + /** + * @brief Checks if two objects refer to the same type. + * @param other The object with which to compare. + * @return True if the objects refer to the same type, false otherwise. + */ + [[nodiscard]] bool operator==(const meta_type &other) const noexcept { + return (ctx == other.ctx) && ((!node.info && !other.node.info) || (node.info && other.node.info && *node.info == *other.node.info)); + } + +private: + internal::meta_type_node node; + const meta_ctx *ctx; +}; + +/** + * @brief Checks if two objects refer to the same type. + * @param lhs An object, either valid or not. + * @param rhs An object, either valid or not. + * @return False if the objects refer to the same node, true otherwise. + */ +[[nodiscard]] inline bool operator!=(const meta_type &lhs, const meta_type &rhs) noexcept { + return !(lhs == rhs); +} + +[[nodiscard]] inline meta_type meta_any::type() const noexcept { + return node.info ? meta_type{*ctx, node} : meta_type{}; +} + +template +meta_any meta_any::invoke(const id_type id, Args &&...args) const { + return type().invoke(id, *this, std::forward(args)...); +} + +template +meta_any meta_any::invoke(const id_type id, Args &&...args) { + return type().invoke(id, *this, std::forward(args)...); +} + +template +bool meta_any::set(const id_type id, Type &&value) { + return type().set(id, *this, std::forward(value)); +} + +[[nodiscard]] inline meta_any meta_any::get(const id_type id) const { + return type().get(id, *this); +} + +[[nodiscard]] inline meta_any meta_any::get(const id_type id) { + return type().get(id, *this); +} + +[[nodiscard]] inline meta_any meta_any::allow_cast(const meta_type &type) const { + if(node.info && *node.info == type.info()) { + return as_ref(); + } + + if(const auto *value = data(); node.details) { + if(auto it = node.details->conv.find(type.info().hash()); it != node.details->conv.cend()) { + return it->second.conv(*ctx, data()); + } + + for(auto &&curr: node.details->base) { + const auto &as_const = curr.second.type(internal::meta_context::from(*ctx)).from_void(*ctx, nullptr, curr.second.cast(value)); + + if(auto other = as_const.allow_cast(type); other) { + return other; + } + } + } + + if(node.conversion_helper && (type.is_arithmetic() || type.is_enum())) { + // exploits the fact that arithmetic types and enums are also default constructible + auto other = type.construct(); + ENTT_ASSERT(other.node.conversion_helper, "Conversion helper not found"); + const auto value = node.conversion_helper(nullptr, storage.data()); + other.node.conversion_helper(other.storage.data(), &value); + return other; + } + + return meta_any{meta_ctx_arg, *ctx}; +} + +inline bool meta_any::assign(const meta_any &other) { + auto value = other.allow_cast({*ctx, node}); + return value && storage.assign(std::move(value.storage)); +} + +inline bool meta_any::assign(meta_any &&other) { + if(*node.info == *other.node.info) { + return storage.assign(std::move(other.storage)); + } + + return assign(std::as_const(other)); +} + +[[nodiscard]] inline meta_type meta_data::type() const noexcept { + return meta_type{*ctx, node->type(internal::meta_context::from(*ctx))}; +} + +[[nodiscard]] inline meta_type meta_data::arg(const size_type index) const noexcept { + return index < arity() ? node->arg(*ctx, index) : meta_type{}; +} + +[[nodiscard]] inline meta_type meta_func::ret() const noexcept { + return meta_type{*ctx, node->ret(internal::meta_context::from(*ctx))}; +} + +[[nodiscard]] inline meta_type meta_func::arg(const size_type index) const noexcept { + return index < arity() ? node->arg(*ctx, index) : meta_type{}; +} + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +class meta_sequence_container::meta_iterator final { + friend class meta_sequence_container; + + enum class operation : std::uint8_t { + incr, + deref + }; + + using vtable_type = void(const operation, const any &, const std::ptrdiff_t, meta_any *); + + template + static void basic_vtable(const operation op, const any &value, const std::ptrdiff_t offset, meta_any *other) { + switch(op) { + case operation::incr: { + auto &it = any_cast(const_cast(value)); + it = std::next(it, offset); + } break; + case operation::deref: { + const auto &it = any_cast(value); + other->emplace(*it); + } break; + } + } + +public: + using difference_type = std::ptrdiff_t; + using value_type = meta_any; + using pointer = input_iterator_pointer; + using reference = value_type; + using iterator_category = std::input_iterator_tag; + + constexpr meta_iterator() noexcept + : ctx{}, + vtable{}, + handle{} {} + + template + explicit meta_iterator(const meta_ctx &area, It iter) noexcept + : ctx{&area}, + vtable{&basic_vtable}, + handle{std::move(iter)} {} + + meta_iterator &operator++() noexcept { + vtable(operation::incr, handle, 1, nullptr); + return *this; + } + + meta_iterator operator++(int value) noexcept { + meta_iterator orig = *this; + vtable(operation::incr, handle, ++value, nullptr); + return orig; + } + + meta_iterator &operator--() noexcept { + vtable(operation::incr, handle, -1, nullptr); + return *this; + } + + meta_iterator operator--(int value) noexcept { + meta_iterator orig = *this; + vtable(operation::incr, handle, --value, nullptr); + return orig; + } + + [[nodiscard]] reference operator*() const { + reference other{meta_ctx_arg, *ctx}; + vtable(operation::deref, handle, 0, &other); + return other; + } + + [[nodiscard]] pointer operator->() const { + return operator*(); + } + + [[nodiscard]] explicit operator bool() const noexcept { + return static_cast(handle); + } + + [[nodiscard]] bool operator==(const meta_iterator &other) const noexcept { + return handle == other.handle; + } + + [[nodiscard]] bool operator!=(const meta_iterator &other) const noexcept { + return !(*this == other); + } + +private: + const meta_ctx *ctx; + vtable_type *vtable; + any handle; +}; + +class meta_associative_container::meta_iterator final { + enum class operation : std::uint8_t { + incr, + deref + }; + + using vtable_type = void(const operation, const any &, std::pair *); + + template + static void basic_vtable(const operation op, const any &value, std::pair *other) { + switch(op) { + case operation::incr: + ++any_cast(const_cast(value)); + break; + case operation::deref: + const auto &it = any_cast(value); + if constexpr(KeyOnly) { + other->first.emplace(*it); + } else { + other->first.emplacefirst))>(it->first); + other->second.emplacesecond))>(it->second); + } + break; + } + } + +public: + using difference_type = std::ptrdiff_t; + using value_type = std::pair; + using pointer = input_iterator_pointer; + using reference = value_type; + using iterator_category = std::input_iterator_tag; + + constexpr meta_iterator() noexcept + : ctx{}, + vtable{}, + handle{} {} + + template + meta_iterator(const meta_ctx &area, std::integral_constant, It iter) noexcept + : ctx{&area}, + vtable{&basic_vtable}, + handle{std::move(iter)} {} + + meta_iterator &operator++() noexcept { + vtable(operation::incr, handle, nullptr); + return *this; + } + + meta_iterator operator++(int) noexcept { + meta_iterator orig = *this; + return ++(*this), orig; + } + + [[nodiscard]] reference operator*() const { + reference other{{meta_ctx_arg, *ctx}, {meta_ctx_arg, *ctx}}; + vtable(operation::deref, handle, &other); + return other; + } + + [[nodiscard]] pointer operator->() const { + return operator*(); + } + + [[nodiscard]] explicit operator bool() const noexcept { + return static_cast(handle); + } + + [[nodiscard]] bool operator==(const meta_iterator &other) const noexcept { + return handle == other.handle; + } + + [[nodiscard]] bool operator!=(const meta_iterator &other) const noexcept { + return !(*this == other); + } + +private: + const meta_ctx *ctx; + vtable_type *vtable; + any handle; +}; + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Returns the meta value type of a container. + * @return The meta value type of the container. + */ +[[nodiscard]] inline meta_type meta_sequence_container::value_type() const noexcept { + return value_type_node ? meta_type{*ctx, value_type_node(internal::meta_context::from(*ctx))} : meta_type{}; +} + +/** + * @brief Returns the size of a container. + * @return The size of the container. + */ +[[nodiscard]] inline meta_sequence_container::size_type meta_sequence_container::size() const noexcept { + return size_fn(storage); +} + +/** + * @brief Resizes a container to contain a given number of elements. + * @param sz The new size of the container. + * @return True in case of success, false otherwise. + */ +inline bool meta_sequence_container::resize(const size_type sz) { + return resize_fn(storage, sz); +} + +/** + * @brief Clears the content of a container. + * @return True in case of success, false otherwise. + */ +inline bool meta_sequence_container::clear() { + return resize_fn(storage, 0u); +} + +/** + * @brief Returns an iterator to the first element of a container. + * @return An iterator to the first element of the container. + */ +[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::begin() { + return iter_fn(*ctx, storage, false); +} + +/** + * @brief Returns an iterator that is past the last element of a container. + * @return An iterator that is past the last element of the container. + */ +[[nodiscard]] inline meta_sequence_container::iterator meta_sequence_container::end() { + return iter_fn(*ctx, storage, true); +} + +/** + * @brief Inserts an element at a specified location of a container. + * @param it Iterator before which the element will be inserted. + * @param value Element value to insert. + * @return A possibly invalid iterator to the inserted element. + */ +inline meta_sequence_container::iterator meta_sequence_container::insert(iterator it, meta_any value) { + return insert_or_erase_fn(*ctx, storage, it.handle, value); +} + +/** + * @brief Removes a given element from a container. + * @param it Iterator to the element to remove. + * @return A possibly invalid iterator following the last removed element. + */ +inline meta_sequence_container::iterator meta_sequence_container::erase(iterator it) { + return insert(std::move(it), {}); +} + +/** + * @brief Returns a reference to the element at a given location of a container + * (no bounds checking is performed). + * @param pos The position of the element to return. + * @return A reference to the requested element properly wrapped. + */ +[[nodiscard]] inline meta_any meta_sequence_container::operator[](const size_type pos) { + auto it = begin(); + it.operator++(static_cast(pos) - 1); + return *it; +} + +/** + * @brief Returns false if a proxy is invalid, true otherwise. + * @return False if the proxy is invalid, true otherwise. + */ +[[nodiscard]] inline meta_sequence_container::operator bool() const noexcept { + return static_cast(storage); +} + +/** + * @brief Returns true if a container is also key-only, false otherwise. + * @return True if the associative container is also key-only, false otherwise. + */ +[[nodiscard]] inline bool meta_associative_container::key_only() const noexcept { + return key_only_container; +} + +/** + * @brief Returns the meta key type of a container. + * @return The meta key type of the a container. + */ +[[nodiscard]] inline meta_type meta_associative_container::key_type() const noexcept { + return key_type_node ? meta_type{*ctx, key_type_node(internal::meta_context::from(*ctx))} : meta_type{}; +} + +/** + * @brief Returns the meta mapped type of a container. + * @return The meta mapped type of the a container. + */ +[[nodiscard]] inline meta_type meta_associative_container::mapped_type() const noexcept { + return mapped_type_node ? meta_type{*ctx, mapped_type_node(internal::meta_context::from(*ctx))} : meta_type{}; +} + +/*! @copydoc meta_sequence_container::value_type */ +[[nodiscard]] inline meta_type meta_associative_container::value_type() const noexcept { + return value_type_node ? meta_type{*ctx, value_type_node(internal::meta_context::from(*ctx))} : meta_type{}; +} + +/*! @copydoc meta_sequence_container::size */ +[[nodiscard]] inline meta_associative_container::size_type meta_associative_container::size() const noexcept { + return size_fn(storage); +} + +/*! @copydoc meta_sequence_container::clear */ +inline bool meta_associative_container::clear() { + return clear_fn(storage); +} + +/*! @copydoc meta_sequence_container::begin */ +[[nodiscard]] inline meta_associative_container::iterator meta_associative_container::begin() { + return iter_fn(*ctx, storage, false); +} + +/*! @copydoc meta_sequence_container::end */ +[[nodiscard]] inline meta_associative_container::iterator meta_associative_container::end() { + return iter_fn(*ctx, storage, true); +} + +/** + * @brief Inserts a key only element into a container. + * @param key The key of the element to insert. + * @return A bool denoting whether the insertion took place. + */ +inline bool meta_associative_container::insert(meta_any key) { + meta_any value{*ctx, std::in_place_type}; + return (insert_or_erase_fn(storage, key, value) != 0u); +} + +/** + * @brief Inserts a key/value element into a container. + * @param key The key of the element to insert. + * @param value The value of the element to insert. + * @return A bool denoting whether the insertion took place. + */ +inline bool meta_associative_container::insert(meta_any key, meta_any value) { + return (insert_or_erase_fn(storage, key, value) != 0u); +} + +/** + * @brief Removes the specified element from a container. + * @param key The key of the element to remove. + * @return A bool denoting whether the removal took place. + */ +inline meta_associative_container::size_type meta_associative_container::erase(meta_any key) { + return insert(std::move(key), meta_any{meta_ctx_arg, *ctx}); +} + +/** + * @brief Returns an iterator to the element with a given key, if any. + * @param key The key of the element to search. + * @return An iterator to the element with the given key, if any. + */ +[[nodiscard]] inline meta_associative_container::iterator meta_associative_container::find(meta_any key) { + return find_fn(*ctx, storage, key); +} + +/** + * @brief Returns false if a proxy is invalid, true otherwise. + * @return False if the proxy is invalid, true otherwise. + */ +[[nodiscard]] inline meta_associative_container::operator bool() const noexcept { + return static_cast(storage); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/meta/node.hpp b/LiteLoader/third-party/include/entt/meta/node.hpp new file mode 100644 index 0000000..4dfdd54 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/node.hpp @@ -0,0 +1,236 @@ +#ifndef ENTT_META_NODE_HPP +#define ENTT_META_NODE_HPP + +#include +#include +#include +#include +#include "../config/config.h" +#include "../container/dense_map.hpp" +#include "../core/attribute.h" +#include "../core/enum.hpp" +#include "../core/fwd.hpp" +#include "../core/type_info.hpp" +#include "../core/type_traits.hpp" +#include "../core/utility.hpp" +#include "context.hpp" +#include "type_traits.hpp" + +namespace entt { + +class meta_any; +class meta_type; +struct meta_handle; + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +enum class meta_traits : std::uint32_t { + is_none = 0x0000, + is_const = 0x0001, + is_static = 0x0002, + is_arithmetic = 0x0004, + is_integral = 0x0008, + is_signed = 0x0010, + is_array = 0x0020, + is_enum = 0x0040, + is_class = 0x0080, + is_meta_pointer_like = 0x0100, + is_meta_sequence_container = 0x0200, + is_meta_associative_container = 0x0400, + _entt_enum_as_bitmask +}; + +struct meta_type_node; + +struct meta_prop_node { + meta_type_node (*type)(const meta_context &) noexcept {}; + std::shared_ptr value{}; +}; + +struct meta_base_node { + meta_type_node (*type)(const meta_context &) noexcept {}; + const void *(*cast)(const void *) noexcept {}; +}; + +struct meta_conv_node { + meta_any (*conv)(const meta_ctx &, const void *){}; +}; + +struct meta_ctor_node { + using size_type = std::size_t; + + size_type arity{0u}; + meta_type (*arg)(const meta_ctx &, const size_type) noexcept {}; + meta_any (*invoke)(const meta_ctx &, meta_any *const){}; +}; + +struct meta_dtor_node { + void (*dtor)(void *){}; +}; + +struct meta_data_node { + using size_type = std::size_t; + + meta_traits traits{meta_traits::is_none}; + size_type arity{0u}; + meta_type_node (*type)(const meta_context &) noexcept {}; + meta_type (*arg)(const meta_ctx &, const size_type) noexcept {}; + bool (*set)(meta_handle, meta_any){}; + meta_any (*get)(const meta_ctx &, meta_handle){}; + dense_map prop{}; +}; + +struct meta_func_node { + using size_type = std::size_t; + + meta_traits traits{meta_traits::is_none}; + size_type arity{0u}; + meta_type_node (*ret)(const meta_context &) noexcept {}; + meta_type (*arg)(const meta_ctx &, const size_type) noexcept {}; + meta_any (*invoke)(const meta_ctx &, meta_handle, meta_any *const){}; + std::shared_ptr next{}; + dense_map prop{}; +}; + +struct meta_template_node { + using size_type = std::size_t; + + size_type arity{0u}; + meta_type_node (*type)(const meta_context &) noexcept {}; + meta_type_node (*arg)(const meta_context &, const size_type) noexcept {}; +}; + +struct meta_type_descriptor { + dense_map ctor{}; + dense_map base{}; + dense_map conv{}; + dense_map data{}; + dense_map func{}; + dense_map prop{}; +}; + +struct meta_type_node { + using size_type = std::size_t; + + const type_info *info{}; + id_type id{}; + meta_traits traits{meta_traits::is_none}; + size_type size_of{0u}; + meta_type_node (*resolve)(const meta_context &) noexcept {}; + meta_type_node (*remove_pointer)(const meta_context &) noexcept {}; + meta_any (*default_constructor)(const meta_ctx &){}; + double (*conversion_helper)(void *, const void *){}; + meta_any (*from_void)(const meta_ctx &, void *, const void *){}; + meta_template_node templ{}; + meta_dtor_node dtor{}; + std::shared_ptr details{}; +}; + +template +meta_type_node resolve(const meta_context &) noexcept; + +template +[[nodiscard]] auto meta_arg_node(const meta_context &context, type_list, [[maybe_unused]] const std::size_t index) noexcept { + std::size_t pos{}; + meta_type_node (*value)(const meta_context &) noexcept = nullptr; + ((value = (pos++ == index ? &resolve>> : value)), ...); + ENTT_ASSERT(value != nullptr, "Out of bounds"); + return value(context); +} + +[[nodiscard]] inline const void *try_cast(const meta_context &context, const meta_type_node &from, const meta_type_node &to, const void *instance) noexcept { + if(from.info && to.info && *from.info == *to.info) { + return instance; + } + + if(from.details) { + for(auto &&curr: from.details->base) { + if(const void *elem = try_cast(context, curr.second.type(context), to, curr.second.cast(instance)); elem) { + return elem; + } + } + } + + return nullptr; +} + +[[nodiscard]] inline const meta_type_node *try_resolve(const meta_context &context, const type_info &info) noexcept { + const auto it = context.value.find(info.hash()); + return it != context.value.end() ? &it->second : nullptr; +} + +template +[[nodiscard]] meta_type_node resolve(const meta_context &context) noexcept { + static_assert(std::is_same_v>>, "Invalid type"); + + if(auto *elem = try_resolve(context, type_id()); elem) { + return *elem; + } + + meta_type_node node{ + &type_id(), + type_id().hash(), + (std::is_arithmetic_v ? meta_traits::is_arithmetic : meta_traits::is_none) + | (std::is_integral_v ? meta_traits::is_integral : meta_traits::is_none) + | (std::is_signed_v ? meta_traits::is_signed : meta_traits::is_none) + | (std::is_array_v ? meta_traits::is_array : meta_traits::is_none) + | (std::is_enum_v ? meta_traits::is_enum : meta_traits::is_none) + | (std::is_class_v ? meta_traits::is_class : meta_traits::is_none) + | (is_meta_pointer_like_v ? meta_traits::is_meta_pointer_like : meta_traits::is_none) + | (is_complete_v> ? meta_traits::is_meta_sequence_container : meta_traits::is_none) + | (is_complete_v> ? meta_traits::is_meta_associative_container : meta_traits::is_none), + size_of_v, + &resolve, + &resolve>>}; + + if constexpr(std::is_default_constructible_v) { + node.default_constructor = +[](const meta_ctx &ctx) { + return meta_any{ctx, std::in_place_type}; + }; + } + + if constexpr(std::is_arithmetic_v) { + node.conversion_helper = +[](void *bin, const void *value) { + return bin ? static_cast(*static_cast(bin) = static_cast(*static_cast(value))) : static_cast(*static_cast(value)); + }; + } else if constexpr(std::is_enum_v) { + node.conversion_helper = +[](void *bin, const void *value) { + return bin ? static_cast(*static_cast(bin) = static_cast(static_cast>(*static_cast(value)))) : static_cast(*static_cast(value)); + }; + } + + if constexpr(!std::is_same_v && !std::is_function_v) { + node.from_void = +[](const meta_ctx &ctx, void *element, const void *as_const) { + if(element) { + return meta_any{ctx, std::in_place_type &>, *static_cast *>(element)}; + } + + return meta_any{ctx, std::in_place_type &>, *static_cast *>(as_const)}; + }; + } + + if constexpr(is_complete_v>) { + node.templ = meta_template_node{ + meta_template_traits::args_type::size, + &resolve::class_type>, + +[](const meta_context &area, const std::size_t index) noexcept { return meta_arg_node(area, typename meta_template_traits::args_type{}, index); }}; + } + + return node; +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/meta/pointer.hpp b/LiteLoader/third-party/include/entt/meta/pointer.hpp similarity index 86% rename from LiteLoader/Header/third-party/entt/meta/pointer.hpp rename to LiteLoader/third-party/include/entt/meta/pointer.hpp index 62a2453..58d2f10 100644 --- a/LiteLoader/Header/third-party/entt/meta/pointer.hpp +++ b/LiteLoader/third-party/include/entt/meta/pointer.hpp @@ -1,24 +1,19 @@ #ifndef ENTT_META_POINTER_HPP #define ENTT_META_POINTER_HPP - #include #include #include "type_traits.hpp" - namespace entt { - /** * @brief Makes plain pointers pointer-like types for the meta system. * @tparam Type Element type. */ template struct is_meta_pointer_like - : std::true_type -{}; - + : std::true_type {}; /** * @brief Partial specialization used to reject pointers to arrays. @@ -26,10 +21,8 @@ struct is_meta_pointer_like * @tparam N Number of elements of the array. */ template -struct is_meta_pointer_like - : std::false_type -{}; - +struct is_meta_pointer_like + : std::false_type {}; /** * @brief Makes `std::shared_ptr`s of any type pointer-like types for the meta @@ -38,9 +31,7 @@ struct is_meta_pointer_like */ template struct is_meta_pointer_like> - : std::true_type -{}; - + : std::true_type {}; /** * @brief Makes `std::unique_ptr`s of any type pointer-like types for the meta @@ -50,11 +41,8 @@ struct is_meta_pointer_like> */ template struct is_meta_pointer_like> - : std::true_type -{}; - - -} + : std::true_type {}; +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/meta/policy.hpp b/LiteLoader/third-party/include/entt/meta/policy.hpp new file mode 100644 index 0000000..0744816 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/policy.hpp @@ -0,0 +1,86 @@ +#ifndef ENTT_META_POLICY_HPP +#define ENTT_META_POLICY_HPP + +#include + +namespace entt { + +/*! @brief Empty class type used to request the _as ref_ policy. */ +struct as_ref_t final { + /** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + template + static constexpr bool value = std::is_reference_v && !std::is_const_v>; + /** + * Internal details not to be documented. + * @endcond + */ +}; + +/*! @brief Empty class type used to request the _as cref_ policy. */ +struct as_cref_t final { + /** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + template + static constexpr bool value = std::is_reference_v; + /** + * Internal details not to be documented. + * @endcond + */ +}; + +/*! @brief Empty class type used to request the _as-is_ policy. */ +struct as_is_t final { + /** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + template + static constexpr bool value = true; + /** + * Internal details not to be documented. + * @endcond + */ +}; + +/*! @brief Empty class type used to request the _as void_ policy. */ +struct as_void_t final { + /** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + template + static constexpr bool value = true; + /** + * Internal details not to be documented. + * @endcond + */ +}; + +/** + * @brief Provides the member constant `value` to true if a type also is a meta + * policy, false otherwise. + * @tparam Type Type to check. + */ +template +struct is_meta_policy + : std::disjunction< + std::is_same, + std::is_same, + std::is_same, + std::is_same> {}; + +/** + * @brief Helper variable template. + * @tparam Type Type to check. + */ +template +inline constexpr bool is_meta_policy_v = is_meta_policy::value; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/meta/range.hpp b/LiteLoader/third-party/include/entt/meta/range.hpp new file mode 100644 index 0000000..e3d8154 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/range.hpp @@ -0,0 +1,150 @@ +#ifndef ENTT_META_RANGE_HPP +#define ENTT_META_RANGE_HPP + +#include +#include +#include +#include "../core/fwd.hpp" +#include "../core/iterator.hpp" +#include "context.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +struct meta_range_iterator final { + using difference_type = std::ptrdiff_t; + using value_type = std::pair; + using pointer = input_iterator_pointer; + using reference = value_type; + using iterator_category = std::input_iterator_tag; + + meta_range_iterator() noexcept + : it{}, + ctx{} {} + + meta_range_iterator(const meta_ctx &area, const It iter) noexcept + : it{iter}, + ctx{&area} {} + + meta_range_iterator &operator++() noexcept { + return ++it, *this; + } + + meta_range_iterator operator++(int) noexcept { + meta_range_iterator orig = *this; + return ++(*this), orig; + } + + constexpr meta_range_iterator &operator--() noexcept { + return --it, *this; + } + + constexpr meta_range_iterator operator--(int) noexcept { + meta_range_iterator orig = *this; + return operator--(), orig; + } + + constexpr meta_range_iterator &operator+=(const difference_type value) noexcept { + it += value; + return *this; + } + + constexpr meta_range_iterator operator+(const difference_type value) const noexcept { + meta_range_iterator copy = *this; + return (copy += value); + } + + constexpr meta_range_iterator &operator-=(const difference_type value) noexcept { + return (*this += -value); + } + + constexpr meta_range_iterator operator-(const difference_type value) const noexcept { + return (*this + -value); + } + + [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { + return {it[value].first, Type{*ctx, it[value].second}}; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return operator*(); + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return {it->first, Type{*ctx, it->second}}; + } + + template + friend constexpr std::ptrdiff_t operator-(const meta_range_iterator &, const meta_range_iterator &) noexcept; + + template + friend constexpr bool operator==(const meta_range_iterator &, const meta_range_iterator &) noexcept; + + template + friend constexpr bool operator<(const meta_range_iterator &, const meta_range_iterator &) noexcept; + +private: + It it; + const meta_ctx *ctx; +}; + +template +[[nodiscard]] constexpr std::ptrdiff_t operator-(const meta_range_iterator &lhs, const meta_range_iterator &rhs) noexcept { + return lhs.it - rhs.it; +} + +template +[[nodiscard]] constexpr bool operator==(const meta_range_iterator &lhs, const meta_range_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const meta_range_iterator &lhs, const meta_range_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +[[nodiscard]] constexpr bool operator<(const meta_range_iterator &lhs, const meta_range_iterator &rhs) noexcept { + return lhs.it < rhs.it; +} + +template +[[nodiscard]] constexpr bool operator>(const meta_range_iterator &lhs, const meta_range_iterator &rhs) noexcept { + return rhs < lhs; +} + +template +[[nodiscard]] constexpr bool operator<=(const meta_range_iterator &lhs, const meta_range_iterator &rhs) noexcept { + return !(lhs > rhs); +} + +template +[[nodiscard]] constexpr bool operator>=(const meta_range_iterator &lhs, const meta_range_iterator &rhs) noexcept { + return !(lhs < rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Iterable range to use to iterate all types of meta objects. + * @tparam Type Type of meta objects returned. + * @tparam It Type of forward iterator. + */ +template +using meta_range = iterable_adaptor>; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/meta/resolve.hpp b/LiteLoader/third-party/include/entt/meta/resolve.hpp new file mode 100644 index 0000000..9360db5 --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/resolve.hpp @@ -0,0 +1,102 @@ +#ifndef ENTT_META_RESOLVE_HPP +#define ENTT_META_RESOLVE_HPP + +#include +#include "../core/type_info.hpp" +#include "../locator/locator.hpp" +#include "context.hpp" +#include "meta.hpp" +#include "node.hpp" +#include "range.hpp" + +namespace entt { + +/** + * @brief Returns the meta type associated with a given type. + * @tparam Type Type to use to search for a meta type. + * @param ctx The context from which to search for meta types. + * @return The meta type associated with the given type, if any. + */ +template +[[nodiscard]] meta_type resolve(const meta_ctx &ctx) noexcept { + auto &&context = internal::meta_context::from(ctx); + return {ctx, internal::resolve>>(context)}; +} + +/** + * @brief Returns the meta type associated with a given type. + * @tparam Type Type to use to search for a meta type. + * @return The meta type associated with the given type, if any. + */ +template +[[nodiscard]] meta_type resolve() noexcept { + return resolve(locator::value_or()); +} + +/** + * @brief Returns a range to use to visit all meta types. + * @param ctx The context from which to search for meta types. + * @return An iterable range to use to visit all meta types. + */ +[[nodiscard]] inline meta_range resolve(const meta_ctx &ctx) noexcept { + auto &&context = internal::meta_context::from(ctx); + return {{ctx, context.value.cbegin()}, {ctx, context.value.cend()}}; +} + +/** + * @brief Returns a range to use to visit all meta types. + * @return An iterable range to use to visit all meta types. + */ +[[nodiscard]] inline meta_range resolve() noexcept { + return resolve(locator::value_or()); +} + +/** + * @brief Returns the meta type associated with a given identifier, if any. + * @param ctx The context from which to search for meta types. + * @param id Unique identifier. + * @return The meta type associated with the given identifier, if any. + */ +[[nodiscard]] inline meta_type resolve(const meta_ctx &ctx, const id_type id) noexcept { + for(auto &&curr: resolve(ctx)) { + if(curr.second.id() == id) { + return curr.second; + } + } + + return meta_type{}; +} + +/** + * @brief Returns the meta type associated with a given identifier, if any. + * @param id Unique identifier. + * @return The meta type associated with the given identifier, if any. + */ +[[nodiscard]] inline meta_type resolve(const id_type id) noexcept { + return resolve(locator::value_or(), id); +} + +/** + * @brief Returns the meta type associated with a given type info object. + * @param ctx The context from which to search for meta types. + * @param info The type info object of the requested type. + * @return The meta type associated with the given type info object, if any. + */ +[[nodiscard]] inline meta_type resolve(const meta_ctx &ctx, const type_info &info) noexcept { + auto &&context = internal::meta_context::from(ctx); + const auto *elem = internal::try_resolve(context, info); + return elem ? meta_type{ctx, *elem} : meta_type{}; +} + +/** + * @brief Returns the meta type associated with a given type info object. + * @param info The type info object of the requested type. + * @return The meta type associated with the given type info object, if any. + */ +[[nodiscard]] inline meta_type resolve(const type_info &info) noexcept { + return resolve(locator::value_or(), info); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/meta/template.hpp b/LiteLoader/third-party/include/entt/meta/template.hpp similarity index 84% rename from LiteLoader/Header/third-party/entt/meta/template.hpp rename to LiteLoader/third-party/include/entt/meta/template.hpp index 11f1d25..0009b51 100644 --- a/LiteLoader/Header/third-party/entt/meta/template.hpp +++ b/LiteLoader/third-party/include/entt/meta/template.hpp @@ -1,24 +1,20 @@ #ifndef ENTT_META_TEMPLATE_HPP #define ENTT_META_TEMPLATE_HPP - #include "../core/type_traits.hpp" - namespace entt { - /*! @brief Utility class to disambiguate class templates. */ -template typename> +template class> struct meta_class_template_tag {}; - /** * @brief General purpose traits class for generating meta template information. * @tparam Clazz Type of class template. * @tparam Args Types of template arguments. */ -template typename Clazz, typename... Args> +template class Clazz, typename... Args> struct meta_template_traits> { /*! @brief Wrapped class template. */ using class_type = meta_class_template_tag; @@ -26,8 +22,6 @@ struct meta_template_traits> { using args_type = type_list; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/Header/third-party/entt/meta/type_traits.hpp b/LiteLoader/third-party/include/entt/meta/type_traits.hpp similarity index 61% rename from LiteLoader/Header/third-party/entt/meta/type_traits.hpp rename to LiteLoader/third-party/include/entt/meta/type_traits.hpp index 8fe91aa..51b69f6 100644 --- a/LiteLoader/Header/third-party/entt/meta/type_traits.hpp +++ b/LiteLoader/third-party/include/entt/meta/type_traits.hpp @@ -1,13 +1,11 @@ #ifndef ENTT_META_TYPE_TRAITS_HPP #define ENTT_META_TYPE_TRAITS_HPP - #include - +#include namespace entt { - /** * @brief Traits class template to be specialized to enable support for meta * template information. @@ -15,7 +13,6 @@ namespace entt { template struct meta_template_traits; - /** * @brief Traits class template to be specialized to enable support for meta * sequence containers. @@ -23,7 +20,6 @@ struct meta_template_traits; template struct meta_sequence_container_traits; - /** * @brief Traits class template to be specialized to enable support for meta * associative containers. @@ -31,31 +27,6 @@ struct meta_sequence_container_traits; template struct meta_associative_container_traits; - -/** - * @brief Provides the member constant `value` to true if a meta associative - * container claims to wrap a key-only type, false otherwise. - * @tparam Type Potentially key-only meta associative container type. - */ -template -struct is_key_only_meta_associative_container: std::true_type {}; - - -/*! @copydoc is_key_only_meta_associative_container */ -template -struct is_key_only_meta_associative_container::type::mapped_type>> - : std::false_type -{}; - - -/** - * @brief Helper variable template. - * @tparam Type Potentially key-only meta associative container type. - */ -template -inline constexpr auto is_key_only_meta_associative_container_v = is_key_only_meta_associative_container::value; - - /** * @brief Provides the member constant `value` to true if a given type is a * pointer-like type from the point of view of the meta system, false otherwise. @@ -64,7 +35,6 @@ inline constexpr auto is_key_only_meta_associative_container_v = is_key_only_met template struct is_meta_pointer_like: std::false_type {}; - /** * @brief Partial specialization to ensure that const pointer-like types are * also accepted. @@ -73,7 +43,6 @@ struct is_meta_pointer_like: std::false_type {}; template struct is_meta_pointer_like: is_meta_pointer_like {}; - /** * @brief Helper variable template. * @tparam Type Potentially pointer-like type. @@ -81,8 +50,6 @@ struct is_meta_pointer_like: is_meta_pointer_like {}; template inline constexpr auto is_meta_pointer_like_v = is_meta_pointer_like::value; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/meta/utility.hpp b/LiteLoader/third-party/include/entt/meta/utility.hpp new file mode 100644 index 0000000..3ee98ee --- /dev/null +++ b/LiteLoader/third-party/include/entt/meta/utility.hpp @@ -0,0 +1,539 @@ +#ifndef ENTT_META_UTILITY_HPP +#define ENTT_META_UTILITY_HPP + +#include +#include +#include +#include +#include "../core/type_traits.hpp" +#include "../locator/locator.hpp" +#include "meta.hpp" +#include "node.hpp" +#include "policy.hpp" + +namespace entt { + +/** + * @brief Meta function descriptor traits. + * @tparam Ret Function return type. + * @tparam Args Function arguments. + * @tparam Static Function staticness. + * @tparam Const Function constness. + */ +template +struct meta_function_descriptor_traits { + /*! @brief Meta function return type. */ + using return_type = Ret; + /*! @brief Meta function arguments. */ + using args_type = Args; + + /*! @brief True if the meta function is static, false otherwise. */ + static constexpr bool is_static = Static; + /*! @brief True if the meta function is const, false otherwise. */ + static constexpr bool is_const = Const; +}; + +/*! @brief Primary template isn't defined on purpose. */ +template +struct meta_function_descriptor; + +/** + * @brief Meta function descriptor. + * @tparam Type Reflected type to which the meta function is associated. + * @tparam Ret Function return type. + * @tparam Class Actual owner of the member function. + * @tparam Args Function arguments. + */ +template +struct meta_function_descriptor + : meta_function_descriptor_traits< + Ret, + std::conditional_t, type_list, type_list>, + !std::is_base_of_v, + true> {}; + +/** + * @brief Meta function descriptor. + * @tparam Type Reflected type to which the meta function is associated. + * @tparam Ret Function return type. + * @tparam Class Actual owner of the member function. + * @tparam Args Function arguments. + */ +template +struct meta_function_descriptor + : meta_function_descriptor_traits< + Ret, + std::conditional_t, type_list, type_list>, + !std::is_base_of_v, + false> {}; + +/** + * @brief Meta function descriptor. + * @tparam Type Reflected type to which the meta data is associated. + * @tparam Class Actual owner of the data member. + * @tparam Ret Data member type. + */ +template +struct meta_function_descriptor + : meta_function_descriptor_traits< + Ret &, + std::conditional_t, type_list<>, type_list>, + !std::is_base_of_v, + false> {}; + +/** + * @brief Meta function descriptor. + * @tparam Type Reflected type to which the meta function is associated. + * @tparam Ret Function return type. + * @tparam MaybeType First function argument. + * @tparam Args Other function arguments. + */ +template +struct meta_function_descriptor + : meta_function_descriptor_traits< + Ret, + std::conditional_t>, Type>, type_list, type_list>, + !std::is_base_of_v>, Type>, + std::is_base_of_v>, Type> && std::is_const_v>> {}; + +/** + * @brief Meta function descriptor. + * @tparam Type Reflected type to which the meta function is associated. + * @tparam Ret Function return type. + */ +template +struct meta_function_descriptor + : meta_function_descriptor_traits< + Ret, + type_list<>, + true, + false> {}; + +/** + * @brief Meta function helper. + * + * Converts a function type to be associated with a reflected type into its meta + * function descriptor. + * + * @tparam Type Reflected type to which the meta function is associated. + * @tparam Candidate The actual function to associate with the reflected type. + */ +template +class meta_function_helper { + template + static constexpr meta_function_descriptor get_rid_of_noexcept(Ret (Class::*)(Args...) const); + + template + static constexpr meta_function_descriptor get_rid_of_noexcept(Ret (Class::*)(Args...)); + + template + static constexpr meta_function_descriptor get_rid_of_noexcept(Ret Class::*); + + template + static constexpr meta_function_descriptor get_rid_of_noexcept(Ret (*)(Args...)); + + template + static constexpr meta_function_descriptor get_rid_of_noexcept(Class); + +public: + /*! @brief The meta function descriptor of the given function. */ + using type = decltype(get_rid_of_noexcept(std::declval())); +}; + +/** + * @brief Helper type. + * @tparam Type Reflected type to which the meta function is associated. + * @tparam Candidate The actual function to associate with the reflected type. + */ +template +using meta_function_helper_t = typename meta_function_helper::type; + +/** + * @brief Wraps a value depending on the given policy. + * + * This function always returns a wrapped value in the requested context.
+ * Therefore, if the passed value is itself a wrapped object with a different + * context, it undergoes a rebinding to the requested context. + * + * @tparam Policy Optional policy (no policy set by default). + * @tparam Type Type of value to wrap. + * @param ctx The context from which to search for meta types. + * @param value Value to wrap. + * @return A meta any containing the returned value, if any. + */ +template +std::enable_if_t, meta_any> meta_dispatch(const meta_ctx &ctx, [[maybe_unused]] Type &&value) { + if constexpr(std::is_same_v) { + return meta_any{ctx, std::in_place_type}; + } else if constexpr(std::is_same_v) { + return meta_any{ctx, std::in_place_type, value}; + } else if constexpr(std::is_same_v) { + static_assert(std::is_lvalue_reference_v, "Invalid type"); + return meta_any{ctx, std::in_place_type &>, std::as_const(value)}; + } else { + return meta_any{ctx, std::forward(value)}; + } +} + +/** + * @brief Wraps a value depending on the given policy. + * @tparam Policy Optional policy (no policy set by default). + * @tparam Type Type of value to wrap. + * @param value Value to wrap. + * @return A meta any containing the returned value, if any. + */ +template +std::enable_if_t, meta_any> meta_dispatch(Type &&value) { + return meta_dispatch(locator::value_or(), std::forward(value)); +} + +/** + * @brief Returns the meta type of the i-th element of a list of arguments. + * @tparam Type Type list of the actual types of arguments. + * @param ctx The context from which to search for meta types. + * @param index The index of the element for which to return the meta type. + * @return The meta type of the i-th element of the list of arguments. + */ +template +[[nodiscard]] static meta_type meta_arg(const meta_ctx &ctx, const std::size_t index) noexcept { + auto &&context = internal::meta_context::from(ctx); + return {ctx, internal::meta_arg_node(context, Type{}, index)}; +} + +/** + * @brief Returns the meta type of the i-th element of a list of arguments. + * @tparam Type Type list of the actual types of arguments. + * @param index The index of the element for which to return the meta type. + * @return The meta type of the i-th element of the list of arguments. + */ +template +[[nodiscard]] static meta_type meta_arg(const std::size_t index) noexcept { + return meta_arg(locator::value_or(), index); +} + +/** + * @brief Sets the value of a given variable. + * @tparam Type Reflected type to which the variable is associated. + * @tparam Data The actual variable to set. + * @param instance An opaque instance of the underlying type, if required. + * @param value Parameter to use to set the variable. + * @return True in case of success, false otherwise. + */ +template +[[nodiscard]] bool meta_setter([[maybe_unused]] meta_handle instance, [[maybe_unused]] meta_any value) { + if constexpr(!std::is_same_v && !std::is_same_v) { + if constexpr(std::is_member_function_pointer_v || std::is_function_v>>) { + using descriptor = meta_function_helper_t; + using data_type = type_list_element_t; + + if(auto *const clazz = instance->try_cast(); clazz && value.allow_cast()) { + std::invoke(Data, *clazz, value.cast()); + return true; + } + } else if constexpr(std::is_member_object_pointer_v) { + using data_type = std::remove_reference_t::return_type>; + + if constexpr(!std::is_array_v && !std::is_const_v) { + if(auto *const clazz = instance->try_cast(); clazz && value.allow_cast()) { + std::invoke(Data, *clazz) = value.cast(); + return true; + } + } + } else { + using data_type = std::remove_reference_t; + + if constexpr(!std::is_array_v && !std::is_const_v) { + if(value.allow_cast()) { + *Data = value.cast(); + return true; + } + } + } + } + + return false; +} + +/** + * @brief Gets the value of a given variable. + * + * @warning + * The context provided is used only for the return type.
+ * It's up to the caller to bind the arguments to the right context(s). + * + * @tparam Type Reflected type to which the variable is associated. + * @tparam Data The actual variable to get. + * @tparam Policy Optional policy (no policy set by default). + * @param ctx The context from which to search for meta types. + * @param instance An opaque instance of the underlying type, if required. + * @return A meta any containing the value of the underlying variable. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_getter(const meta_ctx &ctx, [[maybe_unused]] meta_handle instance) { + if constexpr(std::is_member_pointer_v || std::is_function_v>>) { + if constexpr(!std::is_array_v>>>) { + if constexpr(std::is_invocable_v) { + if(auto *clazz = instance->try_cast(); clazz) { + return meta_dispatch(ctx, std::invoke(Data, *clazz)); + } + } + + if constexpr(std::is_invocable_v) { + if(auto *fallback = instance->try_cast(); fallback) { + return meta_dispatch(ctx, std::invoke(Data, *fallback)); + } + } + } + + return meta_any{meta_ctx_arg, ctx}; + } else if constexpr(std::is_pointer_v) { + if constexpr(std::is_array_v>) { + return meta_any{meta_ctx_arg, ctx}; + } else { + return meta_dispatch(ctx, *Data); + } + } else { + return meta_dispatch(ctx, Data); + } +} + +/** + * @brief Gets the value of a given variable. + * @tparam Type Reflected type to which the variable is associated. + * @tparam Data The actual variable to get. + * @tparam Policy Optional policy (no policy set by default). + * @param instance An opaque instance of the underlying type, if required. + * @return A meta any containing the value of the underlying variable. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_getter(meta_handle instance) { + return meta_getter(locator::value_or(), std::move(instance)); +} + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +[[nodiscard]] meta_any meta_invoke_with_args(const meta_ctx &ctx, Candidate &&candidate, Args &&...args) { + if constexpr(std::is_same_v(candidate), args...)), void>) { + std::invoke(std::forward(candidate), args...); + return meta_any{ctx, std::in_place_type}; + } else { + return meta_dispatch(ctx, std::invoke(std::forward(candidate), args...)); + } +} + +template +[[nodiscard]] meta_any meta_invoke(const meta_ctx &ctx, [[maybe_unused]] meta_handle instance, Candidate &&candidate, [[maybe_unused]] meta_any *args, std::index_sequence) { + using descriptor = meta_function_helper_t>; + + if constexpr(std::is_invocable_v, const Type &, type_list_element_t...>) { + if(const auto *const clazz = instance->try_cast(); clazz && ((args + Index)->allow_cast>() && ...)) { + return meta_invoke_with_args(ctx, std::forward(candidate), *clazz, (args + Index)->cast>()...); + } + } else if constexpr(std::is_invocable_v, Type &, type_list_element_t...>) { + if(auto *const clazz = instance->try_cast(); clazz && ((args + Index)->allow_cast>() && ...)) { + return meta_invoke_with_args(ctx, std::forward(candidate), *clazz, (args + Index)->cast>()...); + } + } else { + if(((args + Index)->allow_cast>() && ...)) { + return meta_invoke_with_args(ctx, std::forward(candidate), (args + Index)->cast>()...); + } + } + + return meta_any{meta_ctx_arg, ctx}; +} + +template +[[nodiscard]] meta_any meta_construct(const meta_ctx &ctx, meta_any *const args, std::index_sequence) { + if(((args + Index)->allow_cast() && ...)) { + return meta_any{ctx, std::in_place_type, (args + Index)->cast()...}; + } + + return meta_any{meta_ctx_arg, ctx}; +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Tries to _invoke_ an object given a list of erased parameters. + * + * @warning + * The context provided is used only for the return type.
+ * It's up to the caller to bind the arguments to the right context(s). + * + * @tparam Type Reflected type to which the object to _invoke_ is associated. + * @tparam Policy Optional policy (no policy set by default). + * @param ctx The context from which to search for meta types. + * @tparam Candidate The type of the actual object to _invoke_. + * @param instance An opaque instance of the underlying type, if required. + * @param candidate The actual object to _invoke_. + * @param args Parameters to use to _invoke_ the object. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_invoke(const meta_ctx &ctx, meta_handle instance, Candidate &&candidate, meta_any *const args) { + return internal::meta_invoke(ctx, std::move(instance), std::forward(candidate), args, std::make_index_sequence>::args_type::size>{}); +} + +/** + * @brief Tries to _invoke_ an object given a list of erased parameters. + * @tparam Type Reflected type to which the object to _invoke_ is associated. + * @tparam Policy Optional policy (no policy set by default). + * @tparam Candidate The type of the actual object to _invoke_. + * @param instance An opaque instance of the underlying type, if required. + * @param candidate The actual object to _invoke_. + * @param args Parameters to use to _invoke_ the object. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_invoke(meta_handle instance, Candidate &&candidate, meta_any *const args) { + return meta_invoke(locator::value_or(), std::move(instance), std::forward(candidate), args); +} + +/** + * @brief Tries to invoke a function given a list of erased parameters. + * + * @warning + * The context provided is used only for the return type.
+ * It's up to the caller to bind the arguments to the right context(s). + * + * @tparam Type Reflected type to which the function is associated. + * @tparam Candidate The actual function to invoke. + * @tparam Policy Optional policy (no policy set by default). + * @param ctx The context from which to search for meta types. + * @param instance An opaque instance of the underlying type, if required. + * @param args Parameters to use to invoke the function. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_invoke(const meta_ctx &ctx, meta_handle instance, meta_any *const args) { + return internal::meta_invoke(ctx, std::move(instance), Candidate, args, std::make_index_sequence>::args_type::size>{}); +} + +/** + * @brief Tries to invoke a function given a list of erased parameters. + * @tparam Type Reflected type to which the function is associated. + * @tparam Candidate The actual function to invoke. + * @tparam Policy Optional policy (no policy set by default). + * @param instance An opaque instance of the underlying type, if required. + * @param args Parameters to use to invoke the function. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_invoke(meta_handle instance, meta_any *const args) { + return meta_invoke(locator::value_or(), std::move(instance), args); +} + +/** + * @brief Tries to construct an instance given a list of erased parameters. + * + * @warning + * The context provided is used only for the return type.
+ * It's up to the caller to bind the arguments to the right context(s). + * + * @tparam Type Actual type of the instance to construct. + * @tparam Args Types of arguments expected. + * @param ctx The context from which to search for meta types. + * @param args Parameters to use to construct the instance. + * @return A meta any containing the new instance, if any. + */ +template +[[nodiscard]] meta_any meta_construct(const meta_ctx &ctx, meta_any *const args) { + return internal::meta_construct(ctx, args, std::index_sequence_for{}); +} + +/** + * @brief Tries to construct an instance given a list of erased parameters. + * @tparam Type Actual type of the instance to construct. + * @tparam Args Types of arguments expected. + * @param args Parameters to use to construct the instance. + * @return A meta any containing the new instance, if any. + */ +template +[[nodiscard]] meta_any meta_construct(meta_any *const args) { + return meta_construct(locator::value_or(), args); +} + +/** + * @brief Tries to construct an instance given a list of erased parameters. + * + * @warning + * The context provided is used only for the return type.
+ * It's up to the caller to bind the arguments to the right context(s). + * + * @tparam Type Reflected type to which the object to _invoke_ is associated. + * @tparam Policy Optional policy (no policy set by default). + * @tparam Candidate The type of the actual object to _invoke_. + * @param ctx The context from which to search for meta types. + * @param candidate The actual object to _invoke_. + * @param args Parameters to use to _invoke_ the object. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] meta_any meta_construct(const meta_ctx &ctx, Candidate &&candidate, meta_any *const args) { + if constexpr(meta_function_helper_t::is_static || std::is_class_v>>) { + return internal::meta_invoke(ctx, {}, std::forward(candidate), args, std::make_index_sequence>::args_type::size>{}); + } else { + return internal::meta_invoke(ctx, *args, std::forward(candidate), args + 1u, std::make_index_sequence>::args_type::size>{}); + } +} + +/** + * @brief Tries to construct an instance given a list of erased parameters. + * @tparam Type Reflected type to which the object to _invoke_ is associated. + * @tparam Policy Optional policy (no policy set by default). + * @tparam Candidate The type of the actual object to _invoke_. + * @param candidate The actual object to _invoke_. + * @param args Parameters to use to _invoke_ the object. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_construct(Candidate &&candidate, meta_any *const args) { + return meta_construct(locator::value_or(), std::forward(candidate), args); +} + +/** + * @brief Tries to construct an instance given a list of erased parameters. + * + * @warning + * The context provided is used only for the return type.
+ * It's up to the caller to bind the arguments to the right context(s). + * + * @tparam Type Reflected type to which the function is associated. + * @tparam Candidate The actual function to invoke. + * @tparam Policy Optional policy (no policy set by default). + * @param ctx The context from which to search for meta types. + * @param args Parameters to use to invoke the function. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_construct(const meta_ctx &ctx, meta_any *const args) { + return meta_construct(ctx, Candidate, args); +} + +/** + * @brief Tries to construct an instance given a list of erased parameters. + * @tparam Type Reflected type to which the function is associated. + * @tparam Candidate The actual function to invoke. + * @tparam Policy Optional policy (no policy set by default). + * @param args Parameters to use to invoke the function. + * @return A meta any containing the returned value, if any. + */ +template +[[nodiscard]] std::enable_if_t, meta_any> meta_construct(meta_any *const args) { + return meta_construct(locator::value_or(), args); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/platform/android-ndk-r17.hpp b/LiteLoader/third-party/include/entt/platform/android-ndk-r17.hpp similarity index 86% rename from LiteLoader/Header/third-party/entt/platform/android-ndk-r17.hpp rename to LiteLoader/third-party/include/entt/platform/android-ndk-r17.hpp index 8527f3e..5696123 100644 --- a/LiteLoader/Header/third-party/entt/platform/android-ndk-r17.hpp +++ b/LiteLoader/third-party/include/entt/platform/android-ndk-r17.hpp @@ -1,37 +1,29 @@ #ifndef ENTT_PLATFORM_ANDROID_NDK_R17_HPP #define ENTT_PLATFORM_ANDROID_NDK_R17_HPP - /** * @cond TURN_OFF_DOXYGEN * Internal details not to be documented. */ - #ifdef __ANDROID__ -#include -#if __NDK_MAJOR__ == 17 - - -#include -#include -#include +# include +# if __NDK_MAJOR__ == 17 +# include +# include +# include namespace std { - namespace internal { - template constexpr auto is_invocable(int) -> decltype(std::invoke(std::declval(), std::declval()...), std::true_type{}); - template constexpr std::false_type is_invocable(...); - template constexpr auto is_invocable_r(int) -> std::enable_if_t(), std::declval()...)), Ret>, std::true_type>; @@ -40,47 +32,36 @@ constexpr auto is_invocable_r(int) template constexpr std::false_type is_invocable_r(...); - -} - +} // namespace internal template struct is_invocable: decltype(internal::is_invocable(0)) {}; - template inline constexpr bool is_invocable_v = std::is_invocable::value; - template struct is_invocable_r: decltype(internal::is_invocable_r(0)) {}; - template inline constexpr bool is_invocable_r_v = std::is_invocable_r::value; - -template +template struct invoke_result { using type = decltype(std::invoke(std::declval(), std::declval()...)); }; - template using invoke_result_t = typename std::invoke_result::type; +} // namespace std -} - - +# endif #endif -#endif - /** * Internal details not to be documented. * @endcond */ - #endif diff --git a/LiteLoader/Header/third-party/entt/poly/fwd.hpp b/LiteLoader/third-party/include/entt/poly/fwd.hpp similarity index 55% rename from LiteLoader/Header/third-party/entt/poly/fwd.hpp rename to LiteLoader/third-party/include/entt/poly/fwd.hpp index 32023e2..f24cdf2 100644 --- a/LiteLoader/Header/third-party/entt/poly/fwd.hpp +++ b/LiteLoader/third-party/include/entt/poly/fwd.hpp @@ -1,26 +1,20 @@ #ifndef ENTT_POLY_FWD_HPP #define ENTT_POLY_FWD_HPP - -#include - +#include namespace entt { - -template)> +template class basic_poly; - /** * @brief Alias declaration for the most common use case. * @tparam Concept Concept descriptor. */ template -using poly = basic_poly; - - -} +using poly = basic_poly; +} // namespace entt #endif diff --git a/LiteLoader/Header/third-party/entt/poly/poly.hpp b/LiteLoader/third-party/include/entt/poly/poly.hpp similarity index 67% rename from LiteLoader/Header/third-party/entt/poly/poly.hpp rename to LiteLoader/third-party/include/entt/poly/poly.hpp index d9d10a7..f10419e 100644 --- a/LiteLoader/Header/third-party/entt/poly/poly.hpp +++ b/LiteLoader/third-party/include/entt/poly/poly.hpp @@ -1,29 +1,25 @@ #ifndef ENTT_POLY_POLY_HPP #define ENTT_POLY_POLY_HPP - #include #include #include #include #include -#include "../config/config.h" #include "../core/any.hpp" #include "../core/type_info.hpp" #include "../core/type_traits.hpp" #include "fwd.hpp" - namespace entt { - /*! @brief Inspector class used to infer the type of the virtual table. */ struct poly_inspector { /** * @brief Generic conversion operator (definition only). * @tparam Type Type to which conversion is requested. */ - template + template operator Type &&() const; /** @@ -33,15 +29,14 @@ struct poly_inspector { * @param args The arguments to pass to the function. * @return A poly inspector convertible to any type. */ - template - poly_inspector invoke(Args &&... args) const; + template + poly_inspector invoke(Args &&...args) const; /*! @copydoc invoke */ - template - poly_inspector invoke(Args &&... args); + template + poly_inspector invoke(Args &&...args); }; - /** * @brief Static virtual table factory. * @tparam Concept Concept descriptor. @@ -53,35 +48,35 @@ class poly_vtable { using inspector = typename Concept::template type; template - static auto vtable_entry(Ret(*)(inspector &, Args...)) -> Ret(*)(basic_any &, Args...); + static auto vtable_entry(Ret (*)(inspector &, Args...)) -> Ret (*)(basic_any &, Args...); template - static auto vtable_entry(Ret(*)(const inspector &, Args...)) -> Ret(*)(const basic_any &, Args...); + static auto vtable_entry(Ret (*)(const inspector &, Args...)) -> Ret (*)(const basic_any &, Args...); template - static auto vtable_entry(Ret(*)(Args...)) -> Ret(*)(const basic_any &, Args...); + static auto vtable_entry(Ret (*)(Args...)) -> Ret (*)(const basic_any &, Args...); template - static auto vtable_entry(Ret(inspector:: *)(Args...)) -> Ret(*)(basic_any &, Args...); + static auto vtable_entry(Ret (inspector::*)(Args...)) -> Ret (*)(basic_any &, Args...); template - static auto vtable_entry(Ret(inspector:: *)(Args...) const) -> Ret(*)(const basic_any &, Args...); + static auto vtable_entry(Ret (inspector::*)(Args...) const) -> Ret (*)(const basic_any &, Args...); template - static auto make_vtable(value_list) - -> decltype(std::make_tuple(vtable_entry(Candidate)...)); + static auto make_vtable(value_list) noexcept + -> decltype(std::make_tuple(vtable_entry(Candidate)...)); template - [[nodiscard]] static constexpr auto make_vtable(type_list) { - if constexpr(sizeof...(Func) == 0) { + [[nodiscard]] static constexpr auto make_vtable(type_list) noexcept { + if constexpr(sizeof...(Func) == 0u) { return decltype(make_vtable(typename Concept::template impl{})){}; } else if constexpr((std::is_function_v && ...)) { - return decltype(std::make_tuple(vtable_entry(std::declval())...)){}; + return decltype(std::make_tuple(vtable_entry(std::declval())...)){}; } } template - static void fill_vtable_entry(Ret(* &entry)(Any &, Args...)) { + static void fill_vtable_entry(Ret (*&entry)(Any &, Args...)) noexcept { if constexpr(std::is_invocable_r_v) { entry = +[](Any &, Args... args) -> Ret { return std::invoke(Candidate, std::forward(args)...); @@ -94,15 +89,18 @@ class poly_vtable { } template - [[nodiscard]] static auto fill_vtable(std::index_sequence) { - type impl{}; + [[nodiscard]] static auto fill_vtable(std::index_sequence) noexcept { + vtable_type impl{}; (fill_vtable_entry>>(std::get(impl)), ...); return impl; } + using vtable_type = decltype(make_vtable(Concept{})); + static constexpr bool is_mono_v = std::tuple_size_v == 1u; + public: /*! @brief Virtual table type. */ - using type = decltype(make_vtable(Concept{})); + using type = std::conditional_t, const vtable_type *>; /** * @brief Returns a static virtual table for a specific concept and type. @@ -110,14 +108,18 @@ public: * @return A static virtual table for the given concept and type. */ template - [[nodiscard]] static const auto * instance() { + [[nodiscard]] static type instance() noexcept { static_assert(std::is_same_v>, "Type differs from its decayed form"); - static const auto vtable = fill_vtable(std::make_index_sequence::size>{}); - return &vtable; + static const vtable_type vtable = fill_vtable(std::make_index_sequence::size>{}); + + if constexpr(is_mono_v) { + return std::get<0>(vtable); + } else { + return &vtable; + } } }; - /** * @brief Poly base class used to inject functionalities into concepts. * @tparam Poly The outermost poly class. @@ -132,21 +134,31 @@ struct poly_base { * @param args The arguments to pass to the function. * @return The return value of the invoked function, if any. */ - template - [[nodiscard]] decltype(auto) invoke(const poly_base &self, Args &&... args) const { + template + [[nodiscard]] decltype(auto) invoke(const poly_base &self, Args &&...args) const { const auto &poly = static_cast(self); - return std::get(*poly.vtable)(poly.storage, std::forward(args)...); + + if constexpr(std::is_function_v>) { + return poly.vtable(poly.storage, std::forward(args)...); + } else { + return std::get(*poly.vtable)(poly.storage, std::forward(args)...); + } } /*! @copydoc invoke */ - template - [[nodiscard]] decltype(auto) invoke(poly_base &self, Args &&... args) { + template + [[nodiscard]] decltype(auto) invoke(poly_base &self, Args &&...args) { auto &poly = static_cast(self); - return std::get(*poly.vtable)(poly.storage, std::forward(args)...); + + if constexpr(std::is_function_v>) { + static_assert(Member == 0u, "Unknown member"); + return poly.vtable(poly.storage, std::forward(args)...); + } else { + return std::get(*poly.vtable)(poly.storage, std::forward(args)...); + } } }; - /** * @brief Shortcut for calling `poly_base::invoke`. * @tparam Member Index of the function to invoke. @@ -156,12 +168,11 @@ struct poly_base { * @param args The arguments to pass to the function. * @return The return value of the invoked function, if any. */ -template -decltype(auto) poly_call(Poly &&self, Args &&... args) { +template +decltype(auto) poly_call(Poly &&self, Args &&...args) { return std::forward(self).template invoke(self, std::forward(args)...); } - /** * @brief Static polymorphism made simple and within everyone's reach. * @@ -182,17 +193,16 @@ class basic_poly: private Concept::template type; - using vtable_type = typename poly_vtable::type; - public: /*! @brief Concept type. */ using concept_type = typename Concept::template type>; + /*! @brief Virtual table type. */ + using vtable_type = typename poly_vtable::type; /*! @brief Default constructor. */ - basic_poly() ENTT_NOEXCEPT + basic_poly() noexcept : storage{}, - vtable{} - {} + vtable{} {} /** * @brief Constructs a poly by directly initializing the new object. @@ -201,10 +211,9 @@ public: * @param args Parameters to use to construct the instance. */ template - explicit basic_poly(std::in_place_type_t, Args &&... args) + explicit basic_poly(std::in_place_type_t, Args &&...args) : storage{std::in_place_type, std::forward(args)...}, - vtable{poly_vtable::template instance>>()} - {} + vtable{poly_vtable::template instance>>()} {} /** * @brief Constructs a poly from a given value. @@ -212,41 +221,14 @@ public: * @param value An instance of an object to use to initialize the poly. */ template>, basic_poly>>> - basic_poly(Type &&value) ENTT_NOEXCEPT - : basic_poly{std::in_place_type>>, std::forward(value)} - {} + basic_poly(Type &&value) noexcept + : basic_poly{std::in_place_type>>, std::forward(value)} {} /** - * @brief Copy constructor. - * @param other The instance to copy from. + * @brief Returns the object type if any, `type_id()` otherwise. + * @return The object type if any, `type_id()` otherwise. */ - basic_poly(const basic_poly &other) = default; - - /** - * @brief Move constructor. - * @param other The instance to move from. - */ - basic_poly(basic_poly &&other) ENTT_NOEXCEPT - : basic_poly{} - { - swap(*this, other); - } - - /** - * @brief Assignment operator. - * @param other The instance to assign from. - * @return This poly object. - */ - basic_poly & operator=(basic_poly other) { - swap(other, *this); - return *this; - } - - /** - * @brief Returns the type of the contained object. - * @return The type of the contained object, if any. - */ - [[nodiscard]] type_info type() const ENTT_NOEXCEPT { + [[nodiscard]] const type_info &type() const noexcept { return storage.type(); } @@ -254,12 +236,12 @@ public: * @brief Returns an opaque pointer to the contained instance. * @return An opaque pointer the contained instance, if any. */ - [[nodiscard]] const void * data() const ENTT_NOEXCEPT { + [[nodiscard]] const void *data() const noexcept { return storage.data(); } /*! @copydoc data */ - [[nodiscard]] void * data() ENTT_NOEXCEPT { + [[nodiscard]] void *data() noexcept { return storage.data(); } @@ -270,59 +252,51 @@ public: * @param args Parameters to use to construct the instance. */ template - void emplace(Args &&... args) { - *this = basic_poly{std::in_place_type, std::forward(args)...}; + void emplace(Args &&...args) { + storage.template emplace(std::forward(args)...); + vtable = poly_vtable::template instance>>(); } /*! @brief Destroys contained object */ void reset() { - *this = basic_poly{}; + storage.reset(); + vtable = {}; } /** * @brief Returns false if a poly is empty, true otherwise. * @return False if the poly is empty, true otherwise. */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - return !(vtable == nullptr); + [[nodiscard]] explicit operator bool() const noexcept { + return static_cast(storage); } /** * @brief Returns a pointer to the underlying concept. * @return A pointer to the underlying concept. */ - [[nodiscard]] concept_type * operator->() ENTT_NOEXCEPT { + [[nodiscard]] concept_type *operator->() noexcept { return this; } /*! @copydoc operator-> */ - [[nodiscard]] const concept_type * operator->() const ENTT_NOEXCEPT { + [[nodiscard]] const concept_type *operator->() const noexcept { return this; } - /** - * @brief Swaps two poly objects. - * @param lhs A valid poly object. - * @param rhs A valid poly object. - */ - friend void swap(basic_poly &lhs, basic_poly &rhs) { - using std::swap; - swap(lhs.storage, rhs.storage); - swap(lhs.vtable, rhs.vtable); - } - /** * @brief Aliasing constructor. * @return A poly that shares a reference to an unmanaged object. */ - [[nodiscard]] basic_poly as_ref() ENTT_NOEXCEPT { - basic_poly ref = std::as_const(*this).as_ref(); + [[nodiscard]] basic_poly as_ref() noexcept { + basic_poly ref{}; ref.storage = storage.as_ref(); + ref.vtable = vtable; return ref; } /*! @copydoc as_ref */ - [[nodiscard]] basic_poly as_ref() const ENTT_NOEXCEPT { + [[nodiscard]] basic_poly as_ref() const noexcept { basic_poly ref{}; ref.storage = storage.as_ref(); ref.vtable = vtable; @@ -331,11 +305,9 @@ public: private: basic_any storage; - const vtable_type *vtable; + vtable_type vtable; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/process/fwd.hpp b/LiteLoader/third-party/include/entt/process/fwd.hpp new file mode 100644 index 0000000..a0dc53f --- /dev/null +++ b/LiteLoader/third-party/include/entt/process/fwd.hpp @@ -0,0 +1,14 @@ +#ifndef ENTT_PROCESS_FWD_HPP +#define ENTT_PROCESS_FWD_HPP + +namespace entt { + +template +class process; + +template +class scheduler; + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/process/process.hpp b/LiteLoader/third-party/include/entt/process/process.hpp similarity index 73% rename from LiteLoader/Header/third-party/entt/process/process.hpp rename to LiteLoader/third-party/include/entt/process/process.hpp index 93a0c4b..b0d3a86 100644 --- a/LiteLoader/Header/third-party/entt/process/process.hpp +++ b/LiteLoader/third-party/include/entt/process/process.hpp @@ -1,15 +1,12 @@ #ifndef ENTT_PROCESS_PROCESS_HPP #define ENTT_PROCESS_PROCESS_HPP - -#include +#include #include -#include "../config/config.h" - +#include namespace entt { - /** * @brief Base class for processes. * @@ -71,48 +68,48 @@ namespace entt { */ template class process { - enum class state: unsigned int { - UNINITIALIZED = 0, - RUNNING, - PAUSED, - SUCCEEDED, - FAILED, - ABORTED, - FINISHED, - REJECTED + enum class state : std::uint8_t { + uninitialized = 0, + running, + paused, + succeeded, + failed, + aborted, + finished, + rejected }; template - auto next(std::integral_constant) - -> decltype(std::declval().init(), void()) { + auto next(std::integral_constant) + -> decltype(std::declval().init(), void()) { static_cast(this)->init(); } template - auto next(std::integral_constant, Delta delta, void *data) - -> decltype(std::declval().update(delta, data), void()) { + auto next(std::integral_constant, Delta delta, void *data) + -> decltype(std::declval().update(delta, data), void()) { static_cast(this)->update(delta, data); } template - auto next(std::integral_constant) - -> decltype(std::declval().succeeded(), void()) { + auto next(std::integral_constant) + -> decltype(std::declval().succeeded(), void()) { static_cast(this)->succeeded(); } template - auto next(std::integral_constant) - -> decltype(std::declval().failed(), void()) { + auto next(std::integral_constant) + -> decltype(std::declval().failed(), void()) { static_cast(this)->failed(); } template - auto next(std::integral_constant) - -> decltype(std::declval().aborted(), void()) { + auto next(std::integral_constant) + -> decltype(std::declval().aborted(), void()) { static_cast(this)->aborted(); } - void next(...) const ENTT_NOEXCEPT {} + void next(...) const noexcept {} protected: /** @@ -121,9 +118,9 @@ protected: * The function is idempotent and it does nothing if the process isn't * alive. */ - void succeed() ENTT_NOEXCEPT { + void succeed() noexcept { if(alive()) { - current = state::SUCCEEDED; + current = state::succeeded; } } @@ -133,9 +130,9 @@ protected: * The function is idempotent and it does nothing if the process isn't * alive. */ - void fail() ENTT_NOEXCEPT { + void fail() noexcept { if(alive()) { - current = state::FAILED; + current = state::failed; } } @@ -145,9 +142,9 @@ protected: * The function is idempotent and it does nothing if the process isn't * running. */ - void pause() ENTT_NOEXCEPT { - if(current == state::RUNNING) { - current = state::PAUSED; + void pause() noexcept { + if(current == state::running) { + current = state::paused; } } @@ -157,9 +154,9 @@ protected: * The function is idempotent and it does nothing if the process isn't * paused. */ - void unpause() ENTT_NOEXCEPT { - if(current == state::PAUSED) { - current = state::RUNNING; + void unpause() noexcept { + if(current == state::paused) { + current = state::running; } } @@ -168,7 +165,7 @@ public: using delta_type = Delta; /*! @brief Default destructor. */ - virtual ~process() { + virtual ~process() noexcept { static_assert(std::is_base_of_v, "Incorrect use of the class template"); } @@ -182,7 +179,7 @@ public: */ void abort(const bool immediately = false) { if(alive()) { - current = state::ABORTED; + current = state::aborted; if(immediately) { tick({}); @@ -194,32 +191,32 @@ public: * @brief Returns true if a process is either running or paused. * @return True if the process is still alive, false otherwise. */ - [[nodiscard]] bool alive() const ENTT_NOEXCEPT { - return current == state::RUNNING || current == state::PAUSED; + [[nodiscard]] bool alive() const noexcept { + return current == state::running || current == state::paused; } /** * @brief Returns true if a process is already terminated. * @return True if the process is terminated, false otherwise. */ - [[nodiscard]] bool finished() const ENTT_NOEXCEPT { - return current == state::FINISHED; + [[nodiscard]] bool finished() const noexcept { + return current == state::finished; } /** * @brief Returns true if a process is currently paused. * @return True if the process is paused, false otherwise. */ - [[nodiscard]] bool paused() const ENTT_NOEXCEPT { - return current == state::PAUSED; + [[nodiscard]] bool paused() const noexcept { + return current == state::paused; } /** * @brief Returns true if a process terminated with errors. * @return True if the process terminated with errors, false otherwise. */ - [[nodiscard]] bool rejected() const ENTT_NOEXCEPT { - return current == state::REJECTED; + [[nodiscard]] bool rejected() const noexcept { + return current == state::rejected; } /** @@ -228,13 +225,13 @@ public: * @param data Optional data. */ void tick(const Delta delta, void *data = nullptr) { - switch (current) { - case state::UNINITIALIZED: - next(std::integral_constant{}); - current = state::RUNNING; + switch(current) { + case state::uninitialized: + next(std::integral_constant{}); + current = state::running; break; - case state::RUNNING: - next(std::integral_constant{}, delta, data); + case state::running: + next(std::integral_constant{}, delta, data); break; default: // suppress warnings @@ -243,17 +240,17 @@ public: // if it's dead, it must be notified and removed immediately switch(current) { - case state::SUCCEEDED: - next(std::integral_constant{}); - current = state::FINISHED; + case state::succeeded: + next(std::integral_constant{}); + current = state::finished; break; - case state::FAILED: - next(std::integral_constant{}); - current = state::REJECTED; + case state::failed: + next(std::integral_constant{}); + current = state::rejected; break; - case state::ABORTED: - next(std::integral_constant{}); - current = state::REJECTED; + case state::aborted: + next(std::integral_constant{}); + current = state::rejected; break; default: // suppress warnings @@ -262,10 +259,9 @@ public: } private: - state current{state::UNINITIALIZED}; + state current{state::uninitialized}; }; - /** * @brief Adaptor for lambdas and functors to turn them into processes. * @@ -313,9 +309,8 @@ struct process_adaptor: process, Delta>, private Fu * @param args Parameters to use to initialize the actual process. */ template - process_adaptor(Args &&... args) - : Func{std::forward(args)...} - {} + process_adaptor(Args &&...args) + : Func{std::forward(args)...} {} /** * @brief Updates a process and its internal state if required. @@ -323,12 +318,14 @@ struct process_adaptor: process, Delta>, private Fu * @param data Optional data. */ void update(const Delta delta, void *data) { - Func::operator()(delta, data, [this]() { this->succeed(); }, [this]() { this->fail(); }); + Func::operator()( + delta, + data, + [this]() { this->succeed(); }, + [this]() { this->fail(); }); } }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/Header/third-party/entt/process/scheduler.hpp b/LiteLoader/third-party/include/entt/process/scheduler.hpp similarity index 81% rename from LiteLoader/Header/third-party/entt/process/scheduler.hpp rename to LiteLoader/third-party/include/entt/process/scheduler.hpp index fd37def..23c7642 100644 --- a/LiteLoader/Header/third-party/entt/process/scheduler.hpp +++ b/LiteLoader/third-party/include/entt/process/scheduler.hpp @@ -1,19 +1,16 @@ #ifndef ENTT_PROCESS_SCHEDULER_HPP #define ENTT_PROCESS_SCHEDULER_HPP - -#include -#include -#include #include +#include +#include #include -#include "../config/config.h" +#include +#include #include "process.hpp" - namespace entt { - /** * @brief Cooperative scheduler for processes. * @@ -43,9 +40,9 @@ namespace entt { template class scheduler { struct process_handler { - using instance_type = std::unique_ptr; - using update_fn_type = bool(process_handler &, Delta, void *); - using abort_fn_type = void(process_handler &, bool); + using instance_type = std::unique_ptr; + using update_fn_type = bool(scheduler &, std::size_t, Delta, void *); + using abort_fn_type = void(scheduler &, std::size_t, bool); using next_type = std::unique_ptr; instance_type instance; @@ -55,12 +52,11 @@ class scheduler { }; struct continuation { - continuation(process_handler *ref) - : handler{ref} - {} + continuation(process_handler *ref) noexcept + : handler{ref} {} template - continuation then(Args &&... args) { + continuation then(Args &&...args) { static_assert(std::is_base_of_v, Proc>, "Invalid process type"); auto proc = typename process_handler::instance_type{new Proc{std::forward(args)...}, &scheduler::deleter}; handler->next.reset(new process_handler{std::move(proc), &scheduler::update, &scheduler::abort, nullptr}); @@ -78,17 +74,17 @@ class scheduler { }; template - [[nodiscard]] static bool update(process_handler &handler, const Delta delta, void *data) { - auto *process = static_cast(handler.instance.get()); + [[nodiscard]] static bool update(scheduler &owner, std::size_t pos, const Delta delta, void *data) { + auto *process = static_cast(owner.handlers[pos].instance.get()); process->tick(delta, data); if(process->rejected()) { return true; } else if(process->finished()) { - if(handler.next) { + if(auto &&handler = owner.handlers[pos]; handler.next) { handler = std::move(*handler.next); // forces the process to exit the uninitialized state - return handler.update(handler, {}, nullptr); + return handler.update(owner, pos, {}, nullptr); } return true; @@ -98,8 +94,8 @@ class scheduler { } template - static void abort(process_handler &handler, const bool immediately) { - static_cast(handler.instance.get())->abort(immediately); + static void abort(scheduler &owner, std::size_t pos, const bool immediately) { + static_cast(owner.handlers[pos].instance.get())->abort(immediately); } template @@ -112,19 +108,20 @@ public: using size_type = std::size_t; /*! @brief Default constructor. */ - scheduler() = default; + scheduler() + : handlers{} {} /*! @brief Default move constructor. */ scheduler(scheduler &&) = default; /*! @brief Default move assignment operator. @return This scheduler. */ - scheduler & operator=(scheduler &&) = default; + scheduler &operator=(scheduler &&) = default; /** * @brief Number of processes currently scheduled. * @return Number of processes currently scheduled. */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { + [[nodiscard]] size_type size() const noexcept { return handlers.size(); } @@ -132,7 +129,7 @@ public: * @brief Returns true if at least a process is currently scheduled. * @return True if there are scheduled processes, false otherwise. */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { + [[nodiscard]] bool empty() const noexcept { return handlers.empty(); } @@ -172,13 +169,13 @@ public: * @return An opaque object to use to concatenate processes. */ template - auto attach(Args &&... args) { + auto attach(Args &&...args) { static_assert(std::is_base_of_v, Proc>, "Invalid process type"); auto proc = typename process_handler::instance_type{new Proc{std::forward(args)...}, &scheduler::deleter}; - process_handler handler{std::move(proc), &scheduler::update, &scheduler::abort, nullptr}; + auto &&ref = handlers.emplace_back(process_handler{std::move(proc), &scheduler::update, &scheduler::abort, nullptr}); // forces the process to exit the uninitialized state - handler.update(handler, {}, nullptr); - return continuation{&handlers.emplace_back(std::move(handler))}; + ref.update(*this, handlers.size() - 1u, {}, nullptr); + return continuation{&handlers.back()}; } /** @@ -250,17 +247,14 @@ public: * @param data Optional data. */ void update(const Delta delta, void *data = nullptr) { - auto sz = handlers.size(); - for(auto pos = handlers.size(); pos; --pos) { - auto &handler = handlers[pos-1]; + const auto curr = pos - 1u; - if(const auto dead = handler.update(handler, delta, data); dead) { - std::swap(handler, handlers[--sz]); + if(const auto dead = handlers[curr].update(*this, curr, delta, data); dead) { + std::swap(handlers[curr], handlers.back()); + handlers.pop_back(); } } - - handlers.erase(handlers.begin() + sz, handlers.end()); } /** @@ -274,23 +268,16 @@ public: * @param immediately Requests an immediate operation. */ void abort(const bool immediately = false) { - decltype(handlers) exec; - exec.swap(handlers); - - for(auto &&handler: exec) { - handler.abort(handler, immediately); + for(auto pos = handlers.size(); pos; --pos) { + const auto curr = pos - 1u; + handlers[curr].abort(*this, curr, immediately); } - - std::move(handlers.begin(), handlers.end(), std::back_inserter(exec)); - handlers.swap(exec); } private: std::vector handlers{}; }; - -} - +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/resource/cache.hpp b/LiteLoader/third-party/include/entt/resource/cache.hpp new file mode 100644 index 0000000..8688685 --- /dev/null +++ b/LiteLoader/third-party/include/entt/resource/cache.hpp @@ -0,0 +1,423 @@ +#ifndef ENTT_RESOURCE_RESOURCE_CACHE_HPP +#define ENTT_RESOURCE_RESOURCE_CACHE_HPP + +#include +#include +#include +#include +#include +#include +#include +#include "../container/dense_map.hpp" +#include "../core/compressed_pair.hpp" +#include "../core/fwd.hpp" +#include "../core/iterator.hpp" +#include "../core/utility.hpp" +#include "fwd.hpp" +#include "loader.hpp" +#include "resource.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +template +class resource_cache_iterator final { + template + friend class resource_cache_iterator; + +public: + using value_type = std::pair>; + using pointer = input_iterator_pointer; + using reference = value_type; + using difference_type = std::ptrdiff_t; + using iterator_category = std::input_iterator_tag; + + constexpr resource_cache_iterator() noexcept = default; + + constexpr resource_cache_iterator(const It iter) noexcept + : it{iter} {} + + template && std::is_constructible_v>> + constexpr resource_cache_iterator(const resource_cache_iterator, Other> &other) noexcept + : it{other.it} {} + + constexpr resource_cache_iterator &operator++() noexcept { + return ++it, *this; + } + + constexpr resource_cache_iterator operator++(int) noexcept { + resource_cache_iterator orig = *this; + return ++(*this), orig; + } + + constexpr resource_cache_iterator &operator--() noexcept { + return --it, *this; + } + + constexpr resource_cache_iterator operator--(int) noexcept { + resource_cache_iterator orig = *this; + return operator--(), orig; + } + + constexpr resource_cache_iterator &operator+=(const difference_type value) noexcept { + it += value; + return *this; + } + + constexpr resource_cache_iterator operator+(const difference_type value) const noexcept { + resource_cache_iterator copy = *this; + return (copy += value); + } + + constexpr resource_cache_iterator &operator-=(const difference_type value) noexcept { + return (*this += -value); + } + + constexpr resource_cache_iterator operator-(const difference_type value) const noexcept { + return (*this + -value); + } + + [[nodiscard]] constexpr reference operator[](const difference_type value) const noexcept { + return {it[value].first, resource{it[value].second}}; + } + + [[nodiscard]] constexpr reference operator*() const noexcept { + return (*this)[0]; + } + + [[nodiscard]] constexpr pointer operator->() const noexcept { + return operator*(); + } + + template + friend constexpr std::ptrdiff_t operator-(const resource_cache_iterator &, const resource_cache_iterator &) noexcept; + + template + friend constexpr bool operator==(const resource_cache_iterator &, const resource_cache_iterator &) noexcept; + + template + friend constexpr bool operator<(const resource_cache_iterator &, const resource_cache_iterator &) noexcept; + +private: + It it; +}; + +template +[[nodiscard]] constexpr std::ptrdiff_t operator-(const resource_cache_iterator &lhs, const resource_cache_iterator &rhs) noexcept { + return lhs.it - rhs.it; +} + +template +[[nodiscard]] constexpr bool operator==(const resource_cache_iterator &lhs, const resource_cache_iterator &rhs) noexcept { + return lhs.it == rhs.it; +} + +template +[[nodiscard]] constexpr bool operator!=(const resource_cache_iterator &lhs, const resource_cache_iterator &rhs) noexcept { + return !(lhs == rhs); +} + +template +[[nodiscard]] constexpr bool operator<(const resource_cache_iterator &lhs, const resource_cache_iterator &rhs) noexcept { + return lhs.it < rhs.it; +} + +template +[[nodiscard]] constexpr bool operator>(const resource_cache_iterator &lhs, const resource_cache_iterator &rhs) noexcept { + return rhs < lhs; +} + +template +[[nodiscard]] constexpr bool operator<=(const resource_cache_iterator &lhs, const resource_cache_iterator &rhs) noexcept { + return !(lhs > rhs); +} + +template +[[nodiscard]] constexpr bool operator>=(const resource_cache_iterator &lhs, const resource_cache_iterator &rhs) noexcept { + return !(lhs < rhs); +} + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Basic cache for resources of any type. + * @tparam Type Type of resources managed by a cache. + * @tparam Loader Type of loader used to create the resources. + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class resource_cache { + using alloc_traits = typename std::allocator_traits; + static_assert(std::is_same_v, "Invalid value type"); + using container_allocator = typename alloc_traits::template rebind_alloc>; + using container_type = dense_map, container_allocator>; + +public: + /*! @brief Resource type. */ + using value_type = Type; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + /*! @brief Loader type. */ + using loader_type = Loader; + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Input iterator type. */ + using iterator = internal::resource_cache_iterator; + /*! @brief Constant input iterator type. */ + using const_iterator = internal::resource_cache_iterator; + + /*! @brief Default constructor. */ + resource_cache() + : resource_cache{loader_type{}} {} + + /** + * @brief Constructs an empty cache with a given allocator. + * @param allocator The allocator to use. + */ + explicit resource_cache(const allocator_type &allocator) + : resource_cache{loader_type{}, allocator} {} + + /** + * @brief Constructs an empty cache with a given allocator and loader. + * @param callable The loader to use. + * @param allocator The allocator to use. + */ + explicit resource_cache(const loader_type &callable, const allocator_type &allocator = allocator_type{}) + : pool{container_type{allocator}, callable} {} + + /*! @brief Default copy constructor. */ + resource_cache(const resource_cache &) = default; + + /** + * @brief Allocator-extended copy constructor. + * @param other The instance to copy from. + * @param allocator The allocator to use. + */ + resource_cache(const resource_cache &other, const allocator_type &allocator) + : pool{std::piecewise_construct, std::forward_as_tuple(other.pool.first(), allocator), std::forward_as_tuple(other.pool.second())} {} + + /*! @brief Default move constructor. */ + resource_cache(resource_cache &&) = default; + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + resource_cache(resource_cache &&other, const allocator_type &allocator) + : pool{std::piecewise_construct, std::forward_as_tuple(std::move(other.pool.first()), allocator), std::forward_as_tuple(std::move(other.pool.second()))} {} + + /** + * @brief Default copy assignment operator. + * @return This cache. + */ + resource_cache &operator=(const resource_cache &) = default; + + /** + * @brief Default move assignment operator. + * @return This cache. + */ + resource_cache &operator=(resource_cache &&) = default; + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return pool.first().get_allocator(); + } + + /** + * @brief Returns an iterator to the beginning. + * + * The returned iterator points to the first instance of the cache. If the + * cache is empty, the returned iterator will be equal to `end()`. + * + * @return An iterator to the first instance of the internal cache. + */ + [[nodiscard]] const_iterator cbegin() const noexcept { + return pool.first().begin(); + } + + /*! @copydoc cbegin */ + [[nodiscard]] const_iterator begin() const noexcept { + return cbegin(); + } + + /*! @copydoc begin */ + [[nodiscard]] iterator begin() noexcept { + return pool.first().begin(); + } + + /** + * @brief Returns an iterator to the end. + * + * The returned iterator points to the element following the last instance + * of the cache. Attempting to dereference the returned iterator results in + * undefined behavior. + * + * @return An iterator to the element following the last instance of the + * internal cache. + */ + [[nodiscard]] const_iterator cend() const noexcept { + return pool.first().end(); + } + + /*! @copydoc cend */ + [[nodiscard]] const_iterator end() const noexcept { + return cend(); + } + + /*! @copydoc end */ + [[nodiscard]] iterator end() noexcept { + return pool.first().end(); + } + + /** + * @brief Returns true if a cache contains no resources, false otherwise. + * @return True if the cache contains no resources, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return pool.first().empty(); + } + + /** + * @brief Number of resources managed by a cache. + * @return Number of resources currently stored. + */ + [[nodiscard]] size_type size() const noexcept { + return pool.first().size(); + } + + /*! @brief Clears a cache. */ + void clear() noexcept { + pool.first().clear(); + } + + /** + * @brief Loads a resource, if its identifier does not exist. + * + * Arguments are forwarded directly to the loader and _consumed_ only if the + * resource doesn't already exist. + * + * @warning + * If the resource isn't loaded correctly, the returned handle could be + * invalid and any use of it will result in undefined behavior. + * + * @tparam Args Types of arguments to use to load the resource if required. + * @param id Unique resource identifier. + * @param args Arguments to use to load the resource if required. + * @return A pair consisting of an iterator to the inserted element (or to + * the element that prevented the insertion) and a bool denoting whether the + * insertion took place. + */ + template + std::pair load(const id_type id, Args &&...args) { + if(auto it = pool.first().find(id); it != pool.first().end()) { + return {it, false}; + } + + return pool.first().emplace(id, pool.second()(std::forward(args)...)); + } + + /** + * @brief Force loads a resource, if its identifier does not exist. + * @copydetails load + */ + template + std::pair force_load(const id_type id, Args &&...args) { + return {pool.first().insert_or_assign(id, pool.second()(std::forward(args)...)).first, true}; + } + + /** + * @brief Returns a handle for a given resource identifier. + * + * @warning + * There is no guarantee that the returned handle is valid.
+ * If it is not, any use will result in indefinite behavior. + * + * @param id Unique resource identifier. + * @return A handle for the given resource. + */ + [[nodiscard]] resource operator[](const id_type id) const { + if(auto it = pool.first().find(id); it != pool.first().cend()) { + return resource{it->second}; + } + + return {}; + } + + /*! @copydoc operator[] */ + [[nodiscard]] resource operator[](const id_type id) { + if(auto it = pool.first().find(id); it != pool.first().end()) { + return resource{it->second}; + } + + return {}; + } + + /** + * @brief Checks if a cache contains a given identifier. + * @param id Unique resource identifier. + * @return True if the cache contains the resource, false otherwise. + */ + [[nodiscard]] bool contains(const id_type id) const { + return pool.first().contains(id); + } + + /** + * @brief Removes an element from a given position. + * @param pos An iterator to the element to remove. + * @return An iterator following the removed element. + */ + iterator erase(const_iterator pos) { + const auto it = pool.first().begin(); + return pool.first().erase(it + (pos - const_iterator{it})); + } + + /** + * @brief Removes the given elements from a cache. + * @param first An iterator to the first element of the range of elements. + * @param last An iterator past the last element of the range of elements. + * @return An iterator following the last removed element. + */ + iterator erase(const_iterator first, const_iterator last) { + const auto it = pool.first().begin(); + return pool.first().erase(it + (first - const_iterator{it}), it + (last - const_iterator{it})); + } + + /** + * @brief Removes the given elements from a cache. + * @param id Unique resource identifier. + * @return Number of resources erased (either 0 or 1). + */ + size_type erase(const id_type id) { + return pool.first().erase(id); + } + + /** + * @brief Returns the loader used to create resources. + * @return The loader used to create resources. + */ + [[nodiscard]] loader_type loader() const { + return pool.second(); + } + +private: + compressed_pair pool; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/resource/fwd.hpp b/LiteLoader/third-party/include/entt/resource/fwd.hpp new file mode 100644 index 0000000..ed63da5 --- /dev/null +++ b/LiteLoader/third-party/include/entt/resource/fwd.hpp @@ -0,0 +1,19 @@ +#ifndef ENTT_RESOURCE_FWD_HPP +#define ENTT_RESOURCE_FWD_HPP + +#include + +namespace entt { + +template +struct resource_loader; + +template, typename = std::allocator> +class resource_cache; + +template +class resource; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/resource/loader.hpp b/LiteLoader/third-party/include/entt/resource/loader.hpp new file mode 100644 index 0000000..f59d748 --- /dev/null +++ b/LiteLoader/third-party/include/entt/resource/loader.hpp @@ -0,0 +1,33 @@ +#ifndef ENTT_RESOURCE_LOADER_HPP +#define ENTT_RESOURCE_LOADER_HPP + +#include +#include +#include "fwd.hpp" + +namespace entt { + +/** + * @brief Transparent loader for shared resources. + * @tparam Type Type of resources created by the loader. + */ +template +struct resource_loader { + /*! @brief Result type. */ + using result_type = std::shared_ptr; + + /** + * @brief Constructs a shared pointer to a resource from its arguments. + * @tparam Args Types of arguments to use to construct the resource. + * @param args Parameters to use to construct the resource. + * @return A shared pointer to a resource of the given type. + */ + template + result_type operator()(Args &&...args) const { + return std::make_shared(std::forward(args)...); + } +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/resource/resource.hpp b/LiteLoader/third-party/include/entt/resource/resource.hpp new file mode 100644 index 0000000..2e3d68d --- /dev/null +++ b/LiteLoader/third-party/include/entt/resource/resource.hpp @@ -0,0 +1,246 @@ +#ifndef ENTT_RESOURCE_RESOURCE_HPP +#define ENTT_RESOURCE_RESOURCE_HPP + +#include +#include +#include +#include "fwd.hpp" + +namespace entt { + +/** + * @brief Basic resource handle. + * + * A handle wraps a resource and extends its lifetime. It also shares the same + * resource with all other handles constructed from the same element.
+ * As a rule of thumb, resources should never be copied nor moved. Handles are + * the way to go to push references around. + * + * @tparam Type Type of resource managed by a handle. + */ +template +class resource { + /*! @brief Resource handles are friends with each other. */ + template + friend class resource; + + template + static constexpr bool is_acceptable_v = !std::is_same_v && std::is_constructible_v; + +public: + /*! @brief Resource type. */ + using element_type = Type; + /*! @brief Handle type. */ + using handle_type = std::shared_ptr; + + /*! @brief Default constructor. */ + resource() noexcept + : value{} {} + + /** + * @brief Creates a handle from a weak pointer, namely a resource. + * @param res A weak pointer to a resource. + */ + explicit resource(handle_type res) noexcept + : value{std::move(res)} {} + + /*! @brief Default copy constructor. */ + resource(const resource &) noexcept = default; + + /*! @brief Default move constructor. */ + resource(resource &&) noexcept = default; + + /** + * @brief Aliasing constructor. + * @tparam Other Type of resource managed by the received handle. + * @param other The handle with which to share ownership information. + * @param res Unrelated and unmanaged resources. + */ + template + resource(const resource &other, element_type &res) noexcept + : value{other.value, std::addressof(res)} {} + + /** + * @brief Copy constructs a handle which shares ownership of the resource. + * @tparam Other Type of resource managed by the received handle. + * @param other The handle to copy from. + */ + template>> + resource(const resource &other) noexcept + : value{other.value} {} + + /** + * @brief Move constructs a handle which takes ownership of the resource. + * @tparam Other Type of resource managed by the received handle. + * @param other The handle to move from. + */ + template>> + resource(resource &&other) noexcept + : value{std::move(other.value)} {} + + /** + * @brief Default copy assignment operator. + * @return This resource handle. + */ + resource &operator=(const resource &) noexcept = default; + + /** + * @brief Default move assignment operator. + * @return This resource handle. + */ + resource &operator=(resource &&) noexcept = default; + + /** + * @brief Copy assignment operator from foreign handle. + * @tparam Other Type of resource managed by the received handle. + * @param other The handle to copy from. + * @return This resource handle. + */ + template + std::enable_if_t, resource &> + operator=(const resource &other) noexcept { + value = other.value; + return *this; + } + + /** + * @brief Move assignment operator from foreign handle. + * @tparam Other Type of resource managed by the received handle. + * @param other The handle to move from. + * @return This resource handle. + */ + template + std::enable_if_t, resource &> + operator=(resource &&other) noexcept { + value = std::move(other.value); + return *this; + } + + /** + * @brief Returns a reference to the managed resource. + * + * @warning + * The behavior is undefined if the handle doesn't contain a resource. + * + * @return A reference to the managed resource. + */ + [[nodiscard]] element_type &operator*() const noexcept { + return *value; + } + + /*! @copydoc operator* */ + [[nodiscard]] operator element_type &() const noexcept { + return *value; + } + + /** + * @brief Returns a pointer to the managed resource. + * @return A pointer to the managed resource. + */ + [[nodiscard]] element_type *operator->() const noexcept { + return value.get(); + } + + /** + * @brief Returns true if a handle contains a resource, false otherwise. + * @return True if the handle contains a resource, false otherwise. + */ + [[nodiscard]] explicit operator bool() const noexcept { + return static_cast(value); + } + + /** + * @brief Returns the underlying resource handle. + * @return The underlying resource handle. + */ + [[nodiscard]] const handle_type &handle() const noexcept { + return value; + } + +private: + handle_type value; +}; + +/** + * @brief Compares two handles. + * @tparam Res Type of resource managed by the first handle. + * @tparam Other Type of resource managed by the second handle. + * @param lhs A valid handle. + * @param rhs A valid handle. + * @return True if both handles refer to the same resource, false otherwise. + */ +template +[[nodiscard]] bool operator==(const resource &lhs, const resource &rhs) noexcept { + return (std::addressof(*lhs) == std::addressof(*rhs)); +} + +/** + * @brief Compares two handles. + * @tparam Res Type of resource managed by the first handle. + * @tparam Other Type of resource managed by the second handle. + * @param lhs A valid handle. + * @param rhs A valid handle. + * @return False if both handles refer to the same registry, true otherwise. + */ +template +[[nodiscard]] bool operator!=(const resource &lhs, const resource &rhs) noexcept { + return !(lhs == rhs); +} + +/** + * @brief Compares two handles. + * @tparam Res Type of resource managed by the first handle. + * @tparam Other Type of resource managed by the second handle. + * @param lhs A valid handle. + * @param rhs A valid handle. + * @return True if the first handle is less than the second, false otherwise. + */ +template +[[nodiscard]] bool operator<(const resource &lhs, const resource &rhs) noexcept { + return (std::addressof(*lhs) < std::addressof(*rhs)); +} + +/** + * @brief Compares two handles. + * @tparam Res Type of resource managed by the first handle. + * @tparam Other Type of resource managed by the second handle. + * @param lhs A valid handle. + * @param rhs A valid handle. + * @return True if the first handle is greater than the second, false otherwise. + */ +template +[[nodiscard]] bool operator>(const resource &lhs, const resource &rhs) noexcept { + return (std::addressof(*lhs) > std::addressof(*rhs)); +} + +/** + * @brief Compares two handles. + * @tparam Res Type of resource managed by the first handle. + * @tparam Other Type of resource managed by the second handle. + * @param lhs A valid handle. + * @param rhs A valid handle. + * @return True if the first handle is less than or equal to the second, false + * otherwise. + */ +template +[[nodiscard]] bool operator<=(const resource &lhs, const resource &rhs) noexcept { + return !(lhs > rhs); +} + +/** + * @brief Compares two handles. + * @tparam Res Type of resource managed by the first handle. + * @tparam Other Type of resource managed by the second handle. + * @param lhs A valid handle. + * @param rhs A valid handle. + * @return True if the first handle is greater than or equal to the second, + * false otherwise. + */ +template +[[nodiscard]] bool operator>=(const resource &lhs, const resource &rhs) noexcept { + return !(lhs < rhs); +} + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/signal/delegate.hpp b/LiteLoader/third-party/include/entt/signal/delegate.hpp similarity index 78% rename from LiteLoader/Header/third-party/entt/signal/delegate.hpp rename to LiteLoader/third-party/include/entt/signal/delegate.hpp index e8be93f..4419616 100644 --- a/LiteLoader/Header/third-party/entt/signal/delegate.hpp +++ b/LiteLoader/third-party/include/entt/signal/delegate.hpp @@ -1,77 +1,54 @@ #ifndef ENTT_SIGNAL_DELEGATE_HPP #define ENTT_SIGNAL_DELEGATE_HPP - -#include #include -#include #include +#include #include -#include "../core/type_traits.hpp" +#include #include "../config/config.h" - +#include "../core/type_traits.hpp" +#include "fwd.hpp" namespace entt { - /** * @cond TURN_OFF_DOXYGEN * Internal details not to be documented. */ - namespace internal { - template -auto function_pointer(Ret(*)(Args...)) -> Ret(*)(Args...); - +constexpr auto function_pointer(Ret (*)(Args...)) -> Ret (*)(Args...); template -auto function_pointer(Ret(*)(Type, Args...), Other &&) -> Ret(*)(Args...); - +constexpr auto function_pointer(Ret (*)(Type, Args...), Other &&) -> Ret (*)(Args...); template -auto function_pointer(Ret(Class:: *)(Args...), Other &&...) -> Ret(*)(Args...); - +constexpr auto function_pointer(Ret (Class::*)(Args...), Other &&...) -> Ret (*)(Args...); template -auto function_pointer(Ret(Class:: *)(Args...) const, Other &&...) -> Ret(*)(Args...); - +constexpr auto function_pointer(Ret (Class::*)(Args...) const, Other &&...) -> Ret (*)(Args...); template -auto function_pointer(Type Class:: *, Other &&...) -> Type(*)(); - +constexpr auto function_pointer(Type Class::*, Other &&...) -> Type (*)(); template -using function_pointer_t = decltype(internal::function_pointer(std::declval()...)); - +using function_pointer_t = decltype(function_pointer(std::declval()...)); template -[[nodiscard]] constexpr auto index_sequence_for(Ret(*)(Args...)) { +[[nodiscard]] constexpr auto index_sequence_for(Ret (*)(Args...)) { return std::index_sequence_for{}; } - -} - +} // namespace internal /** * Internal details not to be documented. * @endcond */ - -/*! @brief Used to wrap a function or a member of a specified type. */ -template -struct connect_arg_t {}; - - -/*! @brief Constant of type connect_arg_t used to disambiguate calls. */ -template -inline constexpr connect_arg_t connect_arg{}; - - /** * @brief Basic delegate implementation. * @@ -81,7 +58,6 @@ inline constexpr connect_arg_t connect_arg{}; template class delegate; - /** * @brief Utility class to use to send around functions and members. * @@ -97,7 +73,7 @@ class delegate; template class delegate { template - [[nodiscard]] auto wrap(std::index_sequence) ENTT_NOEXCEPT { + [[nodiscard]] auto wrap(std::index_sequence) noexcept { return [](const void *, Args... args) -> Ret { [[maybe_unused]] const auto arguments = std::forward_as_tuple(std::forward(args)...); return static_cast(std::invoke(Candidate, std::forward>>(std::get(arguments))...)); @@ -105,7 +81,7 @@ class delegate { } template - [[nodiscard]] auto wrap(Type &, std::index_sequence) ENTT_NOEXCEPT { + [[nodiscard]] auto wrap(Type &, std::index_sequence) noexcept { return [](const void *payload, Args... args) -> Ret { [[maybe_unused]] const auto arguments = std::forward_as_tuple(std::forward(args)...); Type *curr = static_cast(const_cast *>(payload)); @@ -114,7 +90,7 @@ class delegate { } template - [[nodiscard]] auto wrap(Type *, std::index_sequence) ENTT_NOEXCEPT { + [[nodiscard]] auto wrap(Type *, std::index_sequence) noexcept { return [](const void *payload, Args... args) -> Ret { [[maybe_unused]] const auto arguments = std::forward_as_tuple(std::forward(args)...); Type *curr = static_cast(const_cast *>(payload)); @@ -131,30 +107,19 @@ public: using result_type = Ret; /*! @brief Default constructor. */ - delegate() ENTT_NOEXCEPT - : fn{nullptr}, data{nullptr} - {} + delegate() noexcept + : instance{nullptr}, + fn{nullptr} {} /** - * @brief Constructs a delegate and connects a free function or an unbound - * member. + * @brief Constructs a delegate with a given object or payload, if any. * @tparam Candidate Function or member to connect to the delegate. + * @tparam Type Type of class or type of payload, if any. + * @param value_or_instance Optional valid object that fits the purpose. */ - template - delegate(connect_arg_t) ENTT_NOEXCEPT { - connect(); - } - - /** - * @brief Constructs a delegate and connects a free function with payload or - * a bound member. - * @tparam Candidate Function or member to connect to the delegate. - * @tparam Type Type of class or type of payload. - * @param value_or_instance A valid object that fits the purpose. - */ - template - delegate(connect_arg_t, Type &&value_or_instance) ENTT_NOEXCEPT { - connect(std::forward(value_or_instance)); + template + delegate(connect_arg_t, Type &&...value_or_instance) noexcept { + connect(std::forward(value_or_instance)...); } /** @@ -163,7 +128,7 @@ public: * @param function Function to connect to the delegate. * @param payload User defined arbitrary data. */ - delegate(function_type *function, const void *payload = nullptr) ENTT_NOEXCEPT { + delegate(function_type *function, const void *payload = nullptr) noexcept { connect(function, payload); } @@ -172,8 +137,8 @@ public: * @tparam Candidate Function or member to connect to the delegate. */ template - void connect() ENTT_NOEXCEPT { - data = nullptr; + void connect() noexcept { + instance = nullptr; if constexpr(std::is_invocable_r_v) { fn = [](const void *, Args... args) -> Ret { @@ -202,8 +167,8 @@ public: * @param value_or_instance A valid reference that fits the purpose. */ template - void connect(Type &value_or_instance) ENTT_NOEXCEPT { - data = &value_or_instance; + void connect(Type &value_or_instance) noexcept { + instance = &value_or_instance; if constexpr(std::is_invocable_r_v) { fn = [](const void *payload, Args... args) -> Ret { @@ -226,8 +191,8 @@ public: * @param value_or_instance A valid pointer that fits the purpose. */ template - void connect(Type *value_or_instance) ENTT_NOEXCEPT { - data = value_or_instance; + void connect(Type *value_or_instance) noexcept { + instance = value_or_instance; if constexpr(std::is_invocable_r_v) { fn = [](const void *payload, Args... args) -> Ret { @@ -252,9 +217,10 @@ public: * @param function Function to connect to the delegate. * @param payload User defined arbitrary data. */ - void connect(function_type *function, const void *payload = nullptr) ENTT_NOEXCEPT { + void connect(function_type *function, const void *payload = nullptr) noexcept { + ENTT_ASSERT(function != nullptr, "Uninitialized function pointer"); + instance = payload; fn = function; - data = payload; } /** @@ -262,17 +228,17 @@ public: * * After a reset, a delegate cannot be invoked anymore. */ - void reset() ENTT_NOEXCEPT { + void reset() noexcept { + instance = nullptr; fn = nullptr; - data = nullptr; } /** * @brief Returns the instance or the payload linked to a delegate, if any. * @return An opaque pointer to the underlying data. */ - [[nodiscard]] const void * instance() const ENTT_NOEXCEPT { - return data; + [[nodiscard]] const void *data() const noexcept { + return instance; } /** @@ -289,15 +255,15 @@ public: */ Ret operator()(Args... args) const { ENTT_ASSERT(static_cast(*this), "Uninitialized delegate"); - return fn(data, std::forward(args)...); + return fn(instance, std::forward(args)...); } /** * @brief Checks whether a delegate actually stores a listener. * @return False if the delegate is empty, true otherwise. */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { - // no need to test also data + [[nodiscard]] explicit operator bool() const noexcept { + // no need to also test instance return !(fn == nullptr); } @@ -306,16 +272,15 @@ public: * @param other Delegate with which to compare. * @return False if the two contents differ, true otherwise. */ - [[nodiscard]] bool operator==(const delegate &other) const ENTT_NOEXCEPT { - return fn == other.fn && data == other.data; + [[nodiscard]] bool operator==(const delegate &other) const noexcept { + return fn == other.fn && instance == other.instance; } private: + const void *instance; function_type *fn; - const void *data; }; - /** * @brief Compares the contents of two delegates. * @tparam Ret Return type of a function type. @@ -325,19 +290,16 @@ private: * @return True if the two contents differ, false otherwise. */ template -[[nodiscard]] bool operator!=(const delegate &lhs, const delegate &rhs) ENTT_NOEXCEPT { +[[nodiscard]] bool operator!=(const delegate &lhs, const delegate &rhs) noexcept { return !(lhs == rhs); } - /** * @brief Deduction guide. * @tparam Candidate Function or member to connect to the delegate. */ template -delegate(connect_arg_t) --> delegate>>; - +delegate(connect_arg_t) -> delegate>>; /** * @brief Deduction guide. @@ -345,9 +307,7 @@ delegate(connect_arg_t) * @tparam Type Type of class or type of payload. */ template -delegate(connect_arg_t, Type &&) --> delegate>>; - +delegate(connect_arg_t, Type &&) -> delegate>>; /** * @brief Deduction guide. @@ -355,11 +315,8 @@ delegate(connect_arg_t, Type &&) * @tparam Args Types of arguments of a function type. */ template -delegate(Ret(*)(const void *, Args...), const void * = nullptr) --> delegate; - - -} +delegate(Ret (*)(const void *, Args...), const void * = nullptr) -> delegate; +} // namespace entt #endif diff --git a/LiteLoader/third-party/include/entt/signal/dispatcher.hpp b/LiteLoader/third-party/include/entt/signal/dispatcher.hpp new file mode 100644 index 0000000..72c5694 --- /dev/null +++ b/LiteLoader/third-party/include/entt/signal/dispatcher.hpp @@ -0,0 +1,390 @@ +#ifndef ENTT_SIGNAL_DISPATCHER_HPP +#define ENTT_SIGNAL_DISPATCHER_HPP + +#include +#include +#include +#include +#include +#include +#include "../container/dense_map.hpp" +#include "../core/compressed_pair.hpp" +#include "../core/fwd.hpp" +#include "../core/type_info.hpp" +#include "../core/utility.hpp" +#include "fwd.hpp" +#include "sigh.hpp" + +namespace entt { + +/** + * @cond TURN_OFF_DOXYGEN + * Internal details not to be documented. + */ + +namespace internal { + +struct basic_dispatcher_handler { + virtual ~basic_dispatcher_handler() = default; + virtual void publish() = 0; + virtual void disconnect(void *) = 0; + virtual void clear() noexcept = 0; + virtual std::size_t size() const noexcept = 0; +}; + +template +class dispatcher_handler final: public basic_dispatcher_handler { + static_assert(std::is_same_v>, "Invalid type"); + + using alloc_traits = std::allocator_traits; + using signal_type = sigh; + using container_type = std::vector>; + +public: + using allocator_type = Allocator; + + dispatcher_handler(const allocator_type &allocator) + : signal{allocator}, + events{allocator} {} + + void publish() override { + const auto length = events.size(); + + for(std::size_t pos{}; pos < length; ++pos) { + signal.publish(events[pos]); + } + + events.erase(events.cbegin(), events.cbegin() + length); + } + + void disconnect(void *instance) override { + bucket().disconnect(instance); + } + + void clear() noexcept override { + events.clear(); + } + + [[nodiscard]] auto bucket() noexcept { + return typename signal_type::sink_type{signal}; + } + + void trigger(Type event) { + signal.publish(event); + } + + template + void enqueue(Args &&...args) { + if constexpr(std::is_aggregate_v) { + events.push_back(Type{std::forward(args)...}); + } else { + events.emplace_back(std::forward(args)...); + } + } + + std::size_t size() const noexcept override { + return events.size(); + } + +private: + signal_type signal; + container_type events; +}; + +} // namespace internal + +/** + * Internal details not to be documented. + * @endcond + */ + +/** + * @brief Basic dispatcher implementation. + * + * A dispatcher can be used either to trigger an immediate event or to enqueue + * events to be published all together once per tick.
+ * Listeners are provided in the form of member functions. For each event of + * type `Type`, listeners are such that they can be invoked with an argument of + * type `Type &`, no matter what the return type is. + * + * The dispatcher creates instances of the `sigh` class internally. Refer to the + * documentation of the latter for more details. + * + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class basic_dispatcher { + template + using handler_type = internal::dispatcher_handler; + + using key_type = id_type; + // std::shared_ptr because of its type erased allocator which is useful here + using mapped_type = std::shared_ptr; + + using alloc_traits = std::allocator_traits; + using container_allocator = typename alloc_traits::template rebind_alloc>; + using container_type = dense_map, container_allocator>; + + template + [[nodiscard]] handler_type &assure(const id_type id) { + static_assert(std::is_same_v>, "Non-decayed types not allowed"); + auto &&ptr = pools.first()[id]; + + if(!ptr) { + const auto &allocator = get_allocator(); + ptr = std::allocate_shared>(allocator, allocator); + } + + return static_cast &>(*ptr); + } + + template + [[nodiscard]] const handler_type *assure(const id_type id) const { + static_assert(std::is_same_v>, "Non-decayed types not allowed"); + + if(auto it = pools.first().find(id); it != pools.first().cend()) { + return static_cast *>(it->second.get()); + } + + return nullptr; + } + +public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + + /*! @brief Default constructor. */ + basic_dispatcher() + : basic_dispatcher{allocator_type{}} {} + + /** + * @brief Constructs a dispatcher with a given allocator. + * @param allocator The allocator to use. + */ + explicit basic_dispatcher(const allocator_type &allocator) + : pools{allocator, allocator} {} + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + basic_dispatcher(basic_dispatcher &&other) noexcept + : pools{std::move(other.pools)} {} + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + basic_dispatcher(basic_dispatcher &&other, const allocator_type &allocator) noexcept + : pools{container_type{std::move(other.pools.first()), allocator}, allocator} {} + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This dispatcher. + */ + basic_dispatcher &operator=(basic_dispatcher &&other) noexcept { + pools = std::move(other.pools); + return *this; + } + + /** + * @brief Exchanges the contents with those of a given dispatcher. + * @param other Dispatcher to exchange the content with. + */ + void swap(basic_dispatcher &other) { + using std::swap; + swap(pools, other.pools); + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return pools.second(); + } + + /** + * @brief Returns the number of pending events for a given type. + * @tparam Type Type of event for which to return the count. + * @param id Name used to map the event queue within the dispatcher. + * @return The number of pending events for the given type. + */ + template + size_type size(const id_type id = type_hash::value()) const noexcept { + const auto *cpool = assure>(id); + return cpool ? cpool->size() : 0u; + } + + /** + * @brief Returns the total number of pending events. + * @return The total number of pending events. + */ + size_type size() const noexcept { + size_type count{}; + + for(auto &&cpool: pools.first()) { + count += cpool.second->size(); + } + + return count; + } + + /** + * @brief Returns a sink object for the given event and queue. + * + * A sink is an opaque object used to connect listeners to events. + * + * The function type for a listener is _compatible_ with: + * + * @code{.cpp} + * void(Type &); + * @endcode + * + * The order of invocation of the listeners isn't guaranteed. + * + * @sa sink + * + * @tparam Type Type of event of which to get the sink. + * @param id Name used to map the event queue within the dispatcher. + * @return A temporary sink object. + */ + template + [[nodiscard]] auto sink(const id_type id = type_hash::value()) { + return assure(id).bucket(); + } + + /** + * @brief Triggers an immediate event of a given type. + * @tparam Type Type of event to trigger. + * @param value An instance of the given type of event. + */ + template + void trigger(Type &&value = {}) { + trigger(type_hash>::value(), std::forward(value)); + } + + /** + * @brief Triggers an immediate event on a queue of a given type. + * @tparam Type Type of event to trigger. + * @param value An instance of the given type of event. + * @param id Name used to map the event queue within the dispatcher. + */ + template + void trigger(const id_type id, Type &&value = {}) { + assure>(id).trigger(std::forward(value)); + } + + /** + * @brief Enqueues an event of the given type. + * @tparam Type Type of event to enqueue. + * @tparam Args Types of arguments to use to construct the event. + * @param args Arguments to use to construct the event. + */ + template + void enqueue(Args &&...args) { + enqueue_hint(type_hash::value(), std::forward(args)...); + } + + /** + * @brief Enqueues an event of the given type. + * @tparam Type Type of event to enqueue. + * @param value An instance of the given type of event. + */ + template + void enqueue(Type &&value) { + enqueue_hint(type_hash>::value(), std::forward(value)); + } + + /** + * @brief Enqueues an event of the given type. + * @tparam Type Type of event to enqueue. + * @tparam Args Types of arguments to use to construct the event. + * @param id Name used to map the event queue within the dispatcher. + * @param args Arguments to use to construct the event. + */ + template + void enqueue_hint(const id_type id, Args &&...args) { + assure(id).enqueue(std::forward(args)...); + } + + /** + * @brief Enqueues an event of the given type. + * @tparam Type Type of event to enqueue. + * @param id Name used to map the event queue within the dispatcher. + * @param value An instance of the given type of event. + */ + template + void enqueue_hint(const id_type id, Type &&value) { + assure>(id).enqueue(std::forward(value)); + } + + /** + * @brief Utility function to disconnect everything related to a given value + * or instance from a dispatcher. + * @tparam Type Type of class or type of payload. + * @param value_or_instance A valid object that fits the purpose. + */ + template + void disconnect(Type &value_or_instance) { + disconnect(&value_or_instance); + } + + /** + * @brief Utility function to disconnect everything related to a given value + * or instance from a dispatcher. + * @tparam Type Type of class or type of payload. + * @param value_or_instance A valid object that fits the purpose. + */ + template + void disconnect(Type *value_or_instance) { + for(auto &&cpool: pools.first()) { + cpool.second->disconnect(value_or_instance); + } + } + + /** + * @brief Discards all the events stored so far in a given queue. + * @tparam Type Type of event to discard. + * @param id Name used to map the event queue within the dispatcher. + */ + template + void clear(const id_type id = type_hash::value()) { + assure(id).clear(); + } + + /*! @brief Discards all the events queued so far. */ + void clear() noexcept { + for(auto &&cpool: pools.first()) { + cpool.second->clear(); + } + } + + /** + * @brief Delivers all the pending events of a given queue. + * @tparam Type Type of event to send. + * @param id Name used to map the event queue within the dispatcher. + */ + template + void update(const id_type id = type_hash::value()) { + assure(id).publish(); + } + + /*! @brief Delivers all the pending events. */ + void update() const { + for(auto &&cpool: pools.first()) { + cpool.second->publish(); + } + } + +private: + compressed_pair pools; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/signal/emitter.hpp b/LiteLoader/third-party/include/entt/signal/emitter.hpp new file mode 100644 index 0000000..263da18 --- /dev/null +++ b/LiteLoader/third-party/include/entt/signal/emitter.hpp @@ -0,0 +1,170 @@ +#ifndef ENTT_SIGNAL_EMITTER_HPP +#define ENTT_SIGNAL_EMITTER_HPP + +#include +#include +#include +#include "../container/dense_map.hpp" +#include "../core/compressed_pair.hpp" +#include "../core/fwd.hpp" +#include "../core/type_info.hpp" +#include "../core/utility.hpp" +#include "fwd.hpp" + +namespace entt { + +/** + * @brief General purpose event emitter. + * + * To create an emitter type, derived classes must inherit from the base as: + * + * @code{.cpp} + * struct my_emitter: emitter { + * // ... + * } + * @endcode + * + * Handlers for the different events are created internally on the fly. It's not + * required to specify in advance the full list of accepted events.
+ * Moreover, whenever an event is published, an emitter also passes a reference + * to itself to its listeners. + * + * @tparam Derived Emitter type. + * @tparam Allocator Type of allocator used to manage memory and elements. + */ +template +class emitter { + using key_type = id_type; + using mapped_type = std::function; + + using alloc_traits = std::allocator_traits; + using container_allocator = typename alloc_traits::template rebind_alloc>; + using container_type = dense_map, container_allocator>; + +public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; + /*! @brief Unsigned integer type. */ + using size_type = std::size_t; + + /*! @brief Default constructor. */ + emitter() + : emitter{allocator_type{}} {} + + /** + * @brief Constructs an emitter with a given allocator. + * @param allocator The allocator to use. + */ + explicit emitter(const allocator_type &allocator) + : handlers{allocator, allocator} {} + + /*! @brief Default destructor. */ + virtual ~emitter() noexcept { + static_assert(std::is_base_of_v, Derived>, "Invalid emitter type"); + } + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + emitter(emitter &&other) noexcept + : handlers{std::move(other.handlers)} {} + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + emitter(emitter &&other, const allocator_type &allocator) noexcept + : handlers{container_type{std::move(other.handlers.first()), allocator}, allocator} {} + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This dispatcher. + */ + emitter &operator=(emitter &&other) noexcept { + handlers = std::move(other.handlers); + return *this; + } + + /** + * @brief Exchanges the contents with those of a given emitter. + * @param other Emitter to exchange the content with. + */ + void swap(emitter &other) { + using std::swap; + swap(handlers, other.handlers); + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return handlers.second(); + } + + /** + * @brief Publishes a given event. + * @tparam Type Type of event to trigger. + * @param value An instance of the given type of event. + */ + template + void publish(Type &&value) { + if(const auto id = type_id().hash(); handlers.first().contains(id)) { + handlers.first()[id](&value); + } + } + + /** + * @brief Registers a listener with the event emitter. + * @tparam Type Type of event to which to connect the listener. + * @param func The listener to register. + */ + template + void on(std::function func) { + handlers.first().insert_or_assign(type_id().hash(), [func = std::move(func), this](void *value) { + func(*static_cast(value), static_cast(*this)); + }); + } + + /** + * @brief Disconnects a listener from the event emitter. + * @tparam Type Type of event of the listener. + */ + template + void erase() { + handlers.first().erase(type_hash>>::value()); + } + + /*! @brief Disconnects all the listeners. */ + void clear() noexcept { + handlers.first().clear(); + } + + /** + * @brief Checks if there are listeners registered for the specific event. + * @tparam Type Type of event to test. + * @return True if there are no listeners registered, false otherwise. + */ + template + [[nodiscard]] bool contains() const { + return handlers.first().contains(type_hash>>::value()); + } + + /** + * @brief Checks if there are listeners registered with the event emitter. + * @return True if there are no listeners registered, false otherwise. + */ + [[nodiscard]] bool empty() const noexcept { + return handlers.first().empty(); + } + +private: + compressed_pair handlers; +}; + +} // namespace entt + +#endif diff --git a/LiteLoader/third-party/include/entt/signal/fwd.hpp b/LiteLoader/third-party/include/entt/signal/fwd.hpp new file mode 100644 index 0000000..b0964b6 --- /dev/null +++ b/LiteLoader/third-party/include/entt/signal/fwd.hpp @@ -0,0 +1,46 @@ +#ifndef ENTT_SIGNAL_FWD_HPP +#define ENTT_SIGNAL_FWD_HPP + +#include + +namespace entt { + +template +class delegate; + +template> +class basic_dispatcher; + +template> +class emitter; + +class connection; + +struct scoped_connection; + +template +class sink; + +template> +class sigh; + +/*! @brief Alias declaration for the most common use case. */ +using dispatcher = basic_dispatcher<>; + +/*! @brief Disambiguation tag for constructors and the like. */ +template +struct connect_arg_t { + /*! @brief Default constructor. */ + explicit connect_arg_t() = default; +}; + +/** + * @brief Constant of type connect_arg_t used to disambiguate calls. + * @tparam Candidate Element to connect (likely a free or member function). + */ +template +inline constexpr connect_arg_t connect_arg{}; + +} // namespace entt + +#endif diff --git a/LiteLoader/Header/third-party/entt/signal/sigh.hpp b/LiteLoader/third-party/include/entt/signal/sigh.hpp similarity index 60% rename from LiteLoader/Header/third-party/entt/signal/sigh.hpp rename to LiteLoader/third-party/include/entt/signal/sigh.hpp index bcece0c..5e85354 100644 --- a/LiteLoader/Header/third-party/entt/signal/sigh.hpp +++ b/LiteLoader/third-party/include/entt/signal/sigh.hpp @@ -1,45 +1,39 @@ #ifndef ENTT_SIGNAL_SIGH_HPP #define ENTT_SIGNAL_SIGH_HPP - -#include -#include -#include #include #include #include -#include "../config/config.h" +#include +#include #include "delegate.hpp" #include "fwd.hpp" - namespace entt { - /** * @brief Sink class. * * Primary template isn't defined on purpose. All the specializations give a * compile-time error unless the template parameter is a function type. * - * @tparam Function A valid function type. + * @tparam Type A valid signal handler type. */ -template +template class sink; - /** * @brief Unmanaged signal handler. * * Primary template isn't defined on purpose. All the specializations give a * compile-time error unless the template parameter is a function type. * - * @tparam Function A valid function type. + * @tparam Type A valid function type. + * @tparam Allocator Type of allocator used to manage memory and elements. */ -template +template class sigh; - /** * @brief Unmanaged signal handler. * @@ -54,30 +48,107 @@ class sigh; * * @tparam Ret Return type of a function type. * @tparam Args Types of arguments of a function type. + * @tparam Allocator Type of allocator used to manage memory and elements. */ -template -class sigh { +template +class sigh { /*! @brief A sink is allowed to modify a signal. */ - friend class sink; + friend class sink>; + + using alloc_traits = std::allocator_traits; + using container_type = std::vector, typename alloc_traits::template rebind_alloc>>; public: + /*! @brief Allocator type. */ + using allocator_type = Allocator; /*! @brief Unsigned integer type. */ using size_type = std::size_t; /*! @brief Sink type. */ - using sink_type = sink; + using sink_type = sink>; + + /*! @brief Default constructor. */ + sigh() noexcept(std::is_nothrow_default_constructible_v &&std::is_nothrow_constructible_v) + : sigh{allocator_type{}} {} /** - * @brief Instance type when it comes to connecting member functions. - * @tparam Class Type of class to which the member function belongs. + * @brief Constructs a signal handler with a given allocator. + * @param allocator The allocator to use. */ - template - using instance_type = Class *; + explicit sigh(const allocator_type &allocator) noexcept(std::is_nothrow_constructible_v) + : calls{allocator} {} + + /** + * @brief Copy constructor. + * @param other The instance to copy from. + */ + sigh(const sigh &other) noexcept(std::is_nothrow_copy_constructible_v) + : calls{other.calls} {} + + /** + * @brief Allocator-extended copy constructor. + * @param other The instance to copy from. + * @param allocator The allocator to use. + */ + sigh(const sigh &other, const allocator_type &allocator) noexcept(std::is_nothrow_constructible_v) + : calls{other.calls, allocator} {} + + /** + * @brief Move constructor. + * @param other The instance to move from. + */ + sigh(sigh &&other) noexcept(std::is_nothrow_move_constructible_v) + : calls{std::move(other.calls)} {} + + /** + * @brief Allocator-extended move constructor. + * @param other The instance to move from. + * @param allocator The allocator to use. + */ + sigh(sigh &&other, const allocator_type &allocator) noexcept(std::is_nothrow_constructible_v) + : calls{std::move(other.calls), allocator} {} + + /** + * @brief Copy assignment operator. + * @param other The instance to copy from. + * @return This signal handler. + */ + sigh &operator=(const sigh &other) noexcept(std::is_nothrow_copy_assignable_v) { + calls = other.calls; + return *this; + } + + /** + * @brief Move assignment operator. + * @param other The instance to move from. + * @return This signal handler. + */ + sigh &operator=(sigh &&other) noexcept(std::is_nothrow_move_assignable_v) { + calls = std::move(other.calls); + return *this; + } + + /** + * @brief Exchanges the contents with those of a given signal handler. + * @param other Signal handler to exchange the content with. + */ + void swap(sigh &other) noexcept(std::is_nothrow_swappable_v) { + using std::swap; + swap(calls, other.calls); + } + + /** + * @brief Returns the associated allocator. + * @return The associated allocator. + */ + [[nodiscard]] constexpr allocator_type get_allocator() const noexcept { + return calls.get_allocator(); + } /** * @brief Number of listeners connected to the signal. * @return Number of listeners currently connected. */ - [[nodiscard]] size_type size() const ENTT_NOEXCEPT { + [[nodiscard]] size_type size() const noexcept { return calls.size(); } @@ -85,7 +156,7 @@ public: * @brief Returns false if at least a listener is connected to the signal. * @return True if the signal has no listeners connected, false otherwise. */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { + [[nodiscard]] bool empty() const noexcept { return calls.empty(); } @@ -122,14 +193,18 @@ public: if constexpr(std::is_void_v) { if constexpr(std::is_invocable_r_v) { call(args...); - if(func()) { break; } + if(func()) { + break; + } } else { call(args...); func(); } } else { if constexpr(std::is_invocable_r_v) { - if(func(call(args...))) { break; } + if(func(call(args...))) { + break; + } } else { func(call(args...)); } @@ -138,10 +213,9 @@ public: } private: - std::vector> calls; + container_type calls; }; - /** * @brief Connection class. * @@ -155,18 +229,19 @@ class connection { friend class sink; connection(delegate fn, void *ref) - : disconnect{fn}, signal{ref} - {} + : disconnect{fn}, signal{ref} {} public: /*! @brief Default constructor. */ - connection() = default; + connection() + : disconnect{}, + signal{} {} /** * @brief Checks whether a connection is properly initialized. * @return True if the connection is properly initialized, false otherwise. */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { + [[nodiscard]] explicit operator bool() const noexcept { return static_cast(disconnect); } @@ -180,10 +255,9 @@ public: private: delegate disconnect; - void *signal{}; + void *signal; }; - /** * @brief Scoped connection class. * @@ -202,12 +276,18 @@ struct scoped_connection { * @param other A valid connection object. */ scoped_connection(const connection &other) - : conn{other} - {} + : conn{other} {} /*! @brief Default copy constructor, deleted on purpose. */ scoped_connection(const scoped_connection &) = delete; + /** + * @brief Move constructor. + * @param other The scoped connection to move from. + */ + scoped_connection(scoped_connection &&other) noexcept + : conn{std::exchange(other.conn, {})} {} + /*! @brief Automatically breaks the link on destruction. */ ~scoped_connection() { conn.release(); @@ -217,14 +297,24 @@ struct scoped_connection { * @brief Default copy assignment operator, deleted on purpose. * @return This scoped connection. */ - scoped_connection & operator=(const scoped_connection &) = delete; + scoped_connection &operator=(const scoped_connection &) = delete; + + /** + * @brief Move assignment operator. + * @param other The scoped connection to move from. + * @return This scoped connection. + */ + scoped_connection &operator=(scoped_connection &&other) noexcept { + conn = std::exchange(other.conn, {}); + return *this; + } /** * @brief Acquires a connection. * @param other The connection object to acquire. * @return This scoped connection. */ - scoped_connection & operator=(connection other) { + scoped_connection &operator=(connection other) { conn = std::move(other); return *this; } @@ -233,7 +323,7 @@ struct scoped_connection { * @brief Checks whether a scoped connection is properly initialized. * @return True if the connection is properly initialized, false otherwise. */ - [[nodiscard]] explicit operator bool() const ENTT_NOEXCEPT { + [[nodiscard]] explicit operator bool() const noexcept { return static_cast(conn); } @@ -246,7 +336,6 @@ private: connection conn; }; - /** * @brief Sink class. * @@ -264,11 +353,12 @@ private: * * @tparam Ret Return type of a function type. * @tparam Args Types of arguments of a function type. + * @tparam Allocator Type of allocator used to manage memory and elements. */ -template -class sink { - using signal_type = sigh; - using difference_type = typename std::iterator_traits::difference_type; +template +class sink> { + using signal_type = sigh; + using difference_type = typename signal_type::container_type::difference_type; template static void release(Type value_or_instance, void *signal) { @@ -280,21 +370,29 @@ class sink { sink{*static_cast(signal)}.disconnect(); } + auto before(delegate call) { + const auto &calls = signal->calls; + const auto it = std::find(calls.cbegin(), calls.cend(), std::move(call)); + + sink other{*this}; + other.offset = calls.cend() - it; + return other; + } + public: /** * @brief Constructs a sink that is allowed to modify a given signal. * @param ref A valid reference to a signal object. */ - sink(sigh &ref) ENTT_NOEXCEPT + sink(sigh &ref) noexcept : offset{}, - signal{&ref} - {} + signal{&ref} {} /** * @brief Returns false if at least a listener is connected to the sink. * @return True if the sink has no listeners connected, false otherwise. */ - [[nodiscard]] bool empty() const ENTT_NOEXCEPT { + [[nodiscard]] bool empty() const noexcept { return signal->calls.empty(); } @@ -308,13 +406,7 @@ public: [[nodiscard]] sink before() { delegate call{}; call.template connect(); - - const auto &calls = signal->calls; - const auto it = std::find(calls.cbegin(), calls.cend(), std::move(call)); - - sink other{*this}; - other.offset = std::distance(it, calls.cend()); - return other; + return before(std::move(call)); } /** @@ -329,13 +421,7 @@ public: [[nodiscard]] sink before(Type &&value_or_instance) { delegate call{}; call.template connect(value_or_instance); - - const auto &calls = signal->calls; - const auto it = std::find(calls.cbegin(), calls.cend(), std::move(call)); - - sink other{*this}; - other.offset = std::distance(it, calls.cend()); - return other; + return before(std::move(call)); } /** @@ -345,7 +431,7 @@ public: * @param value_or_instance A valid object that fits the purpose. * @return A properly initialized sink object. */ - template + template>, void>, sink>> [[nodiscard]] sink before(Type &value_or_instance) { return before(&value_or_instance); } @@ -353,21 +439,19 @@ public: /** * @brief Returns a sink that connects before a given instance or specific * payload. - * @tparam Type Type of class or type of payload. * @param value_or_instance A valid pointer that fits the purpose. * @return A properly initialized sink object. */ - template - [[nodiscard]] sink before(Type *value_or_instance) { + [[nodiscard]] sink before(const void *value_or_instance) { sink other{*this}; if(value_or_instance) { const auto &calls = signal->calls; const auto it = std::find_if(calls.cbegin(), calls.cend(), [value_or_instance](const auto &delegate) { - return delegate.instance() == value_or_instance; + return delegate.data() == value_or_instance; }); - other.offset = std::distance(it, calls.cend()); + other.offset = calls.cend() - it; } return other; @@ -384,81 +468,47 @@ public: } /** - * @brief Connects a free function or an unbound member to a signal. + * @brief Connects a free function (with or without payload), a bound or an + * unbound member to a signal. * - * The signal handler performs checks to avoid multiple connections for the - * same function. - * - * @tparam Candidate Function or member to connect to the signal. - * @return A properly initialized connection object. - */ - template - connection connect() { - disconnect(); - - delegate call{}; - call.template connect(); - signal->calls.insert(signal->calls.end() - offset, std::move(call)); - - delegate conn{}; - conn.template connect<&release>(); - return { std::move(conn), signal }; - } - - /** - * @brief Connects a free function with payload or a bound member to a - * signal. - * - * The signal isn't responsible for the connected object or the payload. - * Users must always guarantee that the lifetime of the instance overcomes - * the one of the signal. On the other side, the signal handler performs + * The signal isn't responsible for the connected object or the payload, if + * any. Users must guarantee that the lifetime of the instance overcomes the + * one of the signal. On the other side, the signal handler performs * checks to avoid multiple connections for the same function.
* When used to connect a free function with payload, its signature must be * such that the instance is the first argument before the ones used to * define the signal itself. * * @tparam Candidate Function or member to connect to the signal. - * @tparam Type Type of class or type of payload. - * @param value_or_instance A valid object that fits the purpose. + * @tparam Type Type of class or type of payload, if any. + * @param value_or_instance A valid object that fits the purpose, if any. * @return A properly initialized connection object. */ - template - connection connect(Type &&value_or_instance) { - disconnect(value_or_instance); + template + connection connect(Type &&...value_or_instance) { + disconnect(value_or_instance...); delegate call{}; - call.template connect(value_or_instance); + call.template connect(value_or_instance...); signal->calls.insert(signal->calls.end() - offset, std::move(call)); delegate conn{}; - conn.template connect<&release>(value_or_instance); - return { std::move(conn), signal }; + conn.template connect<&release>(value_or_instance...); + return {std::move(conn), signal}; } /** - * @brief Disconnects a free function or an unbound member from a signal. + * @brief Disconnects a free function (with or without payload), a bound or + * an unbound member from a signal. * @tparam Candidate Function or member to disconnect from the signal. + * @tparam Type Type of class or type of payload, if any. + * @param value_or_instance A valid object that fits the purpose, if any. */ - template - void disconnect() { + template + void disconnect(Type &&...value_or_instance) { auto &calls = signal->calls; delegate call{}; - call.template connect(); - calls.erase(std::remove(calls.begin(), calls.end(), std::move(call)), calls.end()); - } - - /** - * @brief Disconnects a free function with payload or a bound member from a - * signal. - * @tparam Candidate Function or member to disconnect from the signal. - * @tparam Type Type of class or type of payload. - * @param value_or_instance A valid object that fits the purpose. - */ - template - void disconnect(Type &&value_or_instance) { - auto &calls = signal->calls; - delegate call{}; - call.template connect(value_or_instance); + call.template connect(value_or_instance...); calls.erase(std::remove(calls.begin(), calls.end(), std::move(call)), calls.end()); } @@ -468,7 +518,7 @@ public: * @tparam Type Type of class or type of payload. * @param value_or_instance A valid object that fits the purpose. */ - template + template>, void>>> void disconnect(Type &value_or_instance) { disconnect(&value_or_instance); } @@ -476,16 +526,13 @@ public: /** * @brief Disconnects free functions with payload or bound members from a * signal. - * @tparam Type Type of class or type of payload. * @param value_or_instance A valid object that fits the purpose. */ - template - void disconnect(Type *value_or_instance) { + void disconnect(const void *value_or_instance) { if(value_or_instance) { auto &calls = signal->calls; - calls.erase(std::remove_if(calls.begin(), calls.end(), [value_or_instance](const auto &delegate) { - return delegate.instance() == value_or_instance; - }), calls.end()); + auto predicate = [value_or_instance](const auto &delegate) { return delegate.data() == value_or_instance; }; + calls.erase(std::remove_if(calls.begin(), calls.end(), std::move(predicate)), calls.end()); } } @@ -499,22 +546,19 @@ private: signal_type *signal; }; - /** * @brief Deduction guide. * - * It allows to deduce the function type of a sink directly from the signal it - * refers to. + * It allows to deduce the signal handler type of a sink directly from the + * signal it refers to. * * @tparam Ret Return type of a function type. * @tparam Args Types of arguments of a function type. + * @tparam Allocator Type of allocator used to manage memory and elements. */ -template -sink(sigh &) --> sink; - - -} +template +sink(sigh &) -> sink>; +} // namespace entt #endif diff --git a/LiteLoader/Header/third-party/gsl/gsl b/LiteLoader/third-party/include/gsl/gsl similarity index 100% rename from LiteLoader/Header/third-party/gsl/gsl rename to LiteLoader/third-party/include/gsl/gsl diff --git a/LiteLoader/Header/third-party/gsl/gsl_algorithm b/LiteLoader/third-party/include/gsl/gsl_algorithm similarity index 100% rename from LiteLoader/Header/third-party/gsl/gsl_algorithm rename to LiteLoader/third-party/include/gsl/gsl_algorithm diff --git a/LiteLoader/Header/third-party/gsl/gsl_assert b/LiteLoader/third-party/include/gsl/gsl_assert similarity index 100% rename from LiteLoader/Header/third-party/gsl/gsl_assert rename to LiteLoader/third-party/include/gsl/gsl_assert diff --git a/LiteLoader/Header/third-party/gsl/gsl_byte b/LiteLoader/third-party/include/gsl/gsl_byte similarity index 100% rename from LiteLoader/Header/third-party/gsl/gsl_byte rename to LiteLoader/third-party/include/gsl/gsl_byte diff --git a/LiteLoader/Header/third-party/gsl/gsl_util b/LiteLoader/third-party/include/gsl/gsl_util similarity index 100% rename from LiteLoader/Header/third-party/gsl/gsl_util rename to LiteLoader/third-party/include/gsl/gsl_util diff --git a/LiteLoader/Header/third-party/gsl/multi_span b/LiteLoader/third-party/include/gsl/multi_span similarity index 100% rename from LiteLoader/Header/third-party/gsl/multi_span rename to LiteLoader/third-party/include/gsl/multi_span diff --git a/LiteLoader/Header/third-party/gsl/pointers b/LiteLoader/third-party/include/gsl/pointers similarity index 100% rename from LiteLoader/Header/third-party/gsl/pointers rename to LiteLoader/third-party/include/gsl/pointers diff --git a/LiteLoader/Header/third-party/gsl/span b/LiteLoader/third-party/include/gsl/span similarity index 100% rename from LiteLoader/Header/third-party/gsl/span rename to LiteLoader/third-party/include/gsl/span diff --git a/LiteLoader/Header/third-party/gsl/span_ext b/LiteLoader/third-party/include/gsl/span_ext similarity index 100% rename from LiteLoader/Header/third-party/gsl/span_ext rename to LiteLoader/third-party/include/gsl/span_ext diff --git a/LiteLoader/Header/third-party/gsl/string_span b/LiteLoader/third-party/include/gsl/string_span similarity index 100% rename from LiteLoader/Header/third-party/gsl/string_span rename to LiteLoader/third-party/include/gsl/string_span diff --git a/LiteLoader/Header/third-party/httplib/httplib.h b/LiteLoader/third-party/include/httplib/httplib.h similarity index 100% rename from LiteLoader/Header/third-party/httplib/httplib.h rename to LiteLoader/third-party/include/httplib/httplib.h diff --git a/LiteLoader/Header/third-party/leveldb/c.h b/LiteLoader/third-party/include/leveldb/c.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/c.h rename to LiteLoader/third-party/include/leveldb/c.h diff --git a/LiteLoader/Header/third-party/leveldb/cache.h b/LiteLoader/third-party/include/leveldb/cache.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/cache.h rename to LiteLoader/third-party/include/leveldb/cache.h diff --git a/LiteLoader/Header/third-party/leveldb/comparator.h b/LiteLoader/third-party/include/leveldb/comparator.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/comparator.h rename to LiteLoader/third-party/include/leveldb/comparator.h diff --git a/LiteLoader/Header/third-party/leveldb/db.h b/LiteLoader/third-party/include/leveldb/db.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/db.h rename to LiteLoader/third-party/include/leveldb/db.h diff --git a/LiteLoader/Header/third-party/leveldb/dumpfile.h b/LiteLoader/third-party/include/leveldb/dumpfile.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/dumpfile.h rename to LiteLoader/third-party/include/leveldb/dumpfile.h diff --git a/LiteLoader/Header/third-party/leveldb/env.h b/LiteLoader/third-party/include/leveldb/env.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/env.h rename to LiteLoader/third-party/include/leveldb/env.h diff --git a/LiteLoader/Header/third-party/leveldb/export.h b/LiteLoader/third-party/include/leveldb/export.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/export.h rename to LiteLoader/third-party/include/leveldb/export.h diff --git a/LiteLoader/Header/third-party/leveldb/filter_policy.h b/LiteLoader/third-party/include/leveldb/filter_policy.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/filter_policy.h rename to LiteLoader/third-party/include/leveldb/filter_policy.h diff --git a/LiteLoader/Header/third-party/leveldb/iterator.h b/LiteLoader/third-party/include/leveldb/iterator.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/iterator.h rename to LiteLoader/third-party/include/leveldb/iterator.h diff --git a/LiteLoader/Header/third-party/leveldb/options.h b/LiteLoader/third-party/include/leveldb/options.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/options.h rename to LiteLoader/third-party/include/leveldb/options.h diff --git a/LiteLoader/Header/third-party/leveldb/slice.h b/LiteLoader/third-party/include/leveldb/slice.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/slice.h rename to LiteLoader/third-party/include/leveldb/slice.h diff --git a/LiteLoader/Header/third-party/leveldb/status.h b/LiteLoader/third-party/include/leveldb/status.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/status.h rename to LiteLoader/third-party/include/leveldb/status.h diff --git a/LiteLoader/Header/third-party/leveldb/table.h b/LiteLoader/third-party/include/leveldb/table.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/table.h rename to LiteLoader/third-party/include/leveldb/table.h diff --git a/LiteLoader/Header/third-party/leveldb/table_builder.h b/LiteLoader/third-party/include/leveldb/table_builder.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/table_builder.h rename to LiteLoader/third-party/include/leveldb/table_builder.h diff --git a/LiteLoader/Header/third-party/leveldb/write_batch.h b/LiteLoader/third-party/include/leveldb/write_batch.h similarity index 100% rename from LiteLoader/Header/third-party/leveldb/write_batch.h rename to LiteLoader/third-party/include/leveldb/write_batch.h diff --git a/LiteLoader/third-party/include/magic_enum/magic_enum.hpp b/LiteLoader/third-party/include/magic_enum/magic_enum.hpp new file mode 100644 index 0000000..9aa0e69 --- /dev/null +++ b/LiteLoader/third-party/include/magic_enum/magic_enum.hpp @@ -0,0 +1,1504 @@ +// __ __ _ ______ _____ +// | \/ | (_) | ____| / ____|_ _ +// | \ / | __ _ __ _ _ ___ | |__ _ __ _ _ _ __ ___ | | _| |_ _| |_ +// | |\/| |/ _` |/ _` | |/ __| | __| | '_ \| | | | '_ ` _ \ | | |_ _|_ _| +// | | | | (_| | (_| | | (__ | |____| | | | |_| | | | | | | | |____|_| |_| +// |_| |_|\__,_|\__, |_|\___| |______|_| |_|\__,_|_| |_| |_| \_____| +// __/ | https://github.com/Neargye/magic_enum +// |___/ version 0.8.1 +// +// Licensed under the MIT License . +// SPDX-License-Identifier: MIT +// Copyright (c) 2019 - 2022 Daniil Goncharov . +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#ifndef NEARGYE_MAGIC_ENUM_HPP +#define NEARGYE_MAGIC_ENUM_HPP + +#define MAGIC_ENUM_VERSION_MAJOR 0 +#define MAGIC_ENUM_VERSION_MINOR 8 +#define MAGIC_ENUM_VERSION_PATCH 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(MAGIC_ENUM_CONFIG_FILE) +#include MAGIC_ENUM_CONFIG_FILE +#endif + +#if !defined(MAGIC_ENUM_USING_ALIAS_OPTIONAL) +#include +#endif +#if !defined(MAGIC_ENUM_USING_ALIAS_STRING) +#include +#endif +#if !defined(MAGIC_ENUM_USING_ALIAS_STRING_VIEW) +#include +#endif + +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunknown-warning-option" +#pragma clang diagnostic ignored "-Wenum-constexpr-conversion" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" // May be used uninitialized 'return {};'. +#elif defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable : 26495) // Variable 'static_string::chars_' is uninitialized. +#pragma warning(disable : 28020) // Arithmetic overflow: Using operator '-' on a 4 byte value and then casting the result to a 8 byte value. +#pragma warning(disable : 26451) // The expression '0<=_Param_(1)&&_Param_(1)<=1-1' is not true at this call. +#pragma warning(disable : 4514) // Unreferenced inline function has been removed. +#endif + +// Checks magic_enum compiler compatibility. +#if defined(__clang__) && __clang_major__ >= 5 || defined(__GNUC__) && __GNUC__ >= 9 || defined(_MSC_VER) && _MSC_VER >= 1910 +#undef MAGIC_ENUM_SUPPORTED +#define MAGIC_ENUM_SUPPORTED 1 +#endif + +// Checks magic_enum compiler aliases compatibility. +#if defined(__clang__) && __clang_major__ >= 5 || defined(__GNUC__) && __GNUC__ >= 9 || defined(_MSC_VER) && _MSC_VER >= 1920 +#undef MAGIC_ENUM_SUPPORTED_ALIASES +#define MAGIC_ENUM_SUPPORTED_ALIASES 1 +#endif + +// Enum value must be greater or equals than MAGIC_ENUM_RANGE_MIN. By default MAGIC_ENUM_RANGE_MIN = -128. +// If need another min range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MIN. +#if !defined(MAGIC_ENUM_RANGE_MIN) +#define MAGIC_ENUM_RANGE_MIN -128 +#endif + +// Enum value must be less or equals than MAGIC_ENUM_RANGE_MAX. By default MAGIC_ENUM_RANGE_MAX = 128. +// If need another max range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MAX. +#if !defined(MAGIC_ENUM_RANGE_MAX) +#define MAGIC_ENUM_RANGE_MAX 128 +#endif + +namespace magic_enum { + +// If need another optional type, define the macro MAGIC_ENUM_USING_ALIAS_OPTIONAL. +#if defined(MAGIC_ENUM_USING_ALIAS_OPTIONAL) +MAGIC_ENUM_USING_ALIAS_OPTIONAL +#else +using std::optional; +#endif + +// If need another string_view type, define the macro MAGIC_ENUM_USING_ALIAS_STRING_VIEW. +#if defined(MAGIC_ENUM_USING_ALIAS_STRING_VIEW) +MAGIC_ENUM_USING_ALIAS_STRING_VIEW +#else +using std::string_view; +#endif + +// If need another string type, define the macro MAGIC_ENUM_USING_ALIAS_STRING. +#if defined(MAGIC_ENUM_USING_ALIAS_STRING) +MAGIC_ENUM_USING_ALIAS_STRING +#else +using std::string; +#endif + +namespace customize { + +// Enum value must be in range [MAGIC_ENUM_RANGE_MIN, MAGIC_ENUM_RANGE_MAX]. By default MAGIC_ENUM_RANGE_MIN = -128, MAGIC_ENUM_RANGE_MAX = 128. +// If need another range for all enum types by default, redefine the macro MAGIC_ENUM_RANGE_MIN and MAGIC_ENUM_RANGE_MAX. +// If need another range for specific enum type, add specialization enum_range for necessary enum type. +template +struct enum_range { + static_assert(std::is_enum_v, "magic_enum::customize::enum_range requires enum type."); + static constexpr int min = MAGIC_ENUM_RANGE_MIN; + static constexpr int max = MAGIC_ENUM_RANGE_MAX; + static_assert(max > min, "magic_enum::customize::enum_range requires max > min."); +}; + +static_assert(MAGIC_ENUM_RANGE_MAX > MAGIC_ENUM_RANGE_MIN, "MAGIC_ENUM_RANGE_MAX must be greater than MAGIC_ENUM_RANGE_MIN."); +static_assert((MAGIC_ENUM_RANGE_MAX - MAGIC_ENUM_RANGE_MIN) < (std::numeric_limits::max)(), "MAGIC_ENUM_RANGE must be less than UINT16_MAX."); + +namespace detail { +enum class default_customize_tag { +}; +enum class invalid_customize_tag { +}; +} // namespace detail + +using customize_t = std::variant; + +// Default customize. +inline constexpr auto default_tag = detail::default_customize_tag{}; +// Invalid customize. +inline constexpr auto invalid_tag = detail::invalid_customize_tag{}; + +// If need custom names for enum, add specialization enum_name for necessary enum type. +template +constexpr customize_t enum_name(E) noexcept { + return default_tag; +} + +// If need custom type name for enum, add specialization enum_type_name for necessary enum type. +template +constexpr customize_t enum_type_name() noexcept { + return default_tag; +} + +} // namespace customize + +namespace detail { + +template , std::enable_if_t, int> = 0> +using enum_constant = std::integral_constant; + +template +inline constexpr bool always_false_v = false; + +template +struct supported +#if defined(MAGIC_ENUM_SUPPORTED) && MAGIC_ENUM_SUPPORTED || defined(MAGIC_ENUM_NO_CHECK_SUPPORT) +: std::true_type { +}; +#else +: std::false_type { +}; +#endif + +template +struct has_is_flags : std::false_type {}; + +template +struct has_is_flags::is_flags)>> : std::bool_constant::is_flags)>>> {}; + +template +struct range_min : std::integral_constant {}; + +template +struct range_min::min)>> : std::integral_constant::min), customize::enum_range::min> {}; + +template +struct range_max : std::integral_constant {}; + +template +struct range_max::max)>> : std::integral_constant::max), customize::enum_range::max> {}; + +template +class static_string { +public: + constexpr explicit static_string(string_view str) noexcept + : static_string{str, std::make_integer_sequence{}} { + assert(str.size() == N); + } + + constexpr const char* data() const noexcept { + return chars_; + } + + constexpr std::uint16_t size() const noexcept { + return N; + } + + constexpr operator string_view() const noexcept { + return {data(), size()}; + } + +private: + template + constexpr static_string(string_view str, std::integer_sequence) noexcept + : chars_{str[I]..., '\0'} { + } + + char chars_[static_cast(N) + 1]; +}; + +template <> +class static_string<0> { +public: + constexpr explicit static_string() = default; + + constexpr explicit static_string(string_view) noexcept { + } + + constexpr const char* data() const noexcept { + return nullptr; + } + + constexpr std::uint16_t size() const noexcept { + return 0; + } + + constexpr operator string_view() const noexcept { + return {}; + } +}; + +constexpr string_view pretty_name(string_view name) noexcept { + for (std::size_t i = name.size(); i > 0; --i) { + if (!((name[i - 1] >= '0' && name[i - 1] <= '9') || + (name[i - 1] >= 'a' && name[i - 1] <= 'z') || + (name[i - 1] >= 'A' && name[i - 1] <= 'Z') || +#if defined(MAGIC_ENUM_ENABLE_NONASCII) + (name[i - 1] & 0x80) || +#endif + (name[i - 1] == '_'))) { + name.remove_prefix(i); + break; + } + } + + if (name.size() > 0 && ((name[0] >= 'a' && name[0] <= 'z') || + (name[0] >= 'A' && name[0] <= 'Z') || +#if defined(MAGIC_ENUM_ENABLE_NONASCII) + (name[0]) & 0x80) || +#endif + (name[0] == '_'))) { + return name; + } + + return {}; // Invalid name. +} + +class case_insensitive { + static constexpr char to_lower(char c) noexcept { + return (c >= 'A' && c <= 'Z') ? static_cast(c + ('a' - 'A')) : c; + } + +public: + template + constexpr auto operator()([[maybe_unused]] L lhs, [[maybe_unused]] R rhs) const noexcept -> std::enable_if_t, char> && std::is_same_v, char>, bool> { +#if defined(MAGIC_ENUM_ENABLE_NONASCII) + static_assert(always_false_v, "magic_enum::case_insensitive not supported Non-ASCII feature."); + return false; +#else + return to_lower(lhs) == to_lower(rhs); +#endif + } +}; + +constexpr std::size_t find(string_view str, char c) noexcept { +#if defined(__clang__) && __clang_major__ < 9 && defined(__GLIBCXX__) || defined(_MSC_VER) && _MSC_VER < 1920 && !defined(__clang__) + // https://stackoverflow.com/questions/56484834/constexpr-stdstring-viewfind-last-of-doesnt-work-on-clang-8-with-libstdc + // https://developercommunity.visualstudio.com/content/problem/360432/vs20178-regression-c-failed-in-test.html + constexpr bool workaround = true; +#else + constexpr bool workaround = false; +#endif + + if constexpr (workaround) { + for (std::size_t i = 0; i < str.size(); ++i) { + if (str[i] == c) { + return i; + } + } + + return string_view::npos; + } else { + return str.find(c); + } +} + +template +constexpr std::array, N> to_array(T (&a)[N], std::index_sequence) noexcept { + return {{a[I]...}}; +} + +template +constexpr bool is_default_predicate() noexcept { + return std::is_same_v, std::equal_to> || + std::is_same_v, std::equal_to<>>; +} + +template +constexpr bool is_nothrow_invocable() { + return is_default_predicate() || + std::is_nothrow_invocable_r_v; +} + +template +constexpr bool cmp_equal(string_view lhs, string_view rhs, [[maybe_unused]] BinaryPredicate&& p) noexcept(is_nothrow_invocable()) { +#if defined(_MSC_VER) && _MSC_VER < 1920 && !defined(__clang__) + // https://developercommunity.visualstudio.com/content/problem/360432/vs20178-regression-c-failed-in-test.html + // https://developercommunity.visualstudio.com/content/problem/232218/c-constexpr-string-view.html + constexpr bool workaround = true; +#else + constexpr bool workaround = false; +#endif + + if constexpr (!is_default_predicate() || workaround) { + if (lhs.size() != rhs.size()) { + return false; + } + + const auto size = lhs.size(); + for (std::size_t i = 0; i < size; ++i) { + if (!p(lhs[i], rhs[i])) { + return false; + } + } + + return true; + } else { + return lhs == rhs; + } +} + +template +constexpr bool cmp_less(L lhs, R rhs) noexcept { + static_assert(std::is_integral_v && std::is_integral_v, "magic_enum::detail::cmp_less requires integral type."); + + if constexpr (std::is_signed_v == std::is_signed_v) { + // If same signedness (both signed or both unsigned). + return lhs < rhs; + } else if constexpr (std::is_same_v) { // bool special case + return static_cast(lhs) < rhs; + } else if constexpr (std::is_same_v) { // bool special case + return lhs < static_cast(rhs); + } else if constexpr (std::is_signed_v) { + // If 'right' is negative, then result is 'false', otherwise cast & compare. + return rhs > 0 && lhs < static_cast>(rhs); + } else { + // If 'left' is negative, then result is 'true', otherwise cast & compare. + return lhs < 0 || static_cast>(lhs) < rhs; + } +} + +template +constexpr I log2(I value) noexcept { + static_assert(std::is_integral_v, "magic_enum::detail::log2 requires integral type."); + + if constexpr (std::is_same_v) { // bool special case + return assert(false), value; + } else { + auto ret = I{0}; + for (; value > I{1}; value >>= I{1}, ++ret) {} + + return ret; + } +} + +template +inline constexpr bool is_enum_v = std::is_enum_v&& std::is_same_v>; + +template +constexpr auto n() noexcept { + static_assert(is_enum_v, "magic_enum::detail::n requires enum type."); + + if constexpr (supported::value) { +#if defined(__clang__) || defined(__GNUC__) + constexpr auto name = pretty_name({__PRETTY_FUNCTION__, sizeof(__PRETTY_FUNCTION__) - 2}); +#elif defined(_MSC_VER) + constexpr auto name = pretty_name({__FUNCSIG__, sizeof(__FUNCSIG__) - 17}); +#else + constexpr auto name = string_view{}; +#endif + return static_string{name}; + } else { + return static_string<0>{}; // Unsupported compiler or Invalid customize. + } +} + +template +constexpr auto type_name() noexcept { + static_assert(is_enum_v, "magic_enum::detail::n requires enum type."); + + [[maybe_unused]] constexpr auto custom = customize::enum_type_name(); + static_assert(std::is_same_v, customize::customize_t>, "magic_enum::customize requires customize_t type."); + if constexpr (std::is_same_v, customize::customize_t> && custom.index() == 0) { + constexpr auto name = std::get(custom); + static_assert(!name.empty(), "magic_enum::customize requires not empty string."); + return static_string{name}; + } else { + return n(); + } +} + +template +inline constexpr auto type_name_v = type_name(); + +template +constexpr auto n() noexcept { + static_assert(is_enum_v, "magic_enum::detail::n requires enum type."); + + if constexpr (supported::value) { +#if defined(__clang__) || defined(__GNUC__) + constexpr auto name = pretty_name({__PRETTY_FUNCTION__, sizeof(__PRETTY_FUNCTION__) - 2}); +#elif defined(_MSC_VER) + constexpr auto name = pretty_name({__FUNCSIG__, sizeof(__FUNCSIG__) - 17}); +#else + constexpr auto name = string_view{}; +#endif + return static_string{name}; + } else { + return static_string<0>{}; // Unsupported compiler or Invalid customize. + } +} + +template +constexpr auto enum_name() noexcept { + static_assert(is_enum_v, "magic_enum::detail::n requires enum type."); + + [[maybe_unused]] constexpr auto custom = customize::enum_name(V); + static_assert(std::is_same_v, customize::customize_t>, "magic_enum::customize requires customize_t type."); + if constexpr (std::is_same_v, customize::customize_t> && custom.index() == 0) { + constexpr auto name = std::get(custom); + static_assert(!name.empty(), "magic_enum::customize requires not empty string."); + return static_string{name}; + } else { + return n(); + } +} + +template +inline constexpr auto enum_name_v = enum_name(); + +template +constexpr bool is_valid() noexcept { + static_assert(is_enum_v, "magic_enum::detail::is_valid requires enum type."); + +#if defined(__clang__) && __clang_major__ >= 16 + // https://reviews.llvm.org/D130058, https://reviews.llvm.org/D131307 + constexpr E v = __builtin_bit_cast(E, V); + [[maybe_unused]] constexpr auto custom = customize::enum_name(v); + static_assert(std::is_same_v, customize::customize_t>, "magic_enum::customize requires customize_t type."); + if constexpr (std::is_same_v, customize::customize_t> && custom.index() == 0) { + constexpr auto name = std::get(custom); + static_assert(!name.empty(), "magic_enum::customize requires not empty string."); + return name.size() != 0; + } else { + return n().size() != 0; + } +#else + return enum_name(V)>().size() != 0; +#endif +} + +template > +constexpr U ualue(std::size_t i) noexcept { + static_assert(is_enum_v, "magic_enum::detail::ualue requires enum type."); + + if constexpr (std::is_same_v) { // bool special case + static_assert(O == 0, "magic_enum::detail::ualue requires valid offset."); + + return static_cast(i); + } else if constexpr (IsFlags) { + return static_cast(U{1} << static_cast(static_cast(i) + O)); + } else { + return static_cast(static_cast(i) + O); + } +} + +template > +constexpr E value(std::size_t i) noexcept { + static_assert(is_enum_v, "magic_enum::detail::value requires enum type."); + + return static_cast(ualue(i)); +} + +template > +constexpr int reflected_min() noexcept { + static_assert(is_enum_v, "magic_enum::detail::reflected_min requires enum type."); + + if constexpr (IsFlags) { + return 0; + } else { + constexpr auto lhs = range_min::value; + constexpr auto rhs = (std::numeric_limits::min)(); + + if constexpr (cmp_less(rhs, lhs)) { + return lhs; + } else { + return rhs; + } + } +} + +template > +constexpr int reflected_max() noexcept { + static_assert(is_enum_v, "magic_enum::detail::reflected_max requires enum type."); + + if constexpr (IsFlags) { + return std::numeric_limits::digits - 1; + } else { + constexpr auto lhs = range_max::value; + constexpr auto rhs = (std::numeric_limits::max)(); + + if constexpr (cmp_less(lhs, rhs)) { + return lhs; + } else { + return rhs; + } + } +} + +template +inline constexpr auto reflected_min_v = reflected_min(); + +template +inline constexpr auto reflected_max_v = reflected_max(); + +template +constexpr std::size_t values_count(const bool (&valid)[N]) noexcept { + auto count = std::size_t{0}; + for (std::size_t i = 0; i < N; ++i) { + if (valid[i]) { + ++count; + } + } + + return count; +} + +template +constexpr auto values(std::index_sequence) noexcept { + static_assert(is_enum_v, "magic_enum::detail::values requires enum type."); + constexpr bool valid[sizeof...(I)] = {is_valid(I)>()...}; + constexpr std::size_t count = values_count(valid); + + if constexpr (count > 0) { + E values[count] = {}; + for (std::size_t i = 0, v = 0; v < count; ++i) { + if (valid[i]) { + values[v++] = value(i); + } + } + + return to_array(values, std::make_index_sequence{}); + } else { + return std::array{}; + } +} + +template > +constexpr auto values() noexcept { + static_assert(is_enum_v, "magic_enum::detail::values requires enum type."); + constexpr auto min = reflected_min_v; + constexpr auto max = reflected_max_v; + constexpr auto range_size = max - min + 1; + static_assert(range_size > 0, "magic_enum::enum_range requires valid size."); + static_assert(range_size < (std::numeric_limits::max)(), "magic_enum::enum_range requires valid size."); + + return values(std::make_index_sequence{}); +} + +template > +constexpr bool is_flags_enum() noexcept { + static_assert(is_enum_v, "magic_enum::detail::is_flags_enum requires enum type."); + + if constexpr (has_is_flags::value) { + return customize::enum_range::is_flags; + } else if constexpr (std::is_same_v) { // bool special case + return false; + } else { +#if defined(MAGIC_ENUM_NO_CHECK_FLAGS) + return false; +#else + constexpr auto flags_values = values(); + constexpr auto default_values = values(); + if (flags_values.size() == 0 || default_values.size() > flags_values.size()) { + return false; + } + for (std::size_t i = 0; i < default_values.size(); ++i) { + const auto v = static_cast(default_values[i]); + if (v != 0 && (v & (v - 1)) != 0) { + return false; + } + } + return flags_values.size() > 0; +#endif + } +} + +template +inline constexpr bool is_flags_v = is_flags_enum(); + +template +inline constexpr std::array values_v = values>(); + +template > +using values_t = decltype((values_v)); + +template +inline constexpr auto count_v = values_v.size(); + +template > +inline constexpr auto min_v = (count_v > 0) ? static_cast(values_v.front()) : U{0}; + +template > +inline constexpr auto max_v = (count_v > 0) ? static_cast(values_v.back()) : U{0}; + +template +constexpr auto names(std::index_sequence) noexcept { + static_assert(is_enum_v, "magic_enum::detail::names requires enum type."); + + return std::array{{enum_name_v[I]>...}}; +} + +template +inline constexpr std::array names_v = names(std::make_index_sequence>{}); + +template > +using names_t = decltype((names_v)); + +template +constexpr auto entries(std::index_sequence) noexcept { + static_assert(is_enum_v, "magic_enum::detail::entries requires enum type."); + + return std::array, sizeof...(I)>{{{values_v[I], enum_name_v[I]>}...}}; +} + +template +inline constexpr std::array entries_v = entries(std::make_index_sequence>{}); + +template > +using entries_t = decltype((entries_v)); + +template > +constexpr bool is_sparse() noexcept { + static_assert(is_enum_v, "magic_enum::detail::is_sparse requires enum type."); + + if constexpr (count_v == 0) { + return false; + } else if constexpr (std::is_same_v) { // bool special case + return false; + } else { + constexpr auto max = is_flags_v ? log2(max_v) : max_v; + constexpr auto min = is_flags_v ? log2(min_v) : min_v; + constexpr auto range_size = max - min + 1; + + return range_size != count_v; + } +} + +template +inline constexpr bool is_sparse_v = is_sparse(); + +template > +constexpr U values_ors() noexcept { + static_assert(is_enum_v, "magic_enum::detail::values_ors requires enum type."); + + auto ors = U{0}; + for (std::size_t i = 0; i < count_v; ++i) { + ors |= static_cast(values_v[i]); + } + + return ors; +} + +template +struct enable_if_enum {}; + +template +struct enable_if_enum { + using type = R; + static_assert(supported::value, "magic_enum unsupported compiler (https://github.com/Neargye/magic_enum#compiler-compatibility)."); +}; + +template > +using enable_if_t = typename enable_if_enum> && std::is_invocable_r_v, R>::type; + +template >, int> = 0> +using enum_concept = T; + +template > +struct is_scoped_enum : std::false_type {}; + +template +struct is_scoped_enum : std::bool_constant>> {}; + +template > +struct is_unscoped_enum : std::false_type {}; + +template +struct is_unscoped_enum : std::bool_constant>> {}; + +template >> +struct underlying_type {}; + +template +struct underlying_type : std::underlying_type> {}; + +#if defined(MAGIC_ENUM_NO_HASH) +template +inline constexpr bool has_hash = false; +#else +template +inline constexpr bool has_hash = true; + +template +struct constexpr_hash_t; + +template +struct constexpr_hash_t>> { + constexpr auto operator()(Value value) const noexcept { + using U = typename underlying_type::type; + if constexpr (std::is_same_v) { // bool special case + return static_cast(value); + } else { + return static_cast(value); + } + } + using secondary_hash = constexpr_hash_t; +}; + +template +struct constexpr_hash_t>> { + static constexpr std::uint32_t crc_table[256]{ + 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, 0x706af48fL, 0xe963a535L, 0x9e6495a3L, + 0x0edb8832L, 0x79dcb8a4L, 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, 0x90bf1d91L, + 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, + 0x136c9856L, 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, 0xfa0f3d63L, 0x8d080df5L, + 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, + 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, + 0x26d930acL, 0x51de003aL, 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, 0xb8bda50fL, + 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, + 0x76dc4190L, 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, 0x9fbfe4a5L, 0xe8b8d433L, + 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, + 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, + 0x65b0d9c6L, 0x12b7e950L, 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, 0xfbd44c65L, + 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, + 0x4369e96aL, 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, 0xaa0a4c5fL, 0xdd0d7cc9L, + 0x5005713cL, 0x270241aaL, 0xbe0b1010L, 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, + 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, + 0xedb88320L, 0x9abfb3b6L, 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, 0x73dc1683L, + 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, + 0xf00f9344L, 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, 0x196c3671L, 0x6e6b06e7L, + 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, + 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, + 0xd80d2bdaL, 0xaf0a1b4cL, 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, 0x4669be79L, + 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, + 0xc5ba3bbeL, 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, 0x2cd99e8bL, 0x5bdeae1dL, + 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, + 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, + 0x86d3d2d4L, 0xf1d4e242L, 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, 0x18b74777L, + 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, + 0xa00ae278L, 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, 0x4969474dL, 0x3e6e77dbL, + 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, + 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, 0xcdd70693L, 0x54de5729L, 0x23d967bfL, + 0xb3667a2eL, 0xc4614ab8L, 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, 0x2d02ef8dL}; + constexpr std::uint32_t operator()(string_view value) const noexcept { + auto crc = static_cast(0xffffffffL); + for (const auto c : value) { + crc = (crc >> 8) ^ crc_table[(crc ^ static_cast(c)) & 0xff]; + } + return crc ^ 0xffffffffL; + } + + struct secondary_hash { + constexpr std::uint32_t operator()(string_view value) const noexcept { + auto acc = static_cast(2166136261ULL); + for (const auto c : value) { + acc = ((acc ^ static_cast(c)) * static_cast(16777619ULL)) & (std::numeric_limits::max)(); + } + return static_cast(acc); + } + }; +}; + +template +inline constexpr Hash hash_v{}; + +template +constexpr auto calculate_cases(std::size_t Page) noexcept { + constexpr std::array values = *GlobValues; + constexpr std::size_t size = values.size(); + + using switch_t = std::invoke_result_t; + static_assert(std::is_integral_v && !std::is_same_v); + const std::size_t values_to = (std::min)(static_cast(256), size - Page); + + std::array result{}; + auto fill = result.begin(); + { + auto first = values.begin() + static_cast(Page); + auto last = values.begin() + static_cast(Page + values_to); + while (first != last) { + *fill++ = hash_v(*first++); + } + } + + // dead cases, try to avoid case collisions + for (switch_t last_value = result[values_to - 1]; fill != result.end() && last_value != (std::numeric_limits::max)(); *fill++ = ++last_value) { + } + + { + auto it = result.begin(); + auto last_value = (std::numeric_limits::min)(); + for (; fill != result.end(); *fill++ = last_value++) { + while (last_value == *it) { + ++last_value, ++it; + } + } + } + + return result; +} + +template +constexpr R invoke_r(F&& f, Args&&... args) noexcept(std::is_nothrow_invocable_r_v) { + if constexpr (std::is_void_v) { + std::forward(f)(std::forward(args)...); + } else { + return static_cast(std::forward(f)(std::forward(args)...)); + } +} + +enum class case_call_t { + index, + value +}; + +template +inline constexpr auto default_result_type_lambda = []() noexcept(std::is_nothrow_default_constructible_v) { return T{}; }; + +template <> +inline constexpr auto default_result_type_lambda = []() noexcept {}; + +template +constexpr bool no_duplicate() noexcept { + using value_t = std::decay_t; + using hash_value_t = std::invoke_result_t; + std::arraysize()> hashes{}; + std::size_t size = 0; + for (auto elem : *Arr) { + hashes[size] = hash_v(elem); + for (auto i = size++; i > 0; --i) { + if (hashes[i] < hashes[i - 1]) { + auto tmp = hashes[i]; + hashes[i] = hashes[i - 1]; + hashes[i - 1] = tmp; + } else if (hashes[i] == hashes[i - 1]) { + return false; + } else { + break; + } + } + } + return true; +} + +#define MAGIC_ENUM_FOR_EACH_256(T) T(0) T(1) T(2) T(3) T(4) T(5) T(6) T(7) T(8) T(9) T(10) T(11) T(12) T(13) T(14) T(15) T(16) T(17) T(18) T(19) T(20) T(21) T(22) T(23) T(24) T(25) T(26) T(27) T(28) T(29) T(30) T(31) \ + T(32) T(33) T(34) T(35) T(36) T(37) T(38) T(39) T(40) T(41) T(42) T(43) T(44) T(45) T(46) T(47) T(48) T(49) T(50) T(51) T(52) T(53) T(54) T(55) T(56) T(57) T(58) T(59) T(60) T(61) T(62) T(63) \ + T(64) T(65) T(66) T(67) T(68) T(69) T(70) T(71) T(72) T(73) T(74) T(75) T(76) T(77) T(78) T(79) T(80) T(81) T(82) T(83) T(84) T(85) T(86) T(87) T(88) T(89) T(90) T(91) T(92) T(93) T(94) T(95) \ + T(96) T(97) T(98) T(99) T(100) T(101) T(102) T(103) T(104) T(105) T(106) T(107) T(108) T(109) T(110) T(111) T(112) T(113) T(114) T(115) T(116) T(117) T(118) T(119) T(120) T(121) T(122) T(123) T(124) T(125) T(126) T(127) \ + T(128) T(129) T(130) T(131) T(132) T(133) T(134) T(135) T(136) T(137) T(138) T(139) T(140) T(141) T(142) T(143) T(144) T(145) T(146) T(147) T(148) T(149) T(150) T(151) T(152) T(153) T(154) T(155) T(156) T(157) T(158) T(159) \ + T(160) T(161) T(162) T(163) T(164) T(165) T(166) T(167) T(168) T(169) T(170) T(171) T(172) T(173) T(174) T(175) T(176) T(177) T(178) T(179) T(180) T(181) T(182) T(183) T(184) T(185) T(186) T(187) T(188) T(189) T(190) T(191) \ + T(192) T(193) T(194) T(195) T(196) T(197) T(198) T(199) T(200) T(201) T(202) T(203) T(204) T(205) T(206) T(207) T(208) T(209) T(210) T(211) T(212) T(213) T(214) T(215) T(216) T(217) T(218) T(219) T(220) T(221) T(222) T(223) \ + T(224) T(225) T(226) T(227) T(228) T(229) T(230) T(231) T(232) T(233) T(234) T(235) T(236) T(237) T(238) T(239) T(240) T(241) T(242) T(243) T(244) T(245) T(246) T(247) T(248) T(249) T(250) T(251) T(252) T(253) T(254) T(255) + +#define MAGIC_ENUM_CASE(val) \ + case cases[val]: \ + if constexpr ((val) + Page < size) { \ + if (!pred(values[val + Page], searched)) { \ + break; \ + } \ + if constexpr (CallValue == case_call_t::index) { \ + if constexpr (std::is_invocable_r_v>) { \ + return detail::invoke_r(std::forward(lambda), std::integral_constant{}); \ + } else if constexpr (std::is_invocable_v>) { \ + assert(false && "magic_enum::detail::constexpr_switch wrong result type."); \ + } \ + } else if constexpr (CallValue == case_call_t::value) { \ + if constexpr (std::is_invocable_r_v>) { \ + return detail::invoke_r(std::forward(lambda), enum_constant{}); \ + } else if constexpr (std::is_invocable_r_v>) { \ + assert(false && "magic_enum::detail::constexpr_switch wrong result type."); \ + } \ + } \ + break; \ + } else \ + [[fallthrough]]; + +template ::value_type>, + typename Lambda, typename ResultGetterType = decltype(default_result_type_lambda<>), + typename BinaryPredicate = std::equal_to<>> +constexpr std::invoke_result_t constexpr_switch( + Lambda&& lambda, + typename std::decay_t::value_type searched, + ResultGetterType&& def = default_result_type_lambda<>, + BinaryPredicate&& pred = {}) { + using result_t = std::invoke_result_t; + using hash_t = std::conditional_t(), Hash, typename Hash::secondary_hash>; + constexpr std::array values = *GlobValues; + constexpr std::size_t size = values.size(); + constexpr std::array cases = calculate_cases(Page); + + switch (hash_v(searched)) { + MAGIC_ENUM_FOR_EACH_256(MAGIC_ENUM_CASE) + default: + if constexpr (size > 256 + Page) { + return constexpr_switch(std::forward(lambda), searched, std::forward(def)); + } + break; + } + return def(); +} + +#undef MAGIC_ENUM_FOR_EACH_256 +#undef MAGIC_ENUM_CASE +#endif + +template +constexpr auto for_each(Lambda&& lambda, std::index_sequence) { + static_assert(is_enum_v, "magic_enum::detail::for_each requires enum type."); + constexpr bool has_void_return = (std::is_void_v[I]>>> || ...); + constexpr bool all_same_return = (std::is_same_v[0]>>, std::invoke_result_t[I]>>> && ...); + + if constexpr (has_void_return) { + (lambda(enum_constant[I]> {}), ...); + } else if constexpr (all_same_return) { + return std::array{lambda(enum_constant[I]> {})...}; + } else { + return std::tuple{lambda(enum_constant[I]> {})...}; + } +} + +template +constexpr bool all_invocable(std::index_sequence) { + static_assert(is_enum_v, "magic_enum::detail::all_invocable requires enum type."); + + return (std::is_invocable_v[I]>> && ...); +} + +} // namespace detail + +// Checks is magic_enum supported compiler. +inline constexpr bool is_magic_enum_supported = detail::supported::value; + +template +using Enum = detail::enum_concept; + +// Checks whether T is an Unscoped enumeration type. +// Provides the member constant value which is equal to true, if T is an [Unscoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Unscoped_enumeration) type. Otherwise, value is equal to false. +template +struct is_unscoped_enum : detail::is_unscoped_enum {}; + +template +inline constexpr bool is_unscoped_enum_v = is_unscoped_enum::value; + +// Checks whether T is an Scoped enumeration type. +// Provides the member constant value which is equal to true, if T is an [Scoped enumeration](https://en.cppreference.com/w/cpp/language/enum#Scoped_enumerations) type. Otherwise, value is equal to false. +template +struct is_scoped_enum : detail::is_scoped_enum {}; + +template +inline constexpr bool is_scoped_enum_v = is_scoped_enum::value; + +// If T is a complete enumeration type, provides a member typedef type that names the underlying type of T. +// Otherwise, if T is not an enumeration type, there is no member type. Otherwise (T is an incomplete enumeration type), the program is ill-formed. +template +struct underlying_type : detail::underlying_type {}; + +template +using underlying_type_t = typename underlying_type::type; + +template +using enum_constant = detail::enum_constant; + +// Returns type name of enum. +template +[[nodiscard]] constexpr auto enum_type_name() noexcept -> detail::enable_if_t { + constexpr string_view name = detail::type_name_v>; + static_assert(!name.empty(), "magic_enum::enum_type_name enum type does not have a name."); + + return name; +} + +// Returns number of enum values. +template +[[nodiscard]] constexpr auto enum_count() noexcept -> detail::enable_if_t { + return detail::count_v>; +} + +// Returns enum value at specified index. +// No bounds checking is performed: the behavior is undefined if index >= number of enum values. +template +[[nodiscard]] constexpr auto enum_value(std::size_t index) noexcept -> detail::enable_if_t> { + using D = std::decay_t; + + if constexpr (detail::is_sparse_v) { + return assert((index < detail::count_v)), detail::values_v[index]; + } else { + constexpr bool is_flag = detail::is_flags_v; + constexpr auto min = is_flag ? detail::log2(detail::min_v) : detail::min_v; + + return assert((index < detail::count_v)), detail::value(index); + } +} + +// Returns enum value at specified index. +template +[[nodiscard]] constexpr auto enum_value() noexcept -> detail::enable_if_t> { + using D = std::decay_t; + static_assert(I < detail::count_v, "magic_enum::enum_value out of range."); + + return enum_value(I); +} + +// Returns std::array with enum values, sorted by enum value. +template +[[nodiscard]] constexpr auto enum_values() noexcept -> detail::enable_if_t> { + return detail::values_v>; +} + +// Returns integer value from enum value. +template +[[nodiscard]] constexpr auto enum_integer(E value) noexcept -> detail::enable_if_t> { + return static_cast>(value); +} + +// Returns underlying value from enum value. +template +[[nodiscard]] constexpr auto enum_underlying(E value) noexcept -> detail::enable_if_t> { + return static_cast>(value); +} + +// Obtains index in enum values from enum value. +// Returns optional with index. +template +[[nodiscard]] constexpr auto enum_index(E value) noexcept -> detail::enable_if_t> { + using D = std::decay_t; + using U = underlying_type_t; + + if constexpr (detail::count_v == 0) { + return {}; // Empty enum. + } else if constexpr (detail::is_sparse_v || detail::is_flags_v) { +#if defined(MAGIC_ENUM_NO_HASH) + for (std::size_t i = 0; i < detail::count_v; ++i) { + if (enum_value(i) == value) { + return i; + } + } + return {}; // Invalid value or out of range. +#else + return detail::constexpr_switch<&detail::values_v, detail::case_call_t::index>( + [](std::size_t i) { return optional{i}; }, + value, + detail::default_result_type_lambda>); +#endif + } else { + const auto v = static_cast(value); + if (v >= detail::min_v && v <= detail::max_v) { + return static_cast(v - detail::min_v); + } + return {}; // Invalid value or out of range. + } +} + +// Obtains index in enum values from static storage enum variable. +template +[[nodiscard]] constexpr auto enum_index() noexcept -> detail::enable_if_t { + constexpr auto index = enum_index>(V); + static_assert(index, "magic_enum::enum_index enum value does not have a index."); + + return *index; +} + +// Returns name from static storage enum variable. +// This version is much lighter on the compile times and is not restricted to the enum_range limitation. +template +[[nodiscard]] constexpr auto enum_name() noexcept -> detail::enable_if_t { + constexpr string_view name = detail::enum_name_v, V>; + static_assert(!name.empty(), "magic_enum::enum_name enum value does not have a name."); + + return name; +} + +// Returns name from enum value. +// If enum value does not have name or value out of range, returns empty string. +template +[[nodiscard]] constexpr auto enum_name(E value) noexcept -> detail::enable_if_t { + using D = std::decay_t; + + if (const auto i = enum_index(value)) { + return detail::names_v[*i]; + } + return {}; +} + +// Returns name from enum-flags value. +// If enum-flags value does not have name or value out of range, returns empty string. +template +[[nodiscard]] auto enum_flags_name(E value) -> detail::enable_if_t { + using D = std::decay_t; + using U = underlying_type_t; + + if constexpr (detail::is_flags_v) { + string name; + auto check_value = U{0}; + for (std::size_t i = 0; i < detail::count_v; ++i) { + if (const auto v = static_cast(enum_value(i)); (static_cast(value) & v) != 0) { + check_value |= v; + const auto n = detail::names_v[i]; + if (!name.empty()) { + name.append(1, '|'); + } + name.append(n.data(), n.size()); + } + } + + if (check_value != 0 && check_value == static_cast(value)) { + return name; + } + + return {}; // Invalid value or out of range. + } else { + if (const auto name = enum_name(value); !name.empty()) { + return {name.data(), name.size()}; + } + return {}; // Invalid value or out of range. + } +} + +// Returns std::array with names, sorted by enum value. +template +[[nodiscard]] constexpr auto enum_names() noexcept -> detail::enable_if_t> { + return detail::names_v>; +} + +// Returns std::array with pairs (value, name), sorted by enum value. +template +[[nodiscard]] constexpr auto enum_entries() noexcept -> detail::enable_if_t> { + return detail::entries_v>; +} + +// Allows you to write magic_enum::enum_cast("bar", magic_enum::case_insensitive); +inline constexpr auto case_insensitive = detail::case_insensitive{}; + +// Obtains enum value from integer value. +// Returns optional with enum value. +template +[[nodiscard]] constexpr auto enum_cast(underlying_type_t value) noexcept -> detail::enable_if_t>> { + using D = std::decay_t; + using U = underlying_type_t; + + if constexpr (detail::count_v == 0) { + return {}; // Empty enum. + } else if constexpr (detail::is_sparse_v) { + if constexpr (detail::is_flags_v) { + auto check_value = U{0}; + for (std::size_t i = 0; i < detail::count_v; ++i) { + if (const auto v = static_cast(enum_value(i)); (value & v) != 0) { + check_value |= v; + } + } + + if (check_value != 0 && check_value == value) { + return static_cast(value); + } + return {}; // Invalid value or out of range. + } else { +#if defined(MAGIC_ENUM_NO_HASH) + for (std::size_t i = 0; i < detail::count_v; ++i) { + if (value == static_cast(enum_value(i))) { + return static_cast(value); + } + } + return {}; // Invalid value or out of range. +#else + return detail::constexpr_switch<&detail::values_v, detail::case_call_t::value>( + [](D v) { return optional{v}; }, + static_cast(value), + detail::default_result_type_lambda>); +#endif + } + } else { + constexpr auto min = detail::min_v; + constexpr auto max = detail::is_flags_v ? detail::values_ors() : detail::max_v; + + if (value >= min && value <= max) { + return static_cast(value); + } + return {}; // Invalid value or out of range. + } +} + +// Obtains enum value from name. +// Returns optional with enum value. +template > +[[nodiscard]] constexpr auto enum_cast(string_view value, [[maybe_unused]] BinaryPredicate&& p = {}) noexcept(detail::is_nothrow_invocable()) -> detail::enable_if_t>, BinaryPredicate> { + static_assert(std::is_invocable_r_v, "magic_enum::enum_cast requires bool(char, char) invocable predicate."); + using D = std::decay_t; + using U = underlying_type_t; + + if constexpr (detail::count_v == 0) { + return {}; // Empty enum. + } else if constexpr (detail::is_flags_v) { + auto result = U{0}; + while (!value.empty()) { + const auto d = detail::find(value, '|'); + const auto s = (d == string_view::npos) ? value : value.substr(0, d); + auto f = U{0}; + for (std::size_t i = 0; i < detail::count_v; ++i) { + if (detail::cmp_equal(s, detail::names_v[i], p)) { + f = static_cast(enum_value(i)); + result |= f; + break; + } + } + if (f == U{0}) { + return {}; // Invalid value or out of range. + } + value.remove_prefix((d == string_view::npos) ? value.size() : d + 1); + } + + if (result != U{0}) { + return static_cast(result); + } + return {}; // Invalid value or out of range. + } else if constexpr (detail::count_v > 0) { + if constexpr (detail::is_default_predicate()) { +#if defined(MAGIC_ENUM_NO_HASH) + for (std::size_t i = 0; i < detail::count_v; ++i) { + if (detail::cmp_equal(value, detail::names_v[i], p)) { + return enum_value(i); + } + } + return {}; // Invalid value or out of range. +#else + return detail::constexpr_switch<&detail::names_v, detail::case_call_t::index>( + [](std::size_t i) { return optional{detail::values_v[i]}; }, + value, + detail::default_result_type_lambda>, + [&p](string_view lhs, string_view rhs) { return detail::cmp_equal(lhs, rhs, p); }); +#endif + } else { + for (std::size_t i = 0; i < detail::count_v; ++i) { + if (detail::cmp_equal(value, detail::names_v[i], p)) { + return enum_value(i); + } + } + return {}; // Invalid value or out of range. + } + } +} + +// Checks whether enum contains enumerator with such enum value. +template +[[nodiscard]] constexpr auto enum_contains(E value) noexcept -> detail::enable_if_t { + using D = std::decay_t; + using U = underlying_type_t; + + return static_cast(enum_cast(static_cast(value))); +} + +// Checks whether enum contains enumerator with such integer value. +template +[[nodiscard]] constexpr auto enum_contains(underlying_type_t value) noexcept -> detail::enable_if_t { + using D = std::decay_t; + + return static_cast(enum_cast(value)); +} + +// Checks whether enum contains enumerator with such name. +template > +[[nodiscard]] constexpr auto enum_contains(string_view value, BinaryPredicate&& p = {}) noexcept(detail::is_nothrow_invocable()) -> detail::enable_if_t { + static_assert(std::is_invocable_r_v, "magic_enum::enum_contains requires bool(char, char) invocable predicate."); + using D = std::decay_t; + + return static_cast(enum_cast(value, std::forward(p))); +} + +template +constexpr auto enum_switch(Lambda&& lambda, E value) -> detail::enable_if_t { + using D = std::decay_t; + static_assert(detail::has_hash, "magic_enum::enum_switch requires no defined MAGIC_ENUM_NO_HASH"); + + return detail::constexpr_switch<&detail::values_v, detail::case_call_t::value>( + std::forward(lambda), + value, + detail::default_result_type_lambda); +} + +template +constexpr auto enum_switch(Lambda&& lambda, E value, Result&& result) -> detail::enable_if_t { + using D = std::decay_t; + static_assert(detail::has_hash, "magic_enum::enum_switch requires no defined MAGIC_ENUM_NO_HASH"); + + return detail::constexpr_switch<&detail::values_v, detail::case_call_t::value>( + std::forward(lambda), + value, + [&result] { return std::forward(result); }); +} + +template , typename Lambda> +constexpr auto enum_switch(Lambda&& lambda, string_view name, BinaryPredicate&& p = {}) -> detail::enable_if_t { + static_assert(std::is_invocable_r_v, "magic_enum::enum_switch requires bool(char, char) invocable predicate."); + using D = std::decay_t; + static_assert(detail::has_hash, "magic_enum::enum_switch requires no defined MAGIC_ENUM_NO_HASH"); + + if (const auto v = enum_cast(name, std::forward(p))) { + return enum_switch(std::forward(lambda), *v); + } + return detail::default_result_type_lambda(); +} + +template , typename Lambda> +constexpr auto enum_switch(Lambda&& lambda, string_view name, Result&& result, BinaryPredicate&& p = {}) -> detail::enable_if_t { + static_assert(std::is_invocable_r_v, "magic_enum::enum_switch requires bool(char, char) invocable predicate."); + using D = std::decay_t; + static_assert(detail::has_hash, "magic_enum::enum_switch requires no defined MAGIC_ENUM_NO_HASH"); + + if (const auto v = enum_cast(name, std::forward(p))) { + return enum_switch(std::forward(lambda), *v, std::forward(result)); + } + return std::forward(result); +} + +template +constexpr auto enum_switch(Lambda&& lambda, underlying_type_t value) -> detail::enable_if_t { + using D = std::decay_t; + static_assert(detail::has_hash, "magic_enum::enum_switch requires no defined MAGIC_ENUM_NO_HASH"); + + if (const auto v = enum_cast(value)) { + return enum_switch(std::forward(lambda), *v); + } + return detail::default_result_type_lambda(); +} + +template +constexpr auto enum_switch(Lambda&& lambda, underlying_type_t value, Result&& result) -> detail::enable_if_t { + using D = std::decay_t; + static_assert(detail::has_hash, "magic_enum::enum_switch requires no defined MAGIC_ENUM_NO_HASH"); + + if (const auto v = enum_cast(value)) { + return enum_switch(std::forward(lambda), *v, std::forward(result)); + } + return std::forward(result); +} + +template = 0> +constexpr auto enum_for_each(Lambda&& lambda) { + using D = std::decay_t; + static_assert(std::is_enum_v, "magic_enum::enum_for_each requires enum type."); + constexpr auto sep = std::make_index_sequence>{}; + + if constexpr (detail::all_invocable(sep)) { + return detail::for_each(std::forward(lambda), sep); + } else { + static_assert(detail::always_false_v, "magic_enum::enum_for_each requires invocable of all enum value."); + } +} + +namespace ostream_operators { + +template = 0> +std::basic_ostream& operator<<(std::basic_ostream& os, E value) { + using D = std::decay_t; + using U = underlying_type_t; + + if constexpr (detail::supported::value) { + if (const auto name = enum_flags_name(value); !name.empty()) { + for (const auto c : name) { + os.put(c); + } + return os; + } + } + return (os << static_cast(value)); +} + +template = 0> +std::basic_ostream& operator<<(std::basic_ostream& os, optional value) { + return value ? (os << *value) : os; +} + +} // namespace ostream_operators + +namespace istream_operators { + +template = 0> +std::basic_istream& operator>>(std::basic_istream& is, E& value) { + using D = std::decay_t; + + std::basic_string s; + is >> s; + if (const auto v = enum_cast(s)) { + value = *v; + } else { + is.setstate(std::basic_ios::failbit); + } + return is; +} + +} // namespace istream_operators + +namespace iostream_operators { + +using namespace ostream_operators; +using namespace istream_operators; + +} // namespace iostream_operators + +namespace bitwise_operators { + +template = 0> +constexpr E operator~(E rhs) noexcept { + return static_cast(~static_cast>(rhs)); +} + +template = 0> +constexpr E operator|(E lhs, E rhs) noexcept { + return static_cast(static_cast>(lhs) | static_cast>(rhs)); +} + +template = 0> +constexpr E operator&(E lhs, E rhs) noexcept { + return static_cast(static_cast>(lhs) & static_cast>(rhs)); +} + +template = 0> +constexpr E operator^(E lhs, E rhs) noexcept { + return static_cast(static_cast>(lhs) ^ static_cast>(rhs)); +} + +template = 0> +constexpr E& operator|=(E& lhs, E rhs) noexcept { + return lhs = (lhs | rhs); +} + +template = 0> +constexpr E& operator&=(E& lhs, E rhs) noexcept { + return lhs = (lhs & rhs); +} + +template = 0> +constexpr E& operator^=(E& lhs, E rhs) noexcept { + return lhs = (lhs ^ rhs); +} + +} // namespace bitwise_operators + +} // namespace magic_enum + +#if defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(_MSC_VER) +#pragma warning(pop) +#endif + +#endif // NEARGYE_MAGIC_ENUM_HPP \ No newline at end of file diff --git a/LiteLoader/Header/third-party/mysql/errmsg.h b/LiteLoader/third-party/include/mysql/errmsg.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/errmsg.h rename to LiteLoader/third-party/include/mysql/errmsg.h diff --git a/LiteLoader/Header/third-party/mysql/field_types.h b/LiteLoader/third-party/include/mysql/field_types.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/field_types.h rename to LiteLoader/third-party/include/mysql/field_types.h diff --git a/LiteLoader/Header/third-party/mysql/my_command.h b/LiteLoader/third-party/include/mysql/my_command.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/my_command.h rename to LiteLoader/third-party/include/mysql/my_command.h diff --git a/LiteLoader/Header/third-party/mysql/my_compress.h b/LiteLoader/third-party/include/mysql/my_compress.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/my_compress.h rename to LiteLoader/third-party/include/mysql/my_compress.h diff --git a/LiteLoader/Header/third-party/mysql/my_list.h b/LiteLoader/third-party/include/mysql/my_list.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/my_list.h rename to LiteLoader/third-party/include/mysql/my_list.h diff --git a/LiteLoader/Header/third-party/mysql/mysql.h b/LiteLoader/third-party/include/mysql/mysql.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysql.h rename to LiteLoader/third-party/include/mysql/mysql.h diff --git a/LiteLoader/Header/third-party/mysql/mysql/client_plugin.h b/LiteLoader/third-party/include/mysql/mysql/client_plugin.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysql/client_plugin.h rename to LiteLoader/third-party/include/mysql/mysql/client_plugin.h diff --git a/LiteLoader/Header/third-party/mysql/mysql/plugin_auth_common.h b/LiteLoader/third-party/include/mysql/mysql/plugin_auth_common.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysql/plugin_auth_common.h rename to LiteLoader/third-party/include/mysql/mysql/plugin_auth_common.h diff --git a/LiteLoader/Header/third-party/mysql/mysql/udf_registration_types.h b/LiteLoader/third-party/include/mysql/mysql/udf_registration_types.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysql/udf_registration_types.h rename to LiteLoader/third-party/include/mysql/mysql/udf_registration_types.h diff --git a/LiteLoader/Header/third-party/mysql/mysql_com.h b/LiteLoader/third-party/include/mysql/mysql_com.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysql_com.h rename to LiteLoader/third-party/include/mysql/mysql_com.h diff --git a/LiteLoader/Header/third-party/mysql/mysql_time.h b/LiteLoader/third-party/include/mysql/mysql_time.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysql_time.h rename to LiteLoader/third-party/include/mysql/mysql_time.h diff --git a/LiteLoader/Header/third-party/mysql/mysql_version.h b/LiteLoader/third-party/include/mysql/mysql_version.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysql_version.h rename to LiteLoader/third-party/include/mysql/mysql_version.h diff --git a/LiteLoader/Header/third-party/mysql/mysqld_error.h b/LiteLoader/third-party/include/mysql/mysqld_error.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysqld_error.h rename to LiteLoader/third-party/include/mysql/mysqld_error.h diff --git a/LiteLoader/Header/third-party/mysql/mysqlx_ername.h b/LiteLoader/third-party/include/mysql/mysqlx_ername.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysqlx_ername.h rename to LiteLoader/third-party/include/mysql/mysqlx_ername.h diff --git a/LiteLoader/Header/third-party/mysql/mysqlx_error.h b/LiteLoader/third-party/include/mysql/mysqlx_error.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysqlx_error.h rename to LiteLoader/third-party/include/mysql/mysqlx_error.h diff --git a/LiteLoader/Header/third-party/mysql/mysqlx_version.h b/LiteLoader/third-party/include/mysql/mysqlx_version.h similarity index 100% rename from LiteLoader/Header/third-party/mysql/mysqlx_version.h rename to LiteLoader/third-party/include/mysql/mysqlx_version.h diff --git a/LiteLoader/Header/third-party/nbt-cpp/nbt.hpp b/LiteLoader/third-party/include/nbt-cpp/nbt.hpp similarity index 100% rename from LiteLoader/Header/third-party/nbt-cpp/nbt.hpp rename to LiteLoader/third-party/include/nbt-cpp/nbt.hpp diff --git a/LiteLoader/Header/third-party/openssl/__DECC_INCLUDE_EPILOGUE.H b/LiteLoader/third-party/include/openssl/__DECC_INCLUDE_EPILOGUE.H similarity index 100% rename from LiteLoader/Header/third-party/openssl/__DECC_INCLUDE_EPILOGUE.H rename to LiteLoader/third-party/include/openssl/__DECC_INCLUDE_EPILOGUE.H diff --git a/LiteLoader/Header/third-party/openssl/__DECC_INCLUDE_PROLOGUE.H b/LiteLoader/third-party/include/openssl/__DECC_INCLUDE_PROLOGUE.H similarity index 100% rename from LiteLoader/Header/third-party/openssl/__DECC_INCLUDE_PROLOGUE.H rename to LiteLoader/third-party/include/openssl/__DECC_INCLUDE_PROLOGUE.H diff --git a/LiteLoader/Header/third-party/openssl/aes.h b/LiteLoader/third-party/include/openssl/aes.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/aes.h rename to LiteLoader/third-party/include/openssl/aes.h diff --git a/LiteLoader/Header/third-party/openssl/asn1.h b/LiteLoader/third-party/include/openssl/asn1.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/asn1.h rename to LiteLoader/third-party/include/openssl/asn1.h diff --git a/LiteLoader/Header/third-party/openssl/asn1.h.in b/LiteLoader/third-party/include/openssl/asn1.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/asn1.h.in rename to LiteLoader/third-party/include/openssl/asn1.h.in diff --git a/LiteLoader/Header/third-party/openssl/asn1_mac.h b/LiteLoader/third-party/include/openssl/asn1_mac.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/asn1_mac.h rename to LiteLoader/third-party/include/openssl/asn1_mac.h diff --git a/LiteLoader/Header/third-party/openssl/asn1err.h b/LiteLoader/third-party/include/openssl/asn1err.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/asn1err.h rename to LiteLoader/third-party/include/openssl/asn1err.h diff --git a/LiteLoader/Header/third-party/openssl/asn1t.h b/LiteLoader/third-party/include/openssl/asn1t.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/asn1t.h rename to LiteLoader/third-party/include/openssl/asn1t.h diff --git a/LiteLoader/Header/third-party/openssl/asn1t.h.in b/LiteLoader/third-party/include/openssl/asn1t.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/asn1t.h.in rename to LiteLoader/third-party/include/openssl/asn1t.h.in diff --git a/LiteLoader/Header/third-party/openssl/async.h b/LiteLoader/third-party/include/openssl/async.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/async.h rename to LiteLoader/third-party/include/openssl/async.h diff --git a/LiteLoader/Header/third-party/openssl/asyncerr.h b/LiteLoader/third-party/include/openssl/asyncerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/asyncerr.h rename to LiteLoader/third-party/include/openssl/asyncerr.h diff --git a/LiteLoader/Header/third-party/openssl/bio.h b/LiteLoader/third-party/include/openssl/bio.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/bio.h rename to LiteLoader/third-party/include/openssl/bio.h diff --git a/LiteLoader/Header/third-party/openssl/bio.h.in b/LiteLoader/third-party/include/openssl/bio.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/bio.h.in rename to LiteLoader/third-party/include/openssl/bio.h.in diff --git a/LiteLoader/Header/third-party/openssl/bioerr.h b/LiteLoader/third-party/include/openssl/bioerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/bioerr.h rename to LiteLoader/third-party/include/openssl/bioerr.h diff --git a/LiteLoader/Header/third-party/openssl/blowfish.h b/LiteLoader/third-party/include/openssl/blowfish.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/blowfish.h rename to LiteLoader/third-party/include/openssl/blowfish.h diff --git a/LiteLoader/Header/third-party/openssl/bn.h b/LiteLoader/third-party/include/openssl/bn.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/bn.h rename to LiteLoader/third-party/include/openssl/bn.h diff --git a/LiteLoader/Header/third-party/openssl/bnerr.h b/LiteLoader/third-party/include/openssl/bnerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/bnerr.h rename to LiteLoader/third-party/include/openssl/bnerr.h diff --git a/LiteLoader/Header/third-party/openssl/buffer.h b/LiteLoader/third-party/include/openssl/buffer.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/buffer.h rename to LiteLoader/third-party/include/openssl/buffer.h diff --git a/LiteLoader/Header/third-party/openssl/buffererr.h b/LiteLoader/third-party/include/openssl/buffererr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/buffererr.h rename to LiteLoader/third-party/include/openssl/buffererr.h diff --git a/LiteLoader/Header/third-party/openssl/camellia.h b/LiteLoader/third-party/include/openssl/camellia.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/camellia.h rename to LiteLoader/third-party/include/openssl/camellia.h diff --git a/LiteLoader/Header/third-party/openssl/cast.h b/LiteLoader/third-party/include/openssl/cast.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cast.h rename to LiteLoader/third-party/include/openssl/cast.h diff --git a/LiteLoader/Header/third-party/openssl/cmac.h b/LiteLoader/third-party/include/openssl/cmac.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cmac.h rename to LiteLoader/third-party/include/openssl/cmac.h diff --git a/LiteLoader/Header/third-party/openssl/cmp.h b/LiteLoader/third-party/include/openssl/cmp.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cmp.h rename to LiteLoader/third-party/include/openssl/cmp.h diff --git a/LiteLoader/Header/third-party/openssl/cmp.h.in b/LiteLoader/third-party/include/openssl/cmp.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/cmp.h.in rename to LiteLoader/third-party/include/openssl/cmp.h.in diff --git a/LiteLoader/Header/third-party/openssl/cmp_util.h b/LiteLoader/third-party/include/openssl/cmp_util.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cmp_util.h rename to LiteLoader/third-party/include/openssl/cmp_util.h diff --git a/LiteLoader/Header/third-party/openssl/cmperr.h b/LiteLoader/third-party/include/openssl/cmperr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cmperr.h rename to LiteLoader/third-party/include/openssl/cmperr.h diff --git a/LiteLoader/Header/third-party/openssl/cms.h b/LiteLoader/third-party/include/openssl/cms.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cms.h rename to LiteLoader/third-party/include/openssl/cms.h diff --git a/LiteLoader/Header/third-party/openssl/cms.h.in b/LiteLoader/third-party/include/openssl/cms.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/cms.h.in rename to LiteLoader/third-party/include/openssl/cms.h.in diff --git a/LiteLoader/Header/third-party/openssl/cmserr.h b/LiteLoader/third-party/include/openssl/cmserr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cmserr.h rename to LiteLoader/third-party/include/openssl/cmserr.h diff --git a/LiteLoader/Header/third-party/openssl/comp.h b/LiteLoader/third-party/include/openssl/comp.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/comp.h rename to LiteLoader/third-party/include/openssl/comp.h diff --git a/LiteLoader/Header/third-party/openssl/comperr.h b/LiteLoader/third-party/include/openssl/comperr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/comperr.h rename to LiteLoader/third-party/include/openssl/comperr.h diff --git a/LiteLoader/Header/third-party/openssl/conf.h b/LiteLoader/third-party/include/openssl/conf.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/conf.h rename to LiteLoader/third-party/include/openssl/conf.h diff --git a/LiteLoader/Header/third-party/openssl/conf.h.in b/LiteLoader/third-party/include/openssl/conf.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/conf.h.in rename to LiteLoader/third-party/include/openssl/conf.h.in diff --git a/LiteLoader/Header/third-party/openssl/conf_api.h b/LiteLoader/third-party/include/openssl/conf_api.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/conf_api.h rename to LiteLoader/third-party/include/openssl/conf_api.h diff --git a/LiteLoader/Header/third-party/openssl/conferr.h b/LiteLoader/third-party/include/openssl/conferr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/conferr.h rename to LiteLoader/third-party/include/openssl/conferr.h diff --git a/LiteLoader/Header/third-party/openssl/configuration.h b/LiteLoader/third-party/include/openssl/configuration.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/configuration.h rename to LiteLoader/third-party/include/openssl/configuration.h diff --git a/LiteLoader/Header/third-party/openssl/configuration.h.in b/LiteLoader/third-party/include/openssl/configuration.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/configuration.h.in rename to LiteLoader/third-party/include/openssl/configuration.h.in diff --git a/LiteLoader/Header/third-party/openssl/conftypes.h b/LiteLoader/third-party/include/openssl/conftypes.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/conftypes.h rename to LiteLoader/third-party/include/openssl/conftypes.h diff --git a/LiteLoader/Header/third-party/openssl/core.h b/LiteLoader/third-party/include/openssl/core.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/core.h rename to LiteLoader/third-party/include/openssl/core.h diff --git a/LiteLoader/Header/third-party/openssl/core_dispatch.h b/LiteLoader/third-party/include/openssl/core_dispatch.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/core_dispatch.h rename to LiteLoader/third-party/include/openssl/core_dispatch.h diff --git a/LiteLoader/Header/third-party/openssl/core_names.h b/LiteLoader/third-party/include/openssl/core_names.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/core_names.h rename to LiteLoader/third-party/include/openssl/core_names.h diff --git a/LiteLoader/Header/third-party/openssl/core_object.h b/LiteLoader/third-party/include/openssl/core_object.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/core_object.h rename to LiteLoader/third-party/include/openssl/core_object.h diff --git a/LiteLoader/Header/third-party/openssl/crmf.h b/LiteLoader/third-party/include/openssl/crmf.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/crmf.h rename to LiteLoader/third-party/include/openssl/crmf.h diff --git a/LiteLoader/Header/third-party/openssl/crmf.h.in b/LiteLoader/third-party/include/openssl/crmf.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/crmf.h.in rename to LiteLoader/third-party/include/openssl/crmf.h.in diff --git a/LiteLoader/Header/third-party/openssl/crmferr.h b/LiteLoader/third-party/include/openssl/crmferr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/crmferr.h rename to LiteLoader/third-party/include/openssl/crmferr.h diff --git a/LiteLoader/Header/third-party/openssl/crypto.h b/LiteLoader/third-party/include/openssl/crypto.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/crypto.h rename to LiteLoader/third-party/include/openssl/crypto.h diff --git a/LiteLoader/Header/third-party/openssl/crypto.h.in b/LiteLoader/third-party/include/openssl/crypto.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/crypto.h.in rename to LiteLoader/third-party/include/openssl/crypto.h.in diff --git a/LiteLoader/Header/third-party/openssl/cryptoerr.h b/LiteLoader/third-party/include/openssl/cryptoerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cryptoerr.h rename to LiteLoader/third-party/include/openssl/cryptoerr.h diff --git a/LiteLoader/Header/third-party/openssl/cryptoerr_legacy.h b/LiteLoader/third-party/include/openssl/cryptoerr_legacy.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cryptoerr_legacy.h rename to LiteLoader/third-party/include/openssl/cryptoerr_legacy.h diff --git a/LiteLoader/Header/third-party/openssl/ct.h b/LiteLoader/third-party/include/openssl/ct.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ct.h rename to LiteLoader/third-party/include/openssl/ct.h diff --git a/LiteLoader/Header/third-party/openssl/ct.h.in b/LiteLoader/third-party/include/openssl/ct.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/ct.h.in rename to LiteLoader/third-party/include/openssl/ct.h.in diff --git a/LiteLoader/Header/third-party/openssl/cterr.h b/LiteLoader/third-party/include/openssl/cterr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/cterr.h rename to LiteLoader/third-party/include/openssl/cterr.h diff --git a/LiteLoader/Header/third-party/openssl/decoder.h b/LiteLoader/third-party/include/openssl/decoder.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/decoder.h rename to LiteLoader/third-party/include/openssl/decoder.h diff --git a/LiteLoader/Header/third-party/openssl/decodererr.h b/LiteLoader/third-party/include/openssl/decodererr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/decodererr.h rename to LiteLoader/third-party/include/openssl/decodererr.h diff --git a/LiteLoader/Header/third-party/openssl/des.h b/LiteLoader/third-party/include/openssl/des.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/des.h rename to LiteLoader/third-party/include/openssl/des.h diff --git a/LiteLoader/Header/third-party/openssl/dh.h b/LiteLoader/third-party/include/openssl/dh.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/dh.h rename to LiteLoader/third-party/include/openssl/dh.h diff --git a/LiteLoader/Header/third-party/openssl/dherr.h b/LiteLoader/third-party/include/openssl/dherr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/dherr.h rename to LiteLoader/third-party/include/openssl/dherr.h diff --git a/LiteLoader/Header/third-party/openssl/dsa.h b/LiteLoader/third-party/include/openssl/dsa.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/dsa.h rename to LiteLoader/third-party/include/openssl/dsa.h diff --git a/LiteLoader/Header/third-party/openssl/dsaerr.h b/LiteLoader/third-party/include/openssl/dsaerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/dsaerr.h rename to LiteLoader/third-party/include/openssl/dsaerr.h diff --git a/LiteLoader/Header/third-party/openssl/dtls1.h b/LiteLoader/third-party/include/openssl/dtls1.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/dtls1.h rename to LiteLoader/third-party/include/openssl/dtls1.h diff --git a/LiteLoader/Header/third-party/openssl/e_os2.h b/LiteLoader/third-party/include/openssl/e_os2.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/e_os2.h rename to LiteLoader/third-party/include/openssl/e_os2.h diff --git a/LiteLoader/Header/third-party/openssl/ebcdic.h b/LiteLoader/third-party/include/openssl/ebcdic.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ebcdic.h rename to LiteLoader/third-party/include/openssl/ebcdic.h diff --git a/LiteLoader/Header/third-party/openssl/ec.h b/LiteLoader/third-party/include/openssl/ec.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ec.h rename to LiteLoader/third-party/include/openssl/ec.h diff --git a/LiteLoader/Header/third-party/openssl/ecdh.h b/LiteLoader/third-party/include/openssl/ecdh.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ecdh.h rename to LiteLoader/third-party/include/openssl/ecdh.h diff --git a/LiteLoader/Header/third-party/openssl/ecdsa.h b/LiteLoader/third-party/include/openssl/ecdsa.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ecdsa.h rename to LiteLoader/third-party/include/openssl/ecdsa.h diff --git a/LiteLoader/Header/third-party/openssl/ecerr.h b/LiteLoader/third-party/include/openssl/ecerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ecerr.h rename to LiteLoader/third-party/include/openssl/ecerr.h diff --git a/LiteLoader/Header/third-party/openssl/encoder.h b/LiteLoader/third-party/include/openssl/encoder.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/encoder.h rename to LiteLoader/third-party/include/openssl/encoder.h diff --git a/LiteLoader/Header/third-party/openssl/encodererr.h b/LiteLoader/third-party/include/openssl/encodererr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/encodererr.h rename to LiteLoader/third-party/include/openssl/encodererr.h diff --git a/LiteLoader/Header/third-party/openssl/engine.h b/LiteLoader/third-party/include/openssl/engine.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/engine.h rename to LiteLoader/third-party/include/openssl/engine.h diff --git a/LiteLoader/Header/third-party/openssl/engineerr.h b/LiteLoader/third-party/include/openssl/engineerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/engineerr.h rename to LiteLoader/third-party/include/openssl/engineerr.h diff --git a/LiteLoader/Header/third-party/openssl/err.h b/LiteLoader/third-party/include/openssl/err.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/err.h rename to LiteLoader/third-party/include/openssl/err.h diff --git a/LiteLoader/Header/third-party/openssl/err.h.in b/LiteLoader/third-party/include/openssl/err.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/err.h.in rename to LiteLoader/third-party/include/openssl/err.h.in diff --git a/LiteLoader/Header/third-party/openssl/ess.h b/LiteLoader/third-party/include/openssl/ess.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ess.h rename to LiteLoader/third-party/include/openssl/ess.h diff --git a/LiteLoader/Header/third-party/openssl/ess.h.in b/LiteLoader/third-party/include/openssl/ess.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/ess.h.in rename to LiteLoader/third-party/include/openssl/ess.h.in diff --git a/LiteLoader/Header/third-party/openssl/esserr.h b/LiteLoader/third-party/include/openssl/esserr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/esserr.h rename to LiteLoader/third-party/include/openssl/esserr.h diff --git a/LiteLoader/Header/third-party/openssl/evp.h b/LiteLoader/third-party/include/openssl/evp.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/evp.h rename to LiteLoader/third-party/include/openssl/evp.h diff --git a/LiteLoader/Header/third-party/openssl/evperr.h b/LiteLoader/third-party/include/openssl/evperr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/evperr.h rename to LiteLoader/third-party/include/openssl/evperr.h diff --git a/LiteLoader/Header/third-party/openssl/fips_names.h b/LiteLoader/third-party/include/openssl/fips_names.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/fips_names.h rename to LiteLoader/third-party/include/openssl/fips_names.h diff --git a/LiteLoader/Header/third-party/openssl/fipskey.h b/LiteLoader/third-party/include/openssl/fipskey.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/fipskey.h rename to LiteLoader/third-party/include/openssl/fipskey.h diff --git a/LiteLoader/Header/third-party/openssl/fipskey.h.in b/LiteLoader/third-party/include/openssl/fipskey.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/fipskey.h.in rename to LiteLoader/third-party/include/openssl/fipskey.h.in diff --git a/LiteLoader/Header/third-party/openssl/hmac.h b/LiteLoader/third-party/include/openssl/hmac.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/hmac.h rename to LiteLoader/third-party/include/openssl/hmac.h diff --git a/LiteLoader/Header/third-party/openssl/http.h b/LiteLoader/third-party/include/openssl/http.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/http.h rename to LiteLoader/third-party/include/openssl/http.h diff --git a/LiteLoader/Header/third-party/openssl/httperr.h b/LiteLoader/third-party/include/openssl/httperr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/httperr.h rename to LiteLoader/third-party/include/openssl/httperr.h diff --git a/LiteLoader/Header/third-party/openssl/idea.h b/LiteLoader/third-party/include/openssl/idea.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/idea.h rename to LiteLoader/third-party/include/openssl/idea.h diff --git a/LiteLoader/Header/third-party/openssl/kdf.h b/LiteLoader/third-party/include/openssl/kdf.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/kdf.h rename to LiteLoader/third-party/include/openssl/kdf.h diff --git a/LiteLoader/Header/third-party/openssl/kdferr.h b/LiteLoader/third-party/include/openssl/kdferr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/kdferr.h rename to LiteLoader/third-party/include/openssl/kdferr.h diff --git a/LiteLoader/Header/third-party/openssl/lhash.h b/LiteLoader/third-party/include/openssl/lhash.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/lhash.h rename to LiteLoader/third-party/include/openssl/lhash.h diff --git a/LiteLoader/Header/third-party/openssl/lhash.h.in b/LiteLoader/third-party/include/openssl/lhash.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/lhash.h.in rename to LiteLoader/third-party/include/openssl/lhash.h.in diff --git a/LiteLoader/Header/third-party/openssl/macros.h b/LiteLoader/third-party/include/openssl/macros.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/macros.h rename to LiteLoader/third-party/include/openssl/macros.h diff --git a/LiteLoader/Header/third-party/openssl/md2.h b/LiteLoader/third-party/include/openssl/md2.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/md2.h rename to LiteLoader/third-party/include/openssl/md2.h diff --git a/LiteLoader/Header/third-party/openssl/md4.h b/LiteLoader/third-party/include/openssl/md4.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/md4.h rename to LiteLoader/third-party/include/openssl/md4.h diff --git a/LiteLoader/Header/third-party/openssl/md5.h b/LiteLoader/third-party/include/openssl/md5.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/md5.h rename to LiteLoader/third-party/include/openssl/md5.h diff --git a/LiteLoader/Header/third-party/openssl/mdc2.h b/LiteLoader/third-party/include/openssl/mdc2.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/mdc2.h rename to LiteLoader/third-party/include/openssl/mdc2.h diff --git a/LiteLoader/Header/third-party/openssl/modes.h b/LiteLoader/third-party/include/openssl/modes.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/modes.h rename to LiteLoader/third-party/include/openssl/modes.h diff --git a/LiteLoader/Header/third-party/openssl/obj_mac.h b/LiteLoader/third-party/include/openssl/obj_mac.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/obj_mac.h rename to LiteLoader/third-party/include/openssl/obj_mac.h diff --git a/LiteLoader/Header/third-party/openssl/objects.h b/LiteLoader/third-party/include/openssl/objects.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/objects.h rename to LiteLoader/third-party/include/openssl/objects.h diff --git a/LiteLoader/Header/third-party/openssl/objectserr.h b/LiteLoader/third-party/include/openssl/objectserr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/objectserr.h rename to LiteLoader/third-party/include/openssl/objectserr.h diff --git a/LiteLoader/Header/third-party/openssl/ocsp.h b/LiteLoader/third-party/include/openssl/ocsp.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ocsp.h rename to LiteLoader/third-party/include/openssl/ocsp.h diff --git a/LiteLoader/Header/third-party/openssl/ocsp.h.in b/LiteLoader/third-party/include/openssl/ocsp.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/ocsp.h.in rename to LiteLoader/third-party/include/openssl/ocsp.h.in diff --git a/LiteLoader/Header/third-party/openssl/ocsperr.h b/LiteLoader/third-party/include/openssl/ocsperr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ocsperr.h rename to LiteLoader/third-party/include/openssl/ocsperr.h diff --git a/LiteLoader/Header/third-party/openssl/opensslconf.h b/LiteLoader/third-party/include/openssl/opensslconf.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/opensslconf.h rename to LiteLoader/third-party/include/openssl/opensslconf.h diff --git a/LiteLoader/Header/third-party/openssl/opensslv.h b/LiteLoader/third-party/include/openssl/opensslv.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/opensslv.h rename to LiteLoader/third-party/include/openssl/opensslv.h diff --git a/LiteLoader/Header/third-party/openssl/opensslv.h.in b/LiteLoader/third-party/include/openssl/opensslv.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/opensslv.h.in rename to LiteLoader/third-party/include/openssl/opensslv.h.in diff --git a/LiteLoader/Header/third-party/openssl/ossl_typ.h b/LiteLoader/third-party/include/openssl/ossl_typ.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ossl_typ.h rename to LiteLoader/third-party/include/openssl/ossl_typ.h diff --git a/LiteLoader/Header/third-party/openssl/param_build.h b/LiteLoader/third-party/include/openssl/param_build.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/param_build.h rename to LiteLoader/third-party/include/openssl/param_build.h diff --git a/LiteLoader/Header/third-party/openssl/params.h b/LiteLoader/third-party/include/openssl/params.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/params.h rename to LiteLoader/third-party/include/openssl/params.h diff --git a/LiteLoader/Header/third-party/openssl/pem.h b/LiteLoader/third-party/include/openssl/pem.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/pem.h rename to LiteLoader/third-party/include/openssl/pem.h diff --git a/LiteLoader/Header/third-party/openssl/pem2.h b/LiteLoader/third-party/include/openssl/pem2.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/pem2.h rename to LiteLoader/third-party/include/openssl/pem2.h diff --git a/LiteLoader/Header/third-party/openssl/pemerr.h b/LiteLoader/third-party/include/openssl/pemerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/pemerr.h rename to LiteLoader/third-party/include/openssl/pemerr.h diff --git a/LiteLoader/Header/third-party/openssl/pkcs12.h b/LiteLoader/third-party/include/openssl/pkcs12.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/pkcs12.h rename to LiteLoader/third-party/include/openssl/pkcs12.h diff --git a/LiteLoader/Header/third-party/openssl/pkcs12.h.in b/LiteLoader/third-party/include/openssl/pkcs12.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/pkcs12.h.in rename to LiteLoader/third-party/include/openssl/pkcs12.h.in diff --git a/LiteLoader/Header/third-party/openssl/pkcs12err.h b/LiteLoader/third-party/include/openssl/pkcs12err.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/pkcs12err.h rename to LiteLoader/third-party/include/openssl/pkcs12err.h diff --git a/LiteLoader/Header/third-party/openssl/pkcs7.h b/LiteLoader/third-party/include/openssl/pkcs7.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/pkcs7.h rename to LiteLoader/third-party/include/openssl/pkcs7.h diff --git a/LiteLoader/Header/third-party/openssl/pkcs7.h.in b/LiteLoader/third-party/include/openssl/pkcs7.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/pkcs7.h.in rename to LiteLoader/third-party/include/openssl/pkcs7.h.in diff --git a/LiteLoader/Header/third-party/openssl/pkcs7err.h b/LiteLoader/third-party/include/openssl/pkcs7err.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/pkcs7err.h rename to LiteLoader/third-party/include/openssl/pkcs7err.h diff --git a/LiteLoader/Header/third-party/openssl/prov_ssl.h b/LiteLoader/third-party/include/openssl/prov_ssl.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/prov_ssl.h rename to LiteLoader/third-party/include/openssl/prov_ssl.h diff --git a/LiteLoader/Header/third-party/openssl/proverr.h b/LiteLoader/third-party/include/openssl/proverr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/proverr.h rename to LiteLoader/third-party/include/openssl/proverr.h diff --git a/LiteLoader/Header/third-party/openssl/provider.h b/LiteLoader/third-party/include/openssl/provider.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/provider.h rename to LiteLoader/third-party/include/openssl/provider.h diff --git a/LiteLoader/Header/third-party/openssl/rand.h b/LiteLoader/third-party/include/openssl/rand.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/rand.h rename to LiteLoader/third-party/include/openssl/rand.h diff --git a/LiteLoader/Header/third-party/openssl/randerr.h b/LiteLoader/third-party/include/openssl/randerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/randerr.h rename to LiteLoader/third-party/include/openssl/randerr.h diff --git a/LiteLoader/Header/third-party/openssl/rc2.h b/LiteLoader/third-party/include/openssl/rc2.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/rc2.h rename to LiteLoader/third-party/include/openssl/rc2.h diff --git a/LiteLoader/Header/third-party/openssl/rc4.h b/LiteLoader/third-party/include/openssl/rc4.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/rc4.h rename to LiteLoader/third-party/include/openssl/rc4.h diff --git a/LiteLoader/Header/third-party/openssl/rc5.h b/LiteLoader/third-party/include/openssl/rc5.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/rc5.h rename to LiteLoader/third-party/include/openssl/rc5.h diff --git a/LiteLoader/Header/third-party/openssl/ripemd.h b/LiteLoader/third-party/include/openssl/ripemd.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ripemd.h rename to LiteLoader/third-party/include/openssl/ripemd.h diff --git a/LiteLoader/Header/third-party/openssl/rsa.h b/LiteLoader/third-party/include/openssl/rsa.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/rsa.h rename to LiteLoader/third-party/include/openssl/rsa.h diff --git a/LiteLoader/Header/third-party/openssl/rsaerr.h b/LiteLoader/third-party/include/openssl/rsaerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/rsaerr.h rename to LiteLoader/third-party/include/openssl/rsaerr.h diff --git a/LiteLoader/Header/third-party/openssl/safestack.h b/LiteLoader/third-party/include/openssl/safestack.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/safestack.h rename to LiteLoader/third-party/include/openssl/safestack.h diff --git a/LiteLoader/Header/third-party/openssl/safestack.h.in b/LiteLoader/third-party/include/openssl/safestack.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/safestack.h.in rename to LiteLoader/third-party/include/openssl/safestack.h.in diff --git a/LiteLoader/Header/third-party/openssl/seed.h b/LiteLoader/third-party/include/openssl/seed.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/seed.h rename to LiteLoader/third-party/include/openssl/seed.h diff --git a/LiteLoader/Header/third-party/openssl/self_test.h b/LiteLoader/third-party/include/openssl/self_test.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/self_test.h rename to LiteLoader/third-party/include/openssl/self_test.h diff --git a/LiteLoader/Header/third-party/openssl/sha.h b/LiteLoader/third-party/include/openssl/sha.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/sha.h rename to LiteLoader/third-party/include/openssl/sha.h diff --git a/LiteLoader/Header/third-party/openssl/srp.h b/LiteLoader/third-party/include/openssl/srp.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/srp.h rename to LiteLoader/third-party/include/openssl/srp.h diff --git a/LiteLoader/Header/third-party/openssl/srp.h.in b/LiteLoader/third-party/include/openssl/srp.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/srp.h.in rename to LiteLoader/third-party/include/openssl/srp.h.in diff --git a/LiteLoader/Header/third-party/openssl/srtp.h b/LiteLoader/third-party/include/openssl/srtp.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/srtp.h rename to LiteLoader/third-party/include/openssl/srtp.h diff --git a/LiteLoader/Header/third-party/openssl/ssl.h b/LiteLoader/third-party/include/openssl/ssl.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ssl.h rename to LiteLoader/third-party/include/openssl/ssl.h diff --git a/LiteLoader/Header/third-party/openssl/ssl.h.in b/LiteLoader/third-party/include/openssl/ssl.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/ssl.h.in rename to LiteLoader/third-party/include/openssl/ssl.h.in diff --git a/LiteLoader/Header/third-party/openssl/ssl2.h b/LiteLoader/third-party/include/openssl/ssl2.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ssl2.h rename to LiteLoader/third-party/include/openssl/ssl2.h diff --git a/LiteLoader/Header/third-party/openssl/ssl3.h b/LiteLoader/third-party/include/openssl/ssl3.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ssl3.h rename to LiteLoader/third-party/include/openssl/ssl3.h diff --git a/LiteLoader/Header/third-party/openssl/sslerr.h b/LiteLoader/third-party/include/openssl/sslerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/sslerr.h rename to LiteLoader/third-party/include/openssl/sslerr.h diff --git a/LiteLoader/Header/third-party/openssl/sslerr_legacy.h b/LiteLoader/third-party/include/openssl/sslerr_legacy.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/sslerr_legacy.h rename to LiteLoader/third-party/include/openssl/sslerr_legacy.h diff --git a/LiteLoader/Header/third-party/openssl/stack.h b/LiteLoader/third-party/include/openssl/stack.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/stack.h rename to LiteLoader/third-party/include/openssl/stack.h diff --git a/LiteLoader/Header/third-party/openssl/store.h b/LiteLoader/third-party/include/openssl/store.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/store.h rename to LiteLoader/third-party/include/openssl/store.h diff --git a/LiteLoader/Header/third-party/openssl/storeerr.h b/LiteLoader/third-party/include/openssl/storeerr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/storeerr.h rename to LiteLoader/third-party/include/openssl/storeerr.h diff --git a/LiteLoader/Header/third-party/openssl/symhacks.h b/LiteLoader/third-party/include/openssl/symhacks.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/symhacks.h rename to LiteLoader/third-party/include/openssl/symhacks.h diff --git a/LiteLoader/Header/third-party/openssl/tls1.h b/LiteLoader/third-party/include/openssl/tls1.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/tls1.h rename to LiteLoader/third-party/include/openssl/tls1.h diff --git a/LiteLoader/Header/third-party/openssl/trace.h b/LiteLoader/third-party/include/openssl/trace.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/trace.h rename to LiteLoader/third-party/include/openssl/trace.h diff --git a/LiteLoader/Header/third-party/openssl/ts.h b/LiteLoader/third-party/include/openssl/ts.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ts.h rename to LiteLoader/third-party/include/openssl/ts.h diff --git a/LiteLoader/Header/third-party/openssl/tserr.h b/LiteLoader/third-party/include/openssl/tserr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/tserr.h rename to LiteLoader/third-party/include/openssl/tserr.h diff --git a/LiteLoader/Header/third-party/openssl/txt_db.h b/LiteLoader/third-party/include/openssl/txt_db.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/txt_db.h rename to LiteLoader/third-party/include/openssl/txt_db.h diff --git a/LiteLoader/Header/third-party/openssl/types.h b/LiteLoader/third-party/include/openssl/types.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/types.h rename to LiteLoader/third-party/include/openssl/types.h diff --git a/LiteLoader/Header/third-party/openssl/ui.h b/LiteLoader/third-party/include/openssl/ui.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/ui.h rename to LiteLoader/third-party/include/openssl/ui.h diff --git a/LiteLoader/Header/third-party/openssl/ui.h.in b/LiteLoader/third-party/include/openssl/ui.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/ui.h.in rename to LiteLoader/third-party/include/openssl/ui.h.in diff --git a/LiteLoader/Header/third-party/openssl/uierr.h b/LiteLoader/third-party/include/openssl/uierr.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/uierr.h rename to LiteLoader/third-party/include/openssl/uierr.h diff --git a/LiteLoader/Header/third-party/openssl/whrlpool.h b/LiteLoader/third-party/include/openssl/whrlpool.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/whrlpool.h rename to LiteLoader/third-party/include/openssl/whrlpool.h diff --git a/LiteLoader/Header/third-party/openssl/x509.h b/LiteLoader/third-party/include/openssl/x509.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509.h rename to LiteLoader/third-party/include/openssl/x509.h diff --git a/LiteLoader/Header/third-party/openssl/x509.h.in b/LiteLoader/third-party/include/openssl/x509.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509.h.in rename to LiteLoader/third-party/include/openssl/x509.h.in diff --git a/LiteLoader/Header/third-party/openssl/x509_vfy.h b/LiteLoader/third-party/include/openssl/x509_vfy.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509_vfy.h rename to LiteLoader/third-party/include/openssl/x509_vfy.h diff --git a/LiteLoader/Header/third-party/openssl/x509_vfy.h.in b/LiteLoader/third-party/include/openssl/x509_vfy.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509_vfy.h.in rename to LiteLoader/third-party/include/openssl/x509_vfy.h.in diff --git a/LiteLoader/Header/third-party/openssl/x509err.h b/LiteLoader/third-party/include/openssl/x509err.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509err.h rename to LiteLoader/third-party/include/openssl/x509err.h diff --git a/LiteLoader/Header/third-party/openssl/x509v3.h b/LiteLoader/third-party/include/openssl/x509v3.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509v3.h rename to LiteLoader/third-party/include/openssl/x509v3.h diff --git a/LiteLoader/Header/third-party/openssl/x509v3.h.in b/LiteLoader/third-party/include/openssl/x509v3.h.in similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509v3.h.in rename to LiteLoader/third-party/include/openssl/x509v3.h.in diff --git a/LiteLoader/Header/third-party/openssl/x509v3err.h b/LiteLoader/third-party/include/openssl/x509v3err.h similarity index 100% rename from LiteLoader/Header/third-party/openssl/x509v3err.h rename to LiteLoader/third-party/include/openssl/x509v3err.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/btree.h b/LiteLoader/third-party/include/parallel_hashmap/btree.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/btree.h rename to LiteLoader/third-party/include/parallel_hashmap/btree.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/meminfo.h b/LiteLoader/third-party/include/parallel_hashmap/meminfo.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/meminfo.h rename to LiteLoader/third-party/include/parallel_hashmap/meminfo.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/phmap.h b/LiteLoader/third-party/include/parallel_hashmap/phmap.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/phmap.h rename to LiteLoader/third-party/include/parallel_hashmap/phmap.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/phmap_base.h b/LiteLoader/third-party/include/parallel_hashmap/phmap_base.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/phmap_base.h rename to LiteLoader/third-party/include/parallel_hashmap/phmap_base.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/phmap_bits.h b/LiteLoader/third-party/include/parallel_hashmap/phmap_bits.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/phmap_bits.h rename to LiteLoader/third-party/include/parallel_hashmap/phmap_bits.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/phmap_config.h b/LiteLoader/third-party/include/parallel_hashmap/phmap_config.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/phmap_config.h rename to LiteLoader/third-party/include/parallel_hashmap/phmap_config.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/phmap_dump.h b/LiteLoader/third-party/include/parallel_hashmap/phmap_dump.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/phmap_dump.h rename to LiteLoader/third-party/include/parallel_hashmap/phmap_dump.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/phmap_fwd_decl.h b/LiteLoader/third-party/include/parallel_hashmap/phmap_fwd_decl.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/phmap_fwd_decl.h rename to LiteLoader/third-party/include/parallel_hashmap/phmap_fwd_decl.h diff --git a/LiteLoader/Header/third-party/parallel_hashmap/phmap_utils.h b/LiteLoader/third-party/include/parallel_hashmap/phmap_utils.h similarity index 100% rename from LiteLoader/Header/third-party/parallel_hashmap/phmap_utils.h rename to LiteLoader/third-party/include/parallel_hashmap/phmap_utils.h diff --git a/LiteLoader/Header/third-party/pcg/pcg_extras.hpp b/LiteLoader/third-party/include/pcg/pcg_extras.hpp similarity index 100% rename from LiteLoader/Header/third-party/pcg/pcg_extras.hpp rename to LiteLoader/third-party/include/pcg/pcg_extras.hpp diff --git a/LiteLoader/Header/third-party/pcg/pcg_random.hpp b/LiteLoader/third-party/include/pcg/pcg_random.hpp similarity index 100% rename from LiteLoader/Header/third-party/pcg/pcg_random.hpp rename to LiteLoader/third-party/include/pcg/pcg_random.hpp diff --git a/LiteLoader/Header/third-party/pcg/pcg_uint128.hpp b/LiteLoader/third-party/include/pcg/pcg_uint128.hpp similarity index 100% rename from LiteLoader/Header/third-party/pcg/pcg_uint128.hpp rename to LiteLoader/third-party/include/pcg/pcg_uint128.hpp diff --git a/LiteLoader/Header/third-party/seh_exception/seh_exception.hpp b/LiteLoader/third-party/include/seh_exception/seh_exception.hpp similarity index 100% rename from LiteLoader/Header/third-party/seh_exception/seh_exception.hpp rename to LiteLoader/third-party/include/seh_exception/seh_exception.hpp diff --git a/LiteLoader/Header/third-party/sqlite3/sqlite3.h b/LiteLoader/third-party/include/sqlite3/sqlite3.h similarity index 100% rename from LiteLoader/Header/third-party/sqlite3/sqlite3.h rename to LiteLoader/third-party/include/sqlite3/sqlite3.h diff --git a/LiteLoader/Lib/third-party/SQLiteCpp/SQLiteCpp.lib b/LiteLoader/third-party/lib/SQLiteCpp/SQLiteCpp.lib similarity index 100% rename from LiteLoader/Lib/third-party/SQLiteCpp/SQLiteCpp.lib rename to LiteLoader/third-party/lib/SQLiteCpp/SQLiteCpp.lib diff --git a/LiteLoader/Lib/third-party/SQLiteCpp/sqlite3.lib b/LiteLoader/third-party/lib/SQLiteCpp/sqlite3.lib similarity index 100% rename from LiteLoader/Lib/third-party/SQLiteCpp/sqlite3.lib rename to LiteLoader/third-party/lib/SQLiteCpp/sqlite3.lib diff --git a/LiteLoader/Lib/third-party/compact_enc_det/ced.lib b/LiteLoader/third-party/lib/compact_enc_det/ced.lib similarity index 100% rename from LiteLoader/Lib/third-party/compact_enc_det/ced.lib rename to LiteLoader/third-party/lib/compact_enc_det/ced.lib diff --git a/LiteLoader/Lib/third-party/dbghelp/dbghelp.lib b/LiteLoader/third-party/lib/dbghelp/dbghelp.lib similarity index 100% rename from LiteLoader/Lib/third-party/dbghelp/dbghelp.lib rename to LiteLoader/third-party/lib/dbghelp/dbghelp.lib diff --git a/LiteLoader/Lib/third-party/detours/detours.lib b/LiteLoader/third-party/lib/detours/detours.lib similarity index 100% rename from LiteLoader/Lib/third-party/detours/detours.lib rename to LiteLoader/third-party/lib/detours/detours.lib diff --git a/LiteLoader/Lib/third-party/detours/detours.pdb b/LiteLoader/third-party/lib/detours/detours.pdb similarity index 100% rename from LiteLoader/Lib/third-party/detours/detours.pdb rename to LiteLoader/third-party/lib/detours/detours.pdb diff --git a/LiteLoader/Lib/third-party/dyncall/dyncall_s.lib b/LiteLoader/third-party/lib/dyncall/dyncall_s.lib similarity index 100% rename from LiteLoader/Lib/third-party/dyncall/dyncall_s.lib rename to LiteLoader/third-party/lib/dyncall/dyncall_s.lib diff --git a/LiteLoader/Lib/third-party/dyncall/dyncallback_s.lib b/LiteLoader/third-party/lib/dyncall/dyncallback_s.lib similarity index 100% rename from LiteLoader/Lib/third-party/dyncall/dyncallback_s.lib rename to LiteLoader/third-party/lib/dyncall/dyncallback_s.lib diff --git a/LiteLoader/Lib/third-party/dyncall/dynload_s.lib b/LiteLoader/third-party/lib/dyncall/dynload_s.lib similarity index 100% rename from LiteLoader/Lib/third-party/dyncall/dynload_s.lib rename to LiteLoader/third-party/lib/dyncall/dynload_s.lib diff --git a/LiteLoader/Lib/third-party/leveldb/leveldb.lib b/LiteLoader/third-party/lib/leveldb/leveldb.lib similarity index 100% rename from LiteLoader/Lib/third-party/leveldb/leveldb.lib rename to LiteLoader/third-party/lib/leveldb/leveldb.lib diff --git a/LiteLoader/Lib/third-party/mysql/libmysql.pdb b/LiteLoader/third-party/lib/mysql/libmysql.pdb similarity index 100% rename from LiteLoader/Lib/third-party/mysql/libmysql.pdb rename to LiteLoader/third-party/lib/mysql/libmysql.pdb diff --git a/LiteLoader/Lib/third-party/mysql/mysqlclient.lib b/LiteLoader/third-party/lib/mysql/mysqlclient.lib similarity index 100% rename from LiteLoader/Lib/third-party/mysql/mysqlclient.lib rename to LiteLoader/third-party/lib/mysql/mysqlclient.lib diff --git a/LiteLoader/Lib/third-party/openssl/libcrypto.lib b/LiteLoader/third-party/lib/openssl/libcrypto.lib similarity index 100% rename from LiteLoader/Lib/third-party/openssl/libcrypto.lib rename to LiteLoader/third-party/lib/openssl/libcrypto.lib diff --git a/LiteLoader/Lib/third-party/openssl/libssl.lib b/LiteLoader/third-party/lib/openssl/libssl.lib similarity index 100% rename from LiteLoader/Lib/third-party/openssl/libssl.lib rename to LiteLoader/third-party/lib/openssl/libssl.lib diff --git a/LiteLoader/Lib/third-party/sqlite3/sqlite3.lib b/LiteLoader/third-party/lib/sqlite3/sqlite3.lib similarity index 100% rename from LiteLoader/Lib/third-party/sqlite3/sqlite3.lib rename to LiteLoader/third-party/lib/sqlite3/sqlite3.lib diff --git a/LiteLoader/Lib/third-party/nbt-cpp/nbt.cpp b/LiteLoader/third-party/src/nbt-cpp/nbt.cpp similarity index 98% rename from LiteLoader/Lib/third-party/nbt-cpp/nbt.cpp rename to LiteLoader/third-party/src/nbt-cpp/nbt.cpp index 0a93f5e..bb8c651 100644 --- a/LiteLoader/Lib/third-party/nbt-cpp/nbt.cpp +++ b/LiteLoader/third-party/src/nbt-cpp/nbt.cpp @@ -1,5 +1,6 @@ #include "nbt_internal.hpp" +#include #include #include #include @@ -262,7 +263,7 @@ tag_id deduce_tag(std::istream & input) { } if (std::isdigit(a) || a == '-' || a == '+') { std::string buffer(&a, 1); - tag_id deduced; + tag_id deduced = static_cast(-1); for (;;) { char b = cheof(input); buffer.push_back(b); @@ -577,7 +578,7 @@ std::unique_ptr end_list_tag::read_content(std::istream & input) { } else { char c = cheof(input); if (c != ']') - throw std::runtime_error("']' expected, got "+c); + throw std::runtime_error(std::string("']' expected, got ") + c); } return std::make_unique(); } @@ -801,8 +802,8 @@ tag_list_tag compound_list_tag::as_tags() { void read_compound_text(std::istream & input, tags::compound_tag & compound, const context & ctxt) { skip_space(input); - char a = cheof(input); - if (a != '{') + char start_char = cheof(input); + if (start_char != '{') throw std::runtime_error("failed to open compound"); for (;;) { tag_id key_type = deduce_tag(input); @@ -822,19 +823,19 @@ void read_compound_text(std::istream & input, tags::compound_tag & compound, con std::string key = tags::read_string(input, ctxt); //std::cout << key << std::endl; skip_space(input); - char a = cheof(input); - if (a != ':') - throw std::runtime_error(std::string("key-value delimiter expected, got ") + a); + char next_char = cheof(input); + if (next_char != ':') + throw std::runtime_error(std::string("key-value delimiter expected, got ") + next_char); tag_id value_type = deduce_tag(input); if (value_type == tag_id::tag_end) throw std::runtime_error(std::string("value expected")); compound.value.emplace(std::move(key), tags::read(value_type, input)); skip_space(input); - a = cheof(input); - if (a == '}') + next_char = cheof(input); + if (next_char == '}') return; - if (a != ',' && a != ';') - throw std::runtime_error(std::string("next tag or end expected, got ") + a); + if (next_char != ',' && next_char != ';') + throw std::runtime_error(std::string("next tag or end expected, got ") + next_char); } } diff --git a/LiteLoader/Lib/third-party/nbt-cpp/nbt_internal.hpp b/LiteLoader/third-party/src/nbt-cpp/nbt_internal.hpp similarity index 98% rename from LiteLoader/Lib/third-party/nbt-cpp/nbt_internal.hpp rename to LiteLoader/third-party/src/nbt-cpp/nbt_internal.hpp index b708761..f7568ad 100644 --- a/LiteLoader/Lib/third-party/nbt-cpp/nbt_internal.hpp +++ b/LiteLoader/third-party/src/nbt-cpp/nbt_internal.hpp @@ -1,7 +1,7 @@ #ifndef NBT_INTERNAL_HEAD_BFGUDYHGVWCEARSTYJGHI #define NBT_INTERNAL_HEAD_BFGUDYHGVWCEARSTYJGHI -#include "../../../Header/third-party/nbt-cpp/nbt.hpp" +#include namespace nbt { diff --git a/ParticleAPI-1.16.40 b/ParticleAPI-1.16.40 new file mode 160000 index 0000000..bb5eec0 --- /dev/null +++ b/ParticleAPI-1.16.40 @@ -0,0 +1 @@ +Subproject commit bb5eec05040a634f5a61fdfcea703fcc33954143 diff --git a/PermissionAPI-1.16.40 b/PermissionAPI-1.16.40 new file mode 160000 index 0000000..15e2c6d --- /dev/null +++ b/PermissionAPI-1.16.40 @@ -0,0 +1 @@ +Subproject commit 15e2c6d7149054f36f103de0a86d58e4548a506f diff --git a/PreLoader/CMakeLists.txt b/PreLoader/CMakeLists.txt deleted file mode 100644 index 033a2fd..0000000 --- a/PreLoader/CMakeLists.txt +++ /dev/null @@ -1,29 +0,0 @@ -cmake_minimum_required(VERSION 3.21) -project(LLPreLoader) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_BUILD_TYPE Release) -SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/x64/) - -add_definitions(-D"NDEBUG" -D"_WINDOWS" -D"_USRDLL" -D"_WINDLL" -D"_UNICODE" -D"UNICODE") - -include_directories(${LiteLoader_SOURCE_DIR}/Header/) -include_directories(${LiteLoader_SOURCE_DIR}/Header/third-party) - -add_compile_options( - /permissive- /GS /GL /W0 /Gy /Zc:wchar_t /Zi /Gm- /O2 /sdl /Zc:inline /fp:precise - /errorReport:prompt /WX- /Zc:forScope /Gd /Oi /MD /FC /EHsc /nologo /diagnostics:column -) - -add_link_options( - /MANIFEST /LTCG:incremental /NXCOMPAT /DEBUG /DLL /MACHINE:X64 /OPT:REF /INCREMENTAL:NO - /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 -) - -link_directories(${CMAKE_SOURCE_DIR}/x64/Release/) - -aux_source_directory(../LiteLoader/Lib/third-party/rawpdb DIR_LIB_SRCS) -add_library(LLPreLoader SHARED dllmain.cpp SymDB.cpp PreLoader.cpp Utils.cpp ${DIR_LIB_SRCS}) -target_link_libraries(LLPreLoader SymDBHelper - "${CMAKE_SOURCE_DIR}/LiteLoader/Lib/third-party/detours/detours.lib" - "${CMAKE_SOURCE_DIR}/LiteLoader/Lib/Demangler.lib") diff --git a/RELEASE/plugins/LLMoney.dll b/RELEASE/plugins/LLMoney.dll deleted file mode 100644 index ad48a3a4c6682d6132c0d201f50aa267ef8352ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363520 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 z 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 diff --git a/RELEASE/plugins/LiteLoader/ParticleAPI.dll b/RELEASE/plugins/LiteLoader/ParticleAPI.dll deleted file mode 100644 index 94adf7d17da4aace8934dd1baca439c939ede524..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54784 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

Tl@2`1R^0?mlwe(Jk8R5)y&Lg<7~vBT zj6hp<#)mSlK#TSdvHlNVf(Ee4XW<^llFF7!$mR5`b%1i zMnTfz)qRZI1jGx$+;~=8=EoU5q$${%Kph{3Aa2AqRgby3Hg1 zh+BlbM*gGU>{zQY^8^1%o{=c zQN%lZY3rFUgM}WKFH_}R@ueO3jsTzG%RMRb++*_%x}Y+f@v;qB0q6?vk5fh zBTn-s@{#nh<;{9co8gD|X?U|?y5CA0A-110 zBM;f<;HUJ7iJ&2jINl*?2P4m9(7owQwSFu`+-?MYS7_ub;G6mGY8~L62*w|OxAw>P zes`5=b}<0Ae0TLL?)=DkoA`54w%nMFYB}(X*N@5@Y}<^wyxhnmt~veA$}c#S}z77pFqN7-*qI<>A$s2twsFa zGL8PR9k{~Kf8Yb08EJEEYe6(L(;Ge%&d}%df~9C`92Q7()AEin;@bgS6OoR-`gX9C z%_1}(0=xil)h?x`S)^S~ATA$qs$EKBbR^R*)RXoh&AZg=TI^tforC)i;R6NOUIaNm z7%ULFh9sb?3~BZtD7p$9x>f_W8$r=k5JT5Sz;_`ix(d3`McRxV@;%VS{`6b$2)D7p zld-y$>lyk(?Zwml!Gx~=)IDNff{$)KAk-15Z?aFByTquIQeUMmOZ|{C!TZH1?}_dh zqdZgIsnbz5wjyvZEB+gi>`UY~eXB}AFYh4p-m%Iy;(cU$fQw^L{C%tB0q+jm4Z6+U zVZ4V>-5oZ5!Z^U`TNQ%bwMZJZrsF+fnSgQKHs9y2+XzQ8i)}aG=e8aFlere-8V>29 zYfsL4RK^SU{N3TW_lsp7cH>vYy}zX2pMf4ve1n8;m7cy|*Zb7{)+JY{H9gNw@DE}v ze+SP|_m8GckXT z^zkR$yANB$@duqY8GlrprpBMOvlH{@cprb>AAiOt=Z|XB)cBJ(CozA5d41#C`|3Xv zlJiHkY47-Rxwa|q|FGiE^LU(%F_KUJM$2jp%DL#S(@#T7O?6XwbyHKHIhh|+pe~lo zKCIgC5@)=Nw-0{@_tnJPhpm2uogHHz9)&&>neVO}+pczPEqmu;j|y>m-Pm@utQ+0? z&5s~HZ=P!(YrERjwHeonyk4U_ro?ZTPfa*@mAGn$|e$ z2bM|PdBEe?hJ)_<(yVz%>u#iRY{P$5YpDXjb|Dzs@L$2t?rg)$rTp$~!#7KsB3Z-D z1n!*(j&1nuSlZYQq;2)puIxu&bY*`J^0p$**t1@Yll{Yp4`1cr4@F;eWuI{^$ZKRj z`clubKVE2eW&cKbSF)dnavFip*tx!&qU=xh;HK%R3(2+&YD-{s9V&@dBmnm3XC33#&?X-bgB@Fw!Ro_VuCXma~aRNfVD zjsagW@M+#ej-<$&#U9+`&2_r|#x`uq>W(+HlE>wZ$;0+4SqR^8(5HD5c{2sxGzwmq zH!C!4-SKA2B9Co&qiY*31r0@r)3)Jfy|&>x#2rE~w&AaWZ^kyf4)9$F#y0%j1h!$O zImmRdkBM#gtM2^Bxt;h6QMR@XKWl8mhXJ1mxV8;HYmAN5ODw<(5VURh+4wpWFYDBa zG>&Z;>j7hbG`8Vl#CISV+wdmHM^Colhh)pNXK_WuBu$8CngUN0G+ZhR0~z z@FKvDASm1Ln54GhMx;56py(Ro(6tG$LkNnlF)?&)1^gg_qH9bSx=5el4Q<2m{w?X& zomntF$~vVdn=#D3`mgskW9qm6>NexEWlhEV+FYA4D;jSz#w7g@*^Fd(u zN9JcY{@S?rr}ewB86We+(`LL-+l*UoP;2(y+l>1b?ap_0{n&`Jn-p)ne#ZgmgvGL_={e(JwkYux-|~iK0-qkvEHSp~QKD`c2+2{C44{okQAD4I6 zeq+k&ZXNop^iYBq_gpn{u(FQU1o8fj=Ag9h>r7?wXnHNuH6my)~}vd;N{W$h!w| z#ts(mZ(M}<78ievzcJ%>Bd?MD-uN5)gmzc!u>@pnDA$(QfQyUQ0- zR(E{)vE*_2V)C%9DnQ>N&}aCPiofwM1h31NpK00*FT78~mtdWTFCKs6I?!Mt&hRCX zzwtVxIdPMRH@)yTZWfx{KJ$dUE8c7YzT?1Wc$2EX@ogU5E-;%Ic0ccS|0Z zHzp6;>jdaK2Ko$dQt>ywU+}uT`M9Rd%M~DOb2RC^$O4r};#+20^Zwe)k%Nvu2?X?N? zZ2*0mH!1lWUn+QA-V|xt3_rY2!yBu?V^j9{8+U+)4fT#qImX|3C*lebXKcz|f8zs) z%R!v6DJSwbW}1meuj2jf((VhoEiB&ln>m^^!8c*CJ?}@-yDL@;CJq z*69S&I5y>nxJJ1?3v9HEO?e~Yk0ThHa&P>NtJE6A?=6$%agHB__H}H^ZEks9n=;dN zBAv3`CigeaN16@fLxf*87jfKNnFbp7}F8&i+{SGOJWo74Xcf8$v)Ubwd5 zO>yskh#+#GmV{CY{wly(ty0IPi@g^B>U_4H?=kk7R z#|Jhj-n78)a3pj+KGR@3-g*~(q7vAS8!MZdtNZ+m)oi2o^Xu>BS+B;1X0#vII=p*A zwO_uxFU0!+Y0nb5TRo9K@>NcrMGk-C{gHRwOP<8qj^7p7NbyG=1sq(vtV4gxTX!E^7gn?&g<{<;O2VsWqEh)G^VWX)|z!GQZjGN2)AWrp?H__i1>xCF1a`a80i3UzrUWIuU1h zmYcx8vH)p1kj9KnYtHX^Z2IXvv3|*ELZjkM8Su3OpW#hGio7}K!A;)$Lf&28n6kR# z&7UQY%Nvu2?bQMLHiJIHo5?Bg=9u7hdGora&C3(>+wi8O&Ed_Iwx8Q+AJYA4D`+T2 zoaRm2&)J_cRDWXLJ%}$tyy-J-f9$!>JSz0KedaszuK02U_zHnf^QGO z@AjFQpy2@G3}4nK=rdJFvma?ppJ{uv=RPw_XmaQCmGZ85vkv(70iWSbdy2d%_26co znXBt>cw@@yjyE?*9+x*J58G=$=-UhW3~xS{0&l7WugjZCO`De|=C|QZ>&HC2@!T19 z2sE@H&hW;2XBhKZYjIWu@eW^laW7bZp~vORBzaeS2?Jjp@EN|OdM{X(2RHdLP}kk? z#gx?@U(S>~E?-O@*0&M#)qp<3msIWrJ6G_!d^uawW_aO!8op%T?eJwv^c_2gV;S$? zSq&O85vTbQeMiQ!K!M!9lQvLv>rF^wBaJhj;fmg#bb#&aIM2A_+3)0C@n#3`g@DiS zhM#{*MF-v~xZLsV>+*_ z%x}Y+El9(=Ezk^w(XYAdmK@N~i8#ZXugQ3(&QUV&M8tO>-t?L1?w-f8R-wo3Gt6)H z!peZJ9q*biQJkwxi7$70aI?>>mUovgrmXJxvR?AId@*@g-wx2X8S$Dg(fuj#)j&jew%mEFBh*M`@qSL)+UuqC{5JB%#M(2TV=IqN_z;`0(eah$!3C_MS z%>e|nPZ^!(uEV&FBL0aeTkTUur<=1chX5}CTBr<;v0?o*yXTt4E|zE^a*si%1o zFYDBSG-jVNii>pO_bH1I-;SX7DWm!5yWO3A;hpq975mJrpec(_v(DWMTza2!a1?je znDWd%rAfD8z275(~ z`==*pf2LWCVA`K}<7sEv>yhR$92@~nr;;W^JNI-=dPDzqq}BDzitKgM#@Dm;KBu1J zB2Vc1o{)DA;7&cCSM}Tn_)Ne}J)if~^9bTbAwYWt#glc%74J*zTWta?m3yyf)AinaHBaUPcVGEaaqqv3dmk(Mu$#U34eUQ=wKUn$Sy*I1)f@Jr~^ldC8+w!4pGSQw7Wka=R z@9vZ_`*GPD6Z2+HA8+!TTdMG3@VdH&rM!^6=j+Upoq-~6RC}hzo2?Hg=FOr$-lWW% z@!j+r)t;&GX3i%P^QNkgH!1Um^JcO!O|@rgyg9rnF>f0Cc#|@3CU(Oc)t;&GX6<8% zd9%8YH!1VxqHcJj+A}rYgf}PV&AL9`q|BR1-S9@WXKK9J@u|eT+1SUMlzDS;H@s2p z**o5tdl}a~qj=Ma#|Yr&b1@dVN5!udyXs zqvUbz-zE=jS;g(JJA*#6XOzl*UbWzL?cYl@ZM0Fv2ilCuvtuZ$AM8iw%WQ#UFF# zmT^VMYh=GSXKtSp+FjZIg}f`-KLUJ(z-RV;Qay9K-GiI5|DwFRvTw@jPWHbod0g2y zc_{lupTWKd=remishqjpBY0ie|E{JjUhetMvdFUopY`y}bLMs?XxNW9!?XA^w^fMW zhj@oCy*P8*B=op^d0gHVU)BQOUf?r)N%hR_tsdOu%PL)W<6~gT>W(jWNgkIkCJ)CKtjeWJs-ys?Bv#hV?# z7Xm)bo0QMo{@jC`yxA}B?s#U(>W(*uC6CJ+lZU*qq1XmNpXNqM5VXqhr)RpFE==DNnJ>ZP?SD(lJ{8*1xY zio{Dq?59uM#WQDcRY3m1u%A-@S2)gsw|Pj;vz>q(EP4@kP3RSHbt_A^rz|kOakBuU zj$gM8dJ)16;wKouCqV4s{ehGEBlSkcA4Zt1aM;y|qy4s^isiS|)Hd^--{Q5b%Wh>I zPKn7|hVrju-k^Oh>r0$RfG-ztDKlvMPuJzqrpLI6h?|2vcE%YFF2YLzp9^>fKBi!w z5|lWj=kgni^p!Dx^vhF!1*L5GGvSBE@|mBwSvKoL+Soqy*(ydn+jYKAwJUv|-W0yT z535l5K)t8mZ_)1~q|TQ0hGsp;hWU{iVvav;gtSDub-$M6UORAUG){CsNuc&&AmA=Doqc%vre(bBo zIZZcDbv@W7d3c^v<;jN(Ps_R*?{$)=#P8?ipt@pBx&Ij(PS*>U@pQQ-} zF7{RW9M?+T1HPMlX_AjVlnVd(PWebhwOaDbLj0A2_Z{mx>mtcB3uV0^u+wCWYGh(- zsl-v{KP+)Ml0OSnl*;=|E5pi_G6cC*TVGY(DrvHjCn|J3W1WWYC$V2=BVUK)8wEMQ z*#pRB`&Zz9j6RdzKTw)+PR8hrb8u?;)QpjMhU_!b1@}slVl_5ZuTt$-1Nt8l++`Sd zre)QD_6_nr%NMY&weCh6K5nf-+fJ3eAb3x%Tv1+CyS%mqBaFhqG3INM=TzYVzyEzu z-uGJlK<`lNS!oCI8)XaqT_F{YSAjXv-&o;y@ zMVy@*Elyu#+t(qEvZ(m2Iw)I+vPe1EB>Y_rnl2W4D}ZA+LX|2zCtB>%TMZa#WLZqN z6=kswta9{G6a;*X+k?1##GTH#^g#4yNN{eNizgRw`T+g$0c5b2fLGJA!uWO8$JuvA zN*QcB;@JW`XCS?lFn*BGSO8cjg6!w8LFuwVU zuinn8uWc!*Y^juTD**YMw80!H*UTy2Cuw23?*nellc7;eTukHTCCAtZ@R>i)JaiS? zdI{#CVR$Y>JCerN5Lkz!c>V-+WIfMBV4L29@KhfBqVZ%qQohI&$`Sh?>7Xo<*OXPt z!*T?EmzQIK@mao1+LUYdaRpRp#6KBN_LKQOH7*ji$$_bHkL&n$z&M7@_qk&j=dqCB zRO@Tb8$Z+Y*8Z=nc_V(_I{5b>_!{XtBUJqhP8@L)XK&`spXqtCYL}`%KIvs~7`g<{ zd(nR3WhY_Y#BjQ_wz;;UUQMrEX4mG%>ZQ%)OKYl^-c;RGlq6d7QBA10%EX;K9rV4N zLsgxIpg*ebi%*a`7Wp6X;G#d?WmiV$Qt8w;%F3HESK( z%sX##F5(=i@(z`;i+8I`lDvifJm1?+d1l^Z9?qNRFK64I<>Pq6e&L-XKO}MP99bam zFm+M3 zPy9T26Ywt({0pUhZUXMBogpUyJw=ar( zj&)OKN^SzI4#AA222U>V=y5b0`K5~I9UUyA;#+=e1#xBC{h}A!!T$DX{p`pWM>0N) ze2WoZugVHWr`W-MI^K-KERSi6k#-T%HZX0__N2XUB>7Z__%g&d#^DN#1gCDvn25Rz z41!NQAG{uEGm-Y@xU}{yBkkbrmhgQ$(%4AT6q6>{PY(2iPO)z}RgyY$Kj%`)Knq3E zs->zaJmWlZtH|LkR@gejDz^q89p`GFbyVP2fKO;ElvnYR-)aUPwA8oR#$z-*1Ugzs z2kU)9AS>fs)M-S<^o(;eF36aefg0L_IZ|=1t^$s&2rCWUH`oEvKzwXR#s`6KmBa_4 zp9IoCKRH(Cp})DNc3F$i$+g5wLg!%pZs;EG$bnZL*tYq=e~T&qcdBgGk#VJnYegL9 z^VbZI6X{LFY2<4)^7J%MSAb6Qhv`@Ug=M|C3iEU>Ae^T;FMH?WTLB}jY+tthZ3t`| zw%_dtoSRASYJ@uw?nEFh>>rd{$|GftvP4;7f1_bw+a6H zF$cZqs}T8QTl%cnIY{Mm=b(JamxDQIly#BsC*Z@>tWPAFgH&F34jL(W$NF=9Z#m_~ z&p|m=Z1Z6W=b&>W&Ygo)+V1C|DN<(a98_5C&OtTMLyG?2`=5g@6a4NRG+o~PdJbyt zaSmD`>D@W#A$fmJ&q4PmoP$&u?i}>Eo`@s4qazKe2*i*wLeGY35@b5IBJ9Yp-cR9V63cryn* zJJO6#ERSR7E~Gtxw9Xvlq*Zg!QN-^@yfX*s_(XG1=5CxHMOtSLGPpc*P!ZB>KpJNb zk~Hsc4yqKn>^cYS7r2^(Dp1}b1U&~~_EvKc;p;(%GY2i`ehxZ}^b?WZnS&O@&OwY{ zhj=pwJ=BXi=<`CSI|nJc6VE|x+pWOw%t2ZnI0rFqAL8^J^asP^?&cuMkcIKrnS+KX z`SRxFx}t&uwEp{N%t7oQl-u|@i2aH3eiuTja}dYL_&I2mU)j44{uu3mKO8~ESAf;C z-$Ki3ujkp)h#a{qpIO;lQ>1<_SW($n-qKVFvyXx-scf!YTHf5!R9nAXO*fK|mT;3! ztm5%r;rc*j{;G!Bs_+FWwtPViN-AI4umX0->XUuf-XE&QCfZTN*MiN_7wF0 zU>oqh%J}9Hyp5H$O(&;>r49AXEn(f*EUp0mO_@@?LJYmCj1R0dRrtuMlrzrTzk-d& zXBCw%tgLG;FPJJiDA$2s7MWY-GiymDgUa`bw$v?+l*uN+@yL}HERyAAu$EP~2;Lc4 zTqp7GIZ3w!>1N2j2W>oO;ZAp-b-KW~e&XMdn_U>!VN9oB0qEVz-ZfnEW&5*z{j8f1 zZt-PH`9qgT`SYr8sc)#NX1!))alK0%4U#7fnqEm(0p6+e9>G|%`Gbr9#C?ZoUanu%+W$YLZ5R4YJlbwnRjZ1p4fd$SpDXp?`hb5w71%J)KO<`} zF!Il&8)&7)%-5uMBWR+34C*o9OglJ?^(X{v1A_LSK9ja+u1qKgYK>cdb#?Q~I`WXT zl84`va_2hujb1=}Y{!jzF~6T>S%JuN8N5Fv8wNYJWjo3_j__;5r4O{TBm2mgxmh~^ zJBIKZzzH>D{6|i8bq?ZY{#M}rE%U=p{B__SoThM}KwJyr4lyoh4=^_89Kae8RU0=#;=!xu z-DiDS-WAVup80iEDi3Ycv=KcZX%_lcTAfn2@tP)kA8hp^!+~fOmbPOv&chP74mToY z2PUV70%;j}=~)3kHYNs&4g5ZK7_0o+n(8J{q-f&Ua7H6(dO&FMjs=wGKP#K@W!wxh zb;y(SXMq1|Phpz8KSWtZaPmxF2~%84d0m4ks|;mLmbA2wP0K37xbT>~ZxET)^;h{c zecboRkTmJCUY~>Z4x!$k8X>Y0g7tee?X8q~b-!@=mDRVds;nFD%KT-LpZA!t5BMxa zZ=+bSM&th?YmneB`4QIo!2LLJ`)voe$S>k7#Qj#uTuj^!#GQBr^2@lOn~(iwKjKCq z?sqCKEBZ|(^TzYJ;ZTFNVzVfR$h(cb!^Df(mmrl(BFz=HIBkq3(Bbv7qbfbuh9Ik^d7#iChKy*S}`thZsOQS-{h+h)*;-0 z!1;l9l|75_MFjeDlfRUqtqAnp9*?{e5Y9y4{8tXxa|j$`>5F|4V3bMDr7KX@)A&6J zzbU`hp$^w0aJ=JKN&YNCC`3Hx*bn3PVuTwIZbT?Ys6b%-KaYv?4;XvDgy#~#($2P| z4{yi&mk~HGaBO}8eUJT*a{>F>6PQQXuMXpV-MO$Eg)Qs%_{}-03BNfXaqbyxrDcr~ zokRRH$MM`Fb$L82w)uRY^4H+L&IZ7!C(ZY{dJ^Gbz^VJp_qnUb3SBt*x7IWdaWrk7w zWA^LD$-F>WMelQDb+C0=);x@7lw&1>y*u-3Ww@X^eE3t274#ZkNcEe=I9@kJpVf$w9D|hnLoO>%T&WPC%j@QJ|8`! zp{}8+w6d3H{ox zkaQD$55hJSCOi$Q~krNM|{8bWlG$&adBDJW{DfBZ6qeo>DGM$C!J?6 z?P?#PUmfiu6Pmb|;~6_;V{!AJZ`ETb;bC8n^?P52MLl~h#`PlyaV8M@7uLNMP_6T2 z30Wgc$Pky1>G;-3Fny?<4n37+FGpKrZgJL-Tw}0}J|p$M7AvVVYZBUEWKRv|p)ScgQqJJ(GcCBIr{Zuk{^f6+G2jF2^5dgSBECeO9e7Qhc7e35Z} z+llk8ak$1}`|kd=-+Ef%m;uoSU30UJBJVE1J5_!M9s+D9!sp`PVZe4Ed_E3d2-tRn zFL?0NPq7rRZ3tq+3I@)AZ6YgUYQ`w+eIsxM84@0V?T{5^%VHZY@Ih~vHrU|bfcEm% z$NQUYz`AYzjo(##J!3**ov~E5KQK0KE_25_b0}|X7Xp` z8+?k&7X*AY!fnv^#SZkAf`_9Ak6Y?BE`F2|5u&I}+ z(+iEu$pkBILa; zsQQeSw=TAzh0<4*KPP=NZ;|)&vA=k#HOu;rS5_UHkQo!_O4?JTz4!lr_Pzzas_IJr z+YrJmXwmt4RZ+k}udI5Yz*SP~dJ#w5K0C1nt>M-bshj?sdAjVwjqTBrMvd*oz|~gZ!;J0r;~blM0C}Jj@NNV%woRPDC!c0) zxBL?8e8hRgxvp)Q$9s1JMjy_0l+%nf_b^S!Zd(TCn1qePVJzO-gUQ=U7QtV9X~XAh zXNkXTq336NUuawaTF^(V{@xK-n$Uee%5OyZE2Mm9Jlo)Jr{UR7q!FI&*S?0PPqAmGxt)?yeMn4Me9P?LderP|+|6p$m zVex(x`cQ7d-1bF0ALMTY%5Bb##y9dMz}5psxlI{O|Hyj8laJ^pp?tm<_`DC{iwNWm z$^^<2;&~;)lSo6}x*xwEKzI;={K2ui3gKT69zq~Zzl5+b-?DxOd{fT;9^nV5kMe#s z;xb2|O!!hLODWG!au2&wz@dXR-K`WzZ%5=bm@ER_~RI?pO4r&4g*m;&aVP%Zgshc|KZw?xj=9 z%BmX{%$+=cUTa;`JnXObU>D4rGv8b7uANmk`?|PT?6Ow2UHimD+fLOn6!L1Ktnsdv zI>!Y9&<7~uy$nil{(Lc?>B{Bc!i0h;GSwNqtmrz@>wIYLXKDKj-(Qpb`>ko%N85$)H0D;~ zRhNT}fvOaiK|H=L>HlbLLyy?k{pjcR-vzB-V15HG?JH3``$rrxZXe=yGY)!wbe)p} z634_hqW|>cv*&Z1!eg8hD+Is$k*^+cdd(~*&iOs!5cHba(b0RIyb6@dItu}xiD1^v zq7OJ3j5GMB{lonG5M=EPHb#eD7>|VQ@rPR@Ck|)_rU@RWW4}0QqjZ?j0-KC_&XIOB zqWrxG=5Dd*GAHbB2iwYa%tRlh9U=Q#Xx5=Lw3YZzwmwfA_>Y4Bi=oJ&)}_7*zMO#d{rI&fnELuptv$6v zXM##0IurFIv!=wgBhrC%B8^GQw-ELs{1*cG;@1doBK#bIJoFoc-y(2qa$K-&nGiZz z2>me#I5r*p=D6ed>PI*N^_f=%7u09YIFk+J`VRFO$`!vpvluYS4d^qj+~E4mP5PWp z{vVRhU)6tA=X5;bcEkcNP8us5v&~8VTzP!GmdAVkq}ta2e&7NYpASPGTeIWjadqp0 z_!eF|zquh^9LuD%5Pr#q`r4LOBfKT0E1NHcY>W51srrr+8B71xaZ>*`gg5E8+9B`v zTeG!aWf!Co{BSPLssB^2SLLXCpy-3km3(J|pXrms`4M^lHAYqib|Fj@J}&@`s@@G+ zU#IL0IgwnaB!jkg(K|Tz2KZ^SA92F)Cm9)Df;f)9N~EnoT5j5jWZNV0 z36}5(G>2oO1##tw8v_7j*9asL_;SEY0lydeFmmAIS7}n#TEKGwzYlQOa$~ZlA}(Fo zlbaEjjkqr|E@+QIOb9LwDerZ}Ifz>+aZczo!2RQt?PS>{NHY@SBGQ&F)rRcYbpAY? zTZo_T_kz|V3P1Mc_{dSvIXc5WmU9Yr?$`zVF_ykIwJ%~`-P{IcTaqTf7o4l}x7=Gb zL*DbzX3oPNZHHmbXt2~=OdO^A<|wA+92J$kzqBf?3$5>h14#ENZW$B6FO%imAF^A6 zB`xPC!jKt%ivD}8X6q>H2MCw5grafb%0}{#hn%;l6`O(m(o!?iW}i zsF99&=}hZtJX!Za)Vm2~>v_~In{hRN#Q9MKcOJdp$*V@Y7}o;$Is|tfeaOjRoZ&O_ z81q-4Y&Cy5;pnog3@{mX6xmMrT>Tq)lFetPFH5D}HK5g$9{aKZ^_8POGq-V0^|#6N zX``=A4R#Kv)nKwVkhbLQCDMi}!7q9HsCvrLOW~sl3vDY=-UeU27$z_deHzZS)T3ZSX)B<@t5YVH+^F!KRqkJil>n-Mo2aWom!#wF_~uQ|2k` zfmX)-^$oM}B@*@fV{QU2nl*oZb5U(At`QkuQnYB^!lrBHHPq)DK>hqhvzql9p1WpN z*N9aHPq43S0f-Qm1i(IFku6Rk=fLv?pdY`yT6Rm}T2>j01T3Nvptn-5vIC-!1k$VraoFRc@A!k2}@)kgP z-C~WiegO^RJ>2m^IkXq;8G0yaeH&v7GO_;%F(=QlX@6}00P8+~#u^OcBKAbAqYceE z2^MD%TWXJS(t{WeQU=mBBHi2QFDC5IQMO{qK;-GAr{afId)e%|1vl~+Wf^^)Inp++ zL*i@(^423%VEj6Eoh!3U*;^6!1?cxE`&yJ8GGz}E?YVa9jkWc>2EZ+Qn3NrovYU~& z8{ux`cS7^rvdx^wKIWnSPqU9U`VT2=Lq@P&+mY`O!u683Nb(wZF7n(!I4=B)m#xHU zDdMxyAL1hVH6@2BcNy1$xF;Y?sK-VBsPwCHz?u={9?@eI+>~qbt@&%vI*E8lcP@yo zS3LG()Pc1xXwa(v)MI8y|Eom@qW5p|4C=6HwV|#WX-O#_db6h&x!}glEl_*2su{t*TUBwGrKSEn4 z&tEjJ)$js!xF%_z=POry8y4QmM;%=#%iOQJIqO7f$wQ5fJPTz~|FE%{)ZoF)+09b! z80?M65njY}!8DU@Y;9QRum46#r_S!tSFh^tz^r=1cJa_UMf2!;m{ZJU91TR5u` zCW~BE10fK}a3aHmM;eiCDAJwIbP;ECTdotq_D7+4DxTXaZBu8mN%LRIdsyh*h4S)H zp60o>T*Y&Fku)bV2IU@(_trI(mI$-YncPl;iS<;T7{V zd{~Y4KSlaFPQSJ}9{!dOQT#<6ojh4++txF}2X@=da8~vUImH9)abSz|42Yg^KTT84 zt7h*8`~V{NsUMG%aZ#(^%{)37ej(TZXhQ+Ye-FfnZ$uhQ?P4MT)aH=+%Pg0^)gb?!{N?JJl} z)16GXhHwT3@Wlvq*kg>oX10CD!_!wWR}iNhFHE-yp^Rl_ z@l4?BcEBcpmzLp4{85&e{p0J=3Ca)uK60~%obvBz1nL&-O9|3ZhH!3v5@9*u{ZSru zhl>!O3ErWOG7;f%#NPoJ=VQvl@yN&h=ad;M2t(W@2zMbYNB9NuT#9s;;`e2Ek_Siw z(s2{ssee(=q8@Sw^52PY7Xoz;>KW9n&PEv%5I9CY1dOtsItIrU`MSU5(9LG8f=&a{ zyYDUfop#ZD`7L|P$5VYG?7xJ@7Vj21gZT+N(SwaQu)!Yebi#1HE9U}{4a|Ew^5x|0 z2b|;6*jTc69gU$LYrdn(J?Cl;Q+EN=r+Km7bG|LjX3+_2tZPn=|L*8Nl~vJaaLrHs zK~Ef1Jt9A~;kok6kXgOidti8OgOi-+HudpbAJ6rY=T7~I zJXbIvInQnFm|>f)=QqdQm+Ab~e}{`1N6=fZtne<|+u z#q}UJ;#T0g>l&)-7QnYG8|Kt*9Z6GGHgR?K< z`l#y{s+HS@o2j!Z+gsJI(!xBEv{y)(wJ~YwyYZ)mIUs4Df!+>#F(xg~xck%Q>$I(S z`qQ#~v~PHxZ5s0Mx5}r^fxH2oK0bZ1FFk+z)BkK_V){~Fdj2-)Q_oRqJ%{=_aYy_b z9iC@Li6i>huvgOUGvUMs@fHuy2b?&HhqJH5M?9Q;V!z|zY&-kshtpn|rTJ^$QGYxB zx@^%b&5sM^9+Eyj^Z15i>7S9$uGV~3J@{|OXX-+l8hlW;PnPw`GWb3;j}=W-JT?Hr zmU55Jbu01X+2nUU&cPBb_o*s@+*+>Ie<#2{Jwf&_2CRCS@3x=_RmL3naMfLxXGGtu=u$q2q&ulSb!C8-6rkaQa17Aae}h>fZ55lKuzwDb@meBUb%* zE(WeKU0;iHg>`+VmGz-@G&aIjIsAsN+NY8)`O2}6>EzHD$%BdThpc-*IBZp0H(+PT ze_QK=&)FwigF`1T01~5P8a)UFzb5G;VKVqE&u}4FlF}q0m zFe-EvaHZ0ib}fI&g~<|kST1fES1fgs#x+vs_i^vL!pk&yAMSi7aIQT# zJkh=~{W+UBrGIz44C;F|QWNPqn}VOzLAMB!*LaOCM3s!svY zk-ETcY}cdYF>6sv3+@aVfxPq^KPz=Toffu!8F)J|FR<9QgHh~-=tQ0DKie~2`d=1m zLI24QJU{h<=I)=h&B>{fDGoYGq}NkvpeeS;l=?>gKpBi9v)qvxcbDJqp+VDf!+Hj7JM*S~pwSxSe!N z;90?WHS$sJDcsdJ%$q+KvVz#NEI%$r2w(gzZ6I=uv>pw<8H`wO2j>Rn;ijTnLl@b* z(jw9p!y}hVTb=+PQ0{qjj|eXMN3OFzw7(f@vlfRtr5$Lvv|}Xd1?{nUr)f^pY?wcI z*%>I7p9pMA=p2ExHku2-}h{r$jZ4DV?ly`$gCaQfU{N{%m|LUx; z;o$# z$JSoE3}cIQ=eJhK4?mVMv0cU$#}B`?Lii(6?#Y6unJ^OB$JHVaa0k|+1{rJQS^k|R z_zen-_8I^FOYp`$1C#Mx5;Y!f5ZHCFIgiG<=?f)}d`v!Tk+^2r@tZGu;m^$(zbIf; zAnsQZSJ?l?$az+6x{^&Tuzm352H9uAvB|cCWIh;=HWvyFxTZTz+Lj~qB+r&fn$JTX zMsS||c*r^0p8;#8q~q99@~}qUzYl4+CNLE9Zaj@yC-JmU(*4ms4e3}`9_XyfItutO za>b)F(~!=?r5!_%M%_WK+I1|}S=2rw#UCC&G0!cpaI6Jo9l8ekZ^!YrH7Or!c!TY> z`>+x}Flz?Z{p_rhu_lch_H61MinkXDKFAXf3og@K{Cr#9PZazR54+^O#r_;5#4Xl- z%q^x5vzp+PsjmeCvJa%`2A!8{i@YP9ZJLsATk8wZraZgtLTpP)w==Mvx_@RQ%g)Bd zT5MQ<8+~EhD)2Nq(O2>NLMgAxIu+%A6)~zUC#Kb7J^lm8tJ5Jvw&Fg=0l`e`g zFnGPyVV`G*($b~8MJNOFrnHavx>(A~^3lQT1M$v2%#buC;Kv~Tsr@qS$5!;?2Uy3m zqhG~laJ8?h8nAAJX934rZ}h9^j05K7I&dT4YY?8(agTBJ6>+9a#&1UGX1wi$qUbQ= zOyHU`>n$H{>fPZ$)JoagkgpVQQ|}IxJxKPsOwHMixIDy}df!A`8sbd7j4wgFt~V{Z zBYC|WO}%aX+;&{CWgaZyPoXn7*2}vA;zlbbseK zb|Gj+Ty8?XLcn#sb672PSjO!@Tsq=(y*DB*%l~aP#up&o)JuKRUoXpGy=#!>dD0?c zx9`O!l@b)fy=29JuSVE{IH#oj9j2dx_f-flDB8BagG&34<{W|V^#HyS;pfB26VB-N zcVg>f-DYf56@af;M#yfz0t}=+UQvM0SMWmugR@S`T8Oc7YC2_&;$`g8!!|vRH_FM| zx;g&I&l7X5!+X2D*I2ebPt=6*+a<6j%mHPhJ6`9)DuctIv$bKQth1ulRTxX(4z$X+ zQ8Gg5hMY^Ek}`O&DD`fy%;DA;-#Am>#G(xRlBA!CI+grWZRiSTVITdg)>YQJz^&Hz zg4-cWa3%q`>K=)G7x}<%xV?+`A&v>J1b%i29_{w;0h#^qn>gNz^c9HHIL>Q-fpD{r zXI{e%wX^G5>Si~!-l${~<^BuOrlX`ylxs>K*&i4S9dn6QXQkmwRpSEB#P9~s*2@?i zrFjE;1>1vJ7vs=+0h%++ah#Dxrovtmx==?rR_eM$zZ>0vH=Hvi)VIs31=bPBx2mi!fzzJ0o|QQAuoriR#JvlzrJ)6OEDG+adn}YPxCcw^ zt1|gU;!X)uCiCg>CHct1pObu7Nj}cuD&LM!Kk)Bf>sIT7fa2c@;4?Z}^KaVHYQw*T z9|BzS@6si}Ud~C1e>(s_h@k0^zZ80u;SKOnQvO{g?HPh}N<9?P#x&X(fO+A{d#rbbBJ-jMrnORv19?vtBcMBwbtSj$K`Vpuro>$20pOf@gLK>=X z`Kk2hW%k3DCLgng+EYW129AjgvC1Pku$W#8>`ng+?1rg1i-FV4g@$)JT;3tP76Ox_Iy?&=?+QrXHq}`iR-$211>GD%~uZ1pOEOSsJ+OS_>1vqP$ZnxPV+B?%O zvPPzlwC+jolr*H1m!=4q+#Y1Q7t`7#jYl^ncWJ-;r<8e>$WPiWWn$~R0k6aM;2Frf zIIY8~MEPD`Pfp}WTJGsoa>CR-9CN9u+uz1yeDHzPUoBc*1@(a8r1Q zwK|+*eKY)8pi1*VDQMX}M)N?Z11IG5K0?5&K?}_Tw+#aiWMSXC%zsEf1#y}Oa&Hse z6W{^ER^f`EvR;8V7y_q)5%77=LEd9Qixls0KLQiTfvaJ`D z-gDc`tW$VI5iQFY!f~qf2Jaqf&S?!&Z-dBH&S_6<<+$b@TevqJeHe=JeoOlx)5*E* zVb#BNfad}J+z7z4J$N_ZxqyG)2d6!v_h!fJTc_-QSn7`5|H^U4dRtJA$iFeS%@_HH z_htkw|8AR)UiH`bE&;p|LF0SqZMbQgbn*wI(^a4B%D>x>&T7I4Is+vIBM^hxa&b0Q zIz4a3j~(i?V+B976_q_QQr_nPV?{C-9R=)F2<)7|5SbU}Tf+nW;3rXYri$B{HU!_9 zydSpD33BKC9BW+gL%RdJu74aEX-!D;j{!A)DEG!lxoUr|=y~#fO2T-dJ~cz)a-~h= zC)1{(*14EhRh#0+2<7$^$#=Q*k1|^2y8(7CVUUTy^Nz7bCf;6Q#slF~fLlEtZf^iq z&3w8O>8lWDWa8~DJ?s7jVP-2EG~aY`_ig6Mi_}k4S$Kd7t$*qa4lq zJK49PcyB~7yuZ`O`^A9QBe=Z3Gm-ZVe)b@p);E@22z_HznzEr<0pE=vb>g3DbAs zeHVhRbJ-=RGYjj{#LZg3Uq{e&9<%I{#5&7}L&&2&>g z7z$rxT^1f`JqsTr?IHT3y)=cA=ABT7#3!4V-jec$OZoJrn!LlUQ3>V8k2mTjKa%|C zyK|Dt|NkPHIJ^9F>(Rht!6BF(bF5zkUkfY_E4^eda9;zwicJ<;)@{Zh;kyCXV{qAT zNHZ-XrxT8#X_mVTc5hEQ?K{%8Y-t;1i1N#ZA{SW0L-&Tl*7nfZ*1+&E>ujtz%?roQ zM~3GXm)O=XhSP?2j=lW}r);ECRxts*u@`M=Mci(Qvu}Sw-#NAjd>M&koeWmVjfCt$ zkqm5%$CWGT*y|s}S%xsKq2!oWbBbDXA^mCBZIm(P1gIli;L;*BF1>QpnhDFHoPAD@ zO}=w&V1v955LrRFyF=b@gSK>`=)Y=S_3S75Hs6sn^c|~psb}Q97WRPhKZUYag+51lus)$fWVE zOu7R;GFK+K+H^20(WLDs_=fVROx~x1dSgY;qYi!S zODyC4@D(^!dRgE!>zjd0>kz_8!7;&yLT%P;$R*k>luNN`3uDqg2pPq+o{UnwME;#1 z_0~u^TtD*485Qu?_e-1%O$+D7mE-Z#=cOEal@vdD<^00BA}}hZJ*Mr+WZsohjwka} zIbVphTi>?M37l_DgUqAHzXLMwI4$#*fH$f@Hzo7#aBVTdcLT0@>W-UyGH(ju2u9}J z(cUvpwM*Nw#ivc4Qf+%XTwqzDG|Vc5{QGR2{4>6(J!g2n zsm@2TE~IZtKB!|W-yCHJeN&VZlwt3QfBVWb%*Hq?r{tK2pQEfb&>EBB$cz>B&GUY%ij{s;VZ1dZ2Woi8WO z|3>~#FLiZ}J08yB@#9E|)QS8xh?6=??s%N(LwK)7&~@JNI8qxQM;_o)5OkfR?|3|Q zo!Mu4b^bPMuGDGplP>!YzzAR#~H?Fz~NR^Vt^J6HOgYF8QBIsiJDT02s9o7)CyFY~ubA5KI{uCb@e zKQ$*8^x6noybM}6Ii0s~?jX++zTLpHIv4ukdjQ|Y^r1Uj2xl;3pu60*-WV=A(11IC z<6Ms8U9bo7Jt^ebjJW@lIQ!1uV8QKjC`!Qy4$RUmSCG{z3k*n4{#7~;z6{$?s}^+u z=UhWu`hfJ!k-kz7ReOQzFgu-rG_gK9=E3x8?UOv}Of~%>D$i%&v7D4Jk5DiAgQUMy z>ZCqV^+V2GgMDc|f6Xw7Q)?2j?HPkM8ec^0IxFShQIanmX{P3+pM~``;76@J+$A<2 zaZ30mz_rZ3i!OAt_D})%Mg%?H^6o0`S>_i@ot_?{)`Rb{)2z3GN84A&*qVO2ZkXWG zHRrC&od#TcEp*+A`qv{))Ag>)LD$bHy7EG%L7J}OU+symb<#G)uf(Hj+XMJE^@qV? z``nbY{fy)rB6bOBtMdJ;eKu^0Ow6xEm|xEczGjWGt9|tId<|Di{#xND(%P%{GT%D2 zNAE64ug*9pwzK50G`~&qDw^*G?uvmsp?TU}GL}el!q)+AX#Ovtx$!TQ0KOJM(>(vK zwLQ~(t;P>!6X$u4=AVl>gX^dF&~vcHIUM5{RWC2c{{sdI{?!~lTdrl`*dia7%YFgn z`=%{o_L9(k-iWs5p{zo;EN@OQGGn=0mwk6BE6i5D_+)jJzQS=>Dzsud*2uqr z(TTMKl-23gmwk7sS0Be2=bp8Q|5HBK`0gI#?{o1)m&ZfPpLBwm&a`yiEwB#hix4L~ z9&uD$7B90L2==}nV(X-&>!LVzYwZ%;oF+1ucYk%u`&3*Ta+-C$^;u}YMm~7<(6=Pb z#UguX4~3+U!+gB!>8Vdk+KXH{WzwdSJG6KHL-Hsd+={+!tT4Lfa@W2lybyiXJh*%> z=wj^aO-NsWIL(8(%lG%pgZrgU@7@m8&fElfV|=?UC|~iPz5GtpJ#e6dZ=SK9sW~Nx zYevvKHE{Wz9*qr8Ig?#lrrmvq6YS?)p2@odT9Gduaavy8&7=KcI7PFv;5+tBL#gJG zyMz{MU5B#9vBm*lz3l`ksKTF~s;1e$Vw`=X?;mh_Y_{`9Hn%5nH@$*1Vr zg?=udWag8**BCx0JcRyhy53D)*UTqfNN*v|%qMs6=$WoNq)z1{rfgAdeF!>AYXWV} z_$xpiYW&?JwvB<8d+=Je*T8E$xX4KI0LSr;O56G&^^mF+E1d8J!W+|(c01rd^1;ay zEr4$W{1w14JxyM*(g|0BpBUGPxUGmALf=2OTdeq+6FwbrqeZu-($tMfv;mT zkO~*$_H?&L6>0J+<(0YzlD?9!$U9}J+5`K#ysJA2xd-g$@~-ybDf#E!L8Ih1d^D0~ ztaSoPX8XI*#?5G>zV~CrW^82|>SU+&bk_{q_p+1~lJ>BDTjkwOpdIPKU~oU>JdOL$ z+ymTC7u@ee8>#>o+-o@7w-4}2z%}kKxaZ4G_(F~Q(7D(@fjEu(@%L~VqYYaD7u;(&ao-4dH{dSr4|uqbB5pI{ z4DMH?dAMJVxJ`&Nd_UwP;(mzmk;nHzdG~NXLEb&wSIRqe`qa1|ENML4Z$cY4qK$^{ zxrMK{d_Pvo@^C*!-h0M<`^Qy3u0C5KQ+?e=LWKO;G#lwBI@11;qhrD~ZUm@@G-KEBT zouu(_UxGFkqm2glb3X#^7fV?l?ia~>YTTcSyJ2YiZ-?w=cvV0D4Nuydd@>Nuz~4N( zSd8h+{6P)Wf7zGN5AY`Lq8yJW+y7IP@$bk(o0fXPZUpYHwJ-A9H^keHQeG zkk;G-$a!=Jp06SN2f~|pr{2*>eCucF<>DQPRh(GU>lM_W8%uB?1XJ>f+ zvlH-8gTUo{3}Ib>@%+lPfI7cI*oFXbfxSi30_My{PEIw-Q!ww00^5OxYIyAad&bQS znz-0~=e#FoLO1&ex?vv*-*?8n4|qN{{ws0szm9wV@|M{2B`?Ijx5vHzD(-#R*4Xr; z#E0*-uOaT;dMP&jn{n@5FUQ7ji+dj=J`1n>i9d`@|NXf4i$o^}e`$O@6!-pD{ciAi zp6GgB`nUAEiQg^rm%68i_&-C&wfEj0_x_sio#%9~)_0ZHTnq-npCkX{{wMvMIW7$P zMrY2M+get3eQ8;lxkxm{;kNjTUZ~TP->@T4&JCGwgpxN^*-GzHX*`}Z>Bz4p9eo)p zT`Z59v}DA@w6Q#E(vqi5+SF&Rt#96X(Ncs!}H zd&ZMV*Bd+~rcI3}leRZ_xO6km8Qi`zxR@i=8QdMv z<k%su|`itak=?C;CWm+_krbiGN>;IiJ* z&*}d9&fsoEz7oK7y)kEScOfnpak}1wGq{W|M!cyv*%@5cyTR1!JA+#e*m?wAZ_F9o z8o-w$=z0^*;4*$4f~j{7RBf}i!6*H;theB5cVAV^8QhJ?n~ylPCrX{c-2vE8!1SJ| zm@~M05SNEIy{4A(3@+>3UhD4F{HHyGTL@fL0uO2*jCTf?@NIzWb<3DDxK+d(f?2n0 zf1&4f%OgF5OFDJW^!7P^TF&6^K>s(RUBZ{XGq{a_Z9-7I8G8md3iw6@jklC%aM|aM zSuSt(ox#N{o9YbiR^T%PT&X=h-WgoNqkwDvjX8sx4)_uTO@~k93@&MS5Or`ZBNDM= z&fsK7+d% zw5$Zqg$I0Ra0%ZDxaNVFGq_cN??BKz@V|BjS7gdH-Z{jNdj@wG`mhG&nRAG@J*@V7 z6#=#y!JI=h@Jhf|A((TBgmVr1qn^QKy$4W^$Ul7scP-xcBWU>-a|U-4;QJ6XzEhsT zC4P1`x$>{?3@&J+&l$s~tL{$d=?v~6;JF4kR5H;!gG=}h!1Z{DIfFYL@a+gjCVmoU za7o((*LuAFanInsj`prbd4~7RS=&OuRv{SPH}DF;Rw5YQKhiU}tam@k(Y!BbaM$2{ zAA;e1{~6qkfbT_cd4FfD{p7cy8n1KpjhHjI2a&%XaZ;x~gPV)@nFzYhm@~MAfX_hC zb*4OnOPVy!b;n!Z8Qi$>#&Zxyat5~4!nxFg(ZZq0)5OLhwgR{1MXK=v_I6o(HnD>?ZBcH+T1Z@|CwlYWf&fpS$0C2;f z{xi5s0N;|o6 z2hz_(oRN9|+h=fv*A{xdsZZ+}+-BgY9_>^*hdP6si}#rbdj5|&gIfsr3t9YN~UXK*|5z7s*$8FL1AHQ+lCbe$>B;Iht@tzMmf>od5!(S|OR zuiGtWa4Yb>9Kp2Pe+IV(@J2zatHxTI?(Hu5GrgWG~U6^PSkpZd<=LhtdP!Cemgbl+g~2=5Fo;pM=amiaMf zaJM3TDdO~a`^3)RlCC8;xpa*=gIk6AixH>k+II%m?)@3udf;y3jhg1ZGq{8o0jGxM z{xi6nkiHOcn&zL#8C=qP4eIz?oWU(cIja#;oxx>Y*!2;K<^AL;TxB@JRWlfw+QJsAWnGv|JWJaD)g-seN#SP?+h;C>jBq17;^@<9Po7r zng{>pXK+c211LY$8Qe{X+mE1WoNxx0`MYj$X&G|{_aO2uN1T>d|7XwO=H85Pg?=i# z)H{PqcqibRt}$nDa{=!_F!RYLaR!&PS%*5}&)^c??ZMqMxP-s%!QC^sgx5q9&*1Jt z+G@b%Je)q8%Y79G0G|T5J`Wdj2G_Y2dukA;&%?!>!7W5wCF0C^xKHC5+)A{u0&O(s z;XdgzxWxUAw!|~I)6s_QfD7(@XK-5p-v+pQ4%BxBw-a$&5ogYU`p@95MO-)HH10o@ zXK=gG#?5G>#{DOL2A8;>vNZ7w?oPC!3UI-_?+orfz$*cFaql~W8)^sNAkN_4e+D-n zapj0JeE(@YgIkU^mZFV@??34?xWxUoj>I##)o8<3zybL46ZqU%YC?+Z$Y&Gr8qm3Rll#RU4o4!tJ`2_1%@YvqJ8@h$dbc z(A3;q?n3MEJ=1yh4GW59H`Xn1zvum4C-+b`@k$KrsZ@8}T_ojw8DE{vuh3XqQ}tX)|EM*?vT;+c?cU#FNxoY7_yya*d!8mq+K2Jgn3M61spF+g z-UXxT%tzj-IrZST?t5(OXTy0np1M<-_dOBbyaN6j?j6PlHikLH0}0=Xw2gp|MtZ=< z@O}{5`MUtG2mAzq+r@~>9V|G64*+p95vTn|19;a{Py1Et|BYv%2TGfH$Czrf6LW6E z+)c%{u0;9ERGa!oqtwH$%n6{LPQaLse3g%P^M|WS^q=~!eHreCArGC1^kWcCLSTEx zBCxOQ*K!2bL0s(uUWl8YBk-=1D&!^aObaO9;aw}dJA!ZJO6QzNBc;Jbu8mp+4UL z)ZzEIyhUE~>*||p7d9+ts%vh#38T{2x^lNHuTfs@F_9DU<)4h{{Hsp;oQ!MAv`2uu zfK_{5(}IOEw#^t;_*8eZaok=m_gE#$e+-CwsjKj--)C< z;pjv1`9HsOU3hN5 zlka9v9m{A$8E=8lkS%R22C0*ssd-w}vD}MK&vfvaiOdYSIFV&gu6%o`^!Tt6cBCC$Xs{H2>8mKqZyFeZ2p3+sLj?fMzQZ^8TQFZ)!4=V0*pVx%E{rv*Ix za!f=4Ck_D@91;eQ#r6Ou?eX(`=>s;St?weREl(jliu}>`KAz`z?-kFN^vv@LpGOH# zPXW(=QSiGqCC{t$S4w>F9*>teCN4n!rzQVVDUbIktMvSi9`5ag94oxvH%1!;F!WoN%^(j4*zK7oVPP#t6zcbHhyVn)!>L z8&Zt}wwYtWj01@Oq~o9q@c41C3NYf*KMv;UyGFAAMU4Z>d^FMeGQz0)Asfm#CnnKr z<}a9A*IHZOFuQ4PU9*zhu2h6HE=tsSiYXW=8S=QG6=H6jkTV+nvv}9X z9DLjze-W!vz5`DlDu-NH{h)2VLph6YU`CfZ{jeOE&HEy&0bhmi2Y(zAg|ZWM0Mfcl zmshh2JUJTWh3p}bT*t8^gB*JRKHGykXKh?R@9-0w_Ta23_!?>ZAl1bvA;(w8(P9Z3h$ zj&)26c=W0OjQ#V|s|xRadXX**w7i-5Wkr`gNJDwE9bpCN(lz-AyYpxS5#N$!Qntb$`vSvMa zG<~&C)_lv8HJiT#eGhT2tYO??WX*V8-X`Sv{%|F`j>m^AM?v6Zr{hbO{N&T03<6EDrt)ub%zk$|Y;4>%)%$7NW_kquoa_8Zj z4QJp>g?|mQtl0apCgxC=J73b>XR~h7SGDg9;rr`vM}w`#x_R}@GRczfX9B{q!k91V zLs;BUFYV?K`PB_s3vl|=gYt^-%l6NlZ9WQwc z0xVmlLjt5`yK?b7U2vklf0&2&G4ehKd}!kf`qazA5h~fmZOFK$aG-v8_`fpP@@Qvz+iC!Vmo`_Lc#@awOmp zC!@g$52QZAK)J(ws}ZmF-drqV#mUGf{*VRzjs5<@)k23e-8Lv5BR-*XqnuR;g~LVW zWM7Q@@pa`s?D}e=%TQVNAlhicjNJ;(qr2c`%}J**MC%Qsz3&i^y8g^>f2;fB+WSC3(|bIuUOMXZyc~FFb;u9J}qmolvGTsmif0cOq#{MwVmu0|b4dFK-I!T8>b{ zw4wHIvy4+Ud>_gB;->)$7v+7Me^IszIX}+>&yLm5?xO{(Jw`|Vkvn77GFYheLOCM*I z#Eo|IrdxGxy`;$ui6095Ocq;(ZK@HN;tSFO8e9`IDgL#r&rAGxd_~FM-a4t1bL)FT ztM^@6(bq%X&Rc6+<<989lCJ+U9|(hC(66AIdXDd$2;f7 zX#r2KpiaLVFzN}gtwc{CY%gH`JGW_X%>;~d`m}&Ir!y_*GgYpda|x>ejB_RK{g%1X zq~ly@V7$M%S!B0&-}7T}?~{dBy!e0hy^AkT>t?Gr*r*XW!vm;ub+eY+ICrPC^^|Vr zUq?n>@-cB2ub-*14zHi7G@gF;u&O^sKO2s9@5AY5s*JTe2v%7Sl33xQ}$qXh|$j~0N>!{?UjD^XK9P4pE-idME#8Q?tT1| z(a*jvb$a^QdU-#*e)f{2@$|DdNxWa*@$|FDB`&po_JYJG z*U#2TTx$Jnv&6^hXB!2UT0eVD;#2EqS4e!UenvWN0*-sq&zNox()C6^V_N4)*fjZx z`q>458U2jumLOek^|L2MetG)Yx8&W^&$3b0Vgw^U;`KAuw-WL3`WfLneC_b-XR83; z?v6zX5fJGRiwQ zXByHJ0;cK-08^DYEqLeJR3-2dzc!T*2>TZASKzwM7HJo(7Szq}yQy}TS=ex%k`Mfz#{6lE_&~Ll`@$BgLlzq1gW#$2{ed7W* zwrb~a&(@=@%>J)J+6yrzq2DZlzBQPiejW-lID~K55$D9K-2JcD0}U>Yfou*~-hAS> z325)1Eb#*b7vzzAdG9Z>nCpeCy8yf|b*DQ=SN5V_;`CL)#VH!c0qa63cbH3)_;&nW z()W+!)lQ_Jq1!Sry8<{jf9d9jmH%1Vw5P(R<@c{>$Hv>Nl>5sOsQYjokA3+lYk8!# zSsUW_l^XG`?8W%8gYQKlj$>t7K=$rooaN-?GL=fy}r zbDFI4RW~oXrfJ@^8|GEkwbqrDUDMF2_9T7G?MM0U9=m?i0MAEHD}8r#m$dP5Hj!p?8r7qQK&F@%>oOXcQirJbx}W zz13gZa7`2TtKBGER9&}VVZ(WPgWKPNnJC{sI|mh8p5K`C{k*i{UZG(Hc)jbpw)Hst zTtISJofAHbzOa3OF9&=*;puiA)&fq+a>B)=XJ`}bKZL6o=QtU4sKL;hah=Hb1mhx3 z(R?R7mb}LM4Y7Z1vV4RY>5UKjR%wgczs7x%>*YNx^GrF)>OfigJkt$mpZTPq>qnf0 za@kKCNJjb9bda-b`c{`oS>87VJLH}7kou0Psf+C!i8dksq#Iis7UHMdzLk>=WD0HW0`B{-E7tWWebd-Q0^I97gw|cR$TjH^!*DcXh+OS~3`~|hz-E8*WTnHa>z(PIflNpbyUxj#|kn@+@ z8Q;L^LFO9%U^-$%r5lO&Nja=UURFoP7K`Aa##+$1%$(Mft}e zy@S$E9iYbkHo!{&uRKPexuB$|9s}DJW11O0Yy{7Rslvj;`^RLM~>Z}3%(!|&^M0N-|Mkj+?{-^ z?*4NKbtO5&@(;o6iQ_+>x6QX5i6GV2v|h=GH?)k%dm*`usGfDCGUA4&`qsuzrF>9* z>RCRhbe?=zEVxK5A5^@O4<+Ek8Cw$NL+A7G@gaOv`LIXo_T&T0nU3<~<-=aUYXFaz z4;En62!9LtaKk4c9~LK(51F%%Tt2)yi+Mfy@Ea{3c>gp1;^*>@As_zEjQ+{VhTFAl zD1KSt?B9X6VF-NQ2K}LHjo3r(L>)81LwqmvX7`w=9_M~BscM_*)#)CYkMHi_Jl@*a z1P$NJ^Q!)tm^YNKYrnLo!LqFhlBZhoK#zf;$vpI>`18;vFnLbEENc8;&|sxZ+Ui@R z%=uW|Q2RdU=XptBW1t7{yqzhd(JF;SekFF086Tl3d#E)^bcSm1-o_Vg>qhW8CTEAZ z!`m4_5TWb zHf+Q6C~)i7A50%MA9o|zUf~P1f043&r{4osmy}Z)Bp;m$yaarE zIXSkt4@;FXUh;ef?~h0syY;&%W4x5HNLmMve#12jcs7h>G$YRr$@3lfAh}o5mxHvg+sA!CwW`-j1hukks$P`I2`4_6K6WBxGypk8JA}j_Z&eeK6~~tY(bt5!}C3>V$G}7AXwICvSWa zyo3FwO$+cp+sk%L7P^eY7|IhE>3*xgrUlciQE1Q9oDDyO&44;?WgVGz^l3Qfj)i>? za)N`+80HvfTWXLl%5>>C>(Z{qIQNb*ZXe=!t^?ygt;oS~zwl5e2DF@9?(GSmJ0kb zZDyHlm-C8kwXwdS-F^qk%!7e$>STP8FaBD@4~~nU;)}0B{E)c#W?wv4O5)>}d+}}i z5q|1loO7D35kuf6F0x ztsOE3$j9NFW7KcjfieXU_CD-uv<{;Kx(7Vicmtd1!A>`@ zvpksg6NhsKd$7|?x`VBhy(;}lHUu9WX)eS>pO1tK}0z;+d!6SfBLl)-?B z4CcDVI>0Db{rl<4tn{39fVm2mnOfo}pR%&r+UD_PW#!Fvb7$4p)sCA0{=<5!KF_`F z4NPYE>xT#1!slZsw&!>Yh6&$71zVg=gQ~DtLcO&I6nYJ}`bJu7wohjj}i! z`pBVwx2;DZ{4k``qARrj2e5+(Px;_R9-4eJU&DO_7duG;HoE@5m=?cdlAvRsv>~9n6o`E(k zS7n`H+O!hzbinT>9Btx2VjtE69s>LxT{q#Zdn@1;;JWT{hpU_Au>9#rze1H0GW9xu z)gW~F;PitR09K8#9=LUo+VsKy{%J0=g9L$OXxyMZD*#WD(b|Orm zTAX$r3?Cl_R%I5)+nK@n)@j!N1Wu8(IC2A+PK$9%9>_;p%IeNC{D9vM*C`;aT5GsS z$`}SKBOth{M|;!JmaQm9_++O?1H%u6h`*0*4LMHqc@=Nsni2P!$~z$Xl)`@zV2ud> z;e#9B;Ew?__#n=Riw>lH4vluQq7O69l)WDCI`B8@?bin8FlBu8C{>2Zzt!Z=jQ+)+ ze>dP?RP7G6!N2H_OaHO2?AfWy&PTcz*tWE`8O%?efo)FTXY4E_@f@C4g&LC2-1%1ArF;uH{9083>V$ z-7Z>O2@co~6HMLdXp@murcD(nXCs1S?$ytYwNkJAi6v4*-ISCxuavo>w1*2l4IGyd8VJl zj^&!4+SUgn5f^ew+8$Qx85@wk8t`)o#~6J$YYYTz#&E-%=K;?4Z9}>#NSDua*>>CG zSnLj?t?c`L#8n~gM9A|p|w6EOmG?hxr#Hzm_>@fCVMD3E_#bV#Q2mewz z-WNldcEYEWi3GPmZnBN*0eb`U9_Lt&1M=$CgRn;d@tiv|@y@yOaiqHgu%9B3Z|}l$ zIRfVy$`i^Cj_=>WK6(I8$_$R{2N5VIIF{$44DvE*Ksr*cQkSFN_85M13~?^!yh#0n zvh`aCl!=eyNf}6f-+gy#{qAoy)F+EX_RO}QpF?#weR zj&rpSi+Zi`rSX0#L|Mc=Y#oe4_0Ds=I5!l7f99u7OFh@vMO?qDmiY>IHXsk*=jivA zNt6u{>z2R(siSL`&8iao^*c^hYwvx=i@7T6@Hg}v-grsAhTykN%=#i}sc_%B^~E{b z1|9kvMaQvtunaz*fDO6>8Xx?tePlc$GOCLN@<*%nj%2o{!Y}X7QFjCc{z`nmAEfMD zpRZ&m~r_ z2y-5b0=^N!wOt>K)d!h(=x$dZoHI`6+l)L@e&Onar!;E#PQa@GH@2&R?*qINaAUg? zPMs_SSOtRC$r|HSGFNx@>rbpZ4{b8~plMSz%Gruw^g*gZ>|-Nf-3Ue>B%F0e0o#nA z>pt^vb+a6npNo2pK4|LQ26#5$Mjs@cbLDQp9l(`7I4+?t>=SJQ;&>a<8Qb-3SOdMW zU7r)aneee}*O#OW&vwm6JGL@l?nE=vqHibi!yd%Dw(BkxZ~C$6E#UunhC~z{_9EX##NWesxNM^@D0n(x8xU5+!SexIkI<#yxzTOP2A>H0%6bi+947!< ztE3<0u*LXp#>H^aM@v!0I)rg7geUQ5 z0?T3f)hOS{PE&6Puqg;eb`nl{3q0Q&;-y~L((J=FZu^xhbJ}0+LFRnf@@(lnD6bNEb=?{5Zza~vI+(5l>5MJ?lOANwqf&<_ zbC`cC@*7+F)gENd8p)q1bM~POV@p4sLgwV|b^Ft={p*SSF*2tJ=|tvawTsL#yh~fU zH}>;P%lnJBpECoEa!{qL+9!^;`Pg*woi+n|jx8ZPe6fQ-9o> zp5tt4*BFbprsM6UBekWk*0yx_yNZ6?V>1MFJR8p^@5jF1w|iqt_bubbEaSRVQ~G`} ze39|%KMJorAFS@zKO}fA!MKWRVdTqxykM47qBtLL-KCX{RBy0JAlpD|qx z(&_o^GcuiFV^OO0sI#PwJhzR^zY_WNe0GtZ4kdrG^{7)Me}Uv@KWVeEpB-;|Hrwc| z2AXW#jw5|pjq;<2*EZW=ZnhxqHUqu{aBZ`>@ST7!23*^01G(9Q{h5eoyv;UP+H)S_ zmCbhCABe+TvDx;aoK}>hZMN}Phv2cP7(8+gEkT+V1kM*uWRlxA_Rk*-z1JWu{lw7a zLrYMepWdDOU3#}=Yl5eu_kJI}*P_f2@)~-#ogCXvQwP&kBAv0BhH8SRqPHdZ@aWC_ z9msENrff}c=1)fN11ad;`Uj8R(cgFkCyth*{1(I;dPkuL622brX21=-4SXx$jer|^ zM?XkS?>D49latbW7s{zeImSl+Koi_QZb{CTm7e*mtM2|&!3-GZc0mr_)J4G+=f2wK6$$&H6dZat_4(_I8x@CbeOvj@T8|6%Yyjzz*xsP31e z+#>$hBF%0Dh5zUVgYTZ6+{;#h@n-(g%@0eRJzRjb9v(xcuF7%5^&QfUV>J^vratOl zyWtq%IHJu(9}3$;TADQ#qZg8n#3$)Q{E;R`C*(RvHR|O2;$KIZ4w%vTxbE?Yp5t=^ zA!&8QR%iD3+<-a0`-9%h@qK%?^v5{jR5baphdPUJ#Ge|Ww_WjmGJm_G5BFIsfBP?m zUc1EK{s#DqYn6=SJg(BJZ{yJ4{tHRFR^l(kUdi?1e?JEAsr~I+AwLS=bA3i>(Yri< z`~E-Tz6r!VMcF|A>Rn1Ear|(sGw)sD|5#YM+v4^Xh^|Jg9q&GezQ*S9?Q3T^NBAl|R8n7h@%4akxp)bTSbspll^dMv% z*NeSk5B{0s{FIO7Z~uyv;rZLU(B2ZX#r3!UG?5=_5byfix2ky4kIjht zCghs<+n-SWc1O=A(-F4`VFTlFwk7(E;-$raZA5s=2RCy59IQwCWjXOmeCt-EHmy0@#K6jo^A4|5MEb|cg$MZ)q ze+}{*eQrVz{-}WDkM&2fpG#1N@%5d6HpK5IW16){yjq4;*mHluE#&2*wY6b}xM3tb01zWaOD?Qy0n!0dC}3yFNd$4sZ)_BhLtD-Q9p6 z^3~lxPM{e)@X5Zh{2G*FA>HBVK`mRPg zJy!Pl>AM?n;{)H-3m^De;YH5}P98giGF%_{>#<{b?O%L8@U=>Zwg6j$V0_?fQ~1F1 zkY+W4@qs_-^MO|Yz6!zhfj_Bq?HPcrL@?vx$zJ%t*@x}OWANDiW@9ovg|3MEjr%mecWDfIh zLw+rD(8j~>CtIxb9mC6J-r0{bj1T>e`C?Z)OI4mq};N8sGP1RziK> zrZS7gR!wFXD;yVzZOik;Qv~OK5W9E~>{DYG^NzFgB<@R+mUgnr%X=5qHv@*IsrB5$ z*~NJn>lNXU(IeBM_jz`4I^g99u3daztRBg{Ya=1|3{??$g}P5A^6W$~cJXWtp8?no z1Y;K)cq?Gr5sY0-ICZ(@fNew2dgSalRnFCE%{*x8UV}CnJ<_!4b(Av&aHB_-=r-*K zyb5rmM-tAu(*eT=PfXng@>E#%t8zv`u3oE9eSKi(Ot{!)f#7q3Hmr=TsaUHq#=erQI#YZvcS@unXY=^?9| z_AU3JZB%wK?`}nj~+o&>5Uch&bV#ft_w{DbEjB<{JjZMG9^Rf>u)T@1Hq|J2XReDl%EosKS5FQ2G z=&U@GW%MVr)Y8BW?QyD|3<)F8ywCWf7~vA+1IBo`vB5uyJ9}`v%jo!S4PM^ z({*tV`tUsA0i_QgM0wMZ*XYA-vl8oO9Za_h>5L72MGyM$O;U%a4>SMk$Zu@$i+j+A zKQH-XZE*I}%7koEbZt8$i9XCUg-GMlX;or>44o>FPUswIyU&lyC4jp&_>G$Qy&T?hv?DoNm-=oNr4Y-z_MeS1+d==mh;I0j>;Tr%?2i<jK=h26zZ? zV}noag$>TScOj3Fou*B>fOR4m*=hEP6#>?PU}PuZth*AhD1xbbSe)=A{!HL_Vfn8k z7};s+T@Khz1S2~MCq32zwgW-i;O^ZFrc6G~I81ju`nE%lNi`1fc_lMeU`2alr5PC&b7fIPbr6Y1D*%C85hs?!Uks_s*%TxllI@I#$zMWJ)bW&_<#HH zSl!>1Iqfg@Aai~xI8-vH8Rc#F>dt8YSz_IkIZWrE4r7DA+JnsbgVf>49Oj>b{Kf`< zu?Ly6SMn#yoK}=!Z15*i$eh(k_by&-^Bg-rPjSTZ}CmN53Lbnt~A%v!Qplj9h`Fw>tMQF2zoxNlIaXKCV4a2I@V^X<0!X{%s&)u z)bp8I#)2Kh{9B+$;l7NRdl8g1b*&Hb+9*2Hi z(CCBgk25&r?lo&f{YFP&+yTVtyDp-?(?n(alF{^Y(jGEYX>W9neK z4G5a1(LZUTrlRR}Qin%V=HHK?X^J*-ogjqo2q&lMOv#@})2&B)G>yLM5tTagL6qN( zctg`D^exe)0o#mVXlmfafNerBG>z^`P17mTo->ltv7mVH%wkiHb~)0KXGy{OmyPju@W4>-r*A*3rox`9lG{bW(< z*O>2#kAgh-4G=dP?>Of%A{tftbp_x>fSWNR7v^I>S)TTDOh;eIlH^Y{e8cOA+!gSkG_t0 zymQ}JF>q=Ae7dFFS^shOjZwcN&CD8#(c?%j;*Inmo``#+!yRtln9x9d39Uo*$}cZ-py8zJ7;T?N=?gm_=~ zOu#lF#QVAz1GW+2qxia6_j0t!_-jm?wgO%XxbfGNfUPNGb^%@jxbfEzPJhh-z>5Lb zb@%A&X8D~+Z~Qf;-g3Y?5RAXZ__}KViz4*o>n4uNhkbNk_pgLEKAx}p_fm%E>t2cW zmZB}GeBEs8bi^m~bqk*zAF^JAj7sL~o`HOYh<}OkK413|zzYC>IS#%O@O;3xDY)zF zh8Rrnbw4lt@O<57TyQ>Hk8*~hoF7U#AI;azK2;*G@<({SZo-=ZH~x%NzHX-LF!_DH zZo=09p3K+HxNZKjF@eYH1oV|K-EO3NAz${JxxQ}6pYQ5)Z9VzAFAgdh!m+XkPU!6ObraqQcrssiG2rzGseIkcyM2T!J6&IQGx8ili1&4O0Co@|-q*bvumcG3 zzV3~H?ME>F=HB?aS@$-y$;eLQbG86$MKH3{_`34|Ye6uw)A+iJ0c%Dub@$}!X8BtY zjO;Y^E(WX{!N^X+$=h9kZAR$H*G(KBKsqxHQ~A1?&Kc>B71!5Ics1Z3#n*j6c+vB9 zvy5hxk<8c4xZHw7Uv~@Z1iU9-cPG+0NSCj4@ixD&djsOq5f|_4-VS&Oa5FA?bZSv|)>FZ{?g9yF#b-yNc zcru6iOVP&O`ntDC{zREG6J;FE*G*h>B8`j76uxezTZ43czV5`k%6^2ox;MV=SCEeS zhTqps{bCFFllla82hRKPzHYT=q<6k<>f}f2>wZ`C63^G2A+iHL&`Gq{BUZcKdp6@l zWtTaY`s>?!_BZi$Co#<8oZdh;{YZbyePoA<6)pXK?`L3RSI8O4p7xRT`MqQO-bpCP z5ki_J^MNZIdp_{X1?S2KZftAg16OGiec&@O7RyiabaTHCoN)z3?mX9{5BwIXU-?Tb zQ05v0Jujs6fivB1gx>nVmrEUCwXT_1Qd{JyH?jPZg0N!~pl z_Z(XL~v8thN8F^?RiX-aQKbfO}bSZ_2J1 zU5won32 zZ+@GbbA;)T8;$$l<$ZjzyYO{S?*M%y=#M7oD?uLt`i%n||8a!}Ij6vU7xUg+;J-77 zTR{)khKJn#Zhi~R`@|qOeyu?s!;!~LE{}@BgKmF!P3)N`<7~UYHxztJz=tn-eJ}aU zQ`h8mIsmVaS46RJ(wBg)ctc$k?b7bf0Y+a54pR;qx`Jd@T$W((~jD=s}ePb2qm7o`6;URr3=mF@(SUBi> zmbVG?{YZ*OmvjCo%ie~()SoKmod>Oer2bUrj}8TGDU$kAoj*Drv?WL?ySwv8ng3QK z^`|O#IcSd{sXry1eseEqTadz7c;@+|)NwE_vTxS;qvRU|KJP2h`J<%I1YNQ4a?T$e ze+2vDC>G8`&Q#G7Eg)V4qWR{-~25U+iQHEmS-JL&rtSckxb0|Lv@`{Cbcm8NUCvW?lR^*{rc-r}+)Wx0P zDeCg$*}7Z@K0me`-1(yoLG)L$H^+Uy<8a>h&9S+hSonpAQ*#bN9n!bIfy6n-gZSkf zgYyZ_2a>Vyxz4ub#lksHKiF9Kd2ZZ_V&RvD*KHHoM^pvc_dT=Tug_kJg&)#=-{Au7 z*^7T`-}mUr-hLNg-Nt?2Bk}u{4+Oz#w=b`|_4P~f?^yghT2^PqyuDtdnD-Z*p3iXm zzO}Aa%-i$+9{av01|JTF1P_M$zGuPbMox_8;77x5oVzg=#(RS9&|L@(1e3NSfmO;L4Na1)k)o&5bK7aK0u8inBO3DvF9mDbLd?#P&_l-Y@ zJq5{q-%mUF`1zx3XD}&R$AvNPqqOgPF!JAz6t3fr(!THUpzT8n*KtMqbkO!9h3mL} z-1nWfj(gPAWs-|+a2>aGuix`cy|hAp4^p^}dj%p@d$*tom$2r?+ z?N<8Bxj5T7812;AqwUDA)Yg?37H!>G(aqVTA9Ho}wyr~-1ti(Jb4a|NDuaBRkhEUv z8yY)nKlm418Ii3iAE1s}FI9xb&e{+D2`6uDy&HKH*X%p|esCI_I;zIKT}ZNZVYjCb z2W=;kY%O{{XgiQ(YksRF&DQU6bvZxP)-xdg1d`V5zYC3>wDrB<*^cCGUBGE3(R-z( z|CX(*FDi+VKNQW!iGwAtsSG~pW8|+Z6#RTV5B?6&$0F9sb4Lq)qj>S$(Q%*?n?u3Z z2EGC0LyY{6l5 zm9ibHL7xSBsP`g$1L!kB5A}XR;qG+3pX>DQ&m5(XUGJ`MK;8|mEnAV#4CEu--|hB@ zA8FzxgTON#Db)SiQhj&z?`M1OIO{_@DsHa1AZt@KXTl7 zhdVRnLIh*AkDT#z&l|5My#0j&e6+*o=wcppJh>__DmK-+?(*bnI(*Y5#sGg4Qv zblGOmluCV*IbYZijlKLPGshy%gM_L>_((9>sS_p8~q#vxWZ` zjUl|(fqPotclL?O)q8!)dnNe3S?A)jz1UZB3~};Pi}Q`bFS~h1{)ev4K31{{`R$3y zK7!|cmyVSxgM1@VMmXOnJX11XNPDO77p{ybRzmqU$cOU{)UoSx>K=FU@mLAlc@Odk zV1B%nB>_6o}w<{c**uim)pVT>{Qixn%YVE0hbj0vuaswbS}pe;O~cf#rSNk zw;^SPpC!|ZK03SeGu|HtL1rzI;5J)aOhAUl^ZteUAF3?#|`F^aFGM{{6a&&mQdem3bcj^ZDD# zr=fnEFy?7qUK*Qy5Ol_3>!F`%n1gXX-iCjtowvdHTsd)9&egb=6}(NYi(4?ZR|W45 z_ZUBNg`dCY!NWhsHTbvcrEeu)x1i;qU;gZ70$+Z-mA3P?DDT_JH-_u7^>6TY9Rx?i zvFE{&`28BzWt*O1-{0N3?4@{XEZ*9UHR&(Oy~hLHd*@hZJAL=eT@Ign0EuTfybiYT zb~qBYnNX{Bnc}hj-b08%ObJ$?2Us1P;?^Ns;j5coAI-UsM7bQl7(?N`bu)_N7d{|c z(a(Po%GWJ3;A#iJKYa~)lPqDG1=ca`QfgeY%AwXZ0jE6!9E^)XZqj~SFx^H>zW_CeEPV2 zlt=!mDBd|Iq04=^r@g;Vlqi#SPSfSR?)zR|m;E5yfh1iP{vOp&>mTZpd=DUL4YE5_ zW>(B|y(=TqCFS=bX$|s3sLZUG=V~W!bvgd(NS6h~0yTzb>GBSjPh6KXkVkRP?b>Mm zNLy8+FIs=Hn?IiM7U-F6p9%f|^w)A;*}LK`KAd=TvFz7@PQDKC?ME6;zJV2mTdVT< zo>))PhWCQL59w6i>yz(OxYg4)fVLMY#79kGMZ8VKQ8FcCan-1&|MTDfxfbVi18%9` z|G5}(w$eFA1FpOJ77%s8IlxTtvHfft+rY8D9%UrI_cIwZjrAP6+k?JXsi6;P@_qa~ z_%gzH0e^plKEB`gbL`_UYq@UTqK=mK3l`3w-?X54a!YGlOZ&KS^P6sHnTqQsoEvrX z_%lZ|w6xC;Sw^^yu7ogd-1)OR<}F;{zZHKg6p#xRG|g{epEA+yJ)7vtIydL{7ze@G z?s`)0%v|2}b?j$+eNINrC)KV(J&Dha{g_vC%c9wA_xZJ#fNzwOeNFDwnD?-sytF8L zqQk-iz{|>ODuYkq0V4eV!opwjRs43{X~4qTnOKkF-a6i^t|Q+418lu zU53%;P?x2sO9SgtS<%@aVfN!HD*Y;=cU48c>OAP#w-e9CP>06Z3m0@W&0Eld+W2y4 z&(mBvm!QSIoCerSZRR&&sVB%!Y?^&TxKpv>xSF9gr|>@*zbbqtvkL7Q4c`B#3xbNm*I?L|p`Q|a zA8`5dyHpcuXQ2%Z*44h;?3r-#JL1Ln0pN zm&5?=%uC zOv`zlkOmV6>`$lVe1A&XJ)p5)oR(9+=w+$5X*sXAK0r;oE5q-Z;drnt91m7rTgjq= zz6l&ZCNwdx21G!dmMV0_1K{s+b&;x zZHVhd6R5Xj8#Knf&y^XCakskb_!#Hw)%_T^%*n>bI4|qRxK*%WTTA*Fw{kXOjks6N z7`GO@yOGkyINqC!d=6xco3k}O#@*qr{TR0g`86ZIe`buE=kn`*jJwhC#m6|+g=1WO zGoA^fF8}Np_hwg4e2h~$-Hma#IN7epINEv4obtxF4zyC;_{UXM|%rR~}c$Ok9^L%EEV?H}^KRL!N2W2w&@s=C3(x8pS2{2x2D;=Jaj@gujT+|``u22S4uxf5z~7%hkDGpY=*GF} zP3_mUbWF!&&adOHFTpP7Z%3hAU*0P)Upc>a0qXFKEB~V0xLnW7aq<5g&)DMH@3-#y zwYgC_zZPmhK0e>mF-z%s?YGOxPRWf8*Nt5JdD-D^uDb+wU(s4JF8(85wE*?zdST7= zShL}t#>Ic6uKj#$W)pZTZzvfT{}HYIc&~tbisNEFU)6*%x?1}^@}u~;xW`@laj_cZ zEJc1A7yFj1{qT9fvetf&x%|2x7oTu^ugBW&RpFdG7pN{A7iXX@OHdb$i-XMCufD9c z-ws#Ke9TzizRt7uEwxnX`ZE`B<(_8VHV_FIYej0CSA z7r&Ld_S*oS5#R~O#cy%#_XKFeLG$C{x6Ima5AF}e{cv3TR%sozwqw~-z*8I-KOJAQ zu^so|{(Jp+cg-}|J8kVZ9Xxj;701O7+I;rozQ#pPRJr!M7qopy;kX!nnzQS*U(V_O ztla6anc8$H)_#|`eEqn1xQ~Av^JudL_??+C{*B)5d_K0uTLHVUUp-Xg-x;oql<}|a zUoifa3>b;w&x{2JJO14lj(s|ZHi(!@oEd9$7|LoVg;ba`= zuS^*yeZ5Y1|O$!T(Kp!MSt$FtMPFa|T%UGEKcV+P6bm*b?*cX)A} zq>nFwt(Pt;8S_37jd}OH3H>?lY0UdX7h~Q7;N6E*Tnm088uNIs1NmsoD?HHsn77x} zKZuMPQyV_xCQ2QlXT+2!B;m{;k_jgNV%3&*@E?N~3PF5#G0*mRI% zUbQPHKIW;M?#8?tC)>@K2Rqky6vwm${i1$aJ=i) zi29V?CsxSYqF!yN@F(hRFC~SFuCtCmA!Gjyfmfgfks3xQ05X7$@Wy!ak?FF$8P@ z+g}St{26)yj1{P;}R-#&5UAs9aneTSPIW=vmtu;a|tVY`RE&9{3u z@O2{e$KRhphwFdR-8ySp8=rtRwT>@s^}Gcg_L*3JJQJIRyno^H{7Phn8q%U98#yISX*^V9e`=W2Hy#{ZCCGxF0q=N%<|KKlXr zZdcE^#=88v@AEHmd{zvi#82}#N=Xcg~owFIVexSKNA9BfOT-$L!kNdvg@2oGaBmd2QpJk5*PuTBQ zb&iVq{a1wT73oLcz$H%*bC={Ug6`=X<57?CON+iSu5e$zC-KF$ zuEo7ExTpEheb{IE%9?!7k+@IU&A2}r_e0E&D6Gr(Jj0ch{akmZE8o9ENu0gIUH5e5 z?L>Yfk)P%{51^4RJA#jP2X~2g&i5vxZOtyP0S?1_F52X-`Ar($kIJG?CZG3`htJ&J z(v$ZRktNBU%n^lpV=-B>z2faFhaXDqb$Y> zp@zPt`z>Z;JR~1&M7~O3h0pHtJ+H2*=ESBde+=g~>LWOZA@1fPzja7_ephu|zSrD* z?`oCDdjay{b3EjeuR;cF^Lo(tBN6YQ1Mlt@@Puzbg1!&QVZGsQBo*^cV` zfQwKswVC(nvnz04bDXn7Yz+r(Insf|sCT*X;DOwyN}j{g4=%-+R2o-)1ZAYncm5l6 zK07VoSAWCxkH9}W{Sf9mTvH|IJI~d#Q}z*;At|QZhPwGZu03n-b$ur1LuZ~j8gxB3 zr9MjMLz{3f`P>vFGassSm<@urL7wxWW#RQOJYVJY*6{k+qy6<0;kD*ZA8_@F=167t!aqcKDIHJad#7FvJ$FB^Y;omWhIyqghx1C6)7`vs zu9KaHdFA-xxTNukzqBRoymEPQUO6i*mO#(qc=ia|(+XZUuUwcOOV|gVx#02h%7qR~ zgK^!Ay@(ODgZJ5nJ-DxNmbT{jz6!M6 zNZ~j;zMNRX&zv7T9()g@s>%><7)wa*KjNM||L4chw_*%E0fgijdZ=Rt%b<&L;szTW z23*|WY}QlzhLUlE)wq`&C)a|Oj2ryb=_iUCe9q+`jeCk447i=BIjFrw&tiw1967Vc zq1CASf$T$?6OQ+L-s9VS0XFS1ZouE4V;tJ#^mM@EkoM6v-88*r2|@_2KQA2{6hruf z%fGfqX$;|MM?0ZMb&n{9;Oh~OAq;}89(YI8*LQA>VhCGtZ$0iQhOjlYulF&8-QXR$ zBI@fqw?=(E@2x{V>gzjy+IJpmMtF>mP8kUB?h;=cRWP`})pX@vKyV z<75nB1KKkaysoeBygN09uoFBpz!Sz0?&g}U8rRd2d<^04sI!MJu)iOSdksio4B>9| zvHE3y&a#()C+zQgcitNB@7a#cxc?yfV=M`;={$vgVfV=vz_SU7eI@v+JKq%L!&n6K zS^uue;0ES%h+`4g{EXQBc8}i$T{EG7=DCa<85gjhCC>HT1cOAtdR9089h)yRH#Udm_U2Q`B zHlTi`bEk4+5i4B2Q7q!tux`Rv=`XQHyX-+(Tw_8FnXw4+tpZlciAC&1eq+F!7K`A$ zmAIFTMT`e+1yWipVmj!{k-CaSuzu^nlNE~~)(5;hnj>*CKwUoonSP)jNGxKX8&_(2 z;IBAGIu!c?hPgh>?+bVX#>~>V2InHlwG8))e-HHT;u_DlJ>l%P*ymh{MBMRNPibtU z;^%JMV{Bv8nXcdT`?{%O;Q%6T`VBf1d&- zX1Ql~2RygrseqVKrq$CwmwKOn<`|n(-s)(__vlqJr}X8==ae1Lb@iRa@$SOT$D%pq z(Dxy(i+h?=KGwyYvL3w4krY4Zd@Pz%@?L;^igU^*x}Q^ycX8BcFTyN$?dOy$kl+6I z7stiUpB==U^3^WC?&p+K9AA7+sk(4ZxgB-chq`D^x$7Y3lnt(&_?%MZbT_BG+{t!5 zr=*>?!UkN6;@zvx@&RTaJ%{f(8 zS98uGP9~ajN`~{G(Rbnb7wUH~bI#!|-)PQxa#*({4uwV9r5R;)H|Hc@C9qP?oO3Sn zTZfc3=j6Qr`6TC@>p|a-ls4zw0{T9ruI8MqUmf!$mQ$X85$h{(UvW9jIfsL`9O*#j zocB0v_wJD^nR7<-!RXz=E#Y{^xE1`d`0gM=5#7!cpX=ve?0b?iJ@yl6bHw{y-|U`$ z#pZ}UUKhPLxC!k}#`QolalHqeexo_!D2HJ`2jugwLU^q?;Iv?yj(bjp?A)6bvhv&E4^HE>tlkhAD zkF(wREq{Oy?D-_eppx@j{6nql7cE>c-aX`+-_%xmLii!s5Ice`9)XvG7j&F6dPMT; zizAvBF21(4#h297+PZKyj}{ma9behh+}gOPrF~vg>%2F&w3pUyd@--tbDP3D#T?={ z-9ee-#<`Ped`th?$9Z_SeNhL$PQ^1=o;=$1FR-KETjBM5jwNaq;EQUMPWDQ zrwD5uNtq>}uR|(+dk8WbZ+LGD(*N`MRTTC`b06`r%=~@DGKcV750<$Na@C-#%!g3o zfFmP$)pzp0;hS_m|Kk>;y`=Yp+$7MyouCf~{Q;ycp5C+YcF$iA+Ipn#BCPr-$mIKm!O1~ z<(=NAfOap^qpnUBSL06qBSO74gMJTEXzR+WL07(P4`nwXZT0QRUy``bGK1BX!S}-U za$ghWHbG`TlFrE?UC+LFwu{P8taTe`KS1Jh%$~4CE}$>o)Y!6Qc8l8txrq3GTP@U5 z!ZYu>1q<6-a8ktl`7H}Nz~XrDy7AFq!hbb(v^UM`SmdY^ z5~GwS)=j9>V33%Kz)lltOZ$KAL*^LZ_0M;%d>n|F5sfj-BHZKuSO&Pl_oDB7&-l2v zFQ$f|20_1Wf0kH>d;1?%c08OyKE{jbONkAUr89;Vp7Kg9OEpF4Eej$VU5NN7hHywqo-k9w~9 z?8kxYUmd2neqV^|O<(f3{wT&QY>x~0`^OIiK|Maagn00r`5oiN-8g34xaJm|*V!7* zK^hTpy>5YD4jYa|Z7s7GHO`*fGW!NhHZpGeW3bzc%Vb1LegEvwZ@m_Co&~V0kJF9$ zPuArqtZn^sJkCda{jPFziPs{2cCq6b?8alCN6Ug{lNJ4LJNec&tmq z7b}CGz$X};ENsdTsLSWC$j|KS-UZo>dQQRpCwRZIqVR1n^{J{j3O|+os(R-07n0Ls z;HS4!|9`J(UORPuWf2d(zne=UV@b zIKguS&^99d40KW@!?jES_0eB6cOB`@P`w^=*JE*$?fV@P+rJ0DJCF}`bOI9XaSa^d z68!reNdFG3eh9zBEbZ}g+$UyO_g~{H(#a2~uG{Pgi@xl$h=Tf4^PiE~|H7sk=<5BF28_;MvApd0u9=vx*$ z{;v`^EzB}~oO_t`Y;=;bDAPz*r=0a>d)U{veZ{w9a}H-eLzch2?+SuVZTzl!R$o7- zbzxISBaiHDWY=zc^p^Jah3$=@Dn~Ff8m=Qhb{qZJjR&q@=h79M7wgm-^HTZtt9J)%tiebnXsCFcXgIrG_vpe)sbw%Ofn(?9AX8G(4=u$qTU-qq2SF!yqb7iMC{v-TL`qD7?5@|_a zk{?kgY(M>g8S?$sK0)5a5eBzYhwMB3wbvkBa}y-R$eR7y$r& zOXYg}a_-gk`mW|)E<)1be9=F97-9OKgP(%I9y&wc_o18zo#xpBs(u zbk>5`$A)};{eCHq)wes|YutQ-bF=@O!S?(t7=kwpuf_ajY4C=Ua(ut+pM$FH1KfOr z&%u|wyx!2`Z1l&Ik?4cT`I(<1;S6oZJG;lLP+9{L^JJXK*RR&~F@u4P?HjSz4Py$r zk^UHFp!*4KUp1b^JDItV`GCvI&(-Fl4gck?2Rc9JSjv3%BA>lJpI#iw>HGW!9Pdr} zdS&oOcdw#w4<zv5bYmWFfu~144-mM#L2pIkI0|yF!iRkw z-;Qw<^CDMAIz)}rtKVDCzHBgL)*^*-gZoKq!}S`ZaBgsa+T4KkX1T1>Uhw|Oms?%< zoGq90!y&HRlUzMGC!FN2D~kOr^BIZuhxORPdhA2KBR~u5u_dh@jt{bv!S`p>0rQ(} z>QANDHUAaq_30G7HbAx#Je*5VulV*~QLi1iw;8FZ*Il-K)a#6dUMUwK&#*neV?DQk zwjU{M&+pROBfYXtQy^c|>)&m;)a!zTUf-M0EAv@VtVie3tVaW`mm~RlbRL~n561`D z)!_4b?HrQS>;6qey>`AbMXzfiI}<#iUcnRT^%2|~jC;~+Cq@wZR1&ZEC-h3W8IbdO z?HtQ`*5P_OQrMocY3-3-S*JDNm0mk1+j6Pb4GF#eB%xR4vm>ep9{c0m7hFFP)uS=3 z9*z&P`@k3K^#ofKPTfc$(9*do;ptFjB`N}HPiT)Pg-Wa665bG74|IRyG{R8E;Acgw=5bM7R*PD?-eSaveoyj(>dl27k z4BPZ|)N3Hx#Q7xKybXB`!2SOV?{8z9kMeC++sLyPJZc;BP}>H9J{PIjwr`}j?aV~m zD7OYFY@6$IT5-J^DQsJ6pOb7`;hXSlU-xArSoacptw&zFkpAZEwQORky?AdaWWzQ& zS+!|5?v2MiwQ1Qa)7$iKi8fJg3FLg6mYqX;)#JJY$+v0QIbGR{I3fmDgFhUnDwbW9 zuc(5p*zW##7qSBX{xRC~ccgzHasE;Vn*OTwkH9~#xCHZ5`V@VR?cq4eynl{Fn=^<+ zY*2^9J;y-Sm3m=2s5|1F{=zk$o_8eIZDWv?r$y_wdeD;VHm=j&9j?V>s{XSm=XRocWEy|3Y%O{9zaizCEF~VL8WY z&DGrTQ)sK7FZufXH%=>lS1`=ca={y29na4lkGH{_g1-3n#!{T{>% z9nW3vn=YIe9)c^AIA0-c@jCiyLn|K!|p!STU0!8(^uEx5gYZV#%1xv_FM$K(9;&ra_3 zj-PYRKe+2RA>#IW*VndUu3h=<%Af-HteTiVW{R^D&c6E=Fa!FnLqM<0A0_%4(Dx(V zMtYBY&Ge9eBWU}OZZDzB2Umcm{zSj*=UH|kDtlnz^S=MD25o6nc7M_9KwE+omfffD zCC@(wv<{@OY)9{^Z2CXTp1Y;Erp|Xxi{fI-k=ITnt*bf4loJ>GqO)HV7h^unC?kxE zO;cQK7wEG<594Cf@?l&o0Bt5x7#Ew?U0jTDORlls+|mcMv~Af5tiI4gjg*sM2`$oO$hw{Jfp9 z>%g_6pKFKCuB!wtdm`zV{cvf#U^vA5pO3vQKtGIdn~4{k4h*s$rEvp%p3KGI8nJ$0 z4DJr3cOw1!P#;t1h5OY=)X@ke>f~gkl}OYBby^yCU<~0Wz72f$bR+`{$Axh<_Ir5u zluz-oM)mz3V{U7~!~Ux@<~A;&I{QDXtJ-?|c4ZT>sDY z{<*F_i*rAR)D@6VTkmUK?`3_gfaBh1CwpV=7kG|yWv;?KcbE*jum3Lk8~P@mk<^@2 zb3x4o@Y4QFH5cK1q+_d~Pu6cS0TMuGH}cw_e|4qH^Ex-K%tL)Hch}>PdsU9(Jlq_A z*pt)PJnuT}2IUoHxd-GH$IJaK{_MqnbJr&z0&+y^80PclSx9{569i{E{x|1N3>F4F zyX*AanJ#aRZ!?`xEGM>@k^7<>zhpG(b2dz$yaSbnbX4n@^ zt);#mfxeD_&to{~Rk&4iMSrjQQO!pS@8x`SD|jnG^YhWdd(~GmUa2vV>jLJx8+^Mk z@8h((z=JIZ@ubGFuaeAM*eJqDG#BCc{+O%(JMc8>WLJ0U;4hALjMJs>D`z`ha}EC^ zcW)YWIo$Q@d6tdzYnIeZ3rA`_{h)S}W?rcCG=>4kXT5u~w^6 z+w@BwwsH7lMg2TZ+8)RZ1ufLi<7#WEemG7$y@Ri}(|bkdcxZ;vT-I>}=qr(m>)d*~ ze&C#ZmczucPCtyx-0ZIXI|Zx@^VxzFu92pawhGsqk$n9+r>519ZB+ZJ(GP|4^GVwZ z*-Fqt`T1$`$+2t@>gxaenqnNrGWKb6pj)=_N5Ia9km$3_m*r9K)D3Y-ThWfh(m(s$ zXClU+V=;zgj6uZ?RO3&P(Ad=6)Q0VJs5jRjdY-=GaojT*TvJW`&zo_$< zg?)nRcy_Kj7=UjJO{g7=a;k&Kj>iQTxc;1L-e0=1hQhX(J7dp)zlS%naL?=DeB`qr zxD#K}J|Uc+dioR4!I0o_q_Mdn!O|Shg+@OBAKCZ);yk>jb4UJCd~Vp?%Y)vE6wbq! z9S7eZ0vO4cvYt<0vWe|G5p@jTT}K{!k=#6-C5-6f`j0ly_8_@=IO#+Bpw3fkSAez~ z$<4z-ubEIY2}Sqeb9m|}`Fwg{*v@x5z5W6vPry3$cvrsqLDhxrowcnp_$7Qa-}jt+ zpA&q1Xg|uE3Hq-<$En7B&%rQ!0t)Sci5dI40k}5qM4A`XitZ1zqdJTSEFy(Ca`C*AX?Os~u_UL}8@*hZv8j8>~eOcS8dw4k^mLfqfv_ zrm>FxOq^fq+Vn9*4UP(40e`*{{n29lz8Al&<4Dw_68S#Oe0%3lENt*&+6vGE(4CE5 zUf4iPtOjjAlDAJqVFT<_TVkIFaBm-y>{Iwo)UKp`gbB56AIc&Rva9K=E5SeLtw>sj z@+G!%@b7V0f`8<(7b(PlT@nAF?Li9hUsuFGXuFX@{MVI>|M?F86}bz5|BoT5o%&UK zcm1fOy@jZ~`%&gh+*5nMQf7OfapgwsWj;HRPuSjq+B*xh9Y|q&3u^BY(4IgF+gm8N zy^+5k4}Z7qRUGk1jLl4akdkA5a{a1rX0R@$dq=o_Ogtu3?ig$@QRdyeeJSa!$dqC1Xxu27Apd@JZz2V8k^u z*SE|E?*$g;8eHSv>~P@MxV(NmaXr?xCt3sR?Bgjv_H&cu8hGRx{yVe@@$Qj>9|5mG)PBZ%b|1meGdE&uJUZDyt2e=eF(ec6cR*P0kni%Xq{d zw}+~b0i~PfHFwN?)?*Qzt8&fQ<13sW9iMwQ){Gm%XZxK0`a1e`IoFY2aeT88ZJ(Gq zXZ13EF3GidjguLWdkiI{#V9mq?dkZA%Y6@XTg5GWUPoiB#`#Ua!iXn}@re^L6jW5y zTjLDy0dp+7y=dQnsS@L}t|GSP+T4Xrp66p@5A(o(w7dUj>^Z9p z7KL_TEae-Hew-UWxt63ZCP5c{(Vyq53b%7S6}AIJY0Yp9sO%i=S$0>+Hw8i_h2c2>E%EeCS^+2=`|l+ME_!+F>} zPNo5K`cvJ!YYFN%6ZQBl>(M)ZPT{wH&KQ6;1L?ng{T#hC=J0mZi)|bPp6N(F=1|zD zHtJWpSp}X@HxH54jO&$1p>7@$zviEugC)mju50|CUz3l*n!E-CuE|T+1PR*sh(cxK6Qopb!Udj)8Fk-{@e zI_J1^QYzg!DXT%>h7_Ki(Tg(lBj(3@dysTaN+*Iq@-hCp^V?A7fTt^iTKG#7dgrQ&%9`t{@)iBC`~7I7V`~=R{C?c{a(-|x zpLYlH-GwxOay=?KxmWGTD&IfeISh&naQ+VdPdziXy=o49sk*2W%D1B2d-05^qVOc7 z`{SEHQ)_pFUI+R&2O!@{?#CLOuR)otGy5vupNsqM%&}gDCrKNM>t-Z(-dIQ*gX>vH z?wm2u)Mousj&*ndJV&Dq`J)TpA*~J9>yh4q4FRGp$Mrg-r6Emu=vOxA2m876R$#6k z`PxdhXCvhHAcg0x6yA?J`JNFrcs~!h@JyA;!h7P_VBW-I^)D-ffv9K2P-HNz3Zo4A zd&uoVI>y`Jw3<_E&fpXPiQl^F3AH(Vj08^`Qi#pU(?Dn4nK$pPL<+H4byj$fb?3dE zNFjbML!QO6Vpf5^nF;m-z4Ee>Jb7;ilJdMJyjQ9(*1ZyK3fo;Zw1nr7p8JA)^%upF z{kbn%Q{IMPxXyhc9&Z_lv(Z3fyIDVCaXqe+XTK1Gv^Q}_`x0xk5$!=tJq$k}j))uj zHGPc!@(Ac$uOX}wuzxFEuW?M=1Umb$LwV-Qmt8-HJ;M{}lVfXt9A4|pmp;xvqcdUd z2(ORFMpg1Z8eWTkSIITU($9ov#BBL>`g*J1DSpiu4JI$fGh&{r!8Eae2EI6tEgdIy zc1!{Hyse`13O1F{%6SGYENuI2Iu-`Mgaw>O@w~voXqdK3EO=YRu^`%kU}4Aqq+?%n} z1pd{(goWn|7S5qPx|%O|Th(B_9({*Ev~sZU)^N|-%zYjUpTc?(VWfb2*M?yp-0y$f zS+nM>qIP%EQA_(Y98`ptPMc$2#tyj~n%bM@w;*1@H>P!bMvUmcpS`xgm_hsuBVVrH zL&X@w`K}%}xfp{#r*#4Hrfz&p!t=kvT~7!91joO`?fV)vnfZ^$PQ|AAiyB9|{T7Tl z>~p&Hu?R1Jx|8SrwDX+&%{lTFaLw3kJfAa*`5<#A$M@-cK7Oy)>v28C<@08j&kC0h zVg~TLRsV};idc_e{nop4dK6a}3>w#JTmzDC^IkkNbbJ+s@7K6Dd9Xa1Q2QyTvpG$( z5emB5wPRxK9{fJ#%G>VZH~l(62o~XpgQkwf?Jcg3jF^Ie+|was_I=)_!HtB zRrwQ6Rh(op=zLZ^20Zs74I$saicT_fpBaKGXz6mWds{P>~14qG5M1^52#M92=PmN)@|%qORx`ie`JRPB)d>}O_d-@h z{>T9?pO3$n*lWDVZ7O#8_?YzvTt3H#HpvB_ch`fQ%xK^hy1zm~#5nEtkmK>#VvM^~ z<^xx94@Kj|rr9?vTnvK^4EIqmR{T*XcQWoD>tb!y$cyoo(SJm21NEPR`sW80Rtk5d zPXhg;Y!?Dx_tQ?{o{v1}^+@;gULU;mcYmaR*@<~m*Gs|o$~xrT_bOLj1Fn}Ky_2yV z(8SN*qW%#CX1_HOb=2P&{Uh-EslSeR_bWhKf(@PTz`Fkqq-&6f3Hl1Ld=hZZ{p-qq|1;_0iE?GK1br-$3R$>iasBJ?y0+8vpX_`d z`U;>Q^7rQ%;N{{y}I_{6g{$Rt;^_Lx;onr|YowU#Y`U<>}DZDXv4&%F&^COLZt(IXYaF zp~IPf^EzZay9#M&=*w^ZSLzTE6srS^Ltm$%7=!#AnZ7KVmAAeuUdhv!MWYVu!nX5= z<8Am?+)MKA@V%B*fA>1ehYaff*8D4Vh82Zvv(=feQyh1qS$V57@s{dLwC-?M+TU&d zN4n0||0{Kd=!|W%)tRqTTxX(Ld8;$=mg-Ej1JT(&><8gr5@#F#l{!Nd!?xM#%-1Qd zGtsQP)tPupbtYOlI@3E_`+Iqv{Q$nrKJAP69gg+y>ZhO0^>4Mt}AC#|vnU%{8>v*jw>$_NS$5?Cqc>*VsEii?5^on8h_V`>FUnKOXTO`B(9Hi*op4XNnGC@UTZ!6{qTBar(d7f{EGci5NJJqUU;qb_=Sn< zX(iX3Yw7I7!V!K9Os>yYz5H2SpQjIkiAB2|XX0~-$xwi=XEc|fEk(2P@wo)YD)DMA zL3@j4<-L8y%P~s4-OW3QiMyRnqxHRPP+601gZrLy8=RRk)>|9+dd6)an$@ATfq11? z+CVfbZ*3sna%}MN3>&QACNcaa{b1d5Zi7)}*}&H`ZUfP*4y_HuTWSN*th}{>c+0WD z7cy*+?~`tWuRP~AIIAoh_A)OIX3u4h7DHrO}D|8=iCOP z%d&y5XWRy&Sshv%h_}=RqFH%s1M!w)gU2##P+9A3kc_ka@Hw}^Ic3?v*E5Q}aZDD? z>d@Liyrnh}&B|LFh?h2~bG^F%Us{|_WAKvxUgyd9Nl^D(&x3fjd-6H79fN&6z9>KKA$@uFiWiV~?KS$0`|n{CCIy$1Y=!Yr&`3 zqnG!wOU52Q7MAB?i_n|3k+(7LuMhKK?9u1rW0;IRt`6%#J{&Kbl8?7F?{5h6VeIki zPVOhM*rU(e#~x>;=5$G0p)2g|Ks~mjj4+-# zz4MJ-$20%rWY5LEhaqmy&2y+@FW@yzRN zoJ{rI3%+7Jb85uLy-C#B#^b_xW?>B?admz3FF!3mg8M~qe?Meb;J#v-U+^)_eE#Kq z9ZxxNP3n1q(?hGvbMUb}gXPGx7}tEX>ICG6%|j<~ThlSLSJvL43tT=vmd<@ZZSI=y zJ5Q+1+B@`4$K&_MC1tvbYhLE$&W2CcIqYshI~aRxL;WYA{w}Wh^1@FQ*Cf3FdKlNl zJ}(>~f{7IEFd6ivNQ!HA0_%!r>X&&_-y6W^xMs$!t853dyi zZAx6trlw2k5z=FzZ>`vy?hErxGV50;Rya9T($k1dg%3 z{?Xit_z=y?$LCHQTg9un6EP&3m5WZBvPScXKad<5$jBQLI(A z-GX^8|B|+S=J{z`?7Aw?w!Z#x+lppwV{I#5>6^9{&B|NbX7gIxidSXPwxX3|+dpR5 zmU~V3m$dEv=cjG48>~Fr`ufLhE1I>9wXJxiZ`xKgD{pO^&1-EdUX?}LidK$oD-tm= z`E6lnx@~(u2QjfS`eeS=T~?p$>mRqRXx28?w&In(XYa44@@k-yct!P%>+BTcl+E%u_!%|B}zPTA!b`Jd^QIt4nK3U;ntDie}}lEyXMS(w3rGd27pTUTaJ7 zsw~=4wC?=0G&Zs1mFc!z@;tRA7qC{B)|S5haa)RJ<*hBnEB(@zqFH%s%WPh2OYy2K z+ETOwvE`&Q(`~u@`DsgjMy4!V`ufLhDVnu~wWWBaU)oYMD{pO?&1-EbUX?{#idK#- zzaBp0TQ%0(awh7^XMAJvI|9%6`u+U*@r*Bh&B|Cw`a1`{-qCZv*SdDp^&o%hyZG*Y z^xW?vcRi$swU_sOJ`-ciUeEn}dC_yf3&Qfqw;H;%`FPy$J{~BzeB8VEPA+=xS0C1c zd}~wl@%Z8W>M$QZ_q)c)_3A-fOvCkX*wok2KlfXonwQ5H^U`y_eqo+`?$_$_{BZ2K zUum8jQu7>Le3m!^bzt6u!aS!U&$qce?=I%aiBM^tn_QlF4uig?-{_KOiBG0KOC;Z< zv!iE;S9kL)k$a%8{{=DL!+osjK>j_3EVBfcSkdJIJw#b=2)e4o#;vd$m)l9P>| zB`$${9pv>a@s^Bdi5tK-7<_t`czfbm;tt#&g!{#3iMQKlQ>t%0_=?XG=SO_p*H4`V z=jvJF7XK{q;?vw22$LcA$T`t-#2@K7;>CT-JAVNB?cv%#*F8gQMt)n6U-22@AMkDj zA0fWnJwkMP%zB2{%jI*b^A$c19Om4Eje;bnixV)|EU%TnYLnq~bHgx=8;2#hpCP($ zjBdsCKBVv&;ui6zJwu#~I_j@p|9AmCLmY$l=^5fG{5$y!@gC5U&k$FG7JuI7`)@uA zWPcjJ=lf*dWB(Yx=lfaSV?P(a=lf0GV}BLD=lefC(|Nz^>!Rm{A5C0;HgWy6#Py?z z>vJ4Nqx{;!YdvpV7hdameoxnfYltN9x-nJpimD^_>OYv+o} zS7mW*7tPky<5s*JyTvOS$8piRn`;vP$0VM62`_tIm5!Ga4kNsjvrZ&le4FBU5zX4b z;zhi&0r4W5mA81w=CybcugW4`M6+dCyoguw#EWR<;N|2DywugF<7LEQgcm+MwK}x@ zi*HjLFQQp_ix=_A2E>bKR^H+zo7dt+yef-$5zUrm@giQy6EC8bgO{^1@X|0b9WUb! zBfRi|tkt2#i*HjLFQQp_ix=_A2E>bKR^H+zo7dt+yef-$5zUrm@giQy6EC8bgO~F& z@KTtRj+e=Y5nlL^*Xq#X#kVPr7tyS|#fx}l1L8$AD{t|V&1>-@UX?|>h-S;OcoDDU zi5Jnz!OOG^ysW<{9WPfNMtI?aW2-}p7vH8hUPQC<7BAwJ4Tu-fth~ibHm}8tcvTkh zBAPAB;zhiYCtgG=2QP2Tz{`%w>3C^AjPSyT(N>2RFTPE2yohGyEndVc8xSv|S$T_> zY+j2O@v1E1MKoKM#fx|)PrQg$4qk4^z)Qc2)A7=N7~zG7gY+j2O@v1E1MKoKM#fx|)PrQg$4qk50z{{*@9xutgGVeZ& z@WM?OR)-cZzD?2o8OG~Gv+@=%;*|}E7tyS|#Y;A?#fx}V7V#pQEz9CXypktgL?d46 z;A8qr+kd0@T;WoWkL3QF4Tlpx$~n6f@j2h7cz+_A)w#uoc%^gVLo_RI@sZ7I@gZK7 zMSO^6%d+?oujGjj(YotTO5^>jFHgtE=EDge2(Vb4+5W?~DUJ`(th~jCc%^gVLo_RI z@sZ7I@gZK7MSO^6%d+?oujGjj(GCP3o32R5$JWCM9|-VUomqVNHpTHFnw7Ws5U+Gj ze28Y{Ek3e&Ek4AnvWO4SY*`i`;*~t{AzC^3`0sG<(S~b0KJI}$_Z}_A?<=tPsNl|g zD?I0~E2cg!OeJQ28^pII+K=>~u5B|j_ak|JzaNR`2z<%$U)AM)q#4kg_9JFVxC-wl;$}yHP5q)dz`dysu1Qm8F}{D#r;Lc74xi5o1M1TI*Q`UIF84Sc>v;Z#eh%lqq8`;KqqxWE(_Qaz zy3)x;dz@xoh4Wt_uRTtm&e-F0FZcrRX^+#F6MLLCzzbP-nZ}pgm5{MCT=(>d#9U0oe_>uk#ZArhQI4F9AHVLs#Egp`Pz?wr+QOou(kq z2au=sI&}`xc?qX>dtSmvTt41^xz}l{yY70g({CM5wAZOrrmMY9>zv$q=sSive^`Nb za6i&&)V~Au5BEBqqPmVmwvskqk(4pF*iiT`Ha)b}p%g?pWz zA#EeBcOr#*ot`O`E9$=%&ycZp*?>CguU`Ln0qu2KjrM7;Q-J;IJS05c)c>bzCFCwzNjyU*V-5Ljl}iC ziR&LFuAfR=|E}bk>!x3X`=rJ<`FT%rpVY|b;4G`u=}h@VbE1QtKgQ?EoU8bDMssE2 zS2QahpDWKwktfEp<>PZ@&P}p;<8x)sJ;bZIF6SYl*}BH(%Cl1BIp@fh_r9XCIHwS= zXoV8_?&jLW{J9QO(RmWW;HKH>7@TmpW3Y_%8ZqeG8ONY#)~*(V;+0*9LD8(d#b7qC z#h`dq7BMKAEz4q1ypksdMYHl2gW{DuF(_I&7`!k8gOlc@V{pphj=?fwj>MpEXB>l~ zS-V&aidS|a21T>-7K7Qm7K7qdS;U}dwk(T5@k*W;6wS(842oCs#Gq*9VDRz`3~rg5 zj=`%BcMO&h*CYmgJL4D>&DzCcP`t7WF({gqw;0UkwHOqy$|43uvt?NfidXW)plDX! zVoHycUDv zRawNKXtpeiLGenS7!=LQTMUX<^2DHMQl{_&hS~(cJB?E)g+tM+( z{BXx0HqBYR+I6vSXB>l~S$T^=@yag5plDX!VlbQ6Vo48Ai1gWKEFG5Eg29fM_j7n1#;Z)Y5XqFK9G42oBFAqGXW@)m>HycUDv zRawNKXtpeiLGenS7!=LQTMUX<^2DHM+$N}d=L&B|L0idXW)plIb_@Dp`B8`#DN zcifbY!OuAU=fPRR2OFctX)so=7K6T>aSV!P9o){FZ91MOl1B2U_dJHD_NI!Jg zW3c=0^UZ(`eLJIl(|lGZnzf6?pm=2$Vo)?IZ!wt7YcVKZl|>ASX3Me|6tCooLD8(d z#h`d4PYjAi4Ax_E(k zX5}sBvUx4$#H+H1Iniuc7IWg2JTWJlmA9A^ujGk2(YovRO7|pe>P*L6Fywji?TCY& z@11#eS!1nlXB=~)Svy$FiC1 z#GGgcg1OPl(=nGn>@nBDw6XMgNOy^NP&9=$=2?i~c9ae`}X}(fQtj_M&_FXfOKzI{Dk&9`aehs!!3x57?3G?J$^jEq(pDO0bz38QR7E<%{ zKEu4U7kz7(=VatL(dBtmG0*x$o-0!GJg2z7oqOS!_x6%JuW)%r``afc@?7QeoLV~u z{rtAuOZKYv{Yy?Z+TT7NvOAHqzx}%z``ed-X9v=dlc2YO6`emy>~CL#dru%0_qYGZ z?w3}5E1{F({`Rj$eB9qoojr0#xWBz~K(xOd_w}Yp+zxqV4 zho|Pih(Y6P7B{sw^Iv^}iS8WRzdKv|?*WcLo_8Y8;{Nst+TY&&_W&!LKBMmej&#>u z?{B}@@kIOEOJ%y+-`?NJMc)J50laX(c>(pGj{1lD+ox)OJL#)H|0r}()uW=btz>`u z4A56175BHdMRw4Bb>>ZdZvmg*-`+WZw0m*A8OiT&?;Ie0{ucEg?r-P*ZvEBkA1|Q& z?fYN@?Qd^DTa)|SXMmR6-_EfjzNg&B%DCU0{eS$PA47PL{dxSJ9~XF!{c`-C@8@}s z{cHT5@2`1}{bc-}?{|5R{ayT???1T@cb@Z~Xz%+?iR)Vv*Y8hUuSr~gIdT0^;`$ti z{iwXQ@LGG}*M-;G3;(O|T6^J-`91qp|6G9eACkB}J#l?*;`)Nb^|ZwG8%nOZ4*gTO zH-6nJKR-+Ejo*rIq&+XbVOaiLER{34VcyPx;&EWkr+nL^bpriCG%FupCvYAmUd^59 zGoo4f_&R~}r)=K%I$;*@B3_lnxsqtMtoS;Cb0P6cp7SEnth`+(h*$EQ1Bqtky?=_A za~$!C#`%tD-K{g|CqHsHjh?3o*UR6Zj_W61khnfGWo~bA?b{y5wP@B>7T4mHt%z&U zth~i_Hm}9CcvTj0Et)OM;#$0tC$2@a@)p7O&)qYthQV_0t)+o_SX~ zu6Ms6aoznh6ZY4>?QvX-W^HA0EneA*xE9UITU=-JT3m})Wf9k+*|IFI#VdK@S~M$f zaV=iS6W5|yd5dfDN}jkDtsGqcZw9VMe=r@_e|zRk|(Z3v+@?#;*~scEt-|LxE8PEiEGiy!FBGW_`V*^ zL-O~gjS~P1bi)-=9R>ZYvR^H+|o7du6yef;h7R{Dr zaV=iS6W5|yd5dfDN}jkD&B|L`i&yf*wP@wwx^D)qcixwd>wzywTzCIWleqS6kKJqFH&1Yw=2+xE9UITU?7*^2D`h z<>31G3|w#gXgaQkz94aZPFd?l-}X4JMYFcDxE8N$MO=$!vPM(wQqYI*P>Zl zSzL=(wj!=Yv+@?#*}N9l;#FD1wP?01i)-;pp12mx%3EBESMtQQXjb0hTD+1cu0<;c z*JCqq-TH}iT-U!KaXqFiT>G}iaV?s)mBqDqWh>%ZG%Ig$oy}`;EnbyHT#IJQvbYwn z^ z%d*%OujGks(X711ws<8^Y>Q^)Ew;rgd170%a^A|PR=Z?Ppacqlb!qFH&1?QC9)ZSkrsVp}v@mc_PsB~NUN zX5}rm#VdJYTQni`}W7NEt<8L#kP25 zFJfCXD{rx#&1NqFH&1ZShK;*cOf0uA|YyziRy>2$uE7zqy}J^Xs+^9?Qvh z8P~rsvCPlom4#*B{&+tvnzfI`vUp`5Vp%jRZ?T-sYq2a|l|?LzX3Mfz7O&)qWznp> z#j)QD|upBwC?)pQY?@EYC4uTzA&-OPxqCDW#9fdmPNDnu~-(b>_aSz zX5}rGvw1C+#jCQ2WzlR|7R%z5Jh3dAmA6)8c`cU3tFnk?(QH{3%i@(hu`HUEw^$ah z^6wzecRC-z?XKn?b#e(-6zE9XM z%;!?PY~u5Y-t%m5`FzFYvpqE*??23EP?!(j^IYKMJ`{V;)93Bq^W2e|m-jE`#rF{S zTNmcZ_dJ)nJZtct;f1x+aLxBTOY_{7ny2?U=7rbAT%Nbr&oL!=eld|J!fUa529;?xKDYSp z=&Z2q^(A?3ad{qFd>@rYJ%*x;;N{vg~hzB~G7`z|8i9c6v%!B>2D^rsQuaeP;ibAbP+cSpzK zZAX0c=;BlHot>$*lOgxW=IFiA$?m<;%6$IfK4rZ#O8vgw>FzrB9%?i4+k*VUcSb8a zXIGt2(Wk1i;^pp>NWj5_+K<1Naofg==Cv>C032NZLf^aH<#TFyoeS2x>#pA!ec16t z?~InpboI{YT~6*ylr`A->twWp?{GeV`maF!!*@pCq<2P1-wgUkPxSAMt}1zFbS3DU zkc#h&u8Q=pcR-mpb-f>a;X9*aN!yC+eMsRuqhrON_Ri=M)KP!+`o|0CozYonpWYeW zgnuXB8QlU}@|{tRJMnihqjyHPn|ppd;yau>%soHG@E-g4c%FXD;63)$@q51S=RNkh z@q4}x=RNkF@q4~6<~{a-@q4~c<$Gp7as6lXe&??f*MCl2_jI_9_y;DgPfc8pPh3w+ zTz@HXy(hfZ`=ujX-xmaWzx2BBTJM+M6<+IGORE#tpG;hTDRKQ^;`-6V^^X(Rzbv`t zn!Zo2FW$Hgf{us%+%fsSY2D#>22JWbF_oBn2^D&m*tm(Z@uy^6|A% zzY^Z!e7}Td<>PCkL0$63*G8Pbsa`6pu1op&+K6+tr2OzM#UUe*O$n5x3*&ca*D%$^d77HWzD1M{_=_!kH3`loSFXObrSa%(JbDrzlc|M z<+vr9mAC$q&1?NdyefvFO@$? z_m|hbc>D!l?kaCS=5-SH7tyQ@t-pv@Hl)9ZX63EFWb;~o5wFUkzldhbvi>4o$muC3O=Pys{zvMKmjK{Uw{%`ipo~7X3vu zTbA_~@k*ZlBAS)A{vuw<(_cih^44F(D|z~hXjb0(i+CkZe-W)5e|bxWzij?_y1y)Y z@%T$w`^M-mUMF#X5zX4r`ippFL;8zoR^IwcHm~&;@v1EPi)gki>o4M!JpDy9D{uWp zyppHCh-T%jzlc}z^cT^ry!99HN}m2AS~>pmjtqaHc!xi^pH^1;6tA#p@*QFQQo+T7MC*Y)F3*&B|MU z$>z2GB3_k6e-X`=W&K6GlBd6jX63EFh*$FT7tyS|^%wCo4M!JpDy9D{uWpyppHCh*pljd?CYMmOqp3FJE~P z`3oQLTN_w^@j8k7i)dEf`ippFL;8zoR^IwcHm~&;@v1EPi)gki>o4M!JpDy9D{uWp zyppHCh-T%jzlc}z^cT^ry!99HN}m2AS~>pmjSPQz;P>hNvgJkOFMPmnZD9Sy>m=?k zqFH(CFXELA=`W&LdFwCPyw+dDtFq`XqS>;nzlc}z^cT^ry!99HN}m2Anw7WyB3{YU zUqrL=)?dUcdHRcJ<@n2E8UC_!Z@Rzy@I~Y=e86vQVEx7GBo3{7)?dV{vgj|O*|My^h*$FT7tyS|^%wCeNU&JeU`ip4g z_{&c-{AIwtbbs0TBJvkL;I}rg{^E5K_ZQKuy!99H%7*k8(X71nmuz0^FXB~M^cT@= zS=L{~D|z~hXjb0(i+CkZe-X{fTYnL+S$XR(;*~u8MYMAK<+mCBGW!3#zwkZK zDx_18`1gkwk-zYPrL}?e7q633+&g%e;61CYuz_e+-ujDpWkdRlXjb0(OE$0d7xAhr z`ip3`EbA}gl|21LG%IiYMZA)yzldh#t-pv@^7I$cti1IX@k*ZlA{zarjvx>J(#~Vi z{{88H_x_PQkLBejzA(P8R>u1-XYzrI)w%T#uao$ABAS)A{vlr3jQ$~-mAC$p&1?Nb zyefsujJ_;qFH(CAL5lf{X;Y>Z~a5OlBa)&*4=m#dmk*v zQ3KzWcK;88Ug7WQFCzco0~V`u>mObxasLp_%3J>suWUyD5Y5V4|H$UG{vlqKMgI`Z zmSz1zyppGXh-T%je~4G|^bgUjy!8+9N}m29nw7WyAzsPTKSVna|G2X<-9OHK5%~u< zxLBQA|L{7A`-f;&-uj1lWi$GRXjb0(M>enZ5Amuj`iE$?EbAZQl|21JG%IiYL%fow ze~4z~t$&DD^7IeUti1IP@k*ZlAzC^9p|fb}kM#a=G3L{QfD`_X##uD=x45%t7Iid_ z8`s`4f8mWSE_jpE#ZkG6;LPCl!AEe`!i3sTc1jbDe&`QAp8If(<2xgl z&mHH^erPD>b%K-OJO3!}%BEI-Rs_$G@n!LBi1TZ&#Pu6o9wT$7mQT5q-9C*Yzm&?(&Xg&xwcI$w(YpwD}$av ze_ZpNjeF2%wpCXJpFRm|(u*pF)|`wpFOE2?m~T>N%y+fRw`XR)Jl|t|RaMZ6e4oOh zi#T@TtW#aTG_|(6S5+_<^qr(vM)W$+Taljj^gcLB1^MF}^5jSQ73o#^o|l8J^Cox} z2<3JmUG3y5UWM9M^sG4rMONU9oe8xY`#~URysTx>;#Mk$=K{SBZMfC7;V9RJ*A;bh zRBk|UOwb&xa%Hz6-&@Ve`O{C3boT^H#qNk%zNAl?~lwwVC?&?N@=!sq(oa*%b z1oEGb{H5>0yQ1=GYnH#Qr2In7*U)bTYe-SwD!V#3IXEY{#+5x2`ED&O z8#*l2GyhE;P}d{#Rl$1(64w=lPgf1E=m{Vne_>V6eAQIvQ#+8)tlm|@g9E@buA=bg zs{Z-DIK+W%s06(p>6^S)S<%_EYH&p*xj$hio)ls`d9R>s;U@K)hEoW>ezf$gKJka@>z=%>a@D>d0!6e!h6G!&!?GBRlcII zF+Z#-UsYHZ+HwSZ2mXJ-!o>^dI?i{f&mOMtsSU4l!Ab5KXZ|41b;xrl^1Ot3_OB>B zSaT}fc2HHXd{qI@*+3Qqz;*rj-=$gng@#c<} zMfj)VV?B;?<=zzZ3z|$_hM_J&O;u2bx-_sZy(wR50ZwUs3AfX5Y}bXzsi@RF>K@(8+e7 zB~1oTw0AN-!g1OE)iv-CklTW}wRQMq8!km6?mmlO+MXC9#%NpmKI<%Uzy9Fbp=}TKAbA z{n+eaMv?(A0OTD z6Nl>;EnMK|B=eiv{EXs8H>)`$vx^beE?n3;qOoz_f{t@Wk6655(Y)&xv^3X=(7bT* zwXH3QNzRC1InMnMxs=wV`rti#r;d znw#1%kJFURP0a}RMIFic-R1sX#{4ceMH@G6QPYw}r+Vt3rF{V=g;D!d6&j(DoXrd8 zH_k>ouBEHIxGlz6E^y60aOODnZyj^zp?A~##N&Ki@Cx*aoOAuv;eLIeZM_MM{Nu~S$IiK@6e?Fi0=X{=X&hzYjneS2Mq4%f@tlO1u$nEN9Lv9nl!&vWRJ8`nx zQ=%q%SjQA#$D^PFsgtp;!O~??hH>VfrH<#bt{SG}(W~&XnxJZGuC)E`NHs&s(MNsu zUdsQIr&Qg8RjIP@7RD2|#j^*->v_FnR~T7~M*{tg<0%^lE ztr^$5ks@OqS_iIoA+^}F*!i8;oHtnaj_iP%$h!T$$a+llv+(0?G~}W)0~uCe?JH&; zdvcuacN+YYQg>BXH}LwZa0KJgCH-3|<1&5`^MNV+&+*!We9rYfY}4?7nxy-AQOjaY zF92;P($nX$4VKUuug?T+2h!#6%b3$z7R!73vcjf4C7_dU5qP#EjUZo^ucZz#NLr?z z``!IEZRkENpbB*x?v5PPZP<7%e6qOLfWMHh0fR^541%{8%RIP7dafdI5ZC9ep=`phz+L4wwv|JaunS^oG8)qn$mFi2+KFJn87y=yf~t zKgfRI^@x%6z4K}32asP0KqG(Hx&lYPPe9j3zvO!hd`}}bKs}l3V3Wq)7>Bs|az{k@ zGS;2ZH{VP*U;3$hj89qbO7I=idg%BQ8aaf)@;Ph1YU+O-dG7kVz<-&x*X)k3>OA6s zva&}8)DpDUO6#~k6hu!>4@CP>1vh~^1%iU7ZqO~z@385C$R=h%H*>;= zkQYQ=jh$y~$$V2T>t6t#m$a_J9m{lmIiSr)`o4>9`t}3RVr7g$n{AxFzvVS8Vk_k+%{vvJz;8vJ9n zAa$f5H3WT{cDujLIFzBRvAK=~PFrJbt`2<0<~rs$e6cpyAyE@xE-%0#7@Vwz;*B8=ETxErO(N zZtdf4o0|>#DkN=lYae%yGk=@0-VYvQb88>a_RaE;fL?Q1Tie_OSZbA9}|kni?pdk>&Zdq+8QVH+lW(n~X2-Vwe}1!7gBx?l9>xly(>ZMMly3D>GWBf zLEDR@=fc*#vG&7jwu9rb6Z*I3!qyG$xp2)VA?wt+a9qq>I7xl4*IYO@{RPh@!%C%W z?0m?w5!ZZJr5^KK;%ilZ#9Vp-=F+k0pO>;xe8%UR@>!sDAQ_)) z=;J|aM>0N_bmFiSv2vp?>}jKA{tmW}*S6OMS`SjTi*D?IW5d25N51jZ z>ru{NJ=Ry}oay-L^=CSK#0#1WCR0&1)tm&xm3Gi-kkWXuQstJxAS<*wVN{m^01%R#r- z`_^sadLQnCSoaC!6(G-E?_2jwob^8P%m$CW-WR4^qX&MQx>tecQO0UsYXsY5+Wsom zbPT^4=N|AHzrXG#-Trpax{-|EC*8eNPh) z^NfK_{5v+iM{sNUL)&VH{9+@2i6j4UTRy_kUh-r8!U*q2JjN$5zNSxc%ijt4muvaM z+CSjPUlXHiE7#SIM;yLn+Cl$B-xRMMb&y|T`uP<{{zvV80tUVM>AsJk?=<%kypM=C zj$M#{h3V(d9r+)L>E{XXO*8HItHbv(yB+5y*beG6UOUE|?f8mK?{VbE`ie5}*>PRQ zCYKGyV!O`Gcby|Imaogrhc^frn>KvL2lRmN82Sp=xhc>1fOA?a41a7~cLe1|)d1d4VfTHayM%Ryf!*mCG6K%Wiz zdKaBBr3KndBs-Q_eP`&>(7B;`a_{JeJ-F-TZ_}3pDATEB6`MXT0Bt{#9Y;m!4WR8q zvg0VBv+fSidXP-r1)&Rj-MPlr&1-{sHO|4y`oBU8SoAacip9)$@EXjl|D&VVSS*yg z`F_(k-%2;%4^QP|-#Dl41fPwW^)H6X5UqQM1k$W?R=Z-iSlsMG8H1bk8++qs=J^IU z>*w`_oBb$X20o3O_45pFPJmtty2j1=d2ZZTpqC(N+^nA$JMPA=JHcacvmP7pq|XMe z1IgfqbfbrOxY<2EpdQk86M1a)kD|O+VlJe-&5%_99^0-9*C6gAeK+X&pxbsGrSAuQ zJm|Jv3!O3gQPA^1w{2_9XiPL&*l&!kVD@3#tbZ5E*|uGVCQAK_quI@agrL z&L5cdnS-F`g09zRI)C6^pE-uSG04;FGo3%^%f9QtW9+*V>y@;-e3nBp_Dy;``!;&p z0$!uH&Yk`1tsA^%O|A2BN3I!X)=xk3n!}gT`EcKSSrF)&tWF-*jBN?Xwv?MzPM$LhAn&G+TL`Hs2yo;sD!=r;G_sBSkr?9y%fJx-a|;eXjLV_zjG zV|2S=aqm9wMV{!^zag)$Ij0mndyw>;vmwvSIW?f|M$&W6hCKJ269Ih}lAd!mDoQT}Z7b4x7o9$T0ccy0HjsXnZ_TUGIVW4AIZ$;_dppOB4lZ&7A9|AoGbW{K13C=m6!#SXfaKAYm_I?%83?%+Gsm%UuzRANp zH{aE`_G2&V8hpEd^E#b=K2DySFWKKbt8?6oM%y2RRQ9Lf25x(Q!c!xEpO5QlJgc(? zse^Wcd!Y|t&FEURYbMflNW?Vvt6Q-b%{3k3mg`Ei`)Z`mAnnA$0MGik&-w6-&q5@g z^Z5z(hq$iE`NN#|xe+(FY?u4A1}Y><{cjY^4RAgAVI=CE_Y1SYcL4H^;re>~=6=CMB(6(v4Tr!$Cc;1m~XkRdEV>) zdG+7AS~VrWW}otGlNzs|{X6wg(f{q^L#YE_2|i2kZ*xSC2fofPE?zVN|5f2>iagsF zObZiN%5~1lJm*2oY5PydUczu7DDI~fZX2D|KzZ=c}{#R%}-$|g{8rXC2qG3xQ?goKRGNN zE{~6;MJX($urxTaWbZ5YKQC$fPYz4t=f}rVT?$JnEDcU9*=H*H$C9@HfDpB$Es-w_{6yHi+7VQG+Ji3cAB!jiWCek?wgA}K7Turx@ql*qXUZU4z( zY37shvDBHuQVL6h6ibPmd(ifu9G1F15g$uiQdml1X^>(mk#i5){*%Mfkx#|P()JXV zQdku2X^>(mk#i5){*%Mf!Y{_h z(vcLFQdk9!rrw>BdUwj8e0NG=BIh2o{U?W|&Tq!YQdSB}sd;IT&P$1$ zd(ifu9F`7!D?XOSq_C92(jdiBBIh2o{U?W|yzj=x()bjXQdkRdsJ`EFH>HigO>oFaNMo1slA|qaw@e>T8x&E?-_;Tvgp%SzA|J+)&xrRNYwO zWGt?1!kFLLRKL8Wsky4Scv)pbzWlhSdP#GAqyDX#nwlGHm)}vcq^8m)^H)W4V`Xh~ zlTfE=?#jBl`X!YptckhP{%u}dnD6x43`lKrbtBtaQMMxdMqk#k{(wq zsbAjITwyqS=iO6TX9%^+8tSSmn%~<{Z4XE8H2tr*xT$hwg$zBaf%xSpbZS$mgbH$2 z)i2ZB|7R7&aie_?Rnx)?ixq6Sxu&*>*VDtZJjT9@)g`!|gX=rR-aj(*tLe9^Cxf@C zwv45!GV@k7DRip}TklbCB7J+v0x3Vo<54$1N_-TH{Hef;M`7HhzUkrXqw+7qyOyVi zXXE+~k^gwsg~Pnj_b&%kQ*&i=HCmBYpVBRwJ-QPb#&-3b@Q+#sAo=iJm$|W z-w&uu&sQqowMNc@oZ+D7g4Tsp06M9p72$d_(gf0mY1(XDcOpf`IXDYrR>&y@&rRgG}-ce(*g#9DH8OS~t?+ z+XOk7zgTqHu!#z@eX)>9lu2*GyVAQoHfsxcD{~0 zcl|Zszl{C$TG<`X={$}pWxa;HC1|ge-f>qb6C9(0(f(F}&c4=x=P1%ro6ibnicY#f zJA!nFO%FsiF-vT3C+LTfYV15S#^&3MVg3&T>ZQ}AZQ+i0>-vtN+<4Hx@1mQ&{Qxv0 z!}MV@cyHEv4n~eyXAFZqQhovG4M@48ME>cK|8~aoY|zXYk*^b}i(_h8{>U+>4%5#0 zKZ5<~F^sgdTq5$jQ04&AWKF-KrO}Z;1vDd{eB~(LDLS*tP+ZC%1bsH>8%g&&^kbmU z1bvf>e;oSb2dxZg1L-`R2M#sf{^PO<>#leZO>%1R3b{)ikh+U6ad!MO4)~-vzZ|r*Q z0o`|F6Wz$ucD;5@Uv^yvp1nxguGg+Hc3lVB9wcqoYuC8#x*hc0NZPK~u5pjEd#wG3 z9J^lIto7Z4atd@~*QA@ix$WB6+%E9mqHSw>%U*}q_}U=ycOn^I+w!umCm*yONXFNa z&T%ONZ99_fYg=CK!`ChZ&o(66*S5TpfUkWG{0rDtzm?VsAHY8B2JI-4@wKFz@iKkf z`LYXFt!GHNV<GcdD0kgjZL@EIUI+S%q!;_vt%WTPLoCI*vp}DX^ff8t zTel@J#>c797j)_)PYqHJc`PeTxkeABO{{whcpl}P@3ls-O{VRy!e1GFW3xxVYv!zV zMY{dlKs$_NuuZy=5f9t*4+qq{HMWPfzUc5iim_tcI~{YFN8$bg-^J>xa4zCV6Bk~l zMtEvH`&6SZTdnlxsBff=RSyQnD1Um7ry;aY-C*rgBZrl$=Z9U>YutCC&Rb2LKXdAQ z!mg9&O-!BVpw28;ooB0yJU4lMuF6p->!Ey(%Q?^k=a#KU0_rv`dsOQmtP4k57hYtI zyU4l-v?<`(jk>phXN$Iz);~Z`!!oT4vw*dW5cs9xdQ67zOk55RWLm@0tc$WZ-iJ_b z{LcdFLoDaF{H=e``k+5!Ue?b8YAS6h)7LgMbV(p+Wn^*u{sg_b?;Fa2n`xUEZ=bJy z1Y~w1+4EsWTfS>N>^P5gpuWd{y4<_OdvX0uTFkq@;{;~#rZ!!~gluI2W zWNb`%3vIl@E9@){hP_*58d8YnES$@@A|%2N>(_KE}EmGR#=Ftof(+wF+Pa-KC*wz!d3*a2BfIXG0kzQfQEk6+WIty6C}PC;sJ{H-jgXy)U*!1G zckOvKpx&eFoY(eOE3&>^`{17d2d1vkxHsq8z{L;HhdiZn)nxU4m9Ex9W0ycq1KPbC za<*#!*7jF8tE+K8<-3N?Ep#1z6~eDw1D7hg+XH^}E61<3{Z(U)^BVJxAKpZ!4E}<%?`T%GMy+c*|^upE7zju?721z8y$5-r5TUFKHQl`L-&lBPZ(H zSpGF68*lBoF1*I`ZS$r4_^59)eVzYGKz$Z#4}piPeC_F>>cGRbR%W^$r{j=cj{IHB z_gb0lFaX+07HG4Po^jDlAFsq*@3vj?b4(k+Z+u%jutFZwhJ{C+@qRji@&2i6yqh8S z5K?r!zY~AF$(MtA%y@rkfbo7KX1rN`0m_^4etLlM{zV_--2)lX@qV!PcrQX;H&S%G zKdQ$&0@_}r=y-!Z(0K0x9-h=bu%I0=JZ)|tWb6ceg7$yy6><+UG{?xAX#5`dc7Sgf z`9}KMYZ1JqA?~9tgP?Cm%3|J7E8JeI!xk1z-Qk_WNg9;tLbCxeZ+P*Ut!;T``vuGr}7b79Fvpav)8LO4ToRM zl=Z6CcbocS@9T5^)48wTh&YwwY<%?=H7W`w9QCzUk^I(>yahvRSQAyM3Vb@T$=<5OaD#IJAuYB+seLaBS!0^TDYrdNg_SF~PDi`0TIQM-jbZ>pl{EgAqrux40wIAinz^C=Ksov=81n8xpYkh61ck9any#z_? zYg2t+`sxIa(buN;XnoBFtpmyEi*z$)@$|I=yq{u><+XgPSL^;6d$4{NP-{8oXIhP` zv$Xu3;LrMPKt07WS=Nx%D>S_abPM#SwJf1?o>BLC|-CPHuN!SP$iOBEN(6_^pdp z&(iX;Nkdvky4RuSgVv6;-bH8ZSq54JX#?qJ`Bu*gT^c$!G*8wJ{eIoAcy$NSM|+K> z*z|ET&^;Y*lXp|U9b6V#<&df%-YiGPw2j9 zfmVuS)|N;&<;*?lO5}@Q3|MJv>jOS(Slitgr!=T3s_$6LZ9^G@x%EGC_+l})&&{{L zZ@%MhzCEY%nYQK~i(+p5j!+q*J#S_p%{piG#ZH-6+?Aq?!QJ|%-ni>Vp7xXLC-;TB zGVtt0(zshc+2F1Yv^_`~ck3s+an}y|ZX}Jn^^?t*n{T5t|LYF!)??Bmy$9tK=mvMB z_lLXu-v`t~v=^@x`S|Lmqr6vQex~O6Lx(_wAq^K{EDD zy3vDsUNL=`dED8zT6>8#%IsUc1{vd#XYX5$SbK#d$GvYwzB2H2(ax}MwHEtIrk$pa zX5<^&==@Oswy_nw#x^?FICaMAyvO0o=v>t|-!V5|&8d9GHgf+EwT;dNZrk{pQzq6n zN>IkwMko9T`)&HX7kSz?HoV-IZIps%50bWx4KEwpr~z#^lD3TvFS~6c0{Si_Z5tb2 zHe+qRjcuqm9oyLOO>G<9D0dRc*aqqGY{SSXf()~Fy=Iw~;Rme{$;^4Ao4OfCFxFm( z{8IQw%X(m(kv|>R?(yjWkFkjjpX=Wyc7fN-hZ|h>9BUJY+x%Ea14Im#HD*l>04J|94yo)0&q_cb5R2hV;aJs)mJH}l~t z(Dote`EWzJdp_&}y$4Cpha1w3KFqh#XZ8ulCf5I#*5^T#%L3il1nEX+Zhv89l>C=7 zAAVv@W0cp-hdGe72g#lfr>yzBuBQaF-AML)7^Tk#Z5NU~9}1oGQ5|SIk?i?s&F7=@ zVYbYN8GX!$tiK3tH1i>vDD&Z7&P3jC9t24D@`^P5q4t&WDfU zEDDwz)Nt7QK(sfA0F3UXw&1m1%NS{I42|1s| zH}}T4cXk_o??PIL^bK5Rp$@KvaSr5WLV$)_QM`*b`jRF1uh+fjBO zc)pGFbtK|sKfcS6HXwB(eHV%6h=>)gU(y#58$3I~GfNea&3#?k2+u0fCLTa~Jx{3* zYw*Sv%uGiwj6+L`UI|jaSiQy(0N~Q3le=L&w%i364!FMx5jlCt|fD= zntM~chkFR+dA~-C@cyg|-ycGvPvt&3_slu(mgDy`$p0J?aWfL_ejDS(dpF{R`@Mg_ zH`jZ)#>IUtuJ?28>22`L!|z2X)03-Yzr7pZTzASt-a_<)>tEah;2t~Iow&}$HU5#v z=eicx^y$lHBh5jYi!=`@Qx%67dGQLrlWd3!Zm5GW2A*&l;2r-v*%7Im|UP~ z8y}H;&?ZeLKl!@1L}`VFmbp1fn`mg`WDQZVETrkO{wQr?k)i!Y_EN|7{`@}O3(w<*j zyl4XctHLqoyaM26T9{Z+uJfzI)z#s-a3I8qw)w=)p&R@h`&)ec>`dV&g`fY;PYj%b zp9urvN85aI_{sO_87FrB*^|Og3O|DiKNAPUkGA>b@KYCvkDs0tep2`uRQQ=RAbzyX zCx@S%8S(LRAcdb4eg+kO3J1iGw)y1nbIgj5pTjBqr0_GS@H2Tp{Aim`4nO%>@$vIo z3O_0Q3@ZFg84y3(=99xu-D&ahb0USG6n+L3e)vv?{@1Uy%_oPSog?GpM_rV9@8tjT z_fDqve|qizaNo3l{Aim`4nN06#mA48!cS`c8C3Jn)B*9MZ9Xyl{K-ClP;h2^{N$wY zlfuuS!p{Wz3{n4ckhc5eFw~qIA47R545ctMxG*$^#>Y@W3PULj z4K57XXHWZ|hqT=%hoO_>;$x^Jg`pIN1{a1VB{C0byH5^7r5DD>(99HuQWzRs7_y&> z=zkv4cAp%E+Aofeq4_Bcr7$$OFl0Z|)IWx_-6w~keFgC`v?zt46ov*DhU{nd`p1yA z`{XcW6~@OPYy%nm&M1>$`poD7#ds{vY#jKe;(3ypB#p| zisNIbJ%ynZh6Wdg>~|>ik0EXM$zkZw74b2&IfbDVh6WXeCMI-FLEC+D7#cG@K8CiY zFqFd3;KEQs=M=QvCx@X$W$`hzBZZ+9h6Wdg5;~`#?LIjSZND}?hIXegl)}*9!caoz z6tvwZhoRSI#m7*03PULj4K55NbWTCreR3GepBo=T`%@T7VQ6q+D4}x-+U}FXP{R%J zF?1+}p%jJ&7lsl#r=aaVISlQdA0Iqn_?vumNTerl=(D4+8QWzRs z7)t1zg0}nQFjR6|d<>mTVJL;6!G)oO&M9cSPYy$o+v8&>n4fx|PwIU>OKK_`^P8Hh zii`QHqPelMwz)}=HBFN%>+0&4RN~JiXkzZP{KfV4b@>$)wac5Q6y~p3-c)vAC`}rfmN5y84=BmCKhG7gtu*RWwyM)>hWl-dAl`eNXigRuGltG|H*HS0?_F zgZ|g+eLm)Ivh;t}N85dJ80x8vkD=@ohGO+5igD??s=B$dwywCiwz;~IW(2!wSkYWj zSykBpN{N_W#ZAqPwaf3QSW>^dsky>%_RhPfvd$1{mo?N?S2Vx3q1v`oV-3Z{_%k;Z z@|G)_XLaLp6mm?@H092w`sEemtg2t8xf@+viz}OImsF5P*SD;)L0hx7QvF*qHA%Av z)jTvQp>qn_?vuk%usS}5a#I*eVQ6q+D4}x-+U}FX(CnJ{7|Ks!D21WHg`tGbDQLS- z4nv#oijSe96oyh58eAAk=$wMK`{XcmaCv+Tm8CG0!qDKtP(tSvwB09%p`6C}7%ER; zD21WHg`tGbDQLS-4nqr9#K+LW6oyh58eAAk=$wMK`{XdRZDo86)ub?#!qDKtP(tSv zwB09%p`-7MkD=xihEfqn_?vumNiH`Uf+MdEt3PXbn zLkXQz&~~33hKf4lV`x_jLn#amE(|4fPC?s!au{0mKzt1CO<^d7p}~crgw82wyH5^7 z-5-pPp?xU~r7$$OFqF_a1#S0JcRZ{y^p;1dvAF&*zOVeSQoBCsQyvvr zx~#dl_@1KTV)KMbRb%BH^~)F6uf!8AHT8{nl0`qyf`?!#mQ*%Xmn^NTuWX(sfA_K( z@;s_~Wkdb)>gBi?s-}mBgQjKY%XK!c4@+HN^NhsbJfD~af?AA6b1IhAE??19fz_1Z zD0dgybyD~?cz&&FrR-fEk6QaFw)1SMPnXrj?t&DSyA$PpFXbNb{6#I1a(BAQ4Mm;# zQsrY1Y8QW%?*#U z`L=+sihKdfKaOH<%eDNALg|4i)^L!~&uQUO*rZYo_4iIFsNi#bwM%Q4R4%V-A~m4O zL=BWV(w4a!GOH;w(+W)kk2~)G@|H3$Xr+&}LfP)TW61mbIOL&EEkkrU(_ibu>FN%a z^IB;wAF-^UEw|XN(*l-inD6(sObi5lnP3ch16fu^X6T}T*Owidi~om%>h%WvmM?(v zndlpFqExfkW-V0nC()(XwpFFxjM~NYa4mG<5xsp<%~B<<@=e0efykBoH0V>~?WmM5 z0lrTc`=-rk-IrkO#;A*7FSL8wil%phGo)rhKKq`9eh1OF&&s&4Z(hsq)nmi4gVkq6 zaBV&u7yZe-;X(YEqH4kxzFD3+;n-8(v<=!1$CTst=-En@fal{#)Ip{y4zGmVdFb;< z6%KF4Z;sVGkKkPDKPIxEAw{&Z|YQQ)IGJTP5 zSjx39-psVn5d6F_G#UTHh^({#%1;Zwj5?L7m|K6Z_H)-k{u?51Jo=q2`n(R~rt3HW z-Fww!w3cN*xl+o`zXO9w?BwE-SS;U?uJ$~Vt}e-=jiU{r3jpbiP;DT~7eLiM3^dF8 z=(JVEHI3DG+kH{$WvTlm``Xl-;pU&w+^FXOj?J%xf1=pvEVT3V-%$^%V0CrwGUb(x z8W%HB#w$Dl8FRZ0x75_vRkJmmTPQbMczki?8l1DA)}!fa$l2^Ca1PU;-`I=32SLw_ zp&ta@54v*EDa)jZ_SpHMzX=?>p;l$toF3(XH*9IA$2%k+na!7b#3ri9L;5`7%U z2el68uf(n!+h30MPm=au58O=)KdYcX$c?G5%f)97OPUICbF9$Ml2f?;41g!&U zw{Fkm*mfL2-shPYXjx?WLgKqNgLW9{3+&q%lcVMB0R0e>$n&+_W#sW&{2uzIpwr20 z$2jP8s+BWL>2{j7(w0iV^ZzK{3;Cn8Ed@aITmLPhq~j0N=zN+pq`e8YD0J^gO*Dp$YvP8~El=!h+Pw{@- zQzdmj*g-i>4b@9@Tu5A-y7gRR>eh3#AG4@OEncw{vYAic(JeBkdU?%zB3-@!xSSSl z2!K%`JX%)ST+zUpU6Sn+}c%=inL5)Sr$wI0qNW z^}UE=3=MaYLVFjYvP_BBwX6n_A^ukKE2ZvojF;gLt0CYq_Xnuku9q0UMaocj)8!s; zkzB)nI&EEEW%E;alO?}h>bSvG$7tN`8M{-sw{2QcCu7fXWj(ja_zZ`2vMtlY%OPu- z&>n$4cx}c?+ptsr;_5qUwf)|LGNn?c2YQ$uz9m}5FSaBVs-=yUOAuS*{TEaa`Do{D zcE5O^WX6s4($4mX%se#=V@-aJ|2KukYr|h19fvu{e@^nxjM{L}saF^&hkOr9z1bL> z8Db}Bih7sOc&|hnnDEi#{!V{c3S+M0D9YUH$Q;@Nhd+?aheT%B9v7n{Et9bgWsd)Ny85!T)7Mgt z2`B>!=eQAv9<`)?1r}}CM&j!)B2U}fY_#!+j77fmxf^ZEgDktx;TB9zX1?Nl$hsCH zzZvrfBBWx`rLIHd)6RNCeo)Gp_U&`p*E)giLu}bs`@SsgImd2q@AfT%oF1or!&@gf z?Hj6YMI5ix3bc(Wc5W>~p8b)z^%BgjSiVp{#<+3px{*>a*KWZzF)+{L_#Gef4OS9)36G zuynNyuZ^+&v37CLO;~&@eeOJu&O>p`Ho@>6D09lD-bYp9Q@;q5WkzmK^-Lv-WtA8=iB?!D2Tdk=gjoy}95?76qfo_mk9 zCN%ff)i1vz*G#~)6OME2{HtZ{5oHPHPFW1+2pX+D-HFXnH z^z*vzzUSX8k$GKo{?+CCpMNkI|qMMczVylx{v+O z!M~Gor_RB;?7(yIlkL6d;4O09dk!A8nmm2a!Ouz=XAU;}{msE&kTT93+%4CA&%qB# zzB31#ItH49za-<+dk+4N(409~k5&J3@HQ#q%)z?Mz;o~`cE94y!8wxGdk#KdXnoJY zBP4&|Irz`Q*Lx0rPH4U7U_I{699)hV{@Bye`DjSw?SbdZmt}06IarU4GY3;<>CULk zp)Cj=2bzQbOJq88uv;eQILh1!nPv`NG{78utMuKOgGHz=eXY|6n1j!f_BeB}yM0Gd_e{vLV}#+YaLy)1 z_-D+)_t|qW`};pJ2iN@_bMSrtz#M#3Y|EKb{h~YPdTz}1`(myOL|2-hbMP#C4(@zj z&%vuP_aaPE{C*$WslFF~4sNcgU(v*k7%WgW$e!yoiP1iW*ubOkf<_c&yw2EM%eYm| zQQVuD7G4e>?x#8T95cd?f{mZwNPXm+5&j6SvylF1(-?o>40)u@I>2^a?zzAd03K(A z-vv6LsU`{iM$c6qzuaRk08Qdb#2BldNmoxJmV`M^XboAxiO4$(7}@jLbhQ$BJDC^s zwT1%2t&0LyFdz96+aurFm9B1MzGeAaL)wN#F7ldD_S4J@Sm(Enu!7@Jj{W5RBK8Mn zNI(smiTg*q#I|SI*B*6+TnD8sS*WK0^5##ZN~w==fvJz}nTzYIr3~+%%{@THRqt)CmOVDp z=JSN-^i$f*F<68)*P+ejY_s3jdUmJ^ORibzT+7ybtZXCSrHB_VF0XDx7wonul`nGj zS~lBzfn58dKEn74esh2EAoRHTxpZ~s2&_Z3WMOn7Jt6D-$k(m3$RpS!nFXE*+Hzob zx_a|$v}dTV(21a3SEp0Unmdzb;JCD^B|`su!P$! z(eb_o{i4se`!d&kGskh}edE7|y{u)2HKd6B27f$z8;v@7 zzx;^Q`6}-CLs;7yt8P$wFN$k4x;-PX4l*aa>T_6og#1<1BgSn9M(C0Z>`GmVAHlT1 z5Y&ZR3fZ?h3|>EYKdE)z@(czrh&`k6vd`fU2GXz*639S_ZP9VO2kmx^<5lnycj>!+ z?JH=%&q-VVLxt6|vKKOt{d`0CM@4O0_h&S&r-cK&!F1tcHst?6__?OtTOY)E@LBjk z^y&TV6MEe8Wyc1tg+7ffl9&C@ck{j)pO1uFK_0{bz{H?ZvpDjW-%+PCSt3a^acf zDe-uv9gIa-Pbcd6I@*C&WYPDQ;JO3p4%AINM>hF(#j=R%A}3aH#{PIJ5g>< zxC?z*@cDFgzi#W0$d4U8F>ed<>^bVR$Y1sRv=Fo|B$=ObeUZNcoM~_XX&H_ljqGFK z`zrP9x3VKg_58IJwAYYcB)!<7?*{ECQV;2trkim!w!=0BF}4xi-l35%={jjQ%o~rq z_h91XzVRa%?i~A!hiOk2@~_9Zqdn(cj*%ffAGC$0oZs@6gUZ{{^4%|;n3bYs+p zN#Be#2XtR4D$4Lno@p=FZ#Hx2?GNW*{V9<3n_pr5<}wh7ZO&6SAgw`KhqNAva#<() z(t^I;2Rv@WZ|Z{M$@%6p_`L+*pT#$I@iovnri=@SomQ0Fg>T}FKAJHB$BnxFCTJXI z;*;Z1fxL3q;Xcs5jYLdvzIq1q{rJ5G<>`kR2YeUT^c#!tn>eAbARgA?`vCIjgK7JW zcO&SdUUNzdua>zqD{uDPi3N=5xQ?_B-;B}bd321%wW0-}F(#YmabhyrYZ1Fu>VrkZ z{?zb%`}$t{`X2lG!}j$$`})Na&Hss*{O4oxzhPfbgma_(pV`+F?CY1shhQ%hK8E>I zq(AzavFojBn0WZYFQ%ghuowBCYhwDdd4hhQ{3+{Qz2L2b*WRz~)_#Ix(tBZQ#%;8fL6kNrkz2OzH=lXhj|+U##t)iyPAob~?A{F$uxJ)U9e zdfBh3K^;qkR_2+fz8-CJiO?E7IqD|aqp3lgpOrRqO>A1YP}=hEv#hxSO zeXBSy)Nw%gp74~Y3J>oC;L_z&B;#4{DN}i#J3T(RN1!hG87q0yaR)pW_rYwJmIoN9 z6*7+cY$wNxwBQN~4*0IUUqQ@xK4TJ`*X*%|n6o=3e@u6}TCMYg zEqg6F+QPhUl*>WhnmBofk(Z6Uwam-JO4^q#A9ZBn4}Kf@CE)8Y^?%IDh^>Di@~gF+ z^piV`tjuA!Cmi^EY_2Wa zwCxaNuhX*ABQIINgYE-kan_ylRh(ZL$FcLZ{4F#qbPWbEh?tIX+hLT=M*gRnKimqo z!s(j+GY)6@g--d_{|H?p<%bUm_$==zkue7O3mh54TYu%qU>%gvh5YqwW6(Oi6)`aB zi$L3qw1IT56(Zf#U2KY!Phb8iw3~Gi$HY0uig+L%*(dgyzJvIq zk06dY&avl|Z#WxkG)Tk>^~5n{`xt|7K|2_Ok5g&keDO^xuL+?>T}4&xJ+)2viz9qu zqN1*HakcFO!{GxcQ;PP@^Q?r81m(=ilFG)$T0Cg6f)hVJ1D$y`anbSbrITI#3N{1N zQs2V&WW+_~H!>#Z_t_3tTx51sHAbdGj){xDhTmG&SnYwg;N_`0WC(WZiE3#TWh3aYbCRWc`K3*)v<&2l5{5bF1 zo-xuEo(+3h>b*scuw$un!N+q@(WfYIMV)X>eTC@nUTO2qsQdJrIUf4#R%}egHgn#1 zSlg5Dk9cZ;a=3P>%jLxObqQ-`zgX8XY3pg;m$0_^x@Uy6mv!p)&X@MmpQNqj8mf+` z7!%!yvi$r;%8&Hsd(KhMdTvDd8FD6z{`?XdGrfOsBV_Vp#-Fyqb%CQ&p3nAN9iFnH zMb7(8l5&5OeQq7ciH@Q%3Uze3jOR^J{b+k^_KbsmjzT|N?;a>tc}40OsushSZtHL+r{-qtt~ToOzLsaKkz=j&T=t7P@~9P}AD&4}7yGRCd|urrcFyxE+Rj&au25a- z7dW-USaCP%?19WpQJKE6=-ZGCEB$mwuXhwcysbO_!v2oP$7~IKa&Ll|9VfIiaR*Ws zF2yzb6@=_|qz5P;&s80VaKBIYi{s7wZAf;%hqS!xj4AWFkv6j|6p#L9jD=h?Cj4f+ z%5gmoz6W(5(ptK#w4n$KEpLuIq~#v}to>1&2()aqcm!JH8T}L>e;wrnaBpyfmCk34 zSe|1gI7j|-qJLlO#L#sBH-cDzlzk~gULDdi%%6hT_ByAnru;5f`QxFhrTow|UA`H4 zJDu`FTmR;ir+n65^qq9|LAEbw<+TC0j0bn4Od;qWBHiz6%SMt`uSf#$8{RV zcgPwdaZfv0DZVg6bhRIH3LwYUMOs_7zNd1Jw;87e;M;A-wU46?%cWDc^RUy-Gh3fm zxYxwqOq?SUza^+g4d=wDEZHF@5eqX(Q(= zo_jTOpqaDhgmWRQ1L;}H%cMLFLTM;7@CybFlnAw7UZEOG3Jcj|$*UX4V5$G&nbI`MlW67fV^y9?<~q&g&? zkL2@x75H9+R0|sMKwIEgv+eYcjGxQV1`|JP-!pLh43}!3uhj7~Z8l!~%$PzVikN2x zxi-%6VE#Ohjybr--0IQKOJ^NSM=tIekj_Hlq*iK z8NYYtj}jK(LlPdr-tY+d;lVNHr*E4ZB`su0~MqJ`cii`nL3yXGd}W5B`Hlyg~9^Z>8}( zv+>cU?jrQ#DfAV7WC#bJ^us7q2)djL7~{}SfL;K)yh6OdIuo>&XouOa+lk+wM*0lWY|LMu#kbiX+lAk3Gxx!$7mnQ*a7}%D1*se9 zt4J>*JqtQ@{Q}aLk-mn+G31yGM{=JT8w#I5UqsuR=b`QCy)xPt&Sqom0&0^-??Lta zQ2PhYDg5Xw{J6BQziFIu5O~`9AN{MP1=D(M+!e?iCkirlK97&TFAICp=i_vJ+CTBUK&90GUGY!* zU{?nZrK^vg4@_d$`zC9&Wu110Rh(_5aX;PQZ7cE_=QR8X=di$UpCKrYY|?xZMWp&MiN()k?eA?icTu?wsBn3FxGRzZ$Vxey^*g3bOB0F1T)BpccuDO20=d+x; zIPQ!E(7sd7wEaQKIA_{S``F)^KZc)2`|LAqkxwUartK|}tJja&w*Ru*X8fP~+vw~7 z>RJK=g@!{G#v(i5=(Y-U>SsQ9_9HFTd{zL?hUHg*whxJC15h4kXe3MKt1i%ckmUSK z#!XRwAKM1nSq|_}3*Ux$@B%d9>vuFN@6B*wXRo z1@Gn_*Uj+hTrV(ZFIW$4lzpy7;@Jvwu7dW*a}*1aXm7V8vCljkL3?38*&kxU9WM^Y zdTW8$7|%RRE<|-0w{UnRzO~PGV{dA>P1=urGys6-3%pX+IbYCfpD*b8iS`q*zJ1pi z?c3iuN72ifOnU!+#(}ed&iB zU&_2Ll#Tk*#|QSM;cDv8@ukz`TKm#6$lDBg#+QC7NnbijWI4Wcq+C0`)YR3VFC8ak z9A9e6a2&hPzD~5y_|nfM;Y%+TxsETr&~BUCf0^G#XJeq_fqdyUv?m9AvA%R4=-Hsh z^QA|Smxa86d@1d$3VezB(gncj6Jobtjr!6C(99>t{7~AL-U?p|^M6NuY3pe?Qv$oE zKV1ab<_y^q8Smcyl=s@P{*-=p8|cL4JdYcfQ^U_n-yA=CnaFhf>^E#bTY5zMuUJ2; z&VOh9>^tVbV%&8izWU3yulB#H`|9@9ul$?(Y8>2eYPLQ0-|Me+?CZ9Rf&FzE?BT#G z>FQIk%l`cJQ^+Uw>wby&7W~oJ*X6IbB5x-0`tsL%kbfL0p1)>Z8Opv>{`v&ul|tUX ztG_P$71lG*zW)h-O`YvWT?6^+a`5a!iuKnkLF++^=dU+|-iKUu!?^#^u2N`n$Hje#`b@|112pbIx*?PKuU zS$DjnG4_(0%EnyX8XcCz~=7yP|!&(Z0XO?|w(*I&t#1?6#TM*!|7A zsIxNYcp$&K5A7)hU##Cf4tfdb@%(NO^dh8z{4VXR6MV_U$yZ6g28@&cVZYm#&;2vj z*oli+zw4_Z{u7UriObkH`6lU`6DR-JzUK1}ves<--Gbj~AN0@myD?7a@A8}1*nV^O z-*lV5=T~^v5RU}odm7Fy?piHttuyMEEyL5q^HwxBtiYRxn;WNBRn4hxYO1`Wx&E&z&6+c^~n|`b$(PJlqe`WiFO$p3(l9l-cShE($TW&96s& zSy9UYD{U&ua?SDx@*0q5`?8h;xaYql(@MJ(`7C=9`E|&*{nbS+KeN*Ek;k_5wMM#e zE&H#13f}?ryj*L4HRc#F1bMcuUcMD;=X=|$aVbH$L+Sc{gnA_^kTi?(#wO6URI(FLF5^|JQ$;wF68@>AJxla z1M6k3w8zoQeR8e!vK#UggUwYz`_OFlZE`1NVcDE zsRUy#@X!9mt}XLS*Jfa5gw%Vd@B5xn9#f~OPraG0(y`6}F_9ldHptp|1oE?vN1uH> zt7V3+dkg3m==#}5U&{>G#xNYnC!Tj9?-&xFWWPRibqP+c# zr!&dSYH(m40HH=S6t#_PRCnA5W<>)xFU* z&ntzNi9YJR50vBc_f0jmOPi~!Dk|}RBZe5`rtiTw3jbX6%Lm=@852B*iMB65+Yib( z`yyY&VB?WX)G;l57dB_zewce!%SA?pv{k>a&3Pu6c1@mpg=eX>a}IpnAEWi^v1XlH zP^bNzavI;Y!oKradhFj^Q`^|o%tdj^BW}JV<@tUbr~GcG{7}CC#hrHodG__@Fwx)lApO5Ov8hp5oU`~7cvhI)DCX$<5XMyjT)Ol!zxf$=yD>h+xiiD^FFc8)W~ z<;J>70Z`^kG8|L@!twx8Q%Ai*{h!hXRA&` z{cTA*)(6?g*U+YwpxeH-{WSX8p?ZHx{SoH`knC7K$TDWknAePQ#s{~fU&gNE?HwLm z*Lz;PX+5vgqzy%o)c{$x|83{%vCqI}6>T%#J28Ihl0~~YB-hS7Xk@cJ=VE-~?G?Tz zWgLHN%5Y5D(VjZA$M(1Fg-Q6^H$<-EZ;#n+&X_GS-ep;^eT-XhH7UbEwXgegj z;FC*Dr(k4eYx68HG%|giA0eMC@ z>yp&XRF`b(W{TZ^qZ?CKf4aFw$~d|)WjJ0t(Z20ypV7?+lhDl^k?ZJYmff~^x-tH2 z;ahm8m5x&;wM}y3l&zrASL!utJQrVCS3S29FZ9QUeZ3BSf2D)|=S+D%g3o4X{Ere$ z?Li+FK(-yZ>px-)6`@~hqJAq`!Ic*uRFB9i%0sSD79p|*=#EEmra~#RUIc@N#W-K{= zls^-7%ey;Jx0RMIZF&pzGSFom0CXNcKo&tpf`iiOU7nx2>#qvSu!7e|v^#x~6XWmTYnV72e zx&CD@7TKr9RL1U0Pex;^^w!g@VxB)?oW1~clpxQJtB@DU!0=^p9l_|jzu4-4+)I4c zTj0G(=E-KrD}p>bw(_-}f#3?SgEGMtZKki->f0jg$^m1m?+RZ5;_~>h)uF#S^F%ui zhjI+c(58c+o7n13nIm*;wGermk)p8`$`~Cp?*Ph~d87Sa$L{0BR_9AB<;)rGSf&fI z_CuD5tv(=gM&Gg3B`#TES1HNO8`?=kqnNN}Vq4YatK97BPuJ5pIHz2J+;ynT90rTFN z*t1Ra!SvBz0UveA`>S2}=2<6Vj5>6`E9UnINNM-H-!<=y;o7A8y)ir&#dpR~XM9%- zeJTAheJ6b{?VRt4c>(?6{KvJ+U1+!2;o!Nc^TgJjb;~CE+Pt^rb1~O{7C+$dpCxm*UJsVZGvtz!a z=fO<9WAIKYeq#HZlXSfkld89?k9zZxu6I&W_2S97xcx0iy57R1>TU0%-jby2ot#j; z>+Lo5ZKHL6H{-b^&V~H`I?gZedW5lRq(5_hXO6(gxw}5r<)saU5?66u{-|6pNaNh9 z%IPB%$QeV4dGgKxytb3@2q*#)JX4CRqd^kxSsK!9=i`nOvO0vg{>^x;=N6s z#Cuur32@;#Zqo&A9^$nQkHnWtM04}5>u`4QId z%+-73THoK5Kwbyr*>iQvD>7Fne((Jum+V>S`)0Xz=5A9Lb=KFq$TlhC%-yC8$Ep+U zYe)O+xx3|95_9(_MXobpZJ+OwO}*S;_ubrgo4WebOQn=?^kT|ztnj8z zH3sc7dP(MNdyU9-^iplN&FI4Y&HE4HWh?4p>;dyEXj$aM>}G$U0Qp;x%>KY4Fb=do zkS+D*`(N=~*lT})_2p&;qx%CtwD$+LL4H9nXx@!@R?Ag7=H3H(KImqD;40UB^8w^p z$TRx`H^jMbCeL{AnEPhRjU5BlJqB%JT*m!@FWCD7g(#Q9wvz7JA2@5^{eet#-xEYx z+Cg9UxYvpA`xNeb?iT+@A9tnD62Hg&pzzO(-s94SW~1#ZGlJ3mfv-Sk{oT(tiH!d5 zXIBZ&B55b@XWx`-?n~%9Gun)n$_jNDZE#;kiS(ZQOlph-Tf6hG=^Rl4} zb1xhDQ~$D`6xpZV%Nm>ahwwgUdw<|EoG=&MLB0ar>kHz0~?Q4JFgi99v?H}aYnFo#R{`_s)W1OeYh})j+ zXiq2FWBc3o8)P2LPU!vEmdJJdZH8ROe?KvF>_(tZwHWP=E85twVn%)KwduN*}7=^19Xwhb6$_TWK%bf#puS= z)t_!YBW0Yq(3IhL6%2v@M*D2twEZQC809&U>*(flcH7+k-~2YZIXKLvn@x^xO3;P_ z$TPa(vw4@`&D-w1n+4$651y!QJ~FUwu9r4By17@bwQg2H-ag1Px_Kf=-Q4JsP2J41 z`)}eDQ&)ewsgN>`ZcG`D*M79G2kkSuc{&N*EETzqZkE_>Gx~6U8=qa46;$0iPAO@d z;lwE)1C8xDgtnA|$E@?uz<3R`&i`k*f4I(jA>P1m>NK`ca+(vTe4_QP=sN#Q)KM7L zu?pV!FvPviUxmEGNM@aXlq+6|fW8;Wtn-hL6R(ix5R!>k+D19?3de!+3sARS=WoL+ z-}O5G5zzBN*X#UkL)`29Zy|3y^7J}?+Yr-F^G&(zQxW=WVxT8l?~--?B9trSIGimp zQ0ra)gmwN4L--BLFBkGmjMO?BLDEPkNTOeg7b7wD`IgAyyIuP~L-8Hqo31YDBSz{T;rRR2cwY#| zARleo3%c#=S6?K)Ua#|)A#Wv;iIG@_IHHc3w+H2n|6h#-Y4)M7vxTootl;>56UVR( zs~~GPWZAxd^_AlL`;L*`aLJ;tKW4`v#@8F!{rUQnQpWN1rVQJ&5AE57_Sn9D^~@xE zy-#94$JZ;ljvpiOoCIT}RXIU*3}<=K?eXn*TR9h5IiswiQ8FQurw45*1P`By1CPJ` zAuA`{#bfTj%-rxA_;;P|=(_#8&fK0e61qm7iHW}(XKpV9&kpby-M0U9;JJN+ODBwh zzaZCoZeIX-+ab@yz`qjxCcZZGL6>am`vJLjVq#NQfBOEIlyUTJ%23}s(7tVGpNWZo zmxR7QA#xpkKWVqk%s1|D)a|Ww17h_#Me}_9ZnP&Kd~(*E8n@@Z z!=R4`UC({(54q>Q6UfU$o}T;KA9B}iezOgHSowD&8l$cV*h2J0^bn7ygUdPaGxke6MN$kv`gA^Dk=u#3b9l?acV&-~2CXKaOi9 zHU5jvir@aozo`A(S5L-%a>vGRf9Job{SzlA*Zw1Yw13OLsQqYuLgW8Idv7&ovL656 z;T#|LR{6aTd#n2WGXMO&Rr_((exH5PZ7GyBNA9s!ZQ~l`v;98%q{}#atd&w`x2uf% zS>UVW{b#oe&kKGX>npY8N!H`+uO5>8)BD+9T^QY8)%8!qe67#PT_Lg#du~&=$o}e4 z*v*M^oH*LOzq;sb+@m7Tj-yZ6UtNX#W5_o#bRzq!))VZDbB|Oc*E)vY3VE+Vo*hFc zy}x>zOEzQZEV*`KXj4~zF?6n!abjpwhB4(awC^a|XUEV4~P zi+btIbLqvkzxo#1(1ARom)QN)>~paXjQprx64+n;&f~rH^0r)Sy%a)T1oDhtlHFfD z=#ovnyd>9-UQAv6>E)MF#?gx@!?9{d`&OZSMlZ?iuf8U79lgA2x6Q2&^P6h|)XPcK z)!+W=X5_zxl<58{?>)Mt-nG70Jm*C3KTLg*^PP1|v%jj&!=4M0{kP|$`>Q#ibt1*v zUo8N=4ynKWRq}Konf1ze`>U*b720Ih7R~-@7w9Y5*0cY4`>X#UzOVQG>Q{u8_}b!d z8SCErt2@#5L*t_Bh>?NzSN|w=_P>sJQh1#G)kdk;*KdZ4!K(4j8lu@>ZHN3tpqur>WcF7hGBzLad%dU2{_0l9 zS_oNY?J&{(RjwW0C9?Y8U*$gha^WkDyT2;9z98yvOU(Xi4chb;=w>a6`>W>ps|fOT zBbl{BmZ7iUm@)4J${8O#(EjSO?Y;f)8*;7pSNA~HamX@jOWa@W@A<1{mn{0*yXD&P zw?=k<{_0ns9Rb7a+ zf8^P^X^XeNItDzO!DIB0$o}eRX_FJ9TqDnPn$16V{YnN!B(M>Y@tG^bxj&5GD+h+9P{x&{)JL-B-uc!CgUwsNRwxw(t5AsTo7jJ*{2=c}tufP3O@)Uu` z#4EA;tCYVP`LX+}rJ!{p#oJ$90D1>ffBUQK(-!pC#6V_$bqmUMaU9P6=k2e4O70zc z@2`GLXo<%_zZCvc_gBsR;X>$_HnI!-IdN$;E*fxu^-ChR|G20}c%1!JUFT0dtdn+3 z`(?d_7{^5SSBHsRIL)o6_D>V`>k$Zo28|r9B zo{5i=-CtcK^?u1a)qAt-ukMAs2;`X{_1w*9YTu6NGM};%)A_wGycE*L;dfseof{h$M?HqlEaXd4Ou2edUSvo z>02&Y^!4Ag=Q=YF8`=H&`X5Uf$Jd)Ow2Sc*gDMN{F)`AUNyJD$7rBnF|Eb+Jw~sf! z-Oo{-z}`(F`&3`VJ{8|3&bIZnPxVgjQSqI6@5HlIoXcYOrOx;`}#`cblko+<*yW-I^{nYbNyNS+LV9ImCtum zJ!bDa9k$m^W1l(d{-0X+H4CRPyHAO%y_-I4n-YKRegD6-4~aedW%^KcS^Pd6`j_@0 zvFFH4AI2BO@59l5X&(}MCe8HWSRZ{j{x9uAV$ZjkKJ1zrUk@k$rF}^3S-Gd|{hVVr z=svigmHQUPU$bzq$8%W?znTuE?`vxKs9eYLI^j`6gCN zWUuGsL%r9u#($XC`d+;Q@(x0t9j_(5*W(jeIu>O7rsUeWS2uO_7r$jm87F=-Wf;F5 zLi-M&eRlko)Lzf&BG-xEvhB8+n9cpox~P|x(_DIS?e!c*8=8@4^b)(*qpk?52INQe zlE7Zi3o&~6ja+NJl1;sQRjwVqn7aDY%S%$m(Tgd=v1&m3YS2ET zmt^*O4vAbxFF&-~=GKS#&3jPl> zSxs%V{l4eid!GBeZ=UygpQmk#(a-1h&2!Ja=bn4deeONa`QATXu^u{WFT~|e-b+X2 zRe#C&Pz38)3;rvPnvC@%BCZa>3F}Emd>Mip)S#ao;SHncb~>uPGhj1^SE4t z^-!6KXfLl=PY&ld{tU{WVe*GzJw&SjP5c?Lu$~>5_hf&D^!bvbjXy)Mo*M8kM!fhk z{9rvb+%{$}T{CzUftUC(ykb4Hm+oxl<&O0bCUh>RbKXnG@AWa(cx&yYD}_uGh!;PG zeJ@=#Xq^a_AH#U=!m#)&ri^ki< z{A|Ws;q5lwUcq_HUOLG`5*<_5h|H?cVI@Z!l7}m2E zGSq{nb>oQjBo$(uL>ie3yOFU;T!9jZR1V4nWgJ5J|-#4 zO*gx99y1q89%`=@kgpctVg~NWiMR^ z>NCF3vWsG3J@+wRce|*M(-^Erl^MR5j>^qIJ9@=>{>wa#ZAAI=P5v;fhiEH66Wb^j z*7FAQo@^V*7+8CPv5o9lPYcSZ0Zr^9zgSNRmuvRYb%S3u_=%0=2kTkDykcWLM{qi4 ztcTw5;E86um%Vg#kSPiAdaMuIOVdaU=gmu@-pHDi5^md!rK z%ipw5j`T8oGTKp%^^SY#QqVT_Nb`V76Ll}0%ni9nzwsoaYx`chO3*fdCN{CtUb=du zS&uZLTQ7U*{>}D=(eJ)oZ#B1ff!{jt6C2p?Ub=YZrFfIR|Ep~qvAd)!H+^r%JdD02 z59xb7&8r@eIF;Wqzl?WL1_bj8>&NVXWgqx23&VwUR6v(4K}M?U4q`)u0y zyWU`sZ|G;i9Ov?QZ!pIz*}gOB@6peKIgaaR$$t>*)a1V*;`uK9EPLrPxNn>Eh5A|e zUt^;arun$WG)GQ##y`C5rQ2HIK?L0CX|Idauje%9`gz%F_p#IuoAJEhxl+HDQs?@4 z*^BqF)DN5W{M4`dbm#hc*{k=l)DN5a{M4`b4CnfJ*~|B_)DN5e{M0Y|E6(-vve)lp zsUJ22`l(;A%(;GE_5yw^_4BybQO;q_s!{c`W6RHP#dBC`lVH^Q(RfbFwXov}es;%> zl|5jvWBWO*f5bV|PT29*K8H00eJcHI^NnD~j+@VfZx1y6jW7v2?gBj(booB;f*re^ z!#V_hDd4BS4}4?CQ+*C=>RI@9hJ5<_z!!Gx_Z(KzOJBK7FE;Er12Xi2CVGj)j`Kn9 z0o~Gz2khAG9M*F1>jpp3i(l+`s?TBVfqY$%PxRskJNA1HE9oWk9Cz%vAF^a1jUVhd z+BvLLUiTv7lNIbZ3;g>LBKHXvAg&L=2|F%Bd>eurc1&q{5yThkgdJ1aU64uqrh*+0 zAik4iResYc!H%cu9M&<&9)Rp}Pg|^gf?MJoRw}aqWqQSqBhO)_{N*Np7^Slq)*?fV3YmX3US433E%yPd;24qj>CC4RG5*zr`K!1@l>C~S_=7!A)n~R4|eSL99GiJ2+I1E!V1Fn2|j^1@Mj@N=#37QjjoP_v71UKxM(o`Uby%LEX6aRkDBeCNu#PuOKVaN4| z??rIKj;T(AsIS;Sf*lVc-vG746k^9)^BmSys82fTqwS)Y*zuM+hn31LN4Z|Hjpouk^ErC zTjCs6s%z0DX1o{dxDPTFB3_U6Vc78qXn~83jbz7;iB^DoGXBTHj@`~-O+*>_;HAg@ znAq`DpTk-LdGa8S9_xK!$9~UYCA}mrO$t1w#(GEWxEQhwT$&VkT&0PM9n0KMgY@=OaxYLL_!viMU<_C+v6y;(HKcVaL>;0_byou;b6-Ijn>ozlcD4 z4agRwca+}2NbGn^oWn{!Gk{A;4f?*+S^ z0{MZ=`jfxA*17$?V6#&oKOMvBtNp94aF*W-_BsXfllY$GKT_}8ow#1f|DryJm40cx zPW=tEXJzuf-D8(6yKGs0^u4qyUyg-`_A;N_ZRej}FzH@OmFGatb2`@V-OqVC63G`) zjrQ%j(%72~qvqbhl&=C;08QJQ4WoPxiMbCl8}ts)#nx>2L+msE&uIzY!+JeGt96RS z;MWd*+SY8C;4??OpZQ;D<4x-n7xS}Omnvnsty8?5^O$vtl84%=1M;;&K5c6@{Kdx^ zBz4T!tW&%~%O-14?Z2Xz{Httwx!LHY8#3g9CVII!LN7z0=YnqO<&M~T*`4Jv>qn30 zXQh`3@XG-|(aT*v^|H5(H|b?hU3XbODrLFp&91{0EQCkcnJ|FRdLmq>^vE6nwW}P^D z9JF-M1cyA;;eI7blZQ0o*J}V@sXzTn+1Zdud~p4c=}7P|M7}JNb#C~1r8~#I4>CpC zFxGvLJ99hz2=~%o$>SNFL%AKtdEdWr4yUKRqzTYn0=HW^WN*IO^0(DL4xPE(dvql8 zaNnzO9H+T}<)r%{e_@rY+L6i}Mwu24ndW{k(T$wn?9-t96DI$x`VY-nP(;gwF2vVX z|95xZOPTlNeHzl|Q?D_;wt2w?yYYJm{watTKij;7-Oy?&`-?7*&rs`n&YMlM=Axso zxZnburJ(Kx8Ra?X8;S45&EoS)i@_@hUgBdr3|AfDcFBZ2!EsuGl0Dj8M~^bE(_-Fr z^f;$03>*xtNA_ucufJ}MxA~zR)cceMnYs}#K9?P6tkw5H=73g-VBwI+Bku^&x{y!C z;83RfSzKM;3ZEDEx{03E9@Z-G>I5(G!5n}#aXYW{J{vC@Z@c-~%!9()ZM^O0JZ8L= zJf!zN$kPFN#OIRhW4wKm`I_-|K+9&=hx|=tkzR`GExqJ54Vin1dLct0Xj(T-Lp%?L z-#IvfGzCZ_dT9D}?78q1mdVV8*YLBN3)g{PKKN-}G_7J?c(+l?Y`jS~r|bI5TqtF^ z>1GM%F}jgF)LsSO!1xXMv~HUI=tDQv%-87VA}yQf!~QF}nP{--<_e>mV#qKKn&{>V z2i;U5&1$5vbki7HH}Nc!(ajh5S?Q(){8oXV=;nH#x=FV2Cf!We^%vbpS#G-7iSroU zNFHjh)sSxt@`-M4@u8dDn6J^zE?PFbPULSHvs)UI0zZS#3(YXE317Z4E_Wb~?uAqL z*jHb6{^IH-C*e#W8l|bO3sLunze(fIZhY^-Ld;$2{ok4A$~CA%Gk6PrIS&QIx<~R+ z=GPAE<}_>Ul|B?&Y3!T38_%}xk!(d7E1CqqZ2ZW6k7N&MnV<=NnQXIjhCxdNP4LS! z2Rnz-WFU>$IZesN&Y|`r{&k=${Ic;Qxl1bxakU7_huip({VuHn#MdAwA8zAEq7V5c zzEr1r)K_e$A2goLwo^Uwt)O<8tMDhcNHSHkI`InrkhaYMaJ6!3F4oY^OJ)jB3!d zT?N|AWHg_rdnD;h;ZAPL2jg?%Pvdh=yTGps{IqSA(6}p%t7*o#qVX)6ZFM{IIx41Z zbqA-*fnDxwTO~D{c_MVNvaM<%QzGKUwz`<-2z8HS3uuD~mTiSRqGO^3kWc1~(3S4C z)dxIQnmNO6%M5|n#_Oy(BlLANw3}`99~&>4BmS+&VVNU@x7!>slWjXQM@Sy(7b%cs z1A^FA*ZG(uwr9R(j@XW$o%cf8&pEvn^MRLhP9MQJr#PmCW!oC(oNkFTPHFxl%%>M} z%iVh?bGvNX8K-o|-TVBlWcK+T!+qcE%WI5yewxPtlm4&zS@!Mi%YDe?|7yhZGZD{k z>SxKH&h=6GY2V*Tdf#8!4bHyPK(uoYwev9&aq+TOM#>zCQfAOknI8AYNtp#VI@dGJ zPnjO~tVx-DQOeBpQzmROKW&@U;#|)hKV^E{+a>kvh*D<0pEBV!_fpSO! zWBllU;XGfNM&ouT+G*{#%p7Om&r|kIoO=hFp64d*=cxsK0(6Am3`pr{_3d`*|K^ zzGjZ=)3S+;ZT}U$gj#KSvF+zs2N~)?6TL+4=Ly~fn;djYFCO;uoWt@MTjP3uR(i<> zzdG;}z4+bFQ)%N(dReUNF1Cl1<))X*IgincDQ;#6umrnb6sO(zEB;SIvpQi=+ zYDiY~EoklMN!x;c^fMo&@#Ee=y3LP%GRJxQ7CZy}uY=Qv`_a1~`{*s!cVGQu(3#tJ z-!;s`{k!j4PGkJ&@vLKW79^FKg7&if=s35Z-ho$BXs_p@FJH85c`Yrxp!bB{n`fDy z`R1ei*(U$2`VHn=gJ{*D$v0p9I(OdpGw;dYeA4I3+pKTC+2TiE0sdu(-xNQ33YWKF z+Iw+(vLC$-yh_1qQ~c;3@O&2AkNz)C=j=!4_xd~5cv~3SL%mNGkZB#_R|%`WJ>+335#Od!u9*fcn|d+8ELW@Our`I_-I$j{E-dNL2T{-33nyrxm(tK9$@ zT0qmfX;L_UxF0?ByBH^tM&`mM4_N>AxV_9=_zXX*xiAm>Lf|L9TEAF-myI{+=FSM+ zNLg;Wd5H6vxlr;@do@G8ddR1B)8q&1?`OV7H$Ty`$^2*k72RatYST@F(M=m<$O27t z)4)EGaNYDGO(xP{PjvGgpZ4SFHr}M0Q+55tPLZ$Vy{H{!-;=0=#l>LJj8_%oc!S>h_6R*^M_NNT2WuIfy5u)ihM294s)l@AHE;! zAlx6m2giB0ffjT6aDVt2z)OD0@hjsmgnp@ybfZ3NZ@28CnEvp?IlsGIRLE(JKU|f0 z1D8pCnEEf3n~iq#>JPt(c^cb@@)w!>Vg7KUHG?L$Q7nJ>GUh$mHj**0{(F{fv<>a& znSuF^)~&Roj1{0+{_ve<&cKl5*&ja6_Tt3}h4KGle|R7G)q$Vo58nm;@af+C;jc2U zf|&mBKX5v_^JcO?oZj)Y@0;;{<=$!>2|=b*#Otws<=!@bcn4^s2x22q9?>z;Qjkx^ z|CR7%(b!5h1nl2qF1uoBt=JAHU_5@0Z3Q#-+ij9D@Ct&L9{X3$=dnM!jr5_77mfA* z)OLuB^}^e2te?&{ni=aQ5A}8<@d!)9); z0WA?Uv5AKr=Jpn(2_TK=HuT%rbNhE}IynJj(Np}a=JsCj+t_L8H?-R4+}>g1P5Qny zLf=xBo4)VmJVxJ=hx8qQY#R{7CVtC@zI&Ok(f9pYHkr@uzf>0KrWtLk_wzIZUycv% zFwMfrE4NozR1j%G2zozHvtYrwh^t4?`+1t}Sa31oS0L#9Jk9p9~TIbFcXy7cG0jNYV(H>MzEKM#-tbUOSS^FIoSr(zBG=% zjMQt0o-zS&HdxP;b>SsCY@u`UCZP@NK=@;l{ z!E~1EXUYHbi09q74;aiSPe039k&j2vU(?URe-5{U!Hmw;m{EuJy+`hsiMroMVMddk z?-3x97yrM=ka3qY&JlIbjwczs-9INXbVZRN>b@IKGI+Z`PGrcs+qoU0?w#=@gSY$N zM24OyGDO|~;z^LEF^R33wkUBh`4Ha38EOZt(qf$Z2=Z8vNn z(6kLS2^(t#Jpj7cKVGo0?4QxMwXtu@_*vUO;J5K!%l`3w*4;cCZ?b=K_}Tabr7So5 zr-1Vq`$zJy{R7!HAZYu?7dCbr^ELKQp_WbT4f`*ZMSAJH&!!g}HWoyicYr2(iNwaT zKyL@#(u)Ud>@PnJ*UQcu@=#l~ zL%vqXCwlRNjU`3sWtxj#=$oDNlG5XjjdekmAkz53#`?HT5+`9}R9@Qy#^)s1SSt8; zAw-^amyNhi1Sf2)5b^a0ZrB*5=|B))lM^;ZWw$~m@e2ty){XcUk`=b!^yvvxf{ney zV^=sf_BzLT_X}lnTZdy~gOGjg{gw|XCN{P$^Kkb8?ZjyeHg=0uuJZp-nb~MBuh`gG zoZt9=D1VX3ABK$)tr;}&|HQ(^j$q!C{Xf#@>mIcHKNdFD4*s=>-xO@DlXYgWv0m`1 z0k2KL#;#*tv9YlmIGr;##_#n*)_7}SV=Ew25b@#%uw!FwpbaC4--qxt8po;4h?azW zdJK+Y0{9t3>XTD}0?9j5==Rf&d=E0sHTY3q@#!?|eH)vWnj@VcZ(sUt>%!OXC zu>)BqW22nO&uT6#1;0-4)4FK#i;d;lc$01p*7X;koRsCJn=f%5W1~nOYOgNH*8%yo zZhT>5MaBfeQ^+JY1&_p***w_ft6d;YI8xPpnYfpyTDKl6` zrJHr&mk)lT8^74tTQ=ULn>YB`yf;#on{M9YJVrN?huW*)VXR+=e4-ma*w}~6*XZV- zS~j~*n$A_KG~lHflIF_8`Z3w}Jl7=_g}jC$fGGHa3L%B%wZX)?KW?_l^KqWQMpAZ*DE%*2g_}2Bg$WC@`qt#MC$@gY@=A%SUmHdY#YfK*wJs< zMq$`kAIfM4ZBwza8g3_pjg5j|8~AMsHg+-dij9q3%ITc3F?z>yA2;K@U}K$-DF^X- ztPjJ+`axTZAU2X68zWja^2zug3ma=>o5;+|cAI1!cx8c?9{XcrW7pew(O7>iKbx^$ zc)N}D-{m}Jtd~60FY+J5x(~>s$9iAb*!P&P8S8J;vdQ>v|0Udu^s;UsDeyxz);nTj zd61i%eL_*eeb8+RO~J(%T3?&Igin|4b)HYT{(`@qP^R-<>A-qA>G>{ad)n}>~2+eTtzL;T%uu&(WS{5ROuDG|^A$8(`c z|Ezu%>?(nEZ1SHP@qB;8^RRvvZ0vZhr^&xmKMVhRY;@XBW%>WL?|t*IF*x5h0~^a9 zbjCvbVPlap_`}8qqsZV78;g{|A2wF_lyf`y!^R?I@P~~JN0GrFHWn#^KWwbz=g#fm z4;zb=!9O-O7DWz!*jS_-{;;uST0c$588!_UUvm9pIIpL)(?>>tU)_RkRPAIPWeA79wmbVAY{ox8b8?B`eAx6CSzk%Uhgx;=Ooxz4)_luL}Ft_h#Np~!p15P-+|zUjZvC@ z1o1UFVPjNw4`dR*kYHm&i0>v@=T03qwjZ}sI5xHi$9eY)Rdf1qY-}}TPlD`n4^*su zV<$2XcOTFhoW@{dzp=_y_z9I+gfhKiW4CdBK_y&kc~TMHX& zhfGaBlN7Wu{Ge80bb%4h_!F* zX&WyZZ-@BV%!9()ZMotd1$=NeGc%uoSR%_!;y187} zU*Bb> zZk({OHAqvAG?s2WU}L+pOhz}y^Rv=T@CEE+1wYY^UuN+F-<#t$|&pZOZy9I9m#eb|3x%pOBo&nsVO7&g|8IFhFd^ic#q*x1w0 z(zrAk8>8`afC1f*y&D z)gW#F!3i5{Mtnbl8#YFD8b*D^1`=#+82N^%9h40;CD_=9Y@>!_V}Ii~?>5lEtjEdN z*f%-eU}NK`PbTW)6&st$`Q7cJR8C{CF;!+bHb&)EqFk@o*dpd>Y$M8FZ}Nv>V?-MS zO>CoB*x1p`d$MgLV_^SFmTeSQ?`e$FEt`Fem%j-c zBfSJyB?azQW4$9bRti~$UP%hvqtZmh#$;}&L;3=wcf!WHLCXhCY+@&DYzS%ckVbUt z1shw!^)&junV;3%z6Shq!B1>pzt~u{jW_B0BHgAkw@X=WbNf}C$LL$~&^VCyGVo!@ zCpNJkY^Y6qHdc+eegr3MEQI(zgjm=Z^`|8C zIX~Fg2DVw;v9bA~$@|7KJ_Fd;lUP?twi>;|^o~YiW4k<0cGu=%W7M{h*jOTu_Xg`a zRX@wVubU&DU*WmXq@Te$Rd2Tm^Z*B%?9$l(twn zIXvG_bi6)mal?B`j&~E)S&Q`hJ78uRJv82Vz|8iKepiv=k;~_9m152>Wu6Zw(i|V{ zj762_V9rB#6`jI)`Z&*93&Q6n+7Dd<{h!2XewwIk2^-D*bGl1Jm477mP*dKxz=6zbb==v3uf);Z zAB5h<#*JNO$Lk7S$M-yF+Af=f*Oh}l0=n2_Uhuk&_fuVrO_uclJu91R1^5kvpSH<- z<8=wlOYtU~EWppk2A8tjY_b&2V{9_XLv1wz`Gz2$w#j_qb#s`nvB^@kY<62r{uaGd zzhTph4X;}T8LB`Ny+q=5>p`ys-O`H(yzZwFdU=PRm0nW+2;Up{iC+BTbwf7Zq?f1o z+2}>ea?{JNIgincj#RS4q$ za>DDV>~hE?zAC}%YLTyuWStw1*XS|Bu;AMYK}T#3xn% zPj}usFz?AeDd~fSZ(Ba8*@p!e?9A^S_!l5v@Vdk3h9eL6C3T{|*Kph1o){lLC!Tx` zE5Iusyaca197h=KXpS)AJ`wFq|FfCb$uZ9`I+xQG1P;X4kmGy(Cu_XT58+^Vs$&sk zT7`J=O=Q!VHu{{$3eegREW8eRh%dDn(Z-NZ#^BHqre8aqVRTM!_`LW!KP$Yh9lS=t zOMDfDXl1uE{VQ#}XuMs_&t|+8-frXV<($Wiw~~k2WCHSxKpyc;oap0Bn>yxe#@j2j zY<7Lf-&7Wjw{`DWddUOcw$ps{AL=vXkf9bdt(&GlIGi`M5ov0WM)c71=h){B&0v{~ zjdCbItGO^^4aQgS)4FK-JL|&xS=6&_yh%5+bp6F|BxSkjW_QkGbR&7Fy=ov|739;p zY5JEB-R#YLjc)eTvWY(IzoMJecWt`)meI`$$dCe>=;m7vx@kw6AktX6xjnXSo?!dc z=;lxStaLK~eo5dby7_@m-Td6fn{@LeKb!YP%5u}qi=4;kM)Gib{TX{wA)n~xJ|DVy znfV&syrgBb>qP#RF*}5^UR3_s{3hIcD06HN;z*t}(CZNduR8|q<#z88*(n!txm~bQ z&alQ%=?g3VYV4G|8!xf$J!(c7wQB{hYueU+?@7WT-w=?>Q-0wID+C~Jy>#`iq zrKU7#$S?Lv)6QxPrnaDVApSL=E4;30TRH10198;|%4gZMt^KU4Jj7Q~z*$Ve#HMYf zUFDbfQl08hU$KFH(0B>odsK&fwbTxC*#>I7WD4#*x|P2j!tuJBIL^Bb^lMHZj@Q}0 z56hun(rYW~GxitDE^53EeZS%1uQ(T6o<%?)J-n znWwRhD1VO0KdbS1GdB~h1~jpa8h`1|`wiwj**21XU-dU*8__wByWl;ca~|taMkQ!s zA2sfjunU^c(>afw;8DWmJ`q1Z{tTY)I>4_2{KQ6T+yzF`PR2;0aVeUOw19b)#I%u) z;B;RKd?AXB6!^Ot??czBaikhDZCq!K^`UEdtXF5vg+S{^uxupc5gik41M zgu)9xA?0s~QvS%MmJejYPx*E0o$J49Q_BY;;ivo!QOcj#)bfEu_$j~cedqeG+tl)b zK=>(tLzMD2Zff}+?^Zfm`}^x=Bx5wd*r5IW^h@td$xSpaO!oJmcE$PUFIm1kpDt61 zwkJmAHG5*}nb+;Eetwn5?1{OC^K>NAT(A*sl()gmn+>DEY4i>f}R7q%#jTq?kPC%=5Sxanf$E2k;cI<8~pS<+2H#u78`GxHxK4#^Nl2B zxy_qj;yh;Flsr`5oDZ-*8uICRv*9m3=FKAJYv#>kwQTnJQvMdbjDBd-%gshF`H*1* zG||h=Y||LMlz~1Bx}}#pVt>2-wKZHXyRdvpFLmHI1b(8IyV!p5?pJu<#+&r=9zPqs zNLg-riI32WxRT)}9!ALsMIn zBW@HyeC)^AzFBJ#--{qV_ER0cSt-p3f_$?!fUn3yzf$%fWRma8e#mqr%3g(h10?I* za3A~5v3=|*^8Fvn$NmnFT|dIzr&n4&_SZSi`}gI6+}7cHV%9j?)s9?9sj-uVY@Z_r%=5>74h( z@O%AVYrM@5VgEk8Pd$(+AMtvu4edZ>Rxo|GaWWME3^*+d`qU(ronyiGS(7~PCRhFZ`>H&;05W+T$nAdRJ) z#@M>~%`M^Y$$$7+=_VsCIZzFLqMPe|>gIPg-lUtC`PsZTQkI);-sU_;HVcG$!y~U6B|FW`{oNk>qijZe6r2XDMx%eg81gs9PAuQ(}y5- zP7^-W?CnSVgD5+4FUOM1;leQKs9i#-+d4yNarue&`p#%YXiUX}SG zmr1&#eoy80qFl>2|2ucPXAhR!*i@8%#N-d#OGC6EbR;%ati3ex%zLs;CH+2eo8-Xm zaLD8J*`{$$Z~=J>=({@|WduO8_R`FmnT#}^eDh>m)o?pK7@re=8vEw+z;7dhwU=gB z7+2GbaYf@{x-wz`<-2<4m4 z0Id|kvaOIubWF51oIA9KVT%-75juWQ+4T(ke$ee<_sKJen3e+0gH zEF)prJ}tg^n*SpA7wpkSHpHg+*rG*qW3wvKmCGBYZol|YTkkcl}m8BZ}ox& zOJVF*E?T_o!hFJ-vX|FZE?98h;^h~ezi4^wvWu45qbb3n+GUF`s$I^Bk5s7_SCiRX zd)YD-nQ>&sk=a|Pn2hLq08~4Ck!^U|18^+2%Z1ZuE{e7XK;=1v^UxlEqd89%=lOSA z_#OcA-E^YekK#1Trk$R+f%DPY*K7Mo2WB6@W1Qxt#C*)!U&0#tg@OFQOzZI`%ZOyR%W*Kk5xJY~a4zGkko8NmNrr1UUmd=( zPG#PwAWrc7Z+yBfH^`!D)n3lYG(ce*F87sZDm|Hln)$cYm0k)wk*h_@#lLwmTZ$VY|b-AK^ph zt!x^yL;lIn=37Bx%WM3s^im0az2GN$ zx!0#&9<%W#y*v`37b(k4FTdhEMlX_w+Nuxo^*}z+%a48N<$307^zy8h&2AUU-}Eg- zddc1a-#Zv=(F{2a@DPY^SFnyj$dZLLf^{rGLN}~~zE7^=a`O`3jLQwfI;gzf9gQ#G zcl9ldb>x8mAcBQ;9H-vNBE$_K2-b0&%?D6{_zncYI?izL0Z^KL1n~hhfUne_eyI(p z>>kJ@-|J66Cc-*~5Z_I*&gJj*`W9MCH$5>y?I+l7=F*va&)jR~p3{>PlBUl}NSJxh z%rAht6JGE+Go=k@$G(m!`1Q_QiA@}$#LGl*WcsEn#pI|j)PlD`%bqqph zGccDD=6ng(`Nsunt1eoud_gCo%-`xVsn61PB7FI$E?Is>buIp)?;c9?I;UBzpW^~w zVI7YT~0U%$r^31!gS_6`MX^D zeA`aeclqqR;NfZf-hqEB;sxu-OGrbj&5nt6bfb+bxNT0E79alw#yUp8s|CCS>&VCF zc&hmvXW5;;$4^C_iw6q|r2UDOiF|qt&JCU5J};jA6PgEi=DtGXZ_6WUUL+aTfL8{1$@lna zXyrY&Redu7eGmH+N@|y>en)fu`OHh5B}U_I1wWg4PP-E_&X_y8w9>oqyRo2GYp9t_7iijigzX=E;J+7Np#Ok$agZzPwW)m&HuegojAb5SIHr}M0psv68N~A0|-K29KGZ#u8YOg`a*AMwbH%UI`!o8TU(M^VyP4r>^72QE_1o+{8s5d^a+LVLMk7G$TCbGfI-=f-Wc>;mZvBfA?r~6DHQV?H^AehC04)zMAsX`EYrD=C#uTVP>|3T38 zeuC{~KS2%R1`zaqg6-}537Qe#kD&JxY%lF9zr>g7G>rO+4Rm*7HQPYL$TvjoFjrv~ z)wcZv+u_2%9i!Vo+jzBsZs2c+cFbZ|@_a!yP(8T2Ri>{-s2O%4&fXlr+p(K7IV-{<{uNVBpMrzD}k(6SLBx!Tl1E-#}q>fBc z?jL0PmCmmd39euc;W=r+=YHeNK=SMswN>xH-5 zSYOL|%vdjZs9%&po&w0D$NH7ZMoRH!BQaky*4Js-Wc;!J(!NTvk%F1%8)~f23e^YG z4hYWOIheO6Pso&}6tWEMl^l3TrAZ8R1=F^%rIG$9b3+}{7a+aN?V-2L+};gZK4@YS zzwI!$4$CK_cpps#qN@_ z-1I$%^B8?g9@2N-p2>k6$S3+v@G-aV&U}r&ch$1l^(=o=S)`jml%>!A>cV^)AKYP@ zHKtTI-BiUl~j?z0w_}d`rBKu+iI^!-Sv2d5I zgG_8S03;Hf^s*;J+Hf?>xecS9Stgk1|8g5*pz+g&srx&(Vbt^1J_~Jlh`%;0JHWXO zqn;J_S!hEb;C}jHN49etMm^{5v(SdQ{@QT-K<74$dPd)8p$&1upr3x2d607(Mm=Bf zv(Sbf_ey?MukF}aq}uS8dTj^&zD{Q&-bL8JXJl>1R)WwOK>*DyMln@d$WPj>fu) z}R7jB!$fDj`&Lh+eKYNLVl+cxQyGZH6-1f zuOSXz9BU1U;(Z+Ba`v?-hv>B^o#1m0^J$*8lU|E*COzO>|-ZC4VZtFT*IyTAPA3;NsVlwJGJG z4f)%!ew z_%g)H+LSZVH{|T7jiBX$CTmlw9IzfrQ;IZ#^)!HQWE)V~MUZLwT;MN>!TO&C!cge|i+6z<;%Boqh02^jnbz7Ae9IBPXzNFg<@^SJq5J`~ zx6VJS!L|>SXa%4N{?ahhop%=Vo{YapAIzC=@Rx$%;TinifqypQ1$!w-$Uv*bUYjzA z{$9`Rw*+fb=JVQ=D)7nzFTq_30lTCd*oE6A+S-&#=Jgd<+=cL&3prhBAlCtR;rALl zVYDy)*wE?feaeMQLx>kY{ONd~WNk_@X!Quz+7#rWcZJ%FXoJY7$Kc%11@5@ZwfEBa zYu2U={)nE{KHLy^4S<*U<(HzB-PWdji+P!~DL3-78E=KR+j#qZ&STc5NFLJrDCFsf zJbJthUCraIx3wvEGhZ{_{!q(iA7kWinFlNLExqK0rW=f81Ts{BCc2r<^I-Velr>0G zjx;hChIWWO7tUju%v`vLpY{5O!!f>spXh=PFY~iDWr2-1&4q{Q`U^%PWx46*IL>3{ zLdiqzRSx+|A)n}GFCTN^NzB*i<^(O9=)?Xix(OUx(M=U(*m#7co2Ew{bQ40F z4M-!p!5-^r*%%wB?$OpZPq3YAbd$m|D&2I0-+J)Vx@mgOr*7W0@h07@;b-&SNLg;W z*}!>>ZX^%2*9OS94)ST;G>!St&3~D%(alCJn_VaJw~W~}(9M{_B2Q{M%h)MDK^)1G z2zoVwtW7x!?d7&Mh3u5CbGaAB9}zdrvQwllRDH?VDLsuVur}pEE~ge{R2*fkP06&c zO=$%!2{c)ol4G-1dO%x)AZt^Oa=kMU;$IHBUYn9B_*@WiWe9q0 zN~Rs3%S3!Bf?k`FDeWr1#Fy$+iTa8S)ZMs(ZJ{ zeQcZGidn4AvVrd8IPW&l+nj##+7$VIy%PE*y{no1)769=@topQ84qasy~bYi-JZ-0hcC?w7_kqWtM5|E$J0%-l@0a?r#!YJAn5 z_XjNRWZOvked*E0HfsDr@NmGEyf&p8Wt4y>_EF;(61GS4d0Lw?2p$z&?#hI-Z z`hsTgD+WKYks1$yku=K~Nz&#{Yg0~TUJG4qB=QNI>d{_K9L6tv$w!_bV?{<474~ zT7!5!53jtC$9jd2*MQcAAT|=^q4$V%OtcB)lktBgkXE;`zm07oGxpnUl5X%C2QNML zue_Sa{^)B{ZnyEGvA&(3%~&tI-NyQE&SS=U$wU2OJ>*#pdGuJnGUQ{de~|f_vA##k zCgYF&m-+?SuH9cw4m_;J`mE6Hv^HgbtW7z=>Srt2AIZZ8CF6=&+)P;1i zHsyBcBbtwc)~1l}^+~qX_Oa{+r?n|-kWT&;$RGbBYg5P;qj!|vL0X$a>u_Xk%3G}S z@U4)|6EsF ze!F-^_|e9+*3S#(EV>Guh7c%0AcClv?hMS=j5n7W{uPKoX7o~ob5PG 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 BfW=yu@ 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

ah%`P^i6H)%su9o>|-McFNFk>YcL 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

YtF91e*TY(+;%!RMVSH7<{>^Ky|Be3z*ulEX! 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ⅇ zJSVVgB#w*^(T!P#I?7nN3TbTL0T!XY!@&a^hWzDB?bYCm?v6G5El6tyqtbJK8{8Yj z1LKl$-sR$CX(5bs0`=eD?fJJEf6@h4!{0wM#j{F;zbQ%X#7@1J=_BV)1-?tszV{&9 z*Y)At8W&7VzfbuyOx=G?eGsWJQFH9vVtxWIjz79Tz@y0N=>7#I0x5u5q`*zHE61Fe8r|5#;Q1%ohr1$p}=ffShrzpeU?Hn}C zTd{Fn2*=?p^jkmAlc;^c;IBiZuu1Plt^+(h+Si^dx!&{l&z0Oj|H!$Lk7+;I3x&>= z5cWv1SvvY=<`F|jOJDmuLgE}g|1xJzZZU59360&qGbh6VMnhdmfr{Tg$#)?xarfPL`!pHzXMZtY)`xlBgKt|7{1VGSenL+$-Bh@3 zI*-5 z(0I~cp*kbY*AbV`wB&K(Mu_@yV?)~M(}~|O`JI%UA5gWv!Z5owhYN0C^GFT9YHw4L zy~BnuxWqemd)pyFa65ja0UtKyN}Uq>1vHKeb2QHH6pfP(zJz?diJ<75ufWfzQMg{* z3%^d#<-!N~D$|wwvc4bV^uk6VVyUy+-}K^Sdy74V&H#6trh*6Iukf^)jP!d5eoKhE zdASE<(e&#@toJED<_QV4=Aop%gSZ>~N*n+0!aqtg$+#fxOIZ4P+HZyXUHFlneMHqM z2#7yOM}5z@S<@Q=#Y^!^BqH|QZj5m5aqN+P;Fz76EH|&qfD~AV$PErM`S=X zh2(V!5Vgj(8wn6;t&}>aCUnKcz*nSAxDGxF{32^Q*ZzwT_G5*&{4*e$KKlv$Wv!Tx zZ^~UrWBgRb*E9nCHO-Q4WL~l-{5kw>8mys`M)G6a$4!0*nfxTori;=GSeIOwTbG`O zoQAym6Om7JAGHvE{yvJfqZkh{Psz9IJGtoQom{zczQ{ZNBo1tWEG=}bHugdqf^MYR zH-PEqPQ7PmJo@biu6?D5l?rPL{a9ub*B}&3Ki2I>@N;s6hTvy(D;dkqi_(QI_yu4Q zp&e4cg5QRn96&<5Ji)ON;p^}W`%7SJ=GO?5=ORsW?Bq}*`>L)=R~hD`2SO>R4VY-m z)hUDRi!#7kL>l03>}&kJF!wmzgYeBg$nS`IYur&3Ys<>$2`J8zJ4z>t1%4=2McfhB+b_3nd$AI*%a!2`UCnw(`~6nehWSKM|}Gl7 zJP%F7{Rwe}u3{cf;zt_pFMQ(>zWHzA=C3+#I{2%JE4-8Vc(AW(;)!hPDY!{v{>{9f z#+&1h^^p2Mi*H*mv{33*RgVZQ$U3-mVV)E3Pqbke&myBC@167+(_%&SY{6+iu?0sN z%`=D-Z<5X*yW7e@*S7Wkjygx^sNgyHCD_*678{~?K>r}@J^Ov&C8eIHUxWrCj@lJ` zmwzHm9^tRY&iQSz#bjs#4aL@X8^=*TkAIxu@&6lrq4$Ft|NIATnae(p|G%cs&Wq*s zCS6*hj&3!bb>y_oGx--~!d!l=eS+)An`gbwOg>W=QRJM% zx&L2VD&W?#67O_S`jt%2KGN|+p{hK#p}+UCzaRFnyUV5STn7$$WMR}8nfBxgMci-E zTI%l0<|>s!N3n~-B$f9-?{Tk@zq$g2ZArT8eP0JpbN*y(@G|)Mce3-`$}8aK-@i`3 zCiqqIow&6&rcnxT<=)nwLa7KDnec)*r${gCfjc!0LV9`3of_FB%&fQKw&%^xd?y!( z)#(K_%Ifq2I6?z6d4>daTfMVR_bCOp7vq{vJjJ!?VBjcOBYnQP?3Ed4J{3r_bg*RyFuP~;!hRQ9N3|Op zwzHa3lx${6zT9PQ6KZarrPc*$DN7>h?W<`GklH+Ly3R7=731FzCo~h`#j_Bkiw*;P zNEg|CGvG1>eiF73`)ygbUIl-FBhwv@Ux2=z$~QluLqmU|eWu~tr+tosyDB|st?4Gc z=-3_!H)SA4<1O_t`KbKmj<{nH?&p6T+|2(NylwqZn`XHANIMu_RS(2#G4ZOxB61Yc zN;ZE_R?=?hvqwN{MDK{Zet*&lK-F!UU{iNDpuDXyz^GUHYLpd~a~uyp|9&{u+rJ-< zb#98>4>uEOhVOp38nXg>7RoSAKzUIa2Inj9hsz*Lp5eY9u13xD{&}m+SACZL#}nB~ z=xalEgX@~pv%Pj3n$Z%4Vro)hFYDW~u!zgkdZ-gUzt9QtUek^~t{IetH;O>^3@^oAc|@`eLq=`wy7518rU^w;U}omP%&KPUiJywutJV?Z5XHPS5Vp$7OC*pjm6Wu4Vo~YBYYzUsJFtB3fjDq0l zlaYpa`V_p0`Au~GUlLd3_BG+K9UdD9Io4>F-R}4%ms)O7nfo5=TFrY`(il* zDs3YC7;m{B&nr*UB0>5N)JGoKbDdhuXM0xXi~8(98w}gz${m%gIw`v%n-uEkC4tE@ zluekdz}v60YCGyY@nyQ?>UxI5!f?Jio&ZtM)tmaD9&A zbU&WS?+oAX`099v$HY6_#5>bVd)C>SufhJvF5wg{_GAmi)%h}Rpe%Oa*v7hYt~=PY z8`>}uaD#B09@%vqlfA^=h4uoDX0VN~Wgfh%zO}ck)Ng@{UV?TK-r&|4PrZJg&A2gV z@Q7#j3-(T*gK&992Wr)b;*XZW;+d95HW2%RxR`I^;?;Nyt<3&n7~c##4`I*M zXzS2l5*1uQteiIcnRx7Oh(!7byy$S}-J;dkfZ z?!-?&4Z->5TlQxXpK~M}Hyu<=T$w+1&y9Ulw+Z7~MBa88ZoYf)PRHsdI{GNQ(Qa8X zZ|S1uX6_?bg0%?}NsZ(o(~GtC_Mlu`c|#=*S^rEX#4XVJfoe{8vIxR@J$~#Tfj{Xv z_MgDm@2fue^O3N1#tjGu7evA=ufYqm`)uPkB)WClX6V)<i^KA%KB}3-H3lCjAkqELbf=Oc0==4BU5Pfo-+5T)UWXM9?%18%iNvH~GZ|Lx3jqO}g5R!;Of_(kPJ zZ-!q~PV`pz^;b^B^_8-rOOZw%*{AHt>+9nUiMYcKV~q;d>P5*dUwUOauTm=N2)H9s zTP4#m2W-j?QYBZU*fU#IDs@iDf@<%XG2Ky<;?Y*>1$!l83vG(4Vt9r1Yu92)9+niz zAsk4PVpTVYxH5JsFc1_mdVs*;y3-xD=D5hL#F)^8+)5L!%rE;iP5=4r(=yq`*^{y- zFJ5Vf2@R2j``BX_xk}B$r%N+W*9d9DkzEW#cfGnDHNrH^Tk_OCWFv5z>_aZYxA2HA z!&=6$%Zc+qPkf#CXXBA|&JWv#aw$B*bGZU(xR-n<-ds-^SMsGl-B;p=K+Ah#yuV`Y zWIS10uRDuMAJA^^VSacP16QX&{9SF_^fS1+P{~$uUHKM+7`W?f z(%(Y1nHZVHr=3@h-5Nb`RHW0Z4G=FR)z=D5BFZ_bAg;w|&$5cs<}=jILP@tZE`(RhKjE?*%M; zTAIAuYaM(n-}id>`Sdk;ro`LXMTKIatG6p_01B-ue2Q9`8}~OLJ;(ixc$4Pj9rrik zTb`&)txj{+X--_+r|Hc)%~{6UVyRMnJ=iuvILFYOT(3CSxi0B-$jQN0!8TX0S1S0v zk+1Wd>r?7m+aZ~TwUX-u!{GxmJRcAzeHeKu`HNEWP%@#^N9h+MXCYlSDrg+_F%Q4& z8)%+aoi3}>Wd{$}xuKnoYAEL0nha;AzC4ANC(RV06f=oi7~cN?nH!FXMeB8r2{`qD zh9%8$g|fOEc?+_As#hxfu6Zg$bC3UA^tsxRWoWUM@s@(TWL#gF_CSVV(%kpGzV4ctu8M^l_l za88Bwk)7iLGjkW1mXbzKDI4vNfu6q?KhpKGhI3!YHV5g3;4^&VVOaO5Ao#3t2csK; z+swDXig_^~KfiFA5y2fMjg_-U6C)tOKU->V5BYr>`71I^`$D&M zY;ZgLcvx2ROUDLx!VMw=r)SAa*5O^HwN^Lb3o3qBH*B=3@Vnsd%ojU)R+DEjHuw_U z?FCo?N8QNRxEF4H4p)c&Ke+SfyYEh%&1Jd=;NMfqy5=H1{lBjLZIkKuO_c{_=DH#D z`xg9)rJiiQ)UN9F5aZxm@C9M}Fn&NpR<=Mob1&#be4GB}5uFH+l+>pf`ax$B$6ZJ{ z8|YxcnWPcFhy3}Ix>%YM9OFk!*$*buyiUI6%asRlwxUYEKnUkyICqjYO04X6!r=#K z*Eqm|`viW=KH*2!U&rB|f${0j?*lil>jg1R9DY^%gDnWF{vtB$k%tkUX64uD#lZG4 z!qC$<{2|=(lQG6PKgEwa&_ClFPj#4^3nIV!IpUHIcpPtu@5ZZ>4YSW!hVDPD$M-8Q zjV&K?_b1@b=ZS{oeckdxTVJ-LH&-@SE!SC3zP8X#ym4`iCpSdMMX7U_^jcZY6?!V* zBqqH~ul&hY2IoDm|<_ziFYao262ae}=Xf}?2n#mGdsPDEw&+;8+(o=zO-%kv+F zJ5HYeWB5C%y{4glV&l3H(l5V&zel&eXbTU|==_>>S+))*cmO59%=#_Qt;s9nCpZ99 z;r%NOYCS;gMSVt|Bz~~1x~Q)+R}uUAgc%VPO0wSKLDPvzrRzj zjz*Uw^+&)WdTyIEMMIEI|H&J7=FHhn4mH|7s*AIVQ7~wY3w!v@POLgjF&8_RZIY%? zbOYoxvRC{h_#NZ0R}@*y9E9=rTm1e4Jg_QxFWr`J&-HfpWZPg~t0&*$88wl;a5zS0 zr58oc*$^M`%oWSyO|5@LnbT_M%EsE1h8CG7ChEc)r*R)|ejA_)%T2d$A%!N@vA*A! zd?vZKSUA5opY84``(soqKZi%CAMOC@(nm%x=6E=LBs`Aa@HECZX?D)TXY6;Xk^Y*m zlT!Y|0UrQnVfdP4Ie?#7cyX0ZxMRcggAP<2JVP@l@e6gKT zorlwFW4qX|90!ay4*9VyyR!{mSt<|Exi){aQ|^6W9;~m_W4y^j^}CnHT}GFi^_2Y_ z_hJo*pNJuL5@c#<;b2$5LTpkTZ}tjf;g@j7#7?u?2z*|`vEtob!8=LydhOpgqW$E) z5ym0?fc@|+v%gO5#(ZM-!rUkCp~Aq3nw#&OYwn3B9WWMlr1nCXJhBh2(*fQA$k6#j zs|RiDW+cw?9g+@^wWSebhU>_lcoSEW&J|p_5Bw~?MI0YzKZP-C!#q4nTueE3QW(p! zcp9t7GmsndVLHh(ikoHaX1K!jh|m0Wyj1XVGw$z9rfuSNn8H*^h^m?5(cn#!Yn;I9 zA92GAr@S09-k~P9j{0p9{^hiEvixGM*;rU=UX;`nd&~Onyb4;5kDmmp9dd39J>-uk zp@&39%r)mZ&^nJ}{@rP0|D0b!`%s=wT!1|*jai3e`lP4yX4a?)D7kq<@E`cQO@Ke0 z`m>49vilL3%TXF*7x;;NNAjOX!@Xhf1t}eYy^#kvo@P^CR%h7u^~x4IT>E)`w8O>n z=|^rUzxVgTn|QF^&_xHpzYO5=GauYf}g| z<<#0Q`&`-&B7Ttd_i%(upH0EHe$v4a=3BxDugUbozWP-rjQhsgONMw;hX^F9u5(piKN=`7}>O;x6YSHq8G9*?($ zA>s%OtLo#?T~a>fIka)cGT5K8cc#4?<~bWbK0YnS`dx!G*U~l`bQ@=xII298PW7j^ zuU?BYXOtgJQgO3ObL(i2upwxHTjrDOi%x)F6sKq4x4}l#a;G^=3wwYjU1}cPk$e9* zr$^)7zxfE0M`SOx=Cr_v=M6*`pRjW04AQ{@lPCLx=K=!QE$YUbuv`Y2vA~jHOW;14 z@ppBwe4^iWUy^PfHKJa*d(?L(T$Q?D;o@b>XDyyHFPm+e+@vJWda>;-mdb6gWZ9O5 zy^!IReB#mxs6_&=w@h+Ij90@Qh#LOq5y`YyV^IA}-+kCoT}2!n=s_O>Vtl_+sJ) z;L=kKPPr!;HzbV>fA%~5!>aM2qbVgsZ*Lej^>l{kGL<4bg3*8%bl+RuuO>PuJjK^+Ts=s6*LF^E?H#8fTgYYBr$? z$&%J1%}!Ve&3?Lp8~so7{LeK06Nl@pdD6VBW8RVm!H|d3i-vhca~=du|4)x6jfXm( z-ahcOPrVshjW~n*Y~tfZ=38+2Idp>`a07nC(aYg}Eq?lG2(soIcu46EoDH|oe3G_0 zT{>80(s3Vo7Qcbpb9htcG8WEr@y&ND-gcb;J?Yo09bx_&?Fwzqd69oi zoF3J!CX9U^^BHi*=}Yg-_IdLTp7spfYWVp!#d!X#2tVI`82w7{>#u!YuA{Wi+l@5x z$XT=`fr(xhY;XH3WpA-{b-r~CI1X~@h96qr!GMF!3(W_!!>BTqtM)Bw&$oqlF!gn` zKT98|jQsh%xQ(f&G(;whwn=8^*Nd~?sai+%`p0#K>xj~6!5UEp-jMZBQl zsdUg|@XOQ5=PYf5cUob!z4pq20{2}}+@@*p?b3LJp}{y_xDO_+Lpnvi=`XYy{q=XM zaV^G+&@ZpUH+gMBuUr5($Jlzj8SnM@k-oZ+Z#*o6HiG;#eF$Tkb$I(}E;4Ck%re~@ z=r_jk^hHl*1N=Fz--tKMU_K%bpg-Mj#?MbHbA$KMJU&U!9d+IY_o=| zh1k1gSe(6Ewk1mM5#~O<$9{{W_t;176r4UE$G+BaT?pw))~~+@ z4%+4JqjP@Q&Jt`_%RP1UFBD-#q|l@6lKB4T_ZFZjv^cjI>zVJ*V_vY!j9c%*VK9fk zs?=L-!!>s{KK%0QbFE6YEqTDNkZ(Qu=;OS6=~u)}h52$QZC9zSx3d(Er%#zh{JQh4 z1=Q&RzieF0*H?t0?(C|3dkHpFr2HOS%vUk#uL8WvtTc8heNe4ooN3^Tv=usV)?3%b zxsRO6xi4`zr**t)|NQ#yQV|Md(fHzz6fU1a5kQKG@A>=j%el6~depxeIsq6C>8q>p zLv}IDXagrJU7;1$r3qZadse)iTQPPxmiXpadLQzdpUjKTm&>Ixk3YBJ+QU*&O~Htt zE90D4y&<)6qp(#k6p_@T^TP<4m65<|`n>T2sISmWAH=tze;Tjx{8vD~!>3u6!hJo$ znUb^uAJR70!OzfQ3N{~toBoV1>A428%xjq*@Vb$2JhPz}!Zn)Z;!JU`Qy$c7I@7^u zJkP@^(?QgY`!M2)e#oRlgH422L$Fu+BPLJgYw-PW!ArG^vYg#eU)ltC$wZdobkf+? zn^-<{m_BCe@om&A1)q;s*UORu2`aeJdl_1A!+EI;CJPY`2GBy_sUF^psm*h9JYi26 z&6Rsg>&LBOG~3LI#C&m(FeKwfTiK_SRr`JY3AF9X8uFD{q!|Jq{8p*a^hUsH3 zp49GP=T)deL+TH@pdpGZw7_CmGI3*dh}nsyNntSzOG72oNWX2Fei||Wv~G>BZ)2ti zPR&#e$f{|Qa8IV)Tn|c$iPWLtH$=wI$|G^_($1uP!v>p$Oj#t>-=0(+Gh9#>Xauay zv=Pj;=99ot#9g1lTh=*#%lh{jd=sZJ4RtXYqSI(T)@Knedw!<-G=9YMpW_>k@ERIX z9_dcvNah`v<_?=C-FPRyS+4A>Z-=`9`F$R5;RSpF-~2JJ6AujnTYf|*fay@F;4TxF zZW|ZhQT(5BxUlTaU^(eJ}vn@ zgpmgPKHieg57c*B)mQj3jAPH!jY$PRGI=Um4q>d*^=`bhPk~Z-C8et@5{LJJV zK>qei^DVUc<8TvpzwqMQ^JQLq=5>gHqwZe^$0y7=TEaL^K1LWvQA$9_V$m5-?fbIT$K@S{l^{~YB;Wl>MKx>#A%Z{Rl=SrqXhWl_IHdU>j3 zQCp$8`Y5i2u+$G_~P4juC>LkEv%-b}X>}gn@ytwc%oDM|~=yfKo?uOWil}7OS zQ>c^F-(Pe7YT7AbK7N<5w`{I0;Bn=1U8{QArQ-c=kxkj3c3qxakCM&EDG2r-x-qHy zQy+i)623KTgcKnv>hA3c!zZTLa0IWLB|x1yGE!NSDXNN@8I#%O+F&RXJLX@B^+G)u z^Us=b@up;$>oIA{mHPF&=S{lJ)ltUtKTsdx$MM^zq5QQ}>P@=ipNQx4r2Y-JjC1Dk zJbuBbRPZ0Z@h}bjId6!I*r%M&*X`%%qW{4!E)Nu>p6al4un*3r^I`srLF1L zJIdd~q^$}wJW5n6xJHfLw=qlaQ48pR$8K|Tb{WKI9A;i_9j zRZXD<{W;+Jhz)~0#wUN&x1!!9;mh&o#)G3tIY$_eHbeK0?I#yk`pLJ?w1oQ}Jkr-3 z>x>s2e=qa;IvUn#)?XQqqAPkT@{Y^v1Tz<E-cT(7)n z-3!_{gUXY0(yqPO3kq!F@?20OPvN1*rP~*K06uYHr_{*v)EZ$z|HS2)GwEcV6#Pbf z^B3SF;v0@3u~Bh2;4fq02z)b)Z({qYDlFZ2B;LfC5^oyZab+K+(&;=1cjiHy!LpCW z+s|VL+;MpvqtXSzr3Qx{05|*T<>vj0$onAUKG?huG4BcHJ<+^hY2K5}`%v?qY~F{N z_Z0Jm65Z^Pp@9rV>04;Pv+!RaTM zx@Yiae>PBNhBfseyjd>qda}3$3J@XL6XZiS3~4yFiPzbO_W|#49r_>k#VP1ma6G-B z<|w#X80U1u0urd~K;0?DwHEHmD#$q){tVpfE9yJoMM9-b z2aQM@mK&sl@$hqYrgjPTgnPrl3s7~3`pBT~%-Rd(`U@B7E5hTYte;**)LwTVxJ%vb z>lx0y?|yVw!tU&;^dP+U2#!cH_nk9EP=U5NM0*!`@cN3ydE9ob%J=N&oiSfzd7dkCG5x!-s)@)21y z_o18vguyBB*Yt6^k^Y2-;0lJx_o?{iyyKeAycXlf`Yqub&rI-*DN8*>xw0#|yD>#D z2E>oHMN8|nANz4B(#cqFLEo{>i%g!c!JBPv2u7rrnf#fp$j18D=5!<14Zl4r;a0dr z<(Udj!+UltY_oHqbV!{?#U3bhb!W|uz19AijDq7C$ZMQ|=|hkw%btVZ0(a6!x<2W~ z*CIZ@1>c?xH-7@}bMUR|s^FOpvTzgrTt}GaS#Xp0doJI2s>2*kWIm*`*+0?J0ES zOF%>z$Mj1D;=%E%_gUS@gZ!ImupfpELz?#zo)14YJ6qR6b2Zn~YfOh(rRn)F@r0@K78*Ss_8rR(!NeP{s$OWnZ713#-mLPw(Szu+sk8y;jy!fVy>sKR*V6fbH~&v$s^3F=HlL>av_HX==H9EunjSR z#FJ|fCU{cpTQffHcr3K{WueFH@-Tj2z-qq|;;qBASh5zcHSTOL^g2zP^~}q!vsp)9 z4}a)=bQCI@)?r;PqTh;QS$t_T@=frAFY#gpOL(qB)h88P%(#pCT5+2a*X`7s>5k|> z5T?`xii0V`lt19T7<~}znhIneauRUI?pUwis>){hxUbgCIMIG~Am)Nx4O}w?)!3kZ zsU5Rkzsk6LJIdj>d+7+2zu)n1A^pT?*-n1`Uq|m+qiG@{Ae4O_1@_D z9d=l?-{FUAe0iB}Us)m6_I4V^ReO%h{q)CcKh8ZV`!G`ujChdpy76O&Px5K{0-$n~9hGcmf;WuO%k!Oyl=Hl&cJp=X%usmvbn)q?})iJsl|E z)p_i_c$%oUxDF?CbX^H!tONAu=9wPW;REzrhK(4Gn+x5~@x$DxSIITtI>w2)LxA&~ z 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Ëm!_H7 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
lEA}#8gWM< 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

8b-_We zMRNGX>=S#7G;520hNbx_$KD;i`?86S=2cNr=8vY*`vbvzjMhSfDGAJkU19Im-$ zn}*faa`_{`XrPJa!@(EmjtWT+DSreX|FtO~x8}&>)W%Bs6Mf5$^n+FFY#&WLRQhxZ z4rgIJgTpT-HJDB$Lrc#83j45wUdKb}-e7*Kacdb1YSrO|v!UKPMN6&+4BN{6L#WLVR1et3 zJzc4Vzu@HKoq*BIyN`-A&gcvZjdi!zCa(_z`#OpSKis9oQO^6Ck? z><3$CB;`BnW{Bs5lyS1x?vNpus~2>CLOK)H3%p`p{fD-|7IHpX;O3Bk;dQKaE;ec=tO;cP>1T;*kY@!vcTB`;~n>?)LB7v@29fZz$yXunWlWhjD1Z z1GAqog|z2Rn)y2cXY0&&<1;%P(3(PjaH#|yB8_|mu>{8Hmikz%OrOqj<^moXDf6=g zlB6+`q>|yzqsNZvGa8b}hoV6zk2#|77^-zKpwha=#V@xE>PCN>Oddn@*__T7^rq*Z zil{wssV^jvrx8A1?;0D{Heaj@iMaq1g_N*@ZSXg*K%nSWr`idat<*?Hfjf$xc zuCaD82Qrs)-a)|@{BfkYmvtMgO}*Znv`+^{nde0T&@@>!iaC*pP+^<%FN zNOazI)v>eP*sHjHd)~sYMEqm~sfEXQ+rZ6w-N&u#%2Oo!fwjgV)rJM3X11UWaaxAblF0Z-+c#_jiAI|N>lf( z>-;9NY2z!90CcRe#kbo9jOuy6pd}Gys z{e4;bv>T$noW9$!9$iZZq`R{8iLWX6{!0Iz(R(wU-_0zP@?Z6j^qqU`I+)YzOCF_9 zf7-4gi0SY8sNqq+>ycM1ecEBM3_-+tC-fWn;)qdgR?^iVQy**jFahSF)Dn@T2eh{M z=Stb6=}#7nIQe{~l1A14(CGWv(+^yYuC*qO=s#YToN8O|0s15DN2@Z8XdlONnMH{2A;Mqj@85S)a6FK57U@fKqWZ>EB9nx-#`S03ZE;-jid&tIpkrN0 zxI9@+M%O{IYpdX6m|cJe z?p-=MKR!3^*{{x+H}WxSZ}9o}vC+Dvj{&Gs#$n~lupvMqpHB8aQwy?=js z++k=O*_Y?DA28l-xtxf28<4p9F6X0`(-L{**xbIFKCddIoRn=!eAEv9GJerB`{m3l z)JjV{M0d=;SUjn#Q)6mL2Ow@VyvM9Ec@J4i1>?=L^2n^;^RSSl?g`CVOGj3;2M0z) zG=N}N?ZmnaY(MYiX;qTu0BjR_loiYuCA&LP8hm{8B(J%4(5g!Oo=hsQ+DJ{rR$bCr zp?`UIA7)#^8pzn~+`a*3=`G(e49+7Am1TA{ZRuh1F(g^R=M0SbK(G*VG`eHp%~gCC zqZ8<3B}~|LVEx03sZZK)n^LatBX^>I9NcVUcXHDGZ%pP@*xOr9&m!*o)iX!e4P+Qu zBoG+=yB8w*M_x_J-%PuS$Qr?*%R8W{r=Zv&6dQYt+3dx<{g+j{8lSEwdN64iiXdvy zcF^M!Mu&1d6&@81th`6{_O;j6YY`OAa}fc25`ySasq?PxSahS1-$rW+dK7|a?akJ) zWe+@-#UK~l+ol0ywaT_lw_g4sgW{l*)NjN9Lz#QwwYW$jUhiJ5#1psLF`YT@0^o26 zwhgk#?s$#USMQWj>3=~h^j&V#c7&fBIATPjs){t15g&fy3#;aI|JL8j*jlvQCeW$( z;y2WiEmK4a@9}A6W+`U3+d;+5o8OyE8!Uf@cDAT6ZTSyTcbYk-%5g#j-G-||J_rHQ zowaaNVJC1}yvAQYA?BX(n{=x)0aSyjcijz4Tx`I`S1;7y4)@=;oL}}bh}SmaKST0^ z1;bg><5qo5c48%e0W{Ko3swU=VLZ;y?qA|D>jl*dNVRHW!P-EQaE;T|s#UxGVOjmU z3i>Th?{2v8X~mq3ZXfCj{BJ9+{`3#QwOiPJh8kNz<2`&gkHxj7yPvBs>>X8_cxpSd zGGPxH=F7k(E}CVR!+V!VIz8oSeECwxQU5^DBBp&lXf%?nT}fH{XFTSa9SFxX`b@_f_WiHd9E@lKR5R`NnQm=)(txZ>Y4~*9yeI*@Mb=WoYh<6V*f~NUTS6~WW zQ=y}S+SFs;jQPEIPcY9hDv!Up(DZtwlS(*Co6XmhaXlf;ckZv)7aCVtIhz0@FO}a4 zrTK-a5{IeaF|1~3lZLLxdHX^$TKeC>=Ptswdu6JArk}2`)O4V&2ZE$6Rt(qG51qT% zJ;p*&8ugWA>k3_*SLi-=oN|_rqOt5KSOF)C<1c%t@Uc~BY0B8w1)`1HDluEiqmyT_ zk5?pit$3l?6vF&(Yz~W$Kf}_O|Dj@7)Wtk(L}RtKOPFrlTj*UV)=sbQvg=B-*?LL9 zsQ%bPF4c|ujd@SbV>^P%V%zu*))2m*r}I*@@{dhBmlAZU>YVySvP2;MOI-IJG0zsaD-AV~V-Z|N|XYjc0Z zdhr+5<^Y?IfIF8XUByLyA^CRt^r^!WkBDAF`Yc3X`#469uQP8(N$@$bWEO)?|Aidb zeA=dkQE^zgfkOmD^B_T7}?05|Lq=GQ}F3nDFx z`Qx|*bu*7PWOaYPs3FbxxbGaG`2GCD_1#?grX*~H4#jq!s3mWV-e3PVPAb1ch=&yg zR(=g4{VQ3HZC*^doC^9e1SuD=xz%{RhHK)-PiHlStZ*EmoXwZFh)vp4sZVF-!+cEJ zA8kC^Uh%jPwl9qntlOXOG-cfM$E?=Vxc84ZeAv7)u4mQar#0yR7}cH&NQ?Ts?d<;^ zX?PlxYy?R|{1q$NJIdsx9&q=@`}Ly7E{NJ%NaP%=YU$ZEj5iGBZEP8&84(xn zwfEjx-MlpW_H<^Oj-dCEG56&`b3E%**{Nu?EP=W9BQ-E0^~Mv%7?mwleORyc+=Dq% z%l5~Oryf*^X6Y^q)KAx3Lo;MbzZ1#%bB5gKK;iQ<$;OFdt)_T7h$rm>GWvc_t;f^1 zo2U*GR-g3bE1s9O3>#)zY#haWgYsZa@@0#fMD)A-rc9#}!+(HxAaKdIP=~KHs1-FL z#GU#X?gI|M761BFmzhm(XK{WR(@SiY6n*40LWPsHZ!i&$M;)0{?%{15Ud84GFj^G-olUY>%_Q^uyaSN7^XM zPB`L=kg+gZmx(|8rqG-Bd=2)s+;^|A{q19vW;2RmGRPQ$@6GC>i;e540>u^>?MT7QOZi1lq{U-?DX`_Fk2O7)7Ib}6x}!#^4VQ_jf^e#vgni0gFg&R9R3nb5 zL1tfho_5|WSpDddmNl46!Uo7#8;dz@&6a=VFaMD)8<8IT*k71arK)v1AJ3j*-Jv#M zJlT}jkGtK=X4Jj=eKPZZ;!BbA^au|X&Me7IoxAQWz2ZUTNVET1n7N4gFPpLWiTBCL zBUo$m2z)foxuBQ>Q0#6Lo2L}DvH9xjTIRkOTi`znush(Oj-jcYcUHlYI*lj=iOxHN z15Qny4xb2L%~Pj7<0XP*{ihA<%$OM5oM}coajQd~i0P`kR9+ETGKBS6gxOK9hSE=J zDsA+iA;N&8EaeT(n88sA>k5lA~BZ1CVtiK|B0O5bWYFFIj>&dNQ z!|C)ty-r8*awy(^zE0 zJAHj+J*_QtvWTZsOc?j@$L{C-OP$=RF%M6JhaW}w-#om^!O&rQkND#@21#x=S)ZA) zuWR%O>7vFkx?gUdzCzcWCY5!^UW{$Suqqh+e3kjWp7}WP-IEKem~9FBF6zq9dDgn} zxXaSH`r^$CRe?7`5N)6{rfB)vTY28htA2rx#%LB81Mqb)Ty-au$tevesQofbJBOb< zQZdD>8dmdQ{~stn6uT0rqU=|Kbt9XPFD#hO*+qn(f*vdo`Rxf>p9?Q>y# z^iF^;f++LUq^yBU?IzeWjLt`X#cWa1(_!s{z6+NN&q*fnc@Q5TS#)3DVDZH78Z%h^ zq!YO}F?%YvV$`T)ipQ0)d9?B*@q5es4PtDpiZz?mWfIi~} z`7X}Q&OJYLAH(RsRwwwISTAet9%PzQ&ylWpjJF^qC0?C{6hx8m@Lk<1fGYxXEb8DH5?T+mmZ&lzpkV#qrx(-?+ z6f7jsSeepIL|~(D?D!GV&L2)PdHAqU^dIUwejZ3VJBYC_`%bKx(1wogiS%9H+{SV@a~O8ttzj2G_rrDq~REp2qv=lp|Ld2Cx2ImYt#5h{s8#s@3>ke zNkhtSI)dmA8MiNOs90QKgu-$eGS+#G=BxS|HuU16iUwIcOU9D7b~0WwT9v=wbq@3k zGB&wE-;~#fE`>6S=YTG+Ns**%P_E0dom=N$FWV6v&Qc-lmW+iw@tf7geC&VNXE+A!D`ur;dI3b&CVG%_`;Rx@T$;6&VU)v)GG;sQy-z~aE8c1nUo{!KTQ%RsH#gXlwd9oh zn!sFfmO3<)PGIvoV$p29Wn#|8X_PL#eO-t6xfS}Gc`RPI?mU0dTTc^pT9$oo+WFnn zdcCv_`&P$o{ z*;eMuimPz+{HCX$Sc$X)ojhKCF^$G!Iux60-lo>~xsgLYYq5@+QhWxb@R?YXILL#qo{upeIoyMt=5_b{Ir4(=u>1Ys70>}#f^UQ z@rgI+w&=e_zN#y;CR8=d9l&I^M@x|+r&l&)$9=a1yA+1C0KJurJyL1l?l|KcpG}^E zOf~8cxh})Aa$`!%{CK~=5HjNtM67A{JM+n(!};uPGTL;uvc>rp-t^jA{mF7J^A-BZ zBI+wSRx7dF*e{PR^D*o-q<2fs-+?L>?)B*EF@x#34z_MD+xnCGM$4Z`$*iGM=bmg^a-ZF{a5wz)2OAI-LQVYcPT5QlD;x-6W%THNPM z*nVJG`t=rUha2bIa`7B1))tc60dhTj1Mm;qB*eiv(AfsFLMct06~w=2|8Wt)*qJYw zK8+mE)Ou3}_dqr9PCyWCFxF>b>E!jl`9E$N8+VfPqMh$DOaFmdRhCZ)n>YZ<-o(Iz8`hLg}gJe_(-xy&e;07umZ(a(RqFAC~D&=x%;+|cVKgT8 zpfNGWd;{m3w>KX0hG8AxQ!%n%2`x@7-Zi=x|A$Ls+nzKI<$S|pHh(q!>5|6yuD8H^ zPsV;mPcJ(7{u3WLxS*Aflhf-zWR*^@_uoD-zL)T~beZpClULpoGYywAjK;kIGPdDq zNL%nJx&-s=vrKO7Y_DT$@G3-nZ^De+~WH<&O_ zuka4>-Ng!%f$UF4cTyidSf)*9*HkoaW9HvY#%BMrO`g+X5U-~+o-mZLsqU5Ze3xGH zWPH?%beFMhseMvcsC)ArK=Z+8Bx7ek-Wc$8>%C2kFBj?MBZztU*zb~a{l<%UJ49m* zW0@~UeQk?TEf-v2d^CD6k+EK37WOTy;%Lt{Zr1~5CS#_z20CvUW5ZX3s5Lj2vDn=; ztglU2%HI{F9>P+_diQjWUo|tBw>8v51W^yc{cNq8PP>!=qe~S3b*0zf1k?o@N!UV8 z`Mrvz@YI2zO6!Jr8MR``raL;i1XdquKc1c-||K8%$i`_N^cHJ>EX04 zmalw#jg15TKknW-EUV@F1APTi>;_a+Yy|;ZQAsgSK`=lOM5H7HBoypG#X5F(i=EhA zm{_RT-Q5^?KWoqInRg$~@A=;6{&~;idpzf}X02Ik&6=J)lbE1)TqPhjE+!!+C?-lg zM(j4W)r0jLo+#(FD2fLlFZzB?H+@K}Q7Z>6p>JzweU)f)K+Chfir3f-?`)s*g4g!G z@YW>!RDChK==v^qXsMJ9>y=U<`V{=suRFpX_n+B#`jubg9WVHS&YG;l9GvZQP~3IZ z^A4mL`N#EjYJYVF+7`BI+FeUOyR1{4sh{ihS8}6qnh)q~RGr^-ZHuGnGNiD*4Q z6GOhVo#D=l|BPApe^`Ruf+b~Uk3TVRT`Q$sdjQ?^-(&^-_L^26cbgu)snBU8VBXJ_+g^(CqV9C{PgJMPfR)6sNFYaAFaV{ zMgDs9eEA%P%uhKqLGdlohk~DG!}+>(9> z2(9|fbR}!a{%jy}AA^v)Jk5YM>TK-+kQeyLueO)u9KYPH+uD+>mwE@SUW3lZdj0Ee z+%@ETvCfLdbRzzpq?t9D6n47Tpu@`Q8_|^8;hpJT;Q-nv!@6#ia%l%DO;WPX+2`{6 zIL}}!_ANkZ^adXwi(YZT-4?;hjqb1SUYuam=Y3H`5Vbg;K+lo+t)G~3xtVc6HWImu za{eu89hTW!*3Wg#RQPDW_>ZJDT)p7SUsLlv3T-m*e2&7tHGWo2eK)>JS7^IHD=cZL zH!J=M@ter@vB__xK@&H<4qaw(YE0@6c9zk=g#10k~Sdb19@dY(PLTySQ+ z{V~ul;>XLbNTg}*Q?DoNmC13ytLf>7{gsLKOFoR*@P?Hw(Jet&%l-O}GIxLP@KM?> z^4V_u^0Zyyy-%37UiP6IFE2{B4L@~nC^UOTm+4b0V6g*VPXXVIUl{hv##9{t=wX}c zH>ivWUy2{Ep*qhQt!AF}U@J)E5An(-9=1N2@2uIf!Bf1+7gSaa$e(gQspXUX`(Lk( zSqWdUmaQ4+V!!B2>xem%7oNBVUDZ9Y7R0Z)%{<~|#SdvsZS`)baYPz*PpQ5Cm``>W zlDn&?RNCm#4m%X8VYhtAVU^ZSkG9luhx4DBD`M51Vh_r9q( zoj4AwDMIP2Qh&YtEp^u4zCP(cZ0Q4Oal9TKr*m{COWpS0Q@*LfPbX*gU~Hu72YR|y zx7D2!X4)!r(r=)iexUbj=iRM$zDcDOI`yx~TKSeG@(=!bd1@oYV@aUNucb(1^4Jh9 zM^ePcA|L$lwIG!@(TC%gryaQ3$h%!c`hqpwa?)(5o@Um%F_AS*7oYY?W0n(rh(6t3 zXLje(5?g(_H0pX z%lx&zc7x`X;otaev;m0U6Z+obM4kJI<0Jc zz)#Y%eCr)E4%ohf(P?$#7JibxJK1wcM4-$^L=S zEStWJPIJ@U8vW`Fe0x8Bf0JBhQ95XJYk88P8f!Ew-J{|7JL~5>%R$E7m_(XkKE_XK zG{nZ`;=b;6@ueeaOf$)Y8vcYi!)uvNU7y3~G@CrEp;x~4I3Vj>;dzWsv&Lf@y7B!C z?**^J+A;cT@So7o?WceFXXT~IpnpRDk4mGw^6Tgr5YWak7zefSVi}#JbMg#{>mME; zk0S<7P7S>sYp@6|hYUm_VpnnXH4s&wt?pQ;wdvtQ; z430H;odTCD`0yvdBcMY-M-OjFXz0{E5O*%)+6;+u4}j=d&OhsjbCGO`B%R_;pDZwXRO3R+~lg9g1|9@Pz(>@sSu~1w|#|o)X>a zVX5t1`&S8Jb@(OH(ES6KQHpGjuN!i2g&8c{*J|uL_~pBuw3 zy+_ZVj=qXwg=oh?<1gavFE_Vpfv0Za`#Kd?73T{Zb!)>kvE8^!lOhALkeKU6*XKSLLmS{>n`NM;dIOv}5!P zT2G-drMjAqmAI%7+@F@vFFan?q;Bfgz>D7!c^Y-)T$5(kj|vetZF2APH0lbvCe6!6 zw$=NDIPK(V)RlBi8tW$c%8eW4HJYbUSJX9WeqEjt9KC7)z2u9x*G81|4 zN4*_i?$U`%wO^!_enEfV(Le1?%ZEvvuBR*G|6AkR{ESMi=yqV@*VB{HeG2D4?BBDC z%CDy*qxb0fy4#~WU+JDG@;A-lOF2>5#-ZES&6xMR-|}6NTaV%6@Geetq%D0=G#9mxOkuIHGHE&r~GY5erNU)7_IrAkD3*@ z^}$}}HjHxa*{#h# zbo(&LYeMpHDmfrHjxK9L?Bld2mL)?%!;^G<27hkZ!@hD!#g8m~GfMBKCgghaaVZ+*9eUu|~Kn8zJ-YF&ot)RiPUi_n$0@D&tV zihjDkwZ12AsBnb#ZRm~)B-D8mU8(VyCE;5r+%5&#QD~)@x?>5EW9lqO))Xlf8bMiyyo!7`eEIMWpuX6iUNRaOA@U^*zimvI* zwWWTJPHd=sA!a3m9?tU4U3Mx;v6Sfkhz2@5Pj^bxT)XA%t4EKzk#843uJ&vLMZzMW z(Mny>1-CqMV)niA*A=^kmR-s3bmddfkb$w!n%ylWZ>0a%Ip>&II;0gQuf2NBjRPU&q%?!lo3wf0d`B z)tVIi^2p0EX)~mRaZgG|R#Ukm#?{{5zQvo{6mP4q*y%AhULs{ z)qAzBUu0lMS`nm^(B~)(zV=Be5&lb;&rCU=N~f961E=$;OOCq?eb?tD9@N07Sm*?XJWJ8Job$_wXzVdsJ>qg8zfTnXs-my>IctPx5h4~m`#z^Q)Bz{)>6gGqhk zBT9{f{?R(ur)N)PpPRpcX-AS?3fi6Sx)#UQtXjxubmPlALF>2u(#pBM<2@NomC0|( z+41U9{@C$D*bb{IlhYdB@_1Xk)&}}Umfa#lGCA$u(!maHo$jy`Zi0`BF>L(ZLtj5O z4~JFc36(~qoNABexL5_h)5s&jzM5^^%S_u}iSwxX6RBIrx7QO+T6dzB?IP^@O**iX zHuHm~-uYKIBC_t$(gC|j z?lABb08P$sx4gP;|7*;PL5!D98&*LCGr4QZhF6}tJ{6;Sl1q^~T+o(u$?vnEmku}8 z5RGbA5`K(tLi)jg4X1D0+z>fx8;yOy$8X>K9AXj2 z&Q+3(WXK3;GawPC_IH~PJJCILO9MsYDHSj(gbqCB9c~=cjoZ`jr9va`mzA`)<{=r$ zW*@pJH1d#%q(x8jtX8RFF*AimJzRN78|f<{@0bXrQ6d^D)p!qaJgbbHOn3dt$w~SQfEsKn&B%V z{J5RZe~tI^{PO;ca(_F?ZVitAaUZ?)u7UeZNA6%ZY1KsfM)+}g4O=ZMdgEN&Dy1i* zwzwT=YI*eX*L5zq#O6SkzK2Cy;-*Kp(ha_!*kOA>BdmZ?6j5AwNZDCKPuQ$&@w=kZ z)=_zRf|jSPv%c{7vfW{8Gt>;~H^|T3|0~@%!y`ZHjCi_%rz4;H{8zg2wj1+py>&8! zrz8J8$1hL5f%EJ~mGz(R!fPb?r5S#F$7etnx6SwKl!{l%sTc5G(9682+TPK7mwuF* zog%)}bHTffL%Xn2?G2ntHCx&5R!7o(fU-SRTqPT)EaT9v+V8!Vd0sqXwNuHbFVYyG zPJB|@{mNJEOGa3C}?ZUuzRyJ?P0BUWW@?Jy!| zS*BwP2X4JOe^y6Bg_kY2JXXp51C8%>_$L<9m-m36~&>l1&CTj*k zp4>yG)O2zo6{|zRSjND>r$%P_vimv&O=ZC5(8Fcez+Uor!xg*p^4H^$)F zz{C$$j6qs<4ZiORuOtdiOT03c+~ME z+x5Q-gi1`_s7n3$eW0xDt#21Ax$0P-MNDVvM;{5=v8!F8F8s0m%V_FIU0K`7zR@qA zr&|l!>mxr9-*fOOqZG5NO)pg_cUb*4iTd+bLT1bC)YfxWuIa=^W)wXmD0=8l=}t zwWHgPo_6;Rd%d0H57WwbTC}fKL*r8HRcxZitMrg~JTZx@{OkI!?-cN(65WtUef?`wYdXSS0+>D_i^9cuK-`YUt0JYUFpab>CQ6L|4Oc0hb$UuA-M ze{^p9Ti6dvfX>SK8CnA?)RsR@%irjXeirx$?;6naZ?an2>=vXW} zCxq%;c4YN#eB)~n=ro3+QNJaAG+%!9`#~qy2{tC`DAdqJ`Jw|PELiKRyN;MSJo7+l zCYNfV5$LL|R=TZrRa=yeFRturvRYb5L$A7`;6n$`>Jw#*_`oJ54mORtnd^VRDHl4C zt<fkts#1~QW|wpo%-Z8yz;WB|do2HH(32deoMfQAf649AHh znlLPi+xqd-gOcl%aw599mTpyQewiKxue4F}r*f)9bftbLmsmUW=kyY@nQm04jv!7M z&42eT>pu3Eunt6e4};Ftz{h)}cDvf<^NE->2sAePr5+_D3E$Pm>#PHZ*No1deoWA6 zQhtn9a`x_N_15}r6*NoG_)^Mf?}hUZoZ7}t{?LkpEoe%xe4l>GVMj4rTC*fS)dx;D z8MZVaKT*3$bE!r^mGNB^y-X30;~_DF8r0WWrrdh8$u);+0;?%4C|z7k{{Y&~&<%fF z`L*qC)1fTN$piMFi;?n$gkl{Izy8pPmmYb~iRYuMUN+)%zO zvU&I1sPxRE{@##H^gB2;Fc5TE>U-97xl`vt{dbJM1pG;QdBex4lc#;|@_58JC2HtC zpdlLmolo-@fAFm1C{{NnAy$Wj&igoP(;CCJb_}AqA@kWt;^lYO94R>D+FpMrU-DTB z@Vxuo<1{%rbvQp^&ZgHE%*zu&qqnlrSo4w9KS1a_Ut^_(pqfhe*U*hA>^$Ok@0<%m zjFQl@kq3!Z1+>VJWS!5R;T7N3&#t7_i@BP7M{l38zhqh}qL4J54;uBK>}vz^=|xCd z095Xy2c+!JvC45iPCjKdZJ9>m&Fh0IZgy;L#w4x*O?$F}N^vbvQTHb9aCv0>d&DlK z6q&?r8i@x-cC<>W|0#+|+zA@#c*B@{qw0{Z;V^kNpnFo|`RR;fFKBXXta2RCa2zlA zenD5Os6@tb6Eu2D_NL-(^2`k&bQ79m0kuRv@iaLijd5#sO5rKyQLJth1wwLmi&CQ* zNe0Pcr+n*0R9zK!+#(4v#AYE6B<<>wQishQ2b@-DH1qf=X+=v%gc{6z!T4wfR2DgL znGq8o-kCVTlg1QmrNtC9S$@x^Tps>?z^hs;rfGg&9(1J-dvV!rpkvXTcD$}v1TM>t zG^9~c50oEj7&@e659f)Mj7#8+8}g7HQfudxt$>jA)zHt;D_aI8G}mhgly3EMN%o8j zkHLou$-2_F;xkLV@R_V=O!09Cy;J`XdUyyM1VR0D6(ijSZf@wclysnobcPH*S{yy0 zjz{mN#rG@oIHI|NmS^78*mSyaj~cno+_H{HLtkMf8d6EMKpa!g(iteVEkS{}FeI4z z6>KMAs2ZWf_BWd%Hl19G83`u{rXS`|${gs!PZ=jiF98sjcp^~OeAoviB@lB63neBQ^@hIhJ9iP0Ot3n3e4 zIYV`29~LhBxX$+ykV!OJFJ1&%c>lhMA-b}a1Ctwk&H2D+pQ_;7GxVm)Lu^T(tUFzc zEk!SE5FhE1gdfwxZ*}~3i-_7A7>#c0%V;Lr=@pA#Hhvy&L-(h!K4cm4Q~MvRHZw02(wV#f3yAqXwxP2K{I6Y}nWutwYu~uXgolMz9a{2dasZDC{%=QRO zBpS^w@8hS^vdqGk7MQi?Iz_`7@H~Z|9w_yUQd2#BgCFmywl4N~?&K=7L)qQL>J{x{(fi1O z$6VdsjPPziex`CYaDtx)hQwj2Ge}pc{j_#BAI04PFX?<8`B5t_Zx^GTq?T?MRY&J@A4&0v!E$< z)-i!#uPr-$ZvM2ro%I9q7s=j*t~H2vU4xSE>nXBTy`=1JTaLfjF=%Cd zR+=RHGGvDg(6!&uGxu=Yhpm(dC7D|xGpsLt0uf=?_CmkD&#tgulV%?GV5^)Fmka;W z%FymS&byI4eim3u0A04)Rabl0z2RnZmPPm((4T>>wA%JH20uHOlu4)Sh?i(DHN4vv zTKJH9&l<1I>`n1h7C5!Imvw4XQv{X+8jpuOag&;^K}?%5qlX{BK`{dp zD$`1Ow7$(-b~bu$5Kc7WtIBDyIM`9m>3BumERVsIi!*R~Pj~`yVe4CT?$?r1D=&vn z9iMHHao`8mzA3dUaI(Ivp{f(*+g49@!8((Ewkv0oO{v=h*TMH}%tyT?_3Is#)Ctnd zy00&%*V^cl{11yh>hb8y5UeGnxbD5)Y0QglqFwFEcdHntFg<>S}+UJsR5h*9?_5SdW(er-et0b3cq!+DJWG@$>ePW!lv`L%ECw zE=z-2?dH(FrL{6b&{ZAZ@<`E74KbKw@j@O+RGK-%9i7$>?0?yq)lBY)@ch8}G zx1n5i;-}o-XLV!$(?1@w>`@Z5o}B^y@z5!tbyOhMn&NRgX?PMI;ld+`7S=19pYC*h zmy!>qo1~=c7ZMbyUO0GWaMj;mR^Q9d+5@%3aZZ6Z<)vnsWZRzXlg;Q9P1DGJL0=FS za=ZG${yT}zW=1qBNW|-qaky(MMAzec^_v@4X7e{9Xmmh*kuo}%9cX8CaT_?B*=Jh4 zBhRY+RjkrqJiP6}27k4oC~4-x&1Gg8@E zic**{os=|Rqp^kWgyQ5omF)@O)H;?Et)mgfOj$B@d}x!h?LWoREix>M9)qUNuQ$K4 z4N1Nhdrqaj)1x^|bx7;FD^&Rokz{_6GFvV9vaHHKYYGaPKlJz#77ptA(RJZb@&@t! zmVA?sn|`{sZ%!G-Q{9_lEZ;_Wqv9T$ZNK*oI4oougQn^k_3logjbWY@NoEn?B_y9q zZQbk6^P>kUrBeoYCHyceMzf6XFLj~$jcm?L`su++fb^*>c|+#~g|&&i#J=FI3cQx2 z?U>*4;fs--_b77f0I!E%fHQrIh5@ZE%&_{HxXLa0Xn;z{7Ic2bHU!g=O3Ph4Zl`l) zq%-k1z>k-Fg%Z`<{QA~|S`Stxolt_x*&k|L(173$+*{4O*TrwWIS2W(G|frAI0=xp zKHjzVANLm2QZc#%=>PQ%P)c<9{{PI)NmBE2p>&#WlnnoQ>AdHMKVCgnYZRNtp$ zRe3ei_2E*AHaFl;YU*@d(5$mjFO{M@P;S|$QRl28tqvVktfqMHCTW&!drp4%TIV2g z@c~WEWx~k{JF9dkTuRlzPmk6<%lejG^BMP5T96*C@`f41c2r$-g}j{A1oC8l7IS=J zrq1MEsLm{NHX=mXk0q$%KZoJ?llHKmB<9pWe-cO8)@1VrNZJV2vcrd z{g*Bsny)_Vrj!cNJ99dA<_lzMv!Y+`r60FjgcTjKlC(|0kFSwT zHN0Q@LHpq0N*z&YIK79H5$K?X8l;UnR`85^>j34eL%vu|!+stH^9Iuv$4n`6EE|@n zF+2;h|0{;mbG9ukl9SLfo&fq6os8TJ>4`wa5!B+;92elO2@DpBq7j74^aml1m(1zoQugud}!@#0RgZ9@LPqD9xZvEgOBPaOT9@^$7tj=Kj} zp8l2eW6@p%@*> zh{wI7HhVtVcy{GyC6G@`O84J8WPZ2p4s^fst%edkq*E)T<$c%u4#i#Dby)sg(T8e* zD{rNh*1lh`2^5-cq4{H00LD%jPbwt5Zb zbWvmnJ89H^_t;uhrY(z6XmP*?OIqg8XuANWNjg6!M${M zT&Iam3wGS4tbLGWv%x`UTlx&??tIMKs+4Lm;p}Wn!SnemUx`b`*GsCrx8zw?s((WJ zMV4*yhTZl;nyti-(+oQQIgt@IaF7y7G{W2hno{EI?7IJApOZ(kE_y3;8fEsyPmliU za@*$(`o=U8^xj%}O4-1X^{%(gRxIBE*<^VN=BuoarnY7e<=6>#v(R9_#pt_^1Ao3$ zzeX1HE}Y(bQ~xIm%2oM+_@!QdKX|KS4tY$p>{Mz8fQq(sakH*nJ&Skw1CGKv_N7>- zPC6yRJ7B%)DALC9i?`XW{ko2?Cyjd+HldJ`!wJx7q=6-6{3y>1AY?^bJ`ZH8KWBlu zMn$>fMr57Q$6ZG6KbzI08Ui-uTgI4Z&zSfG?{pCXU5m~}3 zDgg-Xon;xRb`A%kU0s{T<*Y2ArnwD-de+xM&Rrn1Z}eBl`O4+2!3==!GPY+PWN-VC zK2?B_UGx`AV}t*cYa5hiB@im>Z6eJEAi>D%tkCBokW;X$Jn9yc^8$$6Js>%6fRM-H zlu;`oxj-l{d1H&I8`IEDc(pbVtv<;>NHVP;vb<9Bq?rqZ)(lemj@8ikexUsIX!@o zWcEq|AyGU{Tj8H1AY}VTVb>@i6ye{5T~j$1TZbb#(>Zch_-7VJWbSjg99dJ|0HIq0 zuocL4ZrX{}FGJyt)_4mh_(e70ff9EZy*{=2z+xu6j#y7f?A!p|n| z%=QmLPAwp0MNAE*W50zD1Au7flTkpl-WZfe&J-YR zQAyF|aButuG7(nDnrrI8_IV6M>C^_IZR?r<(R!mJkW9$gE<6?iMB9!H0z!TsD%zG| zK&ZTy8LRqC1wvMs2svJznGf5E5)1}H5ne{f2?e69Da(P-3BZ-Y(#=4q?$9WPMZ!%W zbmFA7D8c(cw7u11Ak_Ar72bFbg!0NK4vYUp{`18E_0nw(31VW|!QKT6P zge1#WeIgLDl&#=W)NKM%xd`rP6kPj(kk07>ISPclI#+o091ybot?<}IAV(~)|0(Rc z1w>n>kMkfefM~5K;l+F?Pwi9!qAi^|K*%oH+Dru^zdcdfA0Xrn*|y9AqOHqmKq^@y zKVfM)5Uu26KuAN`%UsBVJOe_tva7KDBM@ql)(Iq+bIDe#SQjRlo!law%X37gsRo4P z+z}dD^E6T)Cm?jEb(l!w2}E1J`T_|rhjb!Me;`^*Cj-&euLVHJ^XzV6($KprvsAWz zu|R12^G-;P2SQwbMB6foBWzcd>1j*B!FK(u}CSkCo9l>2lbq)%(X zwG;^T7p90R)^02ZLRQG0aRZklM>5-iQ0YW;SGg_%p*`4|Lh?0^pb6rV-vXh?Wb4l4 z`F!9fugVtN90-jnCkZY)AT)-oELtQtAfzF?Glt}N0U_JdA)Q&_3q)HwK|IZ)qH3Bj zAk_N#igJ$zLV5KRxhDhBmgzr0v?VwXh&Hc9Kq%(jgq+Pls6VYJTCF{KxK03}e$ZQR zUE^tFt!xCMwgg>(P}{OcSmDKy3{mdANTg;w9|eT$l5>Y7AT)|QA^bBM2-O`q)=J4E zXLcSr%Q+(3!&N}EeZeju)B@NGOHTnIugVdA7MCMS`34ZO0%6Zf`6&=8cXJUNpMg;P z%oX+h8<2fq$tMt<4=XR}RZ}3fY}k2C7C#k$bV6@lMEKAGh_-$;20}WA2+s!sp$M-c z`u8Xx+L{{!MBDO@0HW3u<$&`osl~nF_=i2je@Ggmjjpodh5h zy{Pg$_klc(Y;BT(kmm~v&o2W)-f)rL;9SO{+&2TE7?Y#QgFvWsj6|9nKlKYjf9pQc`S5x;>b;bbl`~8xerH92+46k$Um}87zu<*`GKf|DL|-xA%wU- zvw)DL&Y}gF2ZZVcJ26BNz6J=DmuwUE0-=bKv!v5Nw54-B4_C`xD4jBji+Ju1K(wu& z3lPfPL+Im9Tqx5XqU{X@vJobX5Oxg!LY_|-c1`4Il0=$?K(xKX5+J0r?1@$Zp;=OZ zkdw~SNUxqJIp_zgh-kS7gfx^h*7raxQIY$=TGnR%=5l2H`pXenzl!=XZ>$uyn*!0+ zl!`#eKi@=bR0g7rItw6Vmz3Nbh&;hZW$F)v`qOSAufagH?avq>rm)LR=h}IjaKqz-P%bvy& zIm=$o<;W6Tmq*SHAllpyaHPG6gtI`jbH+PBv~}kJ5c0E(y6-?pL)k*+0-?TgC4MY6 zjC%juV+DbbWH~Y~352{MSf}Dh7*BM|NclIOMuWAa;!ks0U;mK*QzY{BS5sV zaRvx!7>0B#%_YvocF!q(vh$>Q0Yt0edmuDxL$}N2n4@BCz%aO}Kq^yJL%GX3XbXgN z#_*1FH2^{}KSbzk4}`|p-&?C`+<=f><{~mBu$4S3syXH4v@MCm^JcoELlpqHTY2fRG%W;40LI^@EK?UPXXt z^(h795OhX%+%8ifB-vRY6@bvV&Omsq4iNHKh?&aO5(t&fP{B1Dh*rZ@K(sY?2S;Sh zJqkoy?zIB{JOZI3cK*-XKLXIU6>bv*lQzh2}LYB&QwHZfbt#kvTtzUjXR@h=E z2?jF_LxE7#nTc|b;9OF}C?MLrVt`PYwi9v&a5=O`#UxJyqV-P}5P3F>YVLg?q@lF^ zArP`%uE4woLXjzFH(!8|&T{?vJCGw5_(DPWCx6htBcW^_q#6*)%gI31xdsr51ljW2 z0-+WlL|EDa2k34AtflwsKS#1;$vP+IC2LPcF(O40glYtmw=#GYj zdvy^I`o=KFP(_w<MBA=r10gG9EBc5dvX%G>g!Vxu39l9iW?q&3 zU~!I=79$V~AhfpgR^(m{2$dJx`J-~T=3FvXoq$k}W?w+HYc+A9ES3m4>$x0R?t6h~ zvJN-hp$I-K0uNX@+}5SnSW6SjBYT!F4?njSzXTH1@e z`T%jOi5*RW;PwcmzsM3X76pVNL9T&Z20~WI^`EOiv^DM#Pa|u}Zy?mCMCDiY$pu0Y zC3|XJ=)XO02t?b?y93d-ew~46bNAwMOocc41ECnp5O&Q2Lhb5!(Ppj!qAiOpK&Ta! zExvSMsE}3504&ny4vvfKb1@&rtQoV<6fHe+xw0ZhQlxt(CulX#1U9 zAoOj7EFD@j)y8vSj>uNj1PJ+1Mz|di+T%b);B~nr5N+=e2!!fRKH=v?Ak_ZM7F-j6 zET{q71u_)~_4toPS*!!%igp8w5j?L$Kxk(~#_9ziR2Fha;|dV6-C1zm142HOYs(LS zP;Ckje*Vn4S_>|he)y6Exo;InM<7~1`{Y5wfsj6O<`M;jRv3y3Z;S*&v#qZ}@@OF1 zSRD(5`lg}68#8zsSr&7EPEA?u>BnnYDs#Ca{mg1dWXIuO^*o1WiQek$%AA8A${c8jK@H<{l!xtWJR?CYI*$t zLcQJ;A^A7wl0Ck0JPqkP`)jRtDrc(l{Vm&o2N%ZA(qTwFro|Hk|_U5bYQmCEk)`0MUBv3J{9S z0>WdDxEy(^;RO(CTaX=>V;IHOMXL&=2oNR4L|K#tqV;MOAlg{14&)F#Zztr`0iqp8 z*#gnVSR)|X`qc~w`S7ri;|fHZmp_oJXxXIBkwCP4+z24l{`?i*n9h+u0$B;9Vgrm< z3#;B(%hT);x$otOPSm(_9Fgr$Hb>@*G?V+27HI2? zRpb^&Mif+$R~-2*BC1d{}eEx&*93a%PwG`#`4T#o?d;?hSvi~X!g#05%J0&PwOPJ0RLQ$PXY?UVTMfE|CZX4U61SH3dSuzyn3hmj|M)7d3&9 zJ{N?X=0IrOZ;Z&@9SF58qeU8jAmmkfo-G&%m8o2*SPg`{D%;hyK(x7U0zz#9p6BG= z*abuzEeC*T$Ma`_P|bZH{Ct%ovM%2TqP6P<5N*``20}Bb>7o`Gq2nTCwm{5*Q0@+5 zR8Rwm)~mIEXzgkOgfx_+cQ=m66?=Ce)YjPuKYIZo4duyUA0T9fTzTum5m~##^B|c( zXuV~gD6gA9v~8X9pnpeZXCRc9tb@Kh%{QT87!Yl}7y^VOOS>j=F1g3L1ctsut$r0JoJ^>O8$#SjoC6LCY zF{kdK#^D=|ED^|iAe9>G??D?Tv3*7aFOS}`K*Ep)3UI^($Ph>#Cy>fO(vT)tSlSc_ z&6_MlnwCJ`B8`LSE4_d;YlPbZM4BF4&K}{7-ayWy+%YKNx%UAw8eBdC=?ml{5G#S; zVy1s-m;{7YpQIHdIf4S>l2-#UX{?`SEf6mtrXtNoAhZt~DJ;DJqycIZx;ZZAG7znQ zuH`|pf&40?et|-(viI_&dB~BILUNa6cnkVq(9QGe%@J8%5kRP>xQH~#K;CKW`UgmZ zCi-5T4n(W-c_0IkM*8P2kbOX)HqZSBkX#^ApI<=eR*$M8jlp1yRhy#k7KjND+Id7U za5?2LJV`|wnU@(5tv(ewBE4Y?gydjo%jGoYY32%~Gmx{8EXzFrNQGwlwub>Bk987U zBZ1JVMKqaQayAe;#U!nG1|%4APx~6M`X=C1tb=d%|)7Dlm?cT675ErVGM~A ztwa@$>=cLN4Inr7nbZJrf7WzB;jewBHEJT{F9Fd+M z!Vy1_W&ua~2xJQo%3Y4xc5p=IewcFw3Z0Ed;A?c~Q&h+?0g?tp){DwO91u@K&%m9=#01=KQ8BtKoWoqK$=1VnGWPE8cYlbIaiC3 zI7fptvJDRfLOTf6M4G`ssI{3ZkYzwVfJ@rdY!qur;zb%Kj&u=G=avWQk_QRl$UPxv z5J$2FGJzw91u~N(8wIkABNGL(i6cn@*$PDK`5k$X<3Ok^>I$ywKz6d0NBMt&d;z*)EMsY;8 z>N8a?k^6FvtP#j|jvNxmZbA@*i-hF;K$74e*)tyEY2>KsXddJ`5c;kJm6u!k3W$2Q zD4Sb-;fSmShGW>Bxu~j~t0G6F$0`HSjyI|TA)RGB+W?`S+FZzS1yUN7Le`WHKxn6U zq?kMS0=WU?Bq|uwFa!v_B{)dP8485%MW||^rWp;SpgrW|SCL6TNb)c-PnpG$`aqfF zB^;5tug#NYbDlK2^B`w|kcQJl31;R=b1e_@3P@+@{9f4gAy1kdj!2!$r!c!hgvaV| zWV7&w4M$puG)*`nEw#^swB?A*%abFegyimdxFUg2Sv(MF67t9ymIs*#gls=0Y+uUL zIEeCEmxn782>IDu`1t`4%6)KtwM<{;;ra-KVq=O(^D|GHzZ{YNF&@kOEWJ@32<84j z=-dJb#j5;r?Bu?Zk{wX#xX7zBUPVT9ElV9*l;8s z9W!e;T!Bzoqza@fPa}QUgCiG&hS8ksg+K-ZA#Yp~b!Qk)lOiO~;Bw>{p}9b`o?pt- zw z5b~JJs{s&_EIrnUrzt1mrxj1rUdZVJgko%lsDr(D8oBGy4+ym_H$<8Ujyw~{P#~m_ znTU%@&c@a-Jq$q*()ma-Skfc>@r#D@NG9 ziKmhClyg8xAHB5#Amqb~qMlymh>W@{j*Kd(M(-nz3=qgij!b|o7UB6*ndCDaYSnPjU%!JC_I5lej{o@aUj|;e@P&; zZi7EOqRIl%ju=fj*GZA49uQjRALXiYHRDJc1hL3;YF_m?@}sbd*l=W#@J1(&)UZ&~bmhoR!4=4njY8)Hj&u{qK#tgA zs=z!pmLtZNDl(HJvL#uSC(SyJ>=1Ts$b;3(WsWQtp1;l!>D5~tX=khILm$*q zM2!`ZPzK07^bQcrt*8d12Bvj|1yU1;HdgBZ(MGrfkO**L!p`Nma|FUU(isT7>*gxz zauAT!;Hn|g3nAS>clLDq*Z;MS>EAyvI@l&CHdaTsS{a%c=`O>ASMc+zg7zPOKfsUOl(ZAM zj)bSGBCiI@Elsx<1^jj=V=_xwhK}hZ^(pUn~%4y3H zI?K+u+&Dt#8yFIjCr!URX$Epc=AOh6I;G0wOa?;wxS$VU$O4WG6B;h%h}3zdhRfyu zbE&w;{CA1OXi9|cARBLuS96dnzmaWB^XU%z_Ec`F+c{ReCfXKB>uB1%(wEbgixrseW;+!>Qm}^w#CN%OgHwC7xzZkrX_ zWt6Q~kno$swWf}o}|ot8@z|lO)KN8(3U`Eh>zfFzuKYYW3!i26x#Gg zI^FFELF-teok9BV+E)~sV+ZW4OPQ71uXfCKF-cWucinLIq>JF2)&BG_Gt0M)71}^6 z^cVPXJ%@)!g|)Jn_)4Kw3&e>=DbuiG$AfzgJku$(TbAfq@Z)@ih7?c#C(R~Jp`C}k zY$?;d%F3v^i?&o#XnVnPM9Qq*w)!MHQ@iF0ZE1U)d6%>kKc`LcwO-Ifp)~`oku0M} zqi&!3Q$Az8LbC;JUX0M?SKQ?EvBk@>8}#W-fn!o;tzm`E`0xAENZ~sU{3L$rTLh-I z4aWT4KFf}7tegqHQ=sYHSeX&jEyONx<~8uiMI{20mX4yy0ynrJIOf z9KW(UseZeMMY?pybCgU*DrnUBHh1 z?#<4h8+YiCkoi@Q@9M_P;x8g^DtF~mnSPUeCHgP&@?Soky=_ttvHJrwHO`iP2#tyA z)hb4fvmDU$d_TLE&#Ey;5A{-fZ-qAMx0KuOPioJ3H=ddceg1-`mZ{6^Li+!vA)z!Rl%iAVu zeq|-!Z@YGzn%{OU4n8K+MAAyG*?Z_%i7rP3%}mm)YJOa6_vA*9pjD8x2SHCv{dQC@ zEOe;|n(EJ#ddJOXpDCU}`BC|rOTPL4ye^kk#CVM&vl8$s_^IWauzC2Os_D-kspV?{ znqK*KGg$oLWbpb;N}kk?RMq1(d0#xkullhECTIsdAnPYvL;^kmlGGNDOt^KZ*leQJZIr;lf~!6`QRGseP!BZKmTpOxe_iW7u!rhf zYsojI{mzorT~3jI*c+L)psBvCwtG(gde6>VskYPyP0yAQo3E|uc-NJU87^Yn*HFrx zRoAxQn7L*ng+7fzQ}wwq_uH%PH`?Hx9Rrj5m?t)se7k#IT=nqqeDV*Y*-6@<1(yzF zF73Tvp$$j<_|aC_AMZG6*CK;T)VCR!^a1TocR~A<}X1^Df{^dPO z6cuCMR^Zbc^R_JBYRS0y=VwDM8}r(Ou8es{r~bTEJ=c9~6KXP}D znxyDMG-pZsQfYbg`h4YHD72=axk#G#hiA{1)*3%oC4tlm08g*-eNo3t@^)~H}pvl{`Cp+G3S9h}U0eR2A zJLuYb{?CUQhG|px*(*?5CGMsqvN%OvrpP#9A zbp=h@^=wzZ32h_G+e*8-gRZsfmj8kiUO&vYvb?FReUXOe{p|LQ+6yPOU9OZDm9-ye z(yoKAXSM1%e*P53OE+5l!jJP7F_~jhFk}?FS)Jl5tf!zIxe?LfW!2JegiXC6SGDPo z^&@Aa_vMXMdjs@n3n$uM_V)EbUm@p=DqmvmijOzj-uy{EJZKF+NIOh^m3v$(v4Npt z$9d3#G=}fZ0b6aUb3xGeRaZY_lynmyIHI6TKva* zJr|5x%>9}Fk=aKzO$6j?V`o@RHQ|v@ZznT8csAnE>{+WoKXpP^>b!<4& zW|Sd+5sli3Sjk&Fzt5r3Pxi2N45GzJ+WX*FU3OG)r1?0rD;_k}t}ca>-SbadQk-HS ztv622;K%)C(dJ(M&IMN0hdzui0epIG^YX$6H&=M`ySqlN(l&3KGozlj@3iu~94NL1 zN_{pZj_UC<4$#-JsEChJI>DP~(O|LM=?B(z?UEP34?_gdPy%9N$Z6K{EfHdxZ` zx>*+=-&9$Z!wb2nS3@Q3VXL{R4bs0|5xNcsP4z+1t@U4gjDNX;WLkM(#ZK}aEc7?c zr18@Wf^W1Q-&wnEbILt@?M{5DSUX6Oe7j#ZczfY}lVrg+PLJ>NnlYIjyt11RU#JIm zs3qU#l;G9*VqVM?e3SI}Dw~f>dcN$nuUd{%^k@r{s&43OG_V)RypQ@gRm%JvxbBfz z&|!L!iIwAYJ-${CpWRN2G*Mn`Y#)mk*W)vOJl3VV^XihMXRX;*~392Jl8#UpzW zi_1T5yW{_=9*u_$OsJn*B>DOsw!C5AZ~AbN-(tP|uFhNdZnVY8Tg2A@v9?6=EnJ*G z!tU?L&Wg;^pjkzV{JxHQPDi>kD&l+H z8F%7Jncc&Nz1y(GyM zeVrTDj)*=lblIrK_hMx4=>-QZs7`#;25pvnZwusZYB+Q&Te~FMR!RF)yr-^^$NjsC zo`*o&CTaekJ6t~V{pfdvb`A5&9g;Th$Mf}`^*hM9)lSe(g!i>{8pV7$~${cdW5Wn(>C0 zZ(0W%Emvsm(B~hJw4_?CdQC4iy`e(;1HMC&=KpL<$1)3#S5Rm@(AFK6v?;GnS@x>v z9swFF_amUG_7yE3&~)lX-#04ls2*+Z{;h+PD*5yy+t*l3%g@ zIGZ48z4vteT==;cy*q1QGG{z)PL;GZdk;2!Qnz^(K|2XrV0?UdShUV_RY(I1pLL~# z%u|xD^7&Eq9!%QM%2{DC%O(`qyaaIRL*PJi?uz3+vKzgKeW*#Tkuk$N)d1mD(TpILqGEkkS5SL-ENA zO+I=j_53dzd>@yMTp#5huFzeE~q;kA~?^Yq1pHXM;NxqPPxcd|K z89OU7A9X_CAZbJ9X68NmDR-(7!6Ci(NLl-WMV<7(B$jl7loY*R4KKpj)|sQMmq zj{3RGsTm(<5nqnv^ZGEg`~G8B*qX!aF_;6Va=uA*YGuucxRIvE_eb(oEa{On>hA*T zH_#4%@BLWLcdGx^eJ4imS)#|6Z>s2Tx|TmT<7~ouFNKfhHinXR;%)geBNpCHQD_b} zSm%?pjP^&$MQ0_NDYPZvDOOWD2$m3vvx)H+sU{s-rzMguZQ&-4U*119;5PUUnt z*z110B6B;&QD%~M)y=zf&(1rd6k2|al`2Y_abm)~^L}B4Kx6f&l3sqhI=2ieyuTzK z3r2rh3Eyc*zT$7{4;lU1R44eV>GAz=xO?2BzjGbpqdmQvlFu(@ljLBx6Jim$@N}6Pm6MCuE)1K?RvtB{D~Wh zkLs13iR4_ankN&BBN2K;aF@NljSO@FNPyeTkkBg3XyR-LfN7BOqdN@cK zTiidq9@wM7=>I9>iS3iroGE)!NJbQ7I7%6{3dB0M4=!T(KV>XS+8DTeS-Vh@u?#Yt zq>QaCzwHaKbzb>DWpqlezQiNm`V+|*i?Vf=GTN50v`>iKWAi^{M7h`3t&XueNHR8{ z{dbWvPH*{aIH~WMYyVS*jrsPfe+INxe0m2mT1y$#-OpSvcyxR5|0(0k#^FOVKCk*r zdhCP@S1IFh@}3@-7mPgmKV`UtRajGF*XLg(gZjGmQpWM{0)tw9e@^v>?TNTa+V`5B zJDK%t!uHl_&#NP7>bm`0`#G6kQ$H?M*X=ujrnhdNnD}(TUH_@am3m2gBJO&;7AB*- z%dRR}o_J|*)dMuSjuF2*t8wGx?r&HdMElvDLFetny9=)z9~4^2*6wM~#FKd0zU%MA z=3jf%{}`yWKhfydx`3vqQ;^kgMZCMa(khFfat`90zzY!bv(fHIHv84L!`;PciSJrk2 zRM*M^!6#k<%_(i@68ZCUOWvmtZyE5yr}R2%NJ2=Q&ctzPNP%bj6DfXa?$uZ3d*WWB ztUKd6^-y#g30jb(UF>KwRYkiGs2IU$ zG|%cM^EEaw_ugB*`(Kf7c%FRSN7OyL>5&uG;K>)1Z-nH3{<_aqhju;73I51D{EI6# zJZ6_sFOl(+Poj{9>9$gL;b#GNd%iDNu@7ztld^5{JAOJhw0bAx%f?g#KvVnff<1$i zzEyc?Lpl*(yySCPG%{)OCEvG#FF}tlB&NPqouXBhzMJ?4NFMM^78c)ffscnG0y>8gp^{3{AZ(whB|1d+H(9$=I>(sB={?VVs_-L4xe#Ot| zQiIzK6BQrRTE=kD1KJEo42+7`)f@FNVCh7U-efDSSB%i3h3&eXy8P^}bfVFk#7I4w z*`-3;AH951S=D*8HqRb5cWsO|TCsMxGS+TiJHwB7?p~Laa=OR#0%yFG_K5jD1-v1o zj?RCwZk(g(&YM)8j5c1-I^3>1DX@(}tehK9Abs3J`Umxo4TuYj4#Okubq*Bi?aO9S@<3g~WVAsC$ujb9xhOn_9`Jy!D5|aKV z`iMh~QAysEzkvza^Z+&mbdOesS^p1Z*8!H(8}?5bnQ4$cGt!`Cm5>n$B_$DWd+%Ke zr6QFgk`c)sq0k~_r0fw{rO3!kB_q;z-)Ft&^w#(Nzpm?CF7NMt?&n_5UUs$ud>+*# z=JTuz*3+zciAUMY8;N@$t#=$jx~8UhEAes6<@^834ae`d^@B6tHbGV4ZZkXI|eI*u;)iWzW!8%uK# zX?T7Om7izxu(1->f*F4u7U2VaH5#8%+~v>!Z;oG&Af1R`JB%6Ry#LLdvqHZf13JcU z;FnHQzCW2V=w~u(+Y^9Oww*V>?C+qre|89Mo6ce;MY;oG8eQNWa3&s3arlC5ds%FC zte1;uBJGCbuYNH8;@Fn5+lZ1x`@GYKdwgy!+zfJ~JntcPmPHHY0lUgSm2%$sQtLch9?k+Ej@_5IjkY^_+uXO!^uu+C z4IiC{AKkU#3WP>s%u!?@4Q`7gH zqGc3=^yfJ;0FS6~OQMyM)fLG+M#9)6i;tUq(>)@7>d*=n&*tN$rwboV-=t*9;yHZ0 z=B|$2?U*<%636^=`S?}`twCoF4X0i{$Ncm7_@@Z#?xTF2-?02I@bRI^F>;}%(!BwP zHU;`WmpHfzVf;yheP{|7H zJUwh2q35hTVwR8_NmB=N|B)`?tmC^YtoUR8D4PEaIiT z<$FX!ZmNDSDlPV@@mvs{_L^B=f5qEB2T*CD9Vq6cRU*Wz#Xp5sJIxlRm4i5--}&w{ zr2dWS+=0_bnUHTkA?7{kwDaB0o&r*D#BKs#m^)#X-~|re9svUDAY$N-Ne(Oa=C5Mx zdz+L0R3fPRtbcF29DgIU?;Rd4NHr|-%KWiVh~MSmnZsp^Iz#LSAIo9! zM|?am_v5>!@=z-NFnt*xHxK_esOR-?f=&ONkGnmRtdUFGhW$4x|8hRw$s#J%P`%T3 z7JtddOD~4+Tr%=-9E(@+@w)@ZcS!Gl_W_H)=Hs&)?vKu@KK+%&-|+E>@Be1@bxN&f z@ppV&e(2AZn73x3B;E++^F1H`eChn8x@}1}NL&iWe1BkE2dg-C-rgSG#3{LZlgkF} z9YL2HoV%)l^tK)XUswSOAl7(qwK#OvRTgk8H$P!Mp#?rV_OHjQO3CaApw^KQ6NCDd z#zIz~RGu>VTX!~{1Y*<}HfhVXUuN1STS%EAAl*m4%)?H;-Z;JLrU8kk!5sW2KAzY+ zaks_4_$c5lCWkVA0X)DPnjqq9q`<;-;u<|Fo&rGEul%$R-tVZrvd?-P$$K&6UCYOh zbxiUtxDrE+O^|mT%X?^c{iO?kXID|}7h(;7SzGzok*%MVFBsIm@_5j!iA!ft`HMq+ z`kljHhj6VPaM9$%K(f4u%VB-{6=d}E^KledTiLh}&YL~b(y#UWOQlEr9pLaXJa&`q zy#4LqrN3TIcb2Lg#dux39?n034osV+q(n6Am{TcJIfaU6#J}-zN21f*pPy~6lJyGW z-vJkyw@97*ZuRv`zP6;_DI5O)Js27KIF0+<&#Ckl%78j{fsc_vk?@#Tb5>9os7C34 zG5M2Y11QrIUrkc_*xl9#d_eL31-O%sz}?OPmKZ_DiqJ*djwm$^LjD*ZzxnB}#@sm@ zkt<)z#zzw$52^6m6J{tu?NdNM{RNzgkB0;EgYJyITY<7sdABf_zzNnae|V2RRxWOQ zhw58kTCoJ!2WjPECmt7#akp=Oi8V(k9OJA5 zA9r8pmw0GYfj1k&odBm~)G#}HORR?jv{k4-+OIP|?V&MEH}f-tG*}%Z0O#6IQhUG^ z*_*CC8T)nNr(b!&wW0Hp4c|%rSiZXQ@e>RzMEb zi4jMyo;kgxOBz%DM#{k4ke{2t+R4|4m^jIKn^?(}DyVnH(Kb*Z^A`B{d3t(y`@%?{ z6cJWa1fCvPVmr?~rG{6()rV*-LppO83~Clx+k z8Pv-#!e{P4*5~5^r^-{g#qV8{qAhBK@ubR6JI6Ajxm!#iwYLGwi5eeo`dKn-Q{`1$ zE2UyagXP^J^QrE(!~T(!uP_cK0LF=fG%2U3nD=X!v%Z?bq@|2Zq&Iu~O&oq{JQD}$ zus?~4gJ?bfnU8--jiq>F4DtM^cyiN>X;+-_Oef<@mZ^2y(9`=EHIIlo3;n1vV4m&wJ6$E(^`qJQkK?+&>lsDn-G(2v%QW0pKkQxgXwkdWQ)?(cV0ruu^J1Lxc=STr)=bO8Q~$Fc43)Y}@_yOzIa@emi75v00E6Y1adGFge`xl89r~?M`d>s6_*}{Eq zcW%bEOI+?U;3e=0W_t)6t$ZAbyAl_Etu_0T5BwEDS6tuM0sew{074JQ6FVU8zT`e6 zLUyRso|^uTih!1xhnbGFdhY&eRst(ePn?$Uw{rEfBRbU2zP`^(tP%69bAUdT6VTy& z9<^qodSI0N?uVnW98fyVXr+_bhnaq3U!{_GU)WPI5I#=&^o7x7jczYGlei3EeJpu8 ze^hs!v;OrvY7CBXsmtfTKzZejO81l`GCkHWGx_-HJ|#^L3XV|ev3{Aw#}$70_jg~r z8TUz2b-*0JsrqHj$KuFGUN6T{@qsZrkHG|!*Ck)a(?QDoCzA+zl;wK&j`Cz}p zC^)kL;}CkBaKfhZle4AGMWnxxj}gnqMubsrlTOkv-IpmC8%XP}N!BT3^I`?nxgEOO z3K|K*YI@dDt1thIsBudZ^mBJYTTSO_t{2<$$-fO~Pm0fC$P?;CKWIY*SaY)Hx-AIIF{uld_3jD>7H@TAxf-2OaZ6-v8-s~=$t#nVnTbH zu~ePq)0Zd9Ft@oxb% z9DDw}_@Q#PNi%h>6XSm+AD^Z$yUNSm@9e0lc<`PtP&)meL60#4ccN6(Q5 zT6}NO<1zH56+i7c#rW=H7C+m~`qG+@&zyLp)3bZ@Jpvmbj-uhC<4DHM>EfP%)zsQ& z6#QNVve8)gS+6=q_58e-jcZ}~Ap0$L-kbt*DJZgP-R?kgyo2_!<;zgC`fb{Um3mpE zjA$P_K7R9F-FPjNtqWQE*z@tAfdM8`ucC$hc}Ku0`^Y?~o9NVA&Vcft39PHQ00x^z zJ-qD%e(rugP?n}m+vR9-M7fUgAKK8B&)<7-4~e~FJFR7H=*Gv3;;$;k)%azTIG%NL z=i{Y*pRRSu=(?H28^*vHI`}y8v2$qWZ%+!6UXnPTc^mJ;tACeQEpvUUkZw%kXg?1= z|BzonPh(~#Tqbd}pC=!GGi>R_VB73s636)R;^W0Jdpo~#xIT)+QGahf9&qAOO6QD< z-z1Lpfe#ju^6|fF&Ch(JZTqqE`SI~Iue#eE(^cY0+y?qR{(M|x zNp?ZVu!=b(e$N5=>tG{}{R&Txc2+1-rR?tr>F)y#+vZ;Pj302m+{BgB<^}-&Hrre+ zw}Q_43x?uZK&H(NLfSUk+~{EM{GNTa%CJox4Yz}w@#FdIb=ggG#bKH6Se=6TI&FVo z9vl4K0>=^Jawd>|4&UcFOFrM6d|0QF#9cwB`~aTLA#e5#TJoj`&goKP=+%7w7d}`y zRecSa2RPLRgaFPRLw_x`=(PCBxRaP3V#{&a|b7lWU&0FN*oU zRyNcjF{-b+7~+&Xm!({Es3eb-b&E@wE%E zHsVWK%uOS5?=B}Y4~(zf{5)oui-oNoYci0;F~0Wj@n@#@JU8j?qRvNPe=UWTLG5JP z5NofKAOllA_wv(@|L6PLMg#CbNzqKai@}#Ik?AHmhm&~cA+7rYt0Pg1J>g(j`8bpYN&-Lu3 zb^aTj9@h*XfQ^N7+)L6kRudPJVa*!(BYp#L?i_dRJiXCLSpT?h z3og&#$aa=v6OhfIVZ-k$DSfHF1j?4jl`Ye%G0|~kX#%8Y+OI4~FS;hL;rzy1|E|In zAzf~pbe|r`MZCXseu9whVw-epPW-*RWa7xjLb`%B>FRW*esvi?d#{l0a+`EkYgXL+ zly`BZkgljrx|Y>29}4xAX6hkFWaui4fA=Ym=`3 zkSzwg^KZfVTgJ{0+oapx9B|p-s}k%%W9S~WN%wA9#{MRS)kB1IWh5PS0N=ygM?md| z7*#s!$cv&=Fowd|!aWU7kZz`5kh=%GV7+`q$wB|hfbMks$n=NvG+aD-|0bgaX{j%0 z9M5CF09?4&bYOh4N3Tb}hf?hUo{N?9WXqJx>(`rt`^t|Y>zvtAuucqVnSE_7G3)pE zn5Y~^xo|yK2hIy{&M0*rKE1MFNiQ?j4lg0C5QmO|z|+;r#*X-5@@SlA{Hz45*D#Mt zP9BO!q;wl*=oe$1f>;&uSnA;xlaKEH>0fs4f0V)Sc+(D#54pRhr0jpVf}wlY4&C6T*>7{gXI#Si z6y<&obiy+Rp#f9+c1>ThjH)XUuR%UMz4~{%r*vPOfPF-aydQvuvAxCII`zL6p{p1< zK4JPcbhh--?ASHcCybHfGtdd;C_H8V=lDWN$b+%(R}nd^!k!29_B-2AC`T7aWI2y|C1XBE=y!&Y(U;^$T(x+FVpn&^%of#8-Y$JW2Jl20&P>P4MG`z zA|IZu4!O$AJGOq(E@2EbwUgKDl&nUBB$E_I-oHS{*mS$gmcp51hjeD-XyM86_S%8z zpNj9p{19U+u`R9T@ba7((Ea*~Afc_qfrjCKBYxAgu#wdkj6FJG`Znwlb-1I)(38Fg z7#SrvJiJ!=bxKt-i)DCpYllbpq{033H+m>Dy7T}#p-l%~oba-zzAenzFuF)0AD&Hf z|ET>oe0CS=cSa5=jvUJl46aHq`thCNFT>+6HLK2RL+0|XLjJu)_(z=R+4r-N!d#)x z+xm$kC4{$CvbRCO*&B!TwK1&jBKGyiSj~ z|8?aISpQ*cI;b5vri_tTGyQMv5{7O_J9Gt)UzE>In83!^P@rRCpib)f;kcge^*9P{A$Wkzg6g60RQ>q2?u+mSxmhKhW^_;mII4LqTDRJUNopfAt8IYJ$E4V-F<}IbLt9pEN^SAL<9jFDmWG@oQ{q zznt|~b~1U5<(iH$ElD)~8P*|M z;A1w75q~0`LLM~LtOlIXRSV@bb;pHeCo5MNO54J;t!EGs6(g7)Z#FlZi6d=FADD=C zvvVT{xZm^*rF-qV2m8jbkB+h)L0L_lY=em9?uU+QZt7kl#3bO1Bd(Xg+H=1;&qo*T zUmj2P&rrs{@Y%B4+KA6z`p+34?peUbuny)87Y6%!d%z|b+-Oc1&nb2~J4NRYnYSnO z(R|>e_ZH3VGP}_ERsc1hi*n)KcQ>m**e(b&1);YWsoY;X*pIY^pW5b+5ch? zwnTo#>d{fOEs?Gg>5S>i3-8^`{+HI_-!H&Xf5czHN6XOV!1VROL+6}hvFC`{!2Y06 zqP%46^HE}ZJV1Y{3{RtcU=LfygNUP@mX_J-Smyv=#`ZH1=kGmti`*=BIlUp5<)Mo- zCc=H--PMjn2$r9i%*5(Uz?oQmxHKbp=JV7bj6;-r7N(s;?MJ2dAT8?ueckDhfKI}; zY&IwT!1spDuall6VL!IJ13~BkX2WzJ3DptbPj-rzvZdl2_hQdO{=#<3otTn5W_HY) zy<15iP&Sy4G;PFT`j~y|sv>h`P}X`l%VU6aJXy<(ChaM*bb$H{+IAG;QefxKT#QL424R#!Tc=f{2BWj*DOWs}&nBo}5S44~Ur}51y`%Eic8@ z@0U}jbWH*pGoTUL-r|L)r*F)ZOv?5st0#QCI;J$%MgRO1b>vDx3d#;tY)f0n8X4X) zzDk!Flz%1Qwp7t3(&WU-RWpOX;yz#0e=B?<19uq}I~aFm%B~fr=f~RqAqSpq?&XF1BB@xj=A_@Gztd0IWP3BQ$iZAHT(7bj88g4tHeW+v8hwOt=w2hEYXI$@Q+L2uQ z-eJdN(wXxwh_gJf9kG{NXb|W&Z5W+CdIp@!_2jf8Y1@8=xa6p30?xD}jwojv@$Oc= zc+O1U--;OT>*m7zGkkQse=0HmXQFcz_d8Hn3}V#&&|%>*Ua`X-2;GFXFw|dM&;a0DUfumGuVD4gig?yi5;n*dsgoIo(d-ov0JwqvcC9 znlktCk!zhv`Orq)=sg3_hK1g68oF~uICaNDJYb3N(XvOIE!_LSay7M|7t{R&|FG@P zuR#;#tF(u`1luwG_XL@k`0>&SZP4vimdV7A59-8^pMNUXHmZKoUCov;Kcq2rr^=Y8 z|GbsU{Ztc4-%xgq1KWs{BloTwE+u6i$8{XE4cadj>6mgdu{g>zC|d*1t}t@?bL7;% zwWGYQA`jXSDux4423|Qi5&qi#^RebWRGf}Bf&0Udh8xQnF*hoR;H`5Z4~%7`F@=v8 z%azfF!y>F2rqFUCO%T#Bv7F_;>Znf9`cw|i^1xWW_pP_tyA|mUG`@Z|L2QGM?Gw30 zyKdd$@bUuSOe}{|_7v$8B`r@fy!ZA48OwuUElM6fI#zC7$Tj`*DXo%>6~x9MM#XY{ zZOSMXHTQqy)_(gpDyJeXGq7!a(KPmLM6*r9$-5rMj}BbCYBT2lk6WF_mF1v-iSK! zV_A0f(j7~7Ew*N3c@xqwv3$tD%bduu!@cL&CZJu$!Y2~T^YdE1OIYkSpnZ&V3P{Jq z@~jE(oELe?g>mGJ;m8@hBTny>^Mj9!oUteaFP2}_)?6tXw&x)grw?u5&Nrmt#`1zS zvcppxzF@nAv5YkP?SO_`FDq^Giyt^AYY#0a(i9;L6U%e8H(ok1dF?t5&ho%m-ty+_ zLFv;&r_y+hA@qj=II+BWMQvmGL8Uu@GqJptvZqKa$IfwXu9;#$-gRpM?Vk;{fmHw0 zaFE>r2lXd9WIQ0|AZ#D|%C&5N7xv`{8_U~}KR=djbxh|i8>)4dv;(H!jx@Yj-Z|DJ zH=!(}H&yrKEr&bpfJPY0&+BS}oQJ3vQn8G8N1qY)pMOiojNOrUjH;K>hBwfLR4k`1 zD}OdL2Iji43_Jp?3_d!RJ)@)V6`9IX>t&cO3(~Q%yi8h8ELHO!))P!D?*f^aSl)c7 zv??!UGwivg>bn%wi66^}X}w&{8^dr9C`GdmX_#0(98nP#GPbdv^o_V2+QkVzkytjk z=RZ8f+t7mcG156A9TUqA`D>z$Gh*C1a;9?REZJ{Uel;pio{@7u%D{`|LhIU~f!)l! zs5r&`-$A6|#`4vvReilGil{b((&Y%Hi%1+PmP}plFy1x^V;=ibN0E-_>w~3RonIP{ zq|akupYJ%(2z`C`e!%|ZFgs15-O~YQ?0)dTple#YrJ(;$$#Dkx^X+cGwB>8SUo*Vd zjiSlmq*q^beeL~gD`(>#RGgPNi|J?KhAKR45n$zQ3u|Tc31Xt!^wRF6pM^VV+h;=D zo%9v1d+88@#wVw8wtt^S#Vz7Td3a&q7o#q+JBLxWMf?m0A7<_0;Yz$7JmHh)z0ILF^kREu4cCyY$m_wd>?%NV*GoK^$#=8Fw)2PK&q9+2edim!}CbP8S6%5t;;xQy=^_iBTIzG*3*Yx zZIFEXK*%Gf6^~W24IVja1-1;2ToE3jTcTqW<;436d0cG8W3`XI*5u{G4l_LRMR>^l z%WRpp`kS?o$E8+0s%y4(EGk%kgW*vq!lTsl!}CLrN08@(D0^IK#p9a1+oJk2%Zso~ zvg==D%zJnX$hn*BkW7Ur2Re(DNk;fcwJjvwiZD%Kdcb5bn-ky$D?nF#! zhY6j;^6>mMm7h>1VbQ6{je4aczfp~$5tcI{jUa!z+#<>aNp4^D*mWZJ!Js1MUFu`6ftvDzn&UT%Ut zp$uJ7n{=;^mtGm8cLB~!GIZD5q{|Od760ZETZZMGvP}t>j+(1-OH48C^!kwtOLJ3{ z=345;fWDD)RVj2hfg@h*Rpq!G(LV3?ux*)*cX1z;p^pk z-eS%Uqe8^+y^15)52pCWM3t7=S!X1Wd=WbepOA0QYdsCpES82)e6e3r&f%Nc`AV7d zk3pZ2FZM}tg!6sxUtB-?=b#lkzER0qxfaD%R&@ebBH>@%=)B2`z%IzIT& zHHOj)@o#|BHtBL*VRB%P{dufxZ$xE#e>^Zv>p<2swhn&B&Hs0d-Q%l^Rj6@*xLh{0 zNi`hV%S^hY*LDy1jpbfqEX>D*ab^2;VqcE^j_|>hY=br6EGQ=}v0QifR*yZdm{ttt za@T5d)2dGE`|Y*lvHnzhTj~OHy(ky2|4~F-J8`or1jhJSA0C7L@@Em6cQLMCBA#uU zO3`!$8NZ0o%`8PijBNgdEI{h;+m&u4d%$$E%7pq}+2@}&<^S?Bk_akfy; z1`(Q@Rl&Lk?5MrI;&Lr>;OwUe&F^EjTb9-3!ML4?wML|2Vr`p(OMY|WG8}_2a{d6E zk#o|Li-Uc2CtXJyO@TeAzW@{3=*!J3clus`2KU0E9@WZlu2UrcZ5C^j?JQ%vP&74Q z$0iY)xf07exTc&JP&6x{{QnW5>3Tlr!&u{v>nIvmBUon;p;@s-Bf?y;K#KBd^9q9a z2Q)%?hbHgap(oj!TwkQ@)gr>E!)$-X9^!xr`Rkv_ zyLv0^>lRuMxIe!G;QaXYK5|y#?XEkWh5qP>G>ktE&3WQ`=y`Ws&%iu_^laC$e5pn1b`O^J@)7dy#o>SJqi(MexAm`J>XF{L z8ZiC#M~Qj2v0kUrc|vRm49QL%y^OZ6$9VgnCQD%-9>cref8(wFY3=>0q-t$4-3`#W z|9?w2`)-KptdNQgtepq)bX^%DX*A)iQnS#`g8*mj>{$8dhk5s#_ZV3R|F=BXY@0g2 zPog2UcNpzEl$Yn0^PPw79{o|8vO(2AxWo0o@qMg*?$)Xa@l#ma4gYWH#tro8vuRzT z1)FZfe@i#I_pX5Tix)Su>E!=gIt%M=-Fpnq{zImF4KXnCzopZ9baztFIR|SpelXqS z`K{yUYFxLNZ+D_$Y=%BD8U*Kv{~PZ&@(Le6RP%|AfmPMD>4u(B; z$hR2I(kc8mz6BcZXSg^O#Ip66B9CuEz_^(%%csDeW9-8r-@#U(6E%0#Y`0c($9{uJ zq`rs^M2uHn?Dot^`=>Gh+6$DcY&x71{%>+kajFuNHb3{B>~1`br}Q+a~4 zG1kQzkWT2kM)B_A6{{^qP&P)sXW*l4tba2>b8Di!aIR(|q-Dx?ruoJAZ%vLjn101% z4t6nTrgq$?U}XlI!ohw=+8jC{QNIZ5In3__=Ew8fM$3tk%C}{DQnp1KX+wHmJKJ_0 zs7j%=O;T5^J9HqOP}e^J)`_KO)d*pIH6Qvkj6TDDUy$5-&;22eu|?`_IDIaF zYk|otKaNIE7*c(Bg$cCbIM0o=)4B4&U8T%3Q?G(u#k`JHu4j1i>T52~z!Mqb9-6-v zaCqvr!!t5@fAPuZsm91tq%P<3tao(u8aPU#isp&5v)bX=V~F@|3y(-|MowN`&EUSO1#4oH_$=a(s3gLZfx zxO=gHnE76u;mND}xjYpYoy=0mD(lCw=fZY)E;Wyt@MX4=4Du9d7q~p@H)^Wf>wj_y z%@b)2+u=Fw<7=a}Uy>b=r$~Fi<+)=~xsi(2!*l2Sc*}2x zm5UjB^6GCc&#)Ql8S1r1nfvt6o@VXvbYG?zEkE#Q74j6R+qpbPtQrvNn`e*rI5FkO zyd9n)Mt#Rvd^z_Nd5YBgT%OGj)K)lOs=7z>MA{YY@N}Iu%TeiwM=B#HuYTq7tTHXk zYP>b+1V_%5?eLsk8l03zWRh>BzJWS%ih#4$)s&#)K5U`A1c#3^*ikUc%GJit6;6PY z*Q3FvIlCln7%Q%8qWafpL%g$+?Ink5r!>y{(MJsUVBa6>cmc>GtmEHkFIpXy^EX~N z7dRisfc(7<R(6f*ZT^=vCl`G`&XLuMC#zn@s^{j;<*+{;bwQg=0-JI6)@7=i zKTQ9uyoSVauEmCze&_MQhPzieZ4=tUj)!-z>ulASdmQFF8CyB<@Fz#ky}GbsScDLF z;^9(-ikI#_=wVL9D8{`y_9;btw&$-w^8Ux^^cfDM8v}H#&(g{!s(u{!b|mS0YOcfu z@@dN_f2VHy(ULuRH_D4|i^svoHm0iDx74rB40{cH&}W#BCMgfsXU%obx1S8&^n}t0 zX(l2K{BAHg*erxEN^n~57(J1ytgwT9@ZQ^;DW1bsy#Z5T(wt{ z_9deu>uaeQRzHk>1mf8*X3o$Rb>y#ojjq)=-t;q;I(Lm@e|Mg}w|ULnBvCnM24(M+ zFu&jopU9eHQmuIR!o$a0XjzcX3F(+M$7SW|y9XLr;o2qYh`1ws^!#CU=+hl{pR7+| zFT>E>E%1$u$(l7wNSZ85<-3R;JBJof*_0d8n^3H=twVA!JqOx}O!F29tcKc<^i|9=v7UZ(GjxCEuvQxsYaDAEsnAH88wc9dVVq z`x`MaTUN)LW9BEH$m&qYjt%;fa&qIOPHy_|sjJ@VQ!=8i74UJ&p2y$FwLkNS?W_*{ zkp~k;p1tg=a_9PXqJ6;V$i~C*zJC^Wu&+J~I1>*(qVb?GV8QWzr<}f#_Cy^zfDR)5 zE?;o#aBb>4=6oK~i6b53?ixZhw_|XS*&e7pcJ@e)d z;sNl{#tW$8_PX<0(pMz6JTut7bFr6%Kn8y)P7Ou|)&90{tM*U2r zb)XLwUv0=ihV+4u;j)S9lNos}(dsfT8|wBltr zgVg4lFER0{Ro>4hX12_{e<-A9-&MF5n_%Mj>BVf0o@*ME;&r$OVU~xRC)`Q5 zbU^&LOP(3y8Go*4dE@B`Mu>gsyCSdDddpHa!u9V6iVkkExvkZ=yK{4Q*c*&~KrE8M z1g;(da3hN~ysKbK960PTZTvUs9@P3c(rrMx1ws;mt)Hi>lMVDUiOt;|T%_l}q3+s8 z+KmiP;^Q5c5hD$b9TDai&0xIzO5e+-yE+at6y_Jxetr+{E_hz|BR!V15#|@m@FbEe z#Oz-V{i!O=XXRo{mFRe`S=zdmEU%TCmev;Y_>6BBKU>zUlN1y z@>73sT%{nU63!Lkcm!>f+erBIVg= z0(TrBZeZ_DoEZDQPuK6sxb}jwj$aD*8!*^f$46!TKQwkF%YwL^HJtZN<@41MHxH|w z>w)iAiOcB?f&GF^+VDWb{9Uus8X+xHUmsx83ineuHZD8Rv%Hd}In)Nt)ip(X?w+bH z!1DGU#sf>Dg?oM!iS-LyJj}Yq=2Gl~&-6mzo4oR3Y?;Xzfipycz^Bmca$$uN=)g!D5W1QG7o~XINkv@`z_Y(KP9&Q*9 z2YBP9Z?=SUPSurrCN14q9)+SjrkVEc^=ZM3ha`^|BVqgkd^kJ~UVIhP;kHR+ zQJ2>5`GW%Ew=eHQT-)+*J40mntdcW!w>Q3eJ z2k9t(g2Y6JXMGh4Y8MILlp*&BFNBFW&i3y>?ITq68kk#1BR;2iQyeeT^$y|-RflG$wp zYxc}MwF<~#$36Z#%lGH92an2hluog>5m|g!K=%t*Ae(3~wcaFW_9=0oICm;WH`LRNs6d@tkAFzwv z;4QD71ThYxo8mgC6<6lvm3bxggSDkJ$eoP?fMyt<^9ae9n5fGNbtLC;G-pkcGs;pD z5A)yr6bl#pP>zim)Q?OtgHF*!5@o>@dtvr#Hb2F#1KJxqDD15zQy9}J{`8_!P-Vd$ z`h{Q<>U`k5@IEUNyQ*LvkNv8{6JdWHe1Mb3<4>&IU(_XLM;UYXvI%f(HLq@uBYtLcJ^tbhsJwF<#_6jRHV~{ejq*f)<^oJ&c5&A*hivxs3OK& zyKkITka<3PS0I%S?pc(^`5A$gpRWgX=RDk9piW%>>OI{v#dswhvq&d}bj;kzF_Uw{ zHe6}CN$ZWcB;a(P@nG5EzhX!JQg@*t))g^oZf(Nqh3cy#0%OQn-=YC?*v_1}wS#x{ z%M|MNl>lGH4kJ(pk$JP@gA-@;OFs=`eDoyRK^ExPd9y7c*ZjiQMmLarD8DTgwLMuK z4O9*p*8fr2khp_?Wr-!oO%C&2kZ% z524j7e(P2a!dRqqUI8@B{t3q-_lZqX_g6A`tQ1Kf6?U)l?6Do;9wR2bfRlbzN^$6( z-dn~q>8(Z5&psMHVBwXho;2HF1ZRmD*&R4}H@H=Z|55mSfJyHpl0Kqj ztJLNp1@ykbNJW^pfW0S_4?w=$rU;c+)2b6WK5`Y|p=3PZ&w_W!!-O)pb7bgrd%ez! zxk+~z89YVO8;6*Tks7)M_OCKJcyZG24x07xTyj!8({_7fdOWvd?c?F<2P?Grh!yz~ARTi)ZQ4Z{U+ZFcm!{-i958aKKpS7b%QVZ>m?|%6}dbSPHAr6@ieg1Jnur3+H z_;#r;A2*z_z~-v<_+8|^_jvXzfX+XVd^}7|RbXosB!DW!4M#|xVUoum8%I)S+QsE6 zfL|cci@Y<|dFj*$$tXkYo1?rhfvyrhlvm=w-(1s^KfjUo8U||ske>g}>-s>;^oaTi z8FZNdnqU!{xBucTB9dgun55(w=f>7Wi8ddPznykPqD`GubciIWgZEb#c$>22GKAFG z+X}90g{$tN`qGxx%lt|^}>jXZ45Bg=^E<|UaHG|%L83l86C_2k#@kXUl zp^9_Iy6jSMKS}B>E{Ah~O0b40m_B*y>316EH1WfNZ$fj3O7uyrBUguBg`NG)$g%D5GBgCz=y`bCKt@!?gv`HD{Sr00uYg#m@*0mcaQ=yuhU%{P*|?CG zvirf4Df6;S`?i>1ELBCD_ziFfIsPi}J`<50+-rS%@#_w(5@fi6qZM3$! z*pbp^Vc1w^&UNh#4zm>_-MYm4dMYN>09r!Hu?o=De>Vx zBh+|d$UBEjncf|NH`XV}yC3joojYOMM77gI!Dqm+9Y-BiQMQHPFq#qBK}tLGx*@D` zRzA(A1?D@)LjQ`>wmvF7XgR4M?lC)NSqo)|ZWjbrJ_27@Ij|!(KA9M_pjQv>nYDFo z(d}BD(JgXR;%zcND&E6^j$M}-?y_iUhs8(T0LS>ixv-&2LGD(uE0bgGpnNB94#o%4 zG?=n9qOt33-STLo={{WRL4PCt5aij8zb8~*E#9#pdk&NTFr?+haCQ&HUsWN)Tq(ag z0ly{CAEEu)tAn?i%G$LvNWXTqhIgRgqy1WYv)eaQ^)=KT;ifRAwS$k1mt@PlrzbqK zaeorV3*t`j(P{N$pT0Ofy~>=m%TLg`b@}_*L$j)5Tmzh!ru3`_8eZH;eIE6qQO*=& z65|GC9}lv#aq~lY>X@T52_L{QZqQaEQUBI)Beh%W)g0%A%w4|5AZJG(UfgVeyB}kA zY#qYJ&HA?DVG6uuxa|J(!K6G?JVbKip^N?XMJwx+@&IRaiUOSX=4jcpsh?C_x>Ng2 zDIOcz%ImD#Pi=!-m3^dc6x~MTB|6Uk6%dlTPTch%TPH`0(9shIGG2G{pQh$?;PB+0 zFM{`&f~;ZTz|Ykc`m7dX&uw?KSEuXw7?P*RU1gjR{0-OayK_TxhEu-6b5fP?vGLNh zYImLAaO2^SH^vL%FX5x(#Z$-UI` zRcON=c8nW5cb0{98B^EoO?!7)w_7FC4kLaZK3bOhNzx0{T^nUdSrE%WjFRPsR(SWg zEaz%gmiYfu7QIi#9iCNf+KYNqe(VKfesVC;fu!bi*abXM8b9-aD8Yjudd zL5ynC#B>j;7Zh!}&!$6+x(Bc1$Ee(_!A&(3PsI^%zYu&h&jkzOrmYFvkVckM((n-C$ z+tB9({OtgYe3Hk>me^x4(DCO)eQDGch|#|5F{;COnd9%nsMwqjb};1I$!yWikRCTjT_Ej*_#Td(CVt=0 zZSkQux7xDPv-Dl2hkmUi&yL}}IhOFX($RLT|8n)D&OW4$ZO~9U`X9YJw#rPMSt~{z z_X_nO{>EMmoV&>37NcXT5TkWGrT=Vf=->Ac-&p=8gAO`;9Y3WRMD|_cYD4OX_>4HMdUD$CxulM5&`>%WsQkHAQC0hx zj903h9-{PsSG#;*JYX2B9H$vo40F)TeBMzWe)*^2O8Y(6;)M8d9K8 zlr<$CBGmWcPASX1xQ0g6A*V4deJ}&IsJOwM34}~(Ty$L7wrWPdGeASWtKjGE|Z$_L0T3C5t-!#b4 zkDL&qytV?{0>rUTLfV+Q$0cRs9=(jQ=Z%2}t~=nHM(2SBA8p+y6K`1`X|m`vT95Cmxde_8$27^{ucc9Jnj?=wpKqG5trKaRB;b{e zY2Y192X`Xw?(*q}jy)Cb&&UA`&-=g)>o{(L>1#h}$xAm=YvDW@^2T}evGCFI$c+%| z9AmiqBN-2<=LJm9yleU7j`v`PjFi!!BhIfNo)0)_0vOX;d6N&X`4CTg1sRubaiHcW zDY^od4xh3WKGN2;$2TX-0m%=vfFHgUS;*4aI{Cw+kJe7E@FEI%H3NPxhMWKI`rrgN$$X)EO4KsgA4EJ7fCyhOIbnWN628QMN5{p z!uQ1A4L8YD+Qr~yt#C7M`GW;>zO2R4bp&?aJz;RXP@kw>X5~JAXD3t2%Mf0~Q^092 ze-a;?TQDPqy4BR!EwESYZ5lU)y=NXay9Ui0js#X8)jgb|2zVeom=m)zQ&kXkb#d*)D_ z=|XHRd=9YDPwdv)Q&-0uEN0RK!S8f$=!SNUdA}~2tH_#031m`(k5dyhzsNhA8ufyD z^%qZmR-(S_?Xjo)B8b{e{^YI?ss(ukI6ZnMrdF?7zU}*CxcypOuD?D(RP)lN4&AE} zZ9me4(&Zc2azr$1XU&|d+^Xq^Hj#Sbt-!l=S!{OIl@6hMZaR`OBj2|?zCWZCKSb|x zr%yCu+D*c=s)H+s&5wRZ<%yU$UGu^%k@4b_4_=sg@G;~`>GF=FOJJu!v5TX$Y|(}& z>tLa*w!trZk5=_OU8e;Y-mu#nJ|FN2yv_hSs=!**yL#kR&G=s!TS1^XdAJjA>(zFI z_X@d;Eg+ndgIzNTc$-TBJO`+*~G!Oz~e zNB#Uo-hPNX>gL*0eg!?F_gBUm6?NZB%8M^%42Bue|0ZwE+*O`u1ZL2)M|qDy%k+sS z@4c(5yd$T@*iiD~YNi(WhnCmG=1;*W*N6*j+AqAcMarktkK8DL(ID!IY1M^kZ%Y)Y z->lp@}f6=h{QOvzP%Fu;Y-CRFWUGU=8H44ODD&#iWzT#v(soNOk2lI`&=en zFT=8-h?BOSNxL)NXW{2g`PVpD1B1!+o`1Xh*)vBte7|$~7JfT7-g?&5shqTpOxlNo z_pVmyqyLn|sQCVYn1?rBt40jb>7}_fW2iGD?@umYGr6MU{f(B1bNK#Z_^zs5d;Rp0 z3`Q3m)%>Q?lB1eplMia)rK{Y~M%a^Y;$Y7#))s`!?Y0at>;eDbV0O0p5gp5~i7~C^ zUm+#{nFZLw`4UgHmkr7tRZEWo*FZ~ubR!#YKQucWe|}@)V7A3=Zj;A6=Uo$ymY;^( zB$#rKH)fGr-bWdPFS6|)i8C(@hBsxASX^e^q-R&_u;+s_Nq9rnb@)W;Z27BRY4^9O zZvZ-GG|cc|FSR4KxK(dCl{aMo#tYp$p!2~U97J*H1}p6)lgxleoA@1%*sKx5;;CC# zsq`(RuGCAUgleXtlZ#K_c~VwUT=-IH*pRDZmall4PRWXGE3pmrg(+F)6}h|zw{6Ue zoA5*l_SRS$*I=U4K~49&E#W#$Pfu04Rod|5^m`E>s^c2kE>v3P2xT|P|*b~@~m?|2z#u&3J=ADH=fbtR8|2Y;TH z@N%IQoJ?eBTk9vJ^}pr#xOizfoN&R|egWlw^CmVfv-IOMrahLYW+xs4Hd=^{P1Cgt zQ_7i6)*Fb4f&Fcrtl)i5A73XMAL6cJ-I}E(`v)Rl#1$Z|yA>?V1^0;lsrlj)uBapS z5-@S}9o08^>D{>3@Vh2;Yb;{tgzZ=0GgFxe70aPyx(dKL2-9U)O&ODxdtnxfSqNoy zYv~yMWz9HC5_<~iItkNVb=Y<6_QawZ7IPJ*i`qEQNx?nek{p>~I#0knJ)k^8lgR8? z8mj-w!_-226Y5fq@(R0>4SYt z*!(8gM0GEj7V&O?)9ur!;Hyh&R=g-9%ky5qir^C|&rKgMypc~EX-V4|=`O*?^ueAT z8rMnld-P50gCUj+ANIj+o7GB&^eIz9eem~m_~<^E?})#h4$jYVBYl1ieiuL+#p#2c zuo=3$B{0H>?5#_Kyzil0ZJmw1b=(8fPvn=OBEO90{em)}-NwMLbbMqURO<8TXrmM< z1NNzgz{iZ13F|@oYCA?HQ1uJdmm3Z^XBDNsXiTcNOl%ry*KHawn*kqf*S*gsHSGzr zrTUNypno|Q^5yvCK+i+E??35OkZBQD2AocNbzx(ko5bz@q)!$C=79av*1JhA1;u+k zQ&Ur=eS&nh@G(9aZ@xOMOWd&i=o7@O;X|Jo)h>$-YkD~b?Sa3W!$oK$m9$w8=c)FN{s};aA!wd4Ku`YZup<3%tow7^k--ma5CLd!k7I$*JKG%#(j)hf7O>pb zR=Kc(U+Eagy`1WG!}?tk$t}YQeg}*b10^FP?03ExNX>&GZU;CW1N!l$Ip62zA0=ZT z6R_LxiCEyHz18NIU-D&W3n1MM_!tYQrfAQ49GF##7C@{RKD2<@)D$z*ajD(W0{HtS z_-G3>UNlo2^KHv)Qs!Imdp$k!qUZK5Z2hj8x!H&+7p|==K+XKS!LPQuHa0K|OH`$n z&v?=$8*Xf-`X?TU+1WU`!Tw%ydWEnFl>M~Rt?`U-{zZgF-~{_ciPsjcwrL(&S3okV z&hi3Y@L)J@ZUCK@yzXQ=Z$!mQ>@QKfu+?l^=XLzy=C}pLK3}QbG)?QlQosW(64R^Z z`k(oBOVA=0#(}4xMADuJi|f{Z)0zZoMiMbwA@=e5g>zqqb*4_s;EjI1q<+xp^#~$P z)DG0Xq4H%u@(k98SF}0U{f}FMM(MwuffzHlz?>jjwyVeTY)_96#Bhv{FCEd|SzWK) zx3pJ`I_Vu8$16r-R4}JlVp113+evnRLDdL|j|QAhD{rw+ytaPkYqGqNV|5s>GkKa` zS-RL}p}jihiDSXOGuU)HrX?449dk5{%=0VooQE^^Y@UXlSDtFxZA0IVintz*@u}6S zrEXoOTw0~`i_DW5Z!>wCoO^Cl?ksx-^TaW+F4%}pXTHcHf9q%k>Lfp60e}hfB>r_+ z`)iOj%m6ZR6^yop7o4rUAs}GtRRF6_OIF8q-Ph6?ZZD!@F9c{P0yrt=Zs%a->jXQp zVOEj||9;8H_MtwMA{;*k0Non+I3?A$^tnWr*I`{rd@W#Mh`Td61!y!n52^HlIU9_< zg%DTr5fDS8lMeuM!Dqp=_WjE20`KL+$HTVay~hR~SGLm*In5353j6z!oiEFRV2}d3q0FOl;o_5|=uw@BW3uL8z zj%<@MGJ$amoO*;YavYV1Z4g+-$wuJm4fTl+PDe#*?=}gqzKl0ZU`!#c|3*p&oQ?l< zbA0{!-wUIeF?l@jLH!s;KAv#gF?%G;>sB#PXb?_J&INrr=C~RW98Y>o;)84 zb&st+{Ee9lL3#W*^5jq6l|C-k%^Sz&ICe{<dksjJe%R*<+8h1Uh4K>-bJ2Lf z*s~g&@ptsmHYyEa)U|_r*9>oC)cX(6PmP4KM6Gz64KTV3V|z!^cbH~3@WMJz>U7pZ zm*rpXk$S@Ko8fneH@MKz1-2*>-E7~L_Hx@!*%H&m1CI0eMB&{v|JFEdUPt{8N346;cV*)t0qO?KD?@Q=?puInRwVv`J0My|Lyq^$CPua-N{tB9sxXf zWnX!ZR&iXfTSjC)l&^OJkJjbjcxXb^f!>FFFrOsAcVj-na!~#8-s~x|9b`y*wNVZN zoNVC&qR5IRii)Li>mjfIHO?mx?~)GZ<_-WlCci!W{ANaHxm%h}8OY|>D$c3=dP;Qt zYWMZQA`YJvc&haL&MH9z!i2A{sYos!@0tr^&RUJUv=QorXubCc($Ze98WOpJhjHu(4qdy7P9^4RTBFx<7Qr zMUGs7AQxMAJkb&KJ(w1e1vu70XuoK*-@;bAF!#UQzs-8%0=zj0Fj)&isMT z4I^{08AoueL-kGfK^b7j(<@&ee|kNt`Y@!&c*6b+-m1$x1+~>CODV0s7w&#zX!^CL z5pN36e^~TLK+{+ZgH!&P5BD@xhH}!I_d9aC(=<1LrhjWbqf0hqyg4@kZ;(NMARj5H z`>3s}M!DC!J&NyNN9l^`3Fv=%dU#T|M;4uN)SI(4ax+KH!L9kLxvO`J{Gf@uO;MKx zgJ3?TwVY}*b}x7s?S=IZ(l9qH@^sPD{+O(zX^8WiC@1oH8P3T0sq^{)Hu|f6QF3DX zHGs2nu8*7`^?SGq?xbYwIlQ%;n#&)>yD3}W;?Rs}O*8cCit@t3H$yly@~vsabhQrl zik870MVJ@fu7$VW@^mTP9vV6>D;Y=YNW3KLCVt*Y~Uihqm>`k(3p z90eJf>3LifavOqrt6pdw^Q(nNzHDjI~6)U!dOCNh*E6cQm*=1eIXOhu+%Wh%-T zA<0xIB(wbXKIh*1ywCLd{@$PWXRYsF-_|;o^?dBT&p!L?bM6`TIcH_kfi}UU-Z3w2 zNDx+qZ`zt)e*N3;?mK#e1j@VyGQ&dPv0RET*LHefy)loztb%e2KrT0qF)}h{^mkee z95S}`aITCw;(Qkdo5u{_)kzcbr8YVWHuAs=c_7mN>Qsdh?W4x6M*E}OeBgs!&yCZw@)`$VKNc|w5Ey#C?AdpeXIB1&P)otD2Z^Sa%mRxx&HH;n$-hWgVn zzT=^*y;`k(I#M=frpFIXTNkl*0Neyt<%t*#L9=0zm+f~r(ul5zxR$rsz(aLuMSF7io5GBPa*nz(e-yM?dw7F289$gJ86evk>>47Y}BfKmNL>K3{&kRfq6RXdHSf zG3p2Ii*R#=%a|YRPm3T15FF1_L>K8?jvXF7>vx9_WZm;B(5T77i2`YE59bm4%Udb@ z1^w(A{Bj2p>z_W4E_x2x^g@={1hFDWoK0Yk-#TS}vd8yKFQOwx&^-a1?GojlrQNh1 zRep@Bu1Ld0zZN&`|R|XYwI9SCi zAk5G(!objQwtFZnO~5*!Z=g49_KW5jVU(N+Ghy?-DII?uw?SXTvOE`;)B5+$7EV89 zM)KvXYOb91jeFhmdk^8(6qbMv%OG)fey@9d??Dlsl&5{j3r+?Ulj*YZNrPX;W}K^H z9pPMgIoN^aowU06XP=qgZ^<|0B&>1D0~X*O%*>f`W0lnNrCqVypTMSHA^lIwJ?{3V z8-*=Ww{ZQ)t7h!$w(a8UV*_OGbGCUSu#ISsdy%fZGH;t|u3SPN2!FNvd9p)1?ptB` zN}!%^Lt@KU@7Y4BLNp)OF{y28I2mXgo!9GnO}@h12VN{^C6w{ie^Jif30;RQ^S80* z%K5IDa@I8dV`y;t!78qtwc>J0mAOPZ--;Q^m$Q!3QCQB$PG{9@+h*VmD_Bl_&~p?d zww%eC718F`Z1LqiTFwug3@oR1RQ;lTj~)$T%efZpvjNiov_5rjKOJ5YGw=Xc&QHyh z^X62`fa@W5_;P+0mvcbP)rpGE1-8W2CZN0de_`uG`-U7jIQGzP&W>Ni@!Dx&3 zX7M%kS1w?j5svqVFf+nun0eOZpikJQ_CTHo{tFw)_R*fB`Zbr_m^ldeSHSmF z(0BJp)x2Z(=0Fjzf6Hd{FFL*dQc>-WV9tiJKtoN$c)gIi`*h-?6TA)OxUvat=o+_s zWzytwE!Kuf&}NdweM@h{y)yG2ACuvAXx)qsJ`T2*@0&S8uspn83Vrr!NdMDzH*dW1 zGWS;(%W!P58S)Z3jMyc6_<0c#?$+gGIEad<&Qx zxRfpD5y&G=T+SAouhd+zeMev9#qVVMX3A-sUwOh}^T_>J&ZD4T2BiOKIn!rvS&}~J z<7h1BVaWd@*h*06g||l?w_fw+7hlef;&T3YeciW4`s~t7IdfvF#viKcOm1C3TPQX|Q~B_H;>#Zqxm>&H&gp{f zW~klKlUWnmX|Our_c&hsJyv`jkSNo8ssrDqdJx`V=B&n4-6K7(XK-yziTzIJ*V}%y zm^`}#?fw|bQu$xlJxin27-=TTgY%zWkSE(tQfgggf+l#cCVln^ke%~i$ahNUajZPI z)QRiwdh_yOLy>F?GkJE8I)1MA^(OU)cI^W+!Wcf-vh!g2o~~Qa{Z=m{upK9hfxb^j z$Fw?_;i;gsm&TOQZ=o`g6&yK)nOCwiZK%|@E0iC{VrqcFQ3^Oz&c1HNJZq_(btm`e zcX1vXf9o4A-59m~N{0!&9$I1=FIZC!V@B=!_*peC)(dpyPNe7njpT_G_M)30r{iZz zZeGKA4(BrifR<}NI?NW8r5jEyuQjIMew+txg~a;p_Jz;Swx4wy_f2Veb%8e^+&|1W z*guj{T7G0w3k|Onkj;(v2LX?MD z*=Fn3eb5ry177!1SRFfTV+>WSI?T@CZE#_@R#!@NR#L&M#?MS)yAX2Qeb&b@my zu74ibw6R(tM0KYr#ZVt1@R1CTFSf2KPt z#(7_lhFfqrANi|p>P9hPZQfo;h5UsyP0EsZ?PqcD!Fr6#qjoifyx7k}IPM^87t0!5 zQZDi4aHA&p;P)T;Z(jWE6^ENP!F{ZETHm=?IiJJFG{HZ4Gr2!KE1WpIY5rg8huxF$ zI=-31o8}*0uk&D+-}crV-ZcMNYC3mc+1M*_c+>o)Hm&OQ&hN_^4sV+OjTU`7OSRAW z*YZzQ@UIUn5?$i>o917lb;xy`s8=?JH_iY0?~{F2Z9WL+0qFYrSZW^<`@R48{#g%K zpBlqq69kyi^%Gs?T86`(2j!b2z{(3R4k!v53s;#+Dfa9Ru|9y|zG&%LX7SM-Cr%&_ z{%%WuACEyOYqi>r+4AghTaL$$<xU|(T>0m3B7OYmm)kb-ca{3*b1KlfDIO!hb(mX|-UWTvTL$+@Adb5b z^P0$?e@dq3{?1*~5yzF^`4lG$$5w$%?Qf}!V;M4Kgdgv$ZL|{S4=X}>nkTwGoM@R% zdbx*#VYM}yj&_(`Yu>NWSF+thdPf>vwE$$(ewNX>aDBtn>X8_UO}#EO%+t^?%m)_6 z!+fCRo^;1fO3?@WXCd%~`in%txYW$-{ZRC3l5$7zxPQ@kVA;zEXP=hz?UrWBRMF;V zS=ZcG6aS6hT7KoMxuO;g|Aq&?_g)>aZEdH2!&C0&Eb7`Op58IrO#XJKwd0sh{l`Mt zX^*^=+8oz&m@mf-x<#djoy8Fn?&`OJSp)w5$am`7TD_i!@Jq7{=wl$UUz1$btrj^u z)_*0QyApoi&=yuh$qE;KEAjiX8h$0`HrT~_lGRhIZ?hkS72pjRT;HYM3Fk)h-Qf05 zID@-pw(Sr3moM4dNE%=q`yCRSt8v4$UefXlbICUn^N4RQkF^PbKQ?WAXu*CXW8nL^ zQv8j)%g7jA+P($n9yBHd<2c}gAmP$gyFYCUT|e%@_-I;|1jvVL0dNz(&ETAc-7>G# z5f5yy0nw-+gIjk#cdGD}$W_IQi=)~Ayf|jSWoutAUk`k}o$L(Ev#q}wIcDw#(37Lx z_;0i+8#Z41U0ykf*iBk7XeI0~K!Ugd8tU}$>I$dK&Gth9=f*0VSXm)(-og{c4-of5 zPN7*EWXG*=UKYlEzj3@s1~PCdlp9>Ur9X^0G5w}da{g}(;%%D&-wKHf(u83(T?%{RMw&qw$7H^c>{h4vDS9d!JSG-S^h1@Z*qOfJu%+9L~Ck zrY;PEn? z5vCrvJ6}`zd9yg2Pv5rpdFj-DE-R7Q3F@W-y5SDrh5D_7=VdF`aQO=L>d*8`i%`;f zpdH)1ULd#E*`EWwp0?RUEX~QK2mbZC)mcojE@h(|QRfQKnXLu=@FSMzR8;8>Vde;k zR`L*+2WmL$RLSD+PRDQ+obJ%#8&AY*%cdC}yfG_f32SHEz10K^c3s0FnE}e-r70fE zJZa4%HV80spr*KLgTq{RRqj*)>e>rz!0$k7^;)*hFIM&uD;MkFG9*^t$rtB@HtbJ| zCi>u=hpj~m%HRbxCQhrTgrHQaIE)HnPblcZ++aN5Swp#P*dr75vk?_;&< z=1hT{V@+uyerJ^KDBEybASa_K&8fi-Q)B$YX!H`*C$lL{!xwPk#YuBzuXouG$F(5hB>d#-0pm^8cdgurq$oz)ojpi)pU>MbqkGf~S>J zb`LSlwZCXqY&L(y7`O3Fzm;A;Lt}#D$<(RgX0Z2XDFVNIO!L* zfSKXv6?gMuqa&x+oo4lF@$-DtedDX-ofMka-T#AL4WbR!ce2VHIlca!b_laFs@&z+ z_1kB-u?sng7q$SlIb}LWPa9UzAKujCbYpD>T`PAT0kvBEiW`0Ez5cY}=-4v+MR)tu z^oj+;PgI$(_PR&Q>M!ylQ5OH6bv5VRQ?-^l-|3SNG}Tf5(3)^!S3r ziuB=hbc8b_&GqO5u>S~wVa)L9XHE5a=CHRK*^s>hSRXuO_(P+MU#vrsIjf~Bzy#(@f$b5dYr z%GKibX9eZqQ%n4y)#{)Sw&a* zX!Q99kO3oFF2GzIsjl>E;uy={#Ti6TN;@x>j;e8<5^JHSxLkMcSIln^j6|Erp^>+W zA6^?7c+QAsWnfg)C&&*%WguE<hJ3jAEHjPZ*StM zcMC||_z}iS1M`kI=*H#JXqvzIb#3+Et&McAqVn-%{3JwRKhJS#})z5^ZHK}5c#%mj^FWlmo!-9ZjUIHMjzAhEZ< z!sUelq7aY-egpr5rO4XycFqkUy0)xdIGeME*&J7XSZ`>hU%1Gp=7|>n?Z(qH#5Yh1 zp7(fo)U;lIVIGd>uxxlD=7+$B;2*xl(swR*-YrLPJQ4E~asEV1OZzSjqr%q)Qhq$` zq6#_$;#K-=7W3@PwMVaeu!ftpH3Gkc4xN&_n{2r9L7vqCPlo)F)S;x+`?sg2$c^U9 zA)VAj#?tz@OM{n{;>-=pkpwbY01amgC`adg@=}R`y2}WT<7gRP26ci*Q*HMSS>K`$ z`Wc?~o&)1Vb_`$f)99#qslhnHi{nSxCcLuiujRc@+!Bv@qwH2q@Yy?Ouk}7?W{I-# z(rP@y^y2>v-9%oA8R1cW;qet96!}X}95VvivT%X=(3?i8||Ujoc~rcX3-{ z*Rb*EODN-J*CRpu*oQIDuTpe8<`Usxevy*7@_W_8Z500U2fyA!ejp?xU&8456 zaV&yumGyHnz#}ht;Hi<&K@Sduu32&r>VlI$kIE-9d^T09t{Hnag_Dmy4*rBU9W%os z*QIvpe>IWgn@{-&HrB3pYGs0cOcOrxqDSbA=QmZEFmeJ9+b7FMu-YiKL1R;%ZO3sv z*QOvpc#?(ead@QlxW_YFoZPpvh z8VKR7O^veK$UN*!NumjxC(`zzv=Yr~_JaGzE_q&r`@E$_3$(51?%SJ2I;vFYcZ+jg-YTm_!e#?I|J*@Fv5o$?rx5w{#m}#I*%AC~a^^P(Tn| z&rdfE-}LBoqGe*suXGHJeaYW6hBwL%HB_oSr{ggkTd0Ga5O&AK7VhoAlRS*gwEhp} z3afA}0qtl6^8y!0Y*g=+@?@v?*5fiIFnW*bsKf=uUaQjJEn)Opl%Kw&8TsAZH`_+W zI-X(D)XsI)QeM7hbNWwsU)|Ag?kp~% z5%r%Wma%q3yP^=o2?|8MHT-@*oR|MPu2!?1wdf&_JqC=dbx8%}m|htbhw~|18%Mr! zz;NBJUH(U%9;>$1psl#y>AKs4r*2)2^lN}Q9A^)$=JYLDb^2q$eGlBp<>+*pqw|@j z*05)Lw;=+$0nO3v`Cwi)e2H2Y0o}mn=z3WkTc4(=5h0)(+#KDvvwv0`)ju>|KsTg0 zy38X^^V19}rUD%|zZgd7hzoc1DoL@K6}}tVAKe`s&SPYQu=U0Vi80%%e2ERP?HT|c z3cCSxY=fV~5S$5awlPb&cXX`@sUuuFY~#b%U&fK-YFCBV7YTL>#-^o^Sl?-;QB!65*F)Exyeue=dJP4=#JJOK>03Q(cd64hg?Kl>*)<`(na1{M6UW69 z*@$%oj6aRWw0M+jxwZ7L8vUMP|MLP8_CMV1In1f5C$IG1zwE^7Cs_vfkP!DsrgD|JYrVfS!4cckO4-9Up60*l-OnR>Hp>-AsP=AfUW z{9S|}mR<_RzHFVBRPY}1=49^?%jOoVa(aG{&R=?o-rIrvDUfKKFXPb3+14tmB$DSx z`?I?7_lb@uEV42?mf9ZkM;mE?jp&J*(zDSwN=Ftf7uy!sliB{NG4e(B@eY&ez4ho5 zchM*4DSP(`rYj8-*Y+iL=gNd%KDO3hj@z#t5>lr@+B~PTpD2=f*W%$7^He8G^aUXw zwe;GsJnQ~%BiWNP=*vstTLY)sL}WPwojoX1oFjV;LIMiDBUg;d;d`3W{{iibb%Wmnbe8np+Gz2^cwTjsC7 zSFUhbRNzM10gjz#iZR*4^E98C`_%AlOB-!W*7J97u>0_9MBO2(E85=_eYEL~JYT2m zKA5PJ$(=gJGCgO@#MX7J!W+X~_YctCP~MYno%%K zUvpStO+SvVLXwX2zXAFaD);}2d`;>a=lpl!8_b_*%#pr+P=9;}eA6A}V4aOhYPSDT z$$2IJyvk!D@l~9=m_w52E0~hFn!^Ukc&dWyE2Jj~`+|=?Z-0!9h}=kVlwk%*;CFc; zHt_+wt1%j#_BDUT13!0?FeAO<(wk?;dxCuY79qbSB=k$>NM$Fl$II^_pQLWoGp{|| zc4zRuJ@9ro#kqVby5PpAu1S5?jiBuq`7Izx)XSW_kT%!<8HuNsu^l4KXh>Wip*`Z_ z(!wEYqB#uZlScyf+ML`K{iikV#9|+Td}9bk`X8>2bXLtY%T^7ieLK=%xmdq3Qs~<< zE-?|`EESinX&+IMpVcw!<&_y+l!+16A;gKy>Ge;7M&d=XZj6yBCiHjm;nBHs`OK$7 zg-5ydXH&$QEayU)7px6++&XLeF8xDrV}}*!P`(0AJ3zwSUVJ7g#Mj$LurdrI*}qnW zshC-#`>kGj!%qclF{T+gk_*iLE~acsQj)i7!g};q)a5ZG>^meP(gy0E-lDWAsvqRV zt#^-x@iGwG4`EMQE%dU9|KzuEGte2r_ZjyGB&ww~P-DsNMX>LQ^;HD+x&PnPSN~Zz90t6t z#kFUwucmVT)A|a$`9Xf;QBxWJfsI@rIW1}PQM8iuPsm@~Tz%&@B!79-e8f{L%`=O zoGW7Qu}y#JQZ5Y1`n z76M0@Pf&O$?Bj&Gg^GfiaaGITmYmuPYs%a@$6qw`Ca6<0vyPZ&*zY9T4fKS#2uPB$ zwkFGIjto}#LcdK&GXxSmO%)ytjgXlVZEUcl!@DD(5BBjcu-4=ai5***x!H{A6|j3d z^dZuUc&pR!*-(!E=tkt@N4m~fb@9-4{HD=;ghg0RUlG%wb|Y+3VC5!!(*^qm^fU3r z=Fktpg0COEpY84z><@jD9us-+_u08?mAUu=>>Hm#;`(Wb>SaQ=JhD{GD1f&rsLUvk z84kcmeYbFUi92NI5GL2kSBOzrGFO5RJK-REq! zoU_NsA-p}bR9?2qX38|NbzpzeLa-hOF)E#xWVYyVSO#ykqIQqrWDGH2+;tPWJ+3(y zjkd)8?T#RSYRkD@mc{*0B75--q!8t3Xe1Gj=Fa_fO8V`WmjQppQdu%fzDG5a#A|ZJBC6 z(3kr?j{ZJ=nZ>&APq*k1{T9Pb4Xf$zQ{+B+-%6>hCwbuSYsl|pIHRHwl&e&GNQdZF z2fD8%m_Gqc`~ChQ-$!N=>Wx^unD2mk;Q7h|%db3Nf*4Z`TW{XJ;8F>XZ4k(u;brUF zXYUddPWMEDF|DM>eJg)=rX$a@Ni5IXFgZomYGg8xB?;sm@V#ldA>O$kCvOXtcT#Py zQ^M^D#XQe8u{^_@xB40{`#prmb_nEIEPs3Jx$$O4PF^yVxAK0cJ8C|Ae(*fI#PW9c z)7H1W-ts4p?Geaxn6#gpKc5w5(a#PYTTcIlJ$UN`*KJmz$7$eie7Xek!*o%q3v$GAv}Yr{^SgT5tTb+po&f569Vdj`NL2 z&Yykv+@)&2amTAC8=;ccLY2RreEc5ufL?r@!Vs1 zA`e?J1Eh}Bb3FG2JP$o@%BpHP&gOW^Se~@^1|b~=d#&Vn9twD3!ejRrJUqIZ<0)r( zI!N7A(2x4F62FP!vf78!dp=*UX}|4_Q*{g-Zz2Ae@NxLuF6*Ms)Wn_>+y5ymcXv+* zgNO6H`f_qBB=|fM+Sc8fraVu~SIP37j5J=Z*Sk87<9jZ_r+0Sh++Xd>hKc!JuzVU@ zd-rDC{!zm*CdQn+g5M=iVv+mt55!!Nm5Y{3Cf{BXo6$PlBNjApRM7>3U+?KMiri^Sj5pd4e*%fkf7PcxM{@dfDIxhI_7xJJf34e%Lv>~Cac>{xi1VE_ql z4EBJ7f7SLwTQ+7ruHfQ2K7gDEc5e`NHQQwCu8;pJkFSEz@z+Pd;Za|A{~^p{r^64l z?EUGBA-JtqH6kvws?v=I`EwOJ+md&UB*GJ;{;g;ETUDOJ`+N4J^a zO6-c`!7r!}zC^*ry(&%D1lU4Q0Z4?suTU+df>|;0zLL1UY{-#~JhR(z;ul z`!oV4w#t1lYEBW1oMDc;dch!v{_9%csSRmGa~Sp7Kw>q|zBE8-WJqfnUb{cdq^KjM%NicUc((Cl&e)fENmpkS$1rjwnNl&RYbqZv2YFxl7Kh4 zXS8R|%xT|22YQ#ICRp#U)!{$2s@mPJ=HkjI(qRpBYnE=@fG|;nE*Dvj``_cmwb7`x zf0^gjgBXENYhQW`oGgOLk%+vg#k9Qg!`=SId>t}F!ky3-fOE4yx_P{O%${nwr6TqW zE7HjEGJ@giAh^bJ)7vMD<>nU_v-WBUcpFH9GCQ_k8fO1Hh3-@$-VPF5Cutpje)iU_ zktLqc4Sq*Y=q-z$fIf?3e~jnE01kL7jQOCN&@FFs-@#bBQ=z0Y#icC?-4eG)`%(&- z1K@n(CDa^hF74uDaId zkeWnn8YIE3Ov!d8-;YfBHI%pRM9`C3cXnhLyui70(VZa=)b*9Q)s|jRI*PNFQ*%EX z-L29z7c9ro^l3^HsM>q_kK81@=?*=u{^#x> zjiL!CgL*ci~TX=&o+7flqhQ!)(%W0d? z+N)>jTm|b5<7~Nl%juQfBV}ZQ9JcqNz=O4{EW@oB8A<%Y*}@Edm9SUlpV4FfJW;^? zUyjDSDUDmz^i`*~ie|C)G6viVlE7ZkHI@|>yL#*lA4qa}g zr3KF#PfCw?5G1zr4?o}Zc>3sv5-&drFbN$#IJ`}J(Drz(K!>GGX*M5I9B^`a8TLt7 z)`ft_KoXR7l#WXK1!G-l4Imx|iPd3s?uL-AYTxN<681OofJx}!eaA#*nB@^ife!1N z(sXH)@<$>4;##0VPhAc8MsXh6|Ku6Wv>7ylFXxt~{8n+3pDepQLPn6s_NFu&{Eb?z z((j2g4J_v-z;{9tlr!0N>8EnFrr@q^2T*H zZHYe}hTqW(U-JHx!Txfc|K%+E%U%AL8|*J)FMQ1YBKE>_@XG~A0*z0a6ewI-G^dfb z%u~Q6te?4lde$zROn-r8o;9WU;F6>k>}EQKwM-Gf{3uhsyjx)leIW?(ACOob{2V5&9B8mk9DCXbn1l}JT)GS&y6QdNw8ZrYQd^tS zJbU(eg_jTRiK88Uf{d0xBhcZ6{oz?vL7ScuJ0LCxIIF{t{IJX=MXl`!hW_#oBo-Tf zc-s6&%4QM7OFICMq?dMMe-V4BGW(0zO9!#Ph`n?)`-|91Rqz)`0*#A1tA5Rsi74bt zZ4S7EWqzJEy7e|L8T%m4GL}tgMEe(RX}@?QjjV(SO~8jr=F`d|{@Wv6DO!5OM?zvt zKVsz3M{kZ!|HaE65151wPv6hl*XFwx-s#KfFtI6(!6b#?BW52rvbAFcxGf|>S%0fq zdL0QqoIz>;@hOm49Xdbw`CI#~>mXjf6JQcLsJC32^lZ#XZGjHc{-U|7v^(PVo~Nu1 z_JF%U66kPv==o1=L)CG`6Z$H^+#qpw7@b^ie=}?vuY(6*5<0vZdof%|{x$Bba(3`) zN^@4-r?c_wTX^R$dg&~{eIW^S`0^&RaNS~=T%rTw{*YK5)K)FB`Julzhs>t%n-K^Y z?(pL1L*o2!q~glY3dTyfTZd&q-_jDxnbrFApW>@~Kaw#w*0(97zeYjpM^AK48=C$V zWRR~r&`5fI6#I+V^H;LJP|xSaU~%v(wG?dYGm9)9|4J*)nJTtYJdd;E#cr)KHGjmV zoDx`aeN&o}x$`l+fPE1b>*zcrwp6Q<_glcJy4-Bc6-Rl?J>WBv$|87n@`I zc?IFke$tA6K(`Kn3G`ntGrV8W?r3MCKjNLlymyxG3M;?VHfPJ zB({79B8uisD;xHX=#M&Rh_RtDi}EV;^1l#F6MokcW0wYBa2fT?3Eyp}?OO*haoN_s zQYoFg#ax^AtV02l^kF0R7qJgpvcHIZcnbRq^tSzhT#%)ZSvo|pvE?ZLV3Vi5``Bet z4(valNtR>wfOp-?9oM!e<;Vs;aXC1xPs6VgS|6MrJ|pX7I=wl7dQ@&xn)uBLBdtzq zcW1Re0eBuHfz~Al-)!7x`LK{^jrc`Ktk%aisaTCo`K3v;MsFS`$-7-)Qh15hRz0Hi zRlvkr&$n^djRCbe*5$e_ey8SgW`l{}erydc|LQsZJf-o z{N6Fn`U$Zn%6Tckb(mxw+q!u-PWGei1aToh+#+K?sOQ=p#lsE~9TBfbJ_WcO$4{%EO2Uv-AK8SE3DK-sXS4v;>9^RG(yRl;gsA;;HxXRj2l zIK5~}qol2vw<)<5XW6HKzlJ36uTOWMW}1yrqBBjzYap?fT^W@!zQE$V4AH6{en+iL z$vhtW3LL*VN=nN;S5&d!!|+^UL;P;elEfY7Ey;*=nMGeD!m*E^B;KWPuT$}2wQYnS zzgrQK__=wl7V0=CR1h5d{Uk|zpZp#76#z);0skQ> zV`1gmgrw@B;`#NjrZNs)S&%hhNM0~216OdeAqlLiIY!zssM{h#e$3U#%MgtFnf=it z4+RIS{YkxJ3q|c(z^`n5I8>xBYI)N$i5UMHQdLbX}XJ8?NlprTuKLH*`ep3paJNox|Jg@SfYD z_rmPjlc;;dYyoo{?GL9IA?yxfAOl7IZV-eA=j4LsM>0BZD+9b{KYK`J4RV4voM-Z~ z#yOw<`SDwqbKqUlii+?S*FZ>aqsa>fZV+8JkNI=+gjMV@nM>dqxLS?3hG>9{zuwdt zI!pSUmR;t4phH=xmlo>f7)YMZf{WR)-<`O}Skv4qq%tte=ee@Zia(4WqgdY;u1%rDnln@A5~Qf9Y(EQ7Y1k`}N_DaCaVCm6p*q z%YGBxb=wP=1w{U_GDmEY9nm4a`!K>6X9kh=!93PzY5HzMKl^h8TMl`x6X%!j6Pu+J z-17jz-q8M??S0nF1eIRB6 z^)Ut#%a^9EaKNZOi|#7sgIyG+@YscY$F)JV2bc|c^H`FuTG4l=Fe-l}Bo@nfF>Sob+~7RIH_#Iz zJ|VGKsfPN%kJrajUqWmYBskRs`&~g>_r>p@+%lE+qzA!29mfI&yTAS(L4gsBOvRSI z0~-TWs7;Y~B=S1=dPXvF^%E@8qpT)T>~uKXrwfVQ-P&ZZ;;d#@^?O7gJj-e(I=^QGSSwGe=#N_s38l{J~7e2S*Wxg~VVdvI9pqk`|ZN1TvKMnS&`x3kD z0h$NMjvxAkhA%lC!l*?Y^K;*l*c$ccey0Pl{7FWy7kBb!-<@A$2{$15@Od4$Y~*{i zcHMiD7y8mqNaR#w8{glz!`no51mDF7NW^|X!VYBW>U&4t=T}r>Ufl0AFXQ>&MjT1# z?LzIZ3H~=65^Jl112;0H(pPJcywEqxz1h6f^A*EV91dU%Hs*!cBfv1PpsZ`2whGJ0 z33l#xnpgF)in%XTL~!Z|^|_lbjf4H>Ce8>Uo<&km={;3p{B%aDaZyWUzQN04Lb5Z@y+&c3_1T z$ro`ez(d1lLnJC=k=!%>CU1g55&Hy>J1GSmXFV*|VOE{NhEv z7f2@}bmT3-AbO9g)5~9<-&)+Qpms(YU!-vkfpdRtZ+2>voNK=F)5kXKZJ7ZcA_ix= za@z1l8uXt&qWKO%HsJwGwP{&HPkmKf#p3XuLR=?6-fOp6_;tXsJ~1CZco*1T6zB~v zFnXyfil%tXq;CSha)B5F80oV1_jnsTaB#!&WrVK^+R6kc9-AS%!R7VK#43V~odv66 zkXXK}JJKFM_;8e-I#dLCW@4GC7F{zB*k~UmeCTPTPP{rSR?-eE)lj#{fBH`v&DdeMZ;3Zw`UmMVxs( zGq2WsAFy{h?VFLWhnO$ZDr!<}%nbUC90hH_91>f;s_27>`$nzuAo(F?A;w&?md0kt zsO=zF3FP+}63bWFFGj=ncugaZJriTD89DY>Q}gJW^gXB}4RL>;7^>kmZNfS_TPp`F zUW`>wbXor(A^H)K`4q71I6lAdgg!}A)GJ01%+&y7y7AbP?9w}x0k3`&>@o6*Wqvq0 zqlL{xJvw&42<=|t@Ad3biw$d3O)e3>t6ky!Bpe^mChoC4y#7M84#>L9H$L}#LE1dZPiwJeulpUM)?9|jj|jUpLtE& z@jdX*j2RM96&XqsdTTA8LdPp8R~r&(okR9b3@mutyESPu(u#WUdn)*a;O+Ddtz%Ub zV?RA6`Ob!NMxZa!a_-bPdq#0mcUq75e&n1m9;-bOa%rPXEd8c&7}eM6P1aoXU7}vJ zoTqz3guB>wNA_lx7k~Oi`y39Vd|R(?IIJsow>>TAVP%ME87)yxhwiIhKc2aK1JMQ|v1G@Tem$lUKK%BT`hZ+AR`80QyFKSXN4Oaf>l43K7LX_wZm_OCT4((U zis82<9=?T&t;*g<{x#zA8B>^z`-fuYHg znS_tSC|`nT@J-_*SKuZzl!@c7o!CBTJuZ;HS^hw@W(mP?{DmhzSuEo4f|SQ5Z)l&w zVN|AUTFT}NT~0iuHjRMs`f5mmXrBJH8q2K)=hE*nj@?YLZP7gYsvDokjglQo^2C$4 zH^ut&*fYXr^;!AN1jCywzCdF6PO52ddbTU`s{}^%X=S=(k&eQ0*52H>jpeJDkg(F` zwhA53?*V(KVP8dcS+h;6tL(thFNkjpvxe~=B*CnB;0Ep8mz?ug68t%Q%ill}w2|QB zx-WV^Nqa?f;(UOW9X{gNm(qnbW&npkrzLj!kvtv7ckdn)l4sqy6AY=$Co} z<^kvHLl|cTxsQf-Z%w50I>Z`)x5>Qjm}SI(WXt|7$hW)n=L-UwzSO0D0?hLq78Rw4W(Ec_|0e;(%V7Nio4PJLAlgEsQa~B_+k?(_kir-or zCtm+6Id@-6k9`qOWaGHC3t&|C%%Z+~tM;BII}mjKS_iyMbgMgPrDb$?m?z=q`d-SP z9qcl*V9gvms#_??er5c(ZY6!s7q7o?kK8JS-}(%3U)bkQ&d`KA%jn#W>nEvfZ&`PB zU1wA1d$8PyIRRf2-DaQL)Hr>75sjMT`b)|mb<@%@@x)p)%0CkN+1=WI>(+0fn%}{P z%R8anaI7&-T<;IQ_U*Wp`GzM-q!n?jVJfz%YQLo`pQg5_;{qIO>=lL!s6w z!iVF6-Z(CxZKnR^$SDa^DrmeWe*3M&?WuLDTE0V`PZZ(9Z~sgDzEeK$LX`#jbtkD` z_M|OjgAb8uCMz#8B^J6c$6~dVAXLUHCzUylY~f~UaSw0R@Mx&i)EZ+aU|vp=-2ZCY-? zpR2U@uJ0+YNciy^rzqfuIm-wOCx>^H?cE8E?^}x3t%zgnc!3NR?(PQ_j4-G

?t`r__Xg1CvI=`%;j&{B%v2 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 z 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ⅆNQ%muFG< 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 z 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 -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//using namespace std; -// -// -//Local McClass::spawnSimulatedPlayer(const Arguments& args) { -// CHECK_ARGS_COUNT(args, 1); -// CHECK_ARG_TYPE(args[0], ValueKind::kString); -// -// try { -// std::string name = args[0].toStr(); -// if (args.size() == 1) { -// if (auto sp = SimulatedPlayer::create(name)) -// return PlayerClass::newPlayer(sp); -// else -// return Local(); -// } -// auto dimid = 0; -// BlockPos bpos; -// if (IsInstanceOf(args[1])) { -// auto pos = IntPos::extractPos(args[1]); -// bpos = pos->getBlockPos(); -// dimid = pos->getDimensionId(); -// } else if (IsInstanceOf(args[1])) { -// auto pos = FloatPos::extractPos(args[1]); -// bpos = pos->getVec3(); -// dimid = pos->getDimensionId(); -// } else { -// CHECK_ARGS_COUNT(args, 4); -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[3], ValueKind::kNumber); -// if (args.size() > 4) { -// CHECK_ARG_TYPE(args[4], ValueKind::kNumber); -// dimid = args[4].toInt(); -// } -// bpos = BlockPos(args[1].toInt(), args[2].toInt(), args[3].toInt()); -// } -// if (auto sp = SimulatedPlayer::create(name, bpos, dimid)) -// return PlayerClass::newPlayer(sp); -// else -// return Local(); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//} -// -//SimulatedPlayer* PlayerClass::asSimulatedPlayer() { -// if (get()->isSimulatedPlayer()) { -// return static_cast(get()); -// } -// return nullptr; -//} -// -//Local PlayerClass::simulateSneak(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// -// return Boolean::newBoolean(sp->simulateSneak()); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//} -// -//// bool simulateAttack(class Actor*); -//// bool simulateAttack(); -//Local PlayerClass::simulateAttack(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// -// if (args.size() == 0) -// return Boolean::newBoolean(sp->simulateAttack()); -// -// if (auto actor = EntityClass::tryExtractActor(args[0])) { -// if (!*actor) -// return Local(); -// return Boolean::newBoolean(sp->simulateAttack(*actor)); -// } -// -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// bool simulateDestroy(); // LIAPI -//// bool simulateDestroyBlock(class BlockPos const&, enum ScriptFacing); -//Local PlayerClass::simulateDestroy(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// -// if (args.size() == 0) -// return Boolean::newBoolean(sp->simulateDestroy()); -// -// int dimid = sp->getDimensionId(); -// BlockPos bpos; -// size_t index = 0; -// ScriptModuleMinecraft::ScriptFacing face = (ScriptModuleMinecraft::ScriptFacing)0; -// if (IsInstanceOf(args[0])) { -// auto pos = IntPos::extractPos(args[index]); -// if (dimid != pos->getDimensionId()) -// return Local(); -// bpos = pos->getBlockPos(); -// index = 1; -// } else if (IsInstanceOf(args[0])) { -// auto pos = FloatPos::extractPos(args[index]); -// if (dimid != pos->getDimensionId()) -// return Local(); -// bpos = pos->getVec3(); -// index = 1; -// } else if (IsInstanceOf(args[0])) { -// auto block = EngineScope::currentEngine()->getNativeInstance(args[0]); -// auto pos = IntPos::extractPos(block->getPos()); -// if (dimid != pos->getDimensionId()) -// return Local(); -// bpos = pos->getBlockPos(); -// index = 1; -// } -//#ifdef ENABLE_NUMBERS_AS_POS -// else if (args[0].isNumber()) { -// CHECK_ARGS_COUNT(args, 4); -// CHECK_ARG_TYPE(args[0], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// bpos = {args[0].toInt(), args[1].toInt(), args[2].toInt()}; -// index = 3; -// } -//#endif // ENABLE_NUMBERS_AS_POS -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// if (args.size() > index) { -// CHECK_ARG_TYPE(args[index], ValueKind::kNumber); -// face = (ScriptModuleMinecraft::ScriptFacing)args[index].toInt(); -// } -// // TODO -// return Boolean::newBoolean(sp->simulateDestroyBlock(bpos, face)); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// void simulateDisconnect(); -//Local PlayerClass::simulateDisconnect(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// sp->simulateDisconnect(); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// bool simulateInteract(class Actor&); -//// bool simulateInteract(class BlockPos const&, enum ScriptFacing); -//// bool simulateInteract(); -//Local PlayerClass::simulateInteract(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// if (args.size() == 0) -// return Boolean::newBoolean(sp->simulateInteract()); -// -// if (auto actor = EntityClass::tryExtractActor(args[0])) { -// if (!*actor) -// return Local(); -// return Boolean::newBoolean(sp->simulateInteract(**actor)); -// } -// -// int dimid = sp->getDimensionId(); -// BlockPos bpos; -// size_t index = 0; -// ScriptModuleMinecraft::ScriptFacing face = (ScriptModuleMinecraft::ScriptFacing)0; -// if (IsInstanceOf(args[0])) { -// auto pos = IntPos::extractPos(args[index]); -// if (dimid != pos->getDimensionId()) -// return Local(); -// bpos = pos->getBlockPos(); -// index = 1; -// } else if (IsInstanceOf(args[0])) { -// auto pos = FloatPos::extractPos(args[index]); -// if (dimid != pos->getDimensionId()) -// return Local(); -// bpos = pos->getVec3(); -// index = 1; -// } else if (IsInstanceOf(args[0])) { -// auto block = EngineScope::currentEngine()->getNativeInstance(args[0]); -// auto pos = IntPos::extractPos(block->getPos()); -// if (dimid != pos->getDimensionId()) -// return Local(); -// bpos = pos->getBlockPos(); -// index = 1; -// } -//#ifdef ENABLE_NUMBERS_AS_POS -// else if (args[0].isNumber()) { -// CHECK_ARGS_COUNT(args, 4); -// CHECK_ARG_TYPE(args[0], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// bpos = {args[0].toInt(), args[1].toInt(), args[2].toInt()}; -// index = 3; -// } -//#endif // ENABLE_NUMBERS_AS_POS -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// // TODO -// return Boolean::newBoolean(sp->simulateInteract(bpos, face)); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// bool simulateJump(); -//Local PlayerClass::simulateJump(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// return Boolean::newBoolean(sp->simulateJump()); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// void simulateLocalMove(class Vec3 const&, float); -//Local PlayerClass::simulateLocalMove(const Arguments& args) { -// CHECK_ARGS_COUNT(args, 1); -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// Vec3 target; -// float speed = 1.0f; -// size_t index = 0; -// if (IsInstanceOf(args[0])) { -// auto pos = IntPos::extractPos(args[0]); -// target = pos->getBlockPos().toVec3(); -// index += 1; -// } else if (IsInstanceOf(args[0])) { -// auto pos = FloatPos::extractPos(args[0]); -// target = pos->getVec3(); -// index += 1; -// } -//#ifdef ENABLE_NUMBERS_AS_POS -// else if (args[0].isNumber()) { -// CHECK_ARGS_COUNT(args, 3); -// CHECK_ARG_TYPE(args[0], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// Vec3 pos = Vec3(args[0].asNumber().toFloat(), args[1].asNumber().toFloat(), args[2].asNumber().toFloat()); -// index += 3; -// } -//#endif // ENABLE_NUMBERS_AS_POS -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// -// if (args.size() > index) { -// CHECK_ARG_TYPE(args[index], ValueKind::kNumber); -// speed = args[index].asNumber().toFloat(); -// } -// -// sp->simulateLocalMove(target, speed); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//} -// -//// void simulateWorldMove(class Vec3 const&, float); -//Local PlayerClass::simulateWorldMove(const Arguments& args) { -// CHECK_ARGS_COUNT(args, 1); -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// Vec3 target; -// float speed = 1.0f; -// size_t index = 0; -// if (IsInstanceOf(args[0])) { -// auto pos = IntPos::extractPos(args[0]); -// target = pos->getBlockPos().toVec3(); -// index += 1; -// } else if (IsInstanceOf(args[0])) { -// auto pos = FloatPos::extractPos(args[0]); -// target = pos->getVec3(); -// index += 1; -// } -//#ifdef ENABLE_NUMBERS_AS_POS -// else if (args[0].isNumber()) { -// CHECK_ARGS_COUNT(args, 3); -// CHECK_ARG_TYPE(args[0], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// Vec3 pos = Vec3(args[0].asNumber().toFloat(), args[1].asNumber().toFloat(), args[2].asNumber().toFloat()); -// index += 3; -// } -//#endif // ENABLE_NUMBERS_AS_POS -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// -// if (args.size() > index) { -// CHECK_ARG_TYPE(args[index], ValueKind::kNumber); -// speed = args[index].asNumber().toFloat(); -// } -// -// sp->simulateWorldMove(target, speed); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// void simulateMoveToLocation(class Vec3 const&, float); -//Local PlayerClass::simulateMoveTo(const Arguments& args) { -// CHECK_ARGS_COUNT(args, 1); -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// Vec3 target; -// float speed = 1.0f; -// size_t index = 0; -// if (IsInstanceOf(args[0])) { -// auto pos = IntPos::extractPos(args[0]); -// target = pos->getBlockPos().toVec3(); -// index += 1; -// } else if (IsInstanceOf(args[0])) { -// auto pos = FloatPos::extractPos(args[0]); -// target = pos->getVec3(); -// index += 1; -// } -//#ifdef ENABLE_NUMBERS_AS_POS -// else if (args[0].isNumber()) { -// CHECK_ARGS_COUNT(args, 3); -// CHECK_ARG_TYPE(args[0], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// Vec3 pos = Vec3(args[0].asNumber().toFloat(), args[1].asNumber().toFloat(), args[2].asNumber().toFloat()); -// index += 3; -// } -//#endif // ENABLE_NUMBERS_AS_POS -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// -// if (args.size() > index) { -// CHECK_ARG_TYPE(args[index], ValueKind::kNumber); -// speed = args[index].asNumber().toFloat(); -// } -// -// sp->simulateMoveToLocation(target, speed); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// void simulateLookAt(class Actor&); -//// void simulateLookAt(class BlockPos const&); -//// void simulateLookAt(class Vec3 const&); -//Local PlayerClass::simulateLookAt(const Arguments& args) { -// CHECK_ARGS_COUNT(args, 1); -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// Vec3 target; -// int dimid = sp->getDimensionId(); -// if (IsInstanceOf(args[0])) { -// auto pos = IntPos::extractPos(args[0]); -// auto did = pos->getDimensionId(); -// if (dimid == did || did < 0 || did > 2) { -// sp->simulateLookAt(pos->getBlockPos()); -// return Boolean::newBoolean(true); -// } -// logger.debug("Can't simulate look at other dimension!"); -// return Boolean::newBoolean(false); -// } else if (IsInstanceOf(args[0])) { -// auto pos = FloatPos::extractPos(args[0]); -// auto did = pos->getDimensionId(); -// if (dimid == did || did < 0 || did > 2) { -// sp->simulateLookAt(pos->getVec3()); -// return Boolean::newBoolean(true); -// } -// logger.debug("Can't simulate look at other dimension!"); -// return Boolean::newBoolean(false); -// } else if (IsInstanceOf(args[0])) { -// auto block = EngineScope::currentEngine()->getNativeInstance(args[0]); -// auto pos = IntPos::extractPos(block->getPos()); -// auto did = pos->getDimensionId(); -// if (dimid == did || did < 0 || did > 2) { -// sp->simulateLookAt(pos->getBlockPos()); -// return Boolean::newBoolean(true); -// } -// logger.debug("Can't simulate look at other dimension!"); -// return Boolean::newBoolean(false); -// } else if (auto actor = EntityClass::tryExtractActor(args[0])) { -// if (!*actor) -// return Local(); -// sp->simulateLookAt(**actor); -// return Boolean::newBoolean(true); -// } -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// void simulateSetBodyRotation(float); -//Local PlayerClass::simulateSetBodyRotation(const Arguments& args) { -// CHECK_ARGS_COUNT(args, 1); -// CHECK_ARG_TYPE(args[0], ValueKind::kNumber); -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// sp->simulateSetBodyRotation(args[0].asNumber().toFloat()); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//} -// -// -//// void simulateWorldMove(class Vec3 const&, float); -//// void simulateMoveToLocation(class Vec3 const&, float); -// -//inline Local NavigateResultToObject(ScriptModuleMinecraft::ScriptNavigationResult const& res) { -// auto obj = Object::newObject(); -// obj.set(String::newString("isFullPath"), Boolean::newBoolean(res.mIsFullPath)); -// auto path = Array::newArray(); -// for (auto& pos : res.mPath) { -// path.add(Array::newArray({Number::newNumber(pos.x), Number::newNumber(pos.y), Number::newNumber(pos.z)})); -// } -// obj.set(String::newString("path"), path); -// return obj; -//} -//// struct ScriptNavigationResult simulateNavigateToEntity(class Actor&, float); -//// struct ScriptNavigationResult simulateNavigateToLocation(class Vec3 const&, float); -//// void simulateNavigateToLocations(std::vector&&, float); -//Local PlayerClass::simulateNavigateTo(const Arguments& args) { -// CHECK_ARGS_COUNT(args, 1); -// -// try { -// -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// float speed = 1.f; -// if (args.size() > 1) { -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// speed = args[1].asNumber().toFloat(); -// } -// if (args[0].isArray()) { -// auto arr = args[0].asArray(); -// std::vector path; -// for (size_t index = 0; index < arr.size(); ++index) { -// if (IsInstanceOf(arr.get(index))) -// path.emplace_back(IntPos::extractPos(arr.get(index))->getBlockPos().center()); -// else if (IsInstanceOf(arr.get(index))) -// path.emplace_back(FloatPos::extractPos(arr.get(index))->getVec3()); -// else if (arr.get(index).isArray()) { -// auto posArr = arr.get(index).asArray(); -// if (posArr.size() != 3 || !posArr.get(0).isNumber()) { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// path.emplace_back(posArr.get(0).asNumber().toFloat(), posArr.get(1).asNumber().toFloat(), posArr.get(2).asNumber().toFloat()); -// } else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// } -// sp->simulateNavigateToLocations(std::move(path), speed); -// return Boolean::newBoolean(true); -// } else if (auto actor = EntityClass::tryExtractActor(args[0])) { -// if (!*actor) -// return Local(); -// auto res = sp->simulateNavigateToEntity(**actor, speed); -// return NavigateResultToObject(res); -// } else if (IsInstanceOf(args[0]) || IsInstanceOf(args[0])) { -// Vec3 pos = IsInstanceOf(args[0]) ? IntPos::extractPos(args[0])->getBlockPos().bottomCenter() : FloatPos::extractPos(args[0])->getVec3(); -// auto res = sp->simulateNavigateToLocation(pos, speed); -// return NavigateResultToObject(res); -// } -//#ifdef ENABLE_NUMBERS_AS_POS -// else if (args[0].isNumber()) { -// CHECK_ARGS_COUNT(args, 3); -// CHECK_ARG_TYPE(args[0], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[1], ValueKind::kNumber); -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// if (args.size() > 3) { -// CHECK_ARG_TYPE(args[3], ValueKind::kNumber); -// speed = args[3].asNumber().toFloat(); -// } -// Vec3 pos = Vec3(args[0].asNumber().toFloat(), args[1].asNumber().toFloat(), args[2].asNumber().toFloat()); -// auto res = sp->simulateNavigateToLocation(pos, speed); -// return NavigateResultToObject(res); -// } -//#endif // ENABLE_NUMBERS_AS_POS -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -// -//// bool simulateSetItem(class ItemStack&, bool, int); -// -// -//// bool simulateUseItem(); -//// bool simulateUseItemInSlot(int); -//// bool simulateUseItem(class ItemStack&); -//// bool simulateUseItemInSlotOnBlock(int, class BlockPos const&, enum ScriptFacing, class Vec3 const&); -//// bool simulateUseItemOnBlock(class ItemStack&, class BlockPos const&, enum ScriptFacing, class Vec3 const&); -//Local PlayerClass::simulateUseItem(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// -// if (args.size() == 0) -// return Boolean::newBoolean(sp->simulateUseItem()); -// -// int slot = -1; -// ItemStack* item = nullptr; -// if (args[0].isNumber()) -// slot = args[0].toInt(); -// else if (IsInstanceOf(args[0])) -// item = ItemClass::extract(args[0]); -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// if (args.size() == 1) { -// if (item) -// return Boolean::newBoolean(sp->simulateUseItem(*item)); -// else -// return Boolean::newBoolean(sp->simulateUseItemInSlot(slot)); -// } -// -// BlockPos bpos; -// ScriptModuleMinecraft::ScriptFacing face = (ScriptModuleMinecraft::ScriptFacing)0; -// Vec3 relativePos = {0.5, 0.5, 0.5}; -// if (IsInstanceOf(args[1])) -// bpos = IntPos::extractPos(args[1])->getBlockPos(); -// else if (IsInstanceOf(args[1])) -// bpos = FloatPos::extractPos(args[1])->getVec3(); -// else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// if (args.size() > 2) { -// CHECK_ARG_TYPE(args[2], ValueKind::kNumber); -// face = (ScriptModuleMinecraft::ScriptFacing)args[2].toInt(); -// if (args.size() > 3) { -// if (IsInstanceOf(args[3])) { -// relativePos = FloatPos::extractPos(args[3])->getVec3(); -// } else { -// LOG_WRONG_ARG_TYPE(); -// return Local(); -// } -// } -// } -// if (item) -// return Boolean::newBoolean(sp->simulateUseItemOnBlock(*item, bpos, face, relativePos)); -// else -// return Boolean::newBoolean(sp->simulateUseItemInSlotOnBlock(slot, bpos, face, relativePos)); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//// void simulateStopDestroyingBlock(); -//// void simulateStopInteracting(); -//// void simulateStopMoving(); -//// void simulateStopUsingItem(); -//Local PlayerClass::simulateStopDestroyingBlock(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// sp->simulateStopDestroyingBlock(); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//Local PlayerClass::simulateStopInteracting(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// sp->simulateStopInteracting(); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//Local PlayerClass::simulateStopMoving(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// sp->simulateStopMoving(); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//Local PlayerClass::simulateStopUsingItem(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// sp->simulateStopUsingItem(); -// return Boolean::newBoolean(true); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//}; -// -//Local PlayerClass::simulateStopSneaking(const Arguments& args) { -// try { -// auto sp = asSimulatedPlayer(); -// if (!sp) -// return Local(); -// -// return Boolean::newBoolean(sp->simulateStopSneaking()); -// } -// CATCH("Fail in " __FUNCTION__ "!") -//} diff --git a/ScriptEngine/CMake/ScriptEngine-Lua/CMakeLists.txt b/ScriptEngine/CMake/ScriptEngine-Lua/CMakeLists.txt index b44505f..6c4abd7 100644 --- a/ScriptEngine/CMake/ScriptEngine-Lua/CMakeLists.txt +++ b/ScriptEngine/CMake/ScriptEngine-Lua/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.21) -project(LiteLoader.Lua) +project(ScriptEngine-Lua) set(CMAKE_CXX_STANDARD 20) set(CMAKE_BUILD_TYPE Release) @@ -9,3 +9,14 @@ set(SCRIPTX_BACKEND Lua) set(LLSE_BACKEND_LIBRARY Lua) include(../../CMakeLists.txt) + +target_include_directories(${PROJECT_NAME} PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/Lua/) + +# copy target DLL and PDB to output directory +add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/LiteLoader.Lua.dll + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/pdb/LiteLoader.Lua.pdb + COMMENT "Copying ${PROJECT_NAME} DLL and PDB to output directory" + VERBATIM +) diff --git a/ScriptEngine/CMake/ScriptEngine-NodeJs/CMakeLists.txt b/ScriptEngine/CMake/ScriptEngine-NodeJs/CMakeLists.txt index 1a9d06e..3d64299 100644 --- a/ScriptEngine/CMake/ScriptEngine-NodeJs/CMakeLists.txt +++ b/ScriptEngine/CMake/ScriptEngine-NodeJs/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.21) -project(LiteLoader.NodeJs) +project(ScriptEngine-NodeJs) set(CMAKE_CXX_STANDARD 17) set(CMAKE_BUILD_TYPE Release) @@ -9,3 +9,18 @@ set(SCRIPTX_BACKEND V8) set(LLSE_BACKEND_LIBRARY NodeJs) include(../../CMakeLists.txt) + +target_include_directories( + ${PROJECT_NAME} + PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/NodeJs + PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/NodeJs/v8 +) + +# copy target DLL and PDB to output directory +add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/LiteLoader.NodeJs.dll + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/pdb/LiteLoader.NodeJs.pdb + COMMENT "Copying ${PROJECT_NAME} DLL and PDB to output directory" + VERBATIM +) diff --git a/ScriptEngine/CMake/ScriptEngine-QuickJs/CMakeLists.txt b/ScriptEngine/CMake/ScriptEngine-QuickJs/CMakeLists.txt index cf7e6d5..1036adc 100644 --- a/ScriptEngine/CMake/ScriptEngine-QuickJs/CMakeLists.txt +++ b/ScriptEngine/CMake/ScriptEngine-QuickJs/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.21) -project(LiteLoader.Js) +project(ScriptEngine-QuickJs) set(CMAKE_CXX_STANDARD 20) set(CMAKE_BUILD_TYPE Release) @@ -9,3 +9,14 @@ set(SCRIPTX_BACKEND QuickJs) set(LLSE_BACKEND_LIBRARY QuickJs) include(../../CMakeLists.txt) + +target_include_directories(${PROJECT_NAME} PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/QuickJs/) + +# copy target DLL and PDB to output directory +add_custom_command( + TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/output/plugins/LiteLoader/LiteLoader.Js.dll + COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/pdb/LiteLoader.Js.pdb + COMMENT "Copying ${PROJECT_NAME} DLL and PDB to output directory" + VERBATIM +) diff --git a/ScriptEngine/CMakeLists.txt b/ScriptEngine/CMakeLists.txt index d84e9a5..fde15c3 100644 --- a/ScriptEngine/CMakeLists.txt +++ b/ScriptEngine/CMakeLists.txt @@ -14,25 +14,13 @@ endif () set(SCRIPTENGINE_DIR ${CMAKE_CURRENT_LIST_DIR}) -set(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/x64) - -set(TARGET_DIR ${CMAKE_SOURCE_DIR}/x64/Release) - -file(GLOB_RECURSE SRC_FILES - ${SCRIPTENGINE_DIR}/Main/*.cpp - ${SCRIPTENGINE_DIR}/Main/*.hpp - ${SCRIPTENGINE_DIR}/Main/*.h - ${SCRIPTENGINE_DIR}/API/*.cpp - ${SCRIPTENGINE_DIR}/API/*.hpp - ${SCRIPTENGINE_DIR}/API/*.h - ${SCRIPTENGINE_DIR}/Engine/*.cpp - ${SCRIPTENGINE_DIR}/Engine/*.hpp - ${SCRIPTENGINE_DIR}/Engine/*.h - ${SCRIPTENGINE_DIR}/Tools/*.cpp - ${SCRIPTENGINE_DIR}/Tools/*.hpp - ${SCRIPTENGINE_DIR}/Tools/*.h - ${SCRIPTENGINE_DIR}/Resource/*.rc - ${SCRIPTENGINE_DIR}/Resource/*.h +file( + GLOB_RECURSE SRC_FILES + ${SCRIPTENGINE_DIR}/src/*.cpp + ${SCRIPTENGINE_DIR}/src/*.hpp + ${SCRIPTENGINE_DIR}/src/*.h + ${SCRIPTENGINE_DIR}/src/*.inc + ${SCRIPTENGINE_DIR}/src/*.rc ) add_definitions( @@ -41,11 +29,14 @@ add_definitions( -D_WINDLL -D_UNICODE -DUNICODE -D "LLSE_BACKEND_${LLSE_BACKEND}" -DCMAKE ) +# Replace Compile Flag /EHsc to /EHa +string(REPLACE "/EHsc" "/EHa" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + add_compile_options( /permissive- /MP /GS /GL /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /sdl /Zc:inline /fp:precise /errorReport:prompt /WX- /Zc:forScope /Gd /Oi /MD /FC - /EHa /nologo /diagnostics:column /utf-8 + /nologo /diagnostics:column /utf-8 ) add_link_options( @@ -58,39 +49,30 @@ add_link_options( add_library(${PROJECT_NAME} SHARED ${SRC_FILES}) -include_directories(${SCRIPTENGINE_DIR}/) -include_directories(${SCRIPTENGINE_DIR}/Main) -include_directories(${SCRIPTENGINE_DIR}/..) -include_directories(${LiteLoader_SOURCE_DIR}/Header) -include_directories(${LiteLoader_SOURCE_DIR}/Header/third-party) -include_directories(${SCRIPTENGINE_DIR}/third-party) -include_directories(${SCRIPTENGINE_DIR}/third-party/Lua/include) -include_directories(${SCRIPTENGINE_DIR}/third-party/NodeJs/include) -include_directories(${SCRIPTENGINE_DIR}/third-party/QuickJs/include) -include_directories(${SCRIPTENGINE_DIR}/third-party/ScriptX/src/include/ScriptX) -include_directories(${SCRIPTENGINE_DIR}/third-party/ScriptX/src/include) -include_directories(${SCRIPTENGINE_DIR}/third-party/NodeJs/include) -include_directories(${SCRIPTENGINE_DIR}/third-party/NodeJs/include/v8) -include_directories(${SCRIPTENGINE_DIR}/third-party/gsl) +target_include_directories( + ${PROJECT_NAME} + PRIVATE + ${CMAKE_SOURCE_DIR} + ${LiteLoader_SOURCE_DIR}/include/ + ${LiteLoader_SOURCE_DIR}/third-party/include + ${SCRIPTENGINE_DIR}/src + ${SCRIPTENGINE_DIR}/third-party/include + ${SCRIPTENGINE_DIR}/third-party/ScriptX/src/include +) -link_directories(${SCRIPTENGINE_DIR}/) -link_directories(${CMAKE_SOURCE_DIR}/x64/Release/) +file( + GLOB_RECURSE SCRIPTENGINE_THIRD_PARTY_LIBS + ${SCRIPTENGINE_DIR}/third-party/lib/*.lib + ${SCRIPTENGINE_DIR}/third-party/backend/lib/${LLSE_BACKEND_LIBRARY}/*.lib +) -add_library(base64 STATIC IMPORTED) - -target_link_libraries(${PROJECT_NAME} LiteLoader ScriptX-${LLSE_BACKEND_LIBRARY} - "${CMAKE_SOURCE_DIR}/LiteLoader/Lib/third-party/openssl/libcrypto.lib" - "${CMAKE_SOURCE_DIR}/LiteLoader/Lib/third-party/openssl/libssl.lib" - "${SCRIPTENGINE_DIR}/third-party/dyncall/lib/libdyncall_s.lib" - "${SCRIPTENGINE_DIR}/third-party/dyncall/lib/libdyncallback_s.lib" - "${SCRIPTENGINE_DIR}/third-party/dyncall/lib/libdynload_s.lib" - "${SCRIPTENGINE_DIR}/third-party/LightWebSocketClient/lib/LightWSClient.lib" - "${SCRIPTENGINE_DIR}/third-party/NodeJs/lib/libnode.lib" - "${SCRIPTENGINE_DIR}/third-party/QuickJs/lib/quickjs.lib" - "${SCRIPTENGINE_DIR}/third-party/Lua/lib/lua.lib" - "${SCRIPTENGINE_DIR}/third-party/nbt-cpp/lib/nbt-cpp.lib" +target_link_libraries( + ${PROJECT_NAME} LiteLoader ScriptX-${LLSE_BACKEND_LIBRARY} + "${LiteLoader_SOURCE_DIR}/third-party/lib/openssl/libcrypto.lib" + "${LiteLoader_SOURCE_DIR}/third-party/lib/openssl/libssl.lib" + ${SCRIPTENGINE_THIRD_PARTY_LIBS} # Please make sure that the BDS APIs ImportLibrary is at the bottom of the list to ensure proper linking. - "${LiteLoader_SOURCE_DIR}/Lib/bedrock_server_api.lib" - "${LiteLoader_SOURCE_DIR}/Lib/bedrock_server_var.lib" + "${LiteLoader_SOURCE_DIR}/lib/bedrock_server_api.lib" + "${LiteLoader_SOURCE_DIR}/lib/bedrock_server_var.lib" SymDBHelper ) \ No newline at end of file diff --git a/ScriptEngine/Resource/ScriptEngine.rc b/ScriptEngine/Resource/ScriptEngine.rc deleted file mode 100644 index 3c5131f..0000000 --- a/ScriptEngine/Resource/ScriptEngine.rc +++ /dev/null @@ -1,111 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" -#include "../LiteLoader/Main/Version.h" -#include "Configs.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// ����(���壬�й�) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED -#pragma code_page(936) - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "#include ""../LiteLoader/Main/Version.h""\r\n" - "#include ""Configs.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - -#ifdef LLSE_BACKEND_QUICKJS -#define LLSE_OUTPUT_FILE_NAME "LiteLoader.Js.dll" -#define LLSE_FILE_DESCRIPTION "A QuickJs Script Plugin Engine for LiteLoader" -#elif defined LLSE_BACKEND_LUA -#define LLSE_OUTPUT_FILE_NAME "LiteLoader.Lua.dll" -#define LLSE_FILE_DESCRIPTION "A Lua Script Plugin Engine for LiteLoader" -#elif defined LLSE_BACKEND_NODEJS -#define LLSE_OUTPUT_FILE_NAME "LiteLoader.NodeJs.dll" -#define LLSE_FILE_DESCRIPTION "A NodeJs Script Plugin Engine for LiteLoader" -#endif - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - - -VS_VERSION_INFO VERSIONINFO - FILEVERSION LITELOADER_VERSION_MAJOR,LITELOADER_VERSION_MINOR,LITELOADER_VERSION_REVISION,LITELOADER_VERSION_ACTIONS - PRODUCTVERSION LITELOADER_VERSION_MAJOR,LITELOADER_VERSION_MINOR,LITELOADER_VERSION_REVISION,LITELOADER_VERSION_ACTIONS - FILEFLAGSMASK 0x3fL - FILEFLAGS LITELOADER_FILE_VERSION_FLAG - FILEOS 0x40004L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "080404b0" - BEGIN - VALUE "CompanyName", "LiteLoaderDev" - VALUE "FileDescription", LLSE_FILE_DESCRIPTION - VALUE "FileVersion", LITELOADER_FILE_VERSION_STRING - VALUE "InternalName", LLSE_OUTPUT_FILE_NAME - VALUE "LegalCopyright", "LiteLoader Developer" - VALUE "OriginalFilename", LLSE_OUTPUT_FILE_NAME - VALUE "ProductName", "LiteLoader Script Engine For BDS" - VALUE "ProductVersion", LITELOADER_FILE_VERSION_STRING - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x804, 1200 - END -END - -#endif // ����(���壬�й�) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/ScriptEngine/Resource/resource.h b/ScriptEngine/Resource/resource.h deleted file mode 100644 index 136f81e..0000000 --- a/ScriptEngine/Resource/resource.h +++ /dev/null @@ -1,13 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by LiteLoader.rc - -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 101 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif - diff --git a/ScriptEngine/BaseLib/BaseLib.js b/ScriptEngine/assets/BaseLib.js similarity index 100% rename from ScriptEngine/BaseLib/BaseLib.js rename to ScriptEngine/assets/BaseLib.js diff --git a/ScriptEngine/BaseLib/BaseLib.lua b/ScriptEngine/assets/BaseLib.lua similarity index 100% rename from ScriptEngine/BaseLib/BaseLib.lua rename to ScriptEngine/assets/BaseLib.lua diff --git a/ScriptEngine/API/APIHelp.cpp b/ScriptEngine/src/api/APIHelp.cpp similarity index 97% rename from ScriptEngine/API/APIHelp.cpp rename to ScriptEngine/src/api/APIHelp.cpp index e5bcfd5..674ee30 100644 --- a/ScriptEngine/API/APIHelp.cpp +++ b/ScriptEngine/src/api/APIHelp.cpp @@ -5,23 +5,23 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include "BaseAPI.h" +#include "BlockAPI.h" +#include "EntityAPI.h" +#include "ItemAPI.h" +#include "PlayerAPI.h" +#include "DeviceAPI.h" +#include "ItemAPI.h" +#include "EntityAPI.h" +#include "ContainerAPI.h" +#include "NbtAPI.h" +#include "GuiAPI.h" +#include "DataAPI.h" +#include "DatabaseAPI.h" +#include "PlayerAPI.h" +#include "NetworkAPI.h" +#include

+#include #include "APIHelp.h" #include "NativeAPI.h" diff --git a/ScriptEngine/API/APIHelp.h b/ScriptEngine/src/api/APIHelp.h similarity index 96% rename from ScriptEngine/API/APIHelp.h rename to ScriptEngine/src/api/APIHelp.h index 4f3ae14..74150c8 100644 --- a/ScriptEngine/API/APIHelp.h +++ b/ScriptEngine/src/api/APIHelp.h @@ -1,36 +1,19 @@ #pragma once -#include -using script::Arguments; -using script::Array; -using script::Boolean; -using script::ByteBuffer; -using script::ClassDefine; -using script::defineClass; -using script::EngineScope; -using script::Exception; -using script::ExitEngineScope; -using script::Function; -using script::Local; -using script::Number; -using script::Object; -using script::ScriptClass; -using script::ScriptEngine; -using script::ScriptEngineImpl; -using script::selectOverloadedFunc; -using script::String; -using script::Value; -using script::ValueKind; -#include -#include -#include -#include #include #include #include #include + #include +#include + +#include +#include +#include
+#include + // 输出异常信息 inline void PrintException(const script::Exception& e) { ostringstream sout; diff --git a/ScriptEngine/API/BaseAPI.cpp b/ScriptEngine/src/api/BaseAPI.cpp similarity index 96% rename from ScriptEngine/API/BaseAPI.cpp rename to ScriptEngine/src/api/BaseAPI.cpp index e279025..de2090c 100644 --- a/ScriptEngine/API/BaseAPI.cpp +++ b/ScriptEngine/src/api/BaseAPI.cpp @@ -1,12 +1,15 @@ #include "BaseAPI.h" -#include "APIHelp.h" -#include -#include -#include -#include -#include "McAPI.h" + #include -#include + +#include +#include +#include +#include + +#include
+#include "APIHelp.h" +#include "McAPI.h" ///////////////////// Enum ////////////////////// ClassDefine DamageCauseEnumBuilder = EnumDefineBuilder::build("DamageCause"); @@ -241,14 +244,14 @@ Local McClass::newFloatPos(const Arguments& args) { Local McClass::getBDSVersion(const Arguments& args) { try { - return String::newString(LL::getBdsVersion()); + return String::newString(ll::getBdsVersion()); } CATCH("Fail in GetBDSVersion!") } Local McClass::getServerProtocolVersion(const Arguments& args) { try { - return Number::newNumber(LL::getServerProtocolVersion()); + return Number::newNumber(ll::getServerProtocolVersion()); } CATCH("Fail in GetServerProtocolVersion!") } \ No newline at end of file diff --git a/ScriptEngine/API/BaseAPI.h b/ScriptEngine/src/api/BaseAPI.h similarity index 97% rename from ScriptEngine/API/BaseAPI.h rename to ScriptEngine/src/api/BaseAPI.h index 17188b7..c83f983 100644 --- a/ScriptEngine/API/BaseAPI.h +++ b/ScriptEngine/src/api/BaseAPI.h @@ -1,6 +1,6 @@ #pragma once #include "APIHelp.h" -#include +#include
#include class BlockSource; diff --git a/ScriptEngine/API/BlockAPI.cpp b/ScriptEngine/src/api/BlockAPI.cpp similarity index 98% rename from ScriptEngine/API/BlockAPI.cpp rename to ScriptEngine/src/api/BlockAPI.cpp index 5676c8f..59cd34e 100644 --- a/ScriptEngine/API/BlockAPI.cpp +++ b/ScriptEngine/src/api/BlockAPI.cpp @@ -7,12 +7,12 @@ #include "BlockEntityAPI.h" #include "NbtAPI.h" #include "NativeAPI.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include //////////////////// Class Definition //////////////////// diff --git a/ScriptEngine/API/BlockAPI.h b/ScriptEngine/src/api/BlockAPI.h similarity index 93% rename from ScriptEngine/API/BlockAPI.h rename to ScriptEngine/src/api/BlockAPI.h index 41d3567..c7e9951 100644 --- a/ScriptEngine/API/BlockAPI.h +++ b/ScriptEngine/src/api/BlockAPI.h @@ -1,7 +1,7 @@ #pragma once #include "APIHelp.h" -#include -#include +#include +#include
#include diff --git a/ScriptEngine/API/BlockEntityAPI.cpp b/ScriptEngine/src/api/BlockEntityAPI.cpp similarity index 96% rename from ScriptEngine/API/BlockEntityAPI.cpp rename to ScriptEngine/src/api/BlockEntityAPI.cpp index 9d9bcbd..a3742eb 100644 --- a/ScriptEngine/API/BlockEntityAPI.cpp +++ b/ScriptEngine/src/api/BlockEntityAPI.cpp @@ -4,9 +4,9 @@ #include "BlockEntityAPI.h" #include "NbtAPI.h" #include "NativeAPI.h" -#include -#include -#include +#include
+#include +#include //////////////////// Class Definition //////////////////// diff --git a/ScriptEngine/API/BlockEntityAPI.h b/ScriptEngine/src/api/BlockEntityAPI.h similarity index 100% rename from ScriptEngine/API/BlockEntityAPI.h rename to ScriptEngine/src/api/BlockEntityAPI.h diff --git a/ScriptEngine/API/CommandAPI.cpp b/ScriptEngine/src/api/CommandAPI.cpp similarity index 98% rename from ScriptEngine/API/CommandAPI.cpp rename to ScriptEngine/src/api/CommandAPI.cpp index 28d8c02..f4696da 100644 --- a/ScriptEngine/API/CommandAPI.cpp +++ b/ScriptEngine/src/api/CommandAPI.cpp @@ -6,23 +6,23 @@ #include "BlockAPI.h" #include "CommandOriginAPI.h" #include "CommandOutputAPI.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include -#include +#include
#include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include "BaseAPI.h" +#include "EntityAPI.h" #include -#include +#include //////////////////// Class Definition //////////////////// diff --git a/ScriptEngine/API/CommandAPI.h b/ScriptEngine/src/api/CommandAPI.h similarity index 98% rename from ScriptEngine/API/CommandAPI.h rename to ScriptEngine/src/api/CommandAPI.h index 4d35ae9..63cc5da 100644 --- a/ScriptEngine/API/CommandAPI.h +++ b/ScriptEngine/src/api/CommandAPI.h @@ -1,6 +1,6 @@ #pragma once #include "CommandCompatibleAPI.h" -#include +#include extern ClassDefine ParamTypeStaticBuilder; extern ClassDefine PermissionStaticBuilder; diff --git a/ScriptEngine/API/CommandCompatibleAPI.cpp b/ScriptEngine/src/api/CommandCompatibleAPI.cpp similarity index 96% rename from ScriptEngine/API/CommandCompatibleAPI.cpp rename to ScriptEngine/src/api/CommandCompatibleAPI.cpp index 98d3145..1801bfe 100644 --- a/ScriptEngine/API/CommandCompatibleAPI.cpp +++ b/ScriptEngine/src/api/CommandCompatibleAPI.cpp @@ -2,15 +2,15 @@ #include "APIHelp.h" #include "McAPI.h" #include "PlayerAPI.h" -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include
#include -#include +#include
#include #include using namespace std; diff --git a/ScriptEngine/API/CommandCompatibleAPI.h b/ScriptEngine/src/api/CommandCompatibleAPI.h similarity index 100% rename from ScriptEngine/API/CommandCompatibleAPI.h rename to ScriptEngine/src/api/CommandCompatibleAPI.h diff --git a/ScriptEngine/API/CommandOriginAPI.cpp b/ScriptEngine/src/api/CommandOriginAPI.cpp similarity index 93% rename from ScriptEngine/API/CommandOriginAPI.cpp rename to ScriptEngine/src/api/CommandOriginAPI.cpp index f54b5f6..6989768 100644 --- a/ScriptEngine/API/CommandOriginAPI.cpp +++ b/ScriptEngine/src/api/CommandOriginAPI.cpp @@ -10,14 +10,14 @@ #include "McAPI.h" #include "ContainerAPI.h" #include "NbtAPI.h" -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #include //////////////////// Class Definition //////////////////// diff --git a/ScriptEngine/API/CommandOriginAPI.h b/ScriptEngine/src/api/CommandOriginAPI.h similarity index 95% rename from ScriptEngine/API/CommandOriginAPI.h rename to ScriptEngine/src/api/CommandOriginAPI.h index 0688034..2df0cd0 100644 --- a/ScriptEngine/API/CommandOriginAPI.h +++ b/ScriptEngine/src/api/CommandOriginAPI.h @@ -1,6 +1,6 @@ #pragma once #include "APIHelp.h" -#include +#include class CommandOriginClass; extern ClassDefine OriginTypeStaticBuilder; diff --git a/ScriptEngine/API/CommandOutputAPI.cpp b/ScriptEngine/src/api/CommandOutputAPI.cpp similarity index 100% rename from ScriptEngine/API/CommandOutputAPI.cpp rename to ScriptEngine/src/api/CommandOutputAPI.cpp diff --git a/ScriptEngine/API/CommandOutputAPI.h b/ScriptEngine/src/api/CommandOutputAPI.h similarity index 98% rename from ScriptEngine/API/CommandOutputAPI.h rename to ScriptEngine/src/api/CommandOutputAPI.h index 0d808ed..bd41dbf 100644 --- a/ScriptEngine/API/CommandOutputAPI.h +++ b/ScriptEngine/src/api/CommandOutputAPI.h @@ -1,6 +1,6 @@ #pragma once #include "APIHelp.h" -#include +#include class CommandOutputClass; extern ClassDefine CommandOutputClassBuilder; diff --git a/ScriptEngine/API/ContainerAPI.cpp b/ScriptEngine/src/api/ContainerAPI.cpp similarity index 98% rename from ScriptEngine/API/ContainerAPI.cpp rename to ScriptEngine/src/api/ContainerAPI.cpp index db7ef6b..476d870 100644 --- a/ScriptEngine/API/ContainerAPI.cpp +++ b/ScriptEngine/src/api/ContainerAPI.cpp @@ -2,8 +2,8 @@ #include "APIHelp.h" #include "ItemAPI.h" #include "NativeAPI.h" -#include -#include +#include +#include using namespace std; //////////////////// Class Definition //////////////////// diff --git a/ScriptEngine/API/ContainerAPI.h b/ScriptEngine/src/api/ContainerAPI.h similarity index 100% rename from ScriptEngine/API/ContainerAPI.h rename to ScriptEngine/src/api/ContainerAPI.h diff --git a/ScriptEngine/API/DataAPI.cpp b/ScriptEngine/src/api/DataAPI.cpp similarity index 99% rename from ScriptEngine/API/DataAPI.cpp rename to ScriptEngine/src/api/DataAPI.cpp index 6cecbea..c796872 100644 --- a/ScriptEngine/API/DataAPI.cpp +++ b/ScriptEngine/src/api/DataAPI.cpp @@ -5,13 +5,13 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include
#include using namespace std; diff --git a/ScriptEngine/API/DataAPI.h b/ScriptEngine/src/api/DataAPI.h similarity index 97% rename from ScriptEngine/API/DataAPI.h rename to ScriptEngine/src/api/DataAPI.h index 8c88375..d54f4de 100644 --- a/ScriptEngine/API/DataAPI.h +++ b/ScriptEngine/src/api/DataAPI.h @@ -2,9 +2,9 @@ #include "APIHelp.h" #include #include -#include -#include -#include +#include +#include +#include //////////////////// Data Static //////////////////// diff --git a/ScriptEngine/API/DatabaseAPI.cpp b/ScriptEngine/src/api/DatabaseAPI.cpp similarity index 100% rename from ScriptEngine/API/DatabaseAPI.cpp rename to ScriptEngine/src/api/DatabaseAPI.cpp diff --git a/ScriptEngine/API/DatabaseAPI.h b/ScriptEngine/src/api/DatabaseAPI.h similarity index 97% rename from ScriptEngine/API/DatabaseAPI.h rename to ScriptEngine/src/api/DatabaseAPI.h index 841d0ee..bba0d54 100644 --- a/ScriptEngine/API/DatabaseAPI.h +++ b/ScriptEngine/src/api/DatabaseAPI.h @@ -1,7 +1,7 @@ #pragma once #include "APIHelp.h" -#include -#include +#include +#include //////////////////// Classes //////////////////// diff --git a/ScriptEngine/API/DeviceAPI.cpp b/ScriptEngine/src/api/DeviceAPI.cpp similarity index 97% rename from ScriptEngine/API/DeviceAPI.cpp rename to ScriptEngine/src/api/DeviceAPI.cpp index ac4232f..8ced5c7 100644 --- a/ScriptEngine/API/DeviceAPI.cpp +++ b/ScriptEngine/src/api/DeviceAPI.cpp @@ -1,9 +1,9 @@ #include "APIHelp.h" #include "DeviceAPI.h" #include -#include -#include -#include +#include +#include +#include using namespace std; diff --git a/ScriptEngine/API/DeviceAPI.h b/ScriptEngine/src/api/DeviceAPI.h similarity index 100% rename from ScriptEngine/API/DeviceAPI.h rename to ScriptEngine/src/api/DeviceAPI.h diff --git a/ScriptEngine/API/EntityAPI.cpp b/ScriptEngine/src/api/EntityAPI.cpp similarity index 99% rename from ScriptEngine/API/EntityAPI.cpp rename to ScriptEngine/src/api/EntityAPI.cpp index 243373c..65c235b 100644 --- a/ScriptEngine/API/EntityAPI.cpp +++ b/ScriptEngine/src/api/EntityAPI.cpp @@ -9,12 +9,12 @@ #include "ContainerAPI.h" #include "NbtAPI.h" #include "NativeAPI.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include //////////////////// Class Definition //////////////////// @@ -321,7 +321,7 @@ Local EntityClass::isAngry() { CATCH("Fail in isAngry!") } -#include +#include Local EntityClass::getName() { try { Actor* entity = get(); diff --git a/ScriptEngine/API/EntityAPI.h b/ScriptEngine/src/api/EntityAPI.h similarity index 100% rename from ScriptEngine/API/EntityAPI.h rename to ScriptEngine/src/api/EntityAPI.h diff --git a/ScriptEngine/API/EventAPI.cpp b/ScriptEngine/src/api/EventAPI.cpp similarity index 98% rename from ScriptEngine/API/EventAPI.cpp rename to ScriptEngine/src/api/EventAPI.cpp index f3c5b1a..b320d66 100644 --- a/ScriptEngine/API/EventAPI.cpp +++ b/ScriptEngine/src/api/EventAPI.cpp @@ -8,14 +8,14 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include
+#include +#include +#include +#include +#include
#include "APIHelp.h" -#include +#include
#include "BaseAPI.h" #include "BlockAPI.h" #include "GuiAPI.h" @@ -23,21 +23,21 @@ #include "ItemAPI.h" #include "EntityAPI.h" #include "PlayerAPI.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include
+#include
+#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using namespace std; //////////////////// Listeners //////////////////// @@ -1141,7 +1141,7 @@ void InitBasicEventListeners() { // Plugin Hot Management Event::ScriptPluginManagerEvent::subscribe_ref([](ScriptPluginManagerEvent& ev) { - // if (!LL::isDebugMode()) + // if (!ll::isDebugMode()) // return false; switch (ev.operation) { diff --git a/ScriptEngine/API/EventAPI.h b/ScriptEngine/src/api/EventAPI.h similarity index 92% rename from ScriptEngine/API/EventAPI.h rename to ScriptEngine/src/api/EventAPI.h index c376f4a..8fa32ba 100644 --- a/ScriptEngine/API/EventAPI.h +++ b/ScriptEngine/src/api/EventAPI.h @@ -1,7 +1,7 @@ #pragma once #include "APIHelp.h" -#include +#include
//////////////////// Funcs //////////////////// diff --git a/ScriptEngine/API/FileSystemAPI.cpp b/ScriptEngine/src/api/FileSystemAPI.cpp similarity index 98% rename from ScriptEngine/API/FileSystemAPI.cpp rename to ScriptEngine/src/api/FileSystemAPI.cpp index 4afc75d..55d0bc8 100644 --- a/ScriptEngine/API/FileSystemAPI.cpp +++ b/ScriptEngine/src/api/FileSystemAPI.cpp @@ -1,12 +1,12 @@ #include "APIHelp.h" #include "FileSystemAPI.h" -#include -#include -#include +#include +#include +#include #include #include #include -#include +#include using namespace std::filesystem; using namespace std; @@ -233,7 +233,7 @@ Local FileClass::read(const Arguments& args) { pool.enqueue([cnt, fp{&file}, isBinary{isBinary}, lock{&lock}, callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}]() { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -267,7 +267,7 @@ Local FileClass::readLine(const Arguments& args) { pool.enqueue([fp{&file}, lock{&lock}, callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}]() { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -297,7 +297,7 @@ Local FileClass::readAll(const Arguments& args) { pool.enqueue([fp{&file}, isBinary{isBinary}, lock{&lock}, callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}]() { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -342,7 +342,7 @@ Local FileClass::write(const Arguments& args) { pool.enqueue([fp{&file}, lock{&lock}, data{std::move(data)}, isString, callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}]() { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -383,7 +383,7 @@ Local FileClass::writeLine(const Arguments& args) { pool.enqueue([fp{&file}, lock{&lock}, data{std::move(data)}, callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}]() { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; diff --git a/ScriptEngine/API/FileSystemAPI.h b/ScriptEngine/src/api/FileSystemAPI.h similarity index 100% rename from ScriptEngine/API/FileSystemAPI.h rename to ScriptEngine/src/api/FileSystemAPI.h diff --git a/ScriptEngine/API/GameUtilsAPI.cpp b/ScriptEngine/src/api/GameUtilsAPI.cpp similarity index 100% rename from ScriptEngine/API/GameUtilsAPI.cpp rename to ScriptEngine/src/api/GameUtilsAPI.cpp diff --git a/ScriptEngine/API/GameUtilsAPI.h b/ScriptEngine/src/api/GameUtilsAPI.h similarity index 100% rename from ScriptEngine/API/GameUtilsAPI.h rename to ScriptEngine/src/api/GameUtilsAPI.h diff --git a/ScriptEngine/API/GlobalNativePointer.cpp b/ScriptEngine/src/api/GlobalNativePointer.cpp similarity index 100% rename from ScriptEngine/API/GlobalNativePointer.cpp rename to ScriptEngine/src/api/GlobalNativePointer.cpp diff --git a/ScriptEngine/API/GuiAPI.cpp b/ScriptEngine/src/api/GuiAPI.cpp similarity index 97% rename from ScriptEngine/API/GuiAPI.cpp rename to ScriptEngine/src/api/GuiAPI.cpp index b89efa9..15eb845 100644 --- a/ScriptEngine/API/GuiAPI.cpp +++ b/ScriptEngine/src/api/GuiAPI.cpp @@ -2,11 +2,11 @@ #include "GuiAPI.h" #include "PlayerAPI.h" #include "McAPI.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include using namespace std; @@ -58,7 +58,7 @@ bool SimpleFormClass::sendForm(Form::SimpleForm* form, Player* player, script::L return form->sendTo(player, [engine{EngineScope::currentEngine()}, callback{std::move(callbackFunc)}](Player* pl, int chosen) { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -140,7 +140,7 @@ bool CustomFormClass::sendForm(Form::CustomForm* form, Player* player, script::L return form->sendToForRawJson(player, [engine{EngineScope::currentEngine()}, callback{std::move(callbackFunc)}](Player* pl, string data) { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; diff --git a/ScriptEngine/API/GuiAPI.h b/ScriptEngine/src/api/GuiAPI.h similarity index 94% rename from ScriptEngine/API/GuiAPI.h rename to ScriptEngine/src/api/GuiAPI.h index c29d76a..96f260a 100644 --- a/ScriptEngine/API/GuiAPI.h +++ b/ScriptEngine/src/api/GuiAPI.h @@ -1,7 +1,7 @@ #pragma once #include "APIHelp.h" -#include +#include //////////////////// Classes //////////////////// diff --git a/ScriptEngine/API/InternationalAPI.cpp b/ScriptEngine/src/api/InternationalAPI.cpp similarity index 99% rename from ScriptEngine/API/InternationalAPI.cpp rename to ScriptEngine/src/api/InternationalAPI.cpp index 075376c..6904466 100644 --- a/ScriptEngine/API/InternationalAPI.cpp +++ b/ScriptEngine/src/api/InternationalAPI.cpp @@ -1,7 +1,7 @@ #define NEW_DEFINES #include "InternationalAPI.h" -#include -#include +#include +#include void FormatHelper(std::vector>& args, const std::vector& names, bool enableObject, fmt::dynamic_format_arg_store& s, diff --git a/ScriptEngine/API/InternationalAPI.h b/ScriptEngine/src/api/InternationalAPI.h similarity index 100% rename from ScriptEngine/API/InternationalAPI.h rename to ScriptEngine/src/api/InternationalAPI.h diff --git a/ScriptEngine/API/ItemAPI.cpp b/ScriptEngine/src/api/ItemAPI.cpp similarity index 99% rename from ScriptEngine/API/ItemAPI.cpp rename to ScriptEngine/src/api/ItemAPI.cpp index 451edb1..9ff416a 100644 --- a/ScriptEngine/API/ItemAPI.cpp +++ b/ScriptEngine/src/api/ItemAPI.cpp @@ -5,8 +5,8 @@ #include "EntityAPI.h" #include "NbtAPI.h" #include "NativeAPI.h" -#include -#include +#include +#include #include #include diff --git a/ScriptEngine/API/ItemAPI.h b/ScriptEngine/src/api/ItemAPI.h similarity index 100% rename from ScriptEngine/API/ItemAPI.h rename to ScriptEngine/src/api/ItemAPI.h diff --git a/ScriptEngine/API/LlAPI.cpp b/ScriptEngine/src/api/LlAPI.cpp similarity index 93% rename from ScriptEngine/API/LlAPI.cpp rename to ScriptEngine/src/api/LlAPI.cpp index c197820..ae0d08b 100644 --- a/ScriptEngine/API/LlAPI.cpp +++ b/ScriptEngine/src/api/LlAPI.cpp @@ -1,12 +1,12 @@ #include "APIHelp.h" -#include +#include #include "LlAPI.h" -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include
+#include +#include #include #include #include @@ -54,7 +54,7 @@ Local LlClass::registerPlugin(const Arguments& args) { string name = args[0].toStr(); string desc = args.size() >= 2 ? args[1].toStr() : ""; - LL::Version ver = LL::Version(1, 0, 0); + ll::Version ver = ll::Version(1, 0, 0); if (args.size() >= 3) { if (args[2].isArray()) { Local verInfo = args[2].asArray(); @@ -118,7 +118,7 @@ Local LlClass::getPluginInfo(const Arguments& args) { try { std::string name = args[0].toStr(); - auto plugin = LL::getPlugin(name); + auto plugin = ll::getPlugin(name); if (plugin) { auto result = Object::newObject(); @@ -150,11 +150,11 @@ Local LlClass::getVersionStatus(const Arguments& args) { try { int versionStatusValue; - if (LITELOADER_VERSION_STATUS == LL::Version::Status::Release) { + if (LITELOADER_VERSION_STATUS == ll::Version::Status::Release) { versionStatusValue = 0; - } else if (LITELOADER_VERSION_STATUS == LL::Version::Status::Beta) { + } else if (LITELOADER_VERSION_STATUS == ll::Version::Status::Beta) { versionStatusValue = 1; - } else if (LITELOADER_VERSION_STATUS == LL::Version::Status::Dev) { + } else if (LITELOADER_VERSION_STATUS == ll::Version::Status::Dev) { versionStatusValue = 2; } @@ -169,9 +169,9 @@ Local LlClass::version(const Arguments& args) { ver.set("major", LITELOADER_VERSION_MAJOR); ver.set("minor", LITELOADER_VERSION_MINOR); ver.set("revision", LITELOADER_VERSION_REVISION); - ver.set("isBeta", LITELOADER_VERSION_STATUS == LL::Version::Status::Beta); - ver.set("isRelease", LITELOADER_VERSION_STATUS == LL::Version::Status::Release); - ver.set("isDev", LITELOADER_VERSION_STATUS == LL::Version::Status::Dev); + ver.set("isBeta", LITELOADER_VERSION_STATUS == ll::Version::Status::Beta); + ver.set("isRelease", LITELOADER_VERSION_STATUS == ll::Version::Status::Release); + ver.set("isDev", LITELOADER_VERSION_STATUS == ll::Version::Status::Dev); return ver; } CATCH("Fail in LLSEGetVersion!") @@ -179,21 +179,21 @@ Local LlClass::version(const Arguments& args) { Local LlClass::getLanguage() { try { - return String::newString(PluginOwnData::getImpl(LL::getLoaderHandle(), I18nBase::POD_KEY).defaultLocaleName); + return String::newString(PluginOwnData::getImpl(ll::getLoaderHandle(), I18nBase::POD_KEY).defaultLocaleName); } CATCH("Fail in LLSEGetLanguage") } Local LlClass::isDebugMode(const Arguments& args) { try { - return Boolean::newBoolean(LL::isDebugMode()); + return Boolean::newBoolean(ll::isDebugMode()); } CATCH("Fail in LLSEGetIsDebugMode") } Local LlClass::versionString(const Arguments& args) { try { - return String::newString(LL::getLoaderVersionString()); + return String::newString(ll::getLoaderVersionString()); } CATCH("Fail in LLSEGetVersionString!") } diff --git a/ScriptEngine/API/LlAPI.h b/ScriptEngine/src/api/LlAPI.h similarity index 100% rename from ScriptEngine/API/LlAPI.h rename to ScriptEngine/src/api/LlAPI.h diff --git a/ScriptEngine/API/LoggerAPI.cpp b/ScriptEngine/src/api/LoggerAPI.cpp similarity index 98% rename from ScriptEngine/API/LoggerAPI.cpp rename to ScriptEngine/src/api/LoggerAPI.cpp index aa3d2fa..5b10f1b 100644 --- a/ScriptEngine/API/LoggerAPI.cpp +++ b/ScriptEngine/src/api/LoggerAPI.cpp @@ -1,13 +1,13 @@ #include "APIHelp.h" #include "LoggerAPI.h" #include "PlayerAPI.h" -#include +#include #include #include #include #include -#include -#include +#include +#include using namespace std; diff --git a/ScriptEngine/API/LoggerAPI.h b/ScriptEngine/src/api/LoggerAPI.h similarity index 100% rename from ScriptEngine/API/LoggerAPI.h rename to ScriptEngine/src/api/LoggerAPI.h diff --git a/ScriptEngine/API/McAPI.cpp b/ScriptEngine/src/api/McAPI.cpp similarity index 100% rename from ScriptEngine/API/McAPI.cpp rename to ScriptEngine/src/api/McAPI.cpp diff --git a/ScriptEngine/API/McAPI.h b/ScriptEngine/src/api/McAPI.h similarity index 100% rename from ScriptEngine/API/McAPI.h rename to ScriptEngine/src/api/McAPI.h diff --git a/ScriptEngine/API/NativeAPI.cpp b/ScriptEngine/src/api/NativeAPI.cpp similarity index 99% rename from ScriptEngine/API/NativeAPI.cpp rename to ScriptEngine/src/api/NativeAPI.cpp index 2279256..ec7489f 100644 --- a/ScriptEngine/API/NativeAPI.cpp +++ b/ScriptEngine/src/api/NativeAPI.cpp @@ -1,8 +1,8 @@ #include "NativeAPI.h" -#include +#include #include -#include "../Tools/Demangler/include/MicrosoftDemangle.h" +#include Concurrency::concurrent_unordered_map NativeFunction::parsedSymbol; diff --git a/ScriptEngine/API/NativeAPI.h b/ScriptEngine/src/api/NativeAPI.h similarity index 100% rename from ScriptEngine/API/NativeAPI.h rename to ScriptEngine/src/api/NativeAPI.h diff --git a/ScriptEngine/API/NativePatch.cpp b/ScriptEngine/src/api/NativePatch.cpp similarity index 96% rename from ScriptEngine/API/NativePatch.cpp rename to ScriptEngine/src/api/NativePatch.cpp index d9437e6..64e978e 100644 --- a/ScriptEngine/API/NativePatch.cpp +++ b/ScriptEngine/src/api/NativePatch.cpp @@ -1,7 +1,7 @@ #include "NativeAPI.h" -#include -#include +#include +#include Local NativePatch::search(const Arguments& args) { CHECK_ARGS_COUNT(args, 1); diff --git a/ScriptEngine/API/NativePointer.cpp b/ScriptEngine/src/api/NativePointer.cpp similarity index 99% rename from ScriptEngine/API/NativePointer.cpp rename to ScriptEngine/src/api/NativePointer.cpp index f8dab41..20fe3cf 100644 --- a/ScriptEngine/API/NativePointer.cpp +++ b/ScriptEngine/src/api/NativePointer.cpp @@ -1,7 +1,7 @@ #include "APIHelp.h" #include "NativeAPI.h" #include "NativeStdString.h" -#include +#include //////////////////// NativePointer //////////////////// ClassDefine diff --git a/ScriptEngine/API/NativeStdString.cpp b/ScriptEngine/src/api/NativeStdString.cpp similarity index 100% rename from ScriptEngine/API/NativeStdString.cpp rename to ScriptEngine/src/api/NativeStdString.cpp diff --git a/ScriptEngine/API/NativeStdString.h b/ScriptEngine/src/api/NativeStdString.h similarity index 100% rename from ScriptEngine/API/NativeStdString.h rename to ScriptEngine/src/api/NativeStdString.h diff --git a/ScriptEngine/API/NbtAPI.cpp b/ScriptEngine/src/api/NbtAPI.cpp similarity index 99% rename from ScriptEngine/API/NbtAPI.cpp rename to ScriptEngine/src/api/NbtAPI.cpp index 5f16348..ba0c540 100644 --- a/ScriptEngine/API/NbtAPI.cpp +++ b/ScriptEngine/src/api/NbtAPI.cpp @@ -4,17 +4,17 @@ #include #include "ItemAPI.h" #include "BlockAPI.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include using namespace std; diff --git a/ScriptEngine/API/NbtAPI.h b/ScriptEngine/src/api/NbtAPI.h similarity index 96% rename from ScriptEngine/API/NbtAPI.h rename to ScriptEngine/src/api/NbtAPI.h index 05d70cc..0307916 100644 --- a/ScriptEngine/API/NbtAPI.h +++ b/ScriptEngine/src/api/NbtAPI.h @@ -1,17 +1,17 @@ #pragma once #include "APIHelp.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include extern struct Tag; diff --git a/ScriptEngine/API/NetworkAPI.cpp b/ScriptEngine/src/api/NetworkAPI.cpp similarity index 95% rename from ScriptEngine/API/NetworkAPI.cpp rename to ScriptEngine/src/api/NetworkAPI.cpp index 8404da2..58b5fd9 100644 --- a/ScriptEngine/API/NetworkAPI.cpp +++ b/ScriptEngine/src/api/NetworkAPI.cpp @@ -1,15 +1,14 @@ #include "APIHelp.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include #include "NetworkAPI.h" -#include +#include
#include #include -#include -#include +#include +#include using namespace std; using namespace cyanray; @@ -154,10 +153,10 @@ void WSClientClass::initListeners() { void WSClientClass::initListeners_s() { ws->OnTextReceived([nowList{&listeners[int(WSClientEvents::onTextReceived)]}, engine = EngineScope::currentEngine()](WebSocketClient& client, string msg) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; Schedule::nextTick([nowList, engine, msg = std::move(msg)]() { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); if (!nowList->empty()) @@ -168,10 +167,10 @@ void WSClientClass::initListeners_s() { }); ws->OnBinaryReceived([nowList{&listeners[int(WSClientEvents::onBinaryReceived)]}, engine = EngineScope::currentEngine()](WebSocketClient& client, vector data) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; Schedule::nextTick([nowList, engine, data = std::move(data)]() mutable { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); if (!nowList->empty()) @@ -182,10 +181,10 @@ void WSClientClass::initListeners_s() { }); ws->OnError([nowList{&listeners[int(WSClientEvents::onError)]}, engine = EngineScope::currentEngine()](WebSocketClient& client, string msg) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; Schedule::nextTick([nowList, engine, msg = std::move(msg)]() { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); if (!nowList->empty()) @@ -196,10 +195,10 @@ void WSClientClass::initListeners_s() { }); ws->OnLostConnection([nowList{&listeners[int(WSClientEvents::onLostConnection)]}, engine = EngineScope::currentEngine()](WebSocketClient& client, int code) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; Schedule::nextTick([nowList, engine, code]() { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); if (!nowList->empty()) @@ -278,7 +277,7 @@ Local WSClientClass::connectAsync(const Arguments& args) { #ifdef DEBUG SetThreadDescription(GetCurrentThread(), L"LLSE Connect WebSocket"); #endif // DEBUG - if (!LL::isDebugMode()) + if (!ll::isDebugMode()) _set_se_translator(seh_exception::TranslateSEHtoCE); try { bool result = false; @@ -288,7 +287,7 @@ Local WSClientClass::connectAsync(const Arguments& args) { } catch (const std::runtime_error& e) { result = false; } - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); // fix get on empty Global @@ -382,10 +381,10 @@ using namespace httplib; #define ADD_CALLBACK(method, path, func) \ callbacks.emplace(make_pair(path, HttpServerCallback{EngineScope::currentEngine(), script::Global{func}, HttpRequestType::method, path})); \ svr->##method##(path.c_str(), [this, engine = EngineScope::currentEngine()](const Request& req, Response& resp) { \ - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) \ + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) \ return; \ auto task = Schedule::nextTick([this, engine, req, &resp] { \ - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) \ + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) \ return; \ EngineScope enter(engine); \ for (auto& [k, v] : this->callbacks) { \ @@ -437,10 +436,10 @@ Local HttpServerClass::onGet(const Arguments& args) { /* for debug callbacks.emplace(make_pair(path, HttpServerCallback{EngineScope::currentEngine(), script::Global{func}, HttpRequestType::Get, path})); svr->Get(path.c_str(), [this, engine = EngineScope::currentEngine()](const Request& req, Response& resp) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; auto task = Schedule::nextTick([this, engine, req, &resp] { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); for (auto& [k, v] : this->callbacks) @@ -548,11 +547,11 @@ Local HttpServerClass::onPreRouting(const Arguments& args) { try { preRoutingCallback = {EngineScope::currentEngine(), script::Global{args[0].asFunction()}}; svr->set_pre_routing_handler([this, engine = EngineScope::currentEngine()](const Request& req, Response& resp) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return Server::HandlerResponse::Unhandled; bool handled = false; auto task = Schedule::nextTick([this, engine, req, &resp, &handled] { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); auto reqObj = new HttpRequestClass(req); @@ -579,10 +578,10 @@ Local HttpServerClass::onPostRouting(const Arguments& args) { try { postRoutingCallback = {EngineScope::currentEngine(), script::Global{args[0].asFunction()}}; svr->set_post_routing_handler([this, engine = EngineScope::currentEngine()](const Request& req, Response& resp) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; auto task = Schedule::nextTick([this, engine, req, &resp] { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); auto reqObj = new HttpRequestClass(req); @@ -605,10 +604,10 @@ Local HttpServerClass::onError(const Arguments& args) { try { errorCallback = {EngineScope::currentEngine(), script::Global{args[0].asFunction()}}; svr->set_error_handler([this, engine = EngineScope::currentEngine()](const Request& req, Response& resp) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; auto task = Schedule::nextTick([this, engine, req, &resp] { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); auto reqObj = new HttpRequestClass(req); @@ -631,10 +630,10 @@ Local HttpServerClass::onException(const Arguments& args) { try { exceptionCallback = {EngineScope::currentEngine(), script::Global{args[0].asFunction()}}; svr->set_exception_handler([this, engine = EngineScope::currentEngine()](const Request& req, Response& resp, std::exception_ptr e) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; auto task = Schedule::nextTick([this, engine, req, &resp, e] { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope enter(engine); auto reqObj = new HttpRequestClass(req); @@ -1010,7 +1009,7 @@ Local NetworkClass::httpGet(const Arguments& args) { script::Global callbackFunc{args[args.size() - 1].asFunction()}; auto lambda = [callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}](int status, string body) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope scope(engine); @@ -1056,7 +1055,7 @@ Local NetworkClass::httpPost(const Arguments& args) { script::Global callbackFunc{args[args.size() - 1].asFunction()}; auto lambda = [callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}](int status, string body) { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return; EngineScope scope(engine); diff --git a/ScriptEngine/API/NetworkAPI.h b/ScriptEngine/src/api/NetworkAPI.h similarity index 96% rename from ScriptEngine/API/NetworkAPI.h rename to ScriptEngine/src/api/NetworkAPI.h index 9b9d02a..17877b5 100644 --- a/ScriptEngine/API/NetworkAPI.h +++ b/ScriptEngine/src/api/NetworkAPI.h @@ -2,8 +2,8 @@ #include "APIHelp.h" #include -#include -#include +#include +#include using namespace cyanray; //////////////////// Types //////////////////// diff --git a/ScriptEngine/API/PacketAPI.cpp b/ScriptEngine/src/api/PacketAPI.cpp similarity index 99% rename from ScriptEngine/API/PacketAPI.cpp rename to ScriptEngine/src/api/PacketAPI.cpp index 7b2d5a1..7853b11 100644 --- a/ScriptEngine/API/PacketAPI.cpp +++ b/ScriptEngine/src/api/PacketAPI.cpp @@ -7,9 +7,9 @@ #include "BlockEntityAPI.h" #include "NbtAPI.h" #include "NativeAPI.h" -#include +#include #include "PacketAPI.h" -#include +#include //////////////////// Class Definition //////////////////// diff --git a/ScriptEngine/API/PacketAPI.h b/ScriptEngine/src/api/PacketAPI.h similarity index 93% rename from ScriptEngine/API/PacketAPI.h rename to ScriptEngine/src/api/PacketAPI.h index 262baa2..978e43b 100644 --- a/ScriptEngine/API/PacketAPI.h +++ b/ScriptEngine/src/api/PacketAPI.h @@ -1,9 +1,9 @@ #pragma once #include "APIHelp.h" -#include -#include +#include +#include
#include -#include +#include //////////////////// Classes //////////////////// diff --git a/ScriptEngine/API/ParticleAPI.cpp b/ScriptEngine/src/api/ParticleAPI.cpp similarity index 100% rename from ScriptEngine/API/ParticleAPI.cpp rename to ScriptEngine/src/api/ParticleAPI.cpp diff --git a/ScriptEngine/API/ParticleAPI.h b/ScriptEngine/src/api/ParticleAPI.h similarity index 92% rename from ScriptEngine/API/ParticleAPI.h rename to ScriptEngine/src/api/ParticleAPI.h index bbbe8d4..b72dfcd 100644 --- a/ScriptEngine/API/ParticleAPI.h +++ b/ScriptEngine/src/api/ParticleAPI.h @@ -3,8 +3,8 @@ // #pragma once #include "APIHelp.h" -#include -#include "../../LiteLoader/Header/ParticleAPI.h" +#include
+#include class ParticleSpawner : public ParticleCUI, public ScriptClass { public: diff --git a/ScriptEngine/API/PermissionAPI.cpp b/ScriptEngine/src/api/PermissionAPI.cpp similarity index 100% rename from ScriptEngine/API/PermissionAPI.cpp rename to ScriptEngine/src/api/PermissionAPI.cpp diff --git a/ScriptEngine/API/PermissionAPI.h b/ScriptEngine/src/api/PermissionAPI.h similarity index 96% rename from ScriptEngine/API/PermissionAPI.h rename to ScriptEngine/src/api/PermissionAPI.h index 0927289..d82d64a 100644 --- a/ScriptEngine/API/PermissionAPI.h +++ b/ScriptEngine/src/api/PermissionAPI.h @@ -1,5 +1,5 @@ #pragma once -#include +#include #include "APIHelp.h" class RoleClass : public ScriptClass { diff --git a/ScriptEngine/API/PlayerAPI.cpp b/ScriptEngine/src/api/PlayerAPI.cpp similarity index 99% rename from ScriptEngine/API/PlayerAPI.cpp rename to ScriptEngine/src/api/PlayerAPI.cpp index 50a8b20..5130ee8 100644 --- a/ScriptEngine/API/PlayerAPI.cpp +++ b/ScriptEngine/src/api/PlayerAPI.cpp @@ -11,21 +11,21 @@ #include "NbtAPI.h" #include "PacketAPI.h" #include "NativeAPI.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include
#include #include #include @@ -1752,7 +1752,7 @@ Local PlayerClass::sendSimpleForm(const Arguments& args) { player->sendSimpleFormPacket(args[0].toStr(), args[1].toStr(), texts, images, [id{player->getUniqueID()}, engine{EngineScope::currentEngine()}, callback{script::Global(args[4].asFunction())}](int chosen) { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -1790,7 +1790,7 @@ Local PlayerClass::sendModalForm(const Arguments& args) { player->sendModalFormPacket(args[0].toStr(), args[1].toStr(), args[2].toStr(), args[3].toStr(), [id{player->getUniqueID()}, engine{EngineScope::currentEngine()}, callback{script::Global(args[4].asFunction())}](bool chosen) { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -1827,7 +1827,7 @@ Local PlayerClass::sendCustomForm(const Arguments& args) { player->sendCustomFormPacket(data, [id{player->getUniqueID()}, engine{EngineScope::currentEngine()}, callback{script::Global(args[1].asFunction())}](string result) { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; diff --git a/ScriptEngine/API/PlayerAPI.h b/ScriptEngine/src/api/PlayerAPI.h similarity index 82% rename from ScriptEngine/API/PlayerAPI.h rename to ScriptEngine/src/api/PlayerAPI.h index cde8ee9..39070ac 100644 --- a/ScriptEngine/API/PlayerAPI.h +++ b/ScriptEngine/src/api/PlayerAPI.h @@ -158,29 +158,6 @@ public: //Local isSimulatedPlayer(const Arguments& args); // Local quickEvalMolangScript(const Arguments& args); - // SimulatedPlayer API (API/SimulatedPlayerAPI.cpp) - -// Local simulateSneak(const Arguments& args); -// Local simulateAttack(const Arguments& args); -// Local simulateDestroy(const Arguments& args); -// Local simulateDisconnect(const Arguments& args); -// Local simulateInteract(const Arguments& args); -// Local simulateJump(const Arguments& args); -// Local simulateLocalMove(const Arguments& args); -// Local simulateWorldMove(const Arguments& args); -// Local simulateMoveTo(const Arguments& args); -// Local simulateLookAt(const Arguments& args); -// Local simulateSetBodyRotation(const Arguments& args); -// Local simulateNavigateTo(const Arguments& args); -// Local simulateUseItem(const Arguments& args); -// Local simulateStopDestroyingBlock(const Arguments& args); -// Local simulateStopInteracting(const Arguments& args); -// Local simulateStopMoving(const Arguments& args); -// Local simulateStopUsingItem(const Arguments& args); -// Local simulateStopSneaking(const Arguments& args); - - // bool simulateSetItem(class ItemStack&, bool, int); - // bool simulateGiveItem(class ItemStack&, bool); // For Compatibility Local getIP(); diff --git a/ScriptEngine/API/RemoteCallAPI.cpp b/ScriptEngine/src/api/RemoteCallAPI.cpp similarity index 97% rename from ScriptEngine/API/RemoteCallAPI.cpp rename to ScriptEngine/src/api/RemoteCallAPI.cpp index b6adb81..ef3576d 100644 --- a/ScriptEngine/API/RemoteCallAPI.cpp +++ b/ScriptEngine/src/api/RemoteCallAPI.cpp @@ -1,5 +1,5 @@ #include "RemoteCallAPI.h" -#include +#include #include "PlayerAPI.h" #include "EntityAPI.h" #include "ItemAPI.h" @@ -8,16 +8,16 @@ #include "BaseAPI.h" #include "ContainerAPI.h" #include "NbtAPI.h" -#include -#include -#include -#include -#include +#include "APIHelp.h" +#include "LlAPI.h" +#include +#include +#include #include #include #include #include -#include +#include
using namespace std; @@ -233,7 +233,7 @@ bool LLSEExportFunc(ScriptEngine* engine, const Local& func, const str // script::Global callback = script::Global(func); std::string identifier = nameSpace + "::" + funcName; RemoteCall::CallbackFn cb = [engine, identifier /*, scriptCallback = std::move(callback)*/](std::vector params) -> RemoteCall::ValueType { - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return ""; EngineScope enter(engine); try { diff --git a/ScriptEngine/API/RemoteCallAPI.h b/ScriptEngine/src/api/RemoteCallAPI.h similarity index 100% rename from ScriptEngine/API/RemoteCallAPI.h rename to ScriptEngine/src/api/RemoteCallAPI.h diff --git a/ScriptEngine/API/ScoreboardAPI.cpp b/ScriptEngine/src/api/ScoreboardAPI.cpp similarity index 98% rename from ScriptEngine/API/ScoreboardAPI.cpp rename to ScriptEngine/src/api/ScoreboardAPI.cpp index 0e62203..0e43694 100644 --- a/ScriptEngine/API/ScoreboardAPI.cpp +++ b/ScriptEngine/src/api/ScoreboardAPI.cpp @@ -1,7 +1,7 @@ #include "APIHelp.h" -#include -#include -#include +#include +#include +#include #include "ScoreboardAPI.h" #include "McAPI.h" #include "PlayerAPI.h" diff --git a/ScriptEngine/API/ScoreboardAPI.h b/ScriptEngine/src/api/ScoreboardAPI.h similarity index 100% rename from ScriptEngine/API/ScoreboardAPI.h rename to ScriptEngine/src/api/ScoreboardAPI.h diff --git a/ScriptEngine/API/ScriptAPI.cpp b/ScriptEngine/src/api/ScriptAPI.cpp similarity index 96% rename from ScriptEngine/API/ScriptAPI.cpp rename to ScriptEngine/src/api/ScriptAPI.cpp index 72cafb1..fa1b7d9 100644 --- a/ScriptEngine/API/ScriptAPI.cpp +++ b/ScriptEngine/src/api/ScriptAPI.cpp @@ -1,9 +1,9 @@ #include "ScriptAPI.h" #include "APIHelp.h" -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include @@ -85,7 +85,7 @@ Local ColorLog(const Arguments& args) { LOG_ERROR_WITH_SCRIPT_INFO("Invalid color!"); break; } - // if (!LL::globalConfig.colorLog) + // if (!ll::globalConfig.colorLog) // prefix = ""; auto& infoOut = ENGINE_OWN_DATA()->logger.info; infoOut << prefix; diff --git a/ScriptEngine/API/ScriptAPI.h b/ScriptEngine/src/api/ScriptAPI.h similarity index 100% rename from ScriptEngine/API/ScriptAPI.h rename to ScriptEngine/src/api/ScriptAPI.h diff --git a/ScriptEngine/API/ServerAPI.cpp b/ScriptEngine/src/api/ServerAPI.cpp similarity index 83% rename from ScriptEngine/API/ServerAPI.cpp rename to ScriptEngine/src/api/ServerAPI.cpp index 8adcf36..249e7ce 100644 --- a/ScriptEngine/API/ServerAPI.cpp +++ b/ScriptEngine/src/api/ServerAPI.cpp @@ -1,24 +1,24 @@ #include "APIHelp.h" #include "APIHelp.h" #include "ServerAPI.h" -#include +#include #include "McAPI.h" -#include -#include +#include +#include
Local McClass::setMotd(const Arguments& args) { CHECK_ARGS_COUNT(args, 1) CHECK_ARG_TYPE(args[0], ValueKind::kString) try { - return Boolean::newBoolean(LL::setServerMotd(args[0].asString().toString())); + return Boolean::newBoolean(ll::setServerMotd(args[0].asString().toString())); } CATCH("Fail in SetServerMotd!") } Local McClass::crashBDS(const Arguments& args) //===========??? { - if (LL::isDebugMode()) { + if (ll::isDebugMode()) { RecordOperation(ENGINE_OWN_DATA()->pluginName, "Crash Server", "Execute mc.crash() to crash server."); throw; return Boolean::newBoolean(true); diff --git a/ScriptEngine/API/ServerAPI.h b/ScriptEngine/src/api/ServerAPI.h similarity index 100% rename from ScriptEngine/API/ServerAPI.h rename to ScriptEngine/src/api/ServerAPI.h diff --git a/ScriptEngine/API/StructureAPI.cpp b/ScriptEngine/src/api/StructureAPI.cpp similarity index 95% rename from ScriptEngine/API/StructureAPI.cpp rename to ScriptEngine/src/api/StructureAPI.cpp index ba7f782..eee55e8 100644 --- a/ScriptEngine/API/StructureAPI.cpp +++ b/ScriptEngine/src/api/StructureAPI.cpp @@ -2,10 +2,10 @@ #include "BaseAPI.h" #include "McAPI.h" #include "NbtAPI.h" -#include -#include -#include -#include +#include +#include +#include +#include Local McClass::getStructure(const Arguments& args) { CHECK_ARGS_COUNT(args, 2); diff --git a/ScriptEngine/API/SystemAPI.cpp b/ScriptEngine/src/api/SystemAPI.cpp similarity index 94% rename from ScriptEngine/API/SystemAPI.cpp rename to ScriptEngine/src/api/SystemAPI.cpp index 9a0753a..910c19d 100644 --- a/ScriptEngine/API/SystemAPI.cpp +++ b/ScriptEngine/src/api/SystemAPI.cpp @@ -1,12 +1,12 @@ #include "SystemAPI.h" #include "APIHelp.h" -#include -#include +#include +#include #include #include -#include -#include -#include +#include +#include
+#include using namespace std::filesystem; @@ -40,7 +40,7 @@ Local SystemClass::cmd(const Arguments& args) { [callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}](int exitCode, string output) { Schedule::nextTick( [engine, callback = std::move(callback), exitCode, output = std::move(output)]() { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -75,7 +75,7 @@ Local SystemClass::newProcess(const Arguments& args) { [callback{std::move(callbackFunc)}, engine{EngineScope::currentEngine()}](int exitCode, string output) { Schedule::nextTick( [engine, callback = std::move(callback), exitCode, output = std::move(output)]() { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; diff --git a/ScriptEngine/API/SystemAPI.h b/ScriptEngine/src/api/SystemAPI.h similarity index 100% rename from ScriptEngine/API/SystemAPI.h rename to ScriptEngine/src/api/SystemAPI.h diff --git a/ScriptEngine/Engine/EngineManager.cpp b/ScriptEngine/src/engine/EngineManager.cpp similarity index 97% rename from ScriptEngine/Engine/EngineManager.cpp rename to ScriptEngine/src/engine/EngineManager.cpp index 8e23ea4..71ab5fb 100644 --- a/ScriptEngine/Engine/EngineManager.cpp +++ b/ScriptEngine/src/engine/EngineManager.cpp @@ -1,8 +1,8 @@ #include "EngineManager.h" #include "EngineOwnData.h" #include "GlobalShareData.h" -#include -#include +#include
+#include #include using namespace std; using namespace script; diff --git a/ScriptEngine/Engine/EngineManager.h b/ScriptEngine/src/engine/EngineManager.h similarity index 91% rename from ScriptEngine/Engine/EngineManager.h rename to ScriptEngine/src/engine/EngineManager.h index 1b66b9d..e851114 100644 --- a/ScriptEngine/Engine/EngineManager.h +++ b/ScriptEngine/src/engine/EngineManager.h @@ -1,6 +1,6 @@ #pragma once -#include -#include +#include "ScriptX/ScriptX.h" +#include
#include #include #include diff --git a/ScriptEngine/Engine/EngineOwnData.h b/ScriptEngine/src/engine/EngineOwnData.h similarity index 94% rename from ScriptEngine/Engine/EngineOwnData.h rename to ScriptEngine/src/engine/EngineOwnData.h index 974f15b..f399518 100644 --- a/ScriptEngine/Engine/EngineOwnData.h +++ b/ScriptEngine/src/engine/EngineOwnData.h @@ -1,13 +1,13 @@ #pragma once -#include +#include #include #include #include #include #include #include -#include -#include +#include +#include struct FormCallbackData { script::ScriptEngine* engine; diff --git a/ScriptEngine/Engine/GlobalShareData.cpp b/ScriptEngine/src/engine/GlobalShareData.cpp similarity index 93% rename from ScriptEngine/Engine/GlobalShareData.cpp rename to ScriptEngine/src/engine/GlobalShareData.cpp index ae1cb8f..a15c349 100644 --- a/ScriptEngine/Engine/GlobalShareData.cpp +++ b/ScriptEngine/src/engine/GlobalShareData.cpp @@ -1,11 +1,11 @@ -#include -#include +#include +#include "GlobalShareData.h" #include #include #include #include #include -#include +#include
#include "LocalShareData.h" using namespace std; diff --git a/ScriptEngine/Engine/GlobalShareData.h b/ScriptEngine/src/engine/GlobalShareData.h similarity index 94% rename from ScriptEngine/Engine/GlobalShareData.h rename to ScriptEngine/src/engine/GlobalShareData.h index 11229c5..2e46619 100644 --- a/ScriptEngine/Engine/GlobalShareData.h +++ b/ScriptEngine/src/engine/GlobalShareData.h @@ -1,11 +1,11 @@ -#include +#include #include "EngineManager.h" #include #include #include #include #include -#include +#include //////////////////// Structs //////////////////// diff --git a/ScriptEngine/Engine/LocalShareData.cpp b/ScriptEngine/src/engine/LocalShareData.cpp similarity index 93% rename from ScriptEngine/Engine/LocalShareData.cpp rename to ScriptEngine/src/engine/LocalShareData.cpp index 1676f5f..221c14d 100644 --- a/ScriptEngine/Engine/LocalShareData.cpp +++ b/ScriptEngine/src/engine/LocalShareData.cpp @@ -1,5 +1,5 @@ #include "LocalShareData.h" -#include +#include
#include #include diff --git a/ScriptEngine/Engine/LocalShareData.h b/ScriptEngine/src/engine/LocalShareData.h similarity index 93% rename from ScriptEngine/Engine/LocalShareData.h rename to ScriptEngine/src/engine/LocalShareData.h index 4b2ba14..22db198 100644 --- a/ScriptEngine/Engine/LocalShareData.h +++ b/ScriptEngine/src/engine/LocalShareData.h @@ -1,8 +1,8 @@ #pragma once -#include +#include #include #include -#include +#include #include diff --git a/ScriptEngine/Engine/MessageSystem.cpp b/ScriptEngine/src/engine/MessageSystem.cpp similarity index 97% rename from ScriptEngine/Engine/MessageSystem.cpp rename to ScriptEngine/src/engine/MessageSystem.cpp index 313c002..55eff68 100644 --- a/ScriptEngine/Engine/MessageSystem.cpp +++ b/ScriptEngine/src/engine/MessageSystem.cpp @@ -1,14 +1,14 @@ #include "MessageSystem.h" -#include -#include -#include -#include +#include +#include +#include +#include #include "LocalShareData.h" #include "GlobalShareData.h" #include #include #include -#include +#include using namespace std; using namespace script; @@ -315,16 +315,16 @@ void InitMessageSystem() { SetThreadDescription(GetCurrentThread(), L"LLSE MessageSystem " _CRT_WIDE(LLSE_MODULE_TYPE)); #endif // DEBUG // Set global SEH-Exception handler - if (!LL::isDebugMode()) + if (!ll::isDebugMode()) _set_se_translator(seh_exception::TranslateSEHtoCE); globalShareData->messageThreads[LLSE_BACKEND_TYPE] = GetCurrentThread(); while (true) { MessageSystemLoopOnce(); - if (LL::getServerStatus() >= LL::ServerStatus::Stopping) + if (ll::getServerStatus() >= ll::ServerStatus::Stopping) return; SleepEx(5, true); - if (LL::getServerStatus() >= LL::ServerStatus::Stopping) + if (ll::getServerStatus() >= ll::ServerStatus::Stopping) return; } }).detach(); diff --git a/ScriptEngine/Engine/MessageSystem.h b/ScriptEngine/src/engine/MessageSystem.h similarity index 97% rename from ScriptEngine/Engine/MessageSystem.h rename to ScriptEngine/src/engine/MessageSystem.h index 43c1a07..cb59190 100644 --- a/ScriptEngine/Engine/MessageSystem.h +++ b/ScriptEngine/src/engine/MessageSystem.h @@ -1,7 +1,8 @@ #pragma once + #include #include -#include +#include #include "OperationCount.h" #include #include diff --git a/ScriptEngine/Engine/OperationCount.cpp b/ScriptEngine/src/engine/OperationCount.cpp similarity index 96% rename from ScriptEngine/Engine/OperationCount.cpp rename to ScriptEngine/src/engine/OperationCount.cpp index fb44d34..e0c860b 100644 --- a/ScriptEngine/Engine/OperationCount.cpp +++ b/ScriptEngine/src/engine/OperationCount.cpp @@ -1,7 +1,7 @@ #include "GlobalShareData.h" #include "OperationCount.h" -#include -#include +#include
+#include
#include OperationCount::OperationCount(const string& name) diff --git a/ScriptEngine/Engine/OperationCount.h b/ScriptEngine/src/engine/OperationCount.h similarity index 100% rename from ScriptEngine/Engine/OperationCount.h rename to ScriptEngine/src/engine/OperationCount.h diff --git a/ScriptEngine/Engine/RemoteCall.cpp b/ScriptEngine/src/engine/RemoteCall.cpp similarity index 95% rename from ScriptEngine/Engine/RemoteCall.cpp rename to ScriptEngine/src/engine/RemoteCall.cpp index 8a02c33..03bc37f 100644 --- a/ScriptEngine/Engine/RemoteCall.cpp +++ b/ScriptEngine/src/engine/RemoteCall.cpp @@ -1,14 +1,14 @@ -#include -#include -#include -#include -#include -#include +#include +#include +#include "RemoteCall.h" +#include "GlobalShareData.h" +#include "MessageSystem.h" +#include #include #include #include #include -#include +#include
using namespace std; @@ -129,7 +129,7 @@ bool LLSEExportFunc(ScriptEngine *engine, const Local &func, const str return ""; } auto engine = data->second.engine; - if (LL::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) + if (ll::isServerStopping() || !EngineManager::isValid(engine) || engine->isDestroying()) return ""; EngineScope enter(data->second.engine); std::vector> scriptParams; diff --git a/ScriptEngine/Engine/RemoteCall.h b/ScriptEngine/src/engine/RemoteCall.h similarity index 81% rename from ScriptEngine/Engine/RemoteCall.h rename to ScriptEngine/src/engine/RemoteCall.h index 2ea6bf5..08b41a4 100644 --- a/ScriptEngine/Engine/RemoteCall.h +++ b/ScriptEngine/src/engine/RemoteCall.h @@ -1,5 +1,5 @@ #pragma once -#include +#include #include //////////////////// Funcs //////////////////// diff --git a/ScriptEngine/Engine/TimeTaskSystem.cpp b/ScriptEngine/src/engine/TimeTaskSystem.cpp similarity index 96% rename from ScriptEngine/Engine/TimeTaskSystem.cpp rename to ScriptEngine/src/engine/TimeTaskSystem.cpp index 55e7d65..7fe2957 100644 --- a/ScriptEngine/Engine/TimeTaskSystem.cpp +++ b/ScriptEngine/src/engine/TimeTaskSystem.cpp @@ -1,10 +1,10 @@ -#include +#include #include "TimeTaskSystem.h" #include "MessageSystem.h" -#include -#include -#include -#include +#include "EngineOwnData.h" +#include "EngineManager.h" +#include +#include #include #include using namespace std; @@ -65,7 +65,7 @@ std::unordered_map timeTaskMap; // } // Schedule::delay( // [engine, func = std::move(func), paras = std::move(tmp)]() { -// if (LL::isServerStopping()) +// if (ll::isServerStopping()) // return; // if (!EngineManager::isValid(engine)) // return; @@ -100,7 +100,7 @@ int NewTimeout(Local func, vector> paras, int timeout) { data.task = Schedule::delay( [engine{EngineScope::currentEngine()}, id{tid}]() { try { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -150,7 +150,7 @@ int NewTimeout(Local func, int timeout) { data.task = Schedule::delay( [engine{EngineScope::currentEngine()}, id{tid}]() { try { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) return; @@ -192,7 +192,7 @@ int NewInterval(Local func, vector> paras, int timeout) { data.task = Schedule::repeat( [engine{EngineScope::currentEngine()}, id{tid}]() { try { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) { ClearTimeTask(id); @@ -248,7 +248,7 @@ int NewInterval(Local func, int timeout) { data.task = Schedule::repeat( [engine{EngineScope::currentEngine()}, id{tid}]() { try { - if (LL::isServerStopping()) + if (ll::isServerStopping()) return; if (!EngineManager::isValid(engine)) { ClearTimeTask(id); diff --git a/ScriptEngine/Engine/TimeTaskSystem.h b/ScriptEngine/src/engine/TimeTaskSystem.h similarity index 89% rename from ScriptEngine/Engine/TimeTaskSystem.h rename to ScriptEngine/src/engine/TimeTaskSystem.h index fed4a1a..a0c09bd 100644 --- a/ScriptEngine/Engine/TimeTaskSystem.h +++ b/ScriptEngine/src/engine/TimeTaskSystem.h @@ -1,5 +1,5 @@ #pragma once -#include +#include #include #include "MessageSystem.h" diff --git a/ScriptEngine/Main/BindAPIs.cpp b/ScriptEngine/src/main/BindAPIs.cpp similarity index 84% rename from ScriptEngine/Main/BindAPIs.cpp rename to ScriptEngine/src/main/BindAPIs.cpp index 9588d8f..2e83bb6 100644 --- a/ScriptEngine/Main/BindAPIs.cpp +++ b/ScriptEngine/src/main/BindAPIs.cpp @@ -1,35 +1,35 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include void BindAPIs(ScriptEngine* engine) { diff --git a/ScriptEngine/Main/BuiltinCommands.cpp b/ScriptEngine/src/main/BuiltinCommands.cpp similarity index 94% rename from ScriptEngine/Main/BuiltinCommands.cpp rename to ScriptEngine/src/main/BuiltinCommands.cpp index 2b2995e..86354c5 100644 --- a/ScriptEngine/Main/BuiltinCommands.cpp +++ b/ScriptEngine/src/main/BuiltinCommands.cpp @@ -1,8 +1,8 @@ #include "BuiltinCommands.h" -#include -#include +#include +#include #include -#include +#include using namespace std; extern Logger logger; diff --git a/ScriptEngine/Main/BuiltinCommands.h b/ScriptEngine/src/main/BuiltinCommands.h similarity index 100% rename from ScriptEngine/Main/BuiltinCommands.h rename to ScriptEngine/src/main/BuiltinCommands.h diff --git a/ScriptEngine/Main/Configs.h b/ScriptEngine/src/main/Configs.h similarity index 100% rename from ScriptEngine/Main/Configs.h rename to ScriptEngine/src/main/Configs.h diff --git a/ScriptEngine/Main/EconomicSystem.h b/ScriptEngine/src/main/EconomicSystem.h similarity index 100% rename from ScriptEngine/Main/EconomicSystem.h rename to ScriptEngine/src/main/EconomicSystem.h diff --git a/ScriptEngine/Main/EconomySystem.cpp b/ScriptEngine/src/main/EconomySystem.cpp similarity index 97% rename from ScriptEngine/Main/EconomySystem.cpp rename to ScriptEngine/src/main/EconomySystem.cpp index 29fc8a4..5187578 100644 --- a/ScriptEngine/Main/EconomySystem.cpp +++ b/ScriptEngine/src/main/EconomySystem.cpp @@ -1,8 +1,8 @@ -#include +#include #include "EconomicSystem.h" -#include "API/EventAPI.h" -#include -#include +#include +#include +#include #include Logger economicLogger("EconomicSystem"); @@ -39,7 +39,7 @@ struct dynamicSymbolsMap_type bool EconomySystem::init() { - auto llmoney = LL::getPlugin("LLMoney"); + auto llmoney = ll::getPlugin("LLMoney"); if (!llmoney) { if (localShareData->isFirstInstance) { diff --git a/ScriptEngine/Main/Global.cpp b/ScriptEngine/src/main/Global.cpp similarity index 79% rename from ScriptEngine/Main/Global.cpp rename to ScriptEngine/src/main/Global.cpp index e3a711d..b463e49 100644 --- a/ScriptEngine/Main/Global.cpp +++ b/ScriptEngine/src/main/Global.cpp @@ -1,4 +1,4 @@ -#include "Global.h" +#include using namespace std; //声明 diff --git a/ScriptEngine/Main/Global.hpp b/ScriptEngine/src/main/Global.hpp similarity index 89% rename from ScriptEngine/Main/Global.hpp rename to ScriptEngine/src/main/Global.hpp index f10e41b..91b0c83 100644 --- a/ScriptEngine/Main/Global.hpp +++ b/ScriptEngine/src/main/Global.hpp @@ -7,11 +7,11 @@ #define CPPHTTPLIB_OPENSSL_SUPPORT #endif -#include -#include -#include -#include -#include +#include "Configs.h" +#include +#include +#include +#include #include #include using std::string; diff --git a/ScriptEngine/Main/Loader.cpp b/ScriptEngine/src/main/Loader.cpp similarity index 95% rename from ScriptEngine/Main/Loader.cpp rename to ScriptEngine/src/main/Loader.cpp index 4c0945c..ed11b2c 100644 --- a/ScriptEngine/Main/Loader.cpp +++ b/ScriptEngine/src/main/Loader.cpp @@ -1,10 +1,10 @@ -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include "PluginManager.h" +#include "NodeJsHelper.h" #include #include #include @@ -13,7 +13,7 @@ #include #include #include -#include +#include "Configs.h" extern ::Logger logger; diff --git a/ScriptEngine/Main/Loader.h b/ScriptEngine/src/main/Loader.h similarity index 100% rename from ScriptEngine/Main/Loader.h rename to ScriptEngine/src/main/Loader.h diff --git a/ScriptEngine/Main/NodeJsHelper.cpp b/ScriptEngine/src/main/NodeJsHelper.cpp similarity index 96% rename from ScriptEngine/Main/NodeJsHelper.cpp rename to ScriptEngine/src/main/NodeJsHelper.cpp index 238102e..cced273 100644 --- a/ScriptEngine/Main/NodeJsHelper.cpp +++ b/ScriptEngine/src/main/NodeJsHelper.cpp @@ -2,18 +2,18 @@ #include "Configs.h" #if defined(LLSE_BACKEND_NODEJS) #include "Global.hpp" -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include "NodeJsHelper.h" -#include "Engine/EngineManager.h" -#include "Engine/EngineOwnData.h" -#include -#include +#include +#include +#include +#include // pre-declare extern void BindAPIs(ScriptEngine* engine); @@ -150,11 +150,11 @@ bool loadPluginCode(script::ScriptEngine* engine, std::string entryScriptPath, s // Start libuv event loop uvLoopTask[env] = Schedule::repeat([engine, env, isRunningMap{&isRunning}, eventLoop{it->second->event_loop()}]() { - if (!LL::isServerStopping() && (*isRunningMap)[env]) { + if (!ll::isServerStopping() && (*isRunningMap)[env]) { EngineScope enter(engine); uv_run(eventLoop, UV_RUN_NOWAIT); } - if (LL::isServerStopping()) { + if (ll::isServerStopping()) { uv_stop(eventLoop); logger.debug("Destroy ServerStopping"); } @@ -288,7 +288,7 @@ bool loadNodeJsPlugin(std::string dirPath, const std::string& packagePath, bool if (!PluginManager::getPlugin(pluginName)) { // Plugin did't register itself. Help to register it string description = pluginName; - LL::Version ver(1, 0, 0); + ll::Version ver(1, 0, 0); std::map others = {}; // Read information from package.json @@ -305,7 +305,7 @@ bool loadNodeJsPlugin(std::string dirPath, const std::string& packagePath, bool } // version if (j.contains("version") && j["version"].is_string()) { - ver = LL::Version::parse(j["version"].get()); + ver = ll::Version::parse(j["version"].get()); } // license if (j.contains("license") && j["license"].is_string()) { diff --git a/ScriptEngine/Main/NodeJsHelper.h b/ScriptEngine/src/main/NodeJsHelper.h similarity index 93% rename from ScriptEngine/Main/NodeJsHelper.h rename to ScriptEngine/src/main/NodeJsHelper.h index ca35ad4..6cbdf5a 100644 --- a/ScriptEngine/Main/NodeJsHelper.h +++ b/ScriptEngine/src/main/NodeJsHelper.h @@ -2,9 +2,9 @@ #if defined(LLSE_BACKEND_NODEJS) #pragma warning(disable : 4251) #include -#include +#include #include -#include +#include "Configs.h" #include namespace NodeJsHelper { diff --git a/ScriptEngine/Main/PluginManager.cpp b/ScriptEngine/src/main/PluginManager.cpp similarity index 90% rename from ScriptEngine/Main/PluginManager.cpp rename to ScriptEngine/src/main/PluginManager.cpp index fc65612..c18ec22 100644 --- a/ScriptEngine/Main/PluginManager.cpp +++ b/ScriptEngine/src/main/PluginManager.cpp @@ -1,24 +1,23 @@ -#include -#include "PluginManager.h" -#include -#include +#include +#include "Global.hpp" +#include "Configs.h" #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include "PluginManager.h" +#include "Loader.h" +#include +#include +#include +#include #ifdef LLSE_BACKEND_NODEJS #pragma warning(disable : 4251) -#include +#include "NodeJsHelper.h" #endif #define H(x) do_hash(x) using namespace std; @@ -153,7 +152,7 @@ bool PluginManager::loadPlugin(const std::string& fileOrDirPath, bool isHotLoad, // If plugin itself doesn't register, help it to do so if (!PluginManager::getPlugin(pluginName)) - PluginManager::registerPlugin(realPath, pluginName, pluginName, LL::Version(1, 0, 0), {}); + PluginManager::registerPlugin(realPath, pluginName, pluginName, ll::Version(1, 0, 0), {}); // Call necessary events when at hot load if (isHotLoad) @@ -275,19 +274,19 @@ bool PluginManager::reloadAllPlugins() { return true; } -LL::Plugin* PluginManager::getPlugin(std::string name) { - return LL::PluginManager::getPlugin(name, true); +ll::Plugin* PluginManager::getPlugin(std::string name) { + return ll::PluginManager::getPlugin(name, true); } // Get all plugins of current language -std::unordered_map PluginManager::getLocalPlugins() { - std::unordered_map res; +std::unordered_map PluginManager::getLocalPlugins() { + std::unordered_map res; auto engines = EngineManager::getLocalEngines(); for (auto& engine : engines) { string name = ENGINE_GET_DATA(engine)->pluginName; if (name != LLSE_DEBUG_ENGINE_NAME) { - LL::Plugin* plugin = PluginManager::getPlugin(name); + ll::Plugin* plugin = PluginManager::getPlugin(name); if (plugin) res[plugin->name] = plugin; } @@ -295,28 +294,28 @@ std::unordered_map PluginManager::getLocalPlugins() { return res; } -std::unordered_map PluginManager::getAllScriptPlugins() { +std::unordered_map PluginManager::getAllScriptPlugins() { auto res = getAllPlugins(); erase_if(res, [](auto& item) { - return item.second->type != LL::Plugin::PluginType::ScriptPlugin; + return item.second->type != ll::Plugin::PluginType::ScriptPlugin; }); return res; } // Get all plugins -std::unordered_map PluginManager::getAllPlugins() { - return LL::PluginManager::getAllPlugins(); +std::unordered_map PluginManager::getAllPlugins() { + return ll::PluginManager::getAllPlugins(); } bool PluginManager::registerPlugin(std::string filePath, std::string name, std::string desc, - LL::Version version, std::map others) { + ll::Version version, std::map others) { others["PluginType"] = "Script Plugin"; others["PluginFilePath"] = filePath; - return LL::PluginManager::registerPlugin(NULL, name, desc, version, others); + return ll::PluginManager::registerPlugin(NULL, name, desc, version, others); } bool PluginManager::unRegisterPlugin(std::string name) { - return LL::PluginManager::unRegisterPlugin(name); + return ll::PluginManager::unRegisterPlugin(name); } // Get plugin backend type from its file path (single file plugin) diff --git a/ScriptEngine/Main/PluginManager.h b/ScriptEngine/src/main/PluginManager.h similarity index 69% rename from ScriptEngine/Main/PluginManager.h rename to ScriptEngine/src/main/PluginManager.h index 14138d6..d24c9e6 100644 --- a/ScriptEngine/Main/PluginManager.h +++ b/ScriptEngine/src/main/PluginManager.h @@ -2,7 +2,7 @@ #include #include #include -#include +#include class PluginManager { @@ -16,13 +16,13 @@ public: static bool reloadPlugin(const std::string& name); static bool reloadAllPlugins(); - static LL::Plugin* getPlugin(std::string name); - static std::unordered_map getLocalPlugins(); - static std::unordered_map getAllScriptPlugins(); - static std::unordered_map getAllPlugins(); + static ll::Plugin* getPlugin(std::string name); + static std::unordered_map getLocalPlugins(); + static std::unordered_map getAllScriptPlugins(); + static std::unordered_map getAllPlugins(); static std::string getPluginBackendType(const std::string &path); static bool registerPlugin(std::string filePath, std::string name, std::string desc, - LL::Version version, std::map others); + ll::Version version, std::map others); }; \ No newline at end of file diff --git a/ScriptEngine/Main/SafeGuardRecord.cpp b/ScriptEngine/src/main/SafeGuardRecord.cpp similarity index 95% rename from ScriptEngine/Main/SafeGuardRecord.cpp rename to ScriptEngine/src/main/SafeGuardRecord.cpp index 4befd53..f4a7efd 100644 --- a/ScriptEngine/Main/SafeGuardRecord.cpp +++ b/ScriptEngine/src/main/SafeGuardRecord.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include "Configs.h" using namespace std; ofstream record; diff --git a/ScriptEngine/Main/SafeGuardRecord.h b/ScriptEngine/src/main/SafeGuardRecord.h similarity index 100% rename from ScriptEngine/Main/SafeGuardRecord.h rename to ScriptEngine/src/main/SafeGuardRecord.h diff --git a/ScriptEngine/Main/ScriptEngine.cpp b/ScriptEngine/src/main/ScriptEngine.cpp similarity index 61% rename from ScriptEngine/Main/ScriptEngine.cpp rename to ScriptEngine/src/main/ScriptEngine.cpp index bd917c7..cefc004 100644 --- a/ScriptEngine/Main/ScriptEngine.cpp +++ b/ScriptEngine/src/main/ScriptEngine.cpp @@ -1,26 +1,25 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "SafeGuardRecord.h" #include #include #include #include #include #include -#include -#include -#include -#include -#include -#include +#include "Configs.h" +#include +#include +#include +#include +#include "EconomicSystem.h" using namespace std; // Global vars @@ -35,15 +34,15 @@ extern void LoadDebugEngine(); void entry() { // Enable thread SEH protection - if (!LL::isDebugMode()) + if (!ll::isDebugMode()) _set_se_translator(seh_exception::TranslateSEHtoCE); // Register myself - LL::registerPlugin(LLSE_LOADER_NAME, LLSE_LOADER_DESCRIPTION, LITELOADER_VERSION, + ll::registerPlugin(LLSE_LOADER_NAME, LLSE_LOADER_DESCRIPTION, LITELOADER_VERSION, {{"GitHub", "github.com/LiteLDev/LiteLoaderBDS"}}); // Load i18n files - Translation::loadFromImpl(GetCurrentModule(), LL::getLoaderHandle()); + Translation::loadFromImpl(GetCurrentModule(), ll::getLoaderHandle()); // Init global share data InitLocalShareData(); @@ -56,7 +55,7 @@ void entry() { } // Init builtin economy system - if (LL::globalConfig.enableEconomyCore) { + if (ll::globalConfig.enableEconomyCore) { EconomySystem::init(); } diff --git a/ScriptEngine/Main/dllmain.cpp b/ScriptEngine/src/main/dllmain.cpp similarity index 99% rename from ScriptEngine/Main/dllmain.cpp rename to ScriptEngine/src/main/dllmain.cpp index ac26621..b6d7294 100644 --- a/ScriptEngine/Main/dllmain.cpp +++ b/ScriptEngine/src/main/dllmain.cpp @@ -1,3 +1,4 @@ + #include #include diff --git a/ScriptEngine/Tools/IniHelper.cpp b/ScriptEngine/src/utils/IniHelper.cpp similarity index 97% rename from ScriptEngine/Tools/IniHelper.cpp rename to ScriptEngine/src/utils/IniHelper.cpp index b2973c7..15e6baa 100644 --- a/ScriptEngine/Tools/IniHelper.cpp +++ b/ScriptEngine/src/utils/IniHelper.cpp @@ -1,7 +1,7 @@ #include "IniHelper.h" #include -#include -#include +#include +#include using namespace std; extern Logger logger; diff --git a/ScriptEngine/Tools/IniHelper.h b/ScriptEngine/src/utils/IniHelper.h similarity index 100% rename from ScriptEngine/Tools/IniHelper.h rename to ScriptEngine/src/utils/IniHelper.h diff --git a/ScriptEngine/Tools/JsonHelper.h b/ScriptEngine/src/utils/JsonHelper.h similarity index 96% rename from ScriptEngine/Tools/JsonHelper.h rename to ScriptEngine/src/utils/JsonHelper.h index e514be2..cd4b018 100644 --- a/ScriptEngine/Tools/JsonHelper.h +++ b/ScriptEngine/src/utils/JsonHelper.h @@ -3,8 +3,8 @@ #include #include #include -#include -#include +#include +#include using namespace nlohmann; using namespace std; diff --git a/ScriptEngine/src/utils/UsingScriptX.inc b/ScriptEngine/src/utils/UsingScriptX.inc new file mode 100644 index 0000000..1b82259 --- /dev/null +++ b/ScriptEngine/src/utils/UsingScriptX.inc @@ -0,0 +1,24 @@ +#pragma once + +#include + +using script::Arguments; +using script::Array; +using script::Boolean; +using script::ByteBuffer; +using script::ClassDefine; +using script::defineClass; +using script::EngineScope; +using script::Exception; +using script::ExitEngineScope; +using script::Function; +using script::Local; +using script::Number; +using script::Object; +using script::ScriptClass; +using script::ScriptEngine; +using script::ScriptEngineImpl; +using script::selectOverloadedFunc; +using script::String; +using script::Value; +using script::ValueKind; diff --git a/ScriptEngine/Tools/Utils.cpp b/ScriptEngine/src/utils/Utils.cpp similarity index 97% rename from ScriptEngine/Tools/Utils.cpp rename to ScriptEngine/src/utils/Utils.cpp index 8291a15..f3a5a47 100644 --- a/ScriptEngine/Tools/Utils.cpp +++ b/ScriptEngine/src/utils/Utils.cpp @@ -7,8 +7,8 @@ #include #include #include -#include -#include +#include +#include using namespace std; vector SplitCmdLine(const string& paras) diff --git a/ScriptEngine/Tools/Utils.h b/ScriptEngine/src/utils/Utils.h similarity index 94% rename from ScriptEngine/Tools/Utils.h rename to ScriptEngine/src/utils/Utils.h index 9b4a1c4..1060b20 100644 --- a/ScriptEngine/Tools/Utils.h +++ b/ScriptEngine/src/utils/Utils.h @@ -1,5 +1,5 @@ #pragma once -#include "Global.h" +#include #include #include #include diff --git a/ScriptEngine/third-party/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt b/ScriptEngine/third-party/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt deleted file mode 100644 index 3740ed4..0000000 --- a/ScriptEngine/third-party/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -cmake_minimum_required (VERSION 3.8) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - -set(SCRIPTX_BACKEND V8) - -project(ScriptX-NodeJs) - -include_directories(../../../NodeJs/include/v8) -include(../../CMakeLists.txt) \ No newline at end of file diff --git a/ScriptEngine/third-party/SimpleIni/SimpleIni.h b/ScriptEngine/third-party/SimpleIni/SimpleIni.h deleted file mode 100644 index d6336db..0000000 --- a/ScriptEngine/third-party/SimpleIni/SimpleIni.h +++ /dev/null @@ -1,3474 +0,0 @@ -/** @mainpage - - -
Library SimpleIni -
File SimpleIni.h -
Author Brodie Thiesfield [brofield at gmail dot com] -
Source https://github.com/brofield/simpleini -
Version 4.17 -
- - Jump to the @link CSimpleIniTempl CSimpleIni @endlink interface documentation. - - @section intro INTRODUCTION - - This component allows an INI-style configuration file to be used on both - Windows and Linux/Unix. It is fast, simple and source code using this - component will compile unchanged on either OS. - - - @section features FEATURES - - - MIT Licence allows free use in all software (including GPL and commercial) - - multi-platform (Windows CE/9x/NT..10/etc, Linux, MacOSX, Unix) - - loading and saving of INI-style configuration files - - configuration files can have any newline format on all platforms - - liberal acceptance of file format - - key/values with no section - - removal of whitespace around sections, keys and values - - support for multi-line values (values with embedded newline characters) - - optional support for multiple keys with the same name - - optional case-insensitive sections and keys (for ASCII characters only) - - saves files with sections and keys in the same order as they were loaded - - preserves comments on the file, section and keys where possible. - - supports both char or wchar_t programming interfaces - - supports both MBCS (system locale) and UTF-8 file encodings - - system locale does not need to be UTF-8 on Linux/Unix to load UTF-8 file - - support for non-ASCII characters in section, keys, values and comments - - support for non-standard character types or file encodings - via user-written converter classes - - support for adding/modifying values programmatically - - compiles cleanly in the following compilers: - - Windows/VC6 (warning level 3) - - Windows/VC.NET 2003 (warning level 4) - - Windows/VC 2005 (warning level 4) - - Linux/gcc (-Wall) - - - @section usage USAGE SUMMARY - - -# Define the appropriate symbol for the converter you wish to use and - include the SimpleIni.h header file. If no specific converter is defined - then the default converter is used. The default conversion mode uses - SI_CONVERT_WIN32 on Windows and SI_CONVERT_GENERIC on all other - platforms. If you are using ICU then SI_CONVERT_ICU is supported on all - platforms. - -# Declare an instance the appropriate class. Note that the following - definitions are just shortcuts for commonly used types. Other types - (PRUnichar, unsigned short, unsigned char) are also possible. - -
Interface Case-sensitive Load UTF-8 Load MBCS Typedef -
SI_CONVERT_GENERIC -
char No Yes Yes #1 CSimpleIniA -
char Yes Yes Yes CSimpleIniCaseA -
wchar_t No Yes Yes CSimpleIniW -
wchar_t Yes Yes Yes CSimpleIniCaseW -
SI_CONVERT_WIN32 -
char No No #2 Yes CSimpleIniA -
char Yes Yes Yes CSimpleIniCaseA -
wchar_t No Yes Yes CSimpleIniW -
wchar_t Yes Yes Yes CSimpleIniCaseW -
SI_CONVERT_ICU -
char No Yes Yes CSimpleIniA -
char Yes Yes Yes CSimpleIniCaseA -
UChar No Yes Yes CSimpleIniW -
UChar Yes Yes Yes CSimpleIniCaseW -
- #1 On Windows you are better to use CSimpleIniA with SI_CONVERT_WIN32.
- #2 Only affects Windows. On Windows this uses MBCS functions and - so may fold case incorrectly leading to uncertain results. - -# Call LoadData() or LoadFile() to load and parse the INI configuration file - -# Access and modify the data of the file using the following functions - -
GetAllSections Return all section names -
GetAllKeys Return all key names within a section -
GetAllValues Return all values within a section & key -
GetSection Return all key names and values in a section -
GetSectionSize Return the number of keys in a section -
GetValue Return a value for a section & key -
SetValue Add or update a value for a section & key -
Delete Remove a section, or a key from a section -
- -# Call Save() or SaveFile() to save the INI configuration data - - @section iostreams IO STREAMS - - SimpleIni supports reading from and writing to STL IO streams. Enable this - by defining SI_SUPPORT_IOSTREAMS before including the SimpleIni.h header - file. Ensure that if the streams are backed by a file (e.g. ifstream or - ofstream) then the flag ios_base::binary has been used when the file was - opened. - - @section multiline MULTI-LINE VALUES - - Values that span multiple lines are created using the following format. - -
-        key = <<
-
-    Note the following:
-    - The text used for ENDTAG can be anything and is used to find
-      where the multi-line text ends.
-    - The newline after ENDTAG in the start tag, and the newline
-      before ENDTAG in the end tag is not included in the data value.
-    - The ending tag must be on it's own line with no whitespace before
-      or after it.
-    - The multi-line value is modified at load so that each line in the value
-      is delimited by a single '\\n' character on all platforms. At save time
-      it will be converted into the newline format used by the current
-      platform.
-
-    @section comments COMMENTS
-
-    Comments are preserved in the file within the following restrictions:
-    - Every file may have a single "file comment". It must start with the
-      first character in the file, and will end with the first non-comment
-      line in the file.
-    - Every section may have a single "section comment". It will start
-      with the first comment line following the file comment, or the last
-      data entry. It ends at the beginning of the section.
-    - Every key may have a single "key comment". This comment will start
-      with the first comment line following the section start, or the file
-      comment if there is no section name.
-    - Comments are set at the time that the file, section or key is first
-      created. The only way to modify a comment on a section or a key is to
-      delete that entry and recreate it with the new comment. There is no
-      way to change the file comment.
-
-    @section save SAVE ORDER
-
-    The sections and keys are written out in the same order as they were
-    read in from the file. Sections and keys added to the data after the
-    file has been loaded will be added to the end of the file when it is
-    written. There is no way to specify the location of a section or key
-    other than in first-created, first-saved order.
-
-    @section notes NOTES
-
-    - To load UTF-8 data on Windows 95, you need to use Microsoft Layer for
-      Unicode, or SI_CONVERT_GENERIC, or SI_CONVERT_ICU.
-    - When using SI_CONVERT_GENERIC, ConvertUTF.c must be compiled and linked.
-    - When using SI_CONVERT_ICU, ICU header files must be on the include
-      path and icuuc.lib must be linked in.
-    - To load a UTF-8 file on Windows AND expose it with SI_CHAR == char,
-      you should use SI_CONVERT_GENERIC.
-    - The collation (sorting) order used for sections and keys returned from
-      iterators is NOT DEFINED. If collation order of the text is important
-      then it should be done yourself by either supplying a replacement
-      SI_STRLESS class, or by sorting the strings external to this library.
-    - Usage of the  header on Windows can be disabled by defining
-      SI_NO_MBCS. This is defined automatically on Windows CE platforms.
-    - Not thread-safe so manage your own locking
-
-    @section contrib CONTRIBUTIONS
-    
-    - 2010/05/03: Tobias Gehrig: added GetDoubleValue()
-
-    @section licence MIT LICENCE
-
-    The licence text below is the boilerplate "MIT Licence" used from:
-    http://www.opensource.org/licenses/mit-license.php
-
-    Copyright (c) 2006-2012, Brodie Thiesfield
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is furnished
-    to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in
-    all copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-    FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-    COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-    IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef INCLUDED_SimpleIni_h
-#define INCLUDED_SimpleIni_h
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-// Disable these warnings in MSVC:
-//  4127 "conditional expression is constant" as the conversion classes trigger
-//  it with the statement if (sizeof(SI_CHAR) == sizeof(char)). This test will
-//  be optimized away in a release build.
-//  4503 'insert' : decorated name length exceeded, name was truncated
-//  4702 "unreachable code" as the MS STL header causes it in release mode.
-//  Again, the code causing the warning will be cleaned up by the compiler.
-//  4786 "identifier truncated to 256 characters" as this is thrown hundreds
-//  of times VC6 as soon as STL is used.
-#ifdef _MSC_VER
-# pragma warning (push)
-# pragma warning (disable: 4127 4503 4702 4786)
-#endif
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#ifdef SI_SUPPORT_IOSTREAMS
-# include 
-#endif // SI_SUPPORT_IOSTREAMS
-
-#ifdef _DEBUG
-# ifndef assert
-#  include 
-# endif
-# define SI_ASSERT(x)   assert(x)
-#else
-# define SI_ASSERT(x)
-#endif
-
-enum SI_Error {
-    SI_OK       =  0,   //!< No error
-    SI_UPDATED  =  1,   //!< An existing value was updated
-    SI_INSERTED =  2,   //!< A new value was inserted
-
-    // note: test for any error with (retval < 0)
-    SI_FAIL     = -1,   //!< Generic failure
-    SI_NOMEM    = -2,   //!< Out of memory error
-    SI_FILE     = -3    //!< File error (see errno for detail error)
-};
-
-#define SI_UTF8_SIGNATURE     "\xEF\xBB\xBF"
-
-#ifdef _WIN32
-# define SI_NEWLINE_A   "\r\n"
-# define SI_NEWLINE_W   L"\r\n"
-#else // !_WIN32
-# define SI_NEWLINE_A   "\n"
-# define SI_NEWLINE_W   L"\n"
-#endif // _WIN32
-
-#if defined(SI_CONVERT_ICU)
-# include 
-#endif
-
-#if defined(_WIN32)
-# define SI_HAS_WIDE_FILE
-# define SI_WCHAR_T     wchar_t
-#elif defined(SI_CONVERT_ICU)
-# define SI_HAS_WIDE_FILE
-# define SI_WCHAR_T     UChar
-#endif
-
-
-// ---------------------------------------------------------------------------
-//                              MAIN TEMPLATE CLASS
-// ---------------------------------------------------------------------------
-
-/** Simple INI file reader.
-
-    This can be instantiated with the choice of unicode or native characterset,
-    and case sensitive or insensitive comparisons of section and key names.
-    The supported combinations are pre-defined with the following typedefs:
-
-    
-        
Interface Case-sensitive Typedef -
char No CSimpleIniA -
char Yes CSimpleIniCaseA -
wchar_t No CSimpleIniW -
wchar_t Yes CSimpleIniCaseW -
- - Note that using other types for the SI_CHAR is supported. For instance, - unsigned char, unsigned short, etc. Note that where the alternative type - is a different size to char/wchar_t you may need to supply new helper - classes for SI_STRLESS and SI_CONVERTER. - */ -template -class CSimpleIniTempl -{ -public: - typedef SI_CHAR SI_CHAR_T; - - /** key entry */ - struct Entry { - const SI_CHAR * pItem; - const SI_CHAR * pComment; - int nOrder; - - Entry(const SI_CHAR * a_pszItem = NULL, int a_nOrder = 0) - : pItem(a_pszItem) - , pComment(NULL) - , nOrder(a_nOrder) - { } - Entry(const SI_CHAR * a_pszItem, const SI_CHAR * a_pszComment, int a_nOrder) - : pItem(a_pszItem) - , pComment(a_pszComment) - , nOrder(a_nOrder) - { } - Entry(const Entry & rhs) { operator=(rhs); } - Entry & operator=(const Entry & rhs) { - pItem = rhs.pItem; - pComment = rhs.pComment; - nOrder = rhs.nOrder; - return *this; - } - -#if defined(_MSC_VER) && _MSC_VER <= 1200 - /** STL of VC6 doesn't allow me to specify my own comparator for list::sort() */ - bool operator<(const Entry & rhs) const { return LoadOrder()(*this, rhs); } - bool operator>(const Entry & rhs) const { return LoadOrder()(rhs, *this); } -#endif - - /** Strict less ordering by name of key only */ - struct KeyOrder { - bool operator()(const Entry & lhs, const Entry & rhs) const { - const static SI_STRLESS isLess = SI_STRLESS(); - return isLess(lhs.pItem, rhs.pItem); - } - }; - - /** Strict less ordering by order, and then name of key */ - struct LoadOrder { - bool operator()(const Entry & lhs, const Entry & rhs) const { - if (lhs.nOrder != rhs.nOrder) { - return lhs.nOrder < rhs.nOrder; - } - return KeyOrder()(lhs.pItem, rhs.pItem); - } - }; - }; - - /** map keys to values */ - typedef std::multimap TKeyVal; - - /** map sections to key/value map */ - typedef std::map TSection; - - /** set of dependent string pointers. Note that these pointers are - dependent on memory owned by CSimpleIni. - */ - typedef std::list TNamesDepend; - - /** interface definition for the OutputWriter object to pass to Save() - in order to output the INI file data. - */ - class OutputWriter { - public: - OutputWriter() { } - virtual ~OutputWriter() { } - virtual void Write(const char * a_pBuf) = 0; - private: - OutputWriter(const OutputWriter &); // disable - OutputWriter & operator=(const OutputWriter &); // disable - }; - - /** OutputWriter class to write the INI data to a file */ - class FileWriter : public OutputWriter { - FILE * m_file; - public: - FileWriter(FILE * a_file) : m_file(a_file) { } - void Write(const char * a_pBuf) { - fputs(a_pBuf, m_file); - } - private: - FileWriter(const FileWriter &); // disable - FileWriter & operator=(const FileWriter &); // disable - }; - - /** OutputWriter class to write the INI data to a string */ - class StringWriter : public OutputWriter { - std::string & m_string; - public: - StringWriter(std::string & a_string) : m_string(a_string) { } - void Write(const char * a_pBuf) { - m_string.append(a_pBuf); - } - private: - StringWriter(const StringWriter &); // disable - StringWriter & operator=(const StringWriter &); // disable - }; - -#ifdef SI_SUPPORT_IOSTREAMS - /** OutputWriter class to write the INI data to an ostream */ - class StreamWriter : public OutputWriter { - std::ostream & m_ostream; - public: - StreamWriter(std::ostream & a_ostream) : m_ostream(a_ostream) { } - void Write(const char * a_pBuf) { - m_ostream << a_pBuf; - } - private: - StreamWriter(const StreamWriter &); // disable - StreamWriter & operator=(const StreamWriter &); // disable - }; -#endif // SI_SUPPORT_IOSTREAMS - - /** Characterset conversion utility class to convert strings to the - same format as is used for the storage. - */ - class Converter : private SI_CONVERTER { - public: - Converter(bool a_bStoreIsUtf8) : SI_CONVERTER(a_bStoreIsUtf8) { - m_scratch.resize(1024); - } - Converter(const Converter & rhs) { operator=(rhs); } - Converter & operator=(const Converter & rhs) { - m_scratch = rhs.m_scratch; - return *this; - } - bool ConvertToStore(const SI_CHAR * a_pszString) { - size_t uLen = SI_CONVERTER::SizeToStore(a_pszString); - if (uLen == (size_t)(-1)) { - return false; - } - while (uLen > m_scratch.size()) { - m_scratch.resize(m_scratch.size() * 2); - } - return SI_CONVERTER::ConvertToStore( - a_pszString, - const_cast(m_scratch.data()), - m_scratch.size()); - } - const char * Data() { return m_scratch.data(); } - private: - std::string m_scratch; - }; - -public: - /*-----------------------------------------------------------------------*/ - - /** Default constructor. - - @param a_bIsUtf8 See the method SetUnicode() for details. - @param a_bMultiKey See the method SetMultiKey() for details. - @param a_bMultiLine See the method SetMultiLine() for details. - */ - CSimpleIniTempl( - bool a_bIsUtf8 = false, - bool a_bMultiKey = false, - bool a_bMultiLine = false - ); - - /** Destructor */ - ~CSimpleIniTempl(); - - /** Deallocate all memory stored by this object */ - void Reset(); - - /** Has any data been loaded */ - bool IsEmpty() const { return m_data.empty(); } - - /*-----------------------------------------------------------------------*/ - /** @{ @name Settings */ - - /** Set the storage format of the INI data. This affects both the loading - and saving of the INI data using all of the Load/Save API functions. - This value cannot be changed after any INI data has been loaded. - - If the file is not set to Unicode (UTF-8), then the data encoding is - assumed to be the OS native encoding. This encoding is the system - locale on Linux/Unix and the legacy MBCS encoding on Windows NT/2K/XP. - If the storage format is set to Unicode then the file will be loaded - as UTF-8 encoded data regardless of the native file encoding. If - SI_CHAR == char then all of the char* parameters take and return UTF-8 - encoded data regardless of the system locale. - - \param a_bIsUtf8 Assume UTF-8 encoding for the source? - */ - void SetUnicode(bool a_bIsUtf8 = true) { - if (!m_pData) m_bStoreIsUtf8 = a_bIsUtf8; - } - - /** Get the storage format of the INI data. */ - bool IsUnicode() const { return m_bStoreIsUtf8; } - - /** Should multiple identical keys be permitted in the file. If set to false - then the last value encountered will be used as the value of the key. - If set to true, then all values will be available to be queried. For - example, with the following input: - -
-        [section]
-        test=value1
-        test=value2
-        
- - Then with SetMultiKey(true), both of the values "value1" and "value2" - will be returned for the key test. If SetMultiKey(false) is used, then - the value for "test" will only be "value2". This value may be changed - at any time. - - \param a_bAllowMultiKey Allow multi-keys in the source? - */ - void SetMultiKey(bool a_bAllowMultiKey = true) { - m_bAllowMultiKey = a_bAllowMultiKey; - } - - /** Get the storage format of the INI data. */ - bool IsMultiKey() const { return m_bAllowMultiKey; } - - /** Should data values be permitted to span multiple lines in the file. If - set to false then the multi-line construct << - SI_CHAR FORMAT - char same format as when loaded (MBCS or UTF-8) - wchar_t UTF-8 - other UTF-8 - - - Note that comments from the original data is preserved as per the - documentation on comments. The order of the sections and values - from the original file will be preserved. - - Any data prepended or appended to the output device must use the the - same format (MBCS or UTF-8). You may use the GetConverter() method to - convert text to the correct format regardless of the output format - being used by SimpleIni. - - To add a BOM to UTF-8 data, write it out manually at the very beginning - like is done in SaveFile when a_bUseBOM is true. - - @param a_oOutput Output writer to write the data to. - - @param a_bAddSignature Prepend the UTF-8 BOM if the output data is in - UTF-8 format. If it is not UTF-8 then this value is - ignored. Do not set this to true if anything has - already been written to the OutputWriter. - - @return SI_Error See error definitions - */ - SI_Error Save( - OutputWriter & a_oOutput, - bool a_bAddSignature = false - ) const; - -#ifdef SI_SUPPORT_IOSTREAMS - /** Save the INI data to an ostream. See Save() for details. - - @param a_ostream String to have the INI data appended to. - - @param a_bAddSignature Prepend the UTF-8 BOM if the output data is in - UTF-8 format. If it is not UTF-8 then this value is - ignored. Do not set this to true if anything has - already been written to the stream. - - @return SI_Error See error definitions - */ - SI_Error Save( - std::ostream & a_ostream, - bool a_bAddSignature = false - ) const - { - StreamWriter writer(a_ostream); - return Save(writer, a_bAddSignature); - } -#endif // SI_SUPPORT_IOSTREAMS - - /** Append the INI data to a string. See Save() for details. - - @param a_sBuffer String to have the INI data appended to. - - @param a_bAddSignature Prepend the UTF-8 BOM if the output data is in - UTF-8 format. If it is not UTF-8 then this value is - ignored. Do not set this to true if anything has - already been written to the string. - - @return SI_Error See error definitions - */ - SI_Error Save( - std::string & a_sBuffer, - bool a_bAddSignature = false - ) const - { - StringWriter writer(a_sBuffer); - return Save(writer, a_bAddSignature); - } - - /*-----------------------------------------------------------------------*/ - /** @} - @{ @name Accessing INI Data */ - - /** Retrieve all section names. The list is returned as an STL vector of - names and can be iterated or searched as necessary. Note that the - sort order of the returned strings is NOT DEFINED. You can sort - the names into the load order if desired. Search this file for ".sort" - for an example. - - NOTE! This structure contains only pointers to strings. The actual - string data is stored in memory owned by CSimpleIni. Ensure that the - CSimpleIni object is not destroyed or Reset() while these pointers - are in use! - - @param a_names Vector that will receive all of the section - names. See note above! - */ - void GetAllSections( - TNamesDepend & a_names - ) const; - - /** Retrieve all unique key names in a section. The sort order of the - returned strings is NOT DEFINED. You can sort the names into the load - order if desired. Search this file for ".sort" for an example. Only - unique key names are returned. - - NOTE! This structure contains only pointers to strings. The actual - string data is stored in memory owned by CSimpleIni. Ensure that the - CSimpleIni object is not destroyed or Reset() while these strings - are in use! - - @param a_pSection Section to request data for - @param a_names List that will receive all of the key - names. See note above! - - @return true Section was found. - @return false Matching section was not found. - */ - bool GetAllKeys( - const SI_CHAR * a_pSection, - TNamesDepend & a_names - ) const; - - /** Retrieve all values for a specific key. This method can be used when - multiple keys are both enabled and disabled. Note that the sort order - of the returned strings is NOT DEFINED. You can sort the names into - the load order if desired. Search this file for ".sort" for an example. - - NOTE! The returned values are pointers to string data stored in memory - owned by CSimpleIni. Ensure that the CSimpleIni object is not destroyed - or Reset while you are using this pointer! - - @param a_pSection Section to search - @param a_pKey Key to search for - @param a_values List to return if the key is not found - - @return true Key was found. - @return false Matching section/key was not found. - */ - bool GetAllValues( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - TNamesDepend & a_values - ) const; - - /** Query the number of keys in a specific section. Note that if multiple - keys are enabled, then this value may be different to the number of - keys returned by GetAllKeys. - - @param a_pSection Section to request data for - - @return -1 Section does not exist in the file - @return >=0 Number of keys in the section - */ - int GetSectionSize( - const SI_CHAR * a_pSection - ) const; - - /** Retrieve all key and value pairs for a section. The data is returned - as a pointer to an STL map and can be iterated or searched as - desired. Note that multiple entries for the same key may exist when - multiple keys have been enabled. - - NOTE! This structure contains only pointers to strings. The actual - string data is stored in memory owned by CSimpleIni. Ensure that the - CSimpleIni object is not destroyed or Reset() while these strings - are in use! - - @param a_pSection Name of the section to return - @return boolean Was a section matching the supplied - name found. - */ - const TKeyVal * GetSection( - const SI_CHAR * a_pSection - ) const; - - /** Retrieve the value for a specific key. If multiple keys are enabled - (see SetMultiKey) then only the first value associated with that key - will be returned, see GetAllValues for getting all values with multikey. - - NOTE! The returned value is a pointer to string data stored in memory - owned by CSimpleIni. Ensure that the CSimpleIni object is not destroyed - or Reset while you are using this pointer! - - @param a_pSection Section to search - @param a_pKey Key to search for - @param a_pDefault Value to return if the key is not found - @param a_pHasMultiple Optionally receive notification of if there are - multiple entries for this key. - - @return a_pDefault Key was not found in the section - @return other Value of the key - */ - const SI_CHAR * GetValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - const SI_CHAR * a_pDefault = NULL, - bool * a_pHasMultiple = NULL - ) const; - - /** Retrieve a numeric value for a specific key. If multiple keys are enabled - (see SetMultiKey) then only the first value associated with that key - will be returned, see GetAllValues for getting all values with multikey. - - @param a_pSection Section to search - @param a_pKey Key to search for - @param a_nDefault Value to return if the key is not found - @param a_pHasMultiple Optionally receive notification of if there are - multiple entries for this key. - - @return a_nDefault Key was not found in the section - @return other Value of the key - */ - long GetLongValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - long a_nDefault = 0, - bool * a_pHasMultiple = NULL - ) const; - - /** Retrieve a numeric value for a specific key. If multiple keys are enabled - (see SetMultiKey) then only the first value associated with that key - will be returned, see GetAllValues for getting all values with multikey. - - @param a_pSection Section to search - @param a_pKey Key to search for - @param a_nDefault Value to return if the key is not found - @param a_pHasMultiple Optionally receive notification of if there are - multiple entries for this key. - - @return a_nDefault Key was not found in the section - @return other Value of the key - */ - double GetDoubleValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - double a_nDefault = 0, - bool * a_pHasMultiple = NULL - ) const; - - /** Retrieve a boolean value for a specific key. If multiple keys are enabled - (see SetMultiKey) then only the first value associated with that key - will be returned, see GetAllValues for getting all values with multikey. - - Strings starting with "t", "y", "on" or "1" are returned as logically true. - Strings starting with "f", "n", "of" or "0" are returned as logically false. - For all other values the default is returned. Character comparisons are - case-insensitive. - - @param a_pSection Section to search - @param a_pKey Key to search for - @param a_bDefault Value to return if the key is not found - @param a_pHasMultiple Optionally receive notification of if there are - multiple entries for this key. - - @return a_nDefault Key was not found in the section - @return other Value of the key - */ - bool GetBoolValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - bool a_bDefault = false, - bool * a_pHasMultiple = NULL - ) const; - - /** Add or update a section or value. This will always insert - when multiple keys are enabled. - - @param a_pSection Section to add or update - @param a_pKey Key to add or update. Set to NULL to - create an empty section. - @param a_pValue Value to set. Set to NULL to create an - empty section. - @param a_pComment Comment to be associated with the section or the - key. If a_pKey is NULL then it will be associated - with the section, otherwise the key. Note that a - comment may be set ONLY when the section or key is - first created (i.e. when this function returns the - value SI_INSERTED). If you wish to create a section - with a comment then you need to create the section - separately to the key. The comment string must be - in full comment form already (have a comment - character starting every line). - @param a_bForceReplace Should all existing values in a multi-key INI - file be replaced with this entry. This option has - no effect if not using multi-key files. The - difference between Delete/SetValue and SetValue - with a_bForceReplace = true, is that the load - order and comment will be preserved this way. - - @return SI_Error See error definitions - @return SI_UPDATED Value was updated - @return SI_INSERTED Value was inserted - */ - SI_Error SetValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - const SI_CHAR * a_pValue, - const SI_CHAR * a_pComment = NULL, - bool a_bForceReplace = false - ) - { - return AddEntry(a_pSection, a_pKey, a_pValue, a_pComment, a_bForceReplace, true); - } - - /** Add or update a numeric value. This will always insert - when multiple keys are enabled. - - @param a_pSection Section to add or update - @param a_pKey Key to add or update. - @param a_nValue Value to set. - @param a_pComment Comment to be associated with the key. See the - notes on SetValue() for comments. - @param a_bUseHex By default the value will be written to the file - in decimal format. Set this to true to write it - as hexadecimal. - @param a_bForceReplace Should all existing values in a multi-key INI - file be replaced with this entry. This option has - no effect if not using multi-key files. The - difference between Delete/SetLongValue and - SetLongValue with a_bForceReplace = true, is that - the load order and comment will be preserved this - way. - - @return SI_Error See error definitions - @return SI_UPDATED Value was updated - @return SI_INSERTED Value was inserted - */ - SI_Error SetLongValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - long a_nValue, - const SI_CHAR * a_pComment = NULL, - bool a_bUseHex = false, - bool a_bForceReplace = false - ); - - /** Add or update a double value. This will always insert - when multiple keys are enabled. - - @param a_pSection Section to add or update - @param a_pKey Key to add or update. - @param a_nValue Value to set. - @param a_pComment Comment to be associated with the key. See the - notes on SetValue() for comments. - @param a_bForceReplace Should all existing values in a multi-key INI - file be replaced with this entry. This option has - no effect if not using multi-key files. The - difference between Delete/SetDoubleValue and - SetDoubleValue with a_bForceReplace = true, is that - the load order and comment will be preserved this - way. - - @return SI_Error See error definitions - @return SI_UPDATED Value was updated - @return SI_INSERTED Value was inserted - */ - SI_Error SetDoubleValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - double a_nValue, - const SI_CHAR * a_pComment = NULL, - bool a_bForceReplace = false - ); - - /** Add or update a boolean value. This will always insert - when multiple keys are enabled. - - @param a_pSection Section to add or update - @param a_pKey Key to add or update. - @param a_bValue Value to set. - @param a_pComment Comment to be associated with the key. See the - notes on SetValue() for comments. - @param a_bForceReplace Should all existing values in a multi-key INI - file be replaced with this entry. This option has - no effect if not using multi-key files. The - difference between Delete/SetBoolValue and - SetBoolValue with a_bForceReplace = true, is that - the load order and comment will be preserved this - way. - - @return SI_Error See error definitions - @return SI_UPDATED Value was updated - @return SI_INSERTED Value was inserted - */ - SI_Error SetBoolValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - bool a_bValue, - const SI_CHAR * a_pComment = NULL, - bool a_bForceReplace = false - ); - - /** Delete an entire section, or a key from a section. Note that the - data returned by GetSection is invalid and must not be used after - anything has been deleted from that section using this method. - Note when multiple keys is enabled, this will delete all keys with - that name; to selectively delete individual key/values, use - DeleteValue. - - @param a_pSection Section to delete key from, or if - a_pKey is NULL, the section to remove. - @param a_pKey Key to remove from the section. Set to - NULL to remove the entire section. - @param a_bRemoveEmpty If the section is empty after this key has - been deleted, should the empty section be - removed? - - @return true Key or section was deleted. - @return false Key or section was not found. - */ - bool Delete( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - bool a_bRemoveEmpty = false - ); - - /** Delete an entire section, or a key from a section. If value is - provided, only remove keys with the value. Note that the data - returned by GetSection is invalid and must not be used after - anything has been deleted from that section using this method. - Note when multiple keys is enabled, all keys with the value will - be deleted. - - @param a_pSection Section to delete key from, or if - a_pKey is NULL, the section to remove. - @param a_pKey Key to remove from the section. Set to - NULL to remove the entire section. - @param a_pValue Value of key to remove from the section. - Set to NULL to remove all keys. - @param a_bRemoveEmpty If the section is empty after this key has - been deleted, should the empty section be - removed? - - @return true Key/value or section was deleted. - @return false Key/value or section was not found. - */ - bool DeleteValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - const SI_CHAR * a_pValue, - bool a_bRemoveEmpty = false - ); - - /*-----------------------------------------------------------------------*/ - /** @} - @{ @name Converter */ - - /** Return a conversion object to convert text to the same encoding - as is used by the Save(), SaveFile() and SaveString() functions. - Use this to prepare the strings that you wish to append or prepend - to the output INI data. - */ - Converter GetConverter() const { - return Converter(m_bStoreIsUtf8); - } - - /*-----------------------------------------------------------------------*/ - /** @} */ - -private: - // copying is not permitted - CSimpleIniTempl(const CSimpleIniTempl &); // disabled - CSimpleIniTempl & operator=(const CSimpleIniTempl &); // disabled - - /** Parse the data looking for a file comment and store it if found. - */ - SI_Error FindFileComment( - SI_CHAR *& a_pData, - bool a_bCopyStrings - ); - - /** Parse the data looking for the next valid entry. The memory pointed to - by a_pData is modified by inserting NULL characters. The pointer is - updated to the current location in the block of text. - */ - bool FindEntry( - SI_CHAR *& a_pData, - const SI_CHAR *& a_pSection, - const SI_CHAR *& a_pKey, - const SI_CHAR *& a_pVal, - const SI_CHAR *& a_pComment - ) const; - - /** Add the section/key/value to our data. - - @param a_pSection Section name. Sections will be created if they - don't already exist. - @param a_pKey Key name. May be NULL to create an empty section. - Existing entries will be updated. New entries will - be created. - @param a_pValue Value for the key. - @param a_pComment Comment to be associated with the section or the - key. If a_pKey is NULL then it will be associated - with the section, otherwise the key. This must be - a string in full comment form already (have a - comment character starting every line). - @param a_bForceReplace Should all existing values in a multi-key INI - file be replaced with this entry. This option has - no effect if not using multi-key files. The - difference between Delete/AddEntry and AddEntry - with a_bForceReplace = true, is that the load - order and comment will be preserved this way. - @param a_bCopyStrings Should copies of the strings be made or not. - If false then the pointers will be used as is. - */ - SI_Error AddEntry( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - const SI_CHAR * a_pValue, - const SI_CHAR * a_pComment, - bool a_bForceReplace, - bool a_bCopyStrings - ); - - /** Is the supplied character a whitespace character? */ - inline bool IsSpace(SI_CHAR ch) const { - return (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n'); - } - - /** Does the supplied character start a comment line? */ - inline bool IsComment(SI_CHAR ch) const { - return (ch == ';' || ch == '#'); - } - - - /** Skip over a newline character (or characters) for either DOS or UNIX */ - inline void SkipNewLine(SI_CHAR *& a_pData) const { - a_pData += (*a_pData == '\r' && *(a_pData+1) == '\n') ? 2 : 1; - } - - /** Make a copy of the supplied string, replacing the original pointer */ - SI_Error CopyString(const SI_CHAR *& a_pString); - - /** Delete a string from the copied strings buffer if necessary */ - void DeleteString(const SI_CHAR * a_pString); - - /** Internal use of our string comparison function */ - bool IsLess(const SI_CHAR * a_pLeft, const SI_CHAR * a_pRight) const { - const static SI_STRLESS isLess = SI_STRLESS(); - return isLess(a_pLeft, a_pRight); - } - - bool IsMultiLineTag(const SI_CHAR * a_pData) const; - bool IsMultiLineData(const SI_CHAR * a_pData) const; - bool LoadMultiLineText( - SI_CHAR *& a_pData, - const SI_CHAR *& a_pVal, - const SI_CHAR * a_pTagName, - bool a_bAllowBlankLinesInComment = false - ) const; - bool IsNewLineChar(SI_CHAR a_c) const; - - bool OutputMultiLineText( - OutputWriter & a_oOutput, - Converter & a_oConverter, - const SI_CHAR * a_pText - ) const; - -private: - /** Copy of the INI file data in our character format. This will be - modified when parsed to have NULL characters added after all - interesting string entries. All of the string pointers to sections, - keys and values point into this block of memory. - */ - SI_CHAR * m_pData; - - /** Length of the data that we have stored. Used when deleting strings - to determine if the string is stored here or in the allocated string - buffer. - */ - size_t m_uDataLen; - - /** File comment for this data, if one exists. */ - const SI_CHAR * m_pFileComment; - - /** Parsed INI data. Section -> (Key -> Value). */ - TSection m_data; - - /** This vector stores allocated memory for copies of strings that have - been supplied after the file load. It will be empty unless SetValue() - has been called. - */ - TNamesDepend m_strings; - - /** Is the format of our datafile UTF-8 or MBCS? */ - bool m_bStoreIsUtf8; - - /** Are multiple values permitted for the same key? */ - bool m_bAllowMultiKey; - - /** Are data values permitted to span multiple lines? */ - bool m_bAllowMultiLine; - - /** Should spaces be written out surrounding the equals sign? */ - bool m_bSpaces; - - /** Next order value, used to ensure sections and keys are output in the - same order that they are loaded/added. - */ - int m_nOrder; -}; - -// --------------------------------------------------------------------------- -// IMPLEMENTATION -// --------------------------------------------------------------------------- - -template -CSimpleIniTempl::CSimpleIniTempl( - bool a_bIsUtf8, - bool a_bAllowMultiKey, - bool a_bAllowMultiLine - ) - : m_pData(0) - , m_uDataLen(0) - , m_pFileComment(NULL) - , m_bStoreIsUtf8(a_bIsUtf8) - , m_bAllowMultiKey(a_bAllowMultiKey) - , m_bAllowMultiLine(a_bAllowMultiLine) - , m_bSpaces(true) - , m_nOrder(0) -{ } - -template -CSimpleIniTempl::~CSimpleIniTempl() -{ - Reset(); -} - -template -void -CSimpleIniTempl::Reset() -{ - // remove all data - delete[] m_pData; - m_pData = NULL; - m_uDataLen = 0; - m_pFileComment = NULL; - if (!m_data.empty()) { - m_data.erase(m_data.begin(), m_data.end()); - } - - // remove all strings - if (!m_strings.empty()) { - typename TNamesDepend::iterator i = m_strings.begin(); - for (; i != m_strings.end(); ++i) { - delete[] const_cast(i->pItem); - } - m_strings.erase(m_strings.begin(), m_strings.end()); - } -} - -template -SI_Error -CSimpleIniTempl::LoadFile( - const char * a_pszFile - ) -{ - FILE * fp = NULL; -#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE - fopen_s(&fp, a_pszFile, "rb"); -#else // !__STDC_WANT_SECURE_LIB__ - fp = fopen(a_pszFile, "rb"); -#endif // __STDC_WANT_SECURE_LIB__ - if (!fp) { - return SI_FILE; - } - SI_Error rc = LoadFile(fp); - fclose(fp); - return rc; -} - -#ifdef SI_HAS_WIDE_FILE -template -SI_Error -CSimpleIniTempl::LoadFile( - const SI_WCHAR_T * a_pwszFile - ) -{ -#ifdef _WIN32 - FILE * fp = NULL; -#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE - _wfopen_s(&fp, a_pwszFile, L"rb"); -#else // !__STDC_WANT_SECURE_LIB__ - fp = _wfopen(a_pwszFile, L"rb"); -#endif // __STDC_WANT_SECURE_LIB__ - if (!fp) return SI_FILE; - SI_Error rc = LoadFile(fp); - fclose(fp); - return rc; -#else // !_WIN32 (therefore SI_CONVERT_ICU) - char szFile[256]; - u_austrncpy(szFile, a_pwszFile, sizeof(szFile)); - return LoadFile(szFile); -#endif // _WIN32 -} -#endif // SI_HAS_WIDE_FILE - -template -SI_Error -CSimpleIniTempl::LoadFile( - FILE * a_fpFile - ) -{ - // load the raw file data - int retval = fseek(a_fpFile, 0, SEEK_END); - if (retval != 0) { - return SI_FILE; - } - long lSize = ftell(a_fpFile); - if (lSize < 0) { - return SI_FILE; - } - if (lSize == 0) { - return SI_OK; - } - - // allocate and ensure NULL terminated - char * pData = new(std::nothrow) char[lSize+1]; - if (!pData) { - return SI_NOMEM; - } - pData[lSize] = 0; - - // load data into buffer - fseek(a_fpFile, 0, SEEK_SET); - size_t uRead = fread(pData, sizeof(char), lSize, a_fpFile); - if (uRead != (size_t) lSize) { - delete[] pData; - return SI_FILE; - } - - // convert the raw data to unicode - SI_Error rc = LoadData(pData, uRead); - delete[] pData; - return rc; -} - -template -SI_Error -CSimpleIniTempl::LoadData( - const char * a_pData, - size_t a_uDataLen - ) -{ - if (!a_pData) { - return SI_OK; - } - - // if the UTF-8 BOM exists, consume it and set mode to unicode, if we have - // already loaded data and try to change mode half-way through then this will - // be ignored and we will assert in debug versions - if (a_uDataLen >= 3 && memcmp(a_pData, SI_UTF8_SIGNATURE, 3) == 0) { - a_pData += 3; - a_uDataLen -= 3; - SI_ASSERT(m_bStoreIsUtf8 || !m_pData); // we don't expect mixed mode data - SetUnicode(); - } - - if (a_uDataLen == 0) { - return SI_OK; - } - - // determine the length of the converted data - SI_CONVERTER converter(m_bStoreIsUtf8); - size_t uLen = converter.SizeFromStore(a_pData, a_uDataLen); - if (uLen == (size_t)(-1)) { - return SI_FAIL; - } - - // allocate memory for the data, ensure that there is a NULL - // terminator wherever the converted data ends - SI_CHAR * pData = new(std::nothrow) SI_CHAR[uLen+1]; - if (!pData) { - return SI_NOMEM; - } - memset(pData, 0, sizeof(SI_CHAR)*(uLen+1)); - - // convert the data - if (!converter.ConvertFromStore(a_pData, a_uDataLen, pData, uLen)) { - delete[] pData; - return SI_FAIL; - } - - // parse it - const static SI_CHAR empty = 0; - SI_CHAR * pWork = pData; - const SI_CHAR * pSection = ∅ - const SI_CHAR * pItem = NULL; - const SI_CHAR * pVal = NULL; - const SI_CHAR * pComment = NULL; - - // We copy the strings if we are loading data into this class when we - // already have stored some. - bool bCopyStrings = (m_pData != NULL); - - // find a file comment if it exists, this is a comment that starts at the - // beginning of the file and continues until the first blank line. - SI_Error rc = FindFileComment(pWork, bCopyStrings); - if (rc < 0) return rc; - - // add every entry in the file to the data table - while (FindEntry(pWork, pSection, pItem, pVal, pComment)) { - rc = AddEntry(pSection, pItem, pVal, pComment, false, bCopyStrings); - if (rc < 0) return rc; - } - - // store these strings if we didn't copy them - if (bCopyStrings) { - delete[] pData; - } - else { - m_pData = pData; - m_uDataLen = uLen+1; - } - - return SI_OK; -} - -#ifdef SI_SUPPORT_IOSTREAMS -template -SI_Error -CSimpleIniTempl::LoadData( - std::istream & a_istream - ) -{ - std::string strData; - char szBuf[512]; - do { - a_istream.get(szBuf, sizeof(szBuf), '\0'); - strData.append(szBuf); - } - while (a_istream.good()); - return LoadData(strData); -} -#endif // SI_SUPPORT_IOSTREAMS - -template -SI_Error -CSimpleIniTempl::FindFileComment( - SI_CHAR *& a_pData, - bool a_bCopyStrings - ) -{ - // there can only be a single file comment - if (m_pFileComment) { - return SI_OK; - } - - // Load the file comment as multi-line text, this will modify all of - // the newline characters to be single \n chars - if (!LoadMultiLineText(a_pData, m_pFileComment, NULL, false)) { - return SI_OK; - } - - // copy the string if necessary - if (a_bCopyStrings) { - SI_Error rc = CopyString(m_pFileComment); - if (rc < 0) return rc; - } - - return SI_OK; -} - -template -bool -CSimpleIniTempl::FindEntry( - SI_CHAR *& a_pData, - const SI_CHAR *& a_pSection, - const SI_CHAR *& a_pKey, - const SI_CHAR *& a_pVal, - const SI_CHAR *& a_pComment - ) const -{ - a_pComment = NULL; - - SI_CHAR * pTrail = NULL; - while (*a_pData) { - // skip spaces and empty lines - while (*a_pData && IsSpace(*a_pData)) { - ++a_pData; - } - if (!*a_pData) { - break; - } - - // skip processing of comment lines but keep a pointer to - // the start of the comment. - if (IsComment(*a_pData)) { - LoadMultiLineText(a_pData, a_pComment, NULL, true); - continue; - } - - // process section names - if (*a_pData == '[') { - // skip leading spaces - ++a_pData; - while (*a_pData && IsSpace(*a_pData)) { - ++a_pData; - } - - // find the end of the section name (it may contain spaces) - // and convert it to lowercase as necessary - a_pSection = a_pData; - while (*a_pData && *a_pData != ']' && !IsNewLineChar(*a_pData)) { - ++a_pData; - } - - // if it's an invalid line, just skip it - if (*a_pData != ']') { - continue; - } - - // remove trailing spaces from the section - pTrail = a_pData - 1; - while (pTrail >= a_pSection && IsSpace(*pTrail)) { - --pTrail; - } - ++pTrail; - *pTrail = 0; - - // skip to the end of the line - ++a_pData; // safe as checked that it == ']' above - while (*a_pData && !IsNewLineChar(*a_pData)) { - ++a_pData; - } - - a_pKey = NULL; - a_pVal = NULL; - return true; - } - - // find the end of the key name (it may contain spaces) - // and convert it to lowercase as necessary - a_pKey = a_pData; - while (*a_pData && *a_pData != '=' && !IsNewLineChar(*a_pData)) { - ++a_pData; - } - - // if it's an invalid line, just skip it - if (*a_pData != '=') { - continue; - } - - // empty keys are invalid - if (a_pKey == a_pData) { - while (*a_pData && !IsNewLineChar(*a_pData)) { - ++a_pData; - } - continue; - } - - // remove trailing spaces from the key - pTrail = a_pData - 1; - while (pTrail >= a_pKey && IsSpace(*pTrail)) { - --pTrail; - } - ++pTrail; - *pTrail = 0; - - // skip leading whitespace on the value - ++a_pData; // safe as checked that it == '=' above - while (*a_pData && !IsNewLineChar(*a_pData) && IsSpace(*a_pData)) { - ++a_pData; - } - - // find the end of the value which is the end of this line - a_pVal = a_pData; - while (*a_pData && !IsNewLineChar(*a_pData)) { - ++a_pData; - } - - // remove trailing spaces from the value - pTrail = a_pData - 1; - if (*a_pData) { // prepare for the next round - SkipNewLine(a_pData); - } - while (pTrail >= a_pVal && IsSpace(*pTrail)) { - --pTrail; - } - ++pTrail; - *pTrail = 0; - - // check for multi-line entries - if (m_bAllowMultiLine && IsMultiLineTag(a_pVal)) { - // skip the "<<<" to get the tag that will end the multiline - const SI_CHAR * pTagName = a_pVal + 3; - return LoadMultiLineText(a_pData, a_pVal, pTagName); - } - - // return the standard entry - return true; - } - - return false; -} - -template -bool -CSimpleIniTempl::IsMultiLineTag( - const SI_CHAR * a_pVal - ) const -{ - // check for the "<<<" prefix for a multi-line entry - if (*a_pVal++ != '<') return false; - if (*a_pVal++ != '<') return false; - if (*a_pVal++ != '<') return false; - return true; -} - -template -bool -CSimpleIniTempl::IsMultiLineData( - const SI_CHAR * a_pData - ) const -{ - // data is multi-line if it has any of the following features: - // * whitespace prefix - // * embedded newlines - // * whitespace suffix - - // empty string - if (!*a_pData) { - return false; - } - - // check for prefix - if (IsSpace(*a_pData)) { - return true; - } - - // embedded newlines - while (*a_pData) { - if (IsNewLineChar(*a_pData)) { - return true; - } - ++a_pData; - } - - // check for suffix - if (IsSpace(*--a_pData)) { - return true; - } - - return false; -} - -template -bool -CSimpleIniTempl::IsNewLineChar( - SI_CHAR a_c - ) const -{ - return (a_c == '\n' || a_c == '\r'); -} - -template -bool -CSimpleIniTempl::LoadMultiLineText( - SI_CHAR *& a_pData, - const SI_CHAR *& a_pVal, - const SI_CHAR * a_pTagName, - bool a_bAllowBlankLinesInComment - ) const -{ - // we modify this data to strip all newlines down to a single '\n' - // character. This means that on Windows we need to strip out some - // characters which will make the data shorter. - // i.e. LINE1-LINE1\r\nLINE2-LINE2\0 will become - // LINE1-LINE1\nLINE2-LINE2\0 - // The pDataLine entry is the pointer to the location in memory that - // the current line needs to start to run following the existing one. - // This may be the same as pCurrLine in which case no move is needed. - SI_CHAR * pDataLine = a_pData; - SI_CHAR * pCurrLine; - - // value starts at the current line - a_pVal = a_pData; - - // find the end tag. This tag must start in column 1 and be - // followed by a newline. We ignore any whitespace after the end - // tag but not whitespace before it. - SI_CHAR cEndOfLineChar = *a_pData; - for(;;) { - // if we are loading comments then we need a comment character as - // the first character on every line - if (!a_pTagName && !IsComment(*a_pData)) { - // if we aren't allowing blank lines then we're done - if (!a_bAllowBlankLinesInComment) { - break; - } - - // if we are allowing blank lines then we only include them - // in this comment if another comment follows, so read ahead - // to find out. - SI_CHAR * pCurr = a_pData; - int nNewLines = 0; - while (IsSpace(*pCurr)) { - if (IsNewLineChar(*pCurr)) { - ++nNewLines; - SkipNewLine(pCurr); - } - else { - ++pCurr; - } - } - - // we have a comment, add the blank lines to the output - // and continue processing from here - if (IsComment(*pCurr)) { - for (; nNewLines > 0; --nNewLines) *pDataLine++ = '\n'; - a_pData = pCurr; - continue; - } - - // the comment ends here - break; - } - - // find the end of this line - pCurrLine = a_pData; - while (*a_pData && !IsNewLineChar(*a_pData)) ++a_pData; - - // move this line down to the location that it should be if necessary - if (pDataLine < pCurrLine) { - size_t nLen = (size_t) (a_pData - pCurrLine); - memmove(pDataLine, pCurrLine, nLen * sizeof(SI_CHAR)); - pDataLine[nLen] = '\0'; - } - - // end the line with a NULL - cEndOfLineChar = *a_pData; - *a_pData = 0; - - // if are looking for a tag then do the check now. This is done before - // checking for end of the data, so that if we have the tag at the end - // of the data then the tag is removed correctly. - if (a_pTagName) { - // strip whitespace from the end of this tag - SI_CHAR* pc = a_pData - 1; - while (pc > pDataLine && IsSpace(*pc)) --pc; - SI_CHAR ch = *++pc; - *pc = 0; - - if (!IsLess(pDataLine, a_pTagName) && !IsLess(a_pTagName, pDataLine)) { - break; - } - - *pc = ch; - } - - // if we are at the end of the data then we just automatically end - // this entry and return the current data. - if (!cEndOfLineChar) { - return true; - } - - // otherwise we need to process this newline to ensure that it consists - // of just a single \n character. - pDataLine += (a_pData - pCurrLine); - *a_pData = cEndOfLineChar; - SkipNewLine(a_pData); - *pDataLine++ = '\n'; - } - - // if we didn't find a comment at all then return false - if (a_pVal == a_pData) { - a_pVal = NULL; - return false; - } - - // the data (which ends at the end of the last line) needs to be - // null-terminated BEFORE before the newline character(s). If the - // user wants a new line in the multi-line data then they need to - // add an empty line before the tag. - *--pDataLine = '\0'; - - // if looking for a tag and if we aren't at the end of the data, - // then move a_pData to the start of the next line. - if (a_pTagName && cEndOfLineChar) { - SI_ASSERT(IsNewLineChar(cEndOfLineChar)); - *a_pData = cEndOfLineChar; - SkipNewLine(a_pData); - } - - return true; -} - -template -SI_Error -CSimpleIniTempl::CopyString( - const SI_CHAR *& a_pString - ) -{ - size_t uLen = 0; - if (sizeof(SI_CHAR) == sizeof(char)) { - uLen = strlen((const char *)a_pString); - } - else if (sizeof(SI_CHAR) == sizeof(wchar_t)) { - uLen = wcslen((const wchar_t *)a_pString); - } - else { - for ( ; a_pString[uLen]; ++uLen) /*loop*/ ; - } - ++uLen; // NULL character - SI_CHAR * pCopy = new(std::nothrow) SI_CHAR[uLen]; - if (!pCopy) { - return SI_NOMEM; - } - memcpy(pCopy, a_pString, sizeof(SI_CHAR)*uLen); - m_strings.push_back(pCopy); - a_pString = pCopy; - return SI_OK; -} - -template -SI_Error -CSimpleIniTempl::AddEntry( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - const SI_CHAR * a_pValue, - const SI_CHAR * a_pComment, - bool a_bForceReplace, - bool a_bCopyStrings - ) -{ - SI_Error rc; - bool bInserted = false; - - SI_ASSERT(!a_pComment || IsComment(*a_pComment)); - - // if we are copying strings then make a copy of the comment now - // because we will need it when we add the entry. - if (a_bCopyStrings && a_pComment) { - rc = CopyString(a_pComment); - if (rc < 0) return rc; - } - - // create the section entry if necessary - typename TSection::iterator iSection = m_data.find(a_pSection); - if (iSection == m_data.end()) { - // if the section doesn't exist then we need a copy as the - // string needs to last beyond the end of this function - if (a_bCopyStrings) { - rc = CopyString(a_pSection); - if (rc < 0) return rc; - } - - // only set the comment if this is a section only entry - Entry oSection(a_pSection, ++m_nOrder); - if (a_pComment && (!a_pKey || !a_pValue)) { - oSection.pComment = a_pComment; - } - - typename TSection::value_type oEntry(oSection, TKeyVal()); - typedef typename TSection::iterator SectionIterator; - std::pair i = m_data.insert(oEntry); - iSection = i.first; - bInserted = true; - } - if (!a_pKey || !a_pValue) { - // section only entries are specified with pItem and pVal as NULL - return bInserted ? SI_INSERTED : SI_UPDATED; - } - - // check for existence of the key - TKeyVal & keyval = iSection->second; - typename TKeyVal::iterator iKey = keyval.find(a_pKey); - bInserted = iKey == keyval.end(); - - // remove all existing entries but save the load order and - // comment of the first entry - int nLoadOrder = ++m_nOrder; - if (iKey != keyval.end() && m_bAllowMultiKey && a_bForceReplace) { - const SI_CHAR * pComment = NULL; - while (iKey != keyval.end() && !IsLess(a_pKey, iKey->first.pItem)) { - if (iKey->first.nOrder < nLoadOrder) { - nLoadOrder = iKey->first.nOrder; - pComment = iKey->first.pComment; - } - ++iKey; - } - if (pComment) { - DeleteString(a_pComment); - a_pComment = pComment; - CopyString(a_pComment); - } - Delete(a_pSection, a_pKey); - iKey = keyval.end(); - } - - // make string copies if necessary - bool bForceCreateNewKey = m_bAllowMultiKey && !a_bForceReplace; - if (a_bCopyStrings) { - if (bForceCreateNewKey || iKey == keyval.end()) { - // if the key doesn't exist then we need a copy as the - // string needs to last beyond the end of this function - // because we will be inserting the key next - rc = CopyString(a_pKey); - if (rc < 0) return rc; - } - - // we always need a copy of the value - rc = CopyString(a_pValue); - if (rc < 0) return rc; - } - - // create the key entry - if (iKey == keyval.end() || bForceCreateNewKey) { - Entry oKey(a_pKey, nLoadOrder); - if (a_pComment) { - oKey.pComment = a_pComment; - } - typename TKeyVal::value_type oEntry(oKey, static_cast(NULL)); - iKey = keyval.insert(oEntry); - } - - iKey->second = a_pValue; - return bInserted ? SI_INSERTED : SI_UPDATED; -} - -template -const SI_CHAR * -CSimpleIniTempl::GetValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - const SI_CHAR * a_pDefault, - bool * a_pHasMultiple - ) const -{ - if (a_pHasMultiple) { - *a_pHasMultiple = false; - } - if (!a_pSection || !a_pKey) { - return a_pDefault; - } - typename TSection::const_iterator iSection = m_data.find(a_pSection); - if (iSection == m_data.end()) { - return a_pDefault; - } - typename TKeyVal::const_iterator iKeyVal = iSection->second.find(a_pKey); - if (iKeyVal == iSection->second.end()) { - return a_pDefault; - } - - // check for multiple entries with the same key - if (m_bAllowMultiKey && a_pHasMultiple) { - typename TKeyVal::const_iterator iTemp = iKeyVal; - if (++iTemp != iSection->second.end()) { - if (!IsLess(a_pKey, iTemp->first.pItem)) { - *a_pHasMultiple = true; - } - } - } - - return iKeyVal->second; -} - -template -long -CSimpleIniTempl::GetLongValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - long a_nDefault, - bool * a_pHasMultiple - ) const -{ - // return the default if we don't have a value - const SI_CHAR * pszValue = GetValue(a_pSection, a_pKey, NULL, a_pHasMultiple); - if (!pszValue || !*pszValue) return a_nDefault; - - // convert to UTF-8/MBCS which for a numeric value will be the same as ASCII - char szValue[64] = { 0 }; - SI_CONVERTER c(m_bStoreIsUtf8); - if (!c.ConvertToStore(pszValue, szValue, sizeof(szValue))) { - return a_nDefault; - } - - // handle the value as hex if prefaced with "0x" - long nValue = a_nDefault; - char * pszSuffix = szValue; - if (szValue[0] == '0' && (szValue[1] == 'x' || szValue[1] == 'X')) { - if (!szValue[2]) return a_nDefault; - nValue = strtol(&szValue[2], &pszSuffix, 16); - } - else { - nValue = strtol(szValue, &pszSuffix, 10); - } - - // any invalid strings will return the default value - if (*pszSuffix) { - return a_nDefault; - } - - return nValue; -} - -template -SI_Error -CSimpleIniTempl::SetLongValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - long a_nValue, - const SI_CHAR * a_pComment, - bool a_bUseHex, - bool a_bForceReplace - ) -{ - // use SetValue to create sections - if (!a_pSection || !a_pKey) return SI_FAIL; - - // convert to an ASCII string - char szInput[64]; -#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE - sprintf_s(szInput, a_bUseHex ? "0x%lx" : "%ld", a_nValue); -#else // !__STDC_WANT_SECURE_LIB__ - sprintf(szInput, a_bUseHex ? "0x%lx" : "%ld", a_nValue); -#endif // __STDC_WANT_SECURE_LIB__ - - // convert to output text - SI_CHAR szOutput[64]; - SI_CONVERTER c(m_bStoreIsUtf8); - c.ConvertFromStore(szInput, strlen(szInput) + 1, - szOutput, sizeof(szOutput) / sizeof(SI_CHAR)); - - // actually add it - return AddEntry(a_pSection, a_pKey, szOutput, a_pComment, a_bForceReplace, true); -} - -template -double -CSimpleIniTempl::GetDoubleValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - double a_nDefault, - bool * a_pHasMultiple - ) const -{ - // return the default if we don't have a value - const SI_CHAR * pszValue = GetValue(a_pSection, a_pKey, NULL, a_pHasMultiple); - if (!pszValue || !*pszValue) return a_nDefault; - - // convert to UTF-8/MBCS which for a numeric value will be the same as ASCII - char szValue[64] = { 0 }; - SI_CONVERTER c(m_bStoreIsUtf8); - if (!c.ConvertToStore(pszValue, szValue, sizeof(szValue))) { - return a_nDefault; - } - - char * pszSuffix = NULL; - double nValue = strtod(szValue, &pszSuffix); - - // any invalid strings will return the default value - if (!pszSuffix || *pszSuffix) { - return a_nDefault; - } - - return nValue; -} - -template -SI_Error -CSimpleIniTempl::SetDoubleValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - double a_nValue, - const SI_CHAR * a_pComment, - bool a_bForceReplace - ) -{ - // use SetValue to create sections - if (!a_pSection || !a_pKey) return SI_FAIL; - - // convert to an ASCII string - char szInput[64]; -#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE - sprintf_s(szInput, "%f", a_nValue); -#else // !__STDC_WANT_SECURE_LIB__ - sprintf(szInput, "%f", a_nValue); -#endif // __STDC_WANT_SECURE_LIB__ - - // convert to output text - SI_CHAR szOutput[64]; - SI_CONVERTER c(m_bStoreIsUtf8); - c.ConvertFromStore(szInput, strlen(szInput) + 1, - szOutput, sizeof(szOutput) / sizeof(SI_CHAR)); - - // actually add it - return AddEntry(a_pSection, a_pKey, szOutput, a_pComment, a_bForceReplace, true); -} - -template -bool -CSimpleIniTempl::GetBoolValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - bool a_bDefault, - bool * a_pHasMultiple - ) const -{ - // return the default if we don't have a value - const SI_CHAR * pszValue = GetValue(a_pSection, a_pKey, NULL, a_pHasMultiple); - if (!pszValue || !*pszValue) return a_bDefault; - - // we only look at the minimum number of characters - switch (pszValue[0]) { - case 't': case 'T': // true - case 'y': case 'Y': // yes - case '1': // 1 (one) - return true; - - case 'f': case 'F': // false - case 'n': case 'N': // no - case '0': // 0 (zero) - return false; - - case 'o': case 'O': - if (pszValue[1] == 'n' || pszValue[1] == 'N') return true; // on - if (pszValue[1] == 'f' || pszValue[1] == 'F') return false; // off - break; - } - - // no recognized value, return the default - return a_bDefault; -} - -template -SI_Error -CSimpleIniTempl::SetBoolValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - bool a_bValue, - const SI_CHAR * a_pComment, - bool a_bForceReplace - ) -{ - // use SetValue to create sections - if (!a_pSection || !a_pKey) return SI_FAIL; - - // convert to an ASCII string - const char * pszInput = a_bValue ? "true" : "false"; - - // convert to output text - SI_CHAR szOutput[64]; - SI_CONVERTER c(m_bStoreIsUtf8); - c.ConvertFromStore(pszInput, strlen(pszInput) + 1, - szOutput, sizeof(szOutput) / sizeof(SI_CHAR)); - - // actually add it - return AddEntry(a_pSection, a_pKey, szOutput, a_pComment, a_bForceReplace, true); -} - -template -bool -CSimpleIniTempl::GetAllValues( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - TNamesDepend & a_values - ) const -{ - a_values.clear(); - - if (!a_pSection || !a_pKey) { - return false; - } - typename TSection::const_iterator iSection = m_data.find(a_pSection); - if (iSection == m_data.end()) { - return false; - } - typename TKeyVal::const_iterator iKeyVal = iSection->second.find(a_pKey); - if (iKeyVal == iSection->second.end()) { - return false; - } - - // insert all values for this key - a_values.push_back(Entry(iKeyVal->second, iKeyVal->first.pComment, iKeyVal->first.nOrder)); - if (m_bAllowMultiKey) { - ++iKeyVal; - while (iKeyVal != iSection->second.end() && !IsLess(a_pKey, iKeyVal->first.pItem)) { - a_values.push_back(Entry(iKeyVal->second, iKeyVal->first.pComment, iKeyVal->first.nOrder)); - ++iKeyVal; - } - } - - return true; -} - -template -int -CSimpleIniTempl::GetSectionSize( - const SI_CHAR * a_pSection - ) const -{ - if (!a_pSection) { - return -1; - } - - typename TSection::const_iterator iSection = m_data.find(a_pSection); - if (iSection == m_data.end()) { - return -1; - } - const TKeyVal & section = iSection->second; - - // if multi-key isn't permitted then the section size is - // the number of keys that we have. - if (!m_bAllowMultiKey || section.empty()) { - return (int) section.size(); - } - - // otherwise we need to count them - int nCount = 0; - const SI_CHAR * pLastKey = NULL; - typename TKeyVal::const_iterator iKeyVal = section.begin(); - for (int n = 0; iKeyVal != section.end(); ++iKeyVal, ++n) { - if (!pLastKey || IsLess(pLastKey, iKeyVal->first.pItem)) { - ++nCount; - pLastKey = iKeyVal->first.pItem; - } - } - return nCount; -} - -template -const typename CSimpleIniTempl::TKeyVal * -CSimpleIniTempl::GetSection( - const SI_CHAR * a_pSection - ) const -{ - if (a_pSection) { - typename TSection::const_iterator i = m_data.find(a_pSection); - if (i != m_data.end()) { - return &(i->second); - } - } - return 0; -} - -template -void -CSimpleIniTempl::GetAllSections( - TNamesDepend & a_names - ) const -{ - a_names.clear(); - typename TSection::const_iterator i = m_data.begin(); - for (int n = 0; i != m_data.end(); ++i, ++n ) { - a_names.push_back(i->first); - } -} - -template -bool -CSimpleIniTempl::GetAllKeys( - const SI_CHAR * a_pSection, - TNamesDepend & a_names - ) const -{ - a_names.clear(); - - if (!a_pSection) { - return false; - } - - typename TSection::const_iterator iSection = m_data.find(a_pSection); - if (iSection == m_data.end()) { - return false; - } - - const TKeyVal & section = iSection->second; - const SI_CHAR * pLastKey = NULL; - typename TKeyVal::const_iterator iKeyVal = section.begin(); - for (int n = 0; iKeyVal != section.end(); ++iKeyVal, ++n ) { - if (!pLastKey || IsLess(pLastKey, iKeyVal->first.pItem)) { - a_names.push_back(iKeyVal->first); - pLastKey = iKeyVal->first.pItem; - } - } - - return true; -} - -template -SI_Error -CSimpleIniTempl::SaveFile( - const char * a_pszFile, - bool a_bAddSignature - ) const -{ - FILE * fp = NULL; -#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE - fopen_s(&fp, a_pszFile, "wb"); -#else // !__STDC_WANT_SECURE_LIB__ - fp = fopen(a_pszFile, "wb"); -#endif // __STDC_WANT_SECURE_LIB__ - if (!fp) return SI_FILE; - SI_Error rc = SaveFile(fp, a_bAddSignature); - fclose(fp); - return rc; -} - -#ifdef SI_HAS_WIDE_FILE -template -SI_Error -CSimpleIniTempl::SaveFile( - const SI_WCHAR_T * a_pwszFile, - bool a_bAddSignature - ) const -{ -#ifdef _WIN32 - FILE * fp = NULL; -#if __STDC_WANT_SECURE_LIB__ && !_WIN32_WCE - _wfopen_s(&fp, a_pwszFile, L"wb"); -#else // !__STDC_WANT_SECURE_LIB__ - fp = _wfopen(a_pwszFile, L"wb"); -#endif // __STDC_WANT_SECURE_LIB__ - if (!fp) return SI_FILE; - SI_Error rc = SaveFile(fp, a_bAddSignature); - fclose(fp); - return rc; -#else // !_WIN32 (therefore SI_CONVERT_ICU) - char szFile[256]; - u_austrncpy(szFile, a_pwszFile, sizeof(szFile)); - return SaveFile(szFile, a_bAddSignature); -#endif // _WIN32 -} -#endif // SI_HAS_WIDE_FILE - -template -SI_Error -CSimpleIniTempl::SaveFile( - FILE * a_pFile, - bool a_bAddSignature - ) const -{ - FileWriter writer(a_pFile); - return Save(writer, a_bAddSignature); -} - -template -SI_Error -CSimpleIniTempl::Save( - OutputWriter & a_oOutput, - bool a_bAddSignature - ) const -{ - Converter convert(m_bStoreIsUtf8); - - // add the UTF-8 signature if it is desired - if (m_bStoreIsUtf8 && a_bAddSignature) { - a_oOutput.Write(SI_UTF8_SIGNATURE); - } - - // get all of the sections sorted in load order - TNamesDepend oSections; - GetAllSections(oSections); -#if defined(_MSC_VER) && _MSC_VER <= 1200 - oSections.sort(); -#elif defined(__BORLANDC__) - oSections.sort(Entry::LoadOrder()); -#else - oSections.sort(typename Entry::LoadOrder()); -#endif - - // if there is an empty section name, then it must be written out first - // regardless of the load order - typename TNamesDepend::iterator is = oSections.begin(); - for (; is != oSections.end(); ++is) { - if (!*is->pItem) { - // move the empty section name to the front of the section list - if (is != oSections.begin()) { - oSections.splice(oSections.begin(), oSections, is, std::next(is)); - } - break; - } - } - - // write the file comment if we have one - bool bNeedNewLine = false; - if (m_pFileComment) { - if (!OutputMultiLineText(a_oOutput, convert, m_pFileComment)) { - return SI_FAIL; - } - bNeedNewLine = true; - } - - // iterate through our sections and output the data - typename TNamesDepend::const_iterator iSection = oSections.begin(); - for ( ; iSection != oSections.end(); ++iSection ) { - // write out the comment if there is one - if (iSection->pComment) { - if (bNeedNewLine) { - a_oOutput.Write(SI_NEWLINE_A); - a_oOutput.Write(SI_NEWLINE_A); - } - if (!OutputMultiLineText(a_oOutput, convert, iSection->pComment)) { - return SI_FAIL; - } - bNeedNewLine = false; - } - - if (bNeedNewLine) { - a_oOutput.Write(SI_NEWLINE_A); - a_oOutput.Write(SI_NEWLINE_A); - bNeedNewLine = false; - } - - // write the section (unless there is no section name) - if (*iSection->pItem) { - if (!convert.ConvertToStore(iSection->pItem)) { - return SI_FAIL; - } - a_oOutput.Write("["); - a_oOutput.Write(convert.Data()); - a_oOutput.Write("]"); - a_oOutput.Write(SI_NEWLINE_A); - } - - // get all of the keys sorted in load order - TNamesDepend oKeys; - GetAllKeys(iSection->pItem, oKeys); -#if defined(_MSC_VER) && _MSC_VER <= 1200 - oKeys.sort(); -#elif defined(__BORLANDC__) - oKeys.sort(Entry::LoadOrder()); -#else - oKeys.sort(typename Entry::LoadOrder()); -#endif - - // write all keys and values - typename TNamesDepend::const_iterator iKey = oKeys.begin(); - for ( ; iKey != oKeys.end(); ++iKey) { - // get all values for this key - TNamesDepend oValues; - GetAllValues(iSection->pItem, iKey->pItem, oValues); - - typename TNamesDepend::const_iterator iValue = oValues.begin(); - for ( ; iValue != oValues.end(); ++iValue) { - // write out the comment if there is one - if (iValue->pComment) { - a_oOutput.Write(SI_NEWLINE_A); - if (!OutputMultiLineText(a_oOutput, convert, iValue->pComment)) { - return SI_FAIL; - } - } - - // write the key - if (!convert.ConvertToStore(iKey->pItem)) { - return SI_FAIL; - } - a_oOutput.Write(convert.Data()); - - // write the value - if (!convert.ConvertToStore(iValue->pItem)) { - return SI_FAIL; - } - a_oOutput.Write(m_bSpaces ? " = " : "="); - if (m_bAllowMultiLine && IsMultiLineData(iValue->pItem)) { - // multi-line data needs to be processed specially to ensure - // that we use the correct newline format for the current system - a_oOutput.Write("<<pItem)) { - return SI_FAIL; - } - a_oOutput.Write("END_OF_TEXT"); - } - else { - a_oOutput.Write(convert.Data()); - } - a_oOutput.Write(SI_NEWLINE_A); - } - } - - bNeedNewLine = true; - } - - return SI_OK; -} - -template -bool -CSimpleIniTempl::OutputMultiLineText( - OutputWriter & a_oOutput, - Converter & a_oConverter, - const SI_CHAR * a_pText - ) const -{ - const SI_CHAR * pEndOfLine; - SI_CHAR cEndOfLineChar = *a_pText; - while (cEndOfLineChar) { - // find the end of this line - pEndOfLine = a_pText; - for (; *pEndOfLine && *pEndOfLine != '\n'; ++pEndOfLine) /*loop*/ ; - cEndOfLineChar = *pEndOfLine; - - // temporarily null terminate, convert and output the line - *const_cast(pEndOfLine) = 0; - if (!a_oConverter.ConvertToStore(a_pText)) { - return false; - } - *const_cast(pEndOfLine) = cEndOfLineChar; - a_pText += (pEndOfLine - a_pText) + 1; - a_oOutput.Write(a_oConverter.Data()); - a_oOutput.Write(SI_NEWLINE_A); - } - return true; -} - -template -bool -CSimpleIniTempl::Delete( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - bool a_bRemoveEmpty - ) -{ - return DeleteValue(a_pSection, a_pKey, NULL, a_bRemoveEmpty); -} - -template -bool -CSimpleIniTempl::DeleteValue( - const SI_CHAR * a_pSection, - const SI_CHAR * a_pKey, - const SI_CHAR * a_pValue, - bool a_bRemoveEmpty - ) -{ - if (!a_pSection) { - return false; - } - - typename TSection::iterator iSection = m_data.find(a_pSection); - if (iSection == m_data.end()) { - return false; - } - - // remove a single key if we have a keyname - if (a_pKey) { - typename TKeyVal::iterator iKeyVal = iSection->second.find(a_pKey); - if (iKeyVal == iSection->second.end()) { - return false; - } - - const static SI_STRLESS isLess = SI_STRLESS(); - - // remove any copied strings and then the key - typename TKeyVal::iterator iDelete; - bool bDeleted = false; - do { - iDelete = iKeyVal++; - - if(a_pValue == NULL || - (isLess(a_pValue, iDelete->second) == false && - isLess(iDelete->second, a_pValue) == false)) { - DeleteString(iDelete->first.pItem); - DeleteString(iDelete->second); - iSection->second.erase(iDelete); - bDeleted = true; - } - } - while (iKeyVal != iSection->second.end() - && !IsLess(a_pKey, iKeyVal->first.pItem)); - - if(!bDeleted) { - return false; - } - - // done now if the section is not empty or we are not pruning away - // the empty sections. Otherwise let it fall through into the section - // deletion code - if (!a_bRemoveEmpty || !iSection->second.empty()) { - return true; - } - } - else { - // delete all copied strings from this section. The actual - // entries will be removed when the section is removed. - typename TKeyVal::iterator iKeyVal = iSection->second.begin(); - for ( ; iKeyVal != iSection->second.end(); ++iKeyVal) { - DeleteString(iKeyVal->first.pItem); - DeleteString(iKeyVal->second); - } - } - - // delete the section itself - DeleteString(iSection->first.pItem); - m_data.erase(iSection); - - return true; -} - -template -void -CSimpleIniTempl::DeleteString( - const SI_CHAR * a_pString - ) -{ - // strings may exist either inside the data block, or they will be - // individually allocated and stored in m_strings. We only physically - // delete those stored in m_strings. - if (a_pString < m_pData || a_pString >= m_pData + m_uDataLen) { - typename TNamesDepend::iterator i = m_strings.begin(); - for (;i != m_strings.end(); ++i) { - if (a_pString == i->pItem) { - delete[] const_cast(i->pItem); - m_strings.erase(i); - break; - } - } - } -} - -// --------------------------------------------------------------------------- -// CONVERSION FUNCTIONS -// --------------------------------------------------------------------------- - -// Defines the conversion classes for different libraries. Before including -// SimpleIni.h, set the converter that you wish you use by defining one of the -// following symbols. -// -// SI_NO_CONVERSION Do not make the "W" wide character version of the -// library available. Only CSimpleIniA etc is defined. -// SI_CONVERT_GENERIC Use the Unicode reference conversion library in -// the accompanying files ConvertUTF.h/c -// SI_CONVERT_ICU Use the IBM ICU conversion library. Requires -// ICU headers on include path and icuuc.lib -// SI_CONVERT_WIN32 Use the Win32 API functions for conversion. - -#if !defined(SI_NO_CONVERSION) && !defined(SI_CONVERT_GENERIC) && !defined(SI_CONVERT_WIN32) && !defined(SI_CONVERT_ICU) -# ifdef _WIN32 -# define SI_CONVERT_WIN32 -# else -# define SI_CONVERT_GENERIC -# endif -#endif - -/** - * Generic case-sensitive less than comparison. This class returns numerically - * ordered ASCII case-sensitive text for all possible sizes and types of - * SI_CHAR. - */ -template -struct SI_GenericCase { - bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const { - long cmp; - for ( ;*pLeft && *pRight; ++pLeft, ++pRight) { - cmp = (long) *pLeft - (long) *pRight; - if (cmp != 0) { - return cmp < 0; - } - } - return *pRight != 0; - } -}; - -/** - * Generic ASCII case-insensitive less than comparison. This class returns - * numerically ordered ASCII case-insensitive text for all possible sizes - * and types of SI_CHAR. It is not safe for MBCS text comparison where - * ASCII A-Z characters are used in the encoding of multi-byte characters. - */ -template -struct SI_GenericNoCase { - inline SI_CHAR locase(SI_CHAR ch) const { - return (ch < 'A' || ch > 'Z') ? ch : (ch - 'A' + 'a'); - } - bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const { - long cmp; - for ( ;*pLeft && *pRight; ++pLeft, ++pRight) { - cmp = (long) locase(*pLeft) - (long) locase(*pRight); - if (cmp != 0) { - return cmp < 0; - } - } - return *pRight != 0; - } -}; - -/** - * Null conversion class for MBCS/UTF-8 to char (or equivalent). - */ -template -class SI_ConvertA { - bool m_bStoreIsUtf8; -protected: - SI_ConvertA() { } -public: - SI_ConvertA(bool a_bStoreIsUtf8) : m_bStoreIsUtf8(a_bStoreIsUtf8) { } - - /* copy and assignment */ - SI_ConvertA(const SI_ConvertA & rhs) { operator=(rhs); } - SI_ConvertA & operator=(const SI_ConvertA & rhs) { - m_bStoreIsUtf8 = rhs.m_bStoreIsUtf8; - return *this; - } - - /** Calculate the number of SI_CHAR required for converting the input - * from the storage format. The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to SI_CHAR. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @return Number of SI_CHAR required by the string when - * converted. If there are embedded NULL bytes in the - * input data, only the string up and not including - * the NULL byte will be converted. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeFromStore( - const char * a_pInputData, - size_t a_uInputDataLen) - { - (void)a_pInputData; - SI_ASSERT(a_uInputDataLen != (size_t) -1); - - // ASCII/MBCS/UTF-8 needs no conversion - return a_uInputDataLen; - } - - /** Convert the input string from the storage format to SI_CHAR. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to SI_CHAR. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @param a_pOutputData Pointer to the output buffer to received the - * converted data. - * @param a_uOutputDataSize Size of the output buffer in SI_CHAR. - * @return true if all of the input data was successfully - * converted. - */ - bool ConvertFromStore( - const char * a_pInputData, - size_t a_uInputDataLen, - SI_CHAR * a_pOutputData, - size_t a_uOutputDataSize) - { - // ASCII/MBCS/UTF-8 needs no conversion - if (a_uInputDataLen > a_uOutputDataSize) { - return false; - } - memcpy(a_pOutputData, a_pInputData, a_uInputDataLen); - return true; - } - - /** Calculate the number of char required by the storage format of this - * data. The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData NULL terminated string to calculate the number of - * bytes required to be converted to storage format. - * @return Number of bytes required by the string when - * converted to storage format. This size always - * includes space for the terminating NULL character. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeToStore( - const SI_CHAR * a_pInputData) - { - // ASCII/MBCS/UTF-8 needs no conversion - return strlen((const char *)a_pInputData) + 1; - } - - /** Convert the input string to the storage format of this data. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData NULL terminated source string to convert. All of - * the data will be converted including the - * terminating NULL character. - * @param a_pOutputData Pointer to the buffer to receive the converted - * string. - * @param a_uOutputDataSize Size of the output buffer in char. - * @return true if all of the input data, including the - * terminating NULL character was successfully - * converted. - */ - bool ConvertToStore( - const SI_CHAR * a_pInputData, - char * a_pOutputData, - size_t a_uOutputDataSize) - { - // calc input string length (SI_CHAR type and size independent) - size_t uInputLen = strlen((const char *)a_pInputData) + 1; - if (uInputLen > a_uOutputDataSize) { - return false; - } - - // ascii/UTF-8 needs no conversion - memcpy(a_pOutputData, a_pInputData, uInputLen); - return true; - } -}; - - -// --------------------------------------------------------------------------- -// SI_CONVERT_GENERIC -// --------------------------------------------------------------------------- -#ifdef SI_CONVERT_GENERIC - -#define SI_Case SI_GenericCase -#define SI_NoCase SI_GenericNoCase - -#include -#include "ConvertUTF.h" - -/** - * Converts UTF-8 to a wchar_t (or equivalent) using the Unicode reference - * library functions. This can be used on all platforms. - */ -template -class SI_ConvertW { - bool m_bStoreIsUtf8; -protected: - SI_ConvertW() { } -public: - SI_ConvertW(bool a_bStoreIsUtf8) : m_bStoreIsUtf8(a_bStoreIsUtf8) { } - - /* copy and assignment */ - SI_ConvertW(const SI_ConvertW & rhs) { operator=(rhs); } - SI_ConvertW & operator=(const SI_ConvertW & rhs) { - m_bStoreIsUtf8 = rhs.m_bStoreIsUtf8; - return *this; - } - - /** Calculate the number of SI_CHAR required for converting the input - * from the storage format. The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to SI_CHAR. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @return Number of SI_CHAR required by the string when - * converted. If there are embedded NULL bytes in the - * input data, only the string up and not including - * the NULL byte will be converted. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeFromStore( - const char * a_pInputData, - size_t a_uInputDataLen) - { - SI_ASSERT(a_uInputDataLen != (size_t) -1); - - if (m_bStoreIsUtf8) { - // worst case scenario for UTF-8 to wchar_t is 1 char -> 1 wchar_t - // so we just return the same number of characters required as for - // the source text. - return a_uInputDataLen; - } - -#if defined(SI_NO_MBSTOWCS_NULL) || (!defined(_MSC_VER) && !defined(_linux)) - // fall back processing for platforms that don't support a NULL dest to mbstowcs - // worst case scenario is 1:1, this will be a sufficient buffer size - (void)a_pInputData; - return a_uInputDataLen; -#else - // get the actual required buffer size - return mbstowcs(NULL, a_pInputData, a_uInputDataLen); -#endif - } - - /** Convert the input string from the storage format to SI_CHAR. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to SI_CHAR. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @param a_pOutputData Pointer to the output buffer to received the - * converted data. - * @param a_uOutputDataSize Size of the output buffer in SI_CHAR. - * @return true if all of the input data was successfully - * converted. - */ - bool ConvertFromStore( - const char * a_pInputData, - size_t a_uInputDataLen, - SI_CHAR * a_pOutputData, - size_t a_uOutputDataSize) - { - if (m_bStoreIsUtf8) { - // This uses the Unicode reference implementation to do the - // conversion from UTF-8 to wchar_t. The required files are - // ConvertUTF.h and ConvertUTF.c which should be included in - // the distribution but are publically available from unicode.org - // at http://www.unicode.org/Public/PROGRAMS/CVTUTF/ - ConversionResult retval; - const UTF8 * pUtf8 = (const UTF8 *) a_pInputData; - if (sizeof(wchar_t) == sizeof(UTF32)) { - UTF32 * pUtf32 = (UTF32 *) a_pOutputData; - retval = ConvertUTF8toUTF32( - &pUtf8, pUtf8 + a_uInputDataLen, - &pUtf32, pUtf32 + a_uOutputDataSize, - lenientConversion); - } - else if (sizeof(wchar_t) == sizeof(UTF16)) { - UTF16 * pUtf16 = (UTF16 *) a_pOutputData; - retval = ConvertUTF8toUTF16( - &pUtf8, pUtf8 + a_uInputDataLen, - &pUtf16, pUtf16 + a_uOutputDataSize, - lenientConversion); - } - return retval == conversionOK; - } - - // convert to wchar_t - size_t retval = mbstowcs(a_pOutputData, - a_pInputData, a_uOutputDataSize); - return retval != (size_t)(-1); - } - - /** Calculate the number of char required by the storage format of this - * data. The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData NULL terminated string to calculate the number of - * bytes required to be converted to storage format. - * @return Number of bytes required by the string when - * converted to storage format. This size always - * includes space for the terminating NULL character. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeToStore( - const SI_CHAR * a_pInputData) - { - if (m_bStoreIsUtf8) { - // worst case scenario for wchar_t to UTF-8 is 1 wchar_t -> 6 char - size_t uLen = 0; - while (a_pInputData[uLen]) { - ++uLen; - } - return (6 * uLen) + 1; - } - else { - size_t uLen = wcstombs(NULL, a_pInputData, 0); - if (uLen == (size_t)(-1)) { - return uLen; - } - return uLen + 1; // include NULL terminator - } - } - - /** Convert the input string to the storage format of this data. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData NULL terminated source string to convert. All of - * the data will be converted including the - * terminating NULL character. - * @param a_pOutputData Pointer to the buffer to receive the converted - * string. - * @param a_uOutputDataSize Size of the output buffer in char. - * @return true if all of the input data, including the - * terminating NULL character was successfully - * converted. - */ - bool ConvertToStore( - const SI_CHAR * a_pInputData, - char * a_pOutputData, - size_t a_uOutputDataSize - ) - { - if (m_bStoreIsUtf8) { - // calc input string length (SI_CHAR type and size independent) - size_t uInputLen = 0; - while (a_pInputData[uInputLen]) { - ++uInputLen; - } - ++uInputLen; // include the NULL char - - // This uses the Unicode reference implementation to do the - // conversion from wchar_t to UTF-8. The required files are - // ConvertUTF.h and ConvertUTF.c which should be included in - // the distribution but are publically available from unicode.org - // at http://www.unicode.org/Public/PROGRAMS/CVTUTF/ - ConversionResult retval; - UTF8 * pUtf8 = (UTF8 *) a_pOutputData; - if (sizeof(wchar_t) == sizeof(UTF32)) { - const UTF32 * pUtf32 = (const UTF32 *) a_pInputData; - retval = ConvertUTF32toUTF8( - &pUtf32, pUtf32 + uInputLen, - &pUtf8, pUtf8 + a_uOutputDataSize, - lenientConversion); - } - else if (sizeof(wchar_t) == sizeof(UTF16)) { - const UTF16 * pUtf16 = (const UTF16 *) a_pInputData; - retval = ConvertUTF16toUTF8( - &pUtf16, pUtf16 + uInputLen, - &pUtf8, pUtf8 + a_uOutputDataSize, - lenientConversion); - } - return retval == conversionOK; - } - else { - size_t retval = wcstombs(a_pOutputData, - a_pInputData, a_uOutputDataSize); - return retval != (size_t) -1; - } - } -}; - -#endif // SI_CONVERT_GENERIC - - -// --------------------------------------------------------------------------- -// SI_CONVERT_ICU -// --------------------------------------------------------------------------- -#ifdef SI_CONVERT_ICU - -#define SI_Case SI_GenericCase -#define SI_NoCase SI_GenericNoCase - -#include - -/** - * Converts MBCS/UTF-8 to UChar using ICU. This can be used on all platforms. - */ -template -class SI_ConvertW { - const char * m_pEncoding; - UConverter * m_pConverter; -protected: - SI_ConvertW() : m_pEncoding(NULL), m_pConverter(NULL) { } -public: - SI_ConvertW(bool a_bStoreIsUtf8) : m_pConverter(NULL) { - m_pEncoding = a_bStoreIsUtf8 ? "UTF-8" : NULL; - } - - /* copy and assignment */ - SI_ConvertW(const SI_ConvertW & rhs) { operator=(rhs); } - SI_ConvertW & operator=(const SI_ConvertW & rhs) { - m_pEncoding = rhs.m_pEncoding; - m_pConverter = NULL; - return *this; - } - ~SI_ConvertW() { if (m_pConverter) ucnv_close(m_pConverter); } - - /** Calculate the number of UChar required for converting the input - * from the storage format. The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to UChar. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @return Number of UChar required by the string when - * converted. If there are embedded NULL bytes in the - * input data, only the string up and not including - * the NULL byte will be converted. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeFromStore( - const char * a_pInputData, - size_t a_uInputDataLen) - { - SI_ASSERT(a_uInputDataLen != (size_t) -1); - - UErrorCode nError; - - if (!m_pConverter) { - nError = U_ZERO_ERROR; - m_pConverter = ucnv_open(m_pEncoding, &nError); - if (U_FAILURE(nError)) { - return (size_t) -1; - } - } - - nError = U_ZERO_ERROR; - int32_t nLen = ucnv_toUChars(m_pConverter, NULL, 0, - a_pInputData, (int32_t) a_uInputDataLen, &nError); - if (U_FAILURE(nError) && nError != U_BUFFER_OVERFLOW_ERROR) { - return (size_t) -1; - } - - return (size_t) nLen; - } - - /** Convert the input string from the storage format to UChar. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to UChar. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @param a_pOutputData Pointer to the output buffer to received the - * converted data. - * @param a_uOutputDataSize Size of the output buffer in UChar. - * @return true if all of the input data was successfully - * converted. - */ - bool ConvertFromStore( - const char * a_pInputData, - size_t a_uInputDataLen, - UChar * a_pOutputData, - size_t a_uOutputDataSize) - { - UErrorCode nError; - - if (!m_pConverter) { - nError = U_ZERO_ERROR; - m_pConverter = ucnv_open(m_pEncoding, &nError); - if (U_FAILURE(nError)) { - return false; - } - } - - nError = U_ZERO_ERROR; - ucnv_toUChars(m_pConverter, - a_pOutputData, (int32_t) a_uOutputDataSize, - a_pInputData, (int32_t) a_uInputDataLen, &nError); - if (U_FAILURE(nError)) { - return false; - } - - return true; - } - - /** Calculate the number of char required by the storage format of this - * data. The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData NULL terminated string to calculate the number of - * bytes required to be converted to storage format. - * @return Number of bytes required by the string when - * converted to storage format. This size always - * includes space for the terminating NULL character. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeToStore( - const UChar * a_pInputData) - { - UErrorCode nError; - - if (!m_pConverter) { - nError = U_ZERO_ERROR; - m_pConverter = ucnv_open(m_pEncoding, &nError); - if (U_FAILURE(nError)) { - return (size_t) -1; - } - } - - nError = U_ZERO_ERROR; - int32_t nLen = ucnv_fromUChars(m_pConverter, NULL, 0, - a_pInputData, -1, &nError); - if (U_FAILURE(nError) && nError != U_BUFFER_OVERFLOW_ERROR) { - return (size_t) -1; - } - - return (size_t) nLen + 1; - } - - /** Convert the input string to the storage format of this data. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData NULL terminated source string to convert. All of - * the data will be converted including the - * terminating NULL character. - * @param a_pOutputData Pointer to the buffer to receive the converted - * string. - * @param a_pOutputDataSize Size of the output buffer in char. - * @return true if all of the input data, including the - * terminating NULL character was successfully - * converted. - */ - bool ConvertToStore( - const UChar * a_pInputData, - char * a_pOutputData, - size_t a_uOutputDataSize) - { - UErrorCode nError; - - if (!m_pConverter) { - nError = U_ZERO_ERROR; - m_pConverter = ucnv_open(m_pEncoding, &nError); - if (U_FAILURE(nError)) { - return false; - } - } - - nError = U_ZERO_ERROR; - ucnv_fromUChars(m_pConverter, - a_pOutputData, (int32_t) a_uOutputDataSize, - a_pInputData, -1, &nError); - if (U_FAILURE(nError)) { - return false; - } - - return true; - } -}; - -#endif // SI_CONVERT_ICU - - -// --------------------------------------------------------------------------- -// SI_CONVERT_WIN32 -// --------------------------------------------------------------------------- -#ifdef SI_CONVERT_WIN32 - -#define SI_Case SI_GenericCase - -// Windows CE doesn't have errno or MBCS libraries -#ifdef _WIN32_WCE -# ifndef SI_NO_MBCS -# define SI_NO_MBCS -# endif -#endif - -#include -#ifdef SI_NO_MBCS -# define SI_NoCase SI_GenericNoCase -#else // !SI_NO_MBCS -/** - * Case-insensitive comparison class using Win32 MBCS functions. This class - * returns a case-insensitive semi-collation order for MBCS text. It may not - * be safe for UTF-8 text returned in char format as we don't know what - * characters will be folded by the function! Therefore, if you are using - * SI_CHAR == char and SetUnicode(true), then you need to use the generic - * SI_NoCase class instead. - */ -#include -template -struct SI_NoCase { - bool operator()(const SI_CHAR * pLeft, const SI_CHAR * pRight) const { - if (sizeof(SI_CHAR) == sizeof(char)) { - return _mbsicmp((const unsigned char *)pLeft, - (const unsigned char *)pRight) < 0; - } - if (sizeof(SI_CHAR) == sizeof(wchar_t)) { - return _wcsicmp((const wchar_t *)pLeft, - (const wchar_t *)pRight) < 0; - } - return SI_GenericNoCase()(pLeft, pRight); - } -}; -#endif // SI_NO_MBCS - -/** - * Converts MBCS and UTF-8 to a wchar_t (or equivalent) on Windows. This uses - * only the Win32 functions and doesn't require the external Unicode UTF-8 - * conversion library. It will not work on Windows 95 without using Microsoft - * Layer for Unicode in your application. - */ -template -class SI_ConvertW { - UINT m_uCodePage; -protected: - SI_ConvertW() { } -public: - SI_ConvertW(bool a_bStoreIsUtf8) { - m_uCodePage = a_bStoreIsUtf8 ? CP_UTF8 : CP_ACP; - } - - /* copy and assignment */ - SI_ConvertW(const SI_ConvertW & rhs) { operator=(rhs); } - SI_ConvertW & operator=(const SI_ConvertW & rhs) { - m_uCodePage = rhs.m_uCodePage; - return *this; - } - - /** Calculate the number of SI_CHAR required for converting the input - * from the storage format. The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to SI_CHAR. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @return Number of SI_CHAR required by the string when - * converted. If there are embedded NULL bytes in the - * input data, only the string up and not including - * the NULL byte will be converted. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeFromStore( - const char * a_pInputData, - size_t a_uInputDataLen) - { - SI_ASSERT(a_uInputDataLen != (size_t) -1); - - int retval = MultiByteToWideChar( - m_uCodePage, 0, - a_pInputData, (int) a_uInputDataLen, - 0, 0); - return (size_t)(retval > 0 ? retval : -1); - } - - /** Convert the input string from the storage format to SI_CHAR. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData Data in storage format to be converted to SI_CHAR. - * @param a_uInputDataLen Length of storage format data in bytes. This - * must be the actual length of the data, including - * NULL byte if NULL terminated string is required. - * @param a_pOutputData Pointer to the output buffer to received the - * converted data. - * @param a_uOutputDataSize Size of the output buffer in SI_CHAR. - * @return true if all of the input data was successfully - * converted. - */ - bool ConvertFromStore( - const char * a_pInputData, - size_t a_uInputDataLen, - SI_CHAR * a_pOutputData, - size_t a_uOutputDataSize) - { - int nSize = MultiByteToWideChar( - m_uCodePage, 0, - a_pInputData, (int) a_uInputDataLen, - (wchar_t *) a_pOutputData, (int) a_uOutputDataSize); - return (nSize > 0); - } - - /** Calculate the number of char required by the storage format of this - * data. The storage format is always UTF-8. - * - * @param a_pInputData NULL terminated string to calculate the number of - * bytes required to be converted to storage format. - * @return Number of bytes required by the string when - * converted to storage format. This size always - * includes space for the terminating NULL character. - * @return -1 cast to size_t on a conversion error. - */ - size_t SizeToStore( - const SI_CHAR * a_pInputData) - { - int retval = WideCharToMultiByte( - m_uCodePage, 0, - (const wchar_t *) a_pInputData, -1, - 0, 0, 0, 0); - return (size_t) (retval > 0 ? retval : -1); - } - - /** Convert the input string to the storage format of this data. - * The storage format is always UTF-8 or MBCS. - * - * @param a_pInputData NULL terminated source string to convert. All of - * the data will be converted including the - * terminating NULL character. - * @param a_pOutputData Pointer to the buffer to receive the converted - * string. - * @param a_pOutputDataSize Size of the output buffer in char. - * @return true if all of the input data, including the - * terminating NULL character was successfully - * converted. - */ - bool ConvertToStore( - const SI_CHAR * a_pInputData, - char * a_pOutputData, - size_t a_uOutputDataSize) - { - int retval = WideCharToMultiByte( - m_uCodePage, 0, - (const wchar_t *) a_pInputData, -1, - a_pOutputData, (int) a_uOutputDataSize, 0, 0); - return retval > 0; - } -}; - -#endif // SI_CONVERT_WIN32 - - -// --------------------------------------------------------------------------- -// TYPE DEFINITIONS -// --------------------------------------------------------------------------- - -typedef CSimpleIniTempl,SI_ConvertA > CSimpleIniA; -typedef CSimpleIniTempl,SI_ConvertA > CSimpleIniCaseA; - -#if defined(SI_NO_CONVERSION) -// if there is no wide char conversion then we don't need to define the -// widechar "W" versions of CSimpleIni -# define CSimpleIni CSimpleIniA -# define CSimpleIniCase CSimpleIniCaseA -# define SI_NEWLINE SI_NEWLINE_A -#else -# if defined(SI_CONVERT_ICU) -typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniW; -typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniCaseW; -# else -typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniW; -typedef CSimpleIniTempl,SI_ConvertW > CSimpleIniCaseW; -# endif - -# ifdef _UNICODE -# define CSimpleIni CSimpleIniW -# define CSimpleIniCase CSimpleIniCaseW -# define SI_NEWLINE SI_NEWLINE_W -# else // !_UNICODE -# define CSimpleIni CSimpleIniA -# define CSimpleIniCase CSimpleIniCaseA -# define SI_NEWLINE SI_NEWLINE_A -# endif // _UNICODE -#endif - -#ifdef _MSC_VER -# pragma warning (pop) -#endif - -#endif // INCLUDED_SimpleIni_h - diff --git a/ScriptEngine/third-party/Lua/include/lapi.h b/ScriptEngine/third-party/backend/include/Lua/lapi.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lapi.h rename to ScriptEngine/third-party/backend/include/Lua/lapi.h diff --git a/ScriptEngine/third-party/Lua/include/lauxlib.h b/ScriptEngine/third-party/backend/include/Lua/lauxlib.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lauxlib.h rename to ScriptEngine/third-party/backend/include/Lua/lauxlib.h diff --git a/ScriptEngine/third-party/Lua/include/lcode.h b/ScriptEngine/third-party/backend/include/Lua/lcode.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lcode.h rename to ScriptEngine/third-party/backend/include/Lua/lcode.h diff --git a/ScriptEngine/third-party/Lua/include/lctype.h b/ScriptEngine/third-party/backend/include/Lua/lctype.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lctype.h rename to ScriptEngine/third-party/backend/include/Lua/lctype.h diff --git a/ScriptEngine/third-party/Lua/include/ldebug.h b/ScriptEngine/third-party/backend/include/Lua/ldebug.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/ldebug.h rename to ScriptEngine/third-party/backend/include/Lua/ldebug.h diff --git a/ScriptEngine/third-party/Lua/include/ldo.h b/ScriptEngine/third-party/backend/include/Lua/ldo.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/ldo.h rename to ScriptEngine/third-party/backend/include/Lua/ldo.h diff --git a/ScriptEngine/third-party/Lua/include/lfunc.h b/ScriptEngine/third-party/backend/include/Lua/lfunc.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lfunc.h rename to ScriptEngine/third-party/backend/include/Lua/lfunc.h diff --git a/ScriptEngine/third-party/Lua/include/lgc.h b/ScriptEngine/third-party/backend/include/Lua/lgc.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lgc.h rename to ScriptEngine/third-party/backend/include/Lua/lgc.h diff --git a/ScriptEngine/third-party/Lua/include/ljumptab.h b/ScriptEngine/third-party/backend/include/Lua/ljumptab.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/ljumptab.h rename to ScriptEngine/third-party/backend/include/Lua/ljumptab.h diff --git a/ScriptEngine/third-party/Lua/include/llex.h b/ScriptEngine/third-party/backend/include/Lua/llex.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/llex.h rename to ScriptEngine/third-party/backend/include/Lua/llex.h diff --git a/ScriptEngine/third-party/Lua/include/llimits.h b/ScriptEngine/third-party/backend/include/Lua/llimits.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/llimits.h rename to ScriptEngine/third-party/backend/include/Lua/llimits.h diff --git a/ScriptEngine/third-party/Lua/include/lmem.h b/ScriptEngine/third-party/backend/include/Lua/lmem.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lmem.h rename to ScriptEngine/third-party/backend/include/Lua/lmem.h diff --git a/ScriptEngine/third-party/Lua/include/lobject.h b/ScriptEngine/third-party/backend/include/Lua/lobject.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lobject.h rename to ScriptEngine/third-party/backend/include/Lua/lobject.h diff --git a/ScriptEngine/third-party/Lua/include/lopcodes.h b/ScriptEngine/third-party/backend/include/Lua/lopcodes.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lopcodes.h rename to ScriptEngine/third-party/backend/include/Lua/lopcodes.h diff --git a/ScriptEngine/third-party/Lua/include/lopnames.h b/ScriptEngine/third-party/backend/include/Lua/lopnames.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lopnames.h rename to ScriptEngine/third-party/backend/include/Lua/lopnames.h diff --git a/ScriptEngine/third-party/Lua/include/lparser.h b/ScriptEngine/third-party/backend/include/Lua/lparser.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lparser.h rename to ScriptEngine/third-party/backend/include/Lua/lparser.h diff --git a/ScriptEngine/third-party/Lua/include/lprefix.h b/ScriptEngine/third-party/backend/include/Lua/lprefix.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lprefix.h rename to ScriptEngine/third-party/backend/include/Lua/lprefix.h diff --git a/ScriptEngine/third-party/Lua/include/lstate.h b/ScriptEngine/third-party/backend/include/Lua/lstate.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lstate.h rename to ScriptEngine/third-party/backend/include/Lua/lstate.h diff --git a/ScriptEngine/third-party/Lua/include/lstring.h b/ScriptEngine/third-party/backend/include/Lua/lstring.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lstring.h rename to ScriptEngine/third-party/backend/include/Lua/lstring.h diff --git a/ScriptEngine/third-party/Lua/include/ltable.h b/ScriptEngine/third-party/backend/include/Lua/ltable.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/ltable.h rename to ScriptEngine/third-party/backend/include/Lua/ltable.h diff --git a/ScriptEngine/third-party/Lua/include/ltm.h b/ScriptEngine/third-party/backend/include/Lua/ltm.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/ltm.h rename to ScriptEngine/third-party/backend/include/Lua/ltm.h diff --git a/ScriptEngine/third-party/Lua/include/lua.h b/ScriptEngine/third-party/backend/include/Lua/lua.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lua.h rename to ScriptEngine/third-party/backend/include/Lua/lua.h diff --git a/ScriptEngine/third-party/Lua/include/lua.hpp b/ScriptEngine/third-party/backend/include/Lua/lua.hpp similarity index 100% rename from ScriptEngine/third-party/Lua/include/lua.hpp rename to ScriptEngine/third-party/backend/include/Lua/lua.hpp diff --git a/ScriptEngine/third-party/Lua/include/luaconf.h b/ScriptEngine/third-party/backend/include/Lua/luaconf.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/luaconf.h rename to ScriptEngine/third-party/backend/include/Lua/luaconf.h diff --git a/ScriptEngine/third-party/Lua/include/lualib.h b/ScriptEngine/third-party/backend/include/Lua/lualib.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lualib.h rename to ScriptEngine/third-party/backend/include/Lua/lualib.h diff --git a/ScriptEngine/third-party/Lua/include/lundump.h b/ScriptEngine/third-party/backend/include/Lua/lundump.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lundump.h rename to ScriptEngine/third-party/backend/include/Lua/lundump.h diff --git a/ScriptEngine/third-party/Lua/include/lvm.h b/ScriptEngine/third-party/backend/include/Lua/lvm.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lvm.h rename to ScriptEngine/third-party/backend/include/Lua/lvm.h diff --git a/ScriptEngine/third-party/Lua/include/lzio.h b/ScriptEngine/third-party/backend/include/Lua/lzio.h similarity index 100% rename from ScriptEngine/third-party/Lua/include/lzio.h rename to ScriptEngine/third-party/backend/include/Lua/lzio.h diff --git a/ScriptEngine/third-party/NodeJs/include/aliased_buffer.h b/ScriptEngine/third-party/backend/include/NodeJs/aliased_buffer.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/aliased_buffer.h rename to ScriptEngine/third-party/backend/include/NodeJs/aliased_buffer.h diff --git a/ScriptEngine/third-party/NodeJs/include/aliased_struct-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/aliased_struct-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/aliased_struct-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/aliased_struct-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/aliased_struct.h b/ScriptEngine/third-party/backend/include/NodeJs/aliased_struct.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/aliased_struct.h rename to ScriptEngine/third-party/backend/include/NodeJs/aliased_struct.h diff --git a/ScriptEngine/third-party/NodeJs/include/allocated_buffer-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/allocated_buffer-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/allocated_buffer-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/allocated_buffer-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/allocated_buffer.h b/ScriptEngine/third-party/backend/include/NodeJs/allocated_buffer.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/allocated_buffer.h rename to ScriptEngine/third-party/backend/include/NodeJs/allocated_buffer.h diff --git a/ScriptEngine/third-party/NodeJs/include/async_wrap-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/async_wrap-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/async_wrap-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/async_wrap-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/async_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/async_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/async_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/async_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/base64-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/base64-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/base64-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/base64-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/base64.h b/ScriptEngine/third-party/backend/include/NodeJs/base64.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/base64.h rename to ScriptEngine/third-party/backend/include/NodeJs/base64.h diff --git a/ScriptEngine/third-party/NodeJs/include/base_object-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/base_object-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/base_object-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/base_object-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/base_object.h b/ScriptEngine/third-party/backend/include/NodeJs/base_object.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/base_object.h rename to ScriptEngine/third-party/backend/include/NodeJs/base_object.h diff --git a/ScriptEngine/third-party/NodeJs/include/callback_queue-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/callback_queue-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/callback_queue-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/callback_queue-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/callback_queue.h b/ScriptEngine/third-party/backend/include/NodeJs/callback_queue.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/callback_queue.h rename to ScriptEngine/third-party/backend/include/NodeJs/callback_queue.h diff --git a/ScriptEngine/third-party/NodeJs/include/cares_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/cares_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/cares_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/cares_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/connect_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/connect_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/connect_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/connect_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/connection_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/connection_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/connection_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/connection_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_aes.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_aes.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_aes.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_aes.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_bio.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_bio.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_bio.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_bio.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_cipher.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_cipher.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_cipher.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_cipher.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_clienthello-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_clienthello-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_clienthello-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_clienthello-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_clienthello.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_clienthello.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_clienthello.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_clienthello.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_common.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_common.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_common.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_common.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_context.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_context.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_context.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_context.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_dh.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_dh.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_dh.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_dh.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_dsa.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_dsa.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_dsa.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_dsa.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_ec.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_ec.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_ec.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_ec.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_groups.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_groups.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_groups.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_groups.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_hash.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_hash.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_hash.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_hash.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_hkdf.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_hkdf.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_hkdf.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_hkdf.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_hmac.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_hmac.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_hmac.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_hmac.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_keygen.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_keygen.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_keygen.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_keygen.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_keys.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_keys.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_keys.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_keys.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_pbkdf2.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_pbkdf2.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_pbkdf2.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_pbkdf2.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_random.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_random.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_random.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_random.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_rsa.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_rsa.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_rsa.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_rsa.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_scrypt.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_scrypt.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_scrypt.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_scrypt.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_sig.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_sig.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_sig.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_sig.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_spkac.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_spkac.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_spkac.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_spkac.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_timing.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_timing.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_timing.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_timing.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_tls.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_tls.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_tls.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_tls.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_util.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_util.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_util.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_util.h diff --git a/ScriptEngine/third-party/NodeJs/include/crypto/crypto_x509.h b/ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_x509.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/crypto/crypto_x509.h rename to ScriptEngine/third-party/backend/include/NodeJs/crypto/crypto_x509.h diff --git a/ScriptEngine/third-party/NodeJs/include/debug_utils-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/debug_utils-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/debug_utils-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/debug_utils-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/debug_utils.h b/ScriptEngine/third-party/backend/include/NodeJs/debug_utils.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/debug_utils.h rename to ScriptEngine/third-party/backend/include/NodeJs/debug_utils.h diff --git a/ScriptEngine/third-party/NodeJs/include/diagnosticfilename-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/diagnosticfilename-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/diagnosticfilename-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/diagnosticfilename-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/env-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/env-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/env-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/env-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/env.h b/ScriptEngine/third-party/backend/include/NodeJs/env.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/env.h rename to ScriptEngine/third-party/backend/include/NodeJs/env.h diff --git a/ScriptEngine/third-party/NodeJs/include/handle_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/handle_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/handle_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/handle_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/histogram-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/histogram-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/histogram-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/histogram-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/histogram.h b/ScriptEngine/third-party/backend/include/NodeJs/histogram.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/histogram.h rename to ScriptEngine/third-party/backend/include/NodeJs/histogram.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector/main_thread_interface.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector/main_thread_interface.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector/main_thread_interface.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector/main_thread_interface.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector/node_string.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector/node_string.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector/node_string.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector/node_string.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector/runtime_agent.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector/runtime_agent.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector/runtime_agent.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector/runtime_agent.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector/tracing_agent.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector/tracing_agent.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector/tracing_agent.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector/tracing_agent.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector/worker_agent.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector/worker_agent.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector/worker_agent.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector/worker_agent.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector/worker_inspector.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector/worker_inspector.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector/worker_inspector.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector/worker_inspector.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector_agent.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector_agent.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector_agent.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector_agent.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector_io.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector_io.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector_io.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector_io.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector_profiler.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector_profiler.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector_profiler.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector_profiler.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector_socket.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector_socket.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector_socket.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector_socket.h diff --git a/ScriptEngine/third-party/NodeJs/include/inspector_socket_server.h b/ScriptEngine/third-party/backend/include/NodeJs/inspector_socket_server.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/inspector_socket_server.h rename to ScriptEngine/third-party/backend/include/NodeJs/inspector_socket_server.h diff --git a/ScriptEngine/third-party/NodeJs/include/js_native_api.h b/ScriptEngine/third-party/backend/include/NodeJs/js_native_api.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/js_native_api.h rename to ScriptEngine/third-party/backend/include/NodeJs/js_native_api.h diff --git a/ScriptEngine/third-party/NodeJs/include/js_native_api_types.h b/ScriptEngine/third-party/backend/include/NodeJs/js_native_api_types.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/js_native_api_types.h rename to ScriptEngine/third-party/backend/include/NodeJs/js_native_api_types.h diff --git a/ScriptEngine/third-party/NodeJs/include/js_native_api_v8.h b/ScriptEngine/third-party/backend/include/NodeJs/js_native_api_v8.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/js_native_api_v8.h rename to ScriptEngine/third-party/backend/include/NodeJs/js_native_api_v8.h diff --git a/ScriptEngine/third-party/NodeJs/include/js_native_api_v8_internals.h b/ScriptEngine/third-party/backend/include/NodeJs/js_native_api_v8_internals.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/js_native_api_v8_internals.h rename to ScriptEngine/third-party/backend/include/NodeJs/js_native_api_v8_internals.h diff --git a/ScriptEngine/third-party/NodeJs/include/js_stream.h b/ScriptEngine/third-party/backend/include/NodeJs/js_stream.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/js_stream.h rename to ScriptEngine/third-party/backend/include/NodeJs/js_stream.h diff --git a/ScriptEngine/third-party/NodeJs/include/json_utils.h b/ScriptEngine/third-party/backend/include/NodeJs/json_utils.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/json_utils.h rename to ScriptEngine/third-party/backend/include/NodeJs/json_utils.h diff --git a/ScriptEngine/third-party/NodeJs/include/large_pages/node_large_page.h b/ScriptEngine/third-party/backend/include/NodeJs/large_pages/node_large_page.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/large_pages/node_large_page.h rename to ScriptEngine/third-party/backend/include/NodeJs/large_pages/node_large_page.h diff --git a/ScriptEngine/third-party/NodeJs/include/memory_tracker-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/memory_tracker-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/memory_tracker-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/memory_tracker-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/memory_tracker.h b/ScriptEngine/third-party/backend/include/NodeJs/memory_tracker.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/memory_tracker.h rename to ScriptEngine/third-party/backend/include/NodeJs/memory_tracker.h diff --git a/ScriptEngine/third-party/NodeJs/include/module_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/module_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/module_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/module_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/node.h b/ScriptEngine/third-party/backend/include/NodeJs/node.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node.h rename to ScriptEngine/third-party/backend/include/NodeJs/node.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_api.h b/ScriptEngine/third-party/backend/include/NodeJs/node_api.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_api.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_api.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_api_internals.h b/ScriptEngine/third-party/backend/include/NodeJs/node_api_internals.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_api_internals.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_api_internals.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_api_types.h b/ScriptEngine/third-party/backend/include/NodeJs/node_api_types.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_api_types.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_api_types.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_binding.h b/ScriptEngine/third-party/backend/include/NodeJs/node_binding.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_binding.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_binding.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_blob.h b/ScriptEngine/third-party/backend/include/NodeJs/node_blob.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_blob.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_blob.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_bob-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_bob-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_bob-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_bob-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_bob.h b/ScriptEngine/third-party/backend/include/NodeJs/node_bob.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_bob.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_bob.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_buffer.h b/ScriptEngine/third-party/backend/include/NodeJs/node_buffer.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_buffer.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_buffer.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_constants.h b/ScriptEngine/third-party/backend/include/NodeJs/node_constants.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_constants.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_constants.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_context_data.h b/ScriptEngine/third-party/backend/include/NodeJs/node_context_data.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_context_data.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_context_data.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_contextify.h b/ScriptEngine/third-party/backend/include/NodeJs/node_contextify.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_contextify.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_contextify.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_crypto.h b/ScriptEngine/third-party/backend/include/NodeJs/node_crypto.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_crypto.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_crypto.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_dir.h b/ScriptEngine/third-party/backend/include/NodeJs/node_dir.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_dir.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_dir.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_dtrace.h b/ScriptEngine/third-party/backend/include/NodeJs/node_dtrace.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_dtrace.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_dtrace.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_errors.h b/ScriptEngine/third-party/backend/include/NodeJs/node_errors.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_errors.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_errors.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_external_reference.h b/ScriptEngine/third-party/backend/include/NodeJs/node_external_reference.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_external_reference.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_external_reference.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_file-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_file-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_file-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_file-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_file.h b/ScriptEngine/third-party/backend/include/NodeJs/node_file.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_file.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_file.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_http2.h b/ScriptEngine/third-party/backend/include/NodeJs/node_http2.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_http2.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_http2.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_http2_state.h b/ScriptEngine/third-party/backend/include/NodeJs/node_http2_state.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_http2_state.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_http2_state.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_http_common-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_http_common-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_http_common-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_http_common-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_http_common.h b/ScriptEngine/third-party/backend/include/NodeJs/node_http_common.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_http_common.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_http_common.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_i18n.h b/ScriptEngine/third-party/backend/include/NodeJs/node_i18n.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_i18n.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_i18n.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_internals.h b/ScriptEngine/third-party/backend/include/NodeJs/node_internals.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_internals.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_internals.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_main_instance.h b/ScriptEngine/third-party/backend/include/NodeJs/node_main_instance.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_main_instance.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_main_instance.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_mem-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_mem-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_mem-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_mem-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_mem.h b/ScriptEngine/third-party/backend/include/NodeJs/node_mem.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_mem.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_mem.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_messaging.h b/ScriptEngine/third-party/backend/include/NodeJs/node_messaging.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_messaging.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_messaging.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_metadata.h b/ScriptEngine/third-party/backend/include/NodeJs/node_metadata.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_metadata.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_metadata.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_mutex.h b/ScriptEngine/third-party/backend/include/NodeJs/node_mutex.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_mutex.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_mutex.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_native_module.h b/ScriptEngine/third-party/backend/include/NodeJs/node_native_module.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_native_module.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_native_module.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_native_module_env.h b/ScriptEngine/third-party/backend/include/NodeJs/node_native_module_env.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_native_module_env.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_native_module_env.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_object_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/node_object_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_object_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_object_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_options-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_options-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_options-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_options-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_options.h b/ScriptEngine/third-party/backend/include/NodeJs/node_options.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_options.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_options.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_perf.h b/ScriptEngine/third-party/backend/include/NodeJs/node_perf.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_perf.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_perf.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_perf_common.h b/ScriptEngine/third-party/backend/include/NodeJs/node_perf_common.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_perf_common.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_perf_common.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_platform.h b/ScriptEngine/third-party/backend/include/NodeJs/node_platform.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_platform.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_platform.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_process-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_process-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_process-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_process-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_process.h b/ScriptEngine/third-party/backend/include/NodeJs/node_process.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_process.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_process.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_report.h b/ScriptEngine/third-party/backend/include/NodeJs/node_report.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_report.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_report.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_revert.h b/ScriptEngine/third-party/backend/include/NodeJs/node_revert.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_revert.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_revert.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_root_certs.h b/ScriptEngine/third-party/backend/include/NodeJs/node_root_certs.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_root_certs.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_root_certs.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_snapshotable.h b/ScriptEngine/third-party/backend/include/NodeJs/node_snapshotable.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_snapshotable.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_snapshotable.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_sockaddr-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_sockaddr-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_sockaddr-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_sockaddr-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_sockaddr.h b/ScriptEngine/third-party/backend/include/NodeJs/node_sockaddr.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_sockaddr.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_sockaddr.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_stat_watcher.h b/ScriptEngine/third-party/backend/include/NodeJs/node_stat_watcher.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_stat_watcher.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_stat_watcher.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_union_bytes.h b/ScriptEngine/third-party/backend/include/NodeJs/node_union_bytes.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_union_bytes.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_union_bytes.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_url.h b/ScriptEngine/third-party/backend/include/NodeJs/node_url.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_url.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_url.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_v8.h b/ScriptEngine/third-party/backend/include/NodeJs/node_v8.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_v8.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_v8.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_v8_platform-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_v8_platform-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_v8_platform-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_v8_platform-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_version.h b/ScriptEngine/third-party/backend/include/NodeJs/node_version.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_version.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_version.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_wasi.h b/ScriptEngine/third-party/backend/include/NodeJs/node_wasi.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_wasi.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_wasi.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_watchdog.h b/ScriptEngine/third-party/backend/include/NodeJs/node_watchdog.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_watchdog.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_watchdog.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_win32_etw_provider-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/node_win32_etw_provider-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_win32_etw_provider-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_win32_etw_provider-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_win32_etw_provider.h b/ScriptEngine/third-party/backend/include/NodeJs/node_win32_etw_provider.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_win32_etw_provider.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_win32_etw_provider.h diff --git a/ScriptEngine/third-party/NodeJs/include/node_worker.h b/ScriptEngine/third-party/backend/include/NodeJs/node_worker.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/node_worker.h rename to ScriptEngine/third-party/backend/include/NodeJs/node_worker.h diff --git a/ScriptEngine/third-party/NodeJs/include/pipe_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/pipe_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/pipe_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/pipe_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/req_wrap-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/req_wrap-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/req_wrap-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/req_wrap-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/req_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/req_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/req_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/req_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/spawn_sync.h b/ScriptEngine/third-party/backend/include/NodeJs/spawn_sync.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/spawn_sync.h rename to ScriptEngine/third-party/backend/include/NodeJs/spawn_sync.h diff --git a/ScriptEngine/third-party/NodeJs/include/stream_base-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/stream_base-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/stream_base-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/stream_base-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/stream_base.h b/ScriptEngine/third-party/backend/include/NodeJs/stream_base.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/stream_base.h rename to ScriptEngine/third-party/backend/include/NodeJs/stream_base.h diff --git a/ScriptEngine/third-party/NodeJs/include/stream_pipe.h b/ScriptEngine/third-party/backend/include/NodeJs/stream_pipe.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/stream_pipe.h rename to ScriptEngine/third-party/backend/include/NodeJs/stream_pipe.h diff --git a/ScriptEngine/third-party/NodeJs/include/stream_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/stream_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/stream_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/stream_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/string_bytes.h b/ScriptEngine/third-party/backend/include/NodeJs/string_bytes.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/string_bytes.h rename to ScriptEngine/third-party/backend/include/NodeJs/string_bytes.h diff --git a/ScriptEngine/third-party/NodeJs/include/string_decoder-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/string_decoder-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/string_decoder-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/string_decoder-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/string_decoder.h b/ScriptEngine/third-party/backend/include/NodeJs/string_decoder.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/string_decoder.h rename to ScriptEngine/third-party/backend/include/NodeJs/string_decoder.h diff --git a/ScriptEngine/third-party/NodeJs/include/string_search.h b/ScriptEngine/third-party/backend/include/NodeJs/string_search.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/string_search.h rename to ScriptEngine/third-party/backend/include/NodeJs/string_search.h diff --git a/ScriptEngine/third-party/NodeJs/include/tcp_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/tcp_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tcp_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/tcp_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/threadpoolwork-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/threadpoolwork-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/threadpoolwork-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/threadpoolwork-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/timer_wrap-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/timer_wrap-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/timer_wrap-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/timer_wrap-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/timer_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/timer_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/timer_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/timer_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/tracing/agent.h b/ScriptEngine/third-party/backend/include/NodeJs/tracing/agent.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tracing/agent.h rename to ScriptEngine/third-party/backend/include/NodeJs/tracing/agent.h diff --git a/ScriptEngine/third-party/NodeJs/include/tracing/node_trace_buffer.h b/ScriptEngine/third-party/backend/include/NodeJs/tracing/node_trace_buffer.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tracing/node_trace_buffer.h rename to ScriptEngine/third-party/backend/include/NodeJs/tracing/node_trace_buffer.h diff --git a/ScriptEngine/third-party/NodeJs/include/tracing/node_trace_writer.h b/ScriptEngine/third-party/backend/include/NodeJs/tracing/node_trace_writer.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tracing/node_trace_writer.h rename to ScriptEngine/third-party/backend/include/NodeJs/tracing/node_trace_writer.h diff --git a/ScriptEngine/third-party/NodeJs/include/tracing/trace_event.h b/ScriptEngine/third-party/backend/include/NodeJs/tracing/trace_event.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tracing/trace_event.h rename to ScriptEngine/third-party/backend/include/NodeJs/tracing/trace_event.h diff --git a/ScriptEngine/third-party/NodeJs/include/tracing/trace_event_common.h b/ScriptEngine/third-party/backend/include/NodeJs/tracing/trace_event_common.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tracing/trace_event_common.h rename to ScriptEngine/third-party/backend/include/NodeJs/tracing/trace_event_common.h diff --git a/ScriptEngine/third-party/NodeJs/include/tracing/traced_value.h b/ScriptEngine/third-party/backend/include/NodeJs/tracing/traced_value.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tracing/traced_value.h rename to ScriptEngine/third-party/backend/include/NodeJs/tracing/traced_value.h diff --git a/ScriptEngine/third-party/NodeJs/include/tty_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/tty_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/tty_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/tty_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/udp_wrap.h b/ScriptEngine/third-party/backend/include/NodeJs/udp_wrap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/udp_wrap.h rename to ScriptEngine/third-party/backend/include/NodeJs/udp_wrap.h diff --git a/ScriptEngine/third-party/NodeJs/include/util-inl.h b/ScriptEngine/third-party/backend/include/NodeJs/util-inl.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/util-inl.h rename to ScriptEngine/third-party/backend/include/NodeJs/util-inl.h diff --git a/ScriptEngine/third-party/NodeJs/include/util.h b/ScriptEngine/third-party/backend/include/NodeJs/util.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/util.h rename to ScriptEngine/third-party/backend/include/NodeJs/util.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/aix.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/aix.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/aix.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/aix.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/android-ifaddrs.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/android-ifaddrs.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/android-ifaddrs.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/android-ifaddrs.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/bsd.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/bsd.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/bsd.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/bsd.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/darwin.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/darwin.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/darwin.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/darwin.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/errno.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/errno.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/errno.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/errno.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/linux.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/linux.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/linux.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/linux.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/os390.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/os390.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/os390.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/os390.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/posix.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/posix.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/posix.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/posix.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/stdint-msvc2008.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/stdint-msvc2008.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/stdint-msvc2008.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/stdint-msvc2008.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/sunos.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/sunos.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/sunos.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/sunos.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/threadpool.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/threadpool.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/threadpool.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/threadpool.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/tree.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/tree.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/tree.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/tree.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/unix.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/unix.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/unix.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/unix.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/version.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/version.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/version.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/version.h diff --git a/ScriptEngine/third-party/NodeJs/include/uv/uv/win.h b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/win.h similarity index 99% rename from ScriptEngine/third-party/NodeJs/include/uv/uv/win.h rename to ScriptEngine/third-party/backend/include/NodeJs/uv/uv/win.h index 5fecf4b..73f4188 100644 --- a/ScriptEngine/third-party/NodeJs/include/uv/uv/win.h +++ b/ScriptEngine/third-party/backend/include/NodeJs/uv/uv/win.h @@ -43,7 +43,7 @@ typedef struct pollfd { #ifndef LOCALE_INVARIANT # define LOCALE_INVARIANT 0x007f #endif - +#define _WINSOCKAPI_ #include // Disable the typedef in mstcpip.h of MinGW. #define _TCP_INITIAL_RTO_PARAMETERS _TCP_INITIAL_RTO_PARAMETERS__AVOID diff --git a/ScriptEngine/third-party/NodeJs/include/v8/APIDesign.md b/ScriptEngine/third-party/backend/include/NodeJs/v8/APIDesign.md similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/APIDesign.md rename to ScriptEngine/third-party/backend/include/NodeJs/v8/APIDesign.md diff --git a/ScriptEngine/third-party/NodeJs/include/v8/DEPS b/ScriptEngine/third-party/backend/include/NodeJs/v8/DEPS similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/DEPS rename to ScriptEngine/third-party/backend/include/NodeJs/v8/DEPS diff --git a/ScriptEngine/third-party/NodeJs/include/v8/DIR_METADATA b/ScriptEngine/third-party/backend/include/NodeJs/v8/DIR_METADATA similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/DIR_METADATA rename to ScriptEngine/third-party/backend/include/NodeJs/v8/DIR_METADATA diff --git a/ScriptEngine/third-party/NodeJs/include/v8/OWNERS b/ScriptEngine/third-party/backend/include/NodeJs/v8/OWNERS similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/OWNERS rename to ScriptEngine/third-party/backend/include/NodeJs/v8/OWNERS diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/DEPS b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/DEPS similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/DEPS rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/DEPS diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/OWNERS b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/OWNERS similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/OWNERS rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/OWNERS diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/README.md b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/README.md similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/README.md rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/README.md diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/allocation.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/allocation.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/allocation.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/allocation.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/common.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/common.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/common.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/common.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/cross-thread-persistent.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/cross-thread-persistent.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/cross-thread-persistent.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/cross-thread-persistent.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/custom-space.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/custom-space.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/custom-space.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/custom-space.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/default-platform.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/default-platform.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/default-platform.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/default-platform.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/ephemeron-pair.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/ephemeron-pair.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/ephemeron-pair.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/ephemeron-pair.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/explicit-management.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/explicit-management.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/explicit-management.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/explicit-management.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/garbage-collected.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/garbage-collected.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/garbage-collected.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/garbage-collected.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap-consistency.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap-consistency.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap-consistency.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap-consistency.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap-state.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap-state.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap-state.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap-state.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap-statistics.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap-statistics.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap-statistics.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap-statistics.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/heap.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/heap.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/api-constants.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/api-constants.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/api-constants.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/api-constants.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/atomic-entry-flag.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/atomic-entry-flag.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/atomic-entry-flag.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/atomic-entry-flag.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/caged-heap-local-data.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/caged-heap-local-data.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/caged-heap-local-data.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/caged-heap-local-data.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/compiler-specific.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/compiler-specific.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/compiler-specific.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/compiler-specific.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/finalizer-trait.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/finalizer-trait.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/finalizer-trait.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/finalizer-trait.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/gc-info.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/gc-info.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/gc-info.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/gc-info.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/logging.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/logging.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/logging.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/logging.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/name-trait.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/name-trait.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/name-trait.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/name-trait.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/persistent-node.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/persistent-node.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/persistent-node.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/persistent-node.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/pointer-policies.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/pointer-policies.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/pointer-policies.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/pointer-policies.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/prefinalizer-handler.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/prefinalizer-handler.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/prefinalizer-handler.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/prefinalizer-handler.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/write-barrier.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/write-barrier.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/internal/write-barrier.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/internal/write-barrier.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/liveness-broker.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/liveness-broker.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/liveness-broker.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/liveness-broker.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/macros.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/macros.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/macros.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/macros.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/member.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/member.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/member.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/member.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/name-provider.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/name-provider.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/name-provider.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/name-provider.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/object-size-trait.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/object-size-trait.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/object-size-trait.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/object-size-trait.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/persistent.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/persistent.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/persistent.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/persistent.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/platform.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/platform.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/platform.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/platform.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/prefinalizer.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/prefinalizer.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/prefinalizer.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/prefinalizer.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/process-heap-statistics.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/process-heap-statistics.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/process-heap-statistics.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/process-heap-statistics.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/sentinel-pointer.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/sentinel-pointer.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/sentinel-pointer.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/sentinel-pointer.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/source-location.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/source-location.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/source-location.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/source-location.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/testing.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/testing.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/testing.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/testing.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/trace-trait.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/trace-trait.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/trace-trait.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/trace-trait.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/type-traits.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/type-traits.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/type-traits.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/type-traits.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/cppgc/visitor.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/visitor.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/cppgc/visitor.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/cppgc/visitor.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/js_protocol-1.2.json b/ScriptEngine/third-party/backend/include/NodeJs/v8/js_protocol-1.2.json similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/js_protocol-1.2.json rename to ScriptEngine/third-party/backend/include/NodeJs/v8/js_protocol-1.2.json diff --git a/ScriptEngine/third-party/NodeJs/include/v8/js_protocol-1.3.json b/ScriptEngine/third-party/backend/include/NodeJs/v8/js_protocol-1.3.json similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/js_protocol-1.3.json rename to ScriptEngine/third-party/backend/include/NodeJs/v8/js_protocol-1.3.json diff --git a/ScriptEngine/third-party/NodeJs/include/v8/js_protocol.pdl b/ScriptEngine/third-party/backend/include/NodeJs/v8/js_protocol.pdl similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/js_protocol.pdl rename to ScriptEngine/third-party/backend/include/NodeJs/v8/js_protocol.pdl diff --git a/ScriptEngine/third-party/NodeJs/include/v8/libplatform/DEPS b/ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/DEPS similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/libplatform/DEPS rename to ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/DEPS diff --git a/ScriptEngine/third-party/NodeJs/include/v8/libplatform/libplatform-export.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/libplatform-export.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/libplatform/libplatform-export.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/libplatform-export.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/libplatform/libplatform.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/libplatform.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/libplatform/libplatform.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/libplatform.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/libplatform/v8-tracing.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/v8-tracing.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/libplatform/v8-tracing.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/libplatform/v8-tracing.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-cppgc.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-cppgc.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-cppgc.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-cppgc.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-fast-api-calls.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-fast-api-calls.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-fast-api-calls.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-fast-api-calls.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-inspector-protocol.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-inspector-protocol.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-inspector-protocol.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-inspector-protocol.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-inspector.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-inspector.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-inspector.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-inspector.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-internal.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-internal.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-internal.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-internal.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-metrics.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-metrics.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-metrics.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-metrics.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-platform.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-platform.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-platform.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-platform.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-profiler.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-profiler.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-profiler.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-profiler.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-unwinder-state.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-unwinder-state.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-unwinder-state.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-unwinder-state.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-util.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-util.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-util.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-util.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-value-serializer-version.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-value-serializer-version.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-value-serializer-version.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-value-serializer-version.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-version-string.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-version-string.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-version-string.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-version-string.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-version.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-version.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-version.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-version.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-wasm-trap-handler-posix.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-wasm-trap-handler-posix.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-wasm-trap-handler-posix.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-wasm-trap-handler-posix.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8-wasm-trap-handler-win.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-wasm-trap-handler-win.h similarity index 99% rename from ScriptEngine/third-party/NodeJs/include/v8/v8-wasm-trap-handler-win.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8-wasm-trap-handler-win.h index 9d3cad5..6fd7813 100644 --- a/ScriptEngine/third-party/NodeJs/include/v8/v8-wasm-trap-handler-win.h +++ b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8-wasm-trap-handler-win.h @@ -5,6 +5,7 @@ #ifndef V8_WASM_TRAP_HANDLER_WIN_H_ #define V8_WASM_TRAP_HANDLER_WIN_H_ + #include #include "v8config.h" // NOLINT(build/include_directory) diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8/v8config.h b/ScriptEngine/third-party/backend/include/NodeJs/v8/v8config.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8/v8config.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8/v8config.h diff --git a/ScriptEngine/third-party/NodeJs/include/v8abbr.h b/ScriptEngine/third-party/backend/include/NodeJs/v8abbr.h similarity index 100% rename from ScriptEngine/third-party/NodeJs/include/v8abbr.h rename to ScriptEngine/third-party/backend/include/NodeJs/v8abbr.h diff --git a/ScriptEngine/third-party/backend/include/QuickJs/quickjs-libc.h b/ScriptEngine/third-party/backend/include/QuickJs/quickjs-libc.h new file mode 100644 index 0000000..fbbe5b0 --- /dev/null +++ b/ScriptEngine/third-party/backend/include/QuickJs/quickjs-libc.h @@ -0,0 +1,59 @@ +/* + * QuickJS C library + * + * Copyright (c) 2017-2018 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#ifndef QUICKJS_LIBC_H +#define QUICKJS_LIBC_H + +#include +#include + +#include "quickjs.h" + +#ifdef __cplusplus +extern "C" { +#endif + +JSModuleDef *js_init_module_std(JSContext *ctx, const char *module_name); +JSModuleDef *js_init_module_os(JSContext *ctx, const char *module_name); +void js_std_add_helpers(JSContext *ctx, int argc, char **argv); +void js_std_loop(JSContext *ctx); +void js_std_init_handlers(JSRuntime *rt); +void js_std_free_handlers(JSRuntime *rt); +void js_std_dump_error(JSContext *ctx); +uint8_t *js_load_file(JSContext *ctx, size_t *pbuf_len, const char *filename); +int js_module_set_import_meta(JSContext *ctx, JSValueConst func_val, + JS_BOOL use_realpath, JS_BOOL is_main); +JSModuleDef *js_module_loader(JSContext *ctx, + const char *module_name, void *opaque); +void js_std_eval_binary(JSContext *ctx, const uint8_t *buf, size_t buf_len, + int flags); +void js_std_promise_rejection_tracker(JSContext *ctx, JSValueConst promise, + JSValueConst reason, + JS_BOOL is_handled, void *opaque); +void js_std_set_worker_new_context_func(JSContext *(*func)(JSRuntime *rt)); + +#ifdef __cplusplus +} /* extern "C" { */ +#endif + +#endif /* QUICKJS_LIBC_H */ diff --git a/ScriptEngine/third-party/QuickJs/include/quickjs.h b/ScriptEngine/third-party/backend/include/QuickJs/quickjs.h similarity index 100% rename from ScriptEngine/third-party/QuickJs/include/quickjs.h rename to ScriptEngine/third-party/backend/include/QuickJs/quickjs.h diff --git a/ScriptEngine/third-party/Lua/lib/lua.lib b/ScriptEngine/third-party/backend/lib/Lua/lua.lib similarity index 100% rename from ScriptEngine/third-party/Lua/lib/lua.lib rename to ScriptEngine/third-party/backend/lib/Lua/lua.lib diff --git a/ScriptEngine/third-party/NodeJs/lib/libnode.lib b/ScriptEngine/third-party/backend/lib/NodeJs/libnode.lib similarity index 100% rename from ScriptEngine/third-party/NodeJs/lib/libnode.lib rename to ScriptEngine/third-party/backend/lib/NodeJs/libnode.lib diff --git a/ScriptEngine/third-party/QuickJs/lib/quickjs.lib b/ScriptEngine/third-party/backend/lib/QuickJs/quickjs.lib similarity index 100% rename from ScriptEngine/third-party/QuickJs/lib/quickjs.lib rename to ScriptEngine/third-party/backend/lib/QuickJs/quickjs.lib diff --git a/ScriptEngine/third-party/cpp-base64/include/base64.h b/ScriptEngine/third-party/cpp-base64/include/base64.h deleted file mode 100644 index 866505e..0000000 --- a/ScriptEngine/third-party/cpp-base64/include/base64.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// base64 encoding and decoding with C++. -// Version: 2.rc.08 (release candidate) -// - -#ifndef BASE64_H_C0CE2A47_D10E_42C9_A27C_C883944E704A -#define BASE64_H_C0CE2A47_D10E_42C9_A27C_C883944E704A - -#include - -#if __cplusplus >= 201703L -#include -#endif // __cplusplus >= 201703L - -std::string base64_encode (std::string const& s, bool url = false); -std::string base64_encode_pem (std::string const& s); -std::string base64_encode_mime(std::string const& s); - -std::string base64_decode(std::string const& s, bool remove_linebreaks = false); -std::string base64_encode(unsigned char const*, size_t len, bool url = false); - -#if __cplusplus >= 201703L -// -// Interface with std::string_view rather than const std::string& -// Requires C++17 -// Provided by Yannic Bonenberger (https://github.com/Yannic) -// -std::string base64_encode (std::string_view s, bool url = false); -std::string base64_encode_pem (std::string_view s); -std::string base64_encode_mime(std::string_view s); - -std::string base64_decode(std::string_view s, bool remove_linebreaks = false); -#endif // __cplusplus >= 201703L - -#endif /* BASE64_H_C0CE2A47_D10E_42C9_A27C_C883944E704A */ diff --git a/ScriptEngine/third-party/cpp-base64/lib/cpp-base64.lib b/ScriptEngine/third-party/cpp-base64/lib/cpp-base64.lib deleted file mode 100644 index 4d2a6f61b42dfbe9b272420aa4d9e61aa33d56d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123160 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

<@gBXKCkfr+q%%-a6y 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 diff --git a/ScriptEngine/third-party/LLMoney/LLMoney.h b/ScriptEngine/third-party/include/LLMoney/LLMoney.h similarity index 100% rename from ScriptEngine/third-party/LLMoney/LLMoney.h rename to ScriptEngine/third-party/include/LLMoney/LLMoney.h diff --git a/ScriptEngine/third-party/LightWebSocketClient/include/WebSocketClient.h b/ScriptEngine/third-party/include/LightWebSocketClient/WebSocketClient.h similarity index 100% rename from ScriptEngine/third-party/LightWebSocketClient/include/WebSocketClient.h rename to ScriptEngine/third-party/include/LightWebSocketClient/WebSocketClient.h diff --git a/ScriptEngine/third-party/Nlohmann/fifo_map.hpp b/ScriptEngine/third-party/include/Nlohmann/fifo_map.hpp similarity index 100% rename from ScriptEngine/third-party/Nlohmann/fifo_map.hpp rename to ScriptEngine/third-party/include/Nlohmann/fifo_map.hpp diff --git a/ScriptEngine/third-party/Nlohmann/json.hpp b/ScriptEngine/third-party/include/Nlohmann/json.hpp similarity index 100% rename from ScriptEngine/third-party/Nlohmann/json.hpp rename to ScriptEngine/third-party/include/Nlohmann/json.hpp diff --git a/LiteLoader/Header/third-party/SimpleIni/SimpleIni.h b/ScriptEngine/third-party/include/SimpleIni/SimpleIni.h similarity index 99% rename from LiteLoader/Header/third-party/SimpleIni/SimpleIni.h rename to ScriptEngine/third-party/include/SimpleIni/SimpleIni.h index d6336db..2749089 100644 --- a/LiteLoader/Header/third-party/SimpleIni/SimpleIni.h +++ b/ScriptEngine/third-party/include/SimpleIni/SimpleIni.h @@ -3274,6 +3274,7 @@ public: # endif #endif + #include #ifdef SI_NO_MBCS # define SI_NoCase SI_GenericNoCase diff --git a/ScriptEngine/third-party/ThreadPool/ThreadPool.hpp b/ScriptEngine/third-party/include/ThreadPool/ThreadPool.hpp similarity index 100% rename from ScriptEngine/third-party/ThreadPool/ThreadPool.hpp rename to ScriptEngine/third-party/include/ThreadPool/ThreadPool.hpp diff --git a/ScriptEngine/third-party/dyncall/include/dyncall.h b/ScriptEngine/third-party/include/dyncall/dyncall.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall.h rename to ScriptEngine/third-party/include/dyncall/dyncall.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_alloc_wx.h b/ScriptEngine/third-party/include/dyncall/dyncall_alloc_wx.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_alloc_wx.h rename to ScriptEngine/third-party/include/dyncall/dyncall_alloc_wx.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_args.h b/ScriptEngine/third-party/include/dyncall/dyncall_args.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_args.h rename to ScriptEngine/third-party/include/dyncall/dyncall_args.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_callback.h b/ScriptEngine/third-party/include/dyncall/dyncall_callback.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_callback.h rename to ScriptEngine/third-party/include/dyncall/dyncall_callback.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_callf.h b/ScriptEngine/third-party/include/dyncall/dyncall_callf.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_callf.h rename to ScriptEngine/third-party/include/dyncall/dyncall_callf.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_config.h b/ScriptEngine/third-party/include/dyncall/dyncall_config.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_config.h rename to ScriptEngine/third-party/include/dyncall/dyncall_config.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_macros.h b/ScriptEngine/third-party/include/dyncall/dyncall_macros.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_macros.h rename to ScriptEngine/third-party/include/dyncall/dyncall_macros.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_signature.h b/ScriptEngine/third-party/include/dyncall/dyncall_signature.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_signature.h rename to ScriptEngine/third-party/include/dyncall/dyncall_signature.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_types.h b/ScriptEngine/third-party/include/dyncall/dyncall_types.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_types.h rename to ScriptEngine/third-party/include/dyncall/dyncall_types.h diff --git a/ScriptEngine/third-party/dyncall/include/dyncall_value.h b/ScriptEngine/third-party/include/dyncall/dyncall_value.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dyncall_value.h rename to ScriptEngine/third-party/include/dyncall/dyncall_value.h diff --git a/ScriptEngine/third-party/dyncall/include/dynload.h b/ScriptEngine/third-party/include/dyncall/dynload.h similarity index 100% rename from ScriptEngine/third-party/dyncall/include/dynload.h rename to ScriptEngine/third-party/include/dyncall/dynload.h diff --git a/ScriptEngine/third-party/gsl/gsl b/ScriptEngine/third-party/include/gsl/gsl similarity index 100% rename from ScriptEngine/third-party/gsl/gsl rename to ScriptEngine/third-party/include/gsl/gsl diff --git a/ScriptEngine/third-party/gsl/gsl_algorithm b/ScriptEngine/third-party/include/gsl/gsl_algorithm similarity index 100% rename from ScriptEngine/third-party/gsl/gsl_algorithm rename to ScriptEngine/third-party/include/gsl/gsl_algorithm diff --git a/ScriptEngine/third-party/gsl/gsl_assert b/ScriptEngine/third-party/include/gsl/gsl_assert similarity index 100% rename from ScriptEngine/third-party/gsl/gsl_assert rename to ScriptEngine/third-party/include/gsl/gsl_assert diff --git a/ScriptEngine/third-party/gsl/gsl_byte b/ScriptEngine/third-party/include/gsl/gsl_byte similarity index 100% rename from ScriptEngine/third-party/gsl/gsl_byte rename to ScriptEngine/third-party/include/gsl/gsl_byte diff --git a/ScriptEngine/third-party/gsl/gsl_util b/ScriptEngine/third-party/include/gsl/gsl_util similarity index 100% rename from ScriptEngine/third-party/gsl/gsl_util rename to ScriptEngine/third-party/include/gsl/gsl_util diff --git a/ScriptEngine/third-party/gsl/multi_span b/ScriptEngine/third-party/include/gsl/multi_span similarity index 100% rename from ScriptEngine/third-party/gsl/multi_span rename to ScriptEngine/third-party/include/gsl/multi_span diff --git a/ScriptEngine/third-party/gsl/pointers b/ScriptEngine/third-party/include/gsl/pointers similarity index 100% rename from ScriptEngine/third-party/gsl/pointers rename to ScriptEngine/third-party/include/gsl/pointers diff --git a/ScriptEngine/third-party/gsl/span b/ScriptEngine/third-party/include/gsl/span similarity index 100% rename from ScriptEngine/third-party/gsl/span rename to ScriptEngine/third-party/include/gsl/span diff --git a/ScriptEngine/third-party/gsl/span_ext b/ScriptEngine/third-party/include/gsl/span_ext similarity index 100% rename from ScriptEngine/third-party/gsl/span_ext rename to ScriptEngine/third-party/include/gsl/span_ext diff --git a/ScriptEngine/third-party/gsl/string_span b/ScriptEngine/third-party/include/gsl/string_span similarity index 100% rename from ScriptEngine/third-party/gsl/string_span rename to ScriptEngine/third-party/include/gsl/string_span diff --git a/ScriptEngine/third-party/nbt-cpp/include/nbt.hpp b/ScriptEngine/third-party/include/nbt-cpp/nbt.hpp similarity index 100% rename from ScriptEngine/third-party/nbt-cpp/include/nbt.hpp rename to ScriptEngine/third-party/include/nbt-cpp/nbt.hpp diff --git a/ScriptEngine/third-party/nbt-cpp/include/nbt_internal.hpp b/ScriptEngine/third-party/include/nbt-cpp/nbt_internal.hpp similarity index 100% rename from ScriptEngine/third-party/nbt-cpp/include/nbt_internal.hpp rename to ScriptEngine/third-party/include/nbt-cpp/nbt_internal.hpp diff --git a/ScriptEngine/third-party/LightWebSocketClient/lib/LightWSClient.lib b/ScriptEngine/third-party/lib/LightWebSocketClient/LightWSClient.lib similarity index 100% rename from ScriptEngine/third-party/LightWebSocketClient/lib/LightWSClient.lib rename to ScriptEngine/third-party/lib/LightWebSocketClient/LightWSClient.lib diff --git a/ScriptEngine/third-party/dyncall/lib/libdyncall_s.lib b/ScriptEngine/third-party/lib/dyncall/libdyncall_s.lib similarity index 100% rename from ScriptEngine/third-party/dyncall/lib/libdyncall_s.lib rename to ScriptEngine/third-party/lib/dyncall/libdyncall_s.lib diff --git a/ScriptEngine/third-party/dyncall/lib/libdyncallback_s.lib b/ScriptEngine/third-party/lib/dyncall/libdyncallback_s.lib similarity index 100% rename from ScriptEngine/third-party/dyncall/lib/libdyncallback_s.lib rename to ScriptEngine/third-party/lib/dyncall/libdyncallback_s.lib diff --git a/ScriptEngine/third-party/dyncall/lib/libdynload_s.lib b/ScriptEngine/third-party/lib/dyncall/libdynload_s.lib similarity index 100% rename from ScriptEngine/third-party/dyncall/lib/libdynload_s.lib rename to ScriptEngine/third-party/lib/dyncall/libdynload_s.lib diff --git a/ScriptEngine/third-party/nbt-cpp/lib/nbt-cpp.lib b/ScriptEngine/third-party/lib/nbt-cpp/nbt-cpp.lib similarity index 100% rename from ScriptEngine/third-party/nbt-cpp/lib/nbt-cpp.lib rename to ScriptEngine/third-party/lib/nbt-cpp/nbt-cpp.lib diff --git a/ScriptEngine/third-party/seh_exception/seh_exception.hpp b/ScriptEngine/third-party/seh_exception/seh_exception.hpp deleted file mode 100644 index 84e96f1..0000000 --- a/ScriptEngine/third-party/seh_exception/seh_exception.hpp +++ /dev/null @@ -1,95 +0,0 @@ -#pragma once -/** - * @Description: a class for convert SEH exception to c++ exception - * @Author: shang_cm - * @Date: 2020-06-01 16:09:00 - * @LastEditTime: 2010-06-01 16:09:00 - * @LastEditors: shang_cm - */ -#pragma once -#include -#include - -class seh_exception : std::exception -{ - typedef ULONG(WINAPI* fpRtlNtStatusToDosError)(DWORD Status); - -public: - seh_exception(unsigned int nExceptionCode, _EXCEPTION_POINTERS* pstExcptionInfor) : - m_nExceptionCode(0), - m_pExcptionInfor(NULL), - m_szMsgBuff(NULL), - m_hNtModule(NULL), - RtlNtStatusToDosError(NULL) - { - m_nExceptionCode = nExceptionCode; - m_pExcptionInfor = pstExcptionInfor; - m_hNtModule = GetModuleHandle(L"NTDLL.DLL"); - if (NULL != m_hNtModule) - { - RtlNtStatusToDosError = (fpRtlNtStatusToDosError)GetProcAddress(m_hNtModule, "RtlNtStatusToDosError"); - } - } - - virtual ~seh_exception() - { - m_nExceptionCode = 0; - m_pExcptionInfor = NULL; - RtlNtStatusToDosError = NULL; - - if (NULL != m_szMsgBuff) - { - LocalFree(m_szMsgBuff); - m_szMsgBuff = NULL; - } - }; - - const char* what() const noexcept - { - if (RtlNtStatusToDosError != NULL) - { - DWORD nConvertLen = FormatMessageA( - FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_FROM_HMODULE, - m_hNtModule, - RtlNtStatusToDosError(m_nExceptionCode), - 0, - (char*)&m_szMsgBuff, - 0, - NULL); - - if (0 != nConvertLen) - { - return m_szMsgBuff; - } - } - - return "SEH_UNKNOW_ERROR"; - } - - const PEXCEPTION_POINTERS info() const - { - return m_pExcptionInfor; - } - - const unsigned int code() const - { - return m_nExceptionCode; - } - -private: - HMODULE m_hNtModule; - - unsigned int m_nExceptionCode; - char* m_szMsgBuff; - PEXCEPTION_POINTERS m_pExcptionInfor; - fpRtlNtStatusToDosError RtlNtStatusToDosError; - -public: - static void(__cdecl TranslateSEHtoCE)(unsigned int nExceptionCode, struct _EXCEPTION_POINTERS* pstExcptionInfor) - { - throw seh_exception(nExceptionCode, pstExcptionInfor); - } - -}; - - diff --git a/Scripts/PackReleaseWithPDB.cmd b/Scripts/PackReleaseWithPDB.cmd deleted file mode 100644 index dc012b7..0000000 --- a/Scripts/PackReleaseWithPDB.cmd +++ /dev/null @@ -1,40 +0,0 @@ -@echo off - -cd .. - -del /F /Q RELEASE\LLPreLoader.dll 2>nul -del /F /Q RELEASE\LiteLoader.dll 2>nul -rmdir /s /q RELEASE\plugins\LiteLoader\pdb 2>nul -del /F /Q RELEASE\plugins\LiteLoader\LiteLoader.*.dll 2>nul -del /F /Q RELEASE\LLPeEditor.exe 2>nul -del /F /Q RELEASE\*.zip 2>nul -del /F /Q LiteLoader.zip 2>nul -del /F /Q LiteLoader-SDK.zip 2>nul - -echo [INFO] Packing RELEASE... -echo. - -copy /Y ScriptEngine\BaseLib\* RELEASE\plugins\lib -copy /Y x64\Release\LLPreLoader.dll RELEASE\LLPreLoader.dll -copy /Y x64\Release\LiteLoader.dll RELEASE\LiteLoader.dll -copy /Y x64\Release\LiteLoader.*.dll RELEASE\plugins\LiteLoader\ -mkdir RELEASE\plugins\LiteLoader\pdb -copy /Y x64\Release\*.pdb RELEASE\plugins\LiteLoader\pdb\ -copy /Y Tools\LLPeEditor.exe RELEASE\LLPeEditor.exe -copy /Y ScriptEngine\BaseLib\* RELEASE\plugins\lib\ - -if [%1] neq [action] goto Zipped -echo. -echo [INFO] Zipping Files... -cd RELEASE -..\Tools\7zip\7za.exe a -y -tzip -mmt -mx=9 ..\LiteLoader.zip * -cd .. -:Zipped - -echo. -echo [INFO] Packing RELEASE... DONE! - -if [%1]==[action] goto End -explorer.exe .\RELEASE -timeout /t 3 >nul -:End \ No newline at end of file diff --git a/Scripts/PrepareLibraries.cmd b/Scripts/PrepareLibraries.cmd new file mode 100644 index 0000000..bfca291 --- /dev/null +++ b/Scripts/PrepareLibraries.cmd @@ -0,0 +1,14 @@ +@echo off + +if not exist %1\LiteLoader\lib\bedrock_server_api.lib goto process +if not exist %1\LiteLoader\lib\bedrock_server_var.lib goto process +goto end + +:process +cd /d %1\Tools +LibraryBuilder.exe +if not exist %1\LiteLoader\lib\ mkdir %1\LiteLoader\lib +move %1\Tools\bedrock_server_api.lib %1\LiteLoader\lib\ +move %1\Tools\bedrock_server_var.lib %1\LiteLoader\lib\ + +:end diff --git a/Scripts/UploadSDK.cmd b/Scripts/UploadSDK.cmd index b61f6d0..ead4603 100644 --- a/Scripts/UploadSDK.cmd +++ b/Scripts/UploadSDK.cmd @@ -1,9 +1,9 @@ @echo off -cd .. +cd %~dp0.. setlocal enabledelayedexpansion -set LL_SDK_REMOTE_PATH=https://github.com/LiteLDev/LiteLoaderSDK.git +set LL_SDK_REMOTE_PATH=https://github.com/quizhizhe/LL-SDK-cpp-1.16.40.git @REM rem Process System Proxy @REM for /f "tokens=3* delims= " %%i in ('Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable') do ( @@ -46,14 +46,16 @@ echo. echo [INFO] Fetching LiteLoaderSDK to GitHub finished echo. -@REM if [%1] neq [action] ( - cd Scripts - echo [INFO] Packing LiteLoaderSDK ... - start /wait cmd /c PackSDK.cmd - echo [INFO] Packing LiteLoaderSDK finished. - echo. - cd .. -@REM ) +@REM remove all directory except .git in LiteLoaderSDK +for /f "delims=" %%i in ('dir /b /ad LiteLoaderSDK') do ( + if not "%%i"==".git" ( + echo [INFO] Removing LiteLoaderSDK\%%i + rd /s /q LiteLoaderSDK\%%i + ) +) + +@REM copy all from build/sdk to LiteLoaderSDK +xcopy /e /y /i /q build\SDK\* LiteLoaderSDK cd LiteLoaderSDK for /f "delims=" %%i in ('git status . -s') do set LL_SDK_NOW_STATUS=%%i @@ -63,7 +65,9 @@ if "%LL_SDK_NOW_STATUS%" neq "" ( git add . if "%LL_SDK_NOW_BRANCH%" == "main" ( git commit -m "From LiteLoader %LL_NOW_TAG%" - git tag %LL_NOW_TAG% + if [%2] == [release] ( + git tag %LL_NOW_TAG% + ) ) else ( git commit -m "From LiteLoader %LL_NOW_TAG_LONG%" ) @@ -74,8 +78,8 @@ if "%LL_SDK_NOW_STATUS%" neq "" ( git push origin %LL_SDK_NOW_BRANCH% git push --tags origin %LL_SDK_NOW_BRANCH% ) else ( - git push https://%USERNAME%:%REPO_KEY%@github.com/LiteLDev/LiteLoaderSDK.git %LL_SDK_NOW_BRANCH% - git push --tags https://%USERNAME%:%REPO_KEY%@github.com/LiteLDev/LiteLoaderSDK.git %LL_SDK_NOW_BRANCH% + git push https://%USERNAME%:%REPO_KEY%@github.com/quizhizhe/LL-SDK-cpp-1.16.40.git %LL_SDK_NOW_BRANCH% + git push --tags https://%USERNAME%:%REPO_KEY%@github.com/quizhizhe/LL-SDK-cpp-1.16.40.git %LL_SDK_NOW_BRANCH% ) cd .. echo. diff --git a/Scripts/install.sh b/Scripts/install.sh index 2fc5461..cd517d5 100644 --- a/Scripts/install.sh +++ b/Scripts/install.sh @@ -1,12 +1,13 @@ #!/bin/bash # Install wine codename=$(lsb_release -c --short) -BDSVER="1.19.20.02" -LLVER="2.5.1" +BDSVER="1.19.63.01" +LLVER="2.11.0" sudo apt install -y wget unzip sudo dpkg --add-architecture i386 -sudo wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key -sudo wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/${codename}/winehq-${codename}.sources +sudo mkdir -pm755 /etc/apt/keyrings +sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key +sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/${codename}/winehq-${codename}.sources sudo apt update sudo apt install winehq-stable -y @@ -14,15 +15,15 @@ sudo apt install winehq-stable -y wget https://minecraft.azureedge.net/bin-win/bedrock-server-${BDSVER}.zip unzip bedrock-server-${BDSVER}.zip -d bedrock_server cd bedrock_server -wget https://github.com/LiteLDev/liteloaderbds-docker/raw/main/vcruntime140_1.dll +wget https://github.com/LiteLDev/docker/raw/main/vcruntime140_1.dll cd .. rm bedrock-server-${BDSVER}.zip # Install LiteLoaderBDS -wget https://github.com/LiteLDev/LiteLoaderBDS/releases/download/${LLVER}/LiteLoader-${LLVER}.zip -unzip LiteLoader-${LLVER}.zip -d bedrock_server -rm LiteLoader-${LLVER}.zip +wget https://github.com/LiteLDev/LiteLoaderBDS/releases/download/${LLVER}/LiteLoaderBDS.zip +unzip LiteLoader.zip -d bedrock_server +rm LiteLoaderBDS.zip cd bedrock_server wine LLPeEditor.exe -echo Done! +echo Done! \ No newline at end of file diff --git a/Test/DBTest/DBTest/main.cpp b/Test/DBTest/DBTest/main.cpp index 27977b5..5b13383 100644 --- a/Test/DBTest/DBTest/main.cpp +++ b/Test/DBTest/DBTest/main.cpp @@ -1,7 +1,7 @@ #define LLDB_DEBUG_MODE #define _AMD64_ #include -#include +#include "include/llapi/LoggerAPI.h" #include #include #include diff --git a/Tools/LibraryBuilder.exe b/Tools/LibraryBuilder.exe index 1e7b5548499471f3b9d573f06be82dcfaf741fc8..102b3c32d59be14310a56d9689d439a40dbd671e 100644 GIT binary patch delta 694442 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∨d`8`w8~t8^NS@d&h9i-$oLvB9zgPvx=P&KiCcO` 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ĴXZ%S@UVC$(+SHF*kj22 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 J)qP?7`CpbAI%5C; delta 693171 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Ȳ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

s+)l$b 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

u%WvcCjO#XWlZ*vc=M4Lg6S}{RGI;z0y#;8-X4f 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%0Do*7|p#VA1+_x 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

    lPjf)YL{VLN^k^DO?g^rtLHoL?Ql?-d_ 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 Tb>VD6Uo?C0te#ljwebG{_IL>J diff --git a/ScriptEngine/third-party/ScriptX/.clang-format b/Tools/ScriptX/.clang-format similarity index 100% rename from ScriptEngine/third-party/ScriptX/.clang-format rename to Tools/ScriptX/.clang-format diff --git a/ScriptEngine/third-party/ScriptX/.clang-tidy b/Tools/ScriptX/.clang-tidy similarity index 100% rename from ScriptEngine/third-party/ScriptX/.clang-tidy rename to Tools/ScriptX/.clang-tidy diff --git a/ScriptEngine/third-party/ScriptX/.devtools/LicenseHeader.template b/Tools/ScriptX/.devtools/LicenseHeader.template similarity index 100% rename from ScriptEngine/third-party/ScriptX/.devtools/LicenseHeader.template rename to Tools/ScriptX/.devtools/LicenseHeader.template diff --git a/ScriptEngine/third-party/ScriptX/.devtools/appendLicenseHeader.sh b/Tools/ScriptX/.devtools/appendLicenseHeader.sh similarity index 100% rename from ScriptEngine/third-party/ScriptX/.devtools/appendLicenseHeader.sh rename to Tools/ScriptX/.devtools/appendLicenseHeader.sh diff --git a/ScriptEngine/third-party/ScriptX/.devtools/hooks/pre-commit b/Tools/ScriptX/.devtools/hooks/pre-commit similarity index 100% rename from ScriptEngine/third-party/ScriptX/.devtools/hooks/pre-commit rename to Tools/ScriptX/.devtools/hooks/pre-commit diff --git a/ScriptEngine/third-party/ScriptX/.devtools/install.sh b/Tools/ScriptX/.devtools/install.sh similarity index 100% rename from ScriptEngine/third-party/ScriptX/.devtools/install.sh rename to Tools/ScriptX/.devtools/install.sh diff --git a/ScriptEngine/third-party/ScriptX/.devtools/new_backend.sh b/Tools/ScriptX/.devtools/new_backend.sh similarity index 100% rename from ScriptEngine/third-party/ScriptX/.devtools/new_backend.sh rename to Tools/ScriptX/.devtools/new_backend.sh diff --git a/ScriptEngine/third-party/ScriptX/.github/stale.yml b/Tools/ScriptX/.github/stale.yml similarity index 100% rename from ScriptEngine/third-party/ScriptX/.github/stale.yml rename to Tools/ScriptX/.github/stale.yml diff --git a/ScriptEngine/third-party/ScriptX/.github/workflows/coverage.yml b/Tools/ScriptX/.github/workflows/coverage.yml similarity index 100% rename from ScriptEngine/third-party/ScriptX/.github/workflows/coverage.yml rename to Tools/ScriptX/.github/workflows/coverage.yml diff --git a/ScriptEngine/third-party/ScriptX/.github/workflows/sync_to_tencent_code.yml b/Tools/ScriptX/.github/workflows/sync_to_tencent_code.yml similarity index 100% rename from ScriptEngine/third-party/ScriptX/.github/workflows/sync_to_tencent_code.yml rename to Tools/ScriptX/.github/workflows/sync_to_tencent_code.yml diff --git a/ScriptEngine/third-party/ScriptX/.github/workflows/unit_tests.yml b/Tools/ScriptX/.github/workflows/unit_tests.yml similarity index 100% rename from ScriptEngine/third-party/ScriptX/.github/workflows/unit_tests.yml rename to Tools/ScriptX/.github/workflows/unit_tests.yml diff --git a/ScriptEngine/third-party/ScriptX/.gitignore b/Tools/ScriptX/.gitignore similarity index 100% rename from ScriptEngine/third-party/ScriptX/.gitignore rename to Tools/ScriptX/.gitignore diff --git a/ScriptEngine/third-party/ScriptX/CHANGELOG.md b/Tools/ScriptX/CHANGELOG.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/CHANGELOG.md rename to Tools/ScriptX/CHANGELOG.md diff --git a/ScriptEngine/third-party/ScriptX/CMake/ScriptX-Lua/CMakeLists.txt b/Tools/ScriptX/CMake/ScriptX-Lua/CMakeLists.txt similarity index 56% rename from ScriptEngine/third-party/ScriptX/CMake/ScriptX-Lua/CMakeLists.txt rename to Tools/ScriptX/CMake/ScriptX-Lua/CMakeLists.txt index 0af9d0b..9fdff38 100644 --- a/ScriptEngine/third-party/ScriptX/CMake/ScriptX-Lua/CMakeLists.txt +++ b/Tools/ScriptX/CMake/ScriptX-Lua/CMakeLists.txt @@ -8,5 +8,6 @@ set(SCRIPTX_BACKEND Lua) project(ScriptX-Lua) -include_directories(../../../Lua/include) -include(../../CMakeLists.txt) \ No newline at end of file +include(../../CMakeLists.txt) + +target_include_directories(${PROJECT_NAME} PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/Lua/) diff --git a/Tools/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt b/Tools/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt new file mode 100644 index 0000000..886f4c7 --- /dev/null +++ b/Tools/ScriptX/CMake/ScriptX-NodeJs/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.8) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(SCRIPTX_BACKEND V8) + +project(ScriptX-NodeJs) + +include(../../CMakeLists.txt) + +target_include_directories( + ${PROJECT_NAME} + PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/NodeJs + PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/NodeJs/v8 +) diff --git a/ScriptEngine/third-party/ScriptX/CMake/ScriptX-QuickJs/CMakeLists.txt b/Tools/ScriptX/CMake/ScriptX-QuickJs/CMakeLists.txt similarity index 56% rename from ScriptEngine/third-party/ScriptX/CMake/ScriptX-QuickJs/CMakeLists.txt rename to Tools/ScriptX/CMake/ScriptX-QuickJs/CMakeLists.txt index 906b3e5..a37e67e 100644 --- a/ScriptEngine/third-party/ScriptX/CMake/ScriptX-QuickJs/CMakeLists.txt +++ b/Tools/ScriptX/CMake/ScriptX-QuickJs/CMakeLists.txt @@ -8,5 +8,6 @@ set(SCRIPTX_BACKEND QuickJs) project(ScriptX-QuickJs) -include_directories(../../../QuickJs/include) -include(../../CMakeLists.txt) \ No newline at end of file +include(../../CMakeLists.txt) + +target_include_directories(${PROJECT_NAME} PRIVATE ${SCRIPTENGINE_SOURCE_DIR}/third-party/backend/include/QuickJs) diff --git a/ScriptEngine/third-party/ScriptX/CMakeLists.txt b/Tools/ScriptX/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/CMakeLists.txt rename to Tools/ScriptX/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/CONTRIBUTING.md b/Tools/ScriptX/CONTRIBUTING.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/CONTRIBUTING.md rename to Tools/ScriptX/CONTRIBUTING.md diff --git a/ScriptEngine/third-party/ScriptX/LICENSE b/Tools/ScriptX/LICENSE similarity index 100% rename from ScriptEngine/third-party/ScriptX/LICENSE rename to Tools/ScriptX/LICENSE diff --git a/ScriptEngine/third-party/ScriptX/README-zh.md b/Tools/ScriptX/README-zh.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/README-zh.md rename to Tools/ScriptX/README-zh.md diff --git a/ScriptEngine/third-party/ScriptX/README.md b/Tools/ScriptX/README.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/README.md rename to Tools/ScriptX/README.md diff --git a/ScriptEngine/third-party/ScriptX/VERSION b/Tools/ScriptX/VERSION similarity index 100% rename from ScriptEngine/third-party/ScriptX/VERSION rename to Tools/ScriptX/VERSION diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/CMakeLists.txt b/Tools/ScriptX/backend/JavaScriptCore/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/CMakeLists.txt rename to Tools/ScriptX/backend/JavaScriptCore/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.cc b/Tools/ScriptX/backend/JavaScriptCore/JscEngine.cc similarity index 94% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscEngine.cc index 9ead88a..cec728f 100644 --- a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.cc +++ b/Tools/ScriptX/backend/JavaScriptCore/JscEngine.cc @@ -19,6 +19,7 @@ #include "../../src/Native.hpp" #include "JscEngine.hpp" #include "JscHelper.h" +#include "../../src/utils/Helper.hpp" namespace script::jsc_backend { @@ -177,6 +178,27 @@ script::Local JscEngine::eval(const script::Local return eval(script, {}); } +Local JscEngine::loadFile(const Local& scriptFile) { + if(scriptFile.toString().empty()) + throw Exception("script file no found"); + Local content = internal::readAllFileContent(scriptFile); + if(content.isNull()) + throw Exception("can't load script file"); + + std::string sourceFilePath = scriptFile.toString(); + std::size_t pathSymbol = sourceFilePath.rfind("/"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + else + { + pathSymbol = sourceFilePath.rfind("\\"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + } + Local sourceFileName = String::newString(sourceFilePath); + return eval(content.asString(), sourceFileName); +} + std::shared_ptr JscEngine::messageQueue() { return messageQueue_; } void JscEngine::gc() { diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.h b/Tools/ScriptX/backend/JavaScriptCore/JscEngine.h similarity index 99% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.h rename to Tools/ScriptX/backend/JavaScriptCore/JscEngine.h index aedd71e..0b8f581 100644 --- a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.h +++ b/Tools/ScriptX/backend/JavaScriptCore/JscEngine.h @@ -86,6 +86,8 @@ class JscEngine : public ::script::ScriptEngine { Local eval(const Local& script) override; using ScriptEngine::eval; + Local loadFile(const Local& scriptFile) override; + std::shared_ptr messageQueue() override; void gc() override; diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.hpp b/Tools/ScriptX/backend/JavaScriptCore/JscEngine.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscEngine.hpp rename to Tools/ScriptX/backend/JavaScriptCore/JscEngine.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscException.cc b/Tools/ScriptX/backend/JavaScriptCore/JscException.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscException.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscException.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscHelper.cc b/Tools/ScriptX/backend/JavaScriptCore/JscHelper.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscHelper.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscHelper.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscHelper.h b/Tools/ScriptX/backend/JavaScriptCore/JscHelper.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscHelper.h rename to Tools/ScriptX/backend/JavaScriptCore/JscHelper.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscHelper.hpp b/Tools/ScriptX/backend/JavaScriptCore/JscHelper.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscHelper.hpp rename to Tools/ScriptX/backend/JavaScriptCore/JscHelper.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscLocalReference.cc b/Tools/ScriptX/backend/JavaScriptCore/JscLocalReference.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscLocalReference.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscLocalReference.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscNative.cc b/Tools/ScriptX/backend/JavaScriptCore/JscNative.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscNative.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscNative.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscNative.hpp b/Tools/ScriptX/backend/JavaScriptCore/JscNative.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscNative.hpp rename to Tools/ScriptX/backend/JavaScriptCore/JscNative.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscReference.hpp b/Tools/ScriptX/backend/JavaScriptCore/JscReference.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscReference.hpp rename to Tools/ScriptX/backend/JavaScriptCore/JscReference.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscScope.cc b/Tools/ScriptX/backend/JavaScriptCore/JscScope.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscScope.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscScope.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscScope.h b/Tools/ScriptX/backend/JavaScriptCore/JscScope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscScope.h rename to Tools/ScriptX/backend/JavaScriptCore/JscScope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscUtils.cc b/Tools/ScriptX/backend/JavaScriptCore/JscUtils.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscUtils.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscUtils.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscValue.cc b/Tools/ScriptX/backend/JavaScriptCore/JscValue.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscValue.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscValue.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscWeakRef.cc b/Tools/ScriptX/backend/JavaScriptCore/JscWeakRef.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscWeakRef.cc rename to Tools/ScriptX/backend/JavaScriptCore/JscWeakRef.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscWeakRef.h b/Tools/ScriptX/backend/JavaScriptCore/JscWeakRef.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscWeakRef.h rename to Tools/ScriptX/backend/JavaScriptCore/JscWeakRef.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscWeakRef.mm b/Tools/ScriptX/backend/JavaScriptCore/JscWeakRef.mm similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/JscWeakRef.mm rename to Tools/ScriptX/backend/JavaScriptCore/JscWeakRef.mm diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitEngine.h b/Tools/ScriptX/backend/JavaScriptCore/trait/TraitEngine.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitEngine.h rename to Tools/ScriptX/backend/JavaScriptCore/trait/TraitEngine.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitException.h b/Tools/ScriptX/backend/JavaScriptCore/trait/TraitException.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitException.h rename to Tools/ScriptX/backend/JavaScriptCore/trait/TraitException.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitIncludes.h b/Tools/ScriptX/backend/JavaScriptCore/trait/TraitIncludes.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitIncludes.h rename to Tools/ScriptX/backend/JavaScriptCore/trait/TraitIncludes.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitNative.h b/Tools/ScriptX/backend/JavaScriptCore/trait/TraitNative.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitNative.h rename to Tools/ScriptX/backend/JavaScriptCore/trait/TraitNative.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitReference.h b/Tools/ScriptX/backend/JavaScriptCore/trait/TraitReference.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitReference.h rename to Tools/ScriptX/backend/JavaScriptCore/trait/TraitReference.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitScope.h b/Tools/ScriptX/backend/JavaScriptCore/trait/TraitScope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitScope.h rename to Tools/ScriptX/backend/JavaScriptCore/trait/TraitScope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitUtils.h b/Tools/ScriptX/backend/JavaScriptCore/trait/TraitUtils.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/JavaScriptCore/trait/TraitUtils.h rename to Tools/ScriptX/backend/JavaScriptCore/trait/TraitUtils.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/CMakeLists.txt b/Tools/ScriptX/backend/Lua/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/CMakeLists.txt rename to Tools/ScriptX/backend/Lua/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaByteBufferImpl.cc b/Tools/ScriptX/backend/Lua/LuaByteBufferImpl.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaByteBufferImpl.cc rename to Tools/ScriptX/backend/Lua/LuaByteBufferImpl.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaByteBufferImpl.h b/Tools/ScriptX/backend/Lua/LuaByteBufferImpl.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaByteBufferImpl.h rename to Tools/ScriptX/backend/Lua/LuaByteBufferImpl.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.cc b/Tools/ScriptX/backend/Lua/LuaEngine.cc similarity index 95% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.cc rename to Tools/ScriptX/backend/Lua/LuaEngine.cc index ff86d29..9ce5715 100644 --- a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.cc +++ b/Tools/ScriptX/backend/Lua/LuaEngine.cc @@ -28,6 +28,7 @@ #include "LuaHelper.hpp" #include "LuaReference.hpp" #include "LuaScope.hpp" +#include "../../src/utils/Helper.hpp" // ref https://www.lua.org/manual/5.1/manual.html // https://www.lua.org/wshop14/Zykov.pdf @@ -259,6 +260,27 @@ Local LuaEngine::eval(const Local& script, const Local& so return lua_backend::callFunction({}, {}, 0, nullptr); } +Local LuaEngine::loadFile(const Local& scriptFile) { + if(scriptFile.toString().empty()) + throw Exception("script file no found"); + Local content = internal::readAllFileContent(scriptFile); + if(content.isNull()) + throw Exception("can't load script file"); + + std::string sourceFilePath = scriptFile.toString(); + std::size_t pathSymbol = sourceFilePath.rfind("/"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + else + { + pathSymbol = sourceFilePath.rfind("\\"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + } + Local sourceFileName = String::newString(sourceFilePath); + return eval(content.asString(), sourceFileName); +} + Arguments LuaEngine::makeArguments(LuaEngine* engine, int stackBase, size_t paramCount, bool isInstanceFunc) { lua_backend::ArgumentsData argumentsData{engine, stackBase, paramCount, isInstanceFunc}; diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.h b/Tools/ScriptX/backend/Lua/LuaEngine.h similarity index 98% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.h rename to Tools/ScriptX/backend/Lua/LuaEngine.h index 4a1ec3c..c2cd013 100644 --- a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.h +++ b/Tools/ScriptX/backend/Lua/LuaEngine.h @@ -77,6 +77,8 @@ class LuaEngine : public ScriptEngine { Local eval(const Local& script) override; using ScriptEngine::eval; + Local loadFile(const Local& scriptFile) override; + std::shared_ptr messageQueue() override; void gc() override; diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.hpp b/Tools/ScriptX/backend/Lua/LuaEngine.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaEngine.hpp rename to Tools/ScriptX/backend/Lua/LuaEngine.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaException.cc b/Tools/ScriptX/backend/Lua/LuaException.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaException.cc rename to Tools/ScriptX/backend/Lua/LuaException.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaHelper.cc b/Tools/ScriptX/backend/Lua/LuaHelper.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaHelper.cc rename to Tools/ScriptX/backend/Lua/LuaHelper.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaHelper.h b/Tools/ScriptX/backend/Lua/LuaHelper.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaHelper.h rename to Tools/ScriptX/backend/Lua/LuaHelper.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaHelper.hpp b/Tools/ScriptX/backend/Lua/LuaHelper.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaHelper.hpp rename to Tools/ScriptX/backend/Lua/LuaHelper.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaLocalReference.cc b/Tools/ScriptX/backend/Lua/LuaLocalReference.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaLocalReference.cc rename to Tools/ScriptX/backend/Lua/LuaLocalReference.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaNative.cc b/Tools/ScriptX/backend/Lua/LuaNative.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaNative.cc rename to Tools/ScriptX/backend/Lua/LuaNative.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaNative.hpp b/Tools/ScriptX/backend/Lua/LuaNative.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaNative.hpp rename to Tools/ScriptX/backend/Lua/LuaNative.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaReference.hpp b/Tools/ScriptX/backend/Lua/LuaReference.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaReference.hpp rename to Tools/ScriptX/backend/Lua/LuaReference.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaScope.cc b/Tools/ScriptX/backend/Lua/LuaScope.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaScope.cc rename to Tools/ScriptX/backend/Lua/LuaScope.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaScope.hpp b/Tools/ScriptX/backend/Lua/LuaScope.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaScope.hpp rename to Tools/ScriptX/backend/Lua/LuaScope.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaUtils.cc b/Tools/ScriptX/backend/Lua/LuaUtils.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaUtils.cc rename to Tools/ScriptX/backend/Lua/LuaUtils.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/LuaValue.cc b/Tools/ScriptX/backend/Lua/LuaValue.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/LuaValue.cc rename to Tools/ScriptX/backend/Lua/LuaValue.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitEngine.h b/Tools/ScriptX/backend/Lua/trait/TraitEngine.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitEngine.h rename to Tools/ScriptX/backend/Lua/trait/TraitEngine.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitException.h b/Tools/ScriptX/backend/Lua/trait/TraitException.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitException.h rename to Tools/ScriptX/backend/Lua/trait/TraitException.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitIncludes.h b/Tools/ScriptX/backend/Lua/trait/TraitIncludes.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitIncludes.h rename to Tools/ScriptX/backend/Lua/trait/TraitIncludes.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitNative.h b/Tools/ScriptX/backend/Lua/trait/TraitNative.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitNative.h rename to Tools/ScriptX/backend/Lua/trait/TraitNative.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitReference.h b/Tools/ScriptX/backend/Lua/trait/TraitReference.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitReference.h rename to Tools/ScriptX/backend/Lua/trait/TraitReference.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitScope.h b/Tools/ScriptX/backend/Lua/trait/TraitScope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitScope.h rename to Tools/ScriptX/backend/Lua/trait/TraitScope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitUtils.h b/Tools/ScriptX/backend/Lua/trait/TraitUtils.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Lua/trait/TraitUtils.h rename to Tools/ScriptX/backend/Lua/trait/TraitUtils.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Python/CMakeLists.txt b/Tools/ScriptX/backend/Python/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Python/CMakeLists.txt rename to Tools/ScriptX/backend/Python/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/CMakeLists.txt b/Tools/ScriptX/backend/QuickJs/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/CMakeLists.txt rename to Tools/ScriptX/backend/QuickJs/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.cc b/Tools/ScriptX/backend/QuickJs/QjsEngine.cc similarity index 89% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.cc rename to Tools/ScriptX/backend/QuickJs/QjsEngine.cc index e71a6e7..3b043a6 100644 --- a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.cc +++ b/Tools/ScriptX/backend/QuickJs/QjsEngine.cc @@ -17,6 +17,7 @@ #include "QjsEngine.h" #include +#include "../../src/utils/Helper.hpp" namespace script::qjs_backend { @@ -94,6 +95,9 @@ QjsEngine::QjsEngine(std::shared_ptr queue, const QjsFactor } initEngineResource(); + + /* set default loader for ES6 modules */ + JS_SetModuleLoaderFunc(runtime_, NULL, js_module_loader, NULL); } void QjsEngine::initEngineResource() { @@ -268,6 +272,39 @@ Local QjsEngine::eval(const Local& script, const Local& so return Local(ret); } +Local QjsEngine::loadFile(const Local& scriptFile) { + Tracer trace(this, "QjsEngine::loadFile"); + + if(scriptFile.toString().empty()) + throw Exception("script file no found"); + Local content = internal::readAllFileContent(scriptFile); + if(content.isNull()) + throw Exception("can't load script file"); + + // get source file name + std::string sourceFilePath = scriptFile.toString(); + std::size_t pathSymbol = sourceFilePath.rfind("/"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + else + { + pathSymbol = sourceFilePath.rfind("\\"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + } + Local sourceFileName = String::newString(sourceFilePath); + + StringHolder contentStr(content.asString()); + StringHolder fileNameStr(sourceFileName); + JSValue ret = JS_Eval(context_, contentStr.c_str(), contentStr.length(), fileNameStr.c_str(), + JS_EVAL_TYPE_MODULE); + + qjs_backend::checkException(ret); + scheduleTick(); + + return Local(ret); +} + std::shared_ptr QjsEngine::messageQueue() { return queue_; } void QjsEngine::gc() { diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.h b/Tools/ScriptX/backend/QuickJs/QjsEngine.h similarity index 98% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.h rename to Tools/ScriptX/backend/QuickJs/QjsEngine.h index 6ea4966..b810323 100644 --- a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.h +++ b/Tools/ScriptX/backend/QuickJs/QjsEngine.h @@ -94,6 +94,8 @@ class QjsEngine : public ScriptEngine { Local eval(const Local& script) override; using ScriptEngine::eval; + Local loadFile(const Local& scriptFile) override; + std::shared_ptr messageQueue() override; void gc() override; diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.hpp b/Tools/ScriptX/backend/QuickJs/QjsEngine.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsEngine.hpp rename to Tools/ScriptX/backend/QuickJs/QjsEngine.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsException.cc b/Tools/ScriptX/backend/QuickJs/QjsException.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsException.cc rename to Tools/ScriptX/backend/QuickJs/QjsException.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsHelper.cc b/Tools/ScriptX/backend/QuickJs/QjsHelper.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsHelper.cc rename to Tools/ScriptX/backend/QuickJs/QjsHelper.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsHelper.h b/Tools/ScriptX/backend/QuickJs/QjsHelper.h similarity index 98% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsHelper.h rename to Tools/ScriptX/backend/QuickJs/QjsHelper.h index a9a5577..4c0d4da 100644 --- a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsHelper.h +++ b/Tools/ScriptX/backend/QuickJs/QjsHelper.h @@ -21,6 +21,7 @@ SCRIPTX_BEGIN_INCLUDE_LIBRARY #include +#include SCRIPTX_END_INCLUDE_LIBRARY namespace script::qjs_backend { diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsHelper.hpp b/Tools/ScriptX/backend/QuickJs/QjsHelper.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsHelper.hpp rename to Tools/ScriptX/backend/QuickJs/QjsHelper.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsLocalReference.cc b/Tools/ScriptX/backend/QuickJs/QjsLocalReference.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsLocalReference.cc rename to Tools/ScriptX/backend/QuickJs/QjsLocalReference.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsNative.cc b/Tools/ScriptX/backend/QuickJs/QjsNative.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsNative.cc rename to Tools/ScriptX/backend/QuickJs/QjsNative.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsNative.hpp b/Tools/ScriptX/backend/QuickJs/QjsNative.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsNative.hpp rename to Tools/ScriptX/backend/QuickJs/QjsNative.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsReference.hpp b/Tools/ScriptX/backend/QuickJs/QjsReference.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsReference.hpp rename to Tools/ScriptX/backend/QuickJs/QjsReference.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsScope.cc b/Tools/ScriptX/backend/QuickJs/QjsScope.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsScope.cc rename to Tools/ScriptX/backend/QuickJs/QjsScope.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsUtils.cc b/Tools/ScriptX/backend/QuickJs/QjsUtils.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsUtils.cc rename to Tools/ScriptX/backend/QuickJs/QjsUtils.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsValue.cc b/Tools/ScriptX/backend/QuickJs/QjsValue.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/QjsValue.cc rename to Tools/ScriptX/backend/QuickJs/QjsValue.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/patch/0001-Add-new-APIs-for-ScriptX-for-QuickJs-2021-03-27.patch b/Tools/ScriptX/backend/QuickJs/patch/0001-Add-new-APIs-for-ScriptX-for-QuickJs-2021-03-27.patch similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/patch/0001-Add-new-APIs-for-ScriptX-for-QuickJs-2021-03-27.patch rename to Tools/ScriptX/backend/QuickJs/patch/0001-Add-new-APIs-for-ScriptX-for-QuickJs-2021-03-27.patch diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitEngine.h b/Tools/ScriptX/backend/QuickJs/trait/TraitEngine.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitEngine.h rename to Tools/ScriptX/backend/QuickJs/trait/TraitEngine.h diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitException.h b/Tools/ScriptX/backend/QuickJs/trait/TraitException.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitException.h rename to Tools/ScriptX/backend/QuickJs/trait/TraitException.h diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitIncludes.h b/Tools/ScriptX/backend/QuickJs/trait/TraitIncludes.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitIncludes.h rename to Tools/ScriptX/backend/QuickJs/trait/TraitIncludes.h diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitNative.h b/Tools/ScriptX/backend/QuickJs/trait/TraitNative.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitNative.h rename to Tools/ScriptX/backend/QuickJs/trait/TraitNative.h diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitReference.h b/Tools/ScriptX/backend/QuickJs/trait/TraitReference.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitReference.h rename to Tools/ScriptX/backend/QuickJs/trait/TraitReference.h diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitScope.h b/Tools/ScriptX/backend/QuickJs/trait/TraitScope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitScope.h rename to Tools/ScriptX/backend/QuickJs/trait/TraitScope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitUtils.h b/Tools/ScriptX/backend/QuickJs/trait/TraitUtils.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/QuickJs/trait/TraitUtils.h rename to Tools/ScriptX/backend/QuickJs/trait/TraitUtils.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Ruby/CMakeLists.txt b/Tools/ScriptX/backend/Ruby/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Ruby/CMakeLists.txt rename to Tools/ScriptX/backend/Ruby/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/SpiderMonkey/CMakeLists.txt b/Tools/ScriptX/backend/SpiderMonkey/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/SpiderMonkey/CMakeLists.txt rename to Tools/ScriptX/backend/SpiderMonkey/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/CMakeLists.txt b/Tools/ScriptX/backend/Template/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/CMakeLists.txt rename to Tools/ScriptX/backend/Template/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/README.md b/Tools/ScriptX/backend/Template/README.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/README.md rename to Tools/ScriptX/backend/Template/README.md diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateEngine.cc b/Tools/ScriptX/backend/Template/TemplateEngine.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateEngine.cc rename to Tools/ScriptX/backend/Template/TemplateEngine.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateEngine.h b/Tools/ScriptX/backend/Template/TemplateEngine.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateEngine.h rename to Tools/ScriptX/backend/Template/TemplateEngine.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateException.cc b/Tools/ScriptX/backend/Template/TemplateException.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateException.cc rename to Tools/ScriptX/backend/Template/TemplateException.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateLocalReference.cc b/Tools/ScriptX/backend/Template/TemplateLocalReference.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateLocalReference.cc rename to Tools/ScriptX/backend/Template/TemplateLocalReference.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateNative.cc b/Tools/ScriptX/backend/Template/TemplateNative.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateNative.cc rename to Tools/ScriptX/backend/Template/TemplateNative.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateNative.hpp b/Tools/ScriptX/backend/Template/TemplateNative.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateNative.hpp rename to Tools/ScriptX/backend/Template/TemplateNative.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateReference.hpp b/Tools/ScriptX/backend/Template/TemplateReference.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateReference.hpp rename to Tools/ScriptX/backend/Template/TemplateReference.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateUtils.cc b/Tools/ScriptX/backend/Template/TemplateUtils.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateUtils.cc rename to Tools/ScriptX/backend/Template/TemplateUtils.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/TemplateValue.cc b/Tools/ScriptX/backend/Template/TemplateValue.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/TemplateValue.cc rename to Tools/ScriptX/backend/Template/TemplateValue.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitEngine.h b/Tools/ScriptX/backend/Template/trait/TraitEngine.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitEngine.h rename to Tools/ScriptX/backend/Template/trait/TraitEngine.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitException.h b/Tools/ScriptX/backend/Template/trait/TraitException.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitException.h rename to Tools/ScriptX/backend/Template/trait/TraitException.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitIncludes.h b/Tools/ScriptX/backend/Template/trait/TraitIncludes.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitIncludes.h rename to Tools/ScriptX/backend/Template/trait/TraitIncludes.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitNative.h b/Tools/ScriptX/backend/Template/trait/TraitNative.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitNative.h rename to Tools/ScriptX/backend/Template/trait/TraitNative.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitReference.h b/Tools/ScriptX/backend/Template/trait/TraitReference.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitReference.h rename to Tools/ScriptX/backend/Template/trait/TraitReference.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitScope.h b/Tools/ScriptX/backend/Template/trait/TraitScope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitScope.h rename to Tools/ScriptX/backend/Template/trait/TraitScope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitUtils.h b/Tools/ScriptX/backend/Template/trait/TraitUtils.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/Template/trait/TraitUtils.h rename to Tools/ScriptX/backend/Template/trait/TraitUtils.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/CMakeLists.txt b/Tools/ScriptX/backend/V8/CMakeLists.txt similarity index 96% rename from ScriptEngine/third-party/ScriptX/backend/V8/CMakeLists.txt rename to Tools/ScriptX/backend/V8/CMakeLists.txt index 9575532..45165ab 100644 --- a/ScriptEngine/third-party/ScriptX/backend/V8/CMakeLists.txt +++ b/Tools/ScriptX/backend/V8/CMakeLists.txt @@ -14,7 +14,7 @@ target_sources(${PROJECT_NAME} PRIVATE if (${SCRIPTX_FEATURE_INSPECTOR}) - target_sources(ScriptX PRIVATE + target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/V8Inspector.cc ) diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.cc b/Tools/ScriptX/backend/V8/V8Engine.cc similarity index 93% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.cc rename to Tools/ScriptX/backend/V8/V8Engine.cc index 2368652..a208ac0 100644 --- a/ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.cc +++ b/Tools/ScriptX/backend/V8/V8Engine.cc @@ -19,6 +19,7 @@ #include #include #include +#include "../../src/utils/Helper.hpp" namespace script::v8_backend { @@ -174,6 +175,27 @@ Local V8Engine::eval(const Local& script, const Local& so Local V8Engine::eval(const Local& script) { return eval(script, {}); } +Local V8Engine::loadFile(const Local& scriptFile) { + if(scriptFile.toString().empty()) + throw Exception("script file no found"); + Local content = internal::readAllFileContent(scriptFile); + if(content.isNull()) + throw Exception("can't load script file"); + + std::string sourceFilePath = scriptFile.toString(); + std::size_t pathSymbol = sourceFilePath.rfind("/"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + else + { + pathSymbol = sourceFilePath.rfind("\\"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + } + Local sourceFileName = String::newString(sourceFilePath); + return eval(content.asString(), sourceFileName); +} + void V8Engine::registerNativeClassStatic(v8::Local funcT, const internal::StaticDefine* staticDefine) { for (auto& prop : staticDefine->properties) { diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.h b/Tools/ScriptX/backend/V8/V8Engine.h similarity index 99% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.h rename to Tools/ScriptX/backend/V8/V8Engine.h index 8942ecf..ad9b137 100644 --- a/ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.h +++ b/Tools/ScriptX/backend/V8/V8Engine.h @@ -115,6 +115,8 @@ class V8Engine : public ::script::ScriptEngine { Local eval(const Local& script) override; using ScriptEngine::eval; + Local loadFile(const Local& scriptFile) override; + /** * Create a new V8 Engine that share the same isolate, but with different context. * Caller own the returned pointer, and the returned instance diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.hpp b/Tools/ScriptX/backend/V8/V8Engine.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Engine.hpp rename to Tools/ScriptX/backend/V8/V8Engine.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Exception.cc b/Tools/ScriptX/backend/V8/V8Exception.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Exception.cc rename to Tools/ScriptX/backend/V8/V8Exception.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Helper.cc b/Tools/ScriptX/backend/V8/V8Helper.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Helper.cc rename to Tools/ScriptX/backend/V8/V8Helper.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Helper.h b/Tools/ScriptX/backend/V8/V8Helper.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Helper.h rename to Tools/ScriptX/backend/V8/V8Helper.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Helper.hpp b/Tools/ScriptX/backend/V8/V8Helper.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Helper.hpp rename to Tools/ScriptX/backend/V8/V8Helper.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Inspector.cc b/Tools/ScriptX/backend/V8/V8Inspector.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Inspector.cc rename to Tools/ScriptX/backend/V8/V8Inspector.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8LocalReference.cc b/Tools/ScriptX/backend/V8/V8LocalReference.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8LocalReference.cc rename to Tools/ScriptX/backend/V8/V8LocalReference.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Native.cc b/Tools/ScriptX/backend/V8/V8Native.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Native.cc rename to Tools/ScriptX/backend/V8/V8Native.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Native.hpp b/Tools/ScriptX/backend/V8/V8Native.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Native.hpp rename to Tools/ScriptX/backend/V8/V8Native.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Platform.cc b/Tools/ScriptX/backend/V8/V8Platform.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Platform.cc rename to Tools/ScriptX/backend/V8/V8Platform.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Platform.h b/Tools/ScriptX/backend/V8/V8Platform.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Platform.h rename to Tools/ScriptX/backend/V8/V8Platform.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Reference.hpp b/Tools/ScriptX/backend/V8/V8Reference.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Reference.hpp rename to Tools/ScriptX/backend/V8/V8Reference.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Scope.cc b/Tools/ScriptX/backend/V8/V8Scope.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Scope.cc rename to Tools/ScriptX/backend/V8/V8Scope.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Scope.h b/Tools/ScriptX/backend/V8/V8Scope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Scope.h rename to Tools/ScriptX/backend/V8/V8Scope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Scope.hpp b/Tools/ScriptX/backend/V8/V8Scope.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Scope.hpp rename to Tools/ScriptX/backend/V8/V8Scope.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Utils.cc b/Tools/ScriptX/backend/V8/V8Utils.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Utils.cc rename to Tools/ScriptX/backend/V8/V8Utils.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/V8Value.cc b/Tools/ScriptX/backend/V8/V8Value.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/V8Value.cc rename to Tools/ScriptX/backend/V8/V8Value.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/thirdparty/utfcpp/utf8-min.h b/Tools/ScriptX/backend/V8/thirdparty/utfcpp/utf8-min.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/thirdparty/utfcpp/utf8-min.h rename to Tools/ScriptX/backend/V8/thirdparty/utfcpp/utf8-min.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitEngine.h b/Tools/ScriptX/backend/V8/trait/TraitEngine.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitEngine.h rename to Tools/ScriptX/backend/V8/trait/TraitEngine.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitException.h b/Tools/ScriptX/backend/V8/trait/TraitException.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitException.h rename to Tools/ScriptX/backend/V8/trait/TraitException.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitIncludes.h b/Tools/ScriptX/backend/V8/trait/TraitIncludes.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitIncludes.h rename to Tools/ScriptX/backend/V8/trait/TraitIncludes.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitNative.h b/Tools/ScriptX/backend/V8/trait/TraitNative.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitNative.h rename to Tools/ScriptX/backend/V8/trait/TraitNative.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitReference.h b/Tools/ScriptX/backend/V8/trait/TraitReference.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitReference.h rename to Tools/ScriptX/backend/V8/trait/TraitReference.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitScope.h b/Tools/ScriptX/backend/V8/trait/TraitScope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitScope.h rename to Tools/ScriptX/backend/V8/trait/TraitScope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitUtils.h b/Tools/ScriptX/backend/V8/trait/TraitUtils.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/V8/trait/TraitUtils.h rename to Tools/ScriptX/backend/V8/trait/TraitUtils.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WKWebView/CMakeLists.txt b/Tools/ScriptX/backend/WKWebView/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WKWebView/CMakeLists.txt rename to Tools/ScriptX/backend/WKWebView/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/CMakeLists.txt b/Tools/ScriptX/backend/WebAssembly/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/CMakeLists.txt rename to Tools/ScriptX/backend/WebAssembly/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.cc b/Tools/ScriptX/backend/WebAssembly/WasmEngine.cc similarity index 86% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.cc rename to Tools/ScriptX/backend/WebAssembly/WasmEngine.cc index c52d446..727323d 100644 --- a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.cc +++ b/Tools/ScriptX/backend/WebAssembly/WasmEngine.cc @@ -23,6 +23,7 @@ #include "WasmNative.hpp" #include "WasmReference.hpp" #include "WasmScope.hpp" +#include "../../src/utils/Helper.hpp" namespace script::wasm_backend { @@ -76,6 +77,27 @@ Local WasmEngine::eval(const Local& script, const Local& s return Local(retIndex); } +Local WasmEngine::loadFile(const Local& scriptFile) { + if(scriptFile.toString().empty()) + throw Exception("script file no found"); + Local content = internal::readAllFileContent(scriptFile); + if(content.isNull()) + throw Exception("can't load script file"); + + std::string sourceFilePath = scriptFile.toString(); + std::size_t pathSymbol = sourceFilePath.rfind("/"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + else + { + pathSymbol = sourceFilePath.rfind("\\"); + if(pathSymbol != -1) + sourceFilePath = sourceFilePath.substr(pathSymbol + 1); + } + Local sourceFileName = String::newString(sourceFilePath); + return eval(content.asString(), sourceFileName); +} + std::shared_ptr WasmEngine::messageQueue() { return messageQueue_; } void WasmEngine::gc() {} diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.h b/Tools/ScriptX/backend/WebAssembly/WasmEngine.h similarity index 97% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.h rename to Tools/ScriptX/backend/WebAssembly/WasmEngine.h index b8d629f..9384dcb 100644 --- a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.h +++ b/Tools/ScriptX/backend/WebAssembly/WasmEngine.h @@ -74,6 +74,8 @@ class WasmEngine : public ScriptEngine { Local eval(const Local& script) override; using ScriptEngine::eval; + Local loadFile(const Local& scriptFile) override; + std::shared_ptr messageQueue() override; void gc() override; diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.hpp b/Tools/ScriptX/backend/WebAssembly/WasmEngine.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmEngine.hpp rename to Tools/ScriptX/backend/WebAssembly/WasmEngine.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmException.cc b/Tools/ScriptX/backend/WebAssembly/WasmException.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmException.cc rename to Tools/ScriptX/backend/WebAssembly/WasmException.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmHelper.cc b/Tools/ScriptX/backend/WebAssembly/WasmHelper.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmHelper.cc rename to Tools/ScriptX/backend/WebAssembly/WasmHelper.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmHelper.h b/Tools/ScriptX/backend/WebAssembly/WasmHelper.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmHelper.h rename to Tools/ScriptX/backend/WebAssembly/WasmHelper.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmLocalReference.cc b/Tools/ScriptX/backend/WebAssembly/WasmLocalReference.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmLocalReference.cc rename to Tools/ScriptX/backend/WebAssembly/WasmLocalReference.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmNative.cc b/Tools/ScriptX/backend/WebAssembly/WasmNative.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmNative.cc rename to Tools/ScriptX/backend/WebAssembly/WasmNative.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmNative.hpp b/Tools/ScriptX/backend/WebAssembly/WasmNative.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmNative.hpp rename to Tools/ScriptX/backend/WebAssembly/WasmNative.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmReference.hpp b/Tools/ScriptX/backend/WebAssembly/WasmReference.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmReference.hpp rename to Tools/ScriptX/backend/WebAssembly/WasmReference.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmScope.cc b/Tools/ScriptX/backend/WebAssembly/WasmScope.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmScope.cc rename to Tools/ScriptX/backend/WebAssembly/WasmScope.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmScope.hpp b/Tools/ScriptX/backend/WebAssembly/WasmScope.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmScope.hpp rename to Tools/ScriptX/backend/WebAssembly/WasmScope.hpp diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmUtils.cc b/Tools/ScriptX/backend/WebAssembly/WasmUtils.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmUtils.cc rename to Tools/ScriptX/backend/WebAssembly/WasmUtils.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmValue.cc b/Tools/ScriptX/backend/WebAssembly/WasmValue.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/WasmValue.cc rename to Tools/ScriptX/backend/WebAssembly/WasmValue.cc diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitEngine.h b/Tools/ScriptX/backend/WebAssembly/trait/TraitEngine.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitEngine.h rename to Tools/ScriptX/backend/WebAssembly/trait/TraitEngine.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitException.h b/Tools/ScriptX/backend/WebAssembly/trait/TraitException.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitException.h rename to Tools/ScriptX/backend/WebAssembly/trait/TraitException.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitIncludes.h b/Tools/ScriptX/backend/WebAssembly/trait/TraitIncludes.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitIncludes.h rename to Tools/ScriptX/backend/WebAssembly/trait/TraitIncludes.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitNative.h b/Tools/ScriptX/backend/WebAssembly/trait/TraitNative.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitNative.h rename to Tools/ScriptX/backend/WebAssembly/trait/TraitNative.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitReference.h b/Tools/ScriptX/backend/WebAssembly/trait/TraitReference.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitReference.h rename to Tools/ScriptX/backend/WebAssembly/trait/TraitReference.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitScope.h b/Tools/ScriptX/backend/WebAssembly/trait/TraitScope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitScope.h rename to Tools/ScriptX/backend/WebAssembly/trait/TraitScope.h diff --git a/ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitUtils.h b/Tools/ScriptX/backend/WebAssembly/trait/TraitUtils.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/backend/WebAssembly/trait/TraitUtils.h rename to Tools/ScriptX/backend/WebAssembly/trait/TraitUtils.h diff --git a/ScriptEngine/third-party/ScriptX/docs/doxygen/CMakeLists.txt b/Tools/ScriptX/docs/doxygen/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/doxygen/CMakeLists.txt rename to Tools/ScriptX/docs/doxygen/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/docs/doxygen/Doxyfile.in b/Tools/ScriptX/docs/doxygen/Doxyfile.in similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/doxygen/Doxyfile.in rename to Tools/ScriptX/docs/doxygen/Doxyfile.in diff --git a/ScriptEngine/third-party/ScriptX/docs/en/Basics.md b/Tools/ScriptX/docs/en/Basics.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/Basics.md rename to Tools/ScriptX/docs/en/Basics.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/Exception.md b/Tools/ScriptX/docs/en/Exception.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/Exception.md rename to Tools/ScriptX/docs/en/Exception.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/FAQ.md b/Tools/ScriptX/docs/en/FAQ.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/FAQ.md rename to Tools/ScriptX/docs/en/FAQ.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/ImportScriptX.md b/Tools/ScriptX/docs/en/ImportScriptX.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/ImportScriptX.md rename to Tools/ScriptX/docs/en/ImportScriptX.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/Interop.md b/Tools/ScriptX/docs/en/Interop.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/Interop.md rename to Tools/ScriptX/docs/en/Interop.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/JavaScript.md b/Tools/ScriptX/docs/en/JavaScript.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/JavaScript.md rename to Tools/ScriptX/docs/en/JavaScript.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/Lua.md b/Tools/ScriptX/docs/en/Lua.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/Lua.md rename to Tools/ScriptX/docs/en/Lua.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/NativeBinding.md b/Tools/ScriptX/docs/en/NativeBinding.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/NativeBinding.md rename to Tools/ScriptX/docs/en/NativeBinding.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/NodeJs.md b/Tools/ScriptX/docs/en/NodeJs.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/NodeJs.md rename to Tools/ScriptX/docs/en/NodeJs.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/Performance.md b/Tools/ScriptX/docs/en/Performance.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/Performance.md rename to Tools/ScriptX/docs/en/Performance.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/PureCpp2020.md b/Tools/ScriptX/docs/en/PureCpp2020.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/PureCpp2020.md rename to Tools/ScriptX/docs/en/PureCpp2020.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/QuickJs.md b/Tools/ScriptX/docs/en/QuickJs.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/QuickJs.md rename to Tools/ScriptX/docs/en/QuickJs.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/QuickStart.md b/Tools/ScriptX/docs/en/QuickStart.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/QuickStart.md rename to Tools/ScriptX/docs/en/QuickStart.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/TOC.md b/Tools/ScriptX/docs/en/TOC.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/TOC.md rename to Tools/ScriptX/docs/en/TOC.md diff --git a/ScriptEngine/third-party/ScriptX/docs/en/WebAssembly.md b/Tools/ScriptX/docs/en/WebAssembly.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/en/WebAssembly.md rename to Tools/ScriptX/docs/en/WebAssembly.md diff --git a/ScriptEngine/third-party/ScriptX/docs/media/banner.webp b/Tools/ScriptX/docs/media/banner.webp similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/banner.webp rename to Tools/ScriptX/docs/media/banner.webp diff --git a/ScriptEngine/third-party/ScriptX/docs/media/multilingual_structure.svg b/Tools/ScriptX/docs/media/multilingual_structure.svg similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/multilingual_structure.svg rename to Tools/ScriptX/docs/media/multilingual_structure.svg diff --git a/ScriptEngine/third-party/ScriptX/docs/media/multilingual_structure_zh.svg b/Tools/ScriptX/docs/media/multilingual_structure_zh.svg similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/multilingual_structure_zh.svg rename to Tools/ScriptX/docs/media/multilingual_structure_zh.svg diff --git a/ScriptEngine/third-party/ScriptX/docs/media/performance.webp b/Tools/ScriptX/docs/media/performance.webp similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/performance.webp rename to Tools/ScriptX/docs/media/performance.webp diff --git a/ScriptEngine/third-party/ScriptX/docs/media/scriptx_logo.svg b/Tools/ScriptX/docs/media/scriptx_logo.svg similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/scriptx_logo.svg rename to Tools/ScriptX/docs/media/scriptx_logo.svg diff --git a/ScriptEngine/third-party/ScriptX/docs/media/webassembly_non_shared_bytebuffer.svg b/Tools/ScriptX/docs/media/webassembly_non_shared_bytebuffer.svg similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/webassembly_non_shared_bytebuffer.svg rename to Tools/ScriptX/docs/media/webassembly_non_shared_bytebuffer.svg diff --git a/ScriptEngine/third-party/ScriptX/docs/media/webassembly_shared_bytebuffer.svg b/Tools/ScriptX/docs/media/webassembly_shared_bytebuffer.svg similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/webassembly_shared_bytebuffer.svg rename to Tools/ScriptX/docs/media/webassembly_shared_bytebuffer.svg diff --git a/ScriptEngine/third-party/ScriptX/docs/media/webassembly_v8_jscore.svg b/Tools/ScriptX/docs/media/webassembly_v8_jscore.svg similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/webassembly_v8_jscore.svg rename to Tools/ScriptX/docs/media/webassembly_v8_jscore.svg diff --git a/ScriptEngine/third-party/ScriptX/docs/media/webassembly_webassembly.svg b/Tools/ScriptX/docs/media/webassembly_webassembly.svg similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/media/webassembly_webassembly.svg rename to Tools/ScriptX/docs/media/webassembly_webassembly.svg diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/Basics.md b/Tools/ScriptX/docs/zh/Basics.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/Basics.md rename to Tools/ScriptX/docs/zh/Basics.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/Exception.md b/Tools/ScriptX/docs/zh/Exception.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/Exception.md rename to Tools/ScriptX/docs/zh/Exception.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/FAQ.md b/Tools/ScriptX/docs/zh/FAQ.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/FAQ.md rename to Tools/ScriptX/docs/zh/FAQ.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/ImportScriptX.md b/Tools/ScriptX/docs/zh/ImportScriptX.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/ImportScriptX.md rename to Tools/ScriptX/docs/zh/ImportScriptX.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/Interop.md b/Tools/ScriptX/docs/zh/Interop.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/Interop.md rename to Tools/ScriptX/docs/zh/Interop.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/JavaScript.md b/Tools/ScriptX/docs/zh/JavaScript.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/JavaScript.md rename to Tools/ScriptX/docs/zh/JavaScript.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/Lua.md b/Tools/ScriptX/docs/zh/Lua.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/Lua.md rename to Tools/ScriptX/docs/zh/Lua.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/NativeBinding.md b/Tools/ScriptX/docs/zh/NativeBinding.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/NativeBinding.md rename to Tools/ScriptX/docs/zh/NativeBinding.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/NodeJs.md b/Tools/ScriptX/docs/zh/NodeJs.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/NodeJs.md rename to Tools/ScriptX/docs/zh/NodeJs.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/Performance.md b/Tools/ScriptX/docs/zh/Performance.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/Performance.md rename to Tools/ScriptX/docs/zh/Performance.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/PureCpp2020.md b/Tools/ScriptX/docs/zh/PureCpp2020.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/PureCpp2020.md rename to Tools/ScriptX/docs/zh/PureCpp2020.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/QuickJs.md b/Tools/ScriptX/docs/zh/QuickJs.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/QuickJs.md rename to Tools/ScriptX/docs/zh/QuickJs.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/QuickStart.md b/Tools/ScriptX/docs/zh/QuickStart.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/QuickStart.md rename to Tools/ScriptX/docs/zh/QuickStart.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/TOC.md b/Tools/ScriptX/docs/zh/TOC.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/TOC.md rename to Tools/ScriptX/docs/zh/TOC.md diff --git a/ScriptEngine/third-party/ScriptX/docs/zh/WebAssembly.md b/Tools/ScriptX/docs/zh/WebAssembly.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/docs/zh/WebAssembly.md rename to Tools/ScriptX/docs/zh/WebAssembly.md diff --git a/ScriptEngine/third-party/ScriptX/src/Engine.cc b/Tools/ScriptX/src/Engine.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Engine.cc rename to Tools/ScriptX/src/Engine.cc diff --git a/ScriptEngine/third-party/ScriptX/src/Engine.h b/Tools/ScriptX/src/Engine.h similarity index 95% rename from ScriptEngine/third-party/ScriptX/src/Engine.h rename to Tools/ScriptX/src/Engine.h index 6697efb..6cf7b66 100644 --- a/ScriptEngine/third-party/ScriptX/src/Engine.h +++ b/Tools/ScriptX/src/Engine.h @@ -120,6 +120,17 @@ class ScriptEngine { String::newString(std::forward(sourceFileStringLike))); } + /** + * @param scriptFile path of script file to load + * @return evaluate result + */ + virtual Local loadFile(const Local& scriptFile) = 0; + + template + Local loadFile(T&& scriptFileStringLike) { + return loadFile(String::newString(std::forward(scriptFileStringLike))); + } + /** * register a native class definition (constructor & property & function) to script. * @tparam T a subclass of the NativeClass, which implements all the Script-Native method in cpp. diff --git a/ScriptEngine/third-party/ScriptX/src/Engine.hpp b/Tools/ScriptX/src/Engine.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Engine.hpp rename to Tools/ScriptX/src/Engine.hpp diff --git a/ScriptEngine/third-party/ScriptX/src/Exception.h b/Tools/ScriptX/src/Exception.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Exception.h rename to Tools/ScriptX/src/Exception.h diff --git a/ScriptEngine/third-party/ScriptX/src/Includes.h b/Tools/ScriptX/src/Includes.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Includes.h rename to Tools/ScriptX/src/Includes.h diff --git a/ScriptEngine/third-party/ScriptX/src/Inspector.h b/Tools/ScriptX/src/Inspector.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Inspector.h rename to Tools/ScriptX/src/Inspector.h diff --git a/ScriptEngine/third-party/ScriptX/src/Native.h b/Tools/ScriptX/src/Native.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Native.h rename to Tools/ScriptX/src/Native.h diff --git a/ScriptEngine/third-party/ScriptX/src/Native.hpp b/Tools/ScriptX/src/Native.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Native.hpp rename to Tools/ScriptX/src/Native.hpp diff --git a/ScriptEngine/third-party/ScriptX/src/NativeConverter.hpp b/Tools/ScriptX/src/NativeConverter.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/NativeConverter.hpp rename to Tools/ScriptX/src/NativeConverter.hpp diff --git a/ScriptEngine/third-party/ScriptX/src/Reference.cc b/Tools/ScriptX/src/Reference.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Reference.cc rename to Tools/ScriptX/src/Reference.cc diff --git a/ScriptEngine/third-party/ScriptX/src/Reference.h b/Tools/ScriptX/src/Reference.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Reference.h rename to Tools/ScriptX/src/Reference.h diff --git a/ScriptEngine/third-party/ScriptX/src/Scope.cc b/Tools/ScriptX/src/Scope.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Scope.cc rename to Tools/ScriptX/src/Scope.cc diff --git a/ScriptEngine/third-party/ScriptX/src/Scope.h b/Tools/ScriptX/src/Scope.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Scope.h rename to Tools/ScriptX/src/Scope.h diff --git a/ScriptEngine/third-party/ScriptX/src/Utils.cc b/Tools/ScriptX/src/Utils.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Utils.cc rename to Tools/ScriptX/src/Utils.cc diff --git a/ScriptEngine/third-party/ScriptX/src/Utils.h b/Tools/ScriptX/src/Utils.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Utils.h rename to Tools/ScriptX/src/Utils.h diff --git a/ScriptEngine/third-party/ScriptX/src/Value.h b/Tools/ScriptX/src/Value.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/Value.h rename to Tools/ScriptX/src/Value.h diff --git a/ScriptEngine/third-party/ScriptX/src/foundation.h b/Tools/ScriptX/src/foundation.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/foundation.h rename to Tools/ScriptX/src/foundation.h diff --git a/ScriptEngine/third-party/ScriptX/src/include/ScriptX/ScriptX.h b/Tools/ScriptX/src/include/ScriptX/ScriptX.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/include/ScriptX/ScriptX.h rename to Tools/ScriptX/src/include/ScriptX/ScriptX.h diff --git a/ScriptEngine/third-party/ScriptX/src/types.h b/Tools/ScriptX/src/types.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/types.h rename to Tools/ScriptX/src/types.h diff --git a/ScriptEngine/third-party/ScriptX/src/utils/GlobalWeakBookkeeping.hpp b/Tools/ScriptX/src/utils/GlobalWeakBookkeeping.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/GlobalWeakBookkeeping.hpp rename to Tools/ScriptX/src/utils/GlobalWeakBookkeeping.hpp diff --git a/ScriptEngine/third-party/ScriptX/src/utils/Helper.cc b/Tools/ScriptX/src/utils/Helper.cc similarity index 80% rename from ScriptEngine/third-party/ScriptX/src/utils/Helper.cc rename to Tools/ScriptX/src/utils/Helper.cc index 18eb70c..37040f0 100644 --- a/ScriptEngine/third-party/ScriptX/src/utils/Helper.cc +++ b/Tools/ScriptX/src/utils/Helper.cc @@ -18,6 +18,7 @@ #include #include +#include namespace script::internal { @@ -56,4 +57,17 @@ Local getNamespaceObject(ScriptEngine* engine, const std::string_view& na return nameSpaceObj; } +Local readAllFileContent(const Local& scriptFile) +{ + std::ifstream fRead; + fRead.open(scriptFile.toString(), std::ios_base::in); + if (!fRead.is_open()) { + return Local(); + } + std::string data((std::istreambuf_iterator(fRead)), + std::istreambuf_iterator()); + fRead.close(); + return String::newString(std::move(data)).asValue(); +} + } // namespace script::internal \ No newline at end of file diff --git a/ScriptEngine/third-party/ScriptX/src/utils/Helper.hpp b/Tools/ScriptX/src/utils/Helper.hpp similarity index 94% rename from ScriptEngine/third-party/ScriptX/src/utils/Helper.hpp rename to Tools/ScriptX/src/utils/Helper.hpp index 6790ccb..541791d 100644 --- a/ScriptEngine/third-party/ScriptX/src/utils/Helper.hpp +++ b/Tools/ScriptX/src/utils/Helper.hpp @@ -55,4 +55,6 @@ void withNArray(size_t N, FN&& fn) { Local getNamespaceObject(ScriptEngine* engine, const std::string_view& nameSpace, Local rootNs = {}); + +Local readAllFileContent(const Local& scriptFile); } // namespace script::internal \ No newline at end of file diff --git a/ScriptEngine/third-party/ScriptX/src/utils/MemoryPool.hpp b/Tools/ScriptX/src/utils/MemoryPool.hpp similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/MemoryPool.hpp rename to Tools/ScriptX/src/utils/MemoryPool.hpp diff --git a/ScriptEngine/third-party/ScriptX/src/utils/MessageQueue.cc b/Tools/ScriptX/src/utils/MessageQueue.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/MessageQueue.cc rename to Tools/ScriptX/src/utils/MessageQueue.cc diff --git a/ScriptEngine/third-party/ScriptX/src/utils/MessageQueue.h b/Tools/ScriptX/src/utils/MessageQueue.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/MessageQueue.h rename to Tools/ScriptX/src/utils/MessageQueue.h diff --git a/ScriptEngine/third-party/ScriptX/src/utils/ThreadLocal.h b/Tools/ScriptX/src/utils/ThreadLocal.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/ThreadLocal.h rename to Tools/ScriptX/src/utils/ThreadLocal.h diff --git a/ScriptEngine/third-party/ScriptX/src/utils/ThreadPool.cc b/Tools/ScriptX/src/utils/ThreadPool.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/ThreadPool.cc rename to Tools/ScriptX/src/utils/ThreadPool.cc diff --git a/ScriptEngine/third-party/ScriptX/src/utils/ThreadPool.h b/Tools/ScriptX/src/utils/ThreadPool.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/ThreadPool.h rename to Tools/ScriptX/src/utils/ThreadPool.h diff --git a/ScriptEngine/third-party/ScriptX/src/utils/TypeInformation.h b/Tools/ScriptX/src/utils/TypeInformation.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/utils/TypeInformation.h rename to Tools/ScriptX/src/utils/TypeInformation.h diff --git a/ScriptEngine/third-party/ScriptX/src/version.h b/Tools/ScriptX/src/version.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/src/version.h rename to Tools/ScriptX/src/version.h diff --git a/ScriptEngine/third-party/ScriptX/test/CMakeLists.txt b/Tools/ScriptX/test/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/CMakeLists.txt rename to Tools/ScriptX/test/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/test/cmake/TestEnv.cmake b/Tools/ScriptX/test/cmake/TestEnv.cmake similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/cmake/TestEnv.cmake rename to Tools/ScriptX/test/cmake/TestEnv.cmake diff --git a/ScriptEngine/third-party/ScriptX/test/cmake/gtest/CMakeLists.txt b/Tools/ScriptX/test/cmake/gtest/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/cmake/gtest/CMakeLists.txt rename to Tools/ScriptX/test/cmake/gtest/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/test/cmake/gtest/CMakeLists.txt.in b/Tools/ScriptX/test/cmake/gtest/CMakeLists.txt.in similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/cmake/gtest/CMakeLists.txt.in rename to Tools/ScriptX/test/cmake/gtest/CMakeLists.txt.in diff --git a/ScriptEngine/third-party/ScriptX/test/cmake/test_libs/CMakeLists.txt b/Tools/ScriptX/test/cmake/test_libs/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/cmake/test_libs/CMakeLists.txt rename to Tools/ScriptX/test/cmake/test_libs/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/test/cmake/test_libs/CMakeLists.txt.in b/Tools/ScriptX/test/cmake/test_libs/CMakeLists.txt.in similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/cmake/test_libs/CMakeLists.txt.in rename to Tools/ScriptX/test/cmake/test_libs/CMakeLists.txt.in diff --git a/ScriptEngine/third-party/ScriptX/test/node_addon/.gitignore b/Tools/ScriptX/test/node_addon/.gitignore similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/node_addon/.gitignore rename to Tools/ScriptX/test/node_addon/.gitignore diff --git a/ScriptEngine/third-party/ScriptX/test/node_addon/CMakeLists.txt b/Tools/ScriptX/test/node_addon/CMakeLists.txt similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/node_addon/CMakeLists.txt rename to Tools/ScriptX/test/node_addon/CMakeLists.txt diff --git a/ScriptEngine/third-party/ScriptX/test/node_addon/README.md b/Tools/ScriptX/test/node_addon/README.md similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/node_addon/README.md rename to Tools/ScriptX/test/node_addon/README.md diff --git a/ScriptEngine/third-party/ScriptX/test/node_addon/hello.js b/Tools/ScriptX/test/node_addon/hello.js similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/node_addon/hello.js rename to Tools/ScriptX/test/node_addon/hello.js diff --git a/ScriptEngine/third-party/ScriptX/test/node_addon/package.json b/Tools/ScriptX/test/node_addon/package.json similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/node_addon/package.json rename to Tools/ScriptX/test/node_addon/package.json diff --git a/ScriptEngine/third-party/ScriptX/test/node_addon/src/addon.cc b/Tools/ScriptX/test/node_addon/src/addon.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/node_addon/src/addon.cc rename to Tools/ScriptX/test/node_addon/src/addon.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/BookKeepingTest.cc b/Tools/ScriptX/test/src/BookKeepingTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/BookKeepingTest.cc rename to Tools/ScriptX/test/src/BookKeepingTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ByteBufferTest.cc b/Tools/ScriptX/test/src/ByteBufferTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ByteBufferTest.cc rename to Tools/ScriptX/test/src/ByteBufferTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/CustomConverterTest.cc b/Tools/ScriptX/test/src/CustomConverterTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/CustomConverterTest.cc rename to Tools/ScriptX/test/src/CustomConverterTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/Demo.cc b/Tools/ScriptX/test/src/Demo.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/Demo.cc rename to Tools/ScriptX/test/src/Demo.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/EngineTest.cc b/Tools/ScriptX/test/src/EngineTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/EngineTest.cc rename to Tools/ScriptX/test/src/EngineTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ExceptionTest.cc b/Tools/ScriptX/test/src/ExceptionTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ExceptionTest.cc rename to Tools/ScriptX/test/src/ExceptionTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/InspectorTest.cc b/Tools/ScriptX/test/src/InspectorTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/InspectorTest.cc rename to Tools/ScriptX/test/src/InspectorTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/InteroperateTest.cc b/Tools/ScriptX/test/src/InteroperateTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/InteroperateTest.cc rename to Tools/ScriptX/test/src/InteroperateTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ManagedObjectTest.cc b/Tools/ScriptX/test/src/ManagedObjectTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ManagedObjectTest.cc rename to Tools/ScriptX/test/src/ManagedObjectTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/MessageQueueTest.cc b/Tools/ScriptX/test/src/MessageQueueTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/MessageQueueTest.cc rename to Tools/ScriptX/test/src/MessageQueueTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/NativeTest.cc b/Tools/ScriptX/test/src/NativeTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/NativeTest.cc rename to Tools/ScriptX/test/src/NativeTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/PressureTest.cc b/Tools/ScriptX/test/src/PressureTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/PressureTest.cc rename to Tools/ScriptX/test/src/PressureTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ReferenceTest.cc b/Tools/ScriptX/test/src/ReferenceTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ReferenceTest.cc rename to Tools/ScriptX/test/src/ReferenceTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ScopeTests.cc b/Tools/ScriptX/test/src/ScopeTests.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ScopeTests.cc rename to Tools/ScriptX/test/src/ScopeTests.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ShowCaseTest.cc b/Tools/ScriptX/test/src/ShowCaseTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ShowCaseTest.cc rename to Tools/ScriptX/test/src/ShowCaseTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ThreadPoolTest.cc b/Tools/ScriptX/test/src/ThreadPoolTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ThreadPoolTest.cc rename to Tools/ScriptX/test/src/ThreadPoolTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/UtilsTest.cc b/Tools/ScriptX/test/src/UtilsTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/UtilsTest.cc rename to Tools/ScriptX/test/src/UtilsTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/ValueTest.cc b/Tools/ScriptX/test/src/ValueTest.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/ValueTest.cc rename to Tools/ScriptX/test/src/ValueTest.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/gtest_main.cc b/Tools/ScriptX/test/src/gtest_main.cc similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/gtest_main.cc rename to Tools/ScriptX/test/src/gtest_main.cc diff --git a/ScriptEngine/third-party/ScriptX/test/src/test.h b/Tools/ScriptX/test/src/test.h similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/test.h rename to Tools/ScriptX/test/src/test.h diff --git a/ScriptEngine/third-party/ScriptX/test/src/wasm/run_test.html b/Tools/ScriptX/test/src/wasm/run_test.html similarity index 100% rename from ScriptEngine/third-party/ScriptX/test/src/wasm/run_test.html rename to Tools/ScriptX/test/src/wasm/run_test.html diff --git a/RELEASE/plugins/LiteLoader/7z/7za.dll b/assets/plugins/LiteLoader/7z/7za.dll similarity index 100% rename from RELEASE/plugins/LiteLoader/7z/7za.dll rename to assets/plugins/LiteLoader/7z/7za.dll diff --git a/RELEASE/plugins/LiteLoader/7z/7za.exe b/assets/plugins/LiteLoader/7z/7za.exe similarity index 100% rename from RELEASE/plugins/LiteLoader/7z/7za.exe rename to assets/plugins/LiteLoader/7z/7za.exe diff --git a/RELEASE/plugins/LiteLoader/CrashLogger_Daemon.exe b/assets/plugins/LiteLoader/CrashLogger_Daemon.exe similarity index 100% rename from RELEASE/plugins/LiteLoader/CrashLogger_Daemon.exe rename to assets/plugins/LiteLoader/CrashLogger_Daemon.exe diff --git a/RELEASE/plugins/LiteLoader/LangPack/en.json b/assets/plugins/LiteLoader/LangPack/en.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/en.json rename to assets/plugins/LiteLoader/LangPack/en.json diff --git a/assets/plugins/LiteLoader/LangPack/fr.json b/assets/plugins/LiteLoader/LangPack/fr.json new file mode 100644 index 0000000..b0a2af2 --- /dev/null +++ b/assets/plugins/LiteLoader/LangPack/fr.json @@ -0,0 +1,440 @@ +{ + "base": { + "getDimName": { + "0": "Surface", + "1": "Nether", + "2": "L'Ender", + "unknown": "Autre dimension" + } + }, + "ll": { + "main": { + "checkRunningBDS": { + "detected": "L'existence d'un autre processus BDS a été détecté avec le même chemin !", + "tip": "Cela peut entraîner l'occupation du port réseau et du monde", + "ask": "Voulez-vous terminer le processus avec PID {} ? (y=Oui, n=Non)" + }, + "fixAllowList": { + "removeEmptyAllowlist": "allowlist.json est vide! Suppression...", + "checkManually": "allowlist.json et whitelist.json existent et ne sont pas vides. Veuillez les vérifier manuellement", + "renamed": "Renommé whitelist.json en allowlist.json" + }, + "warning": { + "inDevMode": "Actuellement en mode développeur !", + "betaVersion": "Utilisation actuelle d'une version bêta.", + "productionEnv": "VEUILLEZ NE PAS UTILISER DANS L'ENVIRONNEMENT DE PRODUCTION!", + "protocolVersionNotMatch": { + "1": "La version du protocole ne correspond pas, la version cible : {}, la version actuelle : {}.", + "2": "Cela va probablement planter le serveur, veuillez utiliser la version de LiteLoader qui correspond à la version du BDS !" + } + }, + "bstats": { + "enabled": "bStats has been enabled, you can edit plugins/bStats/config.json to disable it" + } + }, + "antiAbnormalItem": { + "detected": "Erreur de données de l'item Player({}) !", + "itemInfo": "Item: {}" + }, + "cmd": { + "tpdim": { + "success": "{} s'est fait téléporter vers {} ({:2f}, {:2f}, {:2f})", + "error": { + "noActorTeleported": "Aucune Entité Téléportée", + "noActorSpecified": "Aucune Entité Spécifiée" + }, + "invalidDimid": "DimensionId: {} invalide" + }, + "listPlugin": { + "overview": "Liste des plugins [{}]", + "tip": "* Envoyez la commande \"ll list \" pour plus d'informations" + }, + "pluginInfo": { + "title": "Plugin <{}>", + "error": { + "pluginNotFound": "Plugin <{}> introuvable !" + } + }, + "version": { + "msg": "Serveur Dédié Bedrock {}\n- avec LiteLoaderBDS {}\n- Protocole réseau : {}" + }, + "help": { + "msg": "[Introduction]\nLiteLoaderBDS est un chargeur de plugin non officiel pour le développement de Serveurs Dédiés Bedrock, BDS.\nIl fournit un nombre énorme d'API, un système d'événements puissant et de nombreuses interfaces utilitaires empaquetées.\n[Github]\n--> https://github.com/LiteLDev/LiteLoaderBDS <--\nBienvenue sur notre projet github pour obtenir plus d'informations ~" + }, + "loadPlugin": { + "success": "Plugin <{}> chargé.", + "fail": "Échec lors de l'initialisation du plugin {}" + }, + "unloadPlugin": { + "success": "Plugin <{}> déchargé.", + "fail": "Échec lors du déchargement du plugin <{}>" + }, + "reloadPlugin": { + "success": "Plugin <{}> rechargé.", + "fail": "Échec lors du rechargement du plugin <{}>" + }, + "reloadAllPlugins": { + "success": "Plugins {} rechargés avec succès.", + "fail": "Échec lors du rechargement des plugins" + }, + "settings": { + "set": { + "success": "Les paramètres ont été changés de {} à {} avec succès." + }, + "get": { + "success": "Obtention de paramètres {} avec succès. Valeur :" + }, + "delete": { + "success": "Suppression des paramètres {} avec succès.", + "error": { + "emptyKey": "JsonPointer ne peut pas être vide !" + } + }, + "reload": { + "success": "Les paramètres ont été rechargés avec succès." + }, + "save": { + "success": "Les paramètres ont été enregistrés avec succès." + }, + "list": { + "success": "Liste des paramètres :" + } + }, + "error": { + "noPathSpecified": "Vous devez fournir un chemin valide du plugin LiteLoader !", + "noNameSpecified": "Vous devez fournir un nom valide pour le plugin LiteLoader !" + } + }, + "config": { + "save": { + "fail": "Échec de la sauvegarde (création) du fichier de configuration !" + }, + "creating": "Fichier de configuration LL <{}> introuvable. Création du fichier de configuration...", + "warning": { + "configOutdated": "Le fichier de configuration LL <{}> est obsolète." + }, + "updating": "Mise à jour du fichier de configuration..." + }, + "crashLogger": { + "existsingDebuggerDetected": "Débogueur existant détecté. Le fichier CrashLogger intégré ne fonctionnera pas.", + "wineDetected": "Wine Environment détecté. Le CrashLogger intégré ne marchera pas.", + "error": { + "cannotCreateDaemonProcess": "Impossible de créer le processus CrashLogger Daemon !" + }, + "warning": { + "crashLoggerDisabled": { + "1": "Le CrashLogger interne n'est pas activé car la configuration l'a désactivé.", + "2": "Il n'y aura pas de journal de plantage en cas d'exception non gérée,", + "3": "ce qui rend presque impossible de trouver la raison du crash et la source du crash.", + "4": "Nous vous recommandons fortement de l'activer pour assurer la stabilité du serveur" + }, + "conflicts": { + "1": "CrashLogger interne n'est pas activé car le plugin <{}> est en conflit avec lui", + "2": "Il n'y aura pas de journal de plantage en cas d'exception non gérée,", + "3": "ce qui rend presque impossible de trouver la raison du crash et la source du crash.", + "4": "Puisque CrashLogger est un composant important qui assure la stabilité du serveur", + "5": "Nous vous recommandons de réfléchir deux fois à l'utilisation du plugin <{}>" + } + }, + "init": { + "fail": { + "msg": "Échec du démarrage de CrashLogger intégré !", + "tip": "Il n'y aura pas de journal de plantage en cas d'exception non gérée." + } + } + }, + "addonsHelper": { + "error": { + "addonConfigNotFound": "Configuration de l'addon introuvable !", + "addonFileNotFound": "Fichier d'addon \"{}\" introuvable !", + "addonNotFound": "Addon <{}> introuvable !", + "outOfRange": "Indice de l'addon {} hors de portée", + "unsupportedFileType": "Fichier non pris en charge trouvé !", + "parsingEnabledAddonsList": "Erreur lors de l'analyse de la liste des addons activés", + "noAddonInstalled": "Aucun addon n'a été installé.", + "installationAborted": "Progression de l'installation annulée !" + }, + "displayError": "Erreur : {}", + "removeAddonFromList": { + "fail": "Impossible de supprimer l'addon <{}> du fichier de configuration !", + "success": "Addon <{}> enlevé du fichier de configuration." + }, + "addAddonToList": { + "invalidList": "Fichier de liste d'addons {} non valide, sauvegarde de {} et réinitialisation à la valeur par défaut", + "fail": "Impossible d'insérer l'addon {} dans {} !", + "success": "Addon <{}> ajouté dans le fichier de configuration." + }, + "install": { + "installing": "Installation de l'addon <{}>...", + "error": { + "failToUncompress": { + "msg": "Échec de décompression de l'addon {} !", + "exitCode": "Code de sortie : {}", + "programOutput": "Sortie du programme :\n{}" + } + } + }, + "uninstall": { + "success": "Addon <{}> désinstallé." + }, + "autoInstall": { + "tip": { + "dirCreated": "Répertoire créé. Vous pouvez déplacer les fichiers d'addon compressés vers {} pour être installés au prochain lancement." + }, + "working": "{} nouveau(x) addon(s) trouvé(s) à installer. En cours d'installation...", + "installed": "L'Addon {} a été installé.", + "installedCount": "{} addon(s) ont été installé." + }, + "cmd": { + "output": { + "list": { + "overview": "Addons : {} addon(s) installé(s) :" + } + } + } + }, + "loader": { + "loadScriptEngine": { + "error": { + "versionNotMatch": "La version du fichier <{}> du moteur de script pour {} ne correspond pas à la version de LiteLoader <{}>" + }, + "success": "* ScriptEngine pour {} chargé." + }, + "loadDotNetEngine": { + "error": { + "versionNotMatch": "La version du fichier <{}> de LiteLoader.NET ne correspond pas à la version de LiteLoader <{}>" + }, + "success": "* .NET Engine chargé." + }, + "loadMain": { + "loadingPlugins": "Chargement des plugins natifs...", + "loadedShellLink": "Plugin ShellLinked <{} => {}> chargé", + "loadedPlugin": "Plugin natif <{name}> chargé", + "done": "{} plugin(s) natif(s) chargé(s).", + "start": "Chargement des plugins natifs..." + }, + "initNodeJsDirectories": { + "created": "Création du répertoire d'exécution de Node.js car il est introuvable." + } + }, + "notice": { + "newForum": "Notre nouveau forum est en ligne ! -> {}", + "license": "LiteLoader est licencié sous {}", + "translateText": "Aidez-nous à traduire et améliorer le texte sur LL -> {}" + }, + "pluginManager": { + "error": { + "invalidFileType": "Type de fichier de plugin {} invalide dans {}", + "noValidPluginFound": "Aucun plugin valide trouvé à {} !", + "failToRegisterPlugin": "Échec lors de l'enregistrement du plugin {} !", + "hasBeenRegistered": "Un plugin nommé {} a été enregistré", + "failToLoadPlugin": "Échec lors du chargement du plugin {} !", + "pluginNotFound": "Plugin <{}> introuvable" + }, + "warning": { + "unloadDllNotFinished": "La fonction de déchargement des plugins dll n'est pas terminée.", + "reloadDllNotFinished": "La fonction de rechargement des plugins dll n'est pas terminée." + }, + "reloadPlugin": { + "fail": "Échec lors du rechargement du plugin {} !" + } + }, + "unzipNodeModules": { + "fail": "Échec de la décompression de node_modules.tar" + } + }, + "llse": { + "init": { + "llMoney": { + "notFound": "LLMoney.dll introuvable,le système d'économie ScriptEngine ne fonctionnera pas" + } + }, + "api": { + "ll": { + "require": { + "success": " - Plugin chargé avec succès par require. Chargé : ", + "fail": " - Échec du chargement du plugin par require", + "download": { + "success": "- Require téléchargé avec succès ! Chemin d'accès :", + "fail": "- Échec du téléchargement de plugin par require ! Code :" + } + } + } + }, + "apiHelp": { + "parseJson": { + "fail": "Erreur JSON parse" + } + }, + "loader": { + "loadDepends": { + "success": "Dépendance {} chargée.", + "fail": "Échec de chargement de la dépendance {}" + }, + "loadMain": { + "start": "Chargement des plugins {type}...", + "done": "{count} plugin(s) {type} chargé(s).", + "nodejs": { + "installPack": { + "fail": "Impossible d'installer le plugin pack {}, veuillez vérifier votre fichier package.json !", + "start": "Pack de plugin Node.js «{path}» trouvé ! Essayez d'installer..." + }, + "ignored": "Aucun fichier package.json trouvé dans le répertoire {path}, ignoré." + }, + "loadedPlugin": "Plugin {type} <{name}> chargé.", + "installPluginPack": { + "done": "{count} pack(s) de plugins {type} chargé(s)." + } + }, + "nodejs": { + "executeNpmInstall": { + "success": "NPM fini avec succès.", + "start": "Exécution de \"npm install\" pour le plugin {name}...", + "fail": "Une erreur est survenue. Code de sortie : {code}" + }, + "register": { + "fail": "Échec de l'enregistrement du plugin {name} !" + } + } + } + }, + "permapi": { + "data": { + "process": { + "fail": "Impossible de traiter le fichier de données : {}" + }, + "read": { + "fail": "Echec de lecture du fichier de données dans {}" + }, + "save": { + "fail": "Echec de lecture du fichier de données dans: {}" + } + }, + "cmd": { + "error": { + "invalidCommand": "Commande invalide. Tapez '/help perm' pour obtenir de l'aide.", + "internal": "Erreur interne. Veuillez réessayer plus tard.", + "roleAlreadyExists": "Ce rôle existe déjà.", + "permissionAlreadyExists": "La permission existe déjà.", + "invalidPermissionName": "Nom de la permission invalide.", + "roleNotFound": "Rôle introuvable.", + "permissionNotFound": "Permission introuvable.", + "playerNotFound": "Joueur introuvable.", + "modifyMembersOfEveryone": "Le rôle est un rôle pour tout le monde. Vous ne pouvez pas modifier les membres de celui-ci.", + "jsonParsingError": "Erreur JSON parse: {}", + "missingArgument": "Argument manquant : {}", + "permissionDenied": "Vous n'avez pas la permission d'utiliser cette commande slash." + }, + "output": { + "create": { + "role": { + "success": "Rôle créé." + }, + "perm": { + "success": "Permission créée." + } + }, + "delete": { + "role": { + "success": "Rôle supprimé." + }, + "perm": { + "success": "Permission supprimée." + } + }, + "list": { + "role": { + "none": "Aucun rôle à afficher.", + "header": "§b§lListe des rôles :", + "isMember": "§r(§eMembre§r)" + }, + "perm": { + "none": "Aucune permission à afficher.", + "header": "§b§lListe des Permissions :" + } + }, + "view": { + "player": { + "yourStatus": "§b§lVotre statut de permission actuel :", + "status": "§b§lLe statut de permission actuel de {} :", + "rolesTitle": "- §eRôles :", + "permissionsTitle": "- §ePermissions :" + }, + "role": { + "header": "§b§lInfos du rôle :", + "info": { + "name": "+ §eNom§r : {roleName}", + "displayName": "+ §eNom d'affichage§r: {}", + "priority": "+ §ePriorité§r : {}", + "membersNone": "+ §eMembres§r : Aucun", + "members": "+ §eMembres§r :", + "permissionsNone": "+ §ePermissions§r : Aucune", + "permissions": "+ §ePermissions §r:" + }, + "note": { + "admin": "※ {}§r est un rôle spécial. Toutes les permissions seront activées par défaut.", + "everyone": "※ {}§r est un rôle spécial. Tous les joueurs sont membres de ce rôle." + }, + "enabled": "§a(Activé)§r", + "disabled": "§c(Désactivé)§r", + "enabledWithExtra": "§b(Activé avec des restrictions supplémentaires)§r" + }, + "perm": { + "header": "§b§lInfos sur les Permissions :", + "info": { + "name": "+ §eNom§r : {permissionName}", + "desc": "+ §eDescription§r : {}" + } + } + }, + "update": { + "role": { + "member": { + "add": { + "success": "Membre {name}§r({xuid}) ajouté au rôle {roleDisplayName}§r." + }, + "remove": { + "success": "Membre {name}§r({xuid}) enlevé du rôle {roleDisplayName}§r." + } + }, + "perm": { + "add": { + "success": "Permission {name}§r ajoutée au rôle {roleDisplayName}§r." + }, + "remove": { + "success": "Permission {name}§r retirée du rôle {roleDisplayName}§r." + }, + "set": { + "enabled": "§aactivé(e)§r", + "disabled": "§cdésactivé(e)§r", + "success": "Permission {name}§r du rôle {roleDisplayName}§r {enable}." + } + }, + "priority": { + "set": { + "success": "Priorité du rôle {roleDisplayName}§r définie à {priority}." + } + }, + "displayName": { + "set": { + "success": "Nom d'affichage du rôle <{roleName}§r> défini à {displayName}§r." + } + } + }, + "player": { + "role": { + "add": { + "success": "Le joueur {name}§r({xuid}) a été ajouté au rôle {roleDisplayName}§r." + }, + "remove": { + "success": "Le joueur {name}§r({xuid}) a été retiré du rôle {roleDisplayName}§r." + } + } + } + }, + "noDesc": "[Aucune description]", + "permissionNameExamples": "Exemples de noms de permissions : 'Identifiant:NomDePermission', 'a:b:c:d_e_f.g'" + } + } + } +} \ No newline at end of file diff --git a/RELEASE/plugins/LiteLoader/LangPack/id.json b/assets/plugins/LiteLoader/LangPack/id.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/id.json rename to assets/plugins/LiteLoader/LangPack/id.json diff --git a/RELEASE/plugins/LiteLoader/LangPack/it.json b/assets/plugins/LiteLoader/LangPack/it.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/it.json rename to assets/plugins/LiteLoader/LangPack/it.json diff --git a/RELEASE/plugins/LiteLoader/LangPack/ja.json b/assets/plugins/LiteLoader/LangPack/ja.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/ja.json rename to assets/plugins/LiteLoader/LangPack/ja.json diff --git a/assets/plugins/LiteLoader/LangPack/ko.json b/assets/plugins/LiteLoader/LangPack/ko.json new file mode 100644 index 0000000..c93fcd8 --- /dev/null +++ b/assets/plugins/LiteLoader/LangPack/ko.json @@ -0,0 +1,440 @@ +{ + "base": { + "getDimName": { + "0": "오버월드", + "1": "네더", + "2": "엔더", + "unknown": "다른 월드" + } + }, + "ll": { + "main": { + "checkRunningBDS": { + "detected": "동일한 파일 경로에서 이미 다른 BDS 서버가 열려 있습니다.", + "tip": "네트워크 포트나 월드를 사용중인 상태로 만들수도 있습니다.", + "ask": "PID {} 로 프로세스를 종료하시겠습니까? (y=예, n=아니오, e=종료)" + }, + "fixAllowList": { + "removeEmptyAllowlist": "allowlist.json이 비어 있습니다! 삭제를 진행합니다...", + "checkManually": "allowlist.json 과 whitelist.json, 두 파일 모두가 비어있지 않습니다. 파일을 직접 확인해주세요.", + "renamed": "whitelist.json 파일의 이름을 allowlist.json로 변경했습니다." + }, + "warning": { + "inDevMode": "개발자 모드에 진입한 상태입니다!", + "betaVersion": "현재 베타 버전을 사용중입니다.", + "productionEnv": "프로덕션 단계에서 사용하지 말아주세요!", + "protocolVersionNotMatch": { + "1": "프로토콜 버전이 맞지 않습니다. 타겟 버전 {}, 현재 버전: {}.", + "2": "높은 확률로 서버 크래시가 발생할 수도 있습니다. BDS 버전과 맞는 LiteLoader을 사용해주세요!" + } + }, + "bstats": { + "enabled": "bStats has been enabled, you can edit plugins/bStats/config.json to disable it" + } + }, + "antiAbnormalItem": { + "detected": "플레이어({}) 아이템 데이터 오류 발생!", + "itemInfo": "아이템: {}" + }, + "cmd": { + "tpdim": { + "success": "유저 {} (을)를 {} ({:2f}, {:2f}, {:2f}) 로 이동시킵니다.", + "error": { + "noActorTeleported": "Actor가 텔레포트 되지 않았습니다", + "noActorSpecified": "Actor가 지정되지 않았습니다" + }, + "invalidDimid": "유효하지 않은 월드: {}" + }, + "listPlugin": { + "overview": "플러그인 목록 [{}]", + "tip": "* 더 많은 정보가 필요하시면 \"ll list \" 명령어를 입력해주세요." + }, + "pluginInfo": { + "title": "플러그인 <{}>", + "error": { + "pluginNotFound": "플러그인 <{}>를 찾을 수 없습니다!" + } + }, + "version": { + "msg": "Bedrock Dedicated Server {}\n- LiteLoaderBDS 포함 {}\n- 네트워크 프로토콜: {}" + }, + "help": { + "msg": "[Introduction]\nLiteLoaderBDS는 Bedrock Dedicated Server 모딩이 가능한 비공식 플러그인 로더입니다.\n많은 수의 API과 패킷 유틸리티 인터페이스, 그리고 강력한 이벤트 시스템을 제공합니다.\n\n[Github]\n--> https://github.com/LiteLDev/LiteLoaderBDS <--\n더 자세한 정보를 원하신다면 자유롭게 Github 프로젝트를 확인해주세요!" + }, + "loadPlugin": { + "success": "플러그인 <{}>(이)가 로드되었습니다.", + "fail": "플러그인 {} 로드에 실패했습니다." + }, + "unloadPlugin": { + "success": "플러그인 <{}> (이)가 언로드 되었습니다.", + "fail": "플러그인 <{}> 언로드에 실패했습니다." + }, + "reloadPlugin": { + "success": "플러그인 <{}> 가 리로드 되었습니다.", + "fail": "플러그인 <{}> 리로드에 실패했습니다." + }, + "reloadAllPlugins": { + "success": "{} 플러그인들이 성공적으로 리로드됐습니다.", + "fail": "어떤 플러그인도 리로드하지 못했습니다." + }, + "settings": { + "set": { + "success": "설정에서 {} 를 {} 로 성공적으로 변경했습니다." + }, + "get": { + "success": "{} 가 설정에 업데이트 되었습니다. 값:" + }, + "delete": { + "success": "{} 설정 제거가 완료되었습니다.", + "error": { + "emptyKey": "JsonPointer 파일은 비어 있을수 없습니다." + } + }, + "reload": { + "success": "설정이 성공적으로 리로드되었습니다." + }, + "save": { + "success": "설정이 성공적으로 저장되었습니다." + }, + "list": { + "success": "설정 목록:" + } + }, + "error": { + "noPathSpecified": "LiteLoader 플러그인의 유효한 경로를 제공해주세요.", + "noNameSpecified": "LiteLoader 플러그인에 유효한 이름을 부여해줘야 합니다." + } + }, + "config": { + "save": { + "fail": "Config 파일을 저장(생성)하지 못했습니다!" + }, + "creating": "LL Config <{}> 파일을 찾을 수 없습니다. Config 파일을 생성합니다.", + "warning": { + "configOutdated": "LL Config <{}> 파일이 오래됐거나 현재 버전과 호환되지 않습니다." + }, + "updating": "설정 파일을 업데이트 합니다.." + }, + "crashLogger": { + "existsingDebuggerDetected": "이미 존재하는 다른 디버거가 감지되었습니다. 빌트인 CrashLogger가 작동하지 않을수도 있습니다.", + "wineDetected": "Wine 환경이 감지되었습니다. 빌트인 CrashLogger가 작동하지 않을수도 있습니다.", + "error": { + "cannotCreateDaemonProcess": "CrashLogger 데몬 프로세스를 생성하지 못했습니다!" + }, + "warning": { + "crashLoggerDisabled": { + "1": "Config 파일에서 비활성화 됐기 때문에 빌트인 CrashLogger가 활성화되지 않습니다.", + "2": "처리되지 않은 예외 발생시 크래시 로그가 생성되지 않습니다.", + "3": "충돌이 발생한 이유나 원인을 파악하기가 거의 불가능하게 만듭니다.", + "4": "서버 안정성을 위해 활성화 하기를 적극 권장합니다." + }, + "conflicts": { + "1": "플러그인 <{}> 와 충돌이 발생해 Builtin CrashLogger 가 활성화 되지 않습니다.", + "2": "처리되지 않은 예외 발생시 크래시 로그가 생성되지 않습니다.", + "3": "충돌이 발생한 이유나 원인을 파악하기가 거의 불가능하게 만듭니다.", + "4": "CrashLogger이 서버 안정성을 보장해주는 중요한 컴포넌트이기 때문에", + "5": "플러그인 <{}> 을 사용할지 다시 한번 고려해보길 권장합니다." + } + }, + "init": { + "fail": { + "msg": "Builtin CrashLogger 시작에 실패했습니다.", + "tip": "처리되지 않은 예외 발생시 크래시 로그가 생성되지 않습니다." + } + } + }, + "addonsHelper": { + "error": { + "addonConfigNotFound": "애드온 config를 찾을 수 없습니다.", + "addonFileNotFound": "애드온 파일 \"{}\" 을(를) 찾을 수 없습니다.", + "addonNotFound": "애드온 \"{}\" 을(를) 찾을 수 없습니다.", + "outOfRange": "애드온 인덱스 {} 범위 초과", + "unsupportedFileType": "지원하지 않는 확장자의 파일이 발견되었습니다.", + "parsingEnabledAddonsList": "활성화된 애드온을 읽는 도중 에러 발생", + "noAddonInstalled": "아무 애드온도 설치돼 있지 않습니다.", + "installationAborted": "설치 프로세스가 취소됐습니다." + }, + "displayError": "오류: {}", + "removeAddonFromList": { + "fail": "Config 파일에서 애드온 <{}> 를 제거하지 못했습니다.", + "success": "config 파일에서 애드온 <{}> 를 제거했습니다." + }, + "addAddonToList": { + "invalidList": "{} 애드온 리스트 파일이 유효하지 않습니다. {} 경로로 백업하고 리스트 파일을 기본값으로 되돌려주세요.", + "fail": "애드온 {} 를 {} 로 넣지 못했습니다!", + "success": "애드온 <{}> 를 config 파일에 추가했습니다." + }, + "install": { + "installing": "애드온 <{}> 를 설치합니다...", + "error": { + "failToUncompress": { + "msg": "애드온 {} 의 압축을 풀지 못했습니다.", + "exitCode": "코드 종료: {}", + "programOutput": "프로그램 출력:\n{}" + } + } + }, + "uninstall": { + "success": "애드온 <{}> 가 제거되었습니다." + }, + "autoInstall": { + "tip": { + "dirCreated": "해당 경로가 생성되었습니다. 다음 실행 시점에 설치를 진행하려면 압축된 애드온 파일을 {} 에 넣어주세요." + }, + "working": "{} 개의 새로 발견된 애드온을 설치합니다...", + "installed": "애드온 {} 가 설치됐습니다.", + "installedCount": "{} 개의 애드온이 설치됐습니다." + }, + "cmd": { + "output": { + "list": { + "overview": "Addons: {} 개의 애드온이 설치됐습니다:" + } + } + } + }, + "loader": { + "loadScriptEngine": { + "error": { + "versionNotMatch": "<{}> 버전의 {} 스크립트 엔진이 LiteLoader 버전 <{}> 와 일치하지 않습니다." + }, + "success": "* {} 스크립트 엔진이 로드됐습니다." + }, + "loadDotNetEngine": { + "error": { + "versionNotMatch": "<{}> 버전의 LiteLoader.NET이 LiteLoader 버전 <{}> 와 일치하지 않습니다." + }, + "success": "* .NET 엔진이 로드됐습니다." + }, + "loadMain": { + "loadingPlugins": "네이티브 플러그인을 불러옵니다...", + "loadedShellLink": "ShellLinked 플러그인 <{} => {}> 로드됨", + "loadedPlugin": "네이티브 플러그인 <{name}> 이 로드됐습니다.", + "done": "{} 개의 네이티브 플러그인이 로드됐습니다.", + "start": "네이티브 플러그인을 불러옵니다." + }, + "initNodeJsDirectories": { + "created": "Node.js 런타임 경로를 찾을 수 없으므로 생성합니다." + } + }, + "notice": { + "newForum": "저희의 새로운 포럼이 공개됐습니다! -> {}", + "license": "LiteLoader는 {} 라이선스로 관리됩니다.", + "translateText": "LiteLoader 를 번역하고 개선할 수 있도록 도와주세요! -> {}" + }, + "pluginManager": { + "error": { + "invalidFileType": "{} 경로의 {} 타입 플러그인 파일이 유효하지 않음", + "noValidPluginFound": "{} 경로에서 유효한 플러그인을 찾을 수 없습니다!", + "failToRegisterPlugin": "{} 플러그인 등록에 실패했습니다!", + "hasBeenRegistered": "{} 라는 플러그인이 등록됐습니다.", + "failToLoadPlugin": "플러그인 {}를 로드하지 못했습니다!", + "pluginNotFound": "플러그인 <{}> 를 찾을 수 없습니다" + }, + "warning": { + "unloadDllNotFinished": "dll 플러그인 함수 언로드가 아직 끝나지 않았습니다.", + "reloadDllNotFinished": "dll 플러그인 함수 리로드가 아직 끝나지 않았습니다." + }, + "reloadPlugin": { + "fail": "플러그인 {} 를 리로드하지 못했습니다." + } + }, + "unzipNodeModules": { + "fail": "node_modules.tar 파일의 압축을 해제하지 못했습니다." + } + }, + "llse": { + "init": { + "llMoney": { + "notFound": "LLmoney.dll 이 발견되지 않았습니다. ScriptEngine의 Economy System이 동작하지 않습니다." + } + }, + "api": { + "ll": { + "require": { + "success": " - 요구되는 플러그인 로드에 성공했습니다. 로드됨: ", + "fail": " - 요구되는 플러그인을 로드하지 못했습니다. ", + "download": { + "success": " - 필요한 것들을 다운로드 했습니다! 경로: ", + "fail": " - 필요한 플러그인을 다운로드 하지 못했습니다! 코드: " + } + } + } + }, + "apiHelp": { + "parseJson": { + "fail": "JSON 파싱 오류" + } + }, + "loader": { + "loadDepends": { + "success": "Dependence {} 가 로드됐습니다.", + "fail": "Dependence '{}' 로드에 실패했습니다." + }, + "loadMain": { + "start": "{type} 플러그인을 로드합니다...", + "done": "{count} 개의 {type} 플러그인을 로드합니다...", + "nodejs": { + "installPack": { + "fail": "플러그인 팩 {} 로드에 실패했습니다. package.json 파일을 확인해주세요!", + "start": "Node.js 플러그인 팩 \"{path}\"을 발견했습니다. 설치를 시도합니다..." + }, + "ignored": "경로 {path} 에서 package.json 파일을 찾지 못하여 무시합니다." + }, + "loadedPlugin": "{type} 타입 플러그인 <{name}> 를 로드했습니다.", + "installPluginPack": { + "done": "{count} 개의 {type} 플러그인 팩이 로드됐습니다." + } + }, + "nodejs": { + "executeNpmInstall": { + "success": "Npm이 성공적으로 설치됐습니다.", + "start": "플러그인 {name} 에 대하여 \"npm install\" 명령어를 실행합니다.", + "fail": "에러 발생. 코드 종료: {code}" + }, + "register": { + "fail": "플러그인 {name} 을 등록하지 못했습니다." + } + } + } + }, + "permapi": { + "data": { + "process": { + "fail": "데이터 파일 처리에 실패했습니다: {}" + }, + "read": { + "fail": "{} 경로에 위치한 데이터 파일을 읽지 못했습니다." + }, + "save": { + "fail": "데이터 파일 저장에 실패했습니다: {}" + } + }, + "cmd": { + "error": { + "invalidCommand": "유효하지 않은 명령어입니다. 도움말을 보려면 '/help perm' 명령어를 입력해주세요.", + "internal": "내부 오류 발생. 나중에 다시 시도해주세요.", + "roleAlreadyExists": "역할이 이미 존재합니다.", + "permissionAlreadyExists": "권한이 이미 존재합니다.", + "invalidPermissionName": "유효하지 않은 권한 이름입니다.", + "roleNotFound": "역할을 찾을 수 없습니다.", + "permissionNotFound": "권한을 찾을 수 없습니다.", + "playerNotFound": "플레이어를 찾을 수 없습니다.", + "modifyMembersOfEveryone": "이 역할은 everyone 역할입니다. 멤버 수정이 불가능합니다.", + "jsonParsingError": "JSON 파싱 오류: {}", + "missingArgument": "인자가 빠졌음: {}", + "permissionDenied": "이 명령어를 사용할 권한이 없습니다." + }, + "output": { + "create": { + "role": { + "success": "역할 생성됨." + }, + "perm": { + "success": "권한 생성됨." + } + }, + "delete": { + "role": { + "success": "역할 삭제됨." + }, + "perm": { + "success": "권한 삭제됨." + } + }, + "list": { + "role": { + "none": "표시할 역할이 없습니다.", + "header": "§b§l역할 목록:", + "isMember": "§r(§e멤버§r)" + }, + "perm": { + "none": "표시할 권한이 없습니다.", + "header": "§b§l권한 목록:" + } + }, + "view": { + "player": { + "yourStatus": "§b§l당신의 현재 권한 상태입니다:", + "status": "§b§l유저 {}의 현재 권한 상태:", + "rolesTitle": "- §e역할:", + "permissionsTitle": "- §e권한:" + }, + "role": { + "header": "§b§l역할 정보:", + "info": { + "name": "+ §e이름§r: {roleName}", + "displayName": "+ §e표시되는 이름§r: {}", + "priority": "+ §e우선순위§r: {}", + "membersNone": "+ §e멤버§r: 없음", + "members": "+ §e멤버§r:", + "permissionsNone": "+ §e권한§r: 없음", + "permissions": "+ §e권한§r:" + }, + "note": { + "admin": "※ {}§r는 특별한 역할입니다. 모든 권한이 기본값으로 활성화됩니다.", + "everyone": "※ {}§r는 특별한 역할입니다. 모든 플레이어가 이 역할의 멤버가 됩니다." + }, + "enabled": "§a(활성화됨)§r", + "disabled": "§c(비활성화 됨)§r", + "enabledWithExtra": "§b(추가 제한 사항과 함께 활성화됨)§r" + }, + "perm": { + "header": "§b§l역할 정보:", + "info": { + "name": "+ §e이름§r: {permissionName}", + "desc": "+ §e설명§r: {}" + } + } + }, + "update": { + "role": { + "member": { + "add": { + "success": "멤버 {name}§r({xuid}) 가 역할 {roleDisplayName}§r에 추가되었습니다." + }, + "remove": { + "success": "멤버 {name}§r({xuid}) 가 역할 {roleDisplayName}에 제거되었습니다§r." + } + }, + "perm": { + "add": { + "success": "권한 {name}§r가 역할 {roleDisplayName}에 추가되었습니다§r." + }, + "remove": { + "success": "권한 {name}§r가 {roleDisplayName}§r에서 제거되었습니다." + }, + "set": { + "enabled": "§a활성화됨§r", + "disabled": "§c비활성화됨§r", + "success": "역할 {roleDisplayName}§r의 권한 {name}§r가 {enable} 상태로 설정되었습니다." + } + }, + "priority": { + "set": { + "success": "역할 {roleDisplayName}§r의 우선순위가 {priority}로 설정되었습니다." + } + }, + "displayName": { + "set": { + "success": "역할 <{roleName}§r>의 표시되는 이름이 {displayName}§r로 설정되었습니다." + } + } + }, + "player": { + "role": { + "add": { + "success": "플레이어 {name}§r({xuid})가 역할 {roleDisplayName}§r에 추가되었습니다." + }, + "remove": { + "success": "플레이어 {name}§r({xuid})가 역할 {roleDisplayName}§r에서 제거되었습니다." + } + } + } + }, + "noDesc": "[설명 없음]", + "permissionNameExamples": "권한 이름 예시: 'Namespace:PermissionName', 'a:b:c:d_e_f.g'" + } + } + } +} \ No newline at end of file diff --git a/RELEASE/plugins/LiteLoader/LangPack/ru.json b/assets/plugins/LiteLoader/LangPack/ru.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/ru.json rename to assets/plugins/LiteLoader/LangPack/ru.json diff --git a/RELEASE/plugins/LiteLoader/LangPack/th.json b/assets/plugins/LiteLoader/LangPack/th.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/th.json rename to assets/plugins/LiteLoader/LangPack/th.json diff --git a/assets/plugins/LiteLoader/LangPack/tr.json b/assets/plugins/LiteLoader/LangPack/tr.json new file mode 100644 index 0000000..1483316 --- /dev/null +++ b/assets/plugins/LiteLoader/LangPack/tr.json @@ -0,0 +1,440 @@ +{ + "base": { + "getDimName": { + "0": "Overworld", + "1": "Nether", + "2": "End", + "unknown": "Diğer boyut" + } + }, + "ll": { + "main": { + "checkRunningBDS": { + "detected": "Aynı yola sahip başka bir BDS sürecinin varlığı tespit edildi!", + "tip": "Bu, ağ bağlantı noktasının ve düzeyinin meşgul edilmesine neden olabilir", + "ask": "İşlemi PID {} ile sonlandırmak ister misiniz? (y =Evet, n =Hayır, e =Çıkış)" + }, + "fixAllowList": { + "removeEmptyAllowlist": "allowlist.json boş! Kaldırılıyor...", + "checkManually": "Her ikisi de; allowlist.json ve whitelist.json var ve boş değil. Lütfen bunları manuel olarak kontrol edin", + "renamed": "whitelist.json, allowlist.json olarak yeniden adlandırıldı" + }, + "warning": { + "inDevMode": "Şu anda geliştirici modunda!", + "betaVersion": "Şu anda bir beta sürümü kullanılıyor.", + "productionEnv": "LÜTFEN ÜRETİM ORTAMINDA KULLANMAYIN!", + "protocolVersionNotMatch": { + "1": "Protokol sürümü eşleşmiyor, hedef sürüm: {}, geçerli sürüm: {}.", + "2": "Bu büyük olasılıkla sunucuyu çökertecektir, lütfen BDS sürümüyle eşleşen LiteLoader'ı kullanın!" + } + }, + "bstats": { + "enabled": "bStats has been enabled, you can edit plugins/bStats/config.json to disable it" + } + }, + "antiAbnormalItem": { + "detected": "Oyuncu({}) eşya veri hatası!", + "itemInfo": "Eşya: {}" + }, + "cmd": { + "tpdim": { + "success": "{}, {}'ye ışınlandı ({:2f}, {:2f}, {:2f})", + "error": { + "noActorTeleported": "Hiçbir Varlık Işınlanamadı", + "noActorSpecified": "Hiçbir Varlık Belirtilmedi" + }, + "invalidDimid": "Geçersiz DimensionId: {}" + }, + "listPlugin": { + "overview": "Eklenti Listesi [{}]", + "tip": "* Daha fazla bilgi için \"ll list \" komutunu gönderin" + }, + "pluginInfo": { + "title": "Eklenti <{}>", + "error": { + "pluginNotFound": "Eklenti, <{}> bulunamadı!" + } + }, + "version": { + "msg": "Bedrock Dedicated Server {}\n- ve LiteLoaderBDS {}\n- Ağ Protokolü: {}" + }, + "help": { + "msg": "[Introduction]\nLiteLoaderBDS, Bedrock Dedicated Server'ın geliştirilmesini değiştirmek için resmi olmayan bir eklenti yükleyicidir.\nÇok sayıda API, güçlü bir event sistemi ve çok sayıda paketlenmiş yardımcı program arabirimi sağlar.\n[Github]\n--> https://github.com/LiteLDev/LiteLoaderBDS <--\nDaha fazla bilgi almak için github projemizi ziyaret edin ~" + }, + "loadPlugin": { + "success": "Eklenti, <{}> yüklendi.", + "fail": "Eklenti yüklenemedi {}" + }, + "unloadPlugin": { + "success": "Eklenti, <{}> kapatıldı.", + "fail": "Eklenti kapatılamadı <{}>" + }, + "reloadPlugin": { + "success": "Eklenti, <{}> yeniden yüklendi.", + "fail": "Eklenti yeniden yüklenemedi <{}>" + }, + "reloadAllPlugins": { + "success": "{} eklenti başarıyla yeniden yüklendi.", + "fail": "Herhangi bir eklenti yeniden yüklenemedi" + }, + "settings": { + "set": { + "success": "Ayarlar {}'dan {} olarak başarıyla ayarlandı." + }, + "get": { + "success": "Ayarlar, {} başarıyla alındı. Değer: " + }, + "delete": { + "success": "Ayarlar, {} başarıyla silindi.", + "error": { + "emptyKey": "JsonPointer boş olamaz!" + } + }, + "reload": { + "success": "Ayarlar başarıyla yeniden yüklendi." + }, + "save": { + "success": "Ayarlar başarıyla kaydedildi." + }, + "list": { + "success": "Ayarlar listesi:" + } + }, + "error": { + "noPathSpecified": "LiteLoader eklentisinin geçerli bir yolunu belirtmelisiniz!", + "noNameSpecified": "LiteLoader eklentisinin geçerli bir adını belirtmelisiniz!" + } + }, + "config": { + "save": { + "fail": "Konfigürasyon dosyası kaydedilemedi (oluşturulamadı)!" + }, + "creating": "LL Konfigürasyon Dosyası, <{}> bulunamadı. Konfigürasyon dosyası oluşturuluyor...", + "warning": { + "configOutdated": "LL Konfigürasyon dosyası, <{}> eski." + }, + "updating": "Konfigürasyon dosyası güncelleniyor..." + }, + "crashLogger": { + "existsingDebuggerDetected": "Mevcut hata ayıklayıcı algılandı. Yerleşik CrashLogger çalışmayacak.", + "wineDetected": "Wine Environment tespit edildi. Yerleşik CrashLogger çalışmayacak.", + "error": { + "cannotCreateDaemonProcess": "CrashLogger Arka Plan Programı İşlemi Oluşturulamadı!" + }, + "warning": { + "crashLoggerDisabled": { + "1": "Builtin CrashLogger konfigürasyonda devre dışı bırakıldığı için etkinleştirilmedi.", + "2": "İşlenemeyen özel durum oluştuğunda çökme raporu oluşturulamayacak,", + "3": "bu da çökmenin nedenini ve kaynağını bulmayı neredeyse imkansız hale getiriyor.", + "4": "Sunucu kararlılığını sağlamak için etkinleştirmenizi önemle öneririz" + }, + "conflicts": { + "1": "Builtin CrashLogger, <{}> eklentisiyle çakıştığı için etkinleştirilemedi", + "2": "İşlenmeyen özel durum oluştuğunda çökme raporu oluşturulayamayacak,", + "3": "bu da çökmenin nedenini ve kaynağını bulmayı neredeyse imkansız hale getiriyor.", + "4": "CrashLogger, sunucu kararlılığını sağlayan önemli bir bileşen olduğundan", + "5": "<{}> eklentisinin kullanımı hakkında iki kez düşünmenizi öneririz" + } + }, + "init": { + "fail": { + "msg": "Builtin CrashLogger başlatılamadı!", + "tip": "İşlenmeyen özel durum oluştuğunda çökme raporu oluşturulayamayacak." + } + } + }, + "addonsHelper": { + "error": { + "addonConfigNotFound": "Eklenti konfigürasyonu bulunamadı!", + "addonFileNotFound": "Eklenti dosyası, \"{}\" bulunamadı!", + "addonNotFound": "Eklenti, <{}> bulunamadı!", + "outOfRange": "Addon dizini {} aralık dışı", + "unsupportedFileType": "Desteklenmeyen dosya türü bulundu!", + "parsingEnabledAddonsList": "Etkin addon listesi ayrıştırılırken hata oluştu", + "noAddonInstalled": "Hiçbir addon yüklenemedi.", + "installationAborted": "Yükleme işlemi iptal edildi!" + }, + "displayError": "Hata: {}", + "removeAddonFromList": { + "fail": "Addon <{}> konfigürasyon dosyasından kaldırılamadı!", + "success": "Addon <{}> konfigürasyon dosyasından kaldırıldı." + }, + "addAddonToList": { + "invalidList": "Geçersiz Eklenti Listesi Dosyası {}, {} 'ye yedekle ve varsayılana sıfırla", + "fail": "{} eklentisi {} içine eklenemedi!", + "success": "Konfigürasyon dosyasına addon <{}> eklendi." + }, + "install": { + "installing": "Addon kuruluyor <{}>...", + "error": { + "failToUncompress": { + "msg": "Addon {} sıkıştırması açılamadı!", + "exitCode": "Çıkış Kodu: {}", + "programOutput": "Program Çıktısı:\n{}" + } + } + }, + "uninstall": { + "success": "Addon <{}> kaldırıldı." + }, + "autoInstall": { + "tip": { + "dirCreated": "Dizin oluşturuldu. Sıkıştırılmış Addon dosyalarını bir sonraki açılışta yüklenmek üzere {} konumuna taşıyabilirsiniz." + }, + "working": "{} tane yüklenecek yeni addon(lar) bulundu. Yükleniyor...", + "installed": "Addon {} yüklendi.", + "installedCount": "{} addon(lar) kuruldu." + }, + "cmd": { + "output": { + "list": { + "overview": "Addons: {} addon(lar) yüklendi:" + } + } + } + }, + "loader": { + "loadScriptEngine": { + "error": { + "versionNotMatch": "Script Engine için {} dosya sürümü <{}>, LiteLoader sürümü <{}> ile eşleşmiyor" + }, + "success": "* {} için ScriptEngine yüklendi." + }, + "loadDotNetEngine": { + "error": { + "versionNotMatch": "LiteLoader.NET dosyasının <{}> sürümü LiteLoader sürümüyle eşleşmiyor <{}>" + }, + "success": "* .NET Motoru yüklendi." + }, + "loadMain": { + "loadingPlugins": "Native eklentiler yükleniyor...", + "loadedShellLink": "ShellLinked eklenti <{} => {}> yüklendi", + "loadedPlugin": "Native eklenti <{name}> yüklendi", + "done": "{} native eklenti(ler) yüklendi.", + "start": "Native eklentiler yükleniyor..." + }, + "initNodeJsDirectories": { + "created": "Node.js runtime dizini bulunamadı, oluşturuldu." + } + }, + "notice": { + "newForum": "Yeni forumumuz yayında! -> {}", + "license": "LiteLoader {} altında lisanslanmıştır", + "translateText": "LL'deki metinleri çevirmemize ve geliştirmemize yardımcı olun -> {}" + }, + "pluginManager": { + "error": { + "invalidFileType": "Geçersiz eklenti dosya türü: {} Şunun içinde: {}", + "noValidPluginFound": "{} adresinde geçerli bir eklenti bulunamadı!", + "failToRegisterPlugin": "Eklenti {} kaydedilemedi!", + "hasBeenRegistered": "{} adında bir eklenti kaydedildi", + "failToLoadPlugin": "Eklenti, {} yüklenemedi!", + "pluginNotFound": "<{}> eklentisi bulunamadı" + }, + "warning": { + "unloadDllNotFinished": "Dll eklentilerinin kaldırma işlevi tamamlanamadı.", + "reloadDllNotFinished": "Dll eklentilerinin yeniden yükleme işlevi tamamlanamadı." + }, + "reloadPlugin": { + "fail": "Eklenti, {} yeniden yüklenemedi!" + } + }, + "unzipNodeModules": { + "fail": "node_modules.tar sıkıştırması açılamadı." + } + }, + "llse": { + "init": { + "llMoney": { + "notFound": "LLMoney.dll bulunamadı, ScriptEngine Ekonomi Sistemi çalışamayacak" + } + }, + "api": { + "ll": { + "require": { + "success": " - Eklenti gereksinimi başarıyla yüklendi. Yüklendi: ", + "fail": " - Eklenti gereksinim yüklemesi başarısız oldu", + "download": { + "success": " - Gereksinim başarıyla indirildi! Yol: ", + "fail": " - Eklenti gereksinimini indirme başarısız oldu! Kod: " + } + } + } + }, + "apiHelp": { + "parseJson": { + "fail": "JSON ayrıştırma hatası" + } + }, + "loader": { + "loadDepends": { + "success": "Bağımlılık {} yüklendi.", + "fail": "Bağımlılık yüklenemedi: {}" + }, + "loadMain": { + "start": "{type} eklentileri yükleniyor...", + "done": "{count} tane {type} eklenti(ler) yüklendi.", + "nodejs": { + "installPack": { + "fail": "Eklenti paketi {} yüklenemedi, lütfen package.json dosyanızı kontrol edin!", + "start": "Node.js eklenti paketi \"{path}\" bulundu! Yüklemeyi deneyin..." + }, + "ignored": "{path} dizininde package.json dosyası bulunamadı, yok sayıldı." + }, + "loadedPlugin": "{type} eklenti <{name}> yüklendi.", + "installPluginPack": { + "done": "{count} tane {type} eklenti paket(ler) indirildi." + } + }, + "nodejs": { + "executeNpmInstall": { + "success": "Npm başarıyla tamamlandı.", + "start": "Eklenti {name} için \"npm install\" çalıştırılıyor...", + "fail": "Hata oluştu. Çıkış kodu: {code}" + }, + "register": { + "fail": "Eklenti {name} kaydedilmesine yardımcı olunamıyor!" + } + } + } + }, + "permapi": { + "data": { + "process": { + "fail": "Veri dosyası işlenemedi: {}" + }, + "read": { + "fail": "Veri dosyası okunamadı: {}" + }, + "save": { + "fail": "Veri dosyası kaydedilemedi: {}" + } + }, + "cmd": { + "error": { + "invalidCommand": "Geçersiz komut. Yardım almak için '/help perm' yazın.", + "internal": "Dahili sunucu hatası. Lütfen daha sonra tekrar deneyiniz.", + "roleAlreadyExists": "Rol ismi zaten var.", + "permissionAlreadyExists": "Yetki zaten mevcut.", + "invalidPermissionName": "Geçersiz yetki ismi.", + "roleNotFound": "Rol bulunamadı.", + "permissionNotFound": "Yetki bulunamadı.", + "playerNotFound": "Oyuncu bulunamadı.", + "modifyMembersOfEveryone": "Rol herkesin rolüdür. Üyelerini değiştiremezsiniz.", + "jsonParsingError": "JSON ayrıştırma hatası: {}", + "missingArgument": "Eksik argüman: {}", + "permissionDenied": "Bu komutu kullanmak için yetkiniz yok." + }, + "output": { + "create": { + "role": { + "success": "Rol oluşturuldu." + }, + "perm": { + "success": "Yetki oluşturuldu." + } + }, + "delete": { + "role": { + "success": "Rol silindi." + }, + "perm": { + "success": "Yetki silindi." + } + }, + "list": { + "role": { + "none": "Görüntülenebilecek rol yok.", + "header": "§b§lRol Listesi:", + "isMember": "§r(§eÜye§r)" + }, + "perm": { + "none": "Görüntülenebilecek yetkiler yok.", + "header": "§b§lYetki Listesi:" + } + }, + "view": { + "player": { + "yourStatus": "§b§lGeçerli yetki durumunuz:", + "status": "§b§l{}'nın geçerli yetki durumu:", + "rolesTitle": "- §eRoller:", + "permissionsTitle": "- §eYetkiler:" + }, + "role": { + "header": "§b§lRol Bilgisi:", + "info": { + "name": "+ §eİsim§r: {roleName}", + "displayName": "+ §eGörünenİsim§r: {}", + "priority": "+ §eÖncelik§r: {}", + "membersNone": "+ §eÜyeler§r: Yok", + "members": "+ §eÜyeler§r:", + "permissionsNone": "+ §eYetkiler§r: Yok", + "permissions": "+ §eYetkiler§r:" + }, + "note": { + "admin": "※ {}§r özel bir roldür. Tüm izinler varsayılan olarak etkinleştirilecektir.", + "everyone": "※ {}§r özel bir roldür. Tüm oyuncular bu rolün üyesidir." + }, + "enabled": "§a(Aktif)§r", + "disabled": "§c(Devredışı)§r", + "enabledWithExtra": "§b(Ekstra kısıtlamalarla aktif)§r" + }, + "perm": { + "header": "§b§lYetki Bilgileri:", + "info": { + "name": "+ §eİsim§r: {permissionName}", + "desc": "+ §eAçıklama§r: {}" + } + } + }, + "update": { + "role": { + "member": { + "add": { + "success": "Üye {name}§r({xuid}) Rol {roleDisplayName}§r'ye eklendi." + }, + "remove": { + "success": "Üye {name}§r({xuid}) Rol {roleDisplayName}§r'den kaldırıldı." + } + }, + "perm": { + "add": { + "success": "Rol {roleDisplayName}§r'ye {name}§r yetkisi eklendi." + }, + "remove": { + "success": "Rol {roleDisplayName}§r'den {name}§r yetkisi kaldırıldı." + }, + "set": { + "enabled": "§aaktifleştirildi§r", + "disabled": "§cdeaktifleştirildi§r", + "success": "Rol {roleDisplayName}§r'nin {name}§r yetkisi {enable} olarak ayarlandı." + } + }, + "priority": { + "set": { + "success": "{roleDisplayName}§r rolünün önceliği, {priority} olarak ayarlandı." + } + }, + "displayName": { + "set": { + "success": "<{roleName}§r> rolünün görünen adı {displayName}§r olarak ayarlandı." + } + } + }, + "player": { + "role": { + "add": { + "success": "Oyuncu {name}§r({xuid}), {roleDisplayName}§r rolüne eklendi." + }, + "remove": { + "success": "Oyuncu {name}§r({xuid}) {roleDisplayName}§r rolünden çıkarıldı." + } + } + } + }, + "noDesc": "[Açıklama yok]", + "permissionNameExamples": "Yetki adı örnekleri: 'Namespace:PermissionName', 'a:b:c:d_e_f.g'" + } + } + } +} \ No newline at end of file diff --git a/RELEASE/plugins/LiteLoader/LangPack/vi.json b/assets/plugins/LiteLoader/LangPack/vi.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/vi.json rename to assets/plugins/LiteLoader/LangPack/vi.json diff --git a/RELEASE/plugins/LiteLoader/LangPack/zh_CN.json b/assets/plugins/LiteLoader/LangPack/zh_CN.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/zh_CN.json rename to assets/plugins/LiteLoader/LangPack/zh_CN.json diff --git a/RELEASE/plugins/LiteLoader/LangPack/zh_TW.json b/assets/plugins/LiteLoader/LangPack/zh_TW.json similarity index 100% rename from RELEASE/plugins/LiteLoader/LangPack/zh_TW.json rename to assets/plugins/LiteLoader/LangPack/zh_TW.json diff --git a/assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI b/assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI new file mode 160000 index 0000000..84923c2 --- /dev/null +++ b/assets/plugins/LiteLoader/ResourcePacks/LiteLoaderBDS-CUI @@ -0,0 +1 @@ +Subproject commit 84923c20dafedfe14a0c578361047e5c376f2d33 diff --git a/RELEASE/plugins/lib/DO NOT UPGRADE NPM IN THIS DIRECTORY!! b/assets/plugins/lib/DO NOT UPGRADE NPM IN THIS DIRECTORY!! similarity index 100% rename from RELEASE/plugins/lib/DO NOT UPGRADE NPM IN THIS DIRECTORY!! rename to assets/plugins/lib/DO NOT UPGRADE NPM IN THIS DIRECTORY!! diff --git a/RELEASE/plugins/lib/libcrypto-1_1-x64.dll b/assets/plugins/lib/libcrypto-1_1-x64.dll similarity index 100% rename from RELEASE/plugins/lib/libcrypto-1_1-x64.dll rename to assets/plugins/lib/libcrypto-1_1-x64.dll diff --git a/RELEASE/plugins/lib/libcrypto-3-x64.dll b/assets/plugins/lib/libcrypto-3-x64.dll similarity index 100% rename from RELEASE/plugins/lib/libcrypto-3-x64.dll rename to assets/plugins/lib/libcrypto-3-x64.dll diff --git a/RELEASE/plugins/lib/libnode.dll b/assets/plugins/lib/libnode.dll similarity index 100% rename from RELEASE/plugins/lib/libnode.dll rename to assets/plugins/lib/libnode.dll diff --git a/RELEASE/plugins/lib/libssl-1_1-x64.dll b/assets/plugins/lib/libssl-1_1-x64.dll similarity index 100% rename from RELEASE/plugins/lib/libssl-1_1-x64.dll rename to assets/plugins/lib/libssl-1_1-x64.dll diff --git a/RELEASE/plugins/lib/libssl-3-x64.dll b/assets/plugins/lib/libssl-3-x64.dll similarity index 100% rename from RELEASE/plugins/lib/libssl-3-x64.dll rename to assets/plugins/lib/libssl-3-x64.dll diff --git a/RELEASE/plugins/lib/lua5.4.3.dll b/assets/plugins/lib/lua5.4.3.dll similarity index 100% rename from RELEASE/plugins/lib/lua5.4.3.dll rename to assets/plugins/lib/lua5.4.3.dll diff --git a/RELEASE/plugins/lib/node_modules.tar b/assets/plugins/lib/node_modules.tar similarity index 100% rename from RELEASE/plugins/lib/node_modules.tar rename to assets/plugins/lib/node_modules.tar diff --git a/RELEASE/plugins/lib/package.json b/assets/plugins/lib/package.json similarity index 100% rename from RELEASE/plugins/lib/package.json rename to assets/plugins/lib/package.json diff --git a/RELEASE/plugins/lib/sqlite3.dll b/assets/plugins/lib/sqlite3.dll similarity index 100% rename from RELEASE/plugins/lib/sqlite3.dll rename to assets/plugins/lib/sqlite3.dll

owtvC6xeh(dPc@%U)`z4zW* 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 diff --git a/RELEASE/plugins/LiteLoader/PermissionAPI.dll b/RELEASE/plugins/LiteLoader/PermissionAPI.dll deleted file mode 100644 index 6930efe64188c6900f1b124bc5bee5657d2cf544..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 453632 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�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ⅅbKF*S`*%vg-4U{GLAP%_@2JL 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 Y9o5R8;h($ diff --git a/RELEASE/plugins/LiteLoader/PermissionAPI.pdb b/RELEASE/plugins/LiteLoader/PermissionAPI.pdb deleted file mode 100644 index 3901d3429d4d87985e19b5899dad9fa48f1220a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9605120 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 z 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