From be5446b91c17a3dbed880028741c430610bd59f1 Mon Sep 17 00:00:00 2001
From: SizableShrimp
Date: Sat, 17 Jul 2021 00:08:49 -0500
Subject: [PATCH] Update to 1.17
Update to Official classnames
Patchwork
Make the game compile and run
Merge in the new HUD overlay API
Merge in the new render properties API
PEEL
Use Gradle 7.2 snapshot to fix eclipse integration bug in 7.1, Would use 7.0 but FG needs 7.1 for some reason.
New FML installer
Update to 1.17.1
Co-authored-by: LexManos
Co-authored-by: SizableShrimp
Co-authored-by: cpw
Co-authored-by: Curle
Co-authored-by: Unnoen
Co-authored-by: covers1624
Co-authored-by: DaemonUmbra
Co-authored-by: gigaherz
Signed-off-by: SizableShrimp
---
.gitignore | 20 +-
Jenkinsfile | 6 +-
build.gradle | 1501 ++++++++++-------
buildSrc/.gitignore | 1 +
buildSrc/build.gradle | 4 +-
.../forge/tasks/CheckATs.groovy | 3 +-
.../forge/tasks/CheckExcs.groovy | 10 +-
.../forge/tasks/CheckPatches.groovy | 4 +-
.../forge/tasks/CheckSAS.groovy | 3 +-
.../forge/tasks/DownloadLibraries.groovy | 5 +-
.../forge/tasks/FieldCompareFinder.groovy | 17 +-
.../forge/tasks/InstallerJar.groovy | 44 +
.../forge/tasks/InstallerJson.groovy | 81 +
.../forge/tasks/LauncherJson.groovy | 71 +
.../minecraftforge/forge/tasks/Util.groovy | 13 +
fmlcore/build.gradle | 64 +
.../java/net/minecraftforge/fml/Bindings.java | 36 +
.../fml/CrashReportCallables.java | 32 +
.../minecraftforge/fml/DeferredWorkQueue.java | 54 +-
.../net/minecraftforge/fml/DistExecutor.java | 0
.../net/minecraftforge/fml/I18NParser.java | 6 +
.../minecraftforge/fml/IBindingsProvider.java | 12 +
.../minecraftforge/fml/ICrashCallable.java | 0
.../minecraftforge/fml/IExtensionPoint.java | 20 +-
.../minecraftforge/fml/IModLoadingState.java | 25 +
.../minecraftforge/fml/IModStateProvider.java | 7 +
.../fml/IModStateTransition.java | 87 +
.../fml/ISystemReportExtender.java | 6 +-
.../net/minecraftforge/fml/InterModComms.java | 24 +-
.../fml/LoadingFailedException.java | 0
.../java/net/minecraftforge/fml/Logging.java | 1 +
.../net/minecraftforge/fml/LogicalSide.java | 0
.../net/minecraftforge/fml/ModContainer.java | 21 +-
.../java/net/minecraftforge/fml/ModList.java | 37 +-
.../net/minecraftforge/fml/ModLoader.java | 129 +-
.../minecraftforge/fml/ModLoadingContext.java | 12 +-
.../fml/ModLoadingException.java | 4 +-
.../minecraftforge/fml/ModLoadingPhase.java | 9 +
.../minecraftforge/fml/ModLoadingStage.java | 51 +
.../minecraftforge/fml/ModLoadingState.java | 33 +
.../minecraftforge/fml/ModLoadingWarning.java | 2 +-
.../minecraftforge/fml/ModStateManager.java | 38 +
.../minecraftforge/fml/ModWorkManager.java | 0
.../net/minecraftforge/fml/OptionalMod.java | 0
.../fml/StartupMessageManager.java | 11 +
.../minecraftforge/fml/ThreadSelector.java | 20 +
.../minecraftforge/fml/VersionChecker.java | 37 +-
.../fml/config/ConfigFileTypeHandler.java | 2 +-
.../fml/config/ConfigTracker.java | 55 +-
.../fml/config/IConfigEvent.java | 24 +
.../fml/config/IConfigSpec.java | 21 +
.../minecraftforge/fml/config/ModConfig.java | 49 +-
.../fml/event}/IModBusEvent.java | 2 +-
.../fml/util}/CertificateHelper.java | 2 +-
.../fml/util}/EnhancedRuntimeException.java | 2 +-
.../fml/util}/LoaderException.java | 3 +-
.../fml/util}/LoaderExceptionModCrash.java | 2 +-
.../util}/ObfuscationReflectionHelper.java | 29 +-
.../fml/util}/thread/EffectiveSide.java | 2 +-
.../fml/util}/thread/SidedThreadGroup.java | 7 +-
.../fml/util}/thread/SidedThreadGroups.java | 2 +-
fmlloader/build.gradle | 80 +
.../asm/CapabilityInjectDefinalize.java | 0
.../common/asm/ObjectHolderDefinalize.java | 0
.../common/asm/RuntimeEnumExtender.java | 0
.../loading/AdvancedLogMessageAdapter.java | 0
.../fml/loading/BackgroundWaiter.java | 0
.../fml/loading/EarlyLoadingException.java | 0
.../minecraftforge/fml/loading/FMLConfig.java | 12 +-
.../fml/loading/FMLEnvironment.java | 0
.../minecraftforge/fml/loading/FMLLoader.java | 129 +-
.../minecraftforge/fml/loading/FMLPaths.java | 0
.../fml/loading/FMLServiceProvider.java | 42 +-
.../minecraftforge/fml/loading/FileUtils.java | 0
.../fml/loading/JarVersionLookupHandler.java | 0
.../fml/loading/LanguageLoadingProvider.java | 34 +-
.../fml/loading/LauncherVersion.java | 0
.../fml/loading/LibraryFinder.java | 19 +-
.../fml/loading/LoadingModList.java | 3 -
.../fml/loading/LogMarkers.java | 1 -
.../fml/loading}/MCPNamingService.java | 36 +-
.../fml/loading/MavenCoordinateResolver.java | 0
.../loading/ModDirTransformerDiscoverer.java | 29 +-
.../fml/loading/ModJarURLHandler.java | 14 +-
.../minecraftforge/fml/loading/ModSorter.java | 155 +-
.../fml/loading/RuntimeDistCleaner.java | 0
.../fml/loading/StringSubstitutor.java | 4 +-
.../fml/loading/StringUtils.java | 3 +-
.../fml/loading/TracingPrintStream.java | 0
.../fml/loading/VersionInfo.java | 17 +
.../fml/loading/VersionSupportMatrix.java | 22 +-
.../fml/loading/log4j/ForgeHighlight.java | 2 +-
.../moddiscovery/AbstractJarFileLocator.java | 67 +
.../moddiscovery/BackgroundScanHandler.java | 22 +-
.../fml/loading/moddiscovery/CoreModFile.java | 0
.../ExplodedDirectoryLocator.java | 90 +
.../moddiscovery/InvalidModFileException.java | 0
.../moddiscovery/InvalidModIdentifier.java | 0
.../moddiscovery/MavenDirectoryLocator.java | 8 +-
.../moddiscovery/MinecraftLocator.java | 118 ++
.../loading/moddiscovery/ModAnnotation.java | 0
.../moddiscovery/ModAnnotationVisitor.java | 0
.../loading/moddiscovery/ModClassVisitor.java | 0
.../loading/moddiscovery/ModDiscoverer.java | 78 +
.../loading/moddiscovery/ModFieldVisitor.java | 0
.../fml/loading/moddiscovery/ModFile.java | 62 +-
.../fml/loading/moddiscovery/ModFileInfo.java | 83 +-
.../loading/moddiscovery/ModFileParser.java | 14 +-
.../fml/loading/moddiscovery/ModInfo.java | 19 +-
.../loading/moddiscovery/ModJarMetadata.java | 96 ++
.../loading/moddiscovery/ModListHandler.java | 0
.../moddiscovery/ModMethodVisitor.java | 0
.../loading/moddiscovery/ModValidator.java | 88 +
.../moddiscovery/ModsFolderLocator.java | 15 +-
.../moddiscovery/NightConfigWrapper.java | 2 +-
.../fml/loading/moddiscovery/Scanner.java | 11 +-
.../loading/progress/ClientVisualization.java | 34 +-
.../progress/EarlyProgressVisualization.java | 20 +-
.../progress/StartupMessageManager.java | 0
.../fml/loading/targets}/ArgumentList.java | 8 +-
.../targets/CommonClientLaunchHandler.java | 68 +
.../targets/CommonDevLaunchHandler.java | 150 ++
.../loading/targets/CommonLaunchHandler.java | 81 +
.../targets/CommonServerLaunchHandler.java | 78 +
.../targets/CommonUserdevLaunchHandler.java | 62 +
.../targets/FMLClientDevLaunchHandler.java | 32 +-
.../targets/FMLClientLaunchHandler.java | 37 +
.../FMLClientUserdevLaunchHandler.java | 42 +
.../targets/FMLDataUserdevLaunchHandler.java | 45 +
.../targets/FMLServerDevLaunchHandler.java | 19 +
.../targets/FMLServerLaunchHandler.java | 40 +
.../FMLServerUserdevLaunchHandler.java | 20 +
.../targets/FMLUserdevLaunchHandler.java | 25 +-
.../targets/ForgeClientDevLaunchHandler.java | 38 +
.../targets/ForgeClientLaunchHandler.java | 39 +
.../ForgeClientUserdevLaunchHandler.java | 42 +
.../targets/ForgeDataDevLaunchHandler.java | 40 +
.../ForgeDataUserdevLaunchHandler.java | 45 +
.../targets/ForgeServerDevLaunchHandler.java | 19 +
.../targets/ForgeServerLaunchHandler.java | 42 +
.../ForgeServerUserdevLaunchHandler.java | 20 +
.../targets/ForgeUserdevLaunchHandler.java | 34 +
.../toposort/CyclePresentException.java | 0
.../StronglyConnectedComponentDetector.java | 0
.../fml/loading/toposort/TopologicalSort.java | 3 +-
.../net/minecraftforge/server/ServerMain.java | 0
.../resources/META-INF/defaultfmlconfig.toml | 0
...cpw.mods.cl.ModularURLHandler.IURLProvider | 0
...mods.modlauncher.api.ILaunchHandlerService | 16 +
...w.mods.modlauncher.api.INameMappingService | 1 +
...ods.modlauncher.api.ITransformationService | 0
...odlauncher.serviceapi.ILaunchPluginService | 0
...er.serviceapi.ITransformerDiscoveryService | 0
...necraftforge.forgespi.locating.IModLocator | 3 +-
fmlloader/src/main/resources/log4j2.xml | 68 +
fmlonly/src/fmlcommon | 1 +
.../fmlonly/FMLOnlyBindings.java | 42 +
.../fmlonlyclient/ClientModLoader.java | 205 +++
.../src/main/resources/META-INF/coremods.json | 3 +
.../net.minecraftforge.fml.IBindingsProvider | 1 +
.../net.minecraftforge.fml.IModStateProvider | 1 +
.../resources/coremods/load_fml_client.js | 39 +
...aller_logo.png => forge_installer_logo.png | Bin
gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 59536 bytes
gradle/wrapper/gradle-wrapper.properties | 2 +-
gradlew | 2 +-
javafmllanguage/build.gradle | 63 +
.../net/minecraftforge/fml/common/Mod.java | 5 +-
.../javafmlmod}/AutomaticEventSubscriber.java | 22 +-
.../FMLJavaModLanguageProvider.java | 26 +-
.../javafmlmod/FMLJavaModLoadingContext.java | 0
.../fml/javafmlmod/FMLModContainer.java | 16 +-
...rge.forgespi.language.IModLanguageProvider | 1 +
mclanguage/build.gradle | 63 +
.../MinecraftModContainer.java | 25 +
.../MinecraftModLanguageProvider.java | 29 +-
...rge.forgespi.language.IModLanguageProvider | 1 +
mdk/build.gradle | 76 +-
.../com/example/examplemod/ExampleMod.java | 16 +-
.../blaze3d/pipeline/RenderTarget.java.patch | 56 +
.../platform/GlStateManager.java.patch | 19 +-
.../mojang/blaze3d/platform/Window.java.patch | 19 +
.../blaze3d/vertex/BufferBuilder.java.patch | 26 +
.../blaze3d/vertex/IVertexBuilder.java.patch | 25 -
.../blaze3d/vertex/VertexConsumer.java.patch | 25 +
.../blaze3d/vertex/VertexFormat.java.patch | 14 +
.../vertex/VertexFormatElement.java.patch | 13 +
.../com/mojang/math/Matrix3f.java.patch | 13 +
.../com/mojang/math/Matrix4f.java.patch | 43 +
.../com/mojang/math/Transformation.java.patch | 31 +
.../com/mojang/math/Vector3f.java.patch | 19 +
.../com/mojang/math/Vector4f.java.patch | 18 +
.../RealmsGenericErrorScreen.java.patch | 22 +-
.../net/minecraft/CrashReport.java.patch | 53 +
.../minecraft/CrashReportCategory.java.patch | 38 +
.../net/minecraft/SharedConstants.java.patch | 10 +
.../minecraft/net/minecraft/Util.java.patch | 21 +
.../advancements/Advancement.java.patch | 12 +-
.../advancements/AdvancementList.java.patch | 6 +-
.../AdvancementManager.java.patch | 13 -
.../AdvancementRewards.java.patch | 12 +-
.../PlayerAdvancements.java.patch | 30 -
.../ItemPredicate.java.patch | 28 +-
.../minecraft/block/AbstractBlock.java.patch | 172 --
.../block/AbstractFireBlock.java.patch | 10 -
.../block/AbstractRailBlock.java.patch | 58 -
.../block/AbstractTopPlantBlock.java.patch | 15 -
.../minecraft/block/BambooBlock.java.patch | 16 -
.../minecraft/block/BeehiveBlock.java.patch | 20 -
.../net/minecraft/block/Block.java.patch | 171 --
.../net/minecraft/block/BlockState.java.patch | 11 -
.../net/minecraft/block/Blocks.java.patch | 36 -
.../net/minecraft/block/BushBlock.java.patch | 33 -
.../minecraft/block/CactusBlock.java.patch | 62 -
.../minecraft/block/CampfireBlock.java.patch | 20 -
.../net/minecraft/block/ChestBlock.java.patch | 12 -
.../block/ChorusFlowerBlock.java.patch | 47 -
.../net/minecraft/block/CocoaBlock.java.patch | 16 -
.../block/ComparatorBlock.java.patch | 19 -
.../net/minecraft/block/CropsBlock.java.patch | 39 -
.../minecraft/block/DeadBushBlock.java.patch | 11 -
.../block/DetectorRailBlock.java.patch | 11 -
.../block/DoublePlantBlock.java.patch | 10 -
.../minecraft/block/DropperBlock.java.patch | 11 -
.../block/EnchantingTableBlock.java.patch | 11 -
.../minecraft/block/FallingBlock.java.patch | 20 -
.../minecraft/block/FarmlandBlock.java.patch | 34 -
.../net/minecraft/block/FireBlock.java.patch | 136 --
.../minecraft/block/FlowerPotBlock.java.patch | 86 -
.../block/FlowingFluidBlock.java.patch | 85 -
.../block/ITileEntityProvider.java.patch | 10 -
.../minecraft/block/LeavesBlock.java.patch | 11 -
.../minecraft/block/MushroomBlock.java.patch | 11 -
.../block/NetherWartBlock.java.patch | 14 -
.../net/minecraft/block/NoteBlock.java.patch | 32 -
.../net/minecraft/block/OreBlock.java.patch | 19 -
.../minecraft/block/PistonBlock.java.patch | 55 -
.../PistonBlockStructureHelper.java.patch | 81 -
.../net/minecraft/block/PortalSize.java.patch | 11 -
.../block/PoweredRailBlock.java.patch | 57 -
.../net/minecraft/block/RailBlock.java.patch | 12 -
.../net/minecraft/block/RailState.java.patch | 57 -
.../block/RedstoneDiodeBlock.java.patch | 20 -
.../block/RedstoneOreBlock.java.patch | 18 -
.../block/RedstoneWireBlock.java.patch | 42 -
.../minecraft/block/SaplingBlock.java.patch | 18 -
.../minecraft/block/SeaGrassBlock.java.patch | 11 -
.../net/minecraft/block/SoundType.java.patch | 10 -
.../minecraft/block/SpawnerBlock.java.patch | 16 -
.../minecraft/block/SpongeBlock.java.patch | 11 -
.../block/SpreadableSnowyDirtBlock.java.patch | 10 -
.../minecraft/block/StairsBlock.java.patch | 39 -
.../net/minecraft/block/StemBlock.java.patch | 43 -
.../minecraft/block/SugarCaneBlock.java.patch | 51 -
.../block/SweetBerryBushBlock.java.patch | 13 -
.../net/minecraft/block/TNTBlock.java.patch | 67 -
.../minecraft/block/TallGrassBlock.java.patch | 11 -
.../minecraft/block/TrapDoorBlock.java.patch | 20 -
.../block/TripWireHookBlock.java.patch | 12 -
.../minecraft/block/TurtleEggBlock.java.patch | 11 -
.../net/minecraft/block/VineBlock.java.patch | 40 -
.../net/minecraft/block/WebBlock.java.patch | 11 -
.../net/minecraft/client/Camera.java.patch | 21 +
.../client/ClientBrandRetriever.java.patch | 10 +-
.../minecraft/client/GameSettings.java.patch | 64 -
.../minecraft/client/KeyMapping.java.patch | 196 +++
.../client/KeyboardHandler.java.patch | 68 +
.../client/KeyboardListener.java.patch | 67 -
.../minecraft/client/MainWindow.java.patch | 19 -
.../net/minecraft/client/Minecraft.java.patch | 745 ++++----
.../minecraft/client/MouseHandler.java.patch | 92 +
.../minecraft/client/MouseHelper.java.patch | 102 --
.../net/minecraft/client/Options.java.patch | 59 +
.../minecraft/client/Screenshot.java.patch | 29 +
.../client/ToggleKeyMapping.java.patch | 17 +
.../net/minecraft/client/User.java.patch | 49 +
.../client/audio/SoundEngine.java.patch | 50 -
.../client/audio/SoundHandler.java.patch | 14 -
.../client/color/block/BlockColors.java.patch | 42 +
.../client/color/item/ItemColors.java.patch | 33 +
.../AbstractClientPlayerEntity.java.patch | 10 -
.../player/ClientPlayerEntity.java.patch | 57 -
.../RemoteClientPlayerEntity.java.patch | 10 -
.../gui/DisplayEffectsScreen.java.patch | 33 -
.../net/minecraft/client/gui/Gui.java.patch | 55 +
.../minecraft/client/gui/IngameGui.java.patch | 63 -
.../client/gui/MapItemRenderer.java.patch | 10 -
.../client/gui/MapRenderer.java.patch | 10 +
.../gui/ResourceLoadProgressGui.java.patch | 26 -
.../client/gui/ScreenManager.java.patch | 25 -
.../advancements/AdvancementTabGui.java.patch | 37 -
.../AdvancementTabType.java.patch | 10 -
.../AdvancementsScreen.java.patch | 72 -
.../AbstractSelectionList.java.patch | 16 +
.../gui/components/AbstractWidget.java.patch | 42 +
.../components/BossHealthOverlay.java.patch | 23 +
.../components/DebugScreenOverlay.java.patch | 28 +
.../gui/overlay/BossOverlayGui.java.patch | 23 -
.../gui/overlay/DebugOverlayGui.java.patch | 28 -
.../gui/recipebook/RecipeBookGui.java.patch | 20 -
.../BiomeGeneratorTypeScreens.java.patch | 21 -
.../gui/screen/ControlsScreen.java.patch | 26 -
.../gui/screen/CreateWorldScreen.java.patch | 19 -
.../client/gui/screen/DeathScreen.java.patch | 10 -
.../gui/screen/EnchantmentScreen.java.patch | 28 -
.../gui/screen/LanguageScreen.java.patch | 11 -
.../gui/screen/MainMenuScreen.java.patch | 68 -
.../gui/screen/MultiplayerScreen.java.patch | 14 -
.../gui/screen/OptionsScreen.java.patch | 15 -
.../gui/screen/PackLoadingManager.java.patch | 22 -
.../client/gui/screen/PackScreen.java.patch | 11 -
.../client/gui/screen/Screen.java.patch | 94 --
.../gui/screen/ServerSelectionList.java.patch | 11 -
.../gui/screen/WorldOptionsScreen.java.patch | 19 -
.../inventory/ContainerScreen.java.patch | 173 --
.../inventory/CreativeScreen.java.patch | 278 ---
.../client/gui/screens/DeathScreen.java.patch | 10 +
.../screens/LanguageSelectScreen.java.patch | 11 +
.../gui/screens/LoadingOverlay.java.patch | 26 +
.../client/gui/screens/MenuScreens.java.patch | 25 +
.../gui/screens/OptionsScreen.java.patch | 15 +
.../client/gui/screens/Screen.java.patch | 142 ++
.../client/gui/screens/TitleScreen.java.patch | 68 +
.../advancements/AdvancementTab.java.patch | 37 +
.../AdvancementTabType.java.patch | 10 +
.../AdvancementsScreen.java.patch | 70 +
.../screens/controls/ControlList.java.patch | 60 +
.../controls/ControlsScreen.java.patch | 26 +
.../AbstractContainerScreen.java.patch | 185 ++
.../CreativeModeInventoryScreen.java.patch | 279 +++
.../EffectRenderingInventoryScreen.java.patch | 34 +
.../inventory/EnchantmentScreen.java.patch | 28 +
.../JoinMultiplayerScreen.java.patch | 14 +
.../ServerSelectionList.java.patch | 11 +
.../packs/PackSelectionModel.java.patch | 23 +
.../packs/PackSelectionScreen.java.patch | 11 +
.../recipebook/RecipeBookComponent.java.patch | 20 +
.../CreateWorldScreen.java.patch | 19 +
.../WorldGenSettingsComponent.java.patch | 19 +
.../worldselection/WorldPreset.java.patch | 21 +
.../client/gui/widget/Widget.java.patch | 41 -
.../gui/widget/list/AbstractList.java.patch | 16 -
.../gui/widget/list/KeyBindingList.java.patch | 60 -
.../net/minecraft/client/main/Main.java.patch | 18 +-
.../model/geom/LayerDefinitions.java.patch | 10 +
.../multiplayer/ClientChunkCache.java.patch | 18 +
.../ClientChunkProvider.java.patch | 18 -
...ientHandshakePacketListenerImpl.java.patch | 18 +
.../client/multiplayer/ClientLevel.java.patch | 72 +
.../ClientPacketListener.java.patch | 109 ++
.../MultiPlayerGameMode.java.patch | 164 ++
.../multiplayer/PlayerController.java.patch | 174 --
.../client/multiplayer/PlayerInfo.java.patch | 10 +
.../client/multiplayer/ServerData.java.patch | 10 +-
.../multiplayer/ServerStatusPinger.java.patch | 10 +
.../client/network/ServerPinger.java.patch | 10 -
.../ClientHandshakeNetHandler.java.patch | 10 -
.../login/ClientLoginNetHandler.java.patch | 18 -
.../play/ClientPlayNetHandler.java.patch | 120 --
.../network/play/NetworkPlayerInfo.java.patch | 10 -
.../particle/DiggingParticle.java.patch | 25 -
.../client/particle/Particle.java.patch | 20 +-
.../client/particle/ParticleEngine.java.patch | 90 +
.../particle/ParticleManager.java.patch | 97 --
.../particle/TerrainParticle.java.patch | 17 +
.../player/AbstractClientPlayer.java.patch | 10 +
.../client/player/LocalPlayer.java.patch | 58 +
.../client/player/RemotePlayer.java.patch | 10 +
.../renderer/ActiveRenderInfo.java.patch | 19 -
.../client/renderer/Atlases.java.patch | 25 -
.../renderer/BlockModelRenderer.java.patch | 125 --
.../renderer/BlockModelShapes.java.patch | 18 -
.../BlockRendererDispatcher.java.patch | 86 -
.../client/renderer/BufferBuilder.java.patch | 26 -
.../DimensionSpecialEffects.java.patch} | 18 +-
.../client/renderer/EffectInstance.java.patch | 22 +
.../renderer/FirstPersonRenderer.java.patch | 45 -
.../renderer/FluidBlockRenderer.java.patch | 107 --
.../client/renderer/FogRenderer.java.patch | 72 +-
.../client/renderer/GameRenderer.java.patch | 78 +-
.../renderer/ItemBlockRenderTypes.java.patch | 103 ++
.../renderer/ItemInHandRenderer.java.patch | 36 +
.../renderer/ItemModelMesher.java.patch | 12 -
.../renderer/ItemModelShaper.java.patch | 12 +
.../client/renderer/ItemRenderer.java.patch | 92 -
.../client/renderer/LevelRenderer.java.patch | 212 +++
.../client/renderer/LightTexture.java.patch | 10 +-
.../renderer/OverlayRenderer.java.patch | 48 -
.../client/renderer/PostChain.java.patch | 12 +
.../client/renderer/RenderType.java.patch | 16 -
.../renderer/RenderTypeLookup.java.patch | 103 --
.../renderer/ScreenEffectRenderer.java.patch | 48 +
.../client/renderer/Sheets.java.patch | 25 +
.../client/renderer/WorldRenderer.java.patch | 215 ---
.../block/BlockModelShaper.java.patch | 18 +
.../block/BlockRenderDispatcher.java.patch | 77 +
.../block/LiquidBlockRenderer.java.patch | 103 ++
.../block/ModelBlockRenderer.java.patch | 106 ++
.../renderer/block/model/BakedQuad.java.patch | 23 +
.../block/model/BlockModel.java.patch | 89 +
.../block/model/FaceBakery.java.patch | 21 +
.../block/model/ItemModelGenerator.java.patch | 10 +
.../block/model/ItemOverrides.java.patch | 46 +
.../block/model/ItemTransform.java.patch | 14 +
.../block/model/ItemTransforms.java.patch | 26 +
.../block/model/MultiVariant.java.patch | 11 +
.../BlockEntityRenderers.java.patch | 11 +
.../blockentity/ChestRenderer.java.patch | 21 +
.../blockentity/PistonHeadRenderer.java.patch | 15 +
.../chunk/ChunkRenderDispatcher.java.patch | 201 ++-
.../renderer/color/BlockColors.java.patch | 42 -
.../renderer/color/ItemColors.java.patch | 33 -
.../entity/EntityRenderDispatcher.java.patch | 28 +
.../renderer/entity/EntityRenderer.java.patch | 28 +-
.../entity/EntityRendererManager.java.patch | 38 -
.../entity/FallingBlockRenderer.java.patch | 18 +-
.../entity/ItemEntityRenderer.java.patch | 68 +
.../entity/ItemFrameRenderer.java.patch | 63 +-
.../renderer/entity/ItemRenderer.java.patch | 133 +-
.../entity/LivingEntityRenderer.java.patch | 39 +
.../renderer/entity/LivingRenderer.java.patch | 39 -
.../renderer/entity/PlayerRenderer.java.patch | 12 -
.../entity/layers/BipedArmorLayer.java.patch | 91 -
.../entity/layers/ElytraLayer.java.patch | 40 +-
.../layers/HumanoidArmorLayer.java.patch | 91 +
.../entity/player/PlayerRenderer.java.patch | 12 +
.../renderer/item/ItemProperties.java.patch | 115 ++
.../renderer/model/BakedQuad.java.patch | 27 -
.../renderer/model/BlockModel.java.patch | 88 -
.../renderer/model/FaceBakery.java.patch | 21 -
.../renderer/model/IBakedModel.java.patch | 28 -
.../renderer/model/IModelTransform.java.patch | 11 -
.../renderer/model/IUnbakedModel.java.patch | 11 -
.../model/ItemCameraTransforms.java.patch | 26 -
.../model/ItemModelGenerator.java.patch | 10 -
.../model/ItemOverrideList.java.patch | 28 -
.../model/ItemTransformVec3f.java.patch | 14 -
.../renderer/model/ModelBakery.java.patch | 107 --
.../renderer/model/ModelManager.java.patch | 59 -
.../model/MultipartBakedModel.java.patch | 86 -
.../model/SimpleBakedModel.java.patch | 13 -
.../model/UVTransformationUtil.java.patch | 26 -
.../renderer/model/VariantList.java.patch | 11 -
.../model/WeightedBakedModel.java.patch | 51 -
.../texture/AbstractTexture.java.patch | 23 +
.../renderer/texture/AtlasTexture.java.patch | 37 -
.../renderer/texture/NativeImage.java.patch | 29 -
.../renderer/texture/Stitcher.java.patch | 28 +-
.../renderer/texture/Texture.java.patch | 23 -
.../renderer/texture/TextureAtlas.java.patch | 37 +
.../texture/TextureAtlasSprite.java.patch | 29 +-
.../texture/TextureManager.java.patch | 12 +-
.../ChestTileEntityRenderer.java.patch | 21 -
.../PistonTileEntityRenderer.java.patch | 14 -
.../SignTileEntityRenderer.java.patch | 11 -
.../TileEntityRendererDispatcher.java.patch | 12 -
.../renderer/vertex/VertexFormat.java.patch | 14 -
.../vertex/VertexFormatElement.java.patch | 15 -
.../resources/ClientLanguageMap.java.patch | 12 -
.../FoliageColorReloadListener.java.patch | 12 -
.../GrassColorReloadListener.java.patch | 12 -
.../client/resources/I18n.java.patch | 10 -
.../resources/JsonReloadListener.java.patch | 11 -
.../client/resources/Language.java.patch | 24 -
.../resources/LanguageManager.java.patch | 12 -
.../language/ClientLanguage.java.patch | 12 +
.../client/resources/language/I18n.java.patch | 10 +
.../language/LanguageInfo.java.patch | 24 +
.../language/LanguageManager.java.patch | 12 +
.../resources/model/BakedModel.java.patch | 28 +
.../resources/model/ModelBakery.java.patch | 107 ++
.../resources/model/ModelManager.java.patch | 47 +
.../resources/model/ModelState.java.patch | 11 +
.../model/MultiPartBakedModel.java.patch | 86 +
.../model/SimpleBakedModel.java.patch | 13 +
.../resources/model/UnbakedModel.java.patch | 11 +
.../model/WeightedBakedModel.java.patch | 55 +
.../SearchRegistry.java.patch} | 6 +-
.../client/server/IntegratedServer.java.patch | 22 +
.../client/settings/KeyBinding.java.patch | 196 ---
.../settings/ToggleableKeyBinding.java.patch | 17 -
.../client/shader/Framebuffer.java.patch | 61 -
.../client/shader/ShaderGroup.java.patch | 12 -
.../client/shader/ShaderInstance.java.patch | 22 -
.../client/sounds/SoundEngine.java.patch | 50 +
.../client/world/ClientWorld.java.patch | 72 -
.../net/minecraft/command/Commands.java.patch | 27 -
.../arguments/ArgumentTypes.java.patch | 11 -
.../arguments/BlockStateParser.java.patch | 20 -
.../arguments/EntitySelectorParser.java.patch | 20 -
.../command/impl/LocateCommand.java.patch | 21 -
.../impl/SpreadPlayersCommand.java.patch | 12 -
.../command/impl/TeleportCommand.java.patch | 20 -
.../minecraft/commands/Commands.java.patch | 27 +
.../selector/EntitySelectorParser.java.patch | 20 +
.../synchronization/ArgumentTypes.java.patch | 11 +
.../minecraft/core/MappedRegistry.java.patch | 12 +
.../net/minecraft/core/Registry.java.patch | 213 +++
.../minecraft/core/RegistryAccess.java.patch | 11 +
.../dispenser/DispenseItemBehavior.java.patch | 16 +
.../particles/BlockParticleOption.java.patch | 18 +
.../particles/ItemParticleOption.java.patch | 11 +
.../core/particles/ParticleType.java.patch | 11 +
.../core/particles/ParticleTypes.java.patch | 10 +
.../minecraft/crash/CrashReport.java.patch | 53 -
.../crash/CrashReportCategory.java.patch | 38 -
.../data/BlockTagsProvider.java.patch | 15 -
.../data/BuiltinRegistries.java.patch | 21 +
.../minecraft/data/DataGenerator.java.patch | 34 +-
.../minecraft/data/DirectoryCache.java.patch | 13 -
.../data/EntityTypeTagsProvider.java.patch | 15 -
.../data/FluidTagsProvider.java.patch | 15 -
.../net/minecraft/data/HashCache.java.patch | 13 +
.../data/ItemTagsProvider.java.patch | 16 -
.../data/LootTableProvider.java.patch | 47 -
.../net/minecraft/data/Main.java.patch | 16 +-
.../minecraft/data/RecipeProvider.java.patch | 28 -
.../minecraft/data/TagsProvider.java.patch | 106 --
.../minecraft/data/loot/BlockLoot.java.patch | 37 +
.../data/loot/BlockLootTables.java.patch | 37 -
.../minecraft/data/loot/EntityLoot.java.patch | 44 +
.../data/loot/EntityLootTables.java.patch | 44 -
.../data/loot/LootTableProvider.java.patch | 47 +
.../data/recipes/RecipeProvider.java.patch | 28 +
.../data/tags/BlockTagsProvider.java.patch | 15 +
.../tags/EntityTypeTagsProvider.java.patch | 15 +
.../data/tags/FluidTagsProvider.java.patch | 15 +
.../data/tags/ItemTagsProvider.java.patch | 16 +
.../data/tags/TagsProvider.java.patch | 119 ++
.../data/worldgen/biome/Biomes.java.patch | 11 +
.../IDispenseItemBehavior.java.patch | 14 -
.../enchantment/Enchantment.java.patch | 61 -
.../enchantment/EnchantmentHelper.java.patch | 29 -
.../enchantment/EnchantmentType.java.patch | 29 -
.../enchantment/Enchantments.java.patch | 10 -
.../FrostWalkerEnchantment.java.patch | 15 -
.../net/minecraft/entity/Entity.java.patch | 357 ----
.../entity/EntityClassification.java.patch | 37 -
.../EntitySpawnPlacementRegistry.java.patch | 30 -
.../minecraft/entity/EntityType.java.patch | 147 --
.../minecraft/entity/FlyingEntity.java.patch | 21 -
.../minecraft/entity/ICrossbowUser.java.patch | 14 -
.../minecraft/entity/IShearable.java.patch | 14 -
.../minecraft/entity/LivingEntity.java.patch | 552 ------
.../net/minecraft/entity/MobEntity.java.patch | 52 -
.../entity/ai/attributes/Attribute.java.patch | 10 -
.../AttributeModifierMap.java.patch | 33 -
.../GlobalEntityTypeAttributes.java.patch | 27 -
.../brain/memory/MemoryModuleType.java.patch | 11 -
.../ai/brain/schedule/Activity.java.patch | 11 -
.../ai/brain/schedule/Schedule.java.patch | 11 -
.../ai/brain/sensor/SensorType.java.patch | 11 -
.../entity/ai/brain/task/FarmTask.java.patch | 23 -
.../ai/brain/task/ShootTargetTask.java.patch | 38 -
.../entity/ai/goal/BreakBlockGoal.java.patch | 11 -
.../entity/ai/goal/BreakDoorGoal.java.patch | 11 -
.../entity/ai/goal/EatGrassGoal.java.patch | 20 -
.../entity/ai/goal/MeleeAttackGoal.java.patch | 46 -
.../ai/goal/RangedBowAttackGoal.java.patch | 20 -
.../goal/RangedCrossbowAttackGoal.java.patch | 29 -
.../ai/goal/RunAroundLikeCrazyGoal.java.patch | 11 -
.../goal/TriggerSkeletonTrapGoal.java.patch | 22 -
.../entity/boss/WitherEntity.java.patch | 37 -
.../boss/dragon/EnderDragonEntity.java.patch | 29 -
.../dragon/EnderDragonPartEntity.java.patch | 18 -
.../effect/LightningBoltEntity.java.patch | 33 -
.../entity/item/ArmorStandEntity.java.patch | 11 -
.../entity/item/BoatEntity.java.patch | 28 -
.../entity/item/EnderPearlEntity.java.patch | 39 -
.../item/ExperienceOrbEntity.java.patch | 36 -
.../entity/item/FallingBlockEntity.java.patch | 11 -
.../entity/item/HangingEntity.java.patch | 11 -
.../entity/item/ItemEntity.java.patch | 127 --
.../entity/item/LeashKnotEntity.java.patch | 10 -
.../entity/item/PaintingType.java.patch | 11 -
.../AbstractMinecartEntity.java.patch | 266 ---
.../CommandBlockMinecartEntity.java.patch | 11 -
.../ContainerMinecartEntity.java.patch | 67 -
.../minecart/FurnaceMinecartEntity.java.patch | 23 -
.../item/minecart/MinecartEntity.java.patch | 11 -
.../minecart/SpawnerMinecartEntity.java.patch | 15 -
.../AbstractVillagerEntity.java.patch | 14 -
.../villager/VillagerEntity.java.patch | 38 -
.../villager/VillagerProfession.java.patch | 11 -
.../monster/AbstractSkeletonEntity.java.patch | 23 -
.../entity/monster/CreeperEntity.java.patch | 11 -
.../entity/monster/EndermanEntity.java.patch | 80 -
.../entity/monster/EvokerEntity.java.patch | 11 -
.../entity/monster/HoglinEntity.java.patch | 19 -
.../monster/IllusionerEntity.java.patch | 14 -
.../entity/monster/MagmaCubeEntity.java.patch | 10 -
.../entity/monster/PillagerEntity.java.patch | 11 -
.../entity/monster/RavagerEntity.java.patch | 11 -
.../entity/monster/ShulkerEntity.java.patch | 40 -
.../monster/SilverfishEntity.java.patch | 20 -
.../entity/monster/SlimeEntity.java.patch | 45 -
.../entity/monster/SpiderEntity.java.patch | 16 -
.../entity/monster/ZombieEntity.java.patch | 81 -
.../monster/ZombieVillagerEntity.java.patch | 20 -
.../monster/ZombifiedPiglinEntity.java.patch | 10 -
.../piglin/AbstractPiglinEntity.java.patch | 19 -
.../monster/piglin/PiglinEntity.java.patch | 29 -
.../monster/piglin/PiglinTasks.java.patch | 47 -
.../piglin/StartAdmiringItemTask.java.patch | 11 -
.../entity/passive/AnimalEntity.java.patch | 20 -
.../entity/passive/BeeEntity.java.patch | 19 -
.../entity/passive/CatEntity.java.patch | 11 -
.../entity/passive/FoxEntity.java.patch | 29 -
.../entity/passive/IronGolemEntity.java.patch | 24 -
.../entity/passive/MooshroomEntity.java.patch | 66 -
.../entity/passive/OcelotEntity.java.patch | 11 -
.../entity/passive/ParrotEntity.java.patch | 11 -
.../entity/passive/PigEntity.java.patch | 19 -
.../entity/passive/PolarBearEntity.java.patch | 10 -
.../entity/passive/RabbitEntity.java.patch | 11 -
.../entity/passive/SheepEntity.java.patch | 48 -
.../entity/passive/SnowGolemEntity.java.patch | 60 -
.../entity/passive/WolfEntity.java.patch | 19 -
.../horse/AbstractHorseEntity.java.patch | 55 -
.../passive/horse/HorseEntity.java.patch | 11 -
.../entity/player/PlayerEntity.java.patch | 412 -----
.../entity/player/PlayerInventory.java.patch | 30 -
.../player/ServerPlayerEntity.java.patch | 238 ---
.../projectile/AbstractArrowEntity.java.patch | 20 -
.../DamagingProjectileEntity.java.patch | 11 -
.../projectile/FireballEntity.java.patch | 11 -
.../FireworkRocketEntity.java.patch | 16 -
.../projectile/FishingBobberEntity.java.patch | 74 -
.../projectile/LlamaSpitEntity.java.patch | 11 -
.../projectile/ProjectileHelper.java.patch | 26 -
.../projectile/ShulkerBulletEntity.java.patch | 11 -
.../projectile/SmallFireballEntity.java.patch | 11 -
.../projectile/ThrowableEntity.java.patch | 11 -
.../projectile/WitherSkullEntity.java.patch | 20 -
.../minecraft/fluid/FlowingFluid.java.patch | 20 -
.../net/minecraft/fluid/FluidState.java.patch | 19 -
.../net/minecraft/fluid/LavaFluid.java.patch | 29 -
.../net/minecraft/fluid/WaterFluid.java.patch | 11 -
.../AbstractFurnaceContainer.java.patch | 11 -
.../container/BeaconContainer.java.patch | 15 -
.../BrewingStandContainer.java.patch | 29 -
.../inventory/container/Container.java.patch | 43 -
.../container/ContainerType.java.patch | 26 -
.../container/CraftingResultSlot.java.patch | 21 -
.../container/EnchantmentContainer.java.patch | 78 -
.../container/FurnaceResultSlot.java.patch | 9 -
.../container/GrindstoneContainer.java.patch | 21 -
.../container/PlayerContainer.java.patch | 11 -
.../container/RecipeBookContainer.java.patch | 13 -
.../container/RepairContainer.java.patch | 51 -
.../net/minecraft/item/ArmorItem.java.patch | 11 -
.../net/minecraft/item/ArrowItem.java.patch | 12 -
.../net/minecraft/item/AxeItem.java.patch | 38 -
.../net/minecraft/item/BlockItem.java.patch | 49 -
.../minecraft/item/BoneMealItem.java.patch | 38 -
.../net/minecraft/item/BowItem.java.patch | 50 -
.../net/minecraft/item/BucketItem.java.patch | 87 -
.../minecraft/item/ChorusFruitItem.java.patch | 13 -
.../net/minecraft/item/DyeColor.java.patch | 45 -
.../item/DyeableHorseArmorItem.java.patch | 10 -
.../net/minecraft/item/ElytraItem.java.patch | 20 -
.../minecraft/item/FilledMapItem.java.patch | 19 -
.../minecraft/item/FishBucketItem.java.patch | 31 -
.../net/minecraft/item/Food.java.patch | 73 -
.../net/minecraft/item/HoeItem.java.patch | 33 -
.../minecraft/item/HorseArmorItem.java.patch | 27 -
.../net/minecraft/item/Item.java.patch | 155 --
.../net/minecraft/item/ItemGroup.java.patch | 133 --
.../net/minecraft/item/ItemStack.java.patch | 247 ---
.../net/minecraft/item/Items.java.patch | 10 -
.../minecraft/item/MerchantOffer.java.patch | 20 -
.../minecraft/item/MilkBucketItem.java.patch | 33 -
.../minecraft/item/MinecartItem.java.patch | 20 -
.../minecraft/item/MusicDiscItem.java.patch | 49 -
.../net/minecraft/item/PickaxeItem.java.patch | 33 -
.../net/minecraft/item/Rarity.java.patch | 21 -
.../net/minecraft/item/ShearsItem.java.patch | 28 -
.../net/minecraft/item/ShovelItem.java.patch | 34 -
.../net/minecraft/item/ToolItem.java.patch | 10 -
.../minecraft/item/WallOrFloorItem.java.patch | 12 -
.../crafting/BannerDuplicateRecipe.java.patch | 13 -
.../crafting/BookCloningRecipe.java.patch | 13 -
.../CookingRecipeSerializer.java.patch | 30 -
.../item/crafting/IRecipe.java.patch | 15 -
.../item/crafting/IRecipePlacer.java.patch | 17 -
.../crafting/IRecipeSerializer.java.patch | 19 -
.../item/crafting/Ingredient.java.patch | 106 --
.../item/crafting/RecipeManager.java.patch | 21 -
.../item/crafting/RepairItemRecipe.java.patch | 38 -
.../item/crafting/ShapedRecipe.java.patch | 80 -
.../item/crafting/ShapelessRecipe.java.patch | 58 -
.../ShulkerBoxColoringRecipe.java.patch | 38 -
.../item/crafting/SingleItemRecipe.java.patch | 11 -
.../item/crafting/SmithingRecipe.java.patch | 11 -
.../SpecialRecipeSerializer.java.patch | 11 -
.../net/minecraft/locale/Language.java.patch | 34 +
.../net/minecraft/loot/LootContext.java.patch | 68 -
.../loot/LootParameterSets.java.patch | 18 -
.../net/minecraft/loot/LootPool.java.patch | 119 --
.../net/minecraft/loot/LootTable.java.patch | 103 --
.../loot/LootTableManager.java.patch | 13 -
.../RandomChanceWithLooting.java.patch | 16 -
.../functions/LootingEnchantBonus.java.patch | 11 -
.../minecraft/loot/functions/Smelt.java.patch | 11 -
.../net/minecraft/nbt/CompoundNBT.java.patch | 32 -
.../net/minecraft/nbt/CompoundTag.java.patch | 32 +
.../nbt/CompressedStreamTools.java.patch | 16 -
...ker.java.patch => NbtAccounter.java.patch} | 10 +-
.../net/minecraft/nbt/NbtIo.java.patch | 16 +
.../net/minecraft/nbt/StringNBT.java.patch | 11 -
.../net/minecraft/nbt/StringTag.java.patch | 11 +
.../network/CompressionEncoder.java.patch | 24 +
.../minecraft/network/Connection.java.patch | 60 +
.../network/FriendlyByteBuf.java.patch | 47 +
.../NettyCompressionEncoder.java.patch | 24 -
.../network/NettyPacketEncoder.java.patch | 11 -
.../network/NetworkManager.java.patch | 60 -
.../network/NetworkSystem.java.patch | 34 -
.../minecraft/network/PacketBuffer.java.patch | 47 -
.../network/PacketEncoder.java.patch | 11 +
.../network/ServerStatusResponse.java.patch | 109 --
.../minecraft/network/chat/Style.java.patch | 21 +
.../chat/TranslatableComponent.java.patch | 13 +
.../datasync/DataSerializers.java.patch | 22 -
.../datasync/EntityDataManager.java.patch | 18 -
.../ServerHandshakeNetHandler.java.patch | 10 -
.../client/CHandshakePacket.java.patch | 35 -
.../login/ServerLoginNetHandler.java.patch | 66 -
.../CCustomPayloadLoginPacket.java.patch | 11 -
.../SCustomPayloadLoginPacket.java.patch | 11 -
.../play/ServerPlayNetHandler.java.patch | 62 -
.../play/client/CClickWindowPacket.java.patch | 11 -
.../client/CClientSettingsPacket.java.patch | 11 -
.../CCreativeInventoryActionPacket.java.patch | 11 -
.../client/CCustomPayloadPacket.java.patch | 20 -
.../SCustomPayloadPlayPacket.java.patch | 11 -
.../ClientboundCustomPayloadPacket.java.patch | 11 +
...ServerboundContainerClickPacket.java.patch | 11 +
.../ServerboundCustomPayloadPacket.java.patch | 20 +
...rboundSetCreativeModeSlotPacket.java.patch | 11 +
.../ClientIntentionPacket.java.patch | 39 +
.../ClientboundCustomQueryPacket.java.patch | 11 +
.../ServerboundCustomQueryPacket.java.patch | 11 +
...ClientboundStatusResponsePacket.java.patch | 11 +
.../protocol/status/ServerStatus.java.patch | 109 ++
.../network/rcon/ClientThread.java.patch | 22 -
.../network/rcon/RConConsoleSource.java.patch | 11 -
.../server/SServerInfoPacket.java.patch | 11 -
.../syncher/EntityDataSerializers.java.patch | 22 +
.../syncher/SynchedEntityData.java.patch | 18 +
.../particles/BlockParticleData.java.patch | 18 -
.../particles/ItemParticleData.java.patch | 11 -
.../particles/ParticleType.java.patch | 11 -
.../particles/ParticleTypes.java.patch | 10 -
.../ClimberPathNavigator.java.patch | 12 -
.../pathfinding/PathNavigator.java.patch | 14 -
.../pathfinding/WalkNodeProcessor.java.patch | 15 -
.../net/minecraft/potion/Effect.java.patch | 11 -
.../potion/EffectInstance.java.patch | 85 -
.../net/minecraft/potion/Effects.java.patch | 10 -
.../net/minecraft/potion/Potion.java.patch | 27 -
.../minecraft/potion/PotionBrewing.java.patch | 72 -
.../recipebook/PlaceRecipe.java.patch | 17 +
.../resources/DataPackRegistries.java.patch | 18 -
.../IResourceManagerReloadListener.java.patch | 24 -
.../resources/IResourcePack.java.patch | 11 -
.../resources/RegistryReadOps.java.patch | 18 +
.../resources/ResourceKey.java.patch | 35 +
.../resources/ResourceLocation.java.patch | 15 +
.../resources/ResourcePackInfo.java.patch | 50 -
.../resources/ResourcePackList.java.patch | 22 -
.../resources/VanillaPack.java.patch | 40 -
.../net/minecraft/server/Bootstrap.java.patch | 19 +
.../net/minecraft/server/Main.java.patch | 62 +-
.../server/MinecraftServer.java.patch | 272 +--
.../server/PlayerAdvancements.java.patch | 30 +
.../ServerAdvancementManager.java.patch | 13 +
.../server/ServerResources.java.patch | 18 +
.../server/commands/LocateCommand.java.patch | 21 +
.../commands/SpreadPlayersCommand.java.patch | 12 +
.../commands/TeleportCommand.java.patch | 12 +
.../dedicated/DedicatedServer.java.patch | 49 +-
.../dedicated/PropertyManager.java.patch | 11 -
...g.java.patch => ServerWatchdog.java.patch} | 8 +-
.../server/dedicated/Settings.java.patch | 11 +
.../server/gui/MinecraftServerGui.java.patch | 14 +-
.../integrated/IntegratedServer.java.patch | 22 -
.../server/level/ChunkHolder.java.patch | 10 +
.../server/level/ChunkMap.java.patch | 49 +
.../server/level/DistanceManager.java.patch | 63 +
.../server/level/ServerChunkCache.java.patch | 34 +
.../server/level/ServerEntity.java.patch | 45 +
.../server/level/ServerLevel.java.patch | 214 +++
.../server/level/ServerPlayer.java.patch | 253 +++
.../level/ServerPlayerGameMode.java.patch | 134 ++
.../minecraft/server/level/Ticket.java.patch | 50 +
.../PlayerInteractionManager.java.patch | 160 --
.../server/management/PlayerList.java.patch | 161 --
...rverHandshakePacketListenerImpl.java.patch | 10 +
.../ServerConnectionListener.java.patch | 34 +
.../ServerGamePacketListenerImpl.java.patch | 72 +
...rverHandshakePacketListenerImpl.java.patch | 10 +
.../ServerLoginPacketListenerImpl.java.patch | 66 +
.../server/packs/PackResources.java.patch | 11 +
.../packs/VanillaPackResources.java.patch | 41 +
.../server/packs/repository/Pack.java.patch | 77 +
.../repository/PackRepository.java.patch | 29 +
.../ResourceManagerReloadListener.java.patch | 24 +
...impleJsonResourceReloadListener.java.patch | 11 +
.../server/players/PlayerList.java.patch | 162 ++
.../server/rcon/RconConsoleSource.java.patch | 11 +
.../server/rcon/thread/RconClient.java.patch | 22 +
.../minecraft/sounds/SoundEvent.java.patch | 11 +
.../minecraft/sounds/SoundEvents.java.patch | 10 +
.../net/minecraft/stats/StatType.java.patch | 10 +-
.../net/minecraft/tags/BlockTags.java.patch | 14 +-
.../minecraft/tags/EntityTypeTags.java.patch | 14 +-
.../net/minecraft/tags/FluidTags.java.patch | 24 +-
.../net/minecraft/tags/ITag.java.patch | 59 -
.../tags/ITagCollectionSupplier.java.patch | 54 -
.../net/minecraft/tags/ItemTags.java.patch | 14 +-
.../tags/NetworkTagManager.java.patch | 34 -
.../minecraft/tags/StaticTagHelper.java.patch | 144 ++
.../net/minecraft/tags/StaticTags.java.patch | 62 +
.../net/minecraft/tags/Tag.java.patch | 60 +
.../tags/TagCollectionManager.java.patch | 20 -
.../minecraft/tags/TagContainer.java.patch | 33 +
.../net/minecraft/tags/TagManager.java.patch | 41 +
.../net/minecraft/tags/TagRegistry.java.patch | 127 --
.../tags/TagRegistryManager.java.patch | 26 -
.../AbstractFurnaceTileEntity.java.patch | 151 --
.../tileentity/BeaconTileEntity.java.patch | 13 -
.../BrewingStandTileEntity.java.patch | 85 -
.../tileentity/ChestTileEntity.java.patch | 61 -
.../tileentity/ConduitTileEntity.java.patch | 15 -
.../tileentity/HopperTileEntity.java.patch | 43 -
.../tileentity/PistonTileEntity.java.patch | 11 -
.../tileentity/TileEntity.java.patch | 79 -
.../tileentity/TileEntityType.java.patch | 34 -
.../net/minecraft/util/RegistryKey.java.patch | 28 -
.../util/ResourceLocation.java.patch | 15 -
.../util/ScreenShotHelper.java.patch | 29 -
.../net/minecraft/util/Session.java.patch | 49 -
.../minecraft/util/SharedConstants.java.patch | 10 -
.../net/minecraft/util/SoundEvent.java.patch | 11 -
.../net/minecraft/util/SoundEvents.java.patch | 10 -
.../net/minecraft/util/Util.java.patch | 11 -
.../datafix/codec/DatapackCodec.java.patch | 21 -
.../util/math/RayTraceContext.java.patch | 17 -
.../util/math/RayTraceResult.java.patch | 14 -
.../shapes/EntitySelectionContext.java.patch | 36 -
.../math/shapes/ISelectionContext.java.patch | 11 -
.../util/math/vector/Matrix3f.java.patch | 14 -
.../util/math/vector/Matrix4f.java.patch | 81 -
.../vector/TransformationMatrix.java.patch | 61 -
.../util/math/vector/Vector3f.java.patch | 20 -
.../util/math/vector/Vector4f.java.patch | 19 -
.../util/palette/PalettedContainer.java.patch | 43 -
.../util/registry/Bootstrap.java.patch | 19 -
.../registry/DynamicRegistries.java.patch | 11 -
.../util/registry/Registry.java.patch | 210 ---
.../util/registry/SimpleRegistry.java.patch | 12 -
.../registry/WorldGenRegistries.java.patch | 21 -
.../registry/WorldSettingsImport.java.patch | 18 -
.../util/text/LanguageMap.java.patch | 34 -
.../net/minecraft/util/text/Style.java.patch | 21 -
.../text/TranslationTextComponent.java.patch | 13 -
.../village/PointOfInterestType.java.patch | 41 -
.../minecraft/village/VillageSiege.java.patch | 22 -
.../net/minecraft/world/Explosion.java.patch | 67 -
.../world/ExplosionContext.java.patch | 11 -
.../world/ForcedChunksSaveData.java.patch | 33 -
.../minecraft/world/IBlockReader.java.patch | 11 -
.../minecraft/world/IWorldReader.java.patch | 22 -
.../net/minecraft/world/Teleporter.java.patch | 11 -
.../minecraft/world/TrackedEntity.java.patch | 29 -
.../net/minecraft/world/World.java.patch | 403 -----
.../minecraft/world/WorldSettings.java.patch | 10 -
.../minecraft/world/biome/Biome.java.patch | 31 -
.../world/biome/BiomeAmbience.java.patch | 50 -
.../biome/BiomeGenerationSettings.java.patch | 26 -
.../world/biome/BiomeRegistry.java.patch | 11 -
.../world/biome/MobSpawnInfo.java.patch | 36 -
.../OverworldBiomeProvider.java.patch | 11 -
.../world/border/WorldBorder.java.patch | 13 -
.../minecraft/world/chunk/Chunk.java.patch | 247 ---
.../world/chunk/ChunkPrimer.java.patch | 18 -
.../world/chunk/ChunkStatus.java.patch | 11 -
.../minecraft/world/chunk/IChunk.java.patch | 12 -
.../chunk/storage/ChunkSerializer.java.patch | 67 -
.../world/effect/MobEffect.java.patch | 48 +
.../world/effect/MobEffectInstance.java.patch | 86 +
.../world/effect/MobEffects.java.patch | 10 +
.../world/end/DragonFightManager.java.patch | 33 -
.../minecraft/world/entity/Entity.java.patch | 384 +++++
.../world/entity/EntityType.java.patch | 147 ++
.../world/entity/ExperienceOrb.java.patch | 37 +
.../world/entity/FlyingMob.java.patch | 21 +
.../world/entity/LightningBolt.java.patch | 33 +
.../world/entity/LivingEntity.java.patch | 566 +++++++
.../net/minecraft/world/entity/Mob.java.patch | 34 +
.../world/entity/MobCategory.java.patch | 37 +
.../world/entity/Shearable.java.patch | 14 +
.../world/entity/SpawnPlacements.java.patch | 30 +
.../entity/ai/attributes/Attribute.java.patch | 10 +
.../attributes/AttributeSupplier.java.patch | 33 +
.../ai/behavior/CrossbowAttack.java.patch | 38 +
.../ai/behavior/HarvestFarmland.java.patch | 23 +
.../entity/ai/goal/BreakDoorGoal.java.patch | 11 +
.../entity/ai/goal/EatBlockGoal.java.patch | 20 +
.../entity/ai/goal/MeleeAttackGoal.java.patch | 46 +
.../ai/goal/RangedBowAttackGoal.java.patch | 20 +
.../goal/RangedCrossbowAttackGoal.java.patch | 29 +
.../entity/ai/goal/RemoveBlockGoal.java.patch | 11 +
.../ai/goal/RunAroundLikeCrazyGoal.java.patch | 11 +
.../ai/memory/MemoryModuleType.java.patch | 11 +
.../ai/navigation/PathNavigation.java.patch | 14 +
.../WallClimberNavigation.java.patch | 12 +
.../entity/ai/sensing/SensorType.java.patch | 11 +
.../entity/ai/village/VillageSiege.java.patch | 22 +
.../entity/ai/village/poi/PoiType.java.patch | 41 +
.../world/entity/animal/Animal.java.patch | 20 +
.../world/entity/animal/Bee.java.patch | 19 +
.../world/entity/animal/Cat.java.patch | 11 +
.../world/entity/animal/Fox.java.patch | 29 +
.../world/entity/animal/IronGolem.java.patch | 23 +
.../entity/animal/MushroomCow.java.patch | 66 +
.../world/entity/animal/Ocelot.java.patch | 11 +
.../world/entity/animal/Parrot.java.patch | 11 +
.../world/entity/animal/Pig.java.patch | 19 +
.../world/entity/animal/PolarBear.java.patch | 10 +
.../world/entity/animal/Rabbit.java.patch | 11 +
.../world/entity/animal/Sheep.java.patch | 48 +
.../world/entity/animal/SnowGolem.java.patch | 60 +
.../world/entity/animal/Wolf.java.patch | 19 +
.../animal/horse/AbstractHorse.java.patch | 56 +
.../entity/animal/horse/Horse.java.patch | 11 +
.../animal/horse/SkeletonTrapGoal.java.patch | 22 +
.../entity/boss/EnderDragonPart.java.patch | 18 +
.../boss/enderdragon/EnderDragon.java.patch | 28 +
.../entity/boss/wither/WitherBoss.java.patch | 37 +
.../entity/decoration/ArmorStand.java.patch | 11 +
.../decoration/HangingEntity.java.patch | 11 +
.../world/entity/decoration/Motive.java.patch | 11 +
.../world/entity/item/ItemEntity.java.patch | 127 ++
.../monster/AbstractSkeleton.java.patch | 23 +
.../world/entity/monster/Creeper.java.patch | 11 +
.../monster/CrossbowAttackMob.java.patch | 14 +
.../world/entity/monster/EnderMan.java.patch | 80 +
.../world/entity/monster/Evoker.java.patch | 11 +
.../entity/monster/Illusioner.java.patch | 14 +
.../world/entity/monster/MagmaCube.java.patch | 10 +
.../world/entity/monster/Pillager.java.patch | 11 +
.../world/entity/monster/Ravager.java.patch | 11 +
.../entity/monster/Silverfish.java.patch | 20 +
.../world/entity/monster/Slime.java.patch | 45 +
.../world/entity/monster/Spider.java.patch | 16 +
.../world/entity/monster/Zombie.java.patch | 79 +
.../entity/monster/ZombieVillager.java.patch | 20 +
.../entity/monster/ZombifiedPiglin.java.patch | 10 +
.../entity/monster/hoglin/Hoglin.java.patch | 19 +
.../monster/piglin/AbstractPiglin.java.patch | 22 +
.../entity/monster/piglin/Piglin.java.patch | 29 +
.../entity/monster/piglin/PiglinAi.java.patch | 47 +
...opHoldingItemIfNoLongerAdmiring.java.patch | 11 +
.../entity/npc/AbstractVillager.java.patch | 14 +
.../world/entity/npc/CatSpawner.java.patch | 13 +
.../world/entity/npc/Villager.java.patch | 38 +
.../entity/npc/VillagerProfession.java.patch | 11 +
.../world/entity/player/Inventory.java.patch | 30 +
.../world/entity/player/Player.java.patch | 404 +++++
.../projectile/AbstractArrow.java.patch | 11 +
.../AbstractHurtingProjectile.java.patch | 11 +
.../FireworkRocketEntity.java.patch | 16 +
.../entity/projectile/FishingHook.java.patch | 75 +
.../projectile/LargeFireball.java.patch | 11 +
.../entity/projectile/LlamaSpit.java.patch | 10 +
.../entity/projectile/Projectile.java.patch | 11 +
.../projectile/ProjectileUtil.java.patch | 25 +
.../projectile/ShulkerBullet.java.patch | 11 +
.../projectile/SmallFireball.java.patch | 11 +
.../projectile/ThrowableProjectile.java.patch | 11 +
.../projectile/ThrownEnderpearl.java.patch | 38 +
.../entity/projectile/WitherSkull.java.patch | 20 +
.../world/entity/raid/Raid.java.patch | 32 +
.../world/entity/schedule/Activity.java.patch | 11 +
.../world/entity/schedule/Schedule.java.patch | 11 +
.../vehicle/AbstractMinecart.java.patch | 279 +++
.../AbstractMinecartContainer.java.patch | 70 +
.../world/entity/vehicle/Boat.java.patch | 28 +
.../world/entity/vehicle/Minecart.java.patch | 11 +
.../vehicle/MinecartCommandBlock.java.patch | 11 +
.../entity/vehicle/MinecartFurnace.java.patch | 23 +
.../entity/vehicle/MinecartSpawner.java.patch | 15 +
.../world/food/FoodProperties.java.patch | 73 +
.../world/gen/DebugChunkGenerator.java.patch | 13 -
.../gen/FlatGenerationSettings.java.patch | 29 -
.../world/gen/NoiseChunkGenerator.java.patch | 31 -
.../world/gen/WorldGenRegion.java.patch | 60 -
.../blockplacer/BlockPlacerType.java.patch | 11 -
.../BlockStateProviderType.java.patch | 11 -
.../world/gen/carver/WorldCarver.java.patch | 11 -
.../AbstractBigMushroomFeature.java.patch | 20 -
.../feature/BaseTreeFeatureConfig.java.patch | 10 -
.../BigBrownMushroomFeature.java.patch | 11 -
.../feature/BigRedMushroomFeature.java.patch | 11 -
.../gen/feature/DungeonsFeature.java.patch | 10 -
.../world/gen/feature/Feature.java.patch | 25 -
.../feature/GlowstoneBlobFeature.java.patch | 11 -
.../gen/feature/IceSpikeFeature.java.patch | 28 -
.../gen/feature/SpringFeature.java.patch | 11 -
.../feature/jigsaw/JigsawPattern.java.patch | 33 -
.../jigsaw/SingleJigsawPiece.java.patch | 11 -
.../structure/FortressStructure.java.patch | 12 -
.../structure/MineshaftPieces.java.patch | 11 -
.../OceanMonumentStructure.java.patch | 12 -
.../PillagerOutpostStructure.java.patch | 12 -
.../feature/structure/Structure.java.patch | 30 -
.../structure/StructurePiece.java.patch | 12 -
.../structure/StructureStart.java.patch | 12 -
.../structure/SwampHutStructure.java.patch | 18 -
.../template/StructureProcessor.java.patch | 41 -
.../gen/feature/template/Template.java.patch | 103 --
.../FoliagePlacerType.java.patch | 11 -
.../world/gen/layer/BiomeLayer.java.patch | 64 -
.../world/gen/placement/Placement.java.patch | 11 -
.../DimensionGeneratorSettings.java.patch | 20 -
.../surfacebuilders/SurfaceBuilder.java.patch | 11 -
.../TreeDecoratorType.java.patch | 11 -
.../AbstractContainerMenu.java.patch | 43 +
.../inventory/AbstractFurnaceMenu.java.patch | 11 +
.../world/inventory/AnvilMenu.java.patch | 51 +
.../world/inventory/BeaconMenu.java.patch | 15 +
.../inventory/BrewingStandMenu.java.patch | 28 +
.../inventory/EnchantmentMenu.java.patch | 78 +
.../inventory/FurnaceResultSlot.java.patch | 9 +
.../world/inventory/GrindstoneMenu.java.patch | 21 +
.../world/inventory/InventoryMenu.java.patch | 11 +
.../world/inventory/MenuType.java.patch | 26 +
.../world/inventory/RecipeBookMenu.java.patch | 13 +
.../world/inventory/ResultSlot.java.patch | 21 +
.../inventory}/Slot.java.patch | 25 +-
.../minecraft/world/item/ArmorItem.java.patch | 11 +
.../minecraft/world/item/ArrowItem.java.patch | 12 +
.../minecraft/world/item/AxeItem.java.patch | 33 +
.../minecraft/world/item/BlockItem.java.patch | 51 +
.../world/item/BoneMealItem.java.patch | 29 +
.../minecraft/world/item/BowItem.java.patch | 50 +
.../world/item/BucketItem.java.patch | 76 +
.../world/item/ChorusFruitItem.java.patch | 13 +
.../world/item/CreativeModeTab.java.patch | 129 ++
.../world/item/DiggerItem.java.patch | 10 +
.../minecraft/world/item/DyeColor.java.patch | 41 +
.../item/DyeableHorseArmorItem.java.patch | 10 +
.../world/item/ElytraItem.java.patch | 22 +
.../minecraft/world/item/HoeItem.java.patch | 30 +
.../world/item/HorseArmorItem.java.patch | 26 +
.../net/minecraft/world/item/Item.java.patch | 176 ++
.../minecraft/world/item/ItemStack.java.patch | 252 +++
.../net/minecraft/world/item/Items.java.patch | 10 +
.../minecraft/world/item/MapItem.java.patch | 23 +
.../world/item/MilkBucketItem.java.patch | 32 +
.../world/item/MinecartItem.java.patch | 20 +
.../world/item/MobBucketItem.java.patch | 43 +
.../minecraft/world/item/Rarity.java.patch | 21 +
.../world/item/RecordItem.java.patch | 49 +
.../world/item/ShearsItem.java.patch | 28 +
.../world/item/ShovelItem.java.patch | 34 +
.../item/StandingAndWallBlockItem.java.patch | 12 +
.../world/item/alchemy/Potion.java.patch | 27 +
.../item/alchemy/PotionBrewing.java.patch | 72 +
.../crafting/BannerDuplicateRecipe.java.patch | 13 +
.../crafting/BookCloningRecipe.java.patch | 13 +
.../world/item/crafting/Ingredient.java.patch | 96 ++
.../world/item/crafting/Recipe.java.patch | 15 +
.../item/crafting/RecipeManager.java.patch | 21 +
.../item/crafting/RecipeSerializer.java.patch | 19 +
.../item/crafting/RepairItemRecipe.java.patch | 38 +
.../item/crafting/ShapedRecipe.java.patch | 94 ++
.../item/crafting/ShapelessRecipe.java.patch | 58 +
.../crafting/ShulkerBoxColoring.java.patch | 38 +
.../SimpleCookingSerializer.java.patch | 30 +
.../SimpleRecipeSerializer.java.patch | 11 +
.../item/crafting/SingleItemRecipe.java.patch | 11 +
.../item/crafting/UpgradeRecipe.java.patch | 11 +
.../item/enchantment/Enchantment.java.patch | 61 +
.../EnchantmentCategory.java.patch | 32 +
.../enchantment/EnchantmentHelper.java.patch | 29 +
.../item/enchantment/Enchantments.java.patch | 10 +
.../FrostWalkerEnchantment.java.patch | 12 +
.../item/trading/MerchantOffer.java.patch | 20 +
.../world/level/BaseSpawner.java.patch | 27 +
.../world/level/BlockGetter.java.patch | 11 +
.../world/level/ClipContext.java.patch | 17 +
.../world/level/DataPackConfig.java.patch | 21 +
.../world/level/Explosion.java.patch | 61 +
.../ExplosionDamageCalculator.java.patch | 11 +
.../level/ForcedChunksSavedData.java.patch | 35 +
.../minecraft/world/level/Level.java.patch | 221 +++
.../world/level/LevelReader.java.patch | 13 +
.../world/level/LevelSettings.java.patch | 10 +
.../world/level/NaturalSpawner.java.patch | 75 +
.../world/level/biome/Biome.java.patch | 22 +
.../biome/BiomeGenerationSettings.java.patch | 26 +
.../biome/BiomeSpecialEffects.java.patch | 49 +
.../level/biome/MobSpawnSettings.java.patch | 36 +
.../biome/OverworldBiomeSource.java.patch | 11 +
.../world/level/block/BambooBlock.java.patch | 16 +
.../level/block/BaseFireBlock.java.patch | 10 +
.../level/block/BaseRailBlock.java.patch | 64 +
.../world/level/block/BeehiveBlock.java.patch | 20 +
.../world/level/block/Block.java.patch | 203 +++
.../world/level/block/Blocks.java.patch | 36 +
.../world/level/block/BushBlock.java.patch | 33 +
.../world/level/block/CactusBlock.java.patch | 62 +
.../level/block/CampfireBlock.java.patch | 11 +
.../world/level/block/ChestBlock.java.patch | 12 +
.../level/block/ChorusFlowerBlock.java.patch | 20 +
.../world/level/block/CocoaBlock.java.patch | 16 +
.../level/block/ComparatorBlock.java.patch | 19 +
.../world/level/block/CropBlock.java.patch | 39 +
.../level/block/DeadBushBlock.java.patch | 11 +
.../level/block/DetectorRailBlock.java.patch | 11 +
.../world/level/block/DiodeBlock.java.patch | 11 +
.../level/block/DoublePlantBlock.java.patch | 10 +
.../world/level/block/DropperBlock.java.patch | 11 +
.../block/EnchantmentTableBlock.java.patch | 11 +
.../world/level/block/FallingBlock.java.patch | 11 +
.../world/level/block/FarmBlock.java.patch | 32 +
.../world/level/block/FireBlock.java.patch | 136 ++
.../level/block/FlowerPotBlock.java.patch | 86 +
.../block/GrowingPlantHeadBlock.java.patch | 15 +
.../world/level/block/LeavesBlock.java.patch | 11 +
.../world/level/block/LiquidBlock.java.patch | 80 +
.../level/block/MushroomBlock.java.patch | 11 +
.../level/block/NetherWartBlock.java.patch | 14 +
.../world/level/block/NoteBlock.java.patch | 23 +
.../world/level/block/OreBlock.java.patch | 19 +
.../level/block/PoweredRailBlock.java.patch | 57 +
.../world/level/block/RailBlock.java.patch | 12 +
.../world/level/block/RailState.java.patch | 57 +
.../level/block/RedStoneOreBlock.java.patch | 18 +
.../world/level/block/SaplingBlock.java.patch | 18 +
.../level/block/SeagrassBlock.java.patch | 11 +
.../world/level/block/SoundType.java.patch | 10 +
.../world/level/block/SpawnerBlock.java.patch | 16 +
.../block/SpreadingSnowyDirtBlock.java.patch | 10 +
.../world/level/block/StairBlock.java.patch | 39 +
.../world/level/block/StemBlock.java.patch | 43 +
.../level/block/SugarCaneBlock.java.patch | 51 +
.../block/SweetBerryBushBlock.java.patch | 13 +
.../level/block/TallGrassBlock.java.patch | 11 +
.../world/level/block/TntBlock.java.patch | 67 +
.../level/block/TrapDoorBlock.java.patch | 20 +
.../level/block/TripWireHookBlock.java.patch | 12 +
.../level/block/TurtleEggBlock.java.patch | 11 +
.../world/level/block/VineBlock.java.patch | 20 +
.../world/level/block/WebBlock.java.patch | 11 +
.../AbstractFurnaceBlockEntity.java.patch | 176 ++
.../block/entity}/BannerPattern.java.patch | 12 +-
.../BaseContainerBlockEntity.java.patch} | 12 +-
.../block/entity/BeaconBlockEntity.java.patch | 13 +
.../level/block/entity/BlockEntity.java.patch | 72 +
.../block/entity/BlockEntityType.java.patch | 34 +
.../entity/BrewingStandBlockEntity.java.patch | 82 +
.../block/entity/ChestBlockEntity.java.patch | 46 +
.../entity/ConduitBlockEntity.java.patch | 15 +
.../block/entity/HopperBlockEntity.java.patch | 45 +
.../entity/ShulkerBoxBlockEntity.java.patch} | 8 +-
.../block/piston/PistonBaseBlock.java.patch | 37 +
.../piston/PistonMovingBlockEntity.java.patch | 11 +
.../piston/PistonStructureResolver.java.patch | 70 +
.../block/state/BlockBehaviour.java.patch | 163 ++
.../level/block/state/BlockState.java.patch | 11 +
.../state/properties}/WoodType.java.patch | 8 +-
.../world/level/chunk/ChunkAccess.java.patch | 12 +
.../world/level/chunk/ChunkStatus.java.patch | 11 +
.../world/level/chunk/LevelChunk.java.patch | 143 ++
.../level/chunk/PalettedContainer.java.patch | 40 +
.../world/level/chunk/ProtoChunk.java.patch | 18 +
.../chunk/storage/ChunkSerializer.java.patch | 60 +
.../chunk/storage/EntityStorage.java.patch | 15 +
.../dimension/end/EndDragonFight.java.patch | 41 +
.../levelgen/DebugLevelSource.java.patch | 13 +
.../NoiseBasedChunkGenerator.java.patch | 20 +
.../level/levelgen/PatrolSpawner.java.patch | 10 +
.../level/levelgen/PhantomSpawner.java.patch | 10 +
.../levelgen/WorldGenSettings.java.patch | 20 +
.../levelgen/carver/WorldCarver.java.patch | 11 +
.../level/levelgen/feature/Feature.java.patch | 25 +
.../feature/MonsterRoomFeature.java.patch | 10 +
.../feature/NetherFortressFeature.java.patch | 14 +
.../feature/OceanMonumentFeature.java.patch | 14 +
.../feature/PillagerOutpostFeature.java.patch | 14 +
.../feature/StructureFeature.java.patch | 30 +
.../feature/SwamplandHutFeature.java.patch | 21 +
.../blockplacers/BlockPlacerType.java.patch | 11 +
.../TreeConfiguration.java.patch | 10 +
.../FoliagePlacerType.java.patch | 11 +
.../BlockStateProviderType.java.patch | 11 +
.../structures/SinglePoolElement.java.patch | 11 +
.../StructureTemplatePool.java.patch | 33 +
.../TreeDecoratorType.java.patch | 11 +
.../FlatLevelGeneratorSettings.java.patch | 29 +
.../placement/FeatureDecorator.java.patch | 11 +
.../structure/StructurePiece.java.patch | 12 +
.../structure/StructureStart.java.patch | 12 +
.../StructureProcessor.java.patch | 38 +
.../StructureTemplate.java.patch | 103 ++
.../surfacebuilders/SurfaceBuilder.java.patch | 11 +
.../lighting/BlockLightEngine.java.patch | 12 +
.../DynamicGraphMinFixedPoint.java.patch | 11 +
.../lighting/LayerLightEngine.java.patch | 9 +
.../level/lighting/SkyLightEngine.java.patch | 12 +
.../level/material/FlowingFluid.java.patch | 20 +
.../level/material}/Fluid.java.patch | 26 +-
.../level/material/FluidState.java.patch | 19 +
.../world/level/material/LavaFluid.java.patch | 29 +
.../newbiome/layer/BiomeInitLayer.java.patch | 64 +
.../pathfinder/BlockPathTypes.java.patch} | 12 +-
.../pathfinder/WalkNodeEvaluator.java.patch | 11 +
.../level/portal/PortalForcer.java.patch | 11 +
.../world/level/portal/PortalShape.java.patch | 11 +
.../saveddata/maps}/MapDecoration.java.patch | 13 +-
.../storage/DimensionDataStorage.java.patch | 16 +
.../storage/LevelStorageSource.java.patch | 63 +
.../storage/PlayerDataStorage.java.patch | 28 +
.../level/storage/loot/LootContext.java.patch | 68 +
.../level/storage/loot/LootPool.java.patch | 123 ++
.../level/storage/loot/LootTable.java.patch | 103 ++
.../level/storage/loot/LootTables.java.patch | 13 +
.../LootingEnchantFunction.java.patch | 11 +
.../functions/SmeltItemFunction.java.patch | 11 +
.../LootContextParamSets.java.patch | 18 +
.../LootItemRandomChanceCondition.java.patch | 12 +
...andomChanceWithLootingCondition.java.patch | 16 +
.../lighting/BlockLightEngine.java.patch | 12 -
.../world/lighting/LevelBasedGraph.java.patch | 11 -
.../world/lighting/LightEngine.java.patch | 9 -
.../world/lighting/SkyLightEngine.java.patch | 12 -
.../net/minecraft/world/raid/Raid.java.patch | 32 -
.../world/server/ChunkHolder.java.patch | 19 -
.../world/server/ChunkManager.java.patch | 55 -
.../server/ServerChunkProvider.java.patch | 38 -
.../world/server/ServerWorld.java.patch | 261 ---
.../minecraft/world/server/Ticket.java.patch | 50 -
.../world/server/TicketManager.java.patch | 63 -
.../world/spawner/AbstractSpawner.java.patch | 27 -
.../world/spawner/CatSpawner.java.patch | 13 -
.../world/spawner/PatrolSpawner.java.patch | 10 -
.../world/spawner/PhantomSpawner.java.patch | 10 -
.../spawner/WorldEntitySpawner.java.patch | 75 -
.../DimensionSavedDataManager.java.patch | 16 -
.../world/storage/PlayerData.java.patch | 28 -
.../world/storage/SaveFormat.java.patch | 63 -
.../world/storage/WorldSavedData.java.patch | 27 -
server_files/args.txt | 13 +
server_files/run.bat | 5 +
server_files/run.sh | 4 +
server_files/user_jvm_args.txt | 9 +
settings.gradle | 9 +-
.../fml/core/ModStateProvider.java | 61 +
.../fml/core/ParallelTransition.java | 65 +
.../fml/event/config/ModConfigEvent.java | 50 +
.../event/lifecycle/FMLClientSetupEvent.java | 15 +-
.../event/lifecycle/FMLCommonSetupEvent.java | 10 +-
.../event/lifecycle/FMLConstructModEvent.java | 5 +-
.../FMLDedicatedServerSetupEvent.java | 14 +-
.../event/lifecycle/FMLLoadCompleteEvent.java | 5 +-
.../event/lifecycle/InterModEnqueueEvent.java | 7 +-
.../event/lifecycle/InterModProcessEvent.java | 9 +-
.../event/lifecycle/ModLifecycleEvent.java | 2 +-
.../lifecycle/ParallelDispatchEvent.java | 8 +-
.../fml/loading/FMLClientLaunchProvider.java | 91 -
.../fml/loading/FMLCommonLaunchHandler.java | 162 --
.../fml/loading/FMLServerLaunchProvider.java | 91 -
.../minecraftforge/fml/loading/FixSSL.java | 91 -
.../fml/loading/Java9BackportUtils.java | 57 -
.../moddiscovery/AbstractJarFileLocator.java | 119 --
.../ExplodedDirectoryLocator.java | 128 --
.../loading/moddiscovery/ModDiscoverer.java | 259 ---
...mods.modlauncher.api.ILaunchHandlerService | 2 -
src/fmllauncher/resources/minecraftmod.toml | 13 -
.../data/forge/tags/items/barrels.json | 6 +
.../data/forge/tags/items/barrels/wooden.json | 6 +
.../loot_tables/blocks/acacia_leaves.json | 16 +-
.../loot_tables/blocks/azalea_leaves.json | 132 ++
.../loot_tables/blocks/birch_leaves.json | 16 +-
.../minecraft/loot_tables/blocks/cobweb.json | 3 +-
.../loot_tables/blocks/dark_oak_leaves.json | 22 +-
.../loot_tables/blocks/dead_bush.json | 10 +-
.../minecraft/loot_tables/blocks/fern.json | 3 +-
.../blocks/flowering_azalea_leaves.json | 132 ++
.../minecraft/loot_tables/blocks/grass.json | 3 +-
.../loot_tables/blocks/hanging_roots.json | 24 +
.../loot_tables/blocks/jungle_leaves.json | 16 +-
.../loot_tables/blocks/large_fern.json | 22 +-
.../loot_tables/blocks/nether_sprouts.json | 6 +-
.../loot_tables/blocks/oak_leaves.json | 22 +-
.../loot_tables/blocks/seagrass.json | 6 +-
.../loot_tables/blocks/small_dripleaf.json | 24 +
.../loot_tables/blocks/spruce_leaves.json | 16 +-
.../loot_tables/blocks/tall_grass.json | 22 +-
.../loot_tables/blocks/tall_seagrass.json | 7 +-
.../loot_tables/blocks/twisting_vines.json | 3 +-
.../minecraft/loot_tables/blocks/vine.json | 6 +-
.../loot_tables/blocks/weeping_vines.json | 3 +-
.../data/minecraft/recipes/acacia_fence.json | 6 +-
.../data/minecraft/recipes/acacia_sign.json | 2 +-
.../data/minecraft/recipes/birch_fence.json | 6 +-
.../data/minecraft/recipes/birch_sign.json | 2 +-
.../data/minecraft/recipes/crimson_fence.json | 6 +-
.../data/minecraft/recipes/crimson_sign.json | 2 +-
.../minecraft/recipes/dark_oak_fence.json | 6 +-
.../data/minecraft/recipes/dark_oak_sign.json | 2 +-
.../data/minecraft/recipes/jungle_fence.json | 6 +-
.../data/minecraft/recipes/jungle_sign.json | 2 +-
.../mossy_cobblestone_from_moss_block.json | 15 +
....json => mossy_cobblestone_from_vine.json} | 1 +
.../data/minecraft/recipes/oak_fence.json | 6 +-
.../data/minecraft/recipes/oak_sign.json | 2 +-
.../data/minecraft/recipes/spruce_fence.json | 6 +-
.../data/minecraft/recipes/spruce_sign.json | 2 +-
.../data/minecraft/recipes/warped_fence.json | 6 +-
.../data/minecraft/recipes/warped_sign.json | 2 +-
src/generated_test/resources/.cache/cache | 8 +-
.../blockstates/obj_block.json | 14 +-
.../advancements/conditional.json | 4 +-
.../advancements/recipes/conditional2.json | 4 +-
.../loot_modifiers/wheat_harvest.json | 4 +-
.../client/CloudRenderHandler.java | 37 -
.../minecraftforge/client/EffectRenderer.java | 104 ++
.../client/FluidContainerColorer.java | 6 +-
.../client/ForgeHooksClient.java | 277 +--
.../client/ForgeRenderTypes.java | 101 +-
.../client/ForgeWorldTypeScreens.java | 38 +-
.../client/IBlockRenderProperties.java | 111 ++
.../client/ICloudRenderHandler.java | 6 +-
.../client/IItemRenderProperties.java | 86 +
.../client/ISkyRenderHandler.java | 6 +-
.../client/IWeatherParticleRenderHandler.java | 6 +-
.../client/IWeatherRenderHandler.java | 4 +-
.../client/ItemModelMesherForge.java | 20 +-
.../client/MinecraftForgeClient.java | 32 +-
.../client/RenderProperties.java | 65 +
.../client/SkyRenderHandler.java | 38 -
.../client/event/ClientChatEvent.java | 2 -
.../client/event/ClientChatReceivedEvent.java | 12 +-
.../ClientPlayerChangeGameModeEvent.java | 10 +-
.../event/ClientPlayerNetworkEvent.java | 32 +-
.../client/event/ColorHandlerEvent.java | 6 +-
.../client/event/DrawHighlightEvent.java | 101 --
.../client/event/DrawSelectionEvent.java | 99 ++
.../client/event/EntityViewRenderEvent.java | 26 +-
.../client/event/FOVUpdateEvent.java | 12 +-
.../client/event/GuiContainerEvent.java | 22 +-
.../client/event/GuiOpenEvent.java | 2 +-
.../client/event/GuiScreenEvent.java | 49 +-
.../client/event/InputEvent.java | 17 +-
.../client/event/InputUpdateEvent.java | 10 +-
.../client/event/ModelBakeEvent.java | 15 +-
.../client/event/ModelRegistryEvent.java | 2 +-
.../event/ParticleFactoryRegisterEvent.java | 2 +-
.../client/event/RecipesUpdatedEvent.java | 3 +-
.../client/event/RenderBlockOverlayEvent.java | 18 +-
.../client/event/RenderGameOverlayEvent.java | 86 +-
.../client/event/RenderHandEvent.java | 22 +-
.../client/event/RenderItemInFrameEvent.java | 24 +-
.../client/event/RenderLivingEvent.java | 30 +-
.../client/event/RenderNameplateEvent.java | 29 +-
.../client/event/RenderPlayerEvent.java | 22 +-
.../client/event/RenderTooltipEvent.java | 37 +-
.../client/event/RenderWorldLastEvent.java | 16 +-
.../client/event/ScreenshotEvent.java | 16 +-
.../client/event/TextureStitchEvent.java | 16 +-
.../client/event/sound/PlaySoundEvent.java | 16 +-
.../event/sound/PlaySoundSourceEvent.java | 8 +-
.../event/sound/PlayStreamingSourceEvent.java | 8 +-
.../client/event/sound/SoundEvent.java | 17 +-
.../client/event/sound/SoundLoadEvent.java | 4 +-
.../client/event/sound/SoundSetupEvent.java | 2 +-
.../client/extensions/IForgeBakedModel.java | 42 +-
...eKeybinding.java => IForgeKeyMapping.java} | 20 +-
...elTransform.java => IForgeModelState.java} | 8 +-
.../client/extensions/IForgeRenderChunk.java | 10 +-
.../extensions/IForgeTextureAtlasSprite.java | 8 +-
...nMatrix.java => IForgeTransformation.java} | 67 +-
...Builder.java => IForgeVertexConsumer.java} | 50 +-
.../client/gui/ForgeIngameGui.java | 754 +++++----
.../IIngameOverlay.java} | 16 +-
.../gui/NotificationModUpdateScreen.java | 24 +-
.../client/gui/OverlayRegistry.java | 200 +++
.../client/gui/ScrollPanel.java | 45 +-
.../client/model/BakedItemModel.java | 44 +-
.../client/model/BakedModelWrapper.java | 34 +-
.../client/model/BlockModelConfiguration.java | 36 +-
.../client/model/CompositeModel.java | 73 +-
...position.java => CompositeModelState.java} | 20 +-
.../client/model/DynamicBucketModel.java | 79 +-
.../client/model/FluidModel.java | 63 +-
.../client/model/IModelBuilder.java | 16 +-
.../client/model/IModelConfiguration.java | 16 +-
.../client/model/IModelLoader.java | 24 +-
.../client/model/ItemLayerModel.java | 64 +-
.../model/ItemMultiLayerBakedModel.java | 58 +-
.../model/ItemTextureQuadConverter.java | 28 +-
.../client/model/ModelDataManager.java | 24 +-
.../client/model/ModelLoader.java | 45 +-
.../client/model/ModelLoaderRegistry.java | 144 +-
.../client/model/MultiLayerModel.java | 94 +-
.../client/model/PerspectiveMapWrapper.java | 77 +-
.../client/model/QuadTransformer.java | 24 +-
.../model/SeparatePerspectiveModel.java | 95 +-
...elTransform.java => SimpleModelState.java} | 26 +-
.../client/model/animation/Animation.java | 8 +-
...java => AnimationBlockEntityRenderer.java} | 41 +-
.../animation/AnimationItemOverrideList.java | 44 +-
.../model/animation/ModelBlockAnimation.java | 44 +-
.../client/model/animation/package-info.java | 3 +-
.../client/model/b3d/B3DClip.java | 14 +-
.../client/model/b3d/B3DLoader.java | 163 +-
.../client/model/b3d/B3DModel.java | 26 +-
.../client/model/b3d/package-info.java | 3 +-
.../client/model/data/IDynamicBakedModel.java | 10 +-
.../client/model/data/MultipartModelData.java | 22 +-
.../model/generators/BlockModelBuilder.java | 2 +-
.../model/generators/BlockStateProvider.java | 104 +-
.../model/generators/ConfiguredModel.java | 6 +-
.../model/generators/CustomLoaderBuilder.java | 2 +-
.../model/generators/ItemModelBuilder.java | 2 +-
.../client/model/generators/ModelBuilder.java | 71 +-
.../client/model/generators/ModelFile.java | 2 +-
.../model/generators/ModelProvider.java | 22 +-
.../MultiPartBlockStateBuilder.java | 4 +-
.../generators/VariantBlockStateBuilder.java | 6 +-
.../loaders/CompositeModelBuilder.java | 3 +-
.../loaders/DynamicBucketModelBuilder.java | 4 +-
.../loaders/ItemLayersModelBuilder.java | 2 +-
.../loaders/MultiLayerModelBuilder.java | 2 +-
.../generators/loaders/OBJLoaderBuilder.java | 8 +-
.../SeparatePerspectiveModelBuilder.java | 7 +-
.../client/model/geometry/IModelGeometry.java | 14 +-
.../model/geometry/IModelGeometryPart.java | 14 +-
.../geometry/IMultipartModelGeometry.java | 16 +-
.../model/geometry/ISimpleModelGeometry.java | 16 +-
.../client/model/obj/LineReader.java | 4 +-
.../client/model/obj/MaterialLibrary.java | 2 +-
.../client/model/obj/OBJLoader.java | 27 +-
.../client/model/obj/OBJModel.java | 113 +-
.../client/model/obj/package-info.java | 3 +-
.../client/model/package-info.java | 3 +-
.../model/pipeline/BakedQuadBuilder.java | 20 +-
.../client/model/pipeline/BlockInfo.java | 33 +-
.../pipeline/ForgeBlockModelRenderer.java | 36 +-
.../model/pipeline/IVertexConsumer.java | 4 +-
.../client/model/pipeline/LightUtil.java | 16 +-
.../pipeline/QuadGatheringTransformer.java | 2 +-
.../model/pipeline/TRSRTransformer.java | 10 +-
.../model/pipeline/TransformerConsumer.java | 2 +-
.../model/pipeline/VertexBufferConsumer.java | 16 +-
.../model/pipeline/VertexLighterFlat.java | 43 +-
.../model/pipeline/VertexLighterSmoothAo.java | 8 +-
.../model/pipeline/VertexTransformer.java | 4 +-
.../client/model/pipeline/package-info.java | 3 +-
.../client/settings/IKeyConflictContext.java | 2 -
.../client/settings/KeyBindingMap.java | 42 +-
.../client/settings/KeyModifier.java | 37 +-
.../client/textures/ForgeTextureMetadata.java | 16 +-
.../textures/ITextureAtlasSpriteLoader.java | 16 +-
.../common/AdvancementLoadFix.java | 2 +-
.../net/minecraftforge/common/BasicTrade.java | 12 +-
.../common/BiomeDictionary.java | 43 +-
.../minecraftforge/common/BiomeManager.java | 24 +-
.../minecraftforge/common/DungeonHooks.java | 8 +-
.../common/FarmlandWaterManager.java | 42 +-
.../minecraftforge/common/ForgeConfig.java | 18 +-
.../common/ForgeConfigSpec.java | 18 +-
.../net/minecraftforge/common/ForgeHooks.java | 479 +++---
.../common/ForgeInternalHandler.java | 28 +-
.../net/minecraftforge/common/ForgeMod.java | 65 +-
.../common/ForgeTagHandler.java | 142 +-
.../common/IExtensibleEnum.java | 6 +-
.../common/IForgeShearable.java | 12 +-
.../common/IMinecartCollisionHandler.java | 14 +-
.../net/minecraftforge/common/IPlantable.java | 20 +-
.../minecraftforge/common/MinecraftForge.java | 1 -
.../net/minecraftforge/common/PlantType.java | 5 -
.../java/net/minecraftforge/common/Tags.java | 14 +-
.../common/VillagerTradingManager.java | 32 +-
.../common/animation/Event.java | 2 +-
.../common/animation/TimeValues.java | 10 +-
.../common/brewing/BrewingRecipe.java | 4 +-
.../common/brewing/BrewingRecipeRegistry.java | 6 +-
.../common/brewing/IBrewingRecipe.java | 2 +-
.../common/brewing/VanillaBrewingRecipe.java | 8 +-
.../common/brewing/package-info.java | 3 +-
.../common/capabilities/Capability.java | 105 +-
.../capabilities/CapabilityDispatcher.java | 26 +-
.../capabilities/CapabilityManager.java | 21 +-
.../capabilities/CapabilityProvider.java | 10 +-
.../capabilities/ICapabilityProvider.java | 2 +-
.../capabilities/ICapabilitySerializable.java | 4 +-
.../common/command/EntitySelectorManager.java | 4 +-
.../common/command/IEntitySelectorType.java | 8 +-
.../common/crafting/CompoundIngredient.java | 10 +-
.../crafting/ConditionalAdvancement.java | 12 +-
.../common/crafting/ConditionalRecipe.java | 52 +-
.../common/crafting/CraftingHelper.java | 40 +-
.../crafting/IIngredientSerializer.java | 8 +-
.../common/crafting/IRecipeContainer.java | 8 +-
.../common/crafting/IShapedRecipe.java | 6 +-
.../common/crafting/NBTIngredient.java | 12 +-
.../common/crafting/StackList.java | 6 +-
.../crafting/VanillaIngredientSerializer.java | 12 +-
.../crafting/conditions/AndCondition.java | 6 +-
.../crafting/conditions/FalseCondition.java | 2 +-
.../crafting/conditions/ICondition.java | 2 +-
.../conditions/IConditionSerializer.java | 2 +-
.../conditions/ItemExistsCondition.java | 6 +-
.../conditions/ModLoadedCondition.java | 6 +-
.../crafting/conditions/NotCondition.java | 6 +-
.../crafting/conditions/OrCondition.java | 6 +-
.../conditions/TagEmptyCondition.java | 15 +-
.../crafting/conditions/TrueCondition.java | 2 +-
.../common/crafting/package-info.java | 3 +-
.../common/data/ExistingFileHelper.java | 93 +-
.../common/data/ForgeBlockTagsProvider.java | 22 +-
.../common/data/ForgeFluidTagsProvider.java | 4 +-
.../common/data/ForgeItemTagsProvider.java | 36 +-
.../common/data/ForgeLootTableProvider.java | 99 +-
.../common/data/ForgeRecipeProvider.java | 66 +-
.../data/ForgeRegistryTagsProvider.java | 6 +-
.../data/GlobalLootModifierProvider.java | 17 +-
.../common/data/LanguageProvider.java | 29 +-
.../common/data/SoundDefinition.java | 2 +-
.../common/data/SoundDefinitionsProvider.java | 20 +-
.../common/data/package-info.java | 2 +-
...ecart.java => IForgeAbstractMinecart.java} | 51 +-
...ailBlock.java => IForgeBaseRailBlock.java} | 30 +-
.../common/extensions/IForgeBlock.java | 437 ++---
...TileEntity.java => IForgeBlockEntity.java} | 74 +-
.../common/extensions/IForgeBlockState.java | 393 ++---
.../extensions/IForgeContainerType.java | 15 +-
.../common/extensions/IForgeEffect.java | 111 --
.../extensions/IForgeEffectInstance.java | 133 --
.../common/extensions/IForgeEntity.java | 87 +-
.../common/extensions/IForgeFluid.java | 35 +-
.../common/extensions/IForgeFluidState.java | 29 +-
...Buffer.java => IForgeFriendlyByteBuf.java} | 33 +-
.../common/extensions/IForgeItem.java | 193 +--
.../common/extensions/IForgeItemStack.java | 173 +-
.../{IForgeWorld.java => IForgeLevel.java} | 2 +-
...IForgeChunk.java => IForgeLevelChunk.java} | 2 +-
.../common/extensions/IForgeMobEffect.java | 57 +
.../extensions/IForgeMobEffectInstance.java | 69 +
...urcePack.java => IForgePackResources.java} | 2 +-
...cture.java => IForgeStructureFeature.java} | 21 +-
.../common/extensions/IForgeTagAppender.java | 69 +
.../common/extensions/IForgeTagBuilder.java | 70 -
...nSupplier.java => IForgeTagContainer.java} | 18 +-
.../common/extensions/IForgeWorldServer.java | 27 -
.../loot/GlobalLootModifierSerializer.java | 12 +-
.../common/loot/IGlobalLootModifier.java | 4 +-
.../common/loot/LootModifier.java | 14 +-
.../common/loot/LootModifierManager.java | 30 +-
.../common/loot/LootTableIdCondition.java | 26 +-
.../common/model/TransformationHelper.java | 59 +-
.../animation/AnimationStateMachine.java | 22 +-
.../model/animation/CapabilityAnimation.java | 16 +-
.../common/model/animation/Clips.java | 46 +-
.../animation/IAnimationStateMachine.java | 4 +-
.../common/model/animation/IJoint.java | 4 +-
.../common/model/animation/IJointClip.java | 4 +-
.../common/model/animation/JointClips.java | 8 +-
.../modloading/ForgeModStateProvider.java | 32 +
.../common/property/Properties.java | 6 +-
.../common/ticket/AABBTicket.java | 12 +-
.../common/ticket/ChunkTicketManager.java | 2 +-
.../common/util/BlockSnapshot.java | 58 +-
.../common/util/ChunkCoordComparator.java | 6 +-
.../minecraftforge/common/util/Constants.java | 9 -
.../DummySavedData.java} | 18 +-
.../common/util/FakePlayer.java | 202 ++-
.../common/util/FakePlayerFactory.java | 10 +-
.../common/util/ForgeSoundType.java | 7 +-
.../common/util/INBTSerializable.java | 4 +-
.../common/util/ITeleporter.java | 23 +-
.../minecraftforge/common/util/JsonUtils.java | 10 +-
.../common/util/LazyOptional.java | 4 +-
.../common/util/LogMessageAdapter.java | 57 +
.../common/util/NonNullConsumer.java | 2 -
.../common/util/NonNullFunction.java | 2 -
.../common/util/NonNullPredicate.java | 2 -
.../common/util/NonNullSupplier.java | 2 -
.../common/util/ReverseTagWrapper.java | 14 +-
.../common/util/WorldCapabilityData.java | 32 +-
.../world/BiomeGenerationSettingsBuilder.java | 20 +-
.../common/world/ForgeChunkManager.java | 112 +-
.../common/world/ForgeWorldType.java | 48 +-
.../common/world/MobSpawnInfoBuilder.java | 20 +-
.../common/world/StructureSpawnManager.java | 55 +-
.../energy/CapabilityEnergy.java | 22 +-
.../minecraftforge/energy/EnergyStorage.java | 20 +-
.../net/minecraftforge/entity/PartEntity.java | 6 +-
.../event/AddReloadListenerEvent.java | 31 +-
.../event/AnvilUpdateEvent.java | 20 +-
.../event/AttachCapabilitiesEvent.java | 2 +-
.../minecraftforge/event/CommandEvent.java | 12 +-
.../event/DifficultyChangeEvent.java | 3 -
.../event/ForgeEventFactory.java | 316 ++--
.../event/ItemAttributeModifierEvent.java | 14 +-
.../event/LootTableLoadEvent.java | 12 +-
.../event/RegisterCommandsEvent.java | 16 +-
.../minecraftforge/event/RegistryEvent.java | 4 +-
.../minecraftforge/event/ServerChatEvent.java | 18 +-
.../event/TagsUpdatedEvent.java | 12 +-
.../net/minecraftforge/event/TickEvent.java | 16 +-
.../brewing/PlayerBrewedPotionEvent.java | 6 +-
.../event/brewing/PotionBrewEvent.java | 7 +-
.../enchanting/EnchantmentLevelSetEvent.java | 13 +-
.../entity/EntityAttributeCreationEvent.java | 18 +-
.../EntityAttributeModificationEvent.java | 24 +-
.../event/entity/EntityEvent.java | 63 +-
.../event/entity/EntityJoinWorldEvent.java | 14 +-
.../event/entity/EntityLeaveWorldEvent.java | 14 +-
.../event/entity/EntityMobGriefingEvent.java | 3 +-
.../event/entity/EntityMountEvent.java | 12 +-
.../entity/EntityStruckByLightningEvent.java | 13 +-
.../{living => }/EntityTeleportEvent.java | 29 +-
.../entity/EntityTravelToDimensionEvent.java | 14 +-
.../event/entity/PlaySoundAtEntityEvent.java | 19 +-
.../event/entity/ProjectileImpactEvent.java | 120 +-
.../event/entity/item/ItemEvent.java | 2 +-
.../event/entity/item/ItemExpireEvent.java | 2 +-
.../event/entity/item/ItemTossEvent.java | 10 +-
.../event/entity/living/AnimalTameEvent.java | 16 +-
.../entity/living/BabyEntitySpawnEvent.java | 39 +-
.../entity/living/EnderTeleportEvent.java | 57 -
.../entity/living/LivingAttackEvent.java | 6 +-
.../entity/living/LivingConversionEvent.java | 4 +-
.../entity/living/LivingDamageEvent.java | 5 +-
.../event/entity/living/LivingDeathEvent.java | 6 +-
.../living/LivingDestroyBlockEvent.java | 9 +-
.../event/entity/living/LivingDropsEvent.java | 10 +-
.../living/LivingEntityUseItemEvent.java | 4 +-
.../living/LivingEquipmentChangeEvent.java | 14 +-
.../event/entity/living/LivingEvent.java | 6 +-
.../living/LivingExperienceDropEvent.java | 10 +-
.../event/entity/living/LivingFallEvent.java | 4 +-
.../event/entity/living/LivingHealEvent.java | 4 +-
.../event/entity/living/LivingHurtEvent.java | 7 +-
.../entity/living/LivingKnockBackEvent.java | 6 +-
.../entity/living/LivingPackSizeEvent.java | 4 +-
.../living/LivingSetAttackTargetEvent.java | 4 +-
.../event/entity/living/LivingSpawnEvent.java | 41 +-
.../entity/living/LootingLevelEvent.java | 4 +-
.../living/PotionColorCalculationEvent.java | 10 +-
.../event/entity/living/PotionEvent.java | 37 +-
.../event/entity/living/ZombieEvent.java | 29 +-
.../event/entity/player/AdvancementEvent.java | 5 +-
.../event/entity/player/AnvilRepairEvent.java | 6 +-
.../event/entity/player/ArrowLooseEvent.java | 13 +-
.../event/entity/player/ArrowNockEvent.java | 27 +-
.../entity/player/AttackEntityEvent.java | 7 +-
.../event/entity/player/BonemealEvent.java | 16 +-
.../event/entity/player/CriticalHitEvent.java | 8 +-
.../entity/player/EntityItemPickupEvent.java | 6 +-
.../event/entity/player/FillBucketEvent.java | 18 +-
.../event/entity/player/ItemFishedEvent.java | 12 +-
.../event/entity/player/ItemTooltipEvent.java | 21 +-
.../entity/player/PlayerContainerEvent.java | 14 +-
.../entity/player/PlayerDestroyItemEvent.java | 24 +-
.../event/entity/player/PlayerEvent.java | 132 +-
.../entity/player/PlayerFlyableFallEvent.java | 4 +-
.../entity/player/PlayerInteractEvent.java | 68 +-
.../entity/player/PlayerSetSpawnEvent.java | 14 +-
.../entity/player/PlayerSleepInBedEvent.java | 15 +-
.../entity/player/PlayerWakeUpEvent.java | 4 +-
.../event/entity/player/PlayerXpEvent.java | 17 +-
.../player/SleepingLocationCheckEvent.java | 6 +-
.../entity/player/SleepingTimeCheckEvent.java | 7 +-
.../event/entity/player/UseHoeEvent.java | 8 +-
.../furnace/FurnaceFuelBurnTimeEvent.java | 18 +-
.../event/village/VillageSiegeEvent.java | 23 +-
.../event/village/VillagerTradesEvent.java | 15 +-
.../event/village/WandererTradesEvent.java | 16 +-
.../event/world/BiomeLoadingEvent.java | 27 +-
.../event/world/BlockEvent.java | 76 +-
.../event/world/ChunkDataEvent.java | 29 +-
.../event/world/ChunkEvent.java | 17 +-
.../event/world/ChunkWatchEvent.java | 20 +-
.../event/world/ExplosionEvent.java | 19 +-
.../event/world/NoteBlockEvent.java | 14 +-
.../event/world/PistonEvent.java | 20 +-
.../event/world/RegisterDimensionsEvent.java | 10 -
.../event/world/SaplingGrowTreeEvent.java | 8 +-
.../event/world/SleepFinishedTimeEvent.java | 4 +-
.../world/StructureSpawnListGatherEvent.java | 37 +-
.../event/world/WorldEvent.java | 77 +-
.../fluids/DispenseFluidContainer.java | 32 +-
.../fluids/FluidActionResult.java | 2 +-
.../fluids/FluidAttributes.java | 81 +-
.../net/minecraftforge/fluids/FluidStack.java | 49 +-
.../net/minecraftforge/fluids/FluidUtil.java | 90 +-
.../fluids/ForgeFlowingFluid.java | 57 +-
.../minecraftforge/fluids/IFluidBlock.java | 15 +-
.../net/minecraftforge/fluids/IFluidTank.java | 1 -
.../capability/CapabilityFluidHandler.java | 39 +-
.../fluids/capability/IFluidHandler.java | 1 -
.../fluids/capability/IFluidHandlerItem.java | 3 +-
.../fluids/capability/ItemFluidContainer.java | 8 +-
.../fluids/capability/TileFluidHandler.java | 23 +-
.../templates/EmptyFluidHandler.java | 1 -
.../templates/FluidHandlerItemStack.java | 12 +-
.../FluidHandlerItemStackSimple.java | 12 +-
.../capability/templates/FluidTank.java | 7 +-
.../templates/VoidFluidHandler.java | 1 -
.../capability/wrappers/BlockWrapper.java | 18 +-
.../wrappers/BucketPickupHandlerWrapper.java | 35 +-
.../wrappers/FluidBlockWrapper.java | 8 +-
.../wrappers/FluidBucketWrapper.java | 12 +-
.../minecraftforge/fml/ModLoadingStage.java | 165 --
.../fml/client/EarlyLoaderGUI.java | 146 --
.../client/registry/RenderingRegistry.java | 58 -
.../FMLFingerprintViolationEvent.java | 57 -
.../fml/relauncher/libraries/Artifact.java | 201 ---
.../relauncher/libraries/LibraryManager.java | 502 ------
.../relauncher/libraries/LinkRepository.java | 106 --
.../fml/relauncher/libraries/ModList.java | 250 ---
.../fml/relauncher/libraries/Repository.java | 166 --
.../relauncher/libraries/SnapshotJson.java | 167 --
.../client => fmlclient}/ClientHooks.java | 79 +-
.../client => fmlclient}/ClientModLoader.java | 80 +-
.../ConfigGuiHandler.java | 13 +-
.../fmlclient/EarlyLoaderGUI.java | 156 ++
.../ExtendedServerListData.java | 2 +-
.../client => fmlclient}/gui/GuiUtils.java | 267 +--
.../gui/screen/ConfirmationScreen.java | 5 -
.../gui/screen/LoadingErrorScreen.java | 90 +-
.../gui/screen/ModListScreen.java | 158 +-
.../gui/screen/NotificationScreen.java | 8 -
.../gui/widget/ExtendedButton.java | 22 +-
.../gui/widget/ModListWidget.java | 71 +-
.../gui/widget/Slider.java | 32 +-
.../gui/widget/UnicodeGlyphButton.java | 26 +-
.../registry/ClientRegistry.java | 26 +-
.../registry/IRenderFactory.java | 8 +-
.../fmlclient/registry/RenderingRegistry.java | 120 ++
.../{fml => fmllegacy}/BrandingControl.java | 11 +-
.../CrashReportExtender.java | 42 +-
.../{fml => fmllegacy}/DatagenModLoader.java | 18 +-
.../FMLWorldPersistenceHook.java | 32 +-
.../fmllegacy/ForgeBindings.java | 59 +
.../{fml => fmllegacy}/ForgeI18n.java | 6 +-
.../fmllegacy/ForgeStatesProvider.java | 60 +
.../LogicalSidedProvider.java | 7 +-
.../MavenVersionStringHelper.java | 2 +-
.../NoVizFallback.java} | 23 +-
.../{fml => fmllegacy}/RegistryObject.java | 4 +-
.../fmllegacy/SerialTransition.java | 56 +
.../TextComponentMessageFormatHandler.java | 12 +-
.../WorldPersistenceHooks.java | 17 +-
.../common/network/ByteBufUtils.java | 2 +-
.../common/network/PacketLoggingHandler.java | 46 +-
.../common/registry/GameRegistry.java | 2 +-
.../registry/IEntityAdditionalSpawnData.java | 8 +-
.../event/lifecycle/FMLModIdMappingEvent.java | 5 +-
.../hooks/BasicEventHooks.java | 36 +-
.../fmllegacy/network/ConfigSync.java | 59 +
.../network/ConnectionType.java | 2 +-
.../network/FMLConnectionData.java | 4 +-
.../network/FMLHandshakeHandler.java | 39 +-
.../network/FMLHandshakeMessages.java | 33 +-
.../network/FMLLoginWrapper.java | 24 +-
.../network/FMLMCRegisterPacketHandler.java | 22 +-
.../network/FMLNetworkConstants.java | 8 +-
.../network/FMLPlayMessages.java | 131 +-
.../network/FMLStatusPing.java | 33 +-
.../network/IContainerFactory.java | 16 +-
.../network/ICustomPacket.java | 34 +-
.../network/NetworkDirection.java | 34 +-
.../network/NetworkEvent.java | 46 +-
.../network/NetworkHooks.java | 97 +-
.../network/NetworkInitialization.java | 9 +-
.../network/NetworkInstance.java | 14 +-
.../network/NetworkRegistry.java | 22 +-
.../network/PacketDispatcher.java | 22 +-
.../network/PacketDistributor.java | 79 +-
.../network/event/EventNetworkChannel.java | 11 +-
.../network/simple/IndexedMessageCodec.java | 28 +-
.../network/simple/SimpleChannel.java | 40 +-
.../packs/DelegatingResourcePack.java | 62 +-
.../packs/ModFileResourcePack.java | 69 +-
.../packs/ResourcePackLoader.java | 53 +-
.../server/LanguageHook.java | 22 +-
.../server/ServerLifecycleHooks.java | 74 +-
.../server/ServerModLoader.java | 9 +-
.../util/ThreeConsumer.java | 2 +-
.../FMLServerAboutToStartEvent.java | 3 +-
.../FMLServerStartedEvent.java | 2 +-
.../FMLServerStartingEvent.java | 2 +-
.../FMLServerStoppedEvent.java | 2 +-
.../FMLServerStoppingEvent.java | 2 +-
.../ServerLifecycleEvent.java | 2 +-
.../event/lifecycle/GatherDataEvent.java | 3 +-
.../items/CapabilityItemHandler.java | 48 +-
.../minecraftforge/items/IItemHandler.java | 7 +-
.../items/IItemHandlerModifiable.java | 2 +-
.../items/ItemHandlerHelper.java | 26 +-
.../items/ItemStackHandler.java | 24 +-
.../minecraftforge/items/SlotItemHandler.java | 14 +-
.../items/VanillaHopperItemHandler.java | 8 +-
.../items/VanillaInventoryCodeHooks.java | 70 +-
.../items/wrapper/CombinedInvWrapper.java | 2 +-
.../items/wrapper/EmptyHandler.java | 2 +-
.../items/wrapper/EntityArmorInvWrapper.java | 7 +-
.../wrapper/EntityEquipmentInvWrapper.java | 31 +-
.../items/wrapper/EntityHandsInvWrapper.java | 7 +-
.../items/wrapper/InvWrapper.java | 10 +-
.../items/wrapper/PlayerArmorInvWrapper.java | 18 +-
.../items/wrapper/PlayerInvWrapper.java | 4 +-
.../items/wrapper/PlayerMainInvWrapper.java | 14 +-
.../wrapper/PlayerOffhandInvWrapper.java | 4 +-
.../items/wrapper/RangedWrapper.java | 2 +-
.../items/wrapper/RecipeWrapper.java | 14 +-
.../items/wrapper/SidedInvWrapper.java | 14 +-
.../logging/ModelLoaderErrorMessage.java | 10 +-
.../network/ForgeConnectionNetworkFilter.java | 35 +-
.../network/NetworkFilters.java | 6 +-
.../VanillaConnectionNetworkFilter.java | 37 +-
.../network/VanillaPacketFilter.java | 20 +-
.../network/VanillaPacketSplitter.java | 101 +-
.../registries/DataSerializerEntry.java | 8 +-
.../registries/DeferredRegister.java | 7 +-
.../registries/ForgeRegistries.java | 161 +-
.../registries/ForgeRegistry.java | 97 +-
.../registries/ForgeRegistryEntry.java | 2 +-
.../minecraftforge/registries/GameData.java | 192 +--
.../registries/IForgeRegistry.java | 6 +-
.../registries/IForgeRegistryEntry.java | 2 +-
.../registries/IForgeRegistryInternal.java | 2 +-
.../registries/IForgeRegistryModifiable.java | 2 +-
.../registries/IRegistryDelegate.java | 2 +-
.../NamespacedDefaultedWrapper.java | 16 +-
.../registries/NamespacedWrapper.java | 18 +-
.../registries/ObjectHolderRef.java | 4 +-
.../registries/ObjectHolderRegistry.java | 14 +-
.../registries/RegistryBuilder.java | 2 +-
.../registries/RegistryDelegate.java | 2 +-
.../registries/RegistryManager.java | 10 +-
.../ISelectiveResourceReloadListener.java | 46 -
.../resource/SelectiveReloadStateHandler.java | 85 -
.../minecraftforge/resource/package-info.java | 3 +-
.../server/command/ChunkGenWorker.java | 31 +-
.../server/command/CommandDimensions.java | 25 +-
.../server/command/CommandEntity.java | 48 +-
.../server/command/CommandGenerate.java | 26 +-
.../server/command/CommandModList.java | 10 +-
.../server/command/CommandSetDimension.java | 44 +-
.../server/command/CommandTps.java | 24 +-
.../server/command/CommandTrack.java | 60 +-
.../server/command/ConfigCommand.java | 24 +-
.../server/command/EnumArgument.java | 18 +-
.../server/command/ForgeCommand.java | 6 +-
.../server/command/ModIdArgument.java | 4 +-
.../server/command/TextComponentHelper.java | 32 +-
.../server/command/package-info.java | 4 +-
.../console/ConsoleCommandCompleter.java | 4 +-
.../permission/DefaultPermissionHandler.java | 2 +-
.../server/permission/PermissionAPI.java | 4 +-
.../permission/context/AreaContext.java | 8 +-
.../permission/context/BlockPosContext.java | 14 +-
.../server/permission/context/Context.java | 8 +-
.../permission/context/ContextKeys.java | 12 +-
.../server/permission/context/IContext.java | 8 +-
.../permission/context/PlayerContext.java | 12 +-
.../permission/context/TargetContext.java | 6 +-
.../permission/context/WorldContext.java | 12 +-
.../permission/context/package-info.java | 8 +-
.../server/permission/package-info.java | 8 +-
.../server/timings/ForgeTimings.java | 1 -
.../server/timings/TimeTracker.java | 6 +-
.../versions/forge/ForgeVersion.java | 9 +-
.../versions/mcp/MCPVersion.java | 21 +-
.../resources/META-INF/accesstransformer.cfg | 731 ++++----
src/main/resources/META-INF/coremods.json | 2 +-
.../META-INF/fieldtomethodtransformers.js | 90 -
.../net.minecraftforge.fml.IBindingsProvider | 1 +
.../net.minecraftforge.fml.IModStateProvider | 2 +
...rge.forgespi.language.IModLanguageProvider | 2 -
.../resources/assets/forge/lang/en_us.json | 8 +-
.../resources/assets/forge/lang/en_us.lang | 171 --
.../coremods/field_to_instanceof.json | 181 +-
.../resources/coremods/field_to_method.js | 81 +
src/main/resources/forge.exc | 114 +-
src/main/resources/forge.sas | 219 +--
.../ForgeConfigSpecTest.java | 29 +-
.../net/minecraftforge/debug/CodecsTest.java | 18 +-
.../debug/CustomSoundTypeTest.java | 24 +-
.../debug/DataGeneratorTest.java | 89 +-
.../debug/DeferredRegistryTest.java | 17 +-
.../minecraftforge/debug/PotionEventTest.java | 6 +-
.../debug/block/BasePlaceEventTest.java | 2 +-
.../debug/block/CustomPlantTypeTest.java | 38 +-
.../debug/block/CustomRespawnTest.java | 53 +-
.../debug/block/CustomSignsTest.java | 81 +-
.../debug/block/FlowerPotTest.java | 12 +-
.../debug/block/HarvestToolTest.java | 10 +-
.../debug/block/NeighborNotifyEventTest.java | 2 +-
.../debug/block/PistonEventTest.java | 52 +-
.../debug/block/PlaceEventTest.java | 2 +-
.../debug/block/ScaffoldingTest.java | 31 +-
.../debug/block/SlipperinessTest.java | 22 +-
.../debug/block/StickyBlockTest.java | 10 +-
.../debug/block/package-info.java | 2 +-
.../debug/chat/CommandEventTest.java | 27 +-
.../debug/chat/EntitySelectorTest.java | 26 +-
.../debug/chat/package-info.java | 2 +-
.../debug/client/CustomTASTest.java | 30 +-
.../debug/client/OverlayLayersTest.java | 104 ++
.../client/model/CompositeModelTest.java | 50 +-
.../client/model/DynBucketModelTest.java | 18 +-
.../client/model/MultiLayerModelTest.java | 18 +-
.../client/model/NewModelLoaderTest.java | 103 +-
.../client/model/TRSRTransformerTest.java | 40 +-
.../debug/client/model/package-info.java | 2 +-
.../LinearTextTextureFilteringTest.java | 6 +-
.../NameplateRenderingEventTest.java | 16 +-
.../rendering/RenderLocalPlayerTest.java | 8 +-
.../debug/client/rendering/ShaderFixTest.java | 8 +-
.../debug/client/rendering/package-info.java | 2 +-
.../debug/command/EnumArgumentTest.java | 8 +-
.../debug/command/package-info.java | 2 +-
.../debug/entity/AddEntityAttributeTest.java | 6 +-
.../CreateEntityClassificationTest.java | 4 +-
.../debug/entity/EntityTeleportEventTest.java | 2 +-
.../debug/entity/FishingBobberEventTest.java | 26 +-
.../debug/entity/GravityAttributeTest.java | 52 +-
.../living/LivingConversionEventTest.java | 14 +-
.../debug/entity/package-info.java | 2 +-
.../player/PlayerAttackKnockbackTest.java | 26 +-
.../player/PlayerGameModeEventTest.java | 4 +-
.../entity/player/PlayerNameEventTest.java | 4 +-
.../debug/entity/player/package-info.java | 2 +-
.../debug/fluid/FiniteWaterTest.java | 6 +-
.../debug/fluid/MilkFluidTest.java | 8 +-
.../debug/fluid/NewFluidTest.java | 81 +-
.../debug/fluid/package-info.java | 2 +-
.../loot/GlobalLootModifiersTest.java | 107 +-
.../debug/gameplay/loot/package-info.java | 2 +-
.../debug/item/CustomElytraTest.java | 49 +-
.../debug/item/EnderMaskTest.java | 19 +-
.../debug/item/ItemAttributeModifierTest.java | 14 +-
.../debug/item/MusicDiscTest.java | 14 +-
.../item/RangedMobsUseModdedWeaponsTest.java | 37 +-
.../debug/item/package-info.java | 2 +-
.../debug/misc/ContainerTypeTest.java | 74 +-
.../debug/misc/CustomTagTypesTest.java | 65 +-
.../debug/misc/FakePlayerTest.java | 16 +-
.../debug/misc/package-info.java | 2 +-
.../minecraftforge/debug/package-info.java | 3 +-
.../debug/world/BiomeLoadingEventTest.java | 2 +-
.../debug/world/ChunkWatchEventTest.java | 6 +-
.../debug/world/DimensionSettingsTest.java | 48 +-
.../debug/world/ForgeChunkManagerTest.java | 42 +-
.../debug/world/ForgeWorldTypeTest.java | 24 +-
.../debug/world/RaidEnumTest.java | 6 +-
.../StructureSpawnListGatherEventTest.java | 16 +-
.../world/WorldgenRegistryDesyncTest.java | 16 +-
.../debug/world/package-info.java | 2 +-
src/test/resources/META-INF/mods.toml | 2 +
.../blockstates/obj_block.json | 8 -
.../models/block/obj_block.json | 10 -
.../models/item/item_layers.json | 9 -
.../models/item/separate_perspective.json | 15 -
.../loot_modifiers/global_loot_modifiers.json | 8 -
.../loot_modifiers/smelting.json | 18 -
.../loot_modifiers/wheat_harvest.json | 18 -
.../userdev/ClasspathLocator.java | 91 -
.../userdev/FMLDevClientLaunchProvider.java | 108 --
.../userdev/FMLDevDataLaunchProvider.java | 71 -
.../userdev/FMLDevServerLaunchProvider.java | 101 --
.../FMLUserdevClientLaunchProvider.java | 56 -
.../userdev/FMLUserdevDataLaunchProvider.java | 66 -
.../userdev/FMLUserdevLaunchProvider.java | 98 --
.../FMLUserdevServerLaunchProvider.java | 58 -
.../minecraftforge/userdev/LaunchTesting.java | 173 --
...mods.modlauncher.api.ILaunchHandlerService | 6 -
...w.mods.modlauncher.api.INameMappingService | 1 -
...necraftforge.forgespi.locating.IModLocator | 1 -
1990 files changed, 35661 insertions(+), 37544 deletions(-)
create mode 100644 buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy
create mode 100644 buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJson.groovy
create mode 100644 buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy
create mode 100644 fmlcore/build.gradle
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/CrashReportCallables.java
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/DeferredWorkQueue.java (65%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/DistExecutor.java (100%)
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/I18NParser.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/IBindingsProvider.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/ICrashCallable.java
rename src/main/java/net/minecraftforge/fml/ExtensionPoint.java => fmlcore/src/main/java/net/minecraftforge/fml/IExtensionPoint.java (76%)
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/IModLoadingState.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/IModStateProvider.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/IModStateTransition.java
rename src/main/java/net/minecraftforge/fml/common/ICrashCallable.java => fmlcore/src/main/java/net/minecraftforge/fml/ISystemReportExtender.java (83%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/InterModComms.java (92%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/LoadingFailedException.java (100%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/Logging.java (93%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/LogicalSide.java (100%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/ModContainer.java (86%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/ModList.java (87%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/ModLoader.java (66%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/ModLoadingContext.java (80%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/ModLoadingException.java (91%)
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingPhase.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingStage.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingState.java
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/ModLoadingWarning.java (91%)
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/ModStateManager.java
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/ModWorkManager.java (100%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/OptionalMod.java (100%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/StartupMessageManager.java (70%)
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/ThreadSelector.java
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/VersionChecker.java (89%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/config/ConfigFileTypeHandler.java (98%)
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/config/ConfigTracker.java (69%)
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigEvent.java
create mode 100644 fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigSpec.java
rename {src => fmlcore/src}/main/java/net/minecraftforge/fml/config/ModConfig.java (77%)
rename {src/main/java/net/minecraftforge/fml/event/lifecycle => fmlcore/src/main/java/net/minecraftforge/fml/event}/IModBusEvent.java (94%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/CertificateHelper.java (98%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/EnhancedRuntimeException.java (98%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/LoaderException.java (91%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/LoaderExceptionModCrash.java (96%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/ObfuscationReflectionHelper.java (93%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/thread/EffectiveSide.java (95%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/thread/SidedThreadGroup.java (90%)
rename {src/main/java/net/minecraftforge/fml/common => fmlcore/src/main/java/net/minecraftforge/fml/util}/thread/SidedThreadGroups.java (95%)
create mode 100644 fmlloader/build.gradle
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/common/asm/CapabilityInjectDefinalize.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/common/asm/ObjectHolderDefinalize.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/common/asm/RuntimeEnumExtender.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/AdvancedLogMessageAdapter.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/BackgroundWaiter.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/EarlyLoadingException.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/FMLConfig.java (91%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/FMLEnvironment.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/FMLLoader.java (71%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/FMLPaths.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/FMLServiceProvider.java (83%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/FileUtils.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/JarVersionLookupHandler.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/LanguageLoadingProvider.java (84%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/LauncherVersion.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/LibraryFinder.java (82%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/LoadingModList.java (98%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/LogMarkers.java (92%)
rename {src/userdev/java/net/minecraftforge/userdev => fmlloader/src/main/java/net/minecraftforge/fml/loading}/MCPNamingService.java (71%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/MavenCoordinateResolver.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.java (76%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/ModJarURLHandler.java (88%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/ModSorter.java (64%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/RuntimeDistCleaner.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/StringSubstitutor.java (94%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/StringUtils.java (98%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/TracingPrintStream.java (100%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/VersionInfo.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/VersionSupportMatrix.java (76%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/log4j/ForgeHighlight.java (98%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/AbstractJarFileLocator.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/BackgroundScanHandler.java (85%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/CoreModFile.java (100%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ExplodedDirectoryLocator.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/InvalidModFileException.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/InvalidModIdentifier.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/MavenDirectoryLocator.java (88%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/MinecraftLocator.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModAnnotation.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModAnnotationVisitor.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModClassVisitor.java (100%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ModDiscoverer.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModFieldVisitor.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModFile.java (75%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModFileInfo.java (76%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModFileParser.java (84%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModInfo.java (95%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ModJarMetadata.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModListHandler.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModMethodVisitor.java (100%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/moddiscovery/ModValidator.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/ModsFolderLocator.java (83%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/NightConfigWrapper.java (95%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/moddiscovery/Scanner.java (86%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/progress/ClientVisualization.java (95%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/progress/EarlyProgressVisualization.java (69%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/progress/StartupMessageManager.java (100%)
rename {src/userdev/java/net/minecraftforge/userdev => fmlloader/src/main/java/net/minecraftforge/fml/loading/targets}/ArgumentList.java (99%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonClientLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonDevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonServerLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonUserdevLaunchHandler.java
rename src/main/java/net/minecraftforge/client/IRenderHandler.java => fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLClientDevLaunchHandler.java (54%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLClientLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLClientUserdevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLDataUserdevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLServerDevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLServerLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLServerUserdevLaunchHandler.java
rename src/main/java/net/minecraftforge/common/util/DummyWorldSaveData.java => fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/FMLUserdevLaunchHandler.java (58%)
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeClientDevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeClientLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeClientUserdevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeDataDevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeDataUserdevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeServerDevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeServerLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeServerUserdevLaunchHandler.java
create mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeUserdevLaunchHandler.java
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/toposort/CyclePresentException.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/toposort/StronglyConnectedComponentDetector.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/fml/loading/toposort/TopologicalSort.java (99%)
rename {src/fmllauncher => fmlloader/src/main}/java/net/minecraftforge/server/ServerMain.java (100%)
rename {src/fmllauncher => fmlloader/src/main}/resources/META-INF/defaultfmlconfig.toml (100%)
create mode 100644 fmlloader/src/main/resources/META-INF/services/cpw.mods.cl.ModularURLHandler.IURLProvider
create mode 100644 fmlloader/src/main/resources/META-INF/services/cpw.mods.modlauncher.api.ILaunchHandlerService
create mode 100644 fmlloader/src/main/resources/META-INF/services/cpw.mods.modlauncher.api.INameMappingService
rename {src/fmllauncher => fmlloader/src/main}/resources/META-INF/services/cpw.mods.modlauncher.api.ITransformationService (100%)
rename {src/fmllauncher => fmlloader/src/main}/resources/META-INF/services/cpw.mods.modlauncher.serviceapi.ILaunchPluginService (100%)
rename {src/fmllauncher => fmlloader/src/main}/resources/META-INF/services/cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService (100%)
rename {src/fmllauncher => fmlloader/src/main}/resources/META-INF/services/net.minecraftforge.forgespi.locating.IModLocator (74%)
create mode 100644 fmlloader/src/main/resources/log4j2.xml
create mode 120000 fmlonly/src/fmlcommon
create mode 100644 fmlonly/src/main/java/net/minecraftforge/fmlonly/FMLOnlyBindings.java
create mode 100644 fmlonly/src/main/java/net/minecraftforge/fmlonlyclient/ClientModLoader.java
create mode 100644 fmlonly/src/main/resources/META-INF/coremods.json
create mode 100644 fmlonly/src/main/resources/META-INF/services/net.minecraftforge.fml.IBindingsProvider
create mode 100644 fmlonly/src/main/resources/META-INF/services/net.minecraftforge.fml.IModStateProvider
create mode 100644 fmlonly/src/main/resources/coremods/load_fml_client.js
rename installer_logo.png => forge_installer_logo.png (100%)
create mode 100644 javafmllanguage/build.gradle
rename {src => javafmllanguage/src}/main/java/net/minecraftforge/fml/common/Mod.java (95%)
rename {src/main/java/net/minecraftforge/fml => javafmllanguage/src/main/java/net/minecraftforge/fml/javafmlmod}/AutomaticEventSubscriber.java (82%)
rename {src => javafmllanguage/src}/main/java/net/minecraftforge/fml/javafmlmod/FMLJavaModLanguageProvider.java (74%)
rename {src => javafmllanguage/src}/main/java/net/minecraftforge/fml/javafmlmod/FMLJavaModLoadingContext.java (100%)
rename {src => javafmllanguage/src}/main/java/net/minecraftforge/fml/javafmlmod/FMLModContainer.java (89%)
create mode 100644 javafmllanguage/src/main/resources/META-INF/services/net.minecraftforge.forgespi.language.IModLanguageProvider
create mode 100644 mclanguage/build.gradle
create mode 100644 mclanguage/src/main/java/net/minecraftforge/fml/mclanguageprovider/MinecraftModContainer.java
rename {src => mclanguage/src}/main/java/net/minecraftforge/fml/mclanguageprovider/MinecraftModLanguageProvider.java (69%)
create mode 100644 mclanguage/src/main/resources/META-INF/services/net.minecraftforge.forgespi.language.IModLanguageProvider
create mode 100644 patches/minecraft/com/mojang/blaze3d/pipeline/RenderTarget.java.patch
create mode 100644 patches/minecraft/com/mojang/blaze3d/platform/Window.java.patch
create mode 100644 patches/minecraft/com/mojang/blaze3d/vertex/BufferBuilder.java.patch
delete mode 100644 patches/minecraft/com/mojang/blaze3d/vertex/IVertexBuilder.java.patch
create mode 100644 patches/minecraft/com/mojang/blaze3d/vertex/VertexConsumer.java.patch
create mode 100644 patches/minecraft/com/mojang/blaze3d/vertex/VertexFormat.java.patch
create mode 100644 patches/minecraft/com/mojang/blaze3d/vertex/VertexFormatElement.java.patch
create mode 100644 patches/minecraft/com/mojang/math/Matrix3f.java.patch
create mode 100644 patches/minecraft/com/mojang/math/Matrix4f.java.patch
create mode 100644 patches/minecraft/com/mojang/math/Transformation.java.patch
create mode 100644 patches/minecraft/com/mojang/math/Vector3f.java.patch
create mode 100644 patches/minecraft/com/mojang/math/Vector4f.java.patch
create mode 100644 patches/minecraft/net/minecraft/CrashReport.java.patch
create mode 100644 patches/minecraft/net/minecraft/CrashReportCategory.java.patch
create mode 100644 patches/minecraft/net/minecraft/SharedConstants.java.patch
create mode 100644 patches/minecraft/net/minecraft/Util.java.patch
delete mode 100644 patches/minecraft/net/minecraft/advancements/AdvancementManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/advancements/PlayerAdvancements.java.patch
rename patches/minecraft/net/minecraft/advancements/{criterion => critereon}/ItemPredicate.java.patch (54%)
delete mode 100644 patches/minecraft/net/minecraft/block/AbstractBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/AbstractFireBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/AbstractRailBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/AbstractTopPlantBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/BambooBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/BeehiveBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/Block.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/BlockState.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/Blocks.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/BushBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/CactusBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/CampfireBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/ChestBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/ChorusFlowerBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/CocoaBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/ComparatorBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/CropsBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/DeadBushBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/DetectorRailBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/DoublePlantBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/DropperBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/EnchantingTableBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/FallingBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/FarmlandBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/FireBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/FlowerPotBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/FlowingFluidBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/ITileEntityProvider.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/LeavesBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/MushroomBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/NetherWartBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/NoteBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/OreBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/PistonBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/PistonBlockStructureHelper.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/PortalSize.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/PoweredRailBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/RailBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/RailState.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/RedstoneDiodeBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/RedstoneOreBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/RedstoneWireBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SaplingBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SeaGrassBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SoundType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SpawnerBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SpongeBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SpreadableSnowyDirtBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/StairsBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/StemBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SugarCaneBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/SweetBerryBushBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/TNTBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/TallGrassBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/TrapDoorBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/TripWireHookBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/TurtleEggBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/VineBlock.java.patch
delete mode 100644 patches/minecraft/net/minecraft/block/WebBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/Camera.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/GameSettings.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/KeyMapping.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/KeyboardHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/KeyboardListener.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/MainWindow.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/MouseHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/MouseHelper.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/Options.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/Screenshot.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/ToggleKeyMapping.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/User.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/audio/SoundEngine.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/audio/SoundHandler.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/color/block/BlockColors.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/color/item/ItemColors.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/entity/player/AbstractClientPlayerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/entity/player/ClientPlayerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/entity/player/RemoteClientPlayerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/DisplayEffectsScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/Gui.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/IngameGui.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/MapItemRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/MapRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/ResourceLoadProgressGui.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/ScreenManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/advancements/AdvancementTabGui.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/advancements/AdvancementTabType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/advancements/AdvancementsScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/components/AbstractSelectionList.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/components/AbstractWidget.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/components/BossHealthOverlay.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/components/DebugScreenOverlay.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/overlay/BossOverlayGui.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/overlay/DebugOverlayGui.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/recipebook/RecipeBookGui.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/BiomeGeneratorTypeScreens.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/ControlsScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/CreateWorldScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/DeathScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/EnchantmentScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/LanguageScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/MainMenuScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/MultiplayerScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/OptionsScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/PackLoadingManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/PackScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/Screen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/ServerSelectionList.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/WorldOptionsScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/inventory/ContainerScreen.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/screen/inventory/CreativeScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/DeathScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/LanguageSelectScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/LoadingOverlay.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/MenuScreens.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/OptionsScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/Screen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/TitleScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTab.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementTabType.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/advancements/AdvancementsScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/controls/ControlList.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/controls/ControlsScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/inventory/EffectRenderingInventoryScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/inventory/EnchantmentScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionModel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/packs/PackSelectionScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/recipebook/RecipeBookComponent.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldGenSettingsComponent.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/gui/screens/worldselection/WorldPreset.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/widget/Widget.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/widget/list/AbstractList.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/gui/widget/list/KeyBindingList.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/model/geom/LayerDefinitions.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/multiplayer/ClientChunkCache.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/multiplayer/ClientChunkProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/multiplayer/ClientHandshakePacketListenerImpl.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/multiplayer/ClientLevel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/multiplayer/ClientPacketListener.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/multiplayer/MultiPlayerGameMode.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/multiplayer/PlayerController.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/multiplayer/PlayerInfo.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/multiplayer/ServerStatusPinger.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/network/ServerPinger.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/network/handshake/ClientHandshakeNetHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/network/login/ClientLoginNetHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/network/play/ClientPlayNetHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/network/play/NetworkPlayerInfo.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/particle/DiggingParticle.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/particle/ParticleEngine.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/particle/ParticleManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/particle/TerrainParticle.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/player/AbstractClientPlayer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/player/LocalPlayer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/player/RemotePlayer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/ActiveRenderInfo.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/Atlases.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/BlockModelRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/BlockModelShapes.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/BlockRendererDispatcher.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/BufferBuilder.java.patch
rename patches/minecraft/net/minecraft/client/{world/DimensionRenderInfo.java.patch => renderer/DimensionSpecialEffects.java.patch} (76%)
create mode 100644 patches/minecraft/net/minecraft/client/renderer/EffectInstance.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/FirstPersonRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/FluidBlockRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/ItemBlockRenderTypes.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/ItemInHandRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/ItemModelMesher.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/ItemModelShaper.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/OverlayRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/PostChain.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/RenderType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/RenderTypeLookup.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/ScreenEffectRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/Sheets.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/WorldRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/BlockModelShaper.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/BlockRenderDispatcher.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/LiquidBlockRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/ModelBlockRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/BakedQuad.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/BlockModel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/FaceBakery.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/ItemModelGenerator.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/ItemOverrides.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransform.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/ItemTransforms.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/block/model/MultiVariant.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/blockentity/BlockEntityRenderers.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/blockentity/ChestRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/blockentity/PistonHeadRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/color/BlockColors.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/color/ItemColors.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/EntityRenderDispatcher.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/EntityRendererManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/ItemEntityRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/LivingEntityRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/LivingRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/PlayerRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/layers/BipedArmorLayer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/entity/player/PlayerRenderer.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/item/ItemProperties.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/BakedQuad.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/BlockModel.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/FaceBakery.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/IBakedModel.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/IModelTransform.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/IUnbakedModel.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/ItemCameraTransforms.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/ItemModelGenerator.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/ItemOverrideList.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/ItemTransformVec3f.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/ModelBakery.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/ModelManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/MultipartBakedModel.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/SimpleBakedModel.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/UVTransformationUtil.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/VariantList.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/model/WeightedBakedModel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/texture/AbstractTexture.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/texture/AtlasTexture.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/texture/NativeImage.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/texture/Texture.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/renderer/texture/TextureAtlas.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/tileentity/ChestTileEntityRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/tileentity/PistonTileEntityRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/tileentity/SignTileEntityRenderer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/vertex/VertexFormat.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/renderer/vertex/VertexFormatElement.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/resources/ClientLanguageMap.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/resources/FoliageColorReloadListener.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/resources/GrassColorReloadListener.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/resources/I18n.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/resources/JsonReloadListener.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/resources/Language.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/resources/LanguageManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/language/ClientLanguage.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/language/I18n.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/language/LanguageInfo.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/language/LanguageManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/BakedModel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/ModelBakery.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/ModelManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/ModelState.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/MultiPartBakedModel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/SimpleBakedModel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/UnbakedModel.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/resources/model/WeightedBakedModel.java.patch
rename patches/minecraft/net/minecraft/client/{util/SearchTreeManager.java.patch => searchtree/SearchRegistry.java.patch} (58%)
create mode 100644 patches/minecraft/net/minecraft/client/server/IntegratedServer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/settings/KeyBinding.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/settings/ToggleableKeyBinding.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/shader/Framebuffer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/shader/ShaderGroup.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/shader/ShaderInstance.java.patch
create mode 100644 patches/minecraft/net/minecraft/client/sounds/SoundEngine.java.patch
delete mode 100644 patches/minecraft/net/minecraft/client/world/ClientWorld.java.patch
delete mode 100644 patches/minecraft/net/minecraft/command/Commands.java.patch
delete mode 100644 patches/minecraft/net/minecraft/command/arguments/ArgumentTypes.java.patch
delete mode 100644 patches/minecraft/net/minecraft/command/arguments/BlockStateParser.java.patch
delete mode 100644 patches/minecraft/net/minecraft/command/arguments/EntitySelectorParser.java.patch
delete mode 100644 patches/minecraft/net/minecraft/command/impl/LocateCommand.java.patch
delete mode 100644 patches/minecraft/net/minecraft/command/impl/SpreadPlayersCommand.java.patch
delete mode 100644 patches/minecraft/net/minecraft/command/impl/TeleportCommand.java.patch
create mode 100644 patches/minecraft/net/minecraft/commands/Commands.java.patch
create mode 100644 patches/minecraft/net/minecraft/commands/arguments/selector/EntitySelectorParser.java.patch
create mode 100644 patches/minecraft/net/minecraft/commands/synchronization/ArgumentTypes.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/MappedRegistry.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/Registry.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/RegistryAccess.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/dispenser/DispenseItemBehavior.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/particles/BlockParticleOption.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/particles/ItemParticleOption.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/particles/ParticleType.java.patch
create mode 100644 patches/minecraft/net/minecraft/core/particles/ParticleTypes.java.patch
delete mode 100644 patches/minecraft/net/minecraft/crash/CrashReport.java.patch
delete mode 100644 patches/minecraft/net/minecraft/crash/CrashReportCategory.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/BlockTagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/BuiltinRegistries.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/DirectoryCache.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/EntityTypeTagsProvider.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/FluidTagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/HashCache.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/ItemTagsProvider.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/LootTableProvider.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/RecipeProvider.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/TagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/loot/BlockLoot.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/loot/BlockLootTables.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/loot/EntityLoot.java.patch
delete mode 100644 patches/minecraft/net/minecraft/data/loot/EntityLootTables.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/loot/LootTableProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/recipes/RecipeProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/tags/BlockTagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/tags/EntityTypeTagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/tags/FluidTagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/tags/ItemTagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/tags/TagsProvider.java.patch
create mode 100644 patches/minecraft/net/minecraft/data/worldgen/biome/Biomes.java.patch
delete mode 100644 patches/minecraft/net/minecraft/dispenser/IDispenseItemBehavior.java.patch
delete mode 100644 patches/minecraft/net/minecraft/enchantment/Enchantment.java.patch
delete mode 100644 patches/minecraft/net/minecraft/enchantment/EnchantmentHelper.java.patch
delete mode 100644 patches/minecraft/net/minecraft/enchantment/EnchantmentType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/enchantment/Enchantments.java.patch
delete mode 100644 patches/minecraft/net/minecraft/enchantment/FrostWalkerEnchantment.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/Entity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/EntityClassification.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/EntitySpawnPlacementRegistry.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/EntityType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/FlyingEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ICrossbowUser.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/IShearable.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/LivingEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/MobEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/attributes/Attribute.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/attributes/AttributeModifierMap.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/attributes/GlobalEntityTypeAttributes.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/brain/memory/MemoryModuleType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/brain/schedule/Activity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/brain/schedule/Schedule.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/brain/sensor/SensorType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/brain/task/FarmTask.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/brain/task/ShootTargetTask.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/BreakBlockGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/BreakDoorGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/EatGrassGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/MeleeAttackGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/RangedBowAttackGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/RangedCrossbowAttackGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/ai/goal/TriggerSkeletonTrapGoal.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/boss/WitherEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/boss/dragon/EnderDragonEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/boss/dragon/EnderDragonPartEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/effect/LightningBoltEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/ArmorStandEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/BoatEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/EnderPearlEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/ExperienceOrbEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/FallingBlockEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/HangingEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/ItemEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/LeashKnotEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/PaintingType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/minecart/AbstractMinecartEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/minecart/CommandBlockMinecartEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/minecart/ContainerMinecartEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/minecart/FurnaceMinecartEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/minecart/MinecartEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/item/minecart/SpawnerMinecartEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/merchant/villager/AbstractVillagerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/merchant/villager/VillagerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/merchant/villager/VillagerProfession.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/AbstractSkeletonEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/CreeperEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/EndermanEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/EvokerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/HoglinEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/IllusionerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/MagmaCubeEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/PillagerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/RavagerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/ShulkerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/SilverfishEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/SlimeEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/SpiderEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/ZombieEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/ZombieVillagerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/ZombifiedPiglinEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/piglin/AbstractPiglinEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/piglin/PiglinEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/piglin/PiglinTasks.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/monster/piglin/StartAdmiringItemTask.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/AnimalEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/BeeEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/CatEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/FoxEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/IronGolemEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/MooshroomEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/OcelotEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/ParrotEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/PigEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/PolarBearEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/RabbitEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/SheepEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/SnowGolemEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/WolfEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/horse/AbstractHorseEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/passive/horse/HorseEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/player/PlayerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/player/PlayerInventory.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/player/ServerPlayerEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/AbstractArrowEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/DamagingProjectileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/FireballEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/FireworkRocketEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/FishingBobberEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/LlamaSpitEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/ProjectileHelper.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/ShulkerBulletEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/SmallFireballEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/ThrowableEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/entity/projectile/WitherSkullEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/fluid/FlowingFluid.java.patch
delete mode 100644 patches/minecraft/net/minecraft/fluid/FluidState.java.patch
delete mode 100644 patches/minecraft/net/minecraft/fluid/LavaFluid.java.patch
delete mode 100644 patches/minecraft/net/minecraft/fluid/WaterFluid.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/AbstractFurnaceContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/BeaconContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/BrewingStandContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/Container.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/ContainerType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/CraftingResultSlot.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/EnchantmentContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/FurnaceResultSlot.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/GrindstoneContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/PlayerContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/RecipeBookContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/inventory/container/RepairContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ArmorItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ArrowItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/AxeItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/BlockItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/BoneMealItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/BowItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/BucketItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ChorusFruitItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/DyeColor.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/DyeableHorseArmorItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ElytraItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/FilledMapItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/FishBucketItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/Food.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/HoeItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/HorseArmorItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/Item.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ItemGroup.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ItemStack.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/Items.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/MerchantOffer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/MilkBucketItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/MinecartItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/MusicDiscItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/PickaxeItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/Rarity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ShearsItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ShovelItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/ToolItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/WallOrFloorItem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/BannerDuplicateRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/BookCloningRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/CookingRecipeSerializer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/IRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/IRecipePlacer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/IRecipeSerializer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/Ingredient.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/RecipeManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/RepairItemRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/ShapedRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/ShapelessRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/ShulkerBoxColoringRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/SingleItemRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/SmithingRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/item/crafting/SpecialRecipeSerializer.java.patch
create mode 100644 patches/minecraft/net/minecraft/locale/Language.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/LootContext.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/LootParameterSets.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/LootPool.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/LootTable.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/LootTableManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/conditions/RandomChanceWithLooting.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/functions/LootingEnchantBonus.java.patch
delete mode 100644 patches/minecraft/net/minecraft/loot/functions/Smelt.java.patch
delete mode 100644 patches/minecraft/net/minecraft/nbt/CompoundNBT.java.patch
create mode 100644 patches/minecraft/net/minecraft/nbt/CompoundTag.java.patch
delete mode 100644 patches/minecraft/net/minecraft/nbt/CompressedStreamTools.java.patch
rename patches/minecraft/net/minecraft/nbt/{NBTSizeTracker.java.patch => NbtAccounter.java.patch} (79%)
create mode 100644 patches/minecraft/net/minecraft/nbt/NbtIo.java.patch
delete mode 100644 patches/minecraft/net/minecraft/nbt/StringNBT.java.patch
create mode 100644 patches/minecraft/net/minecraft/nbt/StringTag.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/CompressionEncoder.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/Connection.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/FriendlyByteBuf.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/NettyCompressionEncoder.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/NettyPacketEncoder.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/NetworkManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/NetworkSystem.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/PacketBuffer.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/PacketEncoder.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/ServerStatusResponse.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/chat/Style.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/chat/TranslatableComponent.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/datasync/DataSerializers.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/datasync/EntityDataManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/handshake/ServerHandshakeNetHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/handshake/client/CHandshakePacket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/login/ServerLoginNetHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/login/client/CCustomPayloadLoginPacket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/login/server/SCustomPayloadLoginPacket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/play/ServerPlayNetHandler.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/play/client/CClickWindowPacket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/play/client/CClientSettingsPacket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/play/client/CCreativeInventoryActionPacket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/play/client/CCustomPayloadPacket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/play/server/SCustomPayloadPlayPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/game/ClientboundCustomPayloadPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/game/ServerboundContainerClickPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/game/ServerboundCustomPayloadPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/game/ServerboundSetCreativeModeSlotPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/handshake/ClientIntentionPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/login/ClientboundCustomQueryPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/login/ServerboundCustomQueryPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/status/ClientboundStatusResponsePacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/protocol/status/ServerStatus.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/rcon/ClientThread.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/rcon/RConConsoleSource.java.patch
delete mode 100644 patches/minecraft/net/minecraft/network/status/server/SServerInfoPacket.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/syncher/EntityDataSerializers.java.patch
create mode 100644 patches/minecraft/net/minecraft/network/syncher/SynchedEntityData.java.patch
delete mode 100644 patches/minecraft/net/minecraft/particles/BlockParticleData.java.patch
delete mode 100644 patches/minecraft/net/minecraft/particles/ItemParticleData.java.patch
delete mode 100644 patches/minecraft/net/minecraft/particles/ParticleType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/particles/ParticleTypes.java.patch
delete mode 100644 patches/minecraft/net/minecraft/pathfinding/ClimberPathNavigator.java.patch
delete mode 100644 patches/minecraft/net/minecraft/pathfinding/PathNavigator.java.patch
delete mode 100644 patches/minecraft/net/minecraft/pathfinding/WalkNodeProcessor.java.patch
delete mode 100644 patches/minecraft/net/minecraft/potion/Effect.java.patch
delete mode 100644 patches/minecraft/net/minecraft/potion/EffectInstance.java.patch
delete mode 100644 patches/minecraft/net/minecraft/potion/Effects.java.patch
delete mode 100644 patches/minecraft/net/minecraft/potion/Potion.java.patch
delete mode 100644 patches/minecraft/net/minecraft/potion/PotionBrewing.java.patch
create mode 100644 patches/minecraft/net/minecraft/recipebook/PlaceRecipe.java.patch
delete mode 100644 patches/minecraft/net/minecraft/resources/DataPackRegistries.java.patch
delete mode 100644 patches/minecraft/net/minecraft/resources/IResourceManagerReloadListener.java.patch
delete mode 100644 patches/minecraft/net/minecraft/resources/IResourcePack.java.patch
create mode 100644 patches/minecraft/net/minecraft/resources/RegistryReadOps.java.patch
create mode 100644 patches/minecraft/net/minecraft/resources/ResourceKey.java.patch
create mode 100644 patches/minecraft/net/minecraft/resources/ResourceLocation.java.patch
delete mode 100644 patches/minecraft/net/minecraft/resources/ResourcePackInfo.java.patch
delete mode 100644 patches/minecraft/net/minecraft/resources/ResourcePackList.java.patch
delete mode 100644 patches/minecraft/net/minecraft/resources/VanillaPack.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/Bootstrap.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/PlayerAdvancements.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/ServerAdvancementManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/ServerResources.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/commands/LocateCommand.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/commands/SpreadPlayersCommand.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/commands/TeleportCommand.java.patch
delete mode 100644 patches/minecraft/net/minecraft/server/dedicated/PropertyManager.java.patch
rename patches/minecraft/net/minecraft/server/dedicated/{ServerHangWatchdog.java.patch => ServerWatchdog.java.patch} (70%)
create mode 100644 patches/minecraft/net/minecraft/server/dedicated/Settings.java.patch
delete mode 100644 patches/minecraft/net/minecraft/server/integrated/IntegratedServer.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/ChunkHolder.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/ChunkMap.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/DistanceManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/ServerChunkCache.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/ServerEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/ServerLevel.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/ServerPlayer.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/ServerPlayerGameMode.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/level/Ticket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/server/management/PlayerInteractionManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/server/management/PlayerList.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/network/MemoryServerHandshakePacketListenerImpl.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/network/ServerConnectionListener.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/network/ServerHandshakePacketListenerImpl.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/network/ServerLoginPacketListenerImpl.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/packs/PackResources.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/packs/VanillaPackResources.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/packs/repository/Pack.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/packs/repository/PackRepository.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/players/PlayerList.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/rcon/RconConsoleSource.java.patch
create mode 100644 patches/minecraft/net/minecraft/server/rcon/thread/RconClient.java.patch
create mode 100644 patches/minecraft/net/minecraft/sounds/SoundEvent.java.patch
create mode 100644 patches/minecraft/net/minecraft/sounds/SoundEvents.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tags/ITag.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tags/ITagCollectionSupplier.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tags/NetworkTagManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/tags/StaticTagHelper.java.patch
create mode 100644 patches/minecraft/net/minecraft/tags/StaticTags.java.patch
create mode 100644 patches/minecraft/net/minecraft/tags/Tag.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tags/TagCollectionManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/tags/TagContainer.java.patch
create mode 100644 patches/minecraft/net/minecraft/tags/TagManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tags/TagRegistry.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tags/TagRegistryManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/AbstractFurnaceTileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/BeaconTileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/BrewingStandTileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/ChestTileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/ConduitTileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/HopperTileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/PistonTileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/TileEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/tileentity/TileEntityType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/RegistryKey.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/ResourceLocation.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/ScreenShotHelper.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/Session.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/SharedConstants.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/SoundEvent.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/SoundEvents.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/Util.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/datafix/codec/DatapackCodec.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/RayTraceContext.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/RayTraceResult.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/shapes/EntitySelectionContext.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/shapes/ISelectionContext.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/vector/Matrix3f.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/vector/Matrix4f.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/vector/TransformationMatrix.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/vector/Vector3f.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/math/vector/Vector4f.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/palette/PalettedContainer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/registry/Bootstrap.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/registry/DynamicRegistries.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/registry/Registry.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/registry/SimpleRegistry.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/registry/WorldGenRegistries.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/registry/WorldSettingsImport.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/text/LanguageMap.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/text/Style.java.patch
delete mode 100644 patches/minecraft/net/minecraft/util/text/TranslationTextComponent.java.patch
delete mode 100644 patches/minecraft/net/minecraft/village/PointOfInterestType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/village/VillageSiege.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/Explosion.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/ExplosionContext.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/ForcedChunksSaveData.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/IBlockReader.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/IWorldReader.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/Teleporter.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/TrackedEntity.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/World.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/WorldSettings.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/biome/Biome.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/biome/BiomeAmbience.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/biome/BiomeGenerationSettings.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/biome/BiomeRegistry.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/biome/MobSpawnInfo.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/biome/provider/OverworldBiomeProvider.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/border/WorldBorder.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/chunk/Chunk.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/chunk/ChunkPrimer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/chunk/ChunkStatus.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/chunk/IChunk.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/chunk/storage/ChunkSerializer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/effect/MobEffect.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/effect/MobEffectInstance.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/effect/MobEffects.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/end/DragonFightManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/Entity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/EntityType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ExperienceOrb.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/FlyingMob.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/LightningBolt.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/LivingEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/Mob.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/MobCategory.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/Shearable.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/SpawnPlacements.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/attributes/Attribute.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/attributes/AttributeSupplier.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/behavior/CrossbowAttack.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/goal/EatBlockGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/goal/MeleeAttackGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/goal/RangedBowAttackGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/goal/RangedCrossbowAttackGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/memory/MemoryModuleType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/navigation/PathNavigation.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/navigation/WallClimberNavigation.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/sensing/SensorType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/village/VillageSiege.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/ai/village/poi/PoiType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Animal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Bee.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Cat.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Fox.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/IronGolem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/MushroomCow.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Ocelot.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Parrot.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Pig.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/PolarBear.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Rabbit.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Sheep.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/SnowGolem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/Wolf.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/horse/AbstractHorse.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/horse/Horse.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/animal/horse/SkeletonTrapGoal.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/boss/EnderDragonPart.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/decoration/ArmorStand.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/decoration/HangingEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/decoration/Motive.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/item/ItemEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/AbstractSkeleton.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Creeper.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/CrossbowAttackMob.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/EnderMan.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Evoker.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Illusioner.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/MagmaCube.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Pillager.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Ravager.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Silverfish.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Slime.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Spider.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/Zombie.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/ZombieVillager.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/hoglin/Hoglin.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/piglin/AbstractPiglin.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/piglin/Piglin.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/piglin/PiglinAi.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/monster/piglin/StopHoldingItemIfNoLongerAdmiring.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/npc/AbstractVillager.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/npc/CatSpawner.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/npc/Villager.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/npc/VillagerProfession.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/player/Inventory.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/player/Player.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/AbstractArrow.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/AbstractHurtingProjectile.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/FireworkRocketEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/FishingHook.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/LargeFireball.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/LlamaSpit.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/Projectile.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/ProjectileUtil.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/ShulkerBullet.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/SmallFireball.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/ThrowableProjectile.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/projectile/WitherSkull.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/raid/Raid.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/schedule/Activity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/schedule/Schedule.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecart.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/vehicle/AbstractMinecartContainer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/vehicle/Boat.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/vehicle/Minecart.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/vehicle/MinecartCommandBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/vehicle/MinecartFurnace.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/entity/vehicle/MinecartSpawner.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/food/FoodProperties.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/DebugChunkGenerator.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/FlatGenerationSettings.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/NoiseChunkGenerator.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/WorldGenRegion.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/blockplacer/BlockPlacerType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/blockstateprovider/BlockStateProviderType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/carver/WorldCarver.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/AbstractBigMushroomFeature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BaseTreeFeatureConfig.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BigBrownMushroomFeature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/BigRedMushroomFeature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/DungeonsFeature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/Feature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/GlowstoneBlobFeature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/IceSpikeFeature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/SpringFeature.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/jigsaw/JigsawPattern.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/jigsaw/SingleJigsawPiece.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/FortressStructure.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/MineshaftPieces.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/OceanMonumentStructure.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/PillagerOutpostStructure.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/Structure.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/StructurePiece.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/StructureStart.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/structure/SwampHutStructure.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/template/StructureProcessor.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/feature/template/Template.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/foliageplacer/FoliagePlacerType.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/layer/BiomeLayer.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/placement/Placement.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/settings/DimensionGeneratorSettings.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/surfacebuilders/SurfaceBuilder.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/gen/treedecorator/TreeDecoratorType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/AbstractContainerMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/AnvilMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/BeaconMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/BrewingStandMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/EnchantmentMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/FurnaceResultSlot.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/GrindstoneMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/InventoryMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/MenuType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/RecipeBookMenu.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/inventory/ResultSlot.java.patch
rename patches/minecraft/net/minecraft/{inventory/container => world/inventory}/Slot.java.patch (70%)
create mode 100644 patches/minecraft/net/minecraft/world/item/ArmorItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/ArrowItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/AxeItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/BlockItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/BoneMealItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/BowItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/BucketItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/ChorusFruitItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/CreativeModeTab.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/DiggerItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/DyeColor.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/DyeableHorseArmorItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/ElytraItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/HoeItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/HorseArmorItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/Item.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/ItemStack.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/Items.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/MapItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/MilkBucketItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/MinecartItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/MobBucketItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/Rarity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/RecordItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/ShearsItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/ShovelItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/StandingAndWallBlockItem.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/alchemy/Potion.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/alchemy/PotionBrewing.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/BannerDuplicateRecipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/BookCloningRecipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/Ingredient.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/Recipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/RecipeManager.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/RecipeSerializer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/RepairItemRecipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/ShapedRecipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/ShapelessRecipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/ShulkerBoxColoring.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/SimpleCookingSerializer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/SimpleRecipeSerializer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/SingleItemRecipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/crafting/UpgradeRecipe.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/enchantment/Enchantment.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentCategory.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/enchantment/Enchantments.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/enchantment/FrostWalkerEnchantment.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/item/trading/MerchantOffer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/BaseSpawner.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/BlockGetter.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/ClipContext.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/DataPackConfig.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/Explosion.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/ExplosionDamageCalculator.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/ForcedChunksSavedData.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/Level.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/LevelReader.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/LevelSettings.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/NaturalSpawner.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/biome/Biome.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/biome/BiomeGenerationSettings.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/biome/BiomeSpecialEffects.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/biome/MobSpawnSettings.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/biome/OverworldBiomeSource.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/BambooBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/BaseFireBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/BaseRailBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/BeehiveBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/Block.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/Blocks.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/BushBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/CactusBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/CampfireBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/ChestBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/ChorusFlowerBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/CocoaBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/ComparatorBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/CropBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/DeadBushBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/DetectorRailBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/DiodeBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/DoublePlantBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/DropperBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/EnchantmentTableBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/FallingBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/FarmBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/FireBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/FlowerPotBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/GrowingPlantHeadBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/LeavesBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/LiquidBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/MushroomBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/NetherWartBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/NoteBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/OreBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/PoweredRailBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/RailBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/RailState.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/RedStoneOreBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/SaplingBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/SeagrassBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/SoundType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/SpawnerBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/SpreadingSnowyDirtBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/StairBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/StemBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/SugarCaneBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/SweetBerryBushBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/TallGrassBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/TntBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/TrapDoorBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/TripWireHookBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/TurtleEggBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/VineBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/WebBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java.patch
rename patches/minecraft/net/minecraft/{tileentity => world/level/block/entity}/BannerPattern.java.patch (72%)
rename patches/minecraft/net/minecraft/{tileentity/LockableTileEntity.java.patch => world/level/block/entity/BaseContainerBlockEntity.java.patch} (60%)
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/BeaconBlockEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/BlockEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/BlockEntityType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/BrewingStandBlockEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/ChestBlockEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/ConduitBlockEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/entity/HopperBlockEntity.java.patch
rename patches/minecraft/net/minecraft/{tileentity/ShulkerBoxTileEntity.java.patch => world/level/block/entity/ShulkerBoxBlockEntity.java.patch} (52%)
create mode 100644 patches/minecraft/net/minecraft/world/level/block/piston/PistonBaseBlock.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/piston/PistonMovingBlockEntity.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/piston/PistonStructureResolver.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/state/BlockBehaviour.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/block/state/BlockState.java.patch
rename patches/minecraft/net/minecraft/{block => world/level/block/state/properties}/WoodType.java.patch (58%)
create mode 100644 patches/minecraft/net/minecraft/world/level/chunk/ChunkAccess.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/chunk/ChunkStatus.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/chunk/LevelChunk.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/chunk/PalettedContainer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/chunk/ProtoChunk.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/chunk/storage/ChunkSerializer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/chunk/storage/EntityStorage.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/dimension/end/EndDragonFight.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/DebugLevelSource.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/NoiseBasedChunkGenerator.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/PatrolSpawner.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/PhantomSpawner.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/WorldGenSettings.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/carver/WorldCarver.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/Feature.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/MonsterRoomFeature.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/NetherFortressFeature.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/OceanMonumentFeature.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/PillagerOutpostFeature.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/StructureFeature.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/SwamplandHutFeature.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/blockplacers/BlockPlacerType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/configurations/TreeConfiguration.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/foliageplacers/FoliagePlacerType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/stateproviders/BlockStateProviderType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/structures/SinglePoolElement.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/structures/StructureTemplatePool.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/feature/treedecorators/TreeDecoratorType.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/flat/FlatLevelGeneratorSettings.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/placement/FeatureDecorator.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/structure/StructurePiece.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/structure/StructureStart.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureProcessor.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/levelgen/surfacebuilders/SurfaceBuilder.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/lighting/BlockLightEngine.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/lighting/DynamicGraphMinFixedPoint.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/lighting/LayerLightEngine.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/lighting/SkyLightEngine.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/material/FlowingFluid.java.patch
rename patches/minecraft/net/minecraft/{fluid => world/level/material}/Fluid.java.patch (61%)
create mode 100644 patches/minecraft/net/minecraft/world/level/material/FluidState.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/material/LavaFluid.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/newbiome/layer/BiomeInitLayer.java.patch
rename patches/minecraft/net/minecraft/{pathfinding/PathNodeType.java.patch => world/level/pathfinder/BlockPathTypes.java.patch} (59%)
create mode 100644 patches/minecraft/net/minecraft/world/level/pathfinder/WalkNodeEvaluator.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/portal/PortalForcer.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/portal/PortalShape.java.patch
rename patches/minecraft/net/minecraft/world/{storage => level/saveddata/maps}/MapDecoration.java.patch (60%)
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/DimensionDataStorage.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/LevelStorageSource.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/PlayerDataStorage.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/LootContext.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/LootPool.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/LootTable.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/LootTables.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/functions/LootingEnchantFunction.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/functions/SmeltItemFunction.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/parameters/LootContextParamSets.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceCondition.java.patch
create mode 100644 patches/minecraft/net/minecraft/world/level/storage/loot/predicates/LootItemRandomChanceWithLootingCondition.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/lighting/BlockLightEngine.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/lighting/LevelBasedGraph.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/lighting/LightEngine.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/lighting/SkyLightEngine.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/raid/Raid.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/server/ChunkHolder.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/server/ServerChunkProvider.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/server/ServerWorld.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/server/Ticket.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/server/TicketManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/spawner/AbstractSpawner.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/spawner/CatSpawner.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/spawner/PatrolSpawner.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/spawner/PhantomSpawner.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/spawner/WorldEntitySpawner.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/storage/DimensionSavedDataManager.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/storage/PlayerData.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/storage/SaveFormat.java.patch
delete mode 100644 patches/minecraft/net/minecraft/world/storage/WorldSavedData.java.patch
create mode 100644 server_files/args.txt
create mode 100644 server_files/run.bat
create mode 100644 server_files/run.sh
create mode 100644 server_files/user_jvm_args.txt
create mode 100644 src/fmlcommon/java/net/minecraftforge/fml/core/ModStateProvider.java
create mode 100644 src/fmlcommon/java/net/minecraftforge/fml/core/ParallelTransition.java
create mode 100644 src/fmlcommon/java/net/minecraftforge/fml/event/config/ModConfigEvent.java
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/FMLClientSetupEvent.java (78%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/FMLCommonSetupEvent.java (84%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/FMLConstructModEvent.java (84%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/FMLDedicatedServerSetupEvent.java (78%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/FMLLoadCompleteEvent.java (86%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/InterModEnqueueEvent.java (83%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/InterModProcessEvent.java (87%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/ModLifecycleEvent.java (97%)
rename src/{main => fmlcommon}/java/net/minecraftforge/fml/event/lifecycle/ParallelDispatchEvent.java (84%)
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/FMLClientLaunchProvider.java
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/FMLCommonLaunchHandler.java
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServerLaunchProvider.java
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/FixSSL.java
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/Java9BackportUtils.java
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/moddiscovery/AbstractJarFileLocator.java
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/moddiscovery/ExplodedDirectoryLocator.java
delete mode 100644 src/fmllauncher/java/net/minecraftforge/fml/loading/moddiscovery/ModDiscoverer.java
delete mode 100644 src/fmllauncher/resources/META-INF/services/cpw.mods.modlauncher.api.ILaunchHandlerService
delete mode 100644 src/fmllauncher/resources/minecraftmod.toml
create mode 100644 src/generated/resources/data/forge/tags/items/barrels.json
create mode 100644 src/generated/resources/data/forge/tags/items/barrels/wooden.json
create mode 100644 src/generated/resources/data/minecraft/loot_tables/blocks/azalea_leaves.json
create mode 100644 src/generated/resources/data/minecraft/loot_tables/blocks/flowering_azalea_leaves.json
create mode 100644 src/generated/resources/data/minecraft/loot_tables/blocks/hanging_roots.json
create mode 100644 src/generated/resources/data/minecraft/loot_tables/blocks/small_dripleaf.json
create mode 100644 src/generated/resources/data/minecraft/recipes/mossy_cobblestone_from_moss_block.json
rename src/generated/resources/data/minecraft/recipes/{mossy_cobblestone.json => mossy_cobblestone_from_vine.json} (87%)
delete mode 100644 src/main/java/net/minecraftforge/client/CloudRenderHandler.java
create mode 100644 src/main/java/net/minecraftforge/client/EffectRenderer.java
create mode 100644 src/main/java/net/minecraftforge/client/IBlockRenderProperties.java
create mode 100644 src/main/java/net/minecraftforge/client/IItemRenderProperties.java
create mode 100644 src/main/java/net/minecraftforge/client/RenderProperties.java
delete mode 100644 src/main/java/net/minecraftforge/client/SkyRenderHandler.java
delete mode 100644 src/main/java/net/minecraftforge/client/event/DrawHighlightEvent.java
create mode 100644 src/main/java/net/minecraftforge/client/event/DrawSelectionEvent.java
rename src/main/java/net/minecraftforge/client/extensions/{IForgeKeybinding.java => IForgeKeyMapping.java} (73%)
rename src/main/java/net/minecraftforge/client/extensions/{IForgeModelTransform.java => IForgeModelState.java} (86%)
rename src/main/java/net/minecraftforge/client/extensions/{IForgeTransformationMatrix.java => IForgeTransformation.java} (52%)
rename src/main/java/net/minecraftforge/client/extensions/{IForgeVertexBuilder.java => IForgeVertexConsumer.java} (65%)
rename src/main/java/net/minecraftforge/client/{WeatherRenderHandler.java => gui/IIngameOverlay.java} (77%)
create mode 100644 src/main/java/net/minecraftforge/client/gui/OverlayRegistry.java
rename src/main/java/net/minecraftforge/client/model/{ModelTransformComposition.java => CompositeModelState.java} (74%)
rename src/main/java/net/minecraftforge/client/model/{SimpleModelTransform.java => SimpleModelState.java} (56%)
rename src/main/java/net/minecraftforge/client/model/animation/{TileEntityRendererAnimation.java => AnimationBlockEntityRenderer.java} (64%)
rename src/main/java/net/minecraftforge/common/extensions/{IForgeEntityMinecart.java => IForgeAbstractMinecart.java} (70%)
rename src/main/java/net/minecraftforge/common/extensions/{IAbstractRailBlock.java => IForgeBaseRailBlock.java} (70%)
rename src/main/java/net/minecraftforge/common/extensions/{IForgeTileEntity.java => IForgeBlockEntity.java} (71%)
delete mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeEffect.java
delete mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeEffectInstance.java
rename src/main/java/net/minecraftforge/common/extensions/{IForgePacketBuffer.java => IForgeFriendlyByteBuf.java} (88%)
rename src/main/java/net/minecraftforge/common/extensions/{IForgeWorld.java => IForgeLevel.java} (96%)
rename src/main/java/net/minecraftforge/common/extensions/{IForgeChunk.java => IForgeLevelChunk.java} (93%)
create mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeMobEffect.java
create mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeMobEffectInstance.java
rename src/main/java/net/minecraftforge/common/extensions/{IForgeResourcePack.java => IForgePackResources.java} (95%)
rename src/main/java/net/minecraftforge/common/extensions/{IForgeStructure.java => IForgeStructureFeature.java} (77%)
create mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeTagAppender.java
delete mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeTagBuilder.java
rename src/main/java/net/minecraftforge/common/extensions/{IForgeTagCollectionSupplier.java => IForgeTagContainer.java} (68%)
delete mode 100644 src/main/java/net/minecraftforge/common/extensions/IForgeWorldServer.java
create mode 100644 src/main/java/net/minecraftforge/common/modloading/ForgeModStateProvider.java
rename src/main/java/net/minecraftforge/common/{extensions/IForgeSelectionContext.java => util/DummySavedData.java} (66%)
create mode 100644 src/main/java/net/minecraftforge/common/util/LogMessageAdapter.java
rename src/main/java/net/minecraftforge/event/entity/{living => }/EntityTeleportEvent.java (89%)
delete mode 100644 src/main/java/net/minecraftforge/event/entity/living/EnderTeleportEvent.java
delete mode 100644 src/main/java/net/minecraftforge/fml/ModLoadingStage.java
delete mode 100644 src/main/java/net/minecraftforge/fml/client/EarlyLoaderGUI.java
delete mode 100644 src/main/java/net/minecraftforge/fml/client/registry/RenderingRegistry.java
delete mode 100644 src/main/java/net/minecraftforge/fml/event/lifecycle/FMLFingerprintViolationEvent.java
delete mode 100644 src/main/java/net/minecraftforge/fml/relauncher/libraries/Artifact.java
delete mode 100644 src/main/java/net/minecraftforge/fml/relauncher/libraries/LibraryManager.java
delete mode 100644 src/main/java/net/minecraftforge/fml/relauncher/libraries/LinkRepository.java
delete mode 100644 src/main/java/net/minecraftforge/fml/relauncher/libraries/ModList.java
delete mode 100644 src/main/java/net/minecraftforge/fml/relauncher/libraries/Repository.java
delete mode 100644 src/main/java/net/minecraftforge/fml/relauncher/libraries/SnapshotJson.java
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/ClientHooks.java (82%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/ClientModLoader.java (70%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/ConfigGuiHandler.java (69%)
create mode 100644 src/main/java/net/minecraftforge/fmlclient/EarlyLoaderGUI.java
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/ExtendedServerListData.java (97%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/GuiUtils.java (61%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/screen/ConfirmationScreen.java (87%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/screen/LoadingErrorScreen.java (54%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/screen/ModListScreen.java (74%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/screen/NotificationScreen.java (92%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/widget/ExtendedButton.java (78%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/widget/ModListWidget.java (50%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/widget/Slider.java (78%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/gui/widget/UnicodeGlyphButton.java (71%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/registry/ClientRegistry.java (65%)
rename src/main/java/net/minecraftforge/{fml/client => fmlclient}/registry/IRenderFactory.java (78%)
create mode 100644 src/main/java/net/minecraftforge/fmlclient/registry/RenderingRegistry.java
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/BrandingControl.java (90%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/CrashReportExtender.java (73%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/DatagenModLoader.java (70%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/FMLWorldPersistenceHook.java (83%)
create mode 100644 src/main/java/net/minecraftforge/fmllegacy/ForgeBindings.java
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/ForgeI18n.java (98%)
create mode 100644 src/main/java/net/minecraftforge/fmllegacy/ForgeStatesProvider.java
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/LogicalSidedProvider.java (90%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/MavenVersionStringHelper.java (99%)
rename src/main/java/net/minecraftforge/{fml/relauncher/libraries/MemoryModList.java => fmllegacy/NoVizFallback.java} (63%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/RegistryObject.java (99%)
create mode 100644 src/main/java/net/minecraftforge/fmllegacy/SerialTransition.java
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/TextComponentMessageFormatHandler.java (69%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/WorldPersistenceHooks.java (65%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/common/network/ByteBufUtils.java (98%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/common/network/PacketLoggingHandler.java (69%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/common/registry/GameRegistry.java (96%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/common/registry/IEntityAdditionalSpawnData.java (86%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/event/lifecycle/FMLModIdMappingEvent.java (94%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/hooks/BasicEventHooks.java (73%)
create mode 100644 src/main/java/net/minecraftforge/fmllegacy/network/ConfigSync.java
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/ConnectionType.java (96%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLConnectionData.java (96%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLHandshakeHandler.java (90%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLHandshakeMessages.java (88%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLLoginWrapper.java (82%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLMCRegisterPacketHandler.java (84%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLNetworkConstants.java (92%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLPlayMessages.java (73%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/FMLStatusPing.java (81%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/IContainerFactory.java (63%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/ICustomPacket.java (75%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/NetworkDirection.java (74%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/NetworkEvent.java (81%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/NetworkHooks.java (71%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/NetworkInitialization.java (95%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/NetworkInstance.java (90%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/NetworkRegistry.java (96%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/PacketDispatcher.java (69%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/PacketDistributor.java (69%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/event/EventNetworkChannel.java (81%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/simple/IndexedMessageCodec.java (83%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/network/simple/SimpleChannel.java (85%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/packs/DelegatingResourcePack.java (61%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/packs/ModFileResourcePack.java (53%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/packs/ResourcePackLoader.java (66%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/server/LanguageHook.java (83%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/server/ServerLifecycleHooks.java (71%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/server/ServerModLoader.java (89%)
rename src/main/java/net/minecraftforge/{fml => fmllegacy}/util/ThreeConsumer.java (97%)
rename src/main/java/net/minecraftforge/{fml/event/server => fmlserverevents}/FMLServerAboutToStartEvent.java (91%)
rename src/main/java/net/minecraftforge/{fml/event/server => fmlserverevents}/FMLServerStartedEvent.java (96%)
rename src/main/java/net/minecraftforge/{fml/event/server => fmlserverevents}/FMLServerStartingEvent.java (96%)
rename src/main/java/net/minecraftforge/{fml/event/server => fmlserverevents}/FMLServerStoppedEvent.java (96%)
rename src/main/java/net/minecraftforge/{fml/event/server => fmlserverevents}/FMLServerStoppingEvent.java (95%)
rename src/main/java/net/minecraftforge/{fml/event/server => fmlserverevents}/ServerLifecycleEvent.java (96%)
rename src/main/java/net/minecraftforge/{fml => forge}/event/lifecycle/GatherDataEvent.java (97%)
delete mode 100644 src/main/java/net/minecraftforge/resource/ISelectiveResourceReloadListener.java
delete mode 100644 src/main/java/net/minecraftforge/resource/SelectiveReloadStateHandler.java
delete mode 100644 src/main/resources/META-INF/fieldtomethodtransformers.js
create mode 100644 src/main/resources/META-INF/services/net.minecraftforge.fml.IBindingsProvider
create mode 100644 src/main/resources/META-INF/services/net.minecraftforge.fml.IModStateProvider
delete mode 100644 src/main/resources/META-INF/services/net.minecraftforge.forgespi.language.IModLanguageProvider
delete mode 100644 src/main/resources/assets/forge/lang/en_us.lang
create mode 100644 src/main/resources/coremods/field_to_method.js
rename src/test/java/net/minecraftforge/{common => commontest}/ForgeConfigSpecTest.java (90%)
create mode 100644 src/test/java/net/minecraftforge/debug/client/OverlayLayersTest.java
delete mode 100644 src/test/resources/assets/new_model_loader_test/blockstates/obj_block.json
delete mode 100644 src/test/resources/assets/new_model_loader_test/models/block/obj_block.json
delete mode 100644 src/test/resources/assets/new_model_loader_test/models/item/item_layers.json
delete mode 100644 src/test/resources/assets/new_model_loader_test/models/item/separate_perspective.json
delete mode 100644 src/test/resources/data/forge/loot_modifiers/global_loot_modifiers.json
delete mode 100644 src/test/resources/data/global_loot_test/loot_modifiers/smelting.json
delete mode 100644 src/test/resources/data/global_loot_test/loot_modifiers/wheat_harvest.json
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/ClasspathLocator.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/FMLDevClientLaunchProvider.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/FMLDevDataLaunchProvider.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/FMLDevServerLaunchProvider.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/FMLUserdevClientLaunchProvider.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/FMLUserdevDataLaunchProvider.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/FMLUserdevLaunchProvider.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/FMLUserdevServerLaunchProvider.java
delete mode 100644 src/userdev/java/net/minecraftforge/userdev/LaunchTesting.java
delete mode 100644 src/userdev/resources/META-INF/services/cpw.mods.modlauncher.api.ILaunchHandlerService
delete mode 100644 src/userdev/resources/META-INF/services/cpw.mods.modlauncher.api.INameMappingService
delete mode 100644 src/userdev/resources/META-INF/services/net.minecraftforge.forgespi.locating.IModLocator
diff --git a/.gitignore b/.gitignore
index d6dc0d7a3e..b03f74fc5d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,19 +9,24 @@
#idea
/.idea
+/*/out
/classes
*.iml
#gradle
/build
/.gradle
-/mdk/.gradle
-/mdk/build
+/*/build
+/*/.gradle
-#occupational hazards
+# Projects repo, either ignore it, or ignore patches.
/projects/mcp/
/projects/clean/
/projects/forge/
+/projects/fmlonly/
+#/patches/
+
+#occupational hazards
/projects/**/build/
/projects/**/out/
/projects/**/run/
@@ -31,16 +36,11 @@ src/generated/resources/.cache/
#Patch rejects
/patches-/
-*.patch.rej
+#*.patch.rej
+/projects/*/rejects/
# FML changelog
changelog.txt
*.py
*.7z
/logs/
-
-/projects/forge/rejects/
-
-# Srg2Source causes import bugs on these patches. If you intentionnally change these, remove the ignore.
-/patches/minecraft/net/minecraft/client/renderer/ViewFrustum.java.patch
-/patches/minecraft/net/minecraft/data/BlockModelDefinition.java.patch
diff --git a/Jenkinsfile b/Jenkinsfile
index b9ba1c1648..a04f76131a 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -6,7 +6,7 @@ pipeline {
}
agent {
docker {
- image 'gradle:jdk8'
+ image 'gradle:7-jdk16'
args '-v forgegc:/home/gradle/.gradle/'
}
}
@@ -69,7 +69,7 @@ pipeline {
steps {
withCredentials([usernamePassword(credentialsId: 'maven-forge-user', usernameVariable: 'MAVEN_USER', passwordVariable: 'MAVEN_PASSWORD')]) {
withGradle {
- sh './gradlew ${GRADLE_ARGS} :forge:publish -PkeystoreKeyPass=${KEYSTORE_KEYPASS} -PkeystoreStorePass=${KEYSTORE_STOREPASS} -Pkeystore=${KEYSTORE} -PcrowdinKey=${CROWDIN}'
+ sh './gradlew ${GRADLE_ARGS} publish -PkeystoreKeyPass=${KEYSTORE_KEYPASS} -PkeystoreStorePass=${KEYSTORE_STOREPASS} -Pkeystore=${KEYSTORE} -PcrowdinKey=${CROWDIN}'
}
}
}
@@ -88,7 +88,7 @@ pipeline {
}
steps {
withGradle {
- sh './gradlew ${GRADLE_ARGS} :forge:publish -PcrowdinKey=${CROWDIN}'
+ sh './gradlew ${GRADLE_ARGS} publish -PcrowdinKey=${CROWDIN}'
}
}
}
diff --git a/build.gradle b/build.gradle
index 653a19ab46..8f203194b3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -16,10 +16,11 @@ import java.util.Date
import java.util.LinkedHashMap
import net.minecraftforge.forge.tasks.*
import static net.minecraftforge.forge.tasks.Util.*
+import net.minecraftforge.gradle.common.tasks.ApplyBinPatches
import net.minecraftforge.gradle.common.tasks.DownloadMavenArtifact
import net.minecraftforge.gradle.common.tasks.ExtractInheritance
import net.minecraftforge.gradle.common.tasks.SignJar
-import net.minecraftforge.gradle.patcher.tasks.ReobfuscateJar
+import net.minecraftforge.gradle.userdev.tasks.RenameJar
import org.apache.tools.ant.filters.ReplaceTokens
import org.gradle.plugins.ide.eclipse.model.SourceFolder
@@ -30,9 +31,7 @@ plugins {
id 'eclipse'
}
-Util.init() //Init all our extension methods
-
-println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))
+Util.init() //Init all our extension methods!
ext {
JAR_SIGNER = null
@@ -44,17 +43,128 @@ ext {
]
}
MAPPING_CHANNEL = 'official'
- MAPPING_VERSION = '1.16.5'
- MC_VERSION = '1.16.5'
- MCP_VERSION = '20210115.111550'
- SPI_VERSION = '3.2.0'
+ MAPPING_VERSION = '1.17.1'
+ MC_VERSION = '1.17.1'
+ MCP_VERSION = '20210706.113038'
+ SPI_VERSION = '4.0.9'
+ ACCESSTRANSFORMERS_VERSION = '8.0.4'
+ COREMODS_VERSION = '5.0.1'
+ EVENTBUS_VERSION = '5.0.3'
+ MODLAUNCHER_VERSION = '9.0.7'
+ SECUREJARHANDLER_VERSION = '0.9.44'
+ BOOTSTRAPLAUNCHER_VERSION = '0.1.15'
+ ASM_VERSION = '9.1'
+ INSTALLER_VERSION = '2.1.4'
+
+ GIT_INFO = gradleutils.gitInfo
+ VERSION = gradleutils.getFilteredMCTagOffsetBranchVersion(true, '[0-9]', MC_VERSION)
+ // FML_VERSION = gradleutils.getFilteredMCTagOffsetBranchVersion(true, 'FML', MC_VERSION)
+ FORGE_VERSION = VERSION.substring(MC_VERSION.length() + 1)
+
+ SPECIAL_SOURCE = 'net.md-5:SpecialSource:1.10.0'
+ VIGNETTE = 'net.minecraftforge.lex:vignette:0.2.0.16'
+ BINPATCH_TOOL = 'net.minecraftforge:binarypatcher:1.0.12:fatjar'
+ INSTALLER_TOOLS = 'net.minecraftforge:installertools:1.2.7'
+ JAR_SPLITTER = 'net.minecraftforge:jarsplitter:1.1.4'
+}
+
+println('Version: ' + VERSION +
+ ' Java: ' + System.getProperty('java.version') +
+ ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ')' +
+ ' Arch: ' + System.getProperty('os.arch'))
+
+def extraTxts = [
+ rootProject.file('CREDITS.txt'),
+ rootProject.file('LICENSE.txt')
+]
+
+def changelog = rootProject.file('build/changelog.txt')
+if (changelog.exists())
+ extraTxts += changelog
+
+subprojects {
+ apply plugin: 'maven-publish'
+ apply plugin: 'eclipse'
+ apply plugin: 'java'
+
+ group = 'net.minecraftforge'
+ version = VERSION
+ //println(name + ' Version: ' + version)
+
+ ext {
+ isNonStable = { String version ->
+ def stableKeyword = ['RELEASE', 'FINAL', 'GA'].any { ver -> version.toUpperCase().contains(ver) }
+ def regex = /^[0-9,.v-]+(-r)?$/
+ return !stableKeyword && !(version ==~ regex)
+ }
+ }
+
+ repositories {
+ mavenLocal()
+ mavenCentral()
+ maven {
+ name = 'forge'
+ url = 'https://maven.minecraftforge.net/'
+ }
+ }
+
+ java.toolchain.languageVersion = JavaLanguageVersion.of(16)
+
+ publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ // Normal Maven/old gradle doesn't support '2.+' version wildcards
+ // For now we just suppress. We *should* force the resolution to pinned versions.
+ suppressPomMetadataWarningsFor('apiElements')
+ suppressPomMetadataWarningsFor('runtimeElements')
+ pom {
+ name = project.name
+ description = 'Modifactions to Minecraft to enable mod developers.'
+ url = 'https://github.com/MinecraftForge/MinecraftForge'
+
+ scm {
+ url = 'https://github.com/MinecraftForge/MinecraftForge'
+ connection = 'scm:git:git://github.com/MinecraftForge/MinecraftForge.git'
+ developerConnection = 'scm:git:git@github.com:MinecraftForge/MinecraftForge.git'
+ }
+
+ issueManagement {
+ system = 'github'
+ url = 'https://github.com/MinecraftForge/MinecraftForge/issues'
+ }
+
+ licenses {
+ license {
+ name = 'LGPL 2.1'
+ url = 'https://github.com/MinecraftForge/MinecraftForge/blob/1.13-pre/LICENSE.txt'
+ distribution = 'repo'
+ }
+ }
+ }
+ }
+ }
+ repositories {
+ maven {
+ if (System.env.MAVEN_USER) {
+ url 'https://maven.minecraftforge.net/releases/'
+ authentication {
+ basic(BasicAuthentication)
+ }
+ credentials {
+ username = System.env.MAVEN_USER ?: 'not'
+ password = System.env.MAVEN_PASSWORD ?: 'set'
+ }
+ } else {
+ url 'file://' + rootProject.file('repo').getAbsolutePath()
+ }
+ }
+ }
+ }
}
project(':mcp') {
apply plugin: 'net.minecraftforge.gradle.mcp'
- repositories {
- mavenLocal()
- }
+ tasks.withType(AbstractPublishToMaven.class).forEach{tsk -> tsk.enabled = false } // We don't want to publish anything
mcp {
config MC_VERSION + '-' + MCP_VERSION
pipeline = 'joined'
@@ -63,20 +173,13 @@ project(':mcp') {
project(':clean') {
evaluationDependsOn(':mcp')
- apply plugin: 'eclipse'
apply plugin: 'net.minecraftforge.gradle.patcher'
-
- java.toolchain.languageVersion = JavaLanguageVersion.of(8)
-
- repositories {
- mavenLocal()
- mavenCentral()
- }
-
+ tasks.withType(AbstractPublishToMaven.class).forEach{tsk -> tsk.enabled = false } // We don't want to publish anything
+
dependencies {
implementation 'net.minecraftforge:forgespi:' + SPI_VERSION
}
-
+
patcher {
parent = project(':mcp')
mcVersion = MC_VERSION
@@ -86,7 +189,9 @@ project(':clean') {
runs {
clean_client {
+ client true
taskName 'clean_client'
+ ideaModule "${rootProject.name}.${project.name}.main"
main 'net.minecraft.client.main.Main'
workingDirectory project.file('run')
@@ -99,7 +204,9 @@ project(':clean') {
}
clean_server {
+ client false
taskName 'clean_server'
+ ideaModule "${rootProject.name}.${project.name}.main"
main 'net.minecraft.server.Main'
workingDirectory project.file('run')
@@ -108,46 +215,578 @@ project(':clean') {
}
}
-project(':forge') {
+def sharedDeps = {
+ moduleonly "cpw.mods:securejarhandler:${SECUREJARHANDLER_VERSION}"
+ moduleonly "org.ow2.asm:asm:${ASM_VERSION}"
+ moduleonly "org.ow2.asm:asm-commons:${ASM_VERSION}"
+ moduleonly "org.ow2.asm:asm-tree:${ASM_VERSION}"
+ moduleonly "org.ow2.asm:asm-util:${ASM_VERSION}"
+ moduleonly "org.ow2.asm:asm-analysis:${ASM_VERSION}"
+ moduleonly "cpw.mods:bootstraplauncher:${BOOTSTRAPLAUNCHER_VERSION}"
+
+ installer "cpw.mods:securejarhandler:${SECUREJARHANDLER_VERSION}"
+ installer "org.ow2.asm:asm:${ASM_VERSION}"
+ installer "org.ow2.asm:asm-commons:${ASM_VERSION}"
+ installer "org.ow2.asm:asm-tree:${ASM_VERSION}"
+ installer "org.ow2.asm:asm-util:${ASM_VERSION}"
+ installer "org.ow2.asm:asm-analysis:${ASM_VERSION}"
+ installer "net.minecraftforge:accesstransformers:${ACCESSTRANSFORMERS_VERSION}"
+ installer 'org.antlr:antlr4-runtime:4.9.1' //Dep of AccessTransformer
+ installer "net.minecraftforge:eventbus:${EVENTBUS_VERSION}"
+ installer "net.minecraftforge:forgespi:${SPI_VERSION}"
+ installer "net.minecraftforge:coremods:${COREMODS_VERSION}"
+ installer "cpw.mods:modlauncher:${MODLAUNCHER_VERSION}"
+ installer 'net.minecraftforge:unsafe:0.2.+'
+ installer 'com.electronwill.night-config:core:3.6.3'
+ installer 'com.electronwill.night-config:toml:3.6.3'
+ installer 'org.apache.maven:maven-artifact:3.6.3'
+ installer 'org.apache.commons:commons-lang3:3.8.1'
+ installer 'net.jodah:typetools:0.8.3'
+ installer 'org.apache.logging.log4j:log4j-api:2.14.1'
+ installer 'org.apache.logging.log4j:log4j-core:2.14.1'
+ installer 'net.minecrell:terminalconsoleappender:1.2.0'
+ installer 'org.jline:jline-reader:3.12.+' //Dep of TerminaalConsoleeAppender
+ installer 'org.jline:jline-terminal:3.12.+' //Dep of TerminaalConsoleeAppender
+ installer 'net.sf.jopt-simple:jopt-simple:5.0.4'
+ // installer 'org.spongepowered:mixin:0.8.3'
+ installer 'org.openjdk.nashorn:nashorn-core:15.1.1'
+ installer 'com.google.guava:guava:21.0'
+ installer 'com.google.code.gson:gson:2.8.0'
+
+ /*
+ installer 'org.lwjgl:lwjgl:3.2.2'
+ installer 'org.lwjgl:lwjgl-glfw:3.2.2'
+ installer 'org.lwjgl:lwjgl-opengl:3.2.2'
+ installer 'org.lwjgl:lwjgl-stb:3.2.2'
+ */
+}
+
+def sharedFmlonlyForge = { Project prj ->
+ ['Client', 'Server', 'Joined'].each { side ->
+ ['slim', 'extra'].each { type ->
+ prj.task([type: DownloadMavenArtifact], "download${side}${type.capitalize()}") {
+ artifact = "net.minecraft:${side.toLowerCase()}:${MC_VERSION}-${MCP_VERSION}:${type}"
+ }
+ }
+
+ if (side.equals('Joined')) {
+ prj.task([type: DownloadMavenArtifact], "createJoinedSRG") {
+ artifact = "net.minecraft:joined:${MC_VERSION}-${MCP_VERSION}:srg"
+ }
+ } else {
+ prj.task([type: RenameJar, dependsOn: prj.tasks.createMcp2Srg], "create${side}SRG") {
+ tool = VIGNETTE
+ args = [
+ '--jar-in', '{input}',
+ '--jar-out', '{output}',
+ '--mapping-format', 'tsrg2',
+ '--mappings', '{mappings}',
+ // '--stable',
+ '--create-inits', '--fix-param-annotations', '--fernflower-meta'
+ ]
+ mappings = prj.tasks.createMcp2Srg.srg
+ input = prj.tasks.getByName("download${side}Slim").output
+ output = file("build/create${side}SRG/output.jar")
+ }
+ }
+
+ def gen = prj.tasks.getByName("gen${side}BinPatches")
+ def createSRG = prj.tasks.getByName("create${side}SRG")
+ gen.dependsOn(createSRG)
+ gen.tool = BINPATCH_TOOL
+ gen.cleanJar = createSRG.output
+
+ prj.task([type: ApplyBinPatches, dependsOn: gen], "apply${side}BinPatches") {
+ clean = gen.cleanJar
+ patch = gen.output
+ tool = BINPATCH_TOOL
+ }
+ }
+
+ prj.task([type: DownloadMavenArtifact], 'downloadInstaller') {
+ artifact = "net.minecraftforge:installer:${INSTALLER_VERSION}:shrunk"
+ changing = true
+ }
+
+ prj.afterEvaluate {
+ [prj.tasks.universalJar, prj.tasks.installerJar].each { t ->
+ def signTask = prj.task([type: SignJar, dependsOn: t], "sign${t.name.capitalize()}") {
+ onlyIf {
+ JAR_SIGNER != null && t.state.failure == null
+ }
+ def jarsigner = JAR_SIGNER == null ? [:] : JAR_SIGNER
+ alias = 'forge'
+ storePass = jarsigner.storepass
+ keyPass = jarsigner.keypass
+ keyStore = jarsigner.keystore
+ inputFile = t.archiveFile.get().asFile
+ outputFile = t.archiveFile.get().asFile
+ doFirst {
+ prj.logger.lifecycle('Signing: ' + inputFile)
+ }
+ }
+ t.finalizedBy(signTask)
+ }
+ }
+
+ prj.tasks.userdevConfig {
+ def launchPrefix = prj.name == "forge" ? "forge" : "fml"
+ getArtifacts(prj, prj.configurations.installer, true).each { key, lib -> libraries.add(lib.name) }
+ getArtifacts(prj, prj.configurations.moduleonly, true).each { key, lib ->
+ libraries.add(lib.name)
+ modules.add(lib.name)
+ }
+ for (child in prj.ext.PACKED_DEPS) {
+ libraries.add(Util.getMavenDep(rootProject.tasks.findByPath(child)))
+ }
+ //libraries.add("${project.group}:${project.name}:${project.version}:launcher")
+ inject = '' // We don't have a userdev sourceset anymore. Empty as a gradle workaround...
+ runs {
+ client {
+ environment 'MOD_CLASSES', '{source_roots}'
+ environment 'MCP_MAPPINGS', '{mcp_mappings}'
+
+ property 'nativesDirectory', '{natives}'
+
+ args '--launchTarget', "${launchPrefix}clientuserdev"
+ args '--version', 'MOD_DEV'
+ args '--assetIndex', '{asset_index}'
+ args '--assetsDir', '{assets_root}'
+ }
+
+ server {
+ environment 'MOD_CLASSES', '{source_roots}'
+ environment 'MCP_MAPPINGS', '{mcp_mappings}'
+
+ args '--launchTarget', "${launchPrefix}serveruserdev"
+ }
+
+ data {
+ environment 'MOD_CLASSES', '{source_roots}'
+ environment 'MCP_MAPPINGS', '{mcp_mappings}'
+
+ args '--launchTarget', "${launchPrefix}datauserdev"
+ args '--assetIndex', '{asset_index}'
+ args '--assetsDir', '{assets_root}'
+ }
+ }
+ }
+
+ def userdevRuns = prj.tasks.userdevConfig.runs
+ for (def run : prj.patcher.runs + userdevRuns) {
+ if (run.parents) continue // We already added this to the parent run config
+ //run.property 'bsl.debug', 'true'
+ run.main 'cpw.mods.bootstraplauncher.BootstrapLauncher'
+
+ run.args '--gameDir', '.'
+ run.args '--fml.forgeVersion', FORGE_VERSION
+ run.args '--fml.mcVersion', MC_VERSION
+ run.args '--fml.forgeGroup', prj.group
+ run.args '--fml.mcpVersion', MCP_VERSION
+
+ if (run.name.contains('client')) {
+ run.client true
+ } else {
+ run.client false
+ }
+
+ // SecureJarHandler bootstrap values.
+ run.property 'legacyClassPath', '{runtime_classpath}'
+ run.property 'ignoreList', prj.configurations.moduleonly.files.collect {it.name}.join(',') + ",client-extra,fmlcore,javafmllanguage,mclanguage,${prj.name}-${prj.version},${prj.rootProject.ext.MC_VERSION}-${prj.name}${prj.version.substring(prj.rootProject.ext.MC_VERSION.length())}"
+ run.property 'mergeModules', 'jna-5.8.0.jar,jna-platform-58.0.jar,java-objc-bridge-1.0.0.jar'
+ if (userdevRuns.contains(run)) {
+ run.jvmArgs '-p', '{modules}'
+ } else {
+ run.jvmArgs '-p', prj.configurations.moduleonly.files.collect { it.path }.join(File.pathSeparator)
+ }
+ run.jvmArgs '--add-modules', 'ALL-MODULE-PATH'
+ run.jvmArgs '--add-opens', 'java.base/java.util.jar=cpw.mods.securejarhandler'
+ run.jvmArgs '--add-exports', 'java.base/sun.security.util=cpw.mods.securejarhandler'
+ run.jvmArgs '--add-exports', 'jdk.naming.dns/com.sun.jndi.dns=java.naming'
+ }
+ for (def run : prj.patcher.runs) {
+ if (run.parents) continue // We already added this to the parent run config
+ run.workingDirectory prj.file('run')
+
+ if (run.name.contains('client') || run.name.contains('data')) {
+ run.property 'nativesDirectory', prj.extractNatives.output.get().asFile
+ run.args '--assetsDir', prj.downloadAssets.output
+ run.args '--assetIndex', "{asset_index}"
+ }
+
+ if (run.name.contains('client')) {
+ run.property 'org.lwjgl.system.SharedLibraryExtractDirectory', 'lwjgl_dll'
+ run.args '--username', 'Dev'
+ run.args '--version', prj.name
+ run.args '--uuid', '0'
+ run.args '--accessToken', '0'
+ run.args '--userType', 'mojang'
+ run.args '--versionType', 'release'
+ }
+
+ if (prj.name == 'forge') {
+ run.environment 'FORGE_SPEC', prj.SPEC_VERSION
+ }
+ }
+
+ eclipse.project.resourceFilter {
+ appliesTo = 'FOLDERS'
+ type = 'EXCLUDE_ALL'
+ matcher {
+ id = 'org.eclipse.ui.ide.multiFilter'
+ arguments = '1.0-name-matches-false-false-run'
+ }
+ }
+
+ def MODULE_PATH = Util.getArtifacts(prj, prj.configurations.moduleonly, false).values().collect{"libraries/${it.downloads.artifact.path}"}
+ def CLASS_PATH = Util.getArtifacts(prj, prj.configurations.installer, false).values().collect{"libraries/${it.downloads.artifact.path}"} +
+ [
+ 'libraries/' + Util.getMavenPath(rootProject.tasks.findByPath(':fmlloader:jar')),
+ "libraries/net/minecraft/server/${MC_VERSION}-${MCP_VERSION}/server-${MC_VERSION}-${MCP_VERSION}-extra.jar"
+ ]
+ def tokens = [
+ TASK: prj.name.equals('forge') ? 'forgeserver' : 'fmlserver',
+ MAVEN_PATH: prj.ext.MAVEN_PATH.toString(),
+ FORGE_VERSION: FORGE_VERSION,
+ MC_VERSION: MC_VERSION,
+ MCP_VERSION: MCP_VERSION,
+ FORGE_GROUP: prj.group,
+ IGNORE_LIST: Util.getArtifacts(prj, prj.configurations.moduleonly, false).values().collect{it.downloads.artifact.path.rsplit('/', 1)[1]}.join(','),
+ MODULES: 'ALL-MODULE-PATH'
+ ]
+
+ prj.afterEvaluate {
+ prj.installerJar {
+ from(rootProject.file('server_files/')) {
+ exclude 'args.txt'
+ filter(ReplaceTokens, tokens: tokens)
+ into('data/')
+ //rename 'run.sh', "run_forge_${VERSION.replace('-', '_').sh"
+ //rename 'run.bat', "run_forge_${VERSION.replace('-', '_').bat"
+ }
+
+ from(rootProject.file('server_files/args.txt')) {
+ filter(ReplaceTokens, tokens: tokens + [MODULE_PATH: MODULE_PATH.join(';'), CLASS_PATH: CLASS_PATH.join(';')])
+ rename { 'data/win_args.txt' }
+ }
+
+ from(rootProject.file('server_files/args.txt')) {
+ filter(ReplaceTokens, tokens: tokens + [MODULE_PATH: MODULE_PATH.join(':'), CLASS_PATH: CLASS_PATH.join(':')])
+ rename { 'data/unix_args.txt' }
+ }
+ }
+ }
+}
+
+def symlink = file("$rootDir/fmlonly/src/fmlcommon")
+def symlinkValid = symlink.exists() && symlink.directory
+
+if (symlinkValid)
+project(':fmlonly') {
+ evaluationDependsOn(':mcp')
+ apply plugin: 'java-library'
+ apply plugin: 'net.minecraftforge.gradle.patcher'
+
+ ext {
+ MCP_ARTIFACT = project(':mcp').mcp.config.get()
+ PACKED_DEPS = [':fmlcore:jar', ':fmlloader:jar', ':javafmllanguage:jar', ':mclanguage:jar']
+ MAVEN_PATH = "${group.replace('.', '/')}/${project.name}/${VERSION}"
+ }
+
+ sourceSets {
+ main {
+ java {
+ srcDirs = ["$rootDir/fmlonly/src/fmlcommon/java", "$rootDir/fmlonly/src/main/java"]
+ }
+ resources {
+ srcDirs = ["$rootDir/fmlonly/src/fmlcommon/resources", "$rootDir/fmlonly/src/main/resources"]
+ }
+ }
+ }
+
+ configurations {
+ moduleonly
+ installer {
+ // Don't pull all libraries, if we're missing something, add it to the installer list so the installer knows to download it.
+ transitive = false
+ }
+ api.extendsFrom(installer)
+ }
+
+ // TODO: Better coordination between project dependencies and the installer.
+ dependencies {
+ implementation project(':fmlcore')
+ implementation project(':fmlloader')
+ implementation project(':javafmllanguage')
+ implementation project(':mclanguage')
+ runtimeOnly "cpw.mods:bootstraplauncher:${BOOTSTRAPLAUNCHER_VERSION}"
+ }
+ dependencies sharedDeps
+
+ patcher {
+ parent = project(':mcp')
+ mcVersion = MC_VERSION
+ patchedSrc = file('src/main/java')
+
+ mappings channel: MAPPING_CHANNEL, version: MAPPING_VERSION
+ runs {
+ fmlonly_client {
+ args '--launchTarget', 'fmlclientdev'
+ ideaModule "${rootProject.name}.${project.name}.main"
+
+ mods {
+ minecraft { source sourceSets.main }
+ }
+ }
+ fmlonly_server {
+ args '--launchTarget', 'fmlserverdev'
+ ideaModule "${rootProject.name}.${project.name}.main"
+
+ mods {
+ minecraft { source sourceSets.main }
+ }
+ }
+ }
+ }
+
+ sharedFmlonlyForge.call(project)
+
+ task launcherJson(type: LauncherJson) {
+ packedDependencies = [':fmlloader:jar']
+ doFirst {
+ def fmlonly_client = project(':fmlonly').patcher.runs.fmlonly_client
+ json = [
+ _comment_: comment,
+ id: id,
+ time: timestamp,
+ releaseTime: timestamp,
+ type: 'release',
+ mainClass: 'cpw.mods.bootstraplauncher.BootstrapLauncher',
+ inheritsFrom: MC_VERSION,
+ logging: {},
+ arguments: [
+ game: ['--launchTarget', 'fmlclient',
+ '--fml.forgeVersion', FORGE_VERSION,
+ '--fml.mcVersion', MC_VERSION,
+ '--fml.forgeGroup', project.group,
+ '--fml.mcpVersion', MCP_VERSION],
+ jvm: ['-DlegacyClassPath=${classpath}',
+ "-DignoreList=${fmlonly_client.properties.ignoreList}",
+ "-DmergeModules=${fmlonly_client.properties.mergeModules}",
+ '-DlibraryDirectory=${library_directory}',
+ '-p', Util.getArtifacts(project, configurations.moduleonly, false).values().collect{"\${library_directory}/${it.downloads.artifact.path}"}.join('${classpath_separator}'),
+ '--add-modules', 'ALL-MODULE-PATH',
+ '--add-opens', 'java.base/java.util.jar=cpw.mods.securejarhandler',
+ '--add-exports', 'java.base/sun.security.util=cpw.mods.securejarhandler',
+ '--add-exports', 'jdk.naming.dns/com.sun.jndi.dns=java.naming'
+ ]
+ ],
+ libraries: []
+ ]
+ }
+ }
+
+ task installerJson(type: InstallerJson) {
+ icon = rootProject.file('icon.ico')
+ packedDependencies = PACKED_DEPS
+
+ doFirst {
+ def libs = libraries
+ json = [
+ _comment_: launcherJson.comment,
+ spec: 1,
+ profile: project.name,
+ version: launcherJson.id,
+ path: null,
+ minecraft: MC_VERSION,
+ serverJarPath: '{LIBRARY_DIR}/net/minecraft/server/{MINECRAFT_VERSION}/server-{MINECRAFT_VERSION}.jar',
+ welcome: "Welcome to the simple FML installer.",
+ data: [
+ MAPPINGS: [
+ client: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings@txt]",
+ server: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings@txt]"
+ ],
+ MOJMAPS: [
+ client: "[net.minecraft:client:${MC_VERSION}-${MCP_VERSION}:mappings@txt]",
+ server: "[net.minecraft:server:${MC_VERSION}-${MCP_VERSION}:mappings@txt]"
+ ],
+ MERGED_MAPPINGS: [
+ client: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings-merged@txt]",
+ server: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings-merged@txt]"
+ ],
+ MC_SLIM: [
+ client: "[net.minecraft:client:${MC_VERSION}-${MCP_VERSION}:slim]",
+ server: "[net.minecraft:server:${MC_VERSION}-${MCP_VERSION}:slim]"
+ ],
+ MC_SLIM_SHA: [
+ client: "'${downloadClientSlim.output.get().asFile.sha1()}'",
+ server: "'${downloadServerSlim.output.get().asFile.sha1()}'"
+ ],
+ MC_EXTRA: [
+ client: "[net.minecraft:client:${MC_VERSION}-${MCP_VERSION}:extra]",
+ server: "[net.minecraft:server:${MC_VERSION}-${MCP_VERSION}:extra]"
+ ],
+ MC_EXTRA_SHA: [
+ client: "'${downloadClientExtra.output.get().asFile.sha1()}'",
+ server: "'${downloadServerExtra.output.get().asFile.sha1()}'"
+ ],
+ MC_SRG: [
+ client: "[net.minecraft:client:${MC_VERSION}-${MCP_VERSION}:srg]",
+ server: "[net.minecraft:server:${MC_VERSION}-${MCP_VERSION}:srg]"
+ ],
+ /*MC_SRG_SHA: [
+ client: "'${createClientSRG.output.sha1()}'",
+ server: "'${createServerSRG.output.sha1()}'"
+ ],*/
+ MCP_VERSION: [
+ client: "'${MCP_VERSION}'",
+ server: "'${MCP_VERSION}'"
+ ]
+ ],
+ processors: [
+ [
+ sides: ['server'],
+ jar: INSTALLER_TOOLS,
+ classpath: getClasspath(project, libs, INSTALLER_TOOLS),
+ args: [
+ '--task', 'EXTRACT_FILES',
+ '--archive', '{INSTALLER}',
+
+ '--from', 'data/run.sh',
+ '--to', '{ROOT}/run.sh',
+ '--exec', '{ROOT}/run.sh',
+ //'--from', "data/run_fml_${VERSION.replace('-', '_').sh",
+ //'--to', '{ROOT}/run_fml_${VERSION.replace('-', '_').sh',
+ //'--exec', '{ROOT}/run_fml_${VERSION.replace('-', '_').sh',
+
+ '--from', 'data/run.bat',
+ '--to', '{ROOT}/run.bat',
+ //'--from', 'data/run_fml_${VERSION.replace('-', '_').bat',
+ //'--to', '{ROOT}/run_fml_${VERSION.replace('-', '_').bat',
+
+ '--from', 'data/user_jvm_args.txt',
+ '--to', '{ROOT}/user_jvm_args.txt',
+ '--optional', '{ROOT}/user_jvm_args.txt',
+
+ '--from', 'data/win_args.txt',
+ '--to', "{ROOT}/libraries/${MAVEN_PATH}/win_args.txt",
+
+ '--from', 'data/unix_args.txt',
+ '--to', "{ROOT}/libraries/${MAVEN_PATH}/unix_args.txt"
+ ]
+ ], [
+ jar: INSTALLER_TOOLS,
+ classpath: getClasspath(project, libs, INSTALLER_TOOLS),
+ args: [
+ '--task', 'MCP_DATA',
+ '--input', "[${MCP_ARTIFACT.descriptor}]",
+ '--output', '{MAPPINGS}',
+ '--key', 'mappings'
+ ]
+ ], [
+ jar: INSTALLER_TOOLS,
+ classpath: getClasspath(project, libs, INSTALLER_TOOLS),
+ args: [
+ '--task', 'DOWNLOAD_MOJMAPS',
+ '--version', MC_VERSION,
+ '--side', '{SIDE}',
+ '--output', '{MOJMAPS}'
+ ]
+ ], [
+ jar: INSTALLER_TOOLS,
+ classpath: getClasspath(project, libs, INSTALLER_TOOLS),
+ args: [
+ '--task', 'MERGE_MAPPING',
+ '--left', '{MAPPINGS}',
+ '--right', '{MOJMAPS}',
+ '--output', '{MERGED_MAPPINGS}',
+ '--classes', '--reverse-right'
+ ]
+ ], [
+ jar: JAR_SPLITTER,
+ classpath: getClasspath(project, libs, JAR_SPLITTER),
+ args: [
+ '--input', '{MINECRAFT_JAR}',
+ '--slim', '{MC_SLIM}',
+ '--extra', '{MC_EXTRA}',
+ '--srg', '{MERGED_MAPPINGS}'
+ ],
+ outputs: [
+ '{MC_SLIM}': '{MC_SLIM_SHA}',
+ '{MC_EXTRA}': '{MC_EXTRA_SHA}'
+ ]
+ ], [
+ jar: VIGNETTE,
+ classpath: getClasspath(project, libs, VIGNETTE),
+ args: [
+ '--jar-in', '{MC_SLIM}',
+ '--jar-out', '{MC_SRG}',
+ '--mapping-format', 'tsrg2',
+ '--mappings', '{MERGED_MAPPINGS}',
+ // '--stable',
+ '--create-inits', '--fix-param-annotations', '--fernflower-meta'
+ ]/*,
+ outputs: [
+ '{MC_SRG}': '{MC_SRG_SHA}'
+ ]
+ */
+ ]
+ ]
+ ]
+ getClasspath(project, libs, MCP_ARTIFACT.descriptor) //Tell it to download mcp_config
+ }
+ }
+
+ task installerJar(type: InstallerJar) {
+ packedDependencies = PACKED_DEPS
+ from(extraTxts)
+ //TODO: make FML installer logo?
+ from(rootProject.file('/forge_installer_logo.png')) {
+ rename { 'big_logo.png' }
+ }
+ }
+
+ publishing {
+ publications {
+ mavenJava(MavenPublication) {
+ artifact universalJar
+ artifact installerJar
+ artifact userdevJar
+ artifact sourcesJar
+ }
+ }
+ }
+
+ // Since we need the modules in the bootstrap, we need to make sure they are compiled before we do each run
+ afterEvaluate { prepareRuns.dependsOn(':fmlcore:jar', ':fmlloader:jar', ':javafmllanguage:jar', ':mclanguage:jar') }
+}
+
+project(':forge') {
evaluationDependsOn(':clean')
apply plugin: 'java-library'
- apply plugin: 'maven-publish'
- apply plugin: 'eclipse'
apply plugin: 'net.minecraftforge.gradle.patcher'
apply plugin: 'org.cadixdev.licenser'
- java.toolchain.languageVersion = JavaLanguageVersion.of(8)
- group = 'net.minecraftforge'
-
sourceSets {
- fmllauncher {
- java {
- srcDirs = ["$rootDir/src/fmllauncher/java"]
- }
- resources {
- srcDirs = ["$rootDir/src/fmllauncher/resources"]
- }
- }
main {
- compileClasspath += sourceSets.fmllauncher.runtimeClasspath
- runtimeClasspath += sourceSets.fmllauncher.runtimeClasspath
java {
- srcDirs = ["$rootDir/src/main/java"]
+ srcDirs = [
+ "$rootDir/src/main/java",
+ "$rootDir/src/fmlcommon/java"
+ ]
}
resources {
srcDirs = [
"$rootDir/src/main/resources",
- "$rootDir/src/generated/resources"
+ "$rootDir/src/generated/resources",
+ "$rootDir/src/fmlcommon/resources"
]
}
}
test {
- compileClasspath += sourceSets.fmllauncher.runtimeClasspath
- runtimeClasspath += sourceSets.fmllauncher.runtimeClasspath
java {
srcDirs = [
- "$rootDir/src/test/java",
- "$rootDir/src/fmllaunchertest/java"
+ "$rootDir/src/test/java"
]
}
resources {
@@ -157,47 +796,41 @@ project(':forge') {
]
}
}
- userdev {
- compileClasspath += sourceSets.main.runtimeClasspath
- runtimeClasspath += sourceSets.main.runtimeClasspath
- java {
- srcDirs = ["$rootDir/src/userdev/java"]
- }
- resources {
- srcDirs = ["$rootDir/src/userdev/resources"]
- }
- }
- userdev_test {
- compileClasspath += sourceSets.userdev.runtimeClasspath
- runtimeClasspath += sourceSets.userdev.runtimeClasspath
- compileClasspath += sourceSets.test.runtimeClasspath
- runtimeClasspath += sourceSets.test.runtimeClasspath
- }
}
//Eclipse adds the sourcesets twice, once where we tell it to, once in the projects folder. No idea why. So delete them
eclipse.classpath.file.whenMerged { cls -> cls.entries.removeIf { e -> e instanceof SourceFolder && e.path.startsWith('src/') && !e.path.startsWith('src/main/') } }
- repositories {
- mavenLocal()
- mavenCentral()
- }
-
ext {
- GIT_INFO = gradleutils.gitInfo
- SPEC_VERSION = GIT_INFO.tag
+ SPEC_VERSION = gradleutils.gitInfo.tag
// The new versioning sceme is -..
// ForgeMC is a unique identifier for every MC version we have supported.
// Essentially, the same as the old, except dropping the first number, and the builds are no longer unique.
MCP_ARTIFACT = project(':mcp').mcp.config.get()
- SPECIAL_SOURCE = 'net.md-5:SpecialSource:1.10.0'
- SPECIAL_SOURCE_MCP = 'net.md-5:SpecialSource:1.8.5'
VERSION_JSON = project(':mcp').file('build/mcp/downloadJson/version.json')
- BINPATCH_TOOL = 'net.minecraftforge:binarypatcher:1.0.12:fatjar'
- INSTALLER_TOOLS = 'net.minecraftforge:installertools:1.2.6'
+ PACKED_DEPS = [':fmlcore:jar', ':fmlloader:jar', ':javafmllanguage:jar', ':mclanguage:jar']
+ MAVEN_PATH = "${group.replace('.', '/')}/${project.name}/${VERSION}"
}
- version = gradleutils.getMCTagOffsetBranchVersion(MC_VERSION)
- println('Forge Version: ' + version)
+ configurations {
+ installer {
+ // Don't pull all libraries, if we're missing something, add it to the installer list so the installer knows to download it.
+ transitive = false
+ }
+ moduleonly
+ api.extendsFrom(installer)
+ }
+
+ dependencies {
+ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
+ testImplementation 'org.junit.vintage:junit-vintage-engine:5.+'
+ testImplementation 'org.opentest4j:opentest4j:1.2.0' // needed for junit 5
+ testImplementation 'org.hamcrest:hamcrest-all:1.3' // needs advanced matching for list order
+ implementation project(':fmlcore')
+ implementation project(':fmlloader')
+ implementation project(':javafmllanguage')
+ implementation project(':mclanguage')
+ }
+ dependencies sharedDeps
patcher {
excs.from file("$rootDir/src/main/resources/forge.exc")
@@ -210,32 +843,11 @@ project(':forge') {
runs {
forge_client {
- taskName 'forge_client'
-
- main 'net.minecraftforge.userdev.LaunchTesting'
- workingDirectory project.file('run')
-
- environment 'target', 'fmldevclient'
- environment 'assetIndex', '{asset_index}'
- environment 'assetDirectory', downloadAssets.output
- environment 'nativesDirectory', extractNatives.output.get().asFile
-
- environment 'MC_VERSION', MC_VERSION
- environment 'MCP_VERSION', MCP_VERSION
- environment 'FORGE_GROUP', project.group
- environment 'FORGE_SPEC', SPEC_VERSION
- environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1)
- environment 'LAUNCHER_VERSION', SPEC_VERSION
- property 'org.lwjgl.system.SharedLibraryExtractDirectory', 'lwjgl_dll'
property 'eventbus.checkTypesOnDispatch', 'true'
-
- ideaModule "${rootProject.name}.${project.name}.userdev"
-
+ args '--launchTarget', 'forgeclientdev'
+ ideaModule "${rootProject.name}.${project.name}.main"
mods {
- forge {
- source sourceSets.main
- source sourceSets.userdev
- }
+ minecraft { source sourceSets.main }
}
}
@@ -245,34 +857,19 @@ project(':forge') {
environment 'MOD_CLASSES', 'dummy' // Needed to work around FG limitation, FG will replace this!
- ideaModule "${rootProject.name}.${project.name}.userdev_test"
+ ideaModule "${rootProject.name}.${project.name}.test"
mods {
- forge { source sourceSets.main }
tests { sources sourceSets.test }
}
}
forge_server {
- taskName 'forge_server'
-
- main 'net.minecraftforge.userdev.LaunchTesting'
- workingDirectory project.file('run')
-
- environment 'target', 'fmldevserver'
-
- environment 'MC_VERSION', MC_VERSION
- environment 'MCP_VERSION', MCP_VERSION
- environment 'FORGE_GROUP', project.group
- environment 'FORGE_SPEC', SPEC_VERSION
- environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1)
- environment 'LAUNCHER_VERSION', SPEC_VERSION
- property 'eventbus.checkTypesOnDispatch', 'true'
-
- ideaModule "${rootProject.name}.${project.name}.userdev"
+ args '--launchTarget', 'forgeserverdev'
+ ideaModule "${rootProject.name}.${project.name}.main"
mods {
- forge { source sourceSets.main }
+ minecraft { source sourceSets.main }
}
}
@@ -282,39 +879,30 @@ project(':forge') {
environment 'MOD_CLASSES', 'dummy' // Needed to work around FG limitation, FG will replace this!
- ideaModule "${rootProject.name}.${project.name}.userdev_test"
+ ideaModule "${rootProject.name}.${project.name}.test"
mods {
- forge { source sourceSets.main }
tests { sources sourceSets.test }
}
}
+ def forgeDataArgs = [
+ '--mod', 'forge',
+ '--all',
+ '--output', rootProject.file('src/generated/resources/'),
+ '--validate',
+ '--existing', sourceSets.main.resources.srcDirs[0]
+ ]
forge_data {
taskName 'forge_data'
-
- main 'net.minecraftforge.userdev.LaunchTesting'
- workingDirectory project.file('run')
-
- environment 'target', 'fmldevdata'
- environment 'assetIndex', '{asset_index}'
- environment 'assetDirectory', downloadAssets.output
-
- environment 'MC_VERSION', MC_VERSION
- environment 'MCP_VERSION', MCP_VERSION
- environment 'FORGE_GROUP', project.group
- environment 'FORGE_SPEC', SPEC_VERSION
- environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1)
- environment 'LAUNCHER_VERSION', SPEC_VERSION
-
- ideaModule "${rootProject.name}.${project.name}.userdev"
+ args '--launchTarget', 'forgedatadev'
+ ideaModule "${rootProject.name}.${project.name}.main"
mods {
- forge { source sourceSets.main }
+ minecraft { source sourceSets.main }
}
-
- args '--mod', 'forge', '--all', '--output', rootProject.file('src/generated/resources/'), '--validate',
- '--existing', sourceSets.main.resources.srcDirs[0]
+
+ args forgeDataArgs
}
forge_test_data {
@@ -323,32 +911,39 @@ project(':forge') {
environment 'MOD_CLASSES', 'dummy' // Needed to work around FG limitation, FG will replace this!
- ideaModule "${rootProject.name}.${project.name}.userdev_test"
+ ideaModule "${rootProject.name}.${project.name}.test"
mods {
- tests { sources sourceSets.test }
+ tests { sources sourceSets.test }
+ }
+
+ afterEvaluate {
+ // Clear forge's main datagen args
+ args.removeAll {
+ forgeDataArgs.contains(it instanceof File ? (it as File).absolutePath : it.toString())
+ }
+
+ args '--flat', '--all', '--validate',
+ '--mod', 'data_gen_test',
+ '--mod', 'piston_event_test',
+ '--mod', 'global_loot_test',
+ '--mod', 'scaffolding_test',
+ '--mod', 'custom_tag_types_test',
+ '--mod', 'new_model_loader_test',
+ '--output', rootProject.file('src/generated_test/resources/'),
+ '--existing', sourceSets.main.resources.srcDirs[0],
+ '--existing', sourceSets.test.resources.srcDirs[0]
}
-
- args '--flat', '--all', '--validate',
- '--mod', 'data_gen_test',
- '--mod', 'piston_event_test',
- '--mod', 'global_loot_test',
- '--mod', 'scaffolding_test',
- '--mod', 'custom_tag_types_test',
- '--mod', 'new_model_loader_test',
- '--output', rootProject.file('src/generated_test/resources/'),
- '--existing', sourceSets.main.resources.srcDirs[0],
- '--existing', sourceSets.test.resources.srcDirs[0]
}
}
}
-
+
ext {
MANIFESTS = [
'/': [
'Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
- 'GitCommit': GIT_INFO.abbreviatedId,
- 'Git-Branch': GIT_INFO.branch
+ 'GitCommit': gradleutils.gitInfo.abbreviatedId,
+ 'Git-Branch': gradleutils.gitInfo.branch
] as LinkedHashMap,
'net/minecraftforge/versions/forge/': [
'Specification-Title': 'Forge',
@@ -389,104 +984,22 @@ project(':forge') {
'Implementation-Title': 'FML Launcher',
'Implementation-Version': SPEC_VERSION,
'Implementation-Vendor': 'Forge'
- ] as LinkedHashMap,
- 'net/minecraftforge/fml/userdev/': [
- 'Specification-Title': 'Forge User Development',
- 'Specification-Vendor': 'Forge Development LLC',
- 'Specification-Version': SPEC_VERSION,
- 'Implementation-Title': project.group,
- 'Implementation-Version': project.version.substring(MC_VERSION.length() + 1),
- 'Implementation-Vendor': 'Forge Development LLC'
] as LinkedHashMap
]
}
-
- configurations {
- installer {
- transitive = false //Don't pull all libraries, if we're missing something, add it to the installer list so the installer knows to download it.
- }
- api.extendsFrom(installer)
- fmllauncherImplementation.extendsFrom(installer, implementation)
- }
- dependencies {
- installer 'org.ow2.asm:asm:9.1'
- installer 'org.ow2.asm:asm-commons:9.1'
- installer 'org.ow2.asm:asm-tree:9.1'
- installer 'org.ow2.asm:asm-util:9.1'
- installer 'org.ow2.asm:asm-analysis:9.1'
- installer 'cpw.mods:modlauncher:8.0.9'
- installer 'cpw.mods:grossjava9hacks:1.3.3'
- installer 'net.minecraftforge:accesstransformers:3.0.1'
- installer 'org.antlr:antlr4-runtime:4.9.1' //Dep of AccessTransformer
- installer 'net.minecraftforge:eventbus:4.0.+'
- installer 'net.minecraftforge:forgespi:' + SPI_VERSION
- installer 'net.minecraftforge:coremods:4.0.+'
- installer 'net.minecraftforge:unsafe:0.2.+'
- installer 'com.electronwill.night-config:core:3.6.3'
- installer 'com.electronwill.night-config:toml:3.6.3'
- installer 'org.jline:jline:3.12.+'
- installer 'org.apache.maven:maven-artifact:3.6.3'
- installer 'net.jodah:typetools:0.8.3'
- installer 'org.apache.logging.log4j:log4j-api:2.11.2'
- installer 'org.apache.logging.log4j:log4j-core:2.11.2'
- installer 'net.minecrell:terminalconsoleappender:1.2.0'
- installer 'net.sf.jopt-simple:jopt-simple:5.0.4'
- installer 'org.spongepowered:mixin:0.8.2'
- // This is org.openjdk.nashorn:nashorn-core:15.1.1 repackaged so it doesn't crash on JREs < 15.
- // See: https://github.com/LexManos/NashornLegacyPackager
- installer 'net.minecraftforge:nashorn-core-compat:15.1.1.1'
- fmllauncherImplementation 'com.google.guava:guava:21.0'
- fmllauncherImplementation 'com.google.code.gson:gson:2.8.0'
- fmllauncherImplementation 'org.lwjgl:lwjgl:3.2.2'
- fmllauncherImplementation 'org.lwjgl:lwjgl-glfw:3.2.2'
- fmllauncherImplementation 'org.lwjgl:lwjgl-opengl:3.2.2'
- fmllauncherImplementation 'org.lwjgl:lwjgl-stb:3.2.2'
- testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
- testImplementation 'org.junit.vintage:junit-vintage-engine:5.+'
- testImplementation 'org.opentest4j:opentest4j:1.2.0' // needed for junit 5
- testImplementation 'org.hamcrest:hamcrest-all:1.3' // needs advanced matching for list order
- }
-
- def extraTxts = [
- rootProject.file('CREDITS.txt'),
- rootProject.file('LICENSE.txt')
- ]
-
- def changelog = rootProject.file('build/changelog.txt')
- if (changelog.exists())
- extraTxts += changelog
-
+
task crowdin(type: Crowdin) {
key = project.hasProperty('crowdinKey') ? project.crowdinKey : null
//TODO: Merge our english.json?
}
-
- // We apply the bin patches we just created to make a jar that is JUST our changes
- ['Client', 'Server', 'Joined'].each { side ->
- def gen = tasks.getByName("gen${side}BinPatches")
- gen.tool = BINPATCH_TOOL
- task "apply${side}BinPatches"(type: net.minecraftforge.gradle.common.tasks.ApplyBinPatches, dependsOn: gen) {
- clean = gen.cleanJar
- patch = gen.output
- tool = BINPATCH_TOOL
- }
- def srgTask = tasks.getByName(patcher.notchObf ? 'createMcp2Obf' : 'createMcp2Srg')
- // Create SRG named Vanilla jars, using the SpecialSource we have in the installer
- task "create${side}SRG"(type: net.minecraftforge.gradle.userdev.tasks.RenameJar, dependsOn: srgTask) {
- tool = SPECIAL_SOURCE_MCP + ':shaded'
- args = ['--stable', '--in-jar', '{input}', '--out-jar', '{output}', '--srg-in', '{mappings}']
- mappings = srgTask.output
- input = gen.cleanJar
- output = file("build/create${name}SRG/output.jar")
- }
- }
-
+ sharedFmlonlyForge.call(project)
+
task downloadLibraries(type: DownloadLibraries, dependsOn: ':mcp:setupMCP') {
input = VERSION_JSON
output = rootProject.file('build/libraries/')
}
-
+
task extractInheritance(type: ExtractInheritance, dependsOn: [genJoinedBinPatches, downloadLibraries]) {
tool = INSTALLER_TOOLS + ':fatjar'
input = genJoinedBinPatches.cleanJar
@@ -494,38 +1007,21 @@ project(':forge') {
}
task findFieldInstanceChecks(type: FieldCompareFinder, dependsOn: ['createJoinedSRG']) {
- jar = tasks.getByName('createJoinedSRG').output
+ jar = createJoinedSRG.output
output = rootProject.file('src/main/resources/coremods/field_to_instanceof.json')
fields {
+ /* 1.17 changed most things to use Tags. So this isn't nessasary anymore so just make an empty list
bows {
- cls = 'net/minecraft/item/Items'
- name = 'field_151031_f'
- replacement = 'net/minecraft/item/BowItem'
+ cls = 'net/minecraft/world/item/Items'
+ name = 'f_42411_'
+ replacement = 'net/minecraft/world/item/BowItem'
}
crossbows {
- cls = 'net/minecraft/item/Items'
- name = 'field_222114_py'
- replacement = 'net/minecraft/item/CrossbowItem'
- }
- filled_map {
- cls = 'net/minecraft/item/Items'
- name = 'field_151098_aY'
- replacement = 'net/minecraft/item/FilledMapItem'
- blacklist 'net/minecraft/client/gui/screen/inventory/CartographyTableScreen', 'func_230450_a_', '(Lcom/mojang/blaze3d/matrix/MatrixStack;FII)V'
- blacklist 'net/minecraft/client/renderer/entity/ItemFrameRenderer', 'func_225623_a_', '(Lnet/minecraft/entity/item/ItemFrameEntity;FFLcom/mojang/blaze3d/matrix/MatrixStack;Lnet/minecraft/client/renderer/IRenderTypeBuffer;I)V'
- blacklist 'net/minecraft/item/crafting/MapCloningRecipe'
- blacklist 'net/minecraft/item/crafting/MapExtendingRecipe'
- }
- fishing_rod {
- cls = 'net/minecraft/item/Items'
- name = 'field_151112_aM'
- replacement = 'net/minecraft/item/FishingRodItem'
- }
- shears {
- cls = 'net/minecraft/item/Items'
- name = 'field_151097_aZ'
- replacement = 'net/minecraft/item/ShearsItem'
+ cls = 'net/minecraft/world/item/Items'
+ name = 'f_42717_'
+ replacement = 'net/minecraft/world/item/CrossbowItem'
}
+ */
}
}
@@ -541,7 +1037,7 @@ project(':forge') {
}
task checkExcs(type: CheckExcs, dependsOn: jar) {
- binary = jar.archiveFile
+ binary = jar.archiveFile.get().asFile
excs.from patcher.excs
}
@@ -556,127 +1052,80 @@ project(':forge') {
patchDir = file("$rootDir/patches")
autoFix = false
}
+
genPatches {
finalizedBy checkPatches
autoHeader true
lineEnding = '\n'
}
- task launcherJson(dependsOn: ['signUniversalJar', 'signLauncherJar']) {
- inputs.file universalJar.archiveFile
- inputs.file { launcherJar.archiveFile }
- ext {
- output = file('build/version.json')
- vanilla = project(':mcp').file('build/mcp/downloadJson/version.json')
- timestamp = iso8601Now()
- comment = [
- "Please do not automate the download and installation of Forge.",
- "Our efforts are supported by ads from the download page.",
- "If you MUST automate this, please consider supporting the project through https://www.patreon.com/LexManos/"
- ]
- def idx = project.version.indexOf('-')
- id = project.version.substring(0, idx) + "-${project.name}" + project.version.substring(idx)
- }
- inputs.file vanilla
- outputs.file output
- doLast {
- def json_vanilla = vanilla.json()
- def json = [
+ task launcherJson(type: LauncherJson) {
+ packedDependencies = [':fmlloader:jar']
+ doFirst {
+ def forge_client = project(':forge').patcher.runs.forge_client
+ json = [
_comment_: comment,
id: id,
time: timestamp,
releaseTime: timestamp,
type: 'release',
- mainClass: 'cpw.mods.modlauncher.Launcher',
+ mainClass: 'cpw.mods.bootstraplauncher.BootstrapLauncher',
inheritsFrom: MC_VERSION,
logging: {},
arguments: [
- game: ['--launchTarget', 'fmlclient', '--fml.forgeVersion', "${project.version.substring(MC_VERSION.length() + 1)}", '--fml.mcVersion', "${MC_VERSION}", '--fml.forgeGroup', "${project.group}", '--fml.mcpVersion', "${MCP_VERSION}"],
- // Support running with Java 8 and up, including 16
- jvm: [
- // Allow these JVM args to not crash Java 8
- '-XX:+IgnoreUnrecognizedVMOptions',
- // ModLauncher uses sun.security.util.ManifestEntryVerifier and needs access to it
- '--add-exports=java.base/sun.security.util=ALL-UNNAMED',
- // JDK bug, not fixed properly - https://bugs.openjdk.java.net/browse/JDK-8186019
- '--add-exports=jdk.naming.dns/com.sun.jndi.dns=java.naming',
- // ModLauncher reflects field 'jv' in java.util.jar.JarVerifier
- '--add-opens=java.base/java.util.jar=ALL-UNNAMED'
+ game: ['--launchTarget', 'forgeclient',
+ '--fml.forgeVersion', FORGE_VERSION,
+ '--fml.mcVersion', MC_VERSION,
+ '--fml.forgeGroup', project.group,
+ '--fml.mcpVersion', MCP_VERSION],
+ jvm: ['-DlegacyClassPath=${classpath}',
+ "-DignoreList=${forge_client.properties.ignoreList}",
+ "-DmergeModules=${forge_client.properties.mergeModules}",
+ '-DlibraryDirectory=${library_directory}',
+ '-p', Util.getArtifacts(project, configurations.moduleonly, false).values().collect{'${library_directory}/' + it.downloads.artifact.path}.join('${classpath_separator}'),
+ '--add-modules', 'ALL-MODULE-PATH',
+ '--add-opens', 'java.base/java.util.jar=cpw.mods.securejarhandler',
+ '--add-exports', 'java.base/sun.security.util=cpw.mods.securejarhandler',
+ '--add-exports', 'jdk.naming.dns/com.sun.jndi.dns=java.naming'
]
],
- libraries: [
- [
- //Package our launcher jar as the 'main' jar Mojang's launcher loads. It will in turn load Forge's regular jars itself.
- name: "${project.group}:${project.name}:${project.version}",
- downloads: [
- artifact: [
- path: "${project.group.replace('.', '/')}/${project.name}/${project.version}/${project.name}-${project.version}.jar",
- url: "", //Do not include the URL so that the installer/launcher won't grab it. This is also why we don't have the universal classifier
- sha1: launcherJar.archiveFile.get().asFile.sha1(),
- size: launcherJar.archiveFile.get().asFile.length()
- ]
- ]
- ]
- ]
+ libraries: []
]
-
- def artifacts = getArtifacts(project, project.configurations.installer, false)
- artifacts.each { key, lib ->
- json.libraries.add(lib)
- }
-
- output.text = new JsonBuilder(json).toPrettyString()
}
}
- task installerJson(dependsOn: [launcherJson, genClientBinPatches, applyClientBinPatches, applyServerBinPatches/*, createClientSRG, createServerSRG*/]) {
+ task installerJson(type: InstallerJson, dependsOn: [launcherJson, genClientBinPatches, applyClientBinPatches, applyServerBinPatches]) {
ext {
- output = file('build/install_profile.json')
- JAR_SPLITTER = 'net.minecraftforge:jarsplitter:1.1.4'
+ // remove :fatjar
+ BIN_PATCHER = BINPATCH_TOOL.substring(0, BINPATCH_TOOL.length() - 1 - BINPATCH_TOOL.split(':')[3].length())
}
+ input.from applyClientBinPatches.output, applyServerBinPatches.output, genClientBinPatches.toolJar, launcherJson.output
+ icon = rootProject.file('icon.ico')
+ packedDependencies = PACKED_DEPS
+
doFirst {
- ext.BIN_PATCHER = BINPATCH_TOOL.substring(0, BINPATCH_TOOL.length() - 1 - BINPATCH_TOOL.split(':')[3].length())
- }
- inputs.file applyClientBinPatches.output
- inputs.file applyServerBinPatches.output
- inputs.file genClientBinPatches.toolJar
- inputs.file launcherJson.output
- /*
- inputs.file createClientSRG.output
- inputs.file createServerSRG.output
- */
- outputs.file output
- doLast {
- def libs = [
- "${project.group}:${project.name}:${project.version}:universal": [
- name: "${project.group}:${project.name}:${project.version}:universal",
- downloads: [
- artifact: [
- path: "${project.group.replace('.', '/')}/${project.name}/${project.version}/${project.name}-${project.version}-universal.jar",
- url: "", //Do not include the URL so that the installer/launcher won't grab it. This is also why we don't have the universal classifier
- sha1: universalJar.archiveFile.get().asFile.sha1(),
- size: universalJar.archiveFile.get().asFile.length()
- ]
- ]
- ]
- ]
- def json = [
+ def libs = libraries
+ json = [
_comment_: launcherJson.comment,
- spec: 0,
+ spec: 1,
profile: project.name,
version: launcherJson.id,
- icon: "data:image/png;base64," + new String(Base64.getEncoder().encode(Files.readAllBytes(rootProject.file("icon.ico").toPath()))),
- json: '/version.json',
- path: "${project.group}:${project.name}:${project.version}",
- logo: '/big_logo.png',
+ path: null,
minecraft: MC_VERSION,
- welcome: "Welcome to the simple ${project.name.capitalize()} installer.",
- mirrorList: "https://files.minecraftforge.net/mirrors-2.0.json",
+ serverJarPath: '{LIBRARY_DIR}/net/minecraft/server/{MINECRAFT_VERSION}/server-{MINECRAFT_VERSION}.jar',
data: [
MAPPINGS: [
client: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings@txt]",
server: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings@txt]"
],
+ MOJMAPS: [
+ client: "[net.minecraft:client:${MC_VERSION}-${MCP_VERSION}:mappings@txt]",
+ server: "[net.minecraft:server:${MC_VERSION}-${MCP_VERSION}:mappings@txt]"
+ ],
+ MERGED_MAPPINGS: [
+ client: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings-merged@txt]",
+ server: "[${MCP_ARTIFACT.group}:${MCP_ARTIFACT.name}:${MCP_ARTIFACT.version}:mappings-merged@txt]"
+ ],
BINPATCH: [
client: '/data/client.lzma',
server: '/data/server.lzma'
@@ -686,16 +1135,16 @@ project(':forge') {
server: "[net.minecraft:server:${MC_VERSION}-${MCP_VERSION}:slim]"
],
MC_SLIM_SHA: [
- client: "'${tasks.getByName('downloadClientSlim').output.get().asFile.sha1()}'",
- server: "'${tasks.getByName('downloadServerSlim').output.get().asFile.sha1()}'"
+ client: "'${downloadClientSlim.output.get().asFile.sha1()}'",
+ server: "'${downloadServerSlim.output.get().asFile.sha1()}'"
],
MC_EXTRA: [
client: "[net.minecraft:client:${MC_VERSION}-${MCP_VERSION}:extra]",
server: "[net.minecraft:server:${MC_VERSION}-${MCP_VERSION}:extra]"
],
MC_EXTRA_SHA: [
- client: "'${tasks.getByName('downloadClientExtra').output.get().asFile.sha1()}'",
- server: "'${tasks.getByName('downloadServerExtra').output.get().asFile.sha1()}'"
+ client: "'${downloadClientExtra.output.get().asFile.sha1()}'",
+ server: "'${downloadServerExtra.output.get().asFile.sha1()}'"
],
MC_SRG: [
client: "[net.minecraft:client:${MC_VERSION}-${MCP_VERSION}:srg]",
@@ -720,6 +1169,36 @@ project(':forge') {
],
processors: [
[
+ sides: ['server'],
+ jar: INSTALLER_TOOLS,
+ classpath: getClasspath(project, libs, INSTALLER_TOOLS),
+ args: [
+ '--task', 'EXTRACT_FILES',
+ '--archive', '{INSTALLER}',
+
+ '--from', 'data/run.sh',
+ '--to', '{ROOT}/run.sh',
+ '--exec', '{ROOT}/run.sh',
+ //'--from', "data/run_forge_${VERSION.replace('-', '_').sh",
+ //'--to', '{ROOT}/run_forge_${VERSION.replace('-', '_').sh',
+ //'--exec', '{ROOT}/run_forge_${VERSION.replace('-', '_').sh',
+
+ '--from', 'data/run.bat',
+ '--to', '{ROOT}/run.bat',
+ //'--from', 'data/run_forge_${VERSION.replace('-', '_').bat',
+ //'--to', '{ROOT}/run_forge_${VERSION.replace('-', '_').bat',
+
+ '--from', 'data/user_jvm_args.txt',
+ '--to', '{ROOT}/user_jvm_args.txt',
+ '--optional', '{ROOT}/user_jvm_args.txt',
+
+ '--from', 'data/win_args.txt',
+ '--to', "{ROOT}/libraries/${MAVEN_PATH}/win_args.txt",
+
+ '--from', 'data/unix_args.txt',
+ '--to', "{ROOT}/libraries/${MAVEN_PATH}/unix_args.txt"
+ ]
+ ], [
jar: INSTALLER_TOOLS,
classpath: getClasspath(project, libs, INSTALLER_TOOLS),
args: [
@@ -728,6 +1207,25 @@ project(':forge') {
'--output', '{MAPPINGS}',
'--key', 'mappings'
]
+ ], [
+ jar: INSTALLER_TOOLS,
+ classpath: getClasspath(project, libs, INSTALLER_TOOLS),
+ args: [
+ '--task', 'DOWNLOAD_MOJMAPS',
+ '--version', MC_VERSION,
+ '--side', '{SIDE}',
+ '--output', '{MOJMAPS}'
+ ]
+ ], [
+ jar: INSTALLER_TOOLS,
+ classpath: getClasspath(project, libs, INSTALLER_TOOLS),
+ args: [
+ '--task', 'MERGE_MAPPING',
+ '--left', '{MAPPINGS}',
+ '--right', '{MOJMAPS}',
+ '--output', '{MERGED_MAPPINGS}',
+ '--classes', '--reverse-right'
+ ]
], [
jar: JAR_SPLITTER,
classpath: getClasspath(project, libs, JAR_SPLITTER),
@@ -735,20 +1233,22 @@ project(':forge') {
'--input', '{MINECRAFT_JAR}',
'--slim', '{MC_SLIM}',
'--extra', '{MC_EXTRA}',
- '--srg', '{MAPPINGS}'
+ '--srg', '{MERGED_MAPPINGS}'
],
outputs: [
'{MC_SLIM}': '{MC_SLIM_SHA}',
'{MC_EXTRA}': '{MC_EXTRA_SHA}'
]
], [
- jar: SPECIAL_SOURCE_MCP,
- classpath: getClasspath(project, libs, SPECIAL_SOURCE_MCP),
+ jar: VIGNETTE,
+ classpath: getClasspath(project, libs, VIGNETTE),
args: [
- //'--stable', Java 9 Is borked, https://bugs.openjdk.java.net/browse/JDK-8184940 TODO: find a fix.
- '--in-jar', '{MC_SLIM}',
- '--out-jar', '{MC_SRG}',
- '--srg-in', '{MAPPINGS}'
+ '--jar-in', '{MC_SLIM}',
+ '--jar-out', '{MC_SRG}',
+ '--mapping-format', 'tsrg2',
+ '--mappings', '{MERGED_MAPPINGS}',
+ // '--stable',
+ '--create-inits', '--fix-param-annotations', '--fernflower-meta'
]/*,
outputs: [
'{MC_SRG}': '{MC_SRG_SHA}'
@@ -761,34 +1261,21 @@ project(':forge') {
'--clean', '{MC_SRG}',
'--output', '{PATCHED}',
'--apply', '{BINPATCH}'
- ],
+ ]/*, Because Vignette is unstable, it screws with the entry order of the binpatched jar, so we can't use the hash right now
+ // Re-enable this when https://github.com/CadixDev/Vignette/issues/1 is solved
outputs: [
'{PATCHED}': '{PATCHED_SHA}'
- ]
+ ]*/
]
]
]
getClasspath(project, libs, MCP_ARTIFACT.descriptor) //Tell it to download mcp_config
- json.libraries = libs.values().sort{a,b -> a.name.compareTo(b.name)}
-
- output.text = new JsonBuilder(json).toPrettyString()
}
}
-
- ['client', 'server'].each { side ->
- ['slim', 'extra'].each { type ->
- def name = "download${side.capitalize()}${type.capitalize()}"
- task "${name}"(type: DownloadMavenArtifact) {
- artifact = "net.minecraft:${side}:${MC_VERSION}-${MCP_VERSION}:${type}"
- }
- installerJson.dependsOn(name)
- installerJson.inputs.file(tasks.getByName(name).output)
- }
- }
-
+
universalJar {
from extraTxts
-
+
// add crowdin locales
from { crowdin.output.present && crowdin.output.get().asFile.exists() ? zipTree(crowdin.output) : null}
dependsOn crowdin
@@ -804,94 +1291,21 @@ project(':forge') {
}
}
}
-
- task launcherJar(type: Jar) {
- classifier 'launcher'
- from sourceSets.fmllauncher.output
- doFirst {
- def classpath = new StringBuilder()
- def artifacts = getArtifacts(project, project.configurations.installer, false)
- artifacts.each { key, lib ->
- classpath += "libraries/${lib.downloads.artifact.path} "
- }
- classpath += "libraries/net/minecraft/server/${MC_VERSION}-${MCP_VERSION}/server-${MC_VERSION}-${MCP_VERSION}-extra.jar"
-
- MANIFESTS.each{ pkg, values ->
- if (pkg == '/') {
- manifest.attributes(values += [
- 'Main-Class': 'net.minecraftforge.server.ServerMain',
- 'Class-Path': classpath.toString(),
- 'ServerLaunchArgs': [
- '--gameDir', '.',
- '--launchTarget', 'fmlserver',
- '--fml.forgeVersion', "${project.version.substring(MC_VERSION.length() + 1)}".toString(),
- '--fml.mcpVersion', MCP_VERSION,
- '--fml.mcVersion', MC_VERSION,
- '--fml.forgeGroup', project.group
- ].join(' ')
- ])
- } else {
- manifest.attributes(values, pkg)
- }
- }
- }
- }
-
- task downloadInstaller(type: DownloadMavenArtifact) {
- artifact = 'net.minecraftforge:installer:2.1.+:shrunk'
- changing = true
- }
-
- task installerJar(type: Zip, dependsOn: [downloadInstaller, installerJson, launcherJson, genClientBinPatches, genServerBinPatches, 'signUniversalJar', 'signLauncherJar']) {
- archiveClassifier = 'installer'
- archiveExtension = 'jar' //Needs to be Zip task to not override Manifest, so set extension
- destinationDirectory = file('build/libs')
+
+ task installerJar(type: InstallerJar, dependsOn: [genClientBinPatches, genServerBinPatches, 'signUniversalJar', launcherJson]) {
+ packedDependencies = PACKED_DEPS
from(extraTxts)
- from(rootProject.file('/installer_logo.png')) {
- rename{'big_logo.png'}
+ from(rootProject.file('/forge_installer_logo.png')) {
+ rename { 'big_logo.png' }
}
- from(rootProject.file('/src/main/resources/url.png'))
from(genClientBinPatches.output) {
- rename{'data/client.lzma'}
+ rename { 'data/client.lzma' }
}
from(genServerBinPatches.output) {
- rename{'data/server.lzma'}
- }
- from(universalJar) {
- into "/maven/${project.group.replace('.', '/')}/${project.name}/${project.version}/"
- }
- from(launcherJar) {
- into "/maven/${project.group.replace('.', '/')}/${project.name}/${project.version}/"
- rename { "${project.name}-${project.version}.jar" }
- }
- from(installerJson.output)
- from(launcherJson.output)
- if (downloadInstaller.output.present) {
- from(zipTree(downloadInstaller.output)) {
- duplicatesStrategy = 'exclude'
- }
+ rename { 'data/server.lzma' }
}
}
-
- [universalJar, launcherJar, installerJar].each { t ->
- task "sign${t.name.capitalize()}"(type: SignJar, dependsOn: t) {
- onlyIf {
- JAR_SIGNER != null && t.state.failure == null
- }
- def jarsigner = JAR_SIGNER == null ? [:] : JAR_SIGNER
- alias = 'forge'
- storePass = jarsigner.storepass
- keyPass = jarsigner.keypass
- keyStore = jarsigner.keystore
- inputFile = t.archiveFile
- outputFile = t.archiveFile
- doFirst {
- project.logger.lifecycle('Signing: ' + inputFile)
- }
- }
- t.finalizedBy(tasks.getByName("sign${t.name.capitalize()}"))
- }
-
+
task makeMdk(type: Zip) {
archiveBaseName = project.name
archiveClassifier = 'mdk'
@@ -923,78 +1337,7 @@ project(':forge') {
rename 'gitattributes\\.txt', '.gitattributes'
}
}
-
- userdevConfig {
- def artifacts = getArtifacts(project, project.configurations.installer, true)
- artifacts.each { key, lib ->
- libraries.add(lib.name)
- }
- libraries.add("${project.group}:${project.name}:${project.version}:launcher")
- runs {
- client {
- main 'net.minecraftforge.userdev.LaunchTesting'
- // Support mod devs running on Java 8 and up, including 16
- jvmArgs '-XX:+IgnoreUnrecognizedVMOptions'
- jvmArgs '--add-exports=java.base/sun.security.util=ALL-UNNAMED'
- jvmArgs '--add-exports=jdk.naming.dns/com.sun.jndi.dns=java.naming'
- jvmArgs '--add-opens=java.base/java.util.jar=ALL-UNNAMED'
-
- environment 'target', 'fmluserdevclient'
- environment 'assetIndex', '{asset_index}'
- environment 'assetDirectory', '{assets_root}'
- environment 'nativesDirectory', '{natives}'
-
- environment 'MC_VERSION', "${MC_VERSION}"
- environment 'FORGE_GROUP', "${project.group}"
- environment 'MCP_VERSION', "${MCP_VERSION}"
- environment 'MOD_CLASSES', '{source_roots}'
- environment 'MCP_MAPPINGS', '{mcp_mappings}'
- environment 'FORGE_VERSION', "${project.version.substring(MC_VERSION.length() + 1)}"
- }
-
- server {
- main 'net.minecraftforge.userdev.LaunchTesting'
-
- // Support mod devs running on Java 8 and up, including 16
- jvmArgs '-XX:+IgnoreUnrecognizedVMOptions'
- jvmArgs '--add-exports=java.base/sun.security.util=ALL-UNNAMED'
- jvmArgs '--add-exports=jdk.naming.dns/com.sun.jndi.dns=java.naming'
- jvmArgs '--add-opens=java.base/java.util.jar=ALL-UNNAMED'
-
- environment 'target', 'fmluserdevserver'
-
- environment 'MC_VERSION', "${MC_VERSION}"
- environment 'FORGE_GROUP', "${project.group}"
- environment 'MCP_VERSION', "${MCP_VERSION}"
- environment 'MOD_CLASSES', '{source_roots}'
- environment 'MCP_MAPPINGS', '{mcp_mappings}'
- environment 'FORGE_VERSION', "${project.version.substring(MC_VERSION.length() + 1)}"
- }
-
- data {
- main 'net.minecraftforge.userdev.LaunchTesting'
-
- // Support mod devs running on Java 8 and up, including 16
- jvmArgs '-XX:+IgnoreUnrecognizedVMOptions'
- jvmArgs '--add-exports=java.base/sun.security.util=ALL-UNNAMED'
- jvmArgs '--add-exports=jdk.naming.dns/com.sun.jndi.dns=java.naming'
- jvmArgs '--add-opens=java.base/java.util.jar=ALL-UNNAMED'
-
- environment 'target', 'fmluserdevdata'
- environment 'assetIndex', '{asset_index}'
- environment 'assetDirectory', '{assets_root}'
-
- environment 'MC_VERSION', "${MC_VERSION}"
- environment 'FORGE_GROUP', "${project.group}"
- environment 'MCP_VERSION', "${MCP_VERSION}"
- environment 'MOD_CLASSES', '{source_roots}'
- environment 'MCP_MAPPINGS', '{mcp_mappings}'
- environment 'FORGE_VERSION', "${project.version.substring(MC_VERSION.length() + 1)}"
- }
- }
- }
-
license {
header = file("$rootDir/LICENSE-header.txt")
@@ -1021,44 +1364,12 @@ project(':forge') {
}
}
- task userdevExtras(type:Jar) {
- dependsOn classes
- from sourceSets.userdev.output
- classifier 'userdev-temp'
- }
-
reobfJar {
tool = SPECIAL_SOURCE + ':shaded'
}
- task userdevExtrasReobf(type: ReobfuscateJar) {
- dependsOn userdevExtras, createMcp2Srg
- input = tasks.userdevExtras.archiveFile
- classpath.from project.configurations.userdevCompileClasspath
- srg = tasks.createMcp2Srg.output
- tool = SPECIAL_SOURCE + ':shaded'
- }
-
- userdevJar {
- dependsOn tasks.userdevExtrasReobf
- from (zipTree(tasks.userdevExtrasReobf.output)) {
- into '/inject/'
- }
- from (sourceSets.userdev.output.resourcesDir) {
- into '/inject/'
- }
- }
-
- extractRangeMap {
- dependencies.from jar.archiveFile
- sources.from sourceSets.userdev.java.srcDirs
- }
- applyRangeMap {
- sources.from sourceSets.userdev.java.srcDirs
- }
-
tasks.eclipse.dependsOn('genEclipseRuns')
-
+
if (project.hasProperty('UPDATE_MAPPINGS')) {
extractRangeMap {
sources.from sourceSets.test.java.srcDirs
@@ -1069,7 +1380,7 @@ project(':forge') {
}
sourceSets.test.java.srcDirs.each { extractMappedNew.addTarget it }
}
-
+
publishing {
publications {
mavenJava(MavenPublication) {
@@ -1084,55 +1395,17 @@ project(':forge') {
artifact makeMdk
artifact userdevJar
artifact sourcesJar
- artifact launcherJar
-
- pom {
- name = 'forge'
- description = 'Modifactions to Minecraft to enable mod developers.'
- url = 'https://github.com/MinecraftForge/MinecraftForge'
-
- scm {
- url = 'https://github.com/MinecraftForge/MinecraftForge'
- connection = 'scm:git:git://github.com/MinecraftForge/MinecraftForge.git'
- developerConnection = 'scm:git:git@github.com:MinecraftForge/MinecraftForge.git'
- }
-
- issueManagement {
- system = 'github'
- url = 'https://github.com/MinecraftForge/MinecraftForge/issues'
- }
-
- licenses {
- license {
- name = 'LGPL 2.1'
- url = 'https://github.com/MinecraftForge/MinecraftForge/blob/1.13-pre/LICENSE.txt'
- distribution = 'repo'
- }
- }
- }
- }
- }
- repositories {
- maven {
- if (System.env.MAVEN_USER) {
- url "https://maven.minecraftforge.net/releases/"
- authentication {
- basic(BasicAuthentication)
- }
- credentials {
- username = System.env.MAVEN_USER ?: 'not'
- password = System.env.MAVEN_PASSWORD ?: 'set'
- }
- } else {
- url 'file://' + rootProject.file('repo').getAbsolutePath()
- }
}
}
}
+ // Since we need the modules in the bootstrap, we need to make sure they are compiled before we do each run
+ afterEvaluate { prepareRuns.dependsOn(':fmlcore:jar', ':fmlloader:jar', ':javafmllanguage:jar', ':mclanguage:jar') }
}
//evaluationDependsOnChildren()
-task setup() {
+task setup() { //These must be strings so that we can do lazy resolution. Else we need evaluationDependsOnChildren above
dependsOn ':clean:extractMapped'
- dependsOn ':forge:extractMapped' //These must be strings so that we can do lazy resolution. Else we need evaluationDependsOnChildren above
+ if (symlinkValid)
+ dependsOn ':fmlonly:extractMapped'
+ dependsOn ':forge:extractMapped'
}
diff --git a/buildSrc/.gitignore b/buildSrc/.gitignore
index abc78ba75a..2979d33310 100644
--- a/buildSrc/.gitignore
+++ b/buildSrc/.gitignore
@@ -1,2 +1,3 @@
/.gradle/
/build/
+/out/
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
index b644cd621b..f2d3e1fe1a 100644
--- a/buildSrc/build.gradle
+++ b/buildSrc/build.gradle
@@ -1,9 +1,9 @@
repositories {
- maven { url = 'https://maven.minecraftforge.net/' }
+ maven { url = 'https://maven.minecraftforge.net/' }
mavenCentral()
}
dependencies {
implementation 'org.ow2.asm:asm:9.1'
implementation 'org.ow2.asm:asm-tree:9.1'
- implementation 'net.minecraftforge:srgutils:0.4.+'
+ implementation 'net.minecraftforge:srgutils:0.4.+'
}
\ No newline at end of file
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckATs.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckATs.groovy
index 74f5fc8d35..85a7ab610a 100644
--- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckATs.groovy
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckATs.groovy
@@ -1,9 +1,10 @@
package net.minecraftforge.forge.tasks
import net.minecraftforge.srgutils.IMappingFile
-import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.RegularFileProperty
+
+import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Optional
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckExcs.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckExcs.groovy
index c9b7fd4bbc..cdc65a5859 100644
--- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckExcs.groovy
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckExcs.groovy
@@ -1,12 +1,18 @@
package net.minecraftforge.forge.tasks
-import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.RegularFileProperty
+
+import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.TaskAction
-import org.objectweb.asm.*
+
+import org.objectweb.asm.ClassReader
+import org.objectweb.asm.ClassVisitor
+import org.objectweb.asm.MethodVisitor
+import org.objectweb.asm.Opcodes
+import org.objectweb.asm.Type
import java.util.zip.ZipEntry
import java.util.zip.ZipInputStream
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy
index e6633cf074..64a0407552 100644
--- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckPatches.groovy
@@ -17,8 +17,8 @@ abstract class CheckPatches extends DefaultTask {
@TaskAction
protected void exec() {
def hasS2SArtifact = [
- Paths.get("patches/minecraft/net/minecraft/client/renderer/ViewFrustum.java.patch"),
- Paths.get("patches/minecraft/net/minecraft/data/BlockModelDefinition.java.patch")
+ Paths.get("patches/minecraft/net/minecraft/client/renderer/ViewArea.java.patch"),
+ Paths.get("patches/minecraft/net/minecraft/data/models/blockstates/Variant.java.patch")
]
def verified = true;
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckSAS.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckSAS.groovy
index 6dd6453e29..ab16229872 100644
--- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckSAS.groovy
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/CheckSAS.groovy
@@ -1,8 +1,9 @@
package net.minecraftforge.forge.tasks
-import org.gradle.api.DefaultTask
import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.RegularFileProperty
+
+import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.TaskAction
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/DownloadLibraries.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/DownloadLibraries.groovy
index 342146a5f3..b5e233cc6f 100644
--- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/DownloadLibraries.groovy
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/DownloadLibraries.groovy
@@ -1,12 +1,15 @@
package net.minecraftforge.forge.tasks
import org.gradle.api.DefaultTask
+import org.gradle.api.file.ConfigurableFileCollection
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.tasks.InputFile
-import org.gradle.api.tasks.OutputDirectory
+import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.OutputFile
+import org.gradle.api.tasks.OutputFiles
import org.gradle.api.tasks.TaskAction
+import org.gradle.api.tasks.OutputDirectory
import java.nio.file.Files
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/FieldCompareFinder.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/FieldCompareFinder.groovy
index 9134db369d..56648b5e95 100644
--- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/FieldCompareFinder.groovy
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/FieldCompareFinder.groovy
@@ -1,11 +1,20 @@
package net.minecraftforge.forge.tasks
import groovy.transform.EqualsAndHashCode
-import org.gradle.api.tasks.Input
-import org.gradle.api.tasks.Internal
-import org.gradle.api.tasks.Nested
-import org.gradle.api.tasks.Optional
+
+import java.util.ArrayList
+import java.util.HashMap
+import java.util.TreeMap
+import java.util.TreeSet
+import java.util.function.BiConsumer
+
+import org.gradle.api.DefaultTask
+import org.gradle.api.tasks.*
+
+import org.objectweb.asm.Opcodes
+import org.objectweb.asm.Type
import org.objectweb.asm.tree.ClassNode
+import org.objectweb.asm.tree.FieldNode
import org.objectweb.asm.tree.MethodNode
import static org.objectweb.asm.Opcodes.*
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy
new file mode 100644
index 0000000000..91e196d25e
--- /dev/null
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy
@@ -0,0 +1,44 @@
+package net.minecraftforge.forge.tasks
+
+import org.gradle.api.tasks.bundling.Zip
+import org.gradle.api.tasks.*
+import org.gradle.api.provider.SetProperty
+
+abstract class InstallerJar extends Zip {
+ @Input @Optional abstract SetProperty getPackedDependencies()
+
+ InstallerJar() {
+ archiveClassifier.set('installer')
+ archiveExtension.set('jar') // Needs to be Zip task to not override Manifest, so set extension
+ destinationDirectory.set(project.layout.buildDirectory.dir('libs'))
+
+ def installerJson = project.tasks.installerJson
+ def launcherJson = project.tasks.launcherJson
+ def downloadInstaller = project.tasks.downloadInstaller
+
+ dependsOn(installerJson, launcherJson, downloadInstaller)
+ from(installerJson, launcherJson)
+
+ from(project.rootProject.file('/src/main/resources/url.png'))
+ project.afterEvaluate {
+ from(project.zipTree(downloadInstaller.output)) {
+ duplicatesStrategy = 'exclude'
+ }
+
+ if (!System.env.MAVEN_USER) {
+ dependsOn(project.universalJar)
+ from(project.universalJar) {
+ into '/maven/' + project.group.replace('.', '/') + '/' + project.universalJar.archiveBaseName.get() + '/' + project.version + '/'
+ }
+
+ packedDependencies.get().forEach {
+ def jarTask = project.rootProject.getTasks().findByPath(it)
+ dependsOn(jarTask)
+ from(jarTask) {
+ into '/maven/' + jarTask.project.group.replace('.', '/') + '/' + jarTask.archiveBaseName.get() + '/' + jarTask.project.version + '/'
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJson.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJson.groovy
new file mode 100644
index 0000000000..4842c9f607
--- /dev/null
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJson.groovy
@@ -0,0 +1,81 @@
+package net.minecraftforge.forge.tasks
+
+import groovy.json.JsonBuilder
+import org.gradle.api.DefaultTask
+import org.gradle.api.file.ConfigurableFileCollection
+import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.Property
+import org.gradle.api.provider.SetProperty
+import org.gradle.api.tasks.*
+
+import java.nio.file.Files
+
+abstract class InstallerJson extends DefaultTask {
+ @OutputFile abstract RegularFileProperty getOutput()
+ @InputFiles abstract ConfigurableFileCollection getInput()
+ @Input @Optional abstract SetProperty getPackedDependencies()
+ @Input @Optional final Map libraries = new LinkedHashMap<>()
+ @Input Map json = new LinkedHashMap<>()
+ @InputFile abstract RegularFileProperty getIcon()
+ @Input abstract Property getLauncherJsonName()
+ @Input abstract Property getLogo()
+ @Input abstract Property getMirrors()
+ @Input abstract Property getWelcome()
+
+ InstallerJson() {
+ getLauncherJsonName().convention('/version.json')
+ getLogo().convention('/big_logo.png')
+ getMirrors().convention('https://files.minecraftforge.net/mirrors-2.0.json')
+ getWelcome().convention("Welcome to the simple ${project.name.capitalize()} installer.")
+
+ getOutput().convention(project.layout.buildDirectory.file('install_profile.json'))
+
+ ['client', 'server'].each { side ->
+ ['slim', 'extra'].each { type ->
+ def tsk = project.tasks.getByName("download${side.capitalize()}${type.capitalize()}")
+ dependsOn(tsk)
+ input.from(tsk.output)
+ }
+ def tsk = project.tasks.getByName("create${side.capitalize()}SRG")
+ dependsOn(tsk)
+ input.from(tsk.output)
+ }
+
+
+ project.afterEvaluate {
+ (packedDependencies.get().collect{ project.rootProject.tasks.findByPath(it) } + [project.universalJar]).forEach {
+ dependsOn(it)
+ input.from it.archiveFile
+ }
+ }
+ }
+
+ @TaskAction
+ protected void exec() {
+ def libs = libraries
+ for (def child : packedDependencies.get().collect{ project.rootProject.tasks.findByPath(it) } + [project.universalJar]) {
+ def dep = Util.getMavenDep(child)
+ def path = Util.getMavenPath(child)
+ libs.put(dep.toString(), [
+ name: dep,
+ downloads: [
+ artifact: [
+ path: path,
+ url: "https://maven.minecraftforge.net/${path}",
+ sha1: child.archiveFile.get().asFile.sha1(),
+ size: child.archiveFile.get().asFile.length()
+ ]
+ ]
+ ])
+ }
+ json.libraries = libs.values().sort{a,b -> a.name.compareTo(b.name)}
+ json.icon = "data:image/png;base64," + new String(Base64.getEncoder().encode(Files.readAllBytes(icon.get().asFile.toPath())))
+ json.json = launcherJsonName.get()
+ json.logo = logo.get()
+ if (!mirrors.get().isEmpty())
+ json.mirrorList = mirrors.get()
+ json.welcome = welcome.get()
+
+ Files.writeString(output.get().getAsFile().toPath(), new JsonBuilder(json).toPrettyString())
+ }
+}
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy
new file mode 100644
index 0000000000..20e684fd8b
--- /dev/null
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy
@@ -0,0 +1,71 @@
+package net.minecraftforge.forge.tasks
+
+import groovy.json.JsonBuilder
+import org.gradle.api.DefaultTask
+import org.gradle.api.file.ConfigurableFileCollection
+import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.provider.SetProperty
+import org.gradle.api.tasks.*
+
+import java.nio.file.Files
+
+import static net.minecraftforge.forge.tasks.Util.getArtifacts
+import static net.minecraftforge.forge.tasks.Util.iso8601Now
+
+abstract class LauncherJson extends DefaultTask {
+ @OutputFile abstract RegularFileProperty getOutput()
+ @InputFiles abstract ConfigurableFileCollection getInput()
+ @Input Map json = new LinkedHashMap<>()
+ @Input @Optional abstract SetProperty getPackedDependencies()
+
+ @Internal final vanilla = project.project(':mcp').file('build/mcp/downloadJson/version.json')
+ @Internal final timestamp = iso8601Now()
+ @Internal final comment = [
+ "Please do not automate the download and installation of Forge.",
+ "Our efforts are supported by ads from the download page.",
+ "If you MUST automate this, please consider supporting the project through https://www.patreon.com/LexManos/"
+ ]
+ @Internal final id = "${project.rootProject.ext.MC_VERSION}-${project.name}${project.version.substring(project.rootProject.ext.MC_VERSION.length())}"
+
+ LauncherJson() {
+ getOutput().convention(project.layout.buildDirectory.file('version.json'))
+
+ dependsOn(':fmlloader:jar', 'universalJar')
+ getInput().from(project.tasks.universalJar.archiveFile,
+ project.project(':fmlloader').jar.archiveFile,
+ vanilla)
+
+ project.afterEvaluate {
+ packedDependencies.get().forEach {
+ def jarTask = project.rootProject.tasks.findByPath(it)
+ dependsOn(jarTask)
+ input.from jarTask.archiveFile
+ }
+ }
+ }
+
+ @TaskAction
+ protected void exec() {
+ if (!json.libraries)
+ json.libraries = []
+ getArtifacts(project, project.configurations.installer, false).each { key, lib -> json.libraries.add(lib) }
+ getArtifacts(project, project.configurations.moduleonly, false).each { key, lib -> json.libraries.add(lib) }
+
+ packedDependencies.get().collect{ project.rootProject.tasks.findByPath(it) }.forEach {
+ def path = Util.getMavenPath(it)
+
+ json.libraries.add([
+ name: Util.getMavenDep(it),
+ downloads: [
+ artifact: [
+ path: path,
+ url: "https://maven.minecraftforge.net/${path}",
+ sha1: it.archiveFile.get().asFile.sha1(),
+ size: it.archiveFile.get().asFile.length()
+ ]
+ ]
+ ])
+ }
+ Files.writeString(output.get().asFile.toPath(), new JsonBuilder(json).toPrettyString())
+ }
+}
diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy
index e3bd7f0129..2a785fb2bc 100644
--- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy
+++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy
@@ -2,8 +2,10 @@ package net.minecraftforge.forge.tasks
import groovy.json.JsonSlurper
+import java.io.File
import java.security.MessageDigest
import java.text.SimpleDateFormat
+import java.util.Date
public class Util {
static void init() {
@@ -90,6 +92,17 @@ public class Util {
}
return ret
}
+
+ public static def getMavenPath(task) {
+ def classifier = task.archiveClassifier.get()
+ def dep = "${task.project.group}:${task.project.name}:${task.project.version}" + (classifier == '' ? '' : ':' + classifier)
+ return "${task.project.group.replace('.', '/')}/${task.project.name}/${task.project.version}/${task.project.name}-${task.project.version}".toString() + (classifier == '' ? '' : '-' + classifier) + '.jar'
+ }
+
+ public static def getMavenDep(task) {
+ def classifier = task.archiveClassifier.get()
+ return "${task.project.group}:${task.project.name}:${task.project.version}" + (classifier == '' ? '' : ':' + classifier)
+ }
public static def iso8601Now() { new Date().iso8601() }
diff --git a/fmlcore/build.gradle b/fmlcore/build.gradle
new file mode 100644
index 0000000000..86b1a19290
--- /dev/null
+++ b/fmlcore/build.gradle
@@ -0,0 +1,64 @@
+plugins {
+ id 'com.github.ben-manes.versions'
+ id 'org.javamodularity.moduleplugin' version '1.8.3' apply false
+}
+apply plugin: 'java-library'
+apply plugin: 'jacoco'
+apply plugin: 'org.javamodularity.moduleplugin'
+
+dependencyUpdates.rejectVersionIf { isNonStable(it.candidate.version) }
+
+dependencies {
+ compileOnly('org.jetbrains:annotations:21.0.1')
+ implementation(project(':fmlloader'))
+ api('net.minecraftforge:eventbus:5.0.+')
+ implementation('commons-io:commons-io:2.5')
+}
+
+task sourcesJar(type: Jar) {
+ archiveClassifier = 'sources'
+ from sourceSets.main.allSource
+}
+
+ext {
+ MANIFESTS = [
+ '': [
+ 'FMLModType': 'LIBRARY',
+ 'Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
+ 'Git-Commit': GIT_INFO.abbreviatedId,
+ 'Git-Branch': GIT_INFO.branch,
+ 'Build-Number': "${System.getenv('BUILD_NUMBER')?:0}"
+ ] as LinkedHashMap,
+ 'net/minecraftforge/fml/loading/': [
+ 'Specification-Title': 'FMLLoader',
+ 'Specification-Vendor': 'Forge Development LLC',
+ 'Specification-Version': '1',
+ 'Implementation-Title': 'FML Loader',
+ 'Implementation-Version': '1.0',
+ 'Implementation-Vendor': 'Forge'
+ ] as LinkedHashMap
+ ]
+}
+
+jar.doFirst {
+ MANIFESTS.each { pkg, values ->
+ if (pkg == '')
+ manifest.attributes(values)
+ else
+ manifest.attributes(values, pkg)
+ }
+}
+
+tasks.withType(JavaCompile) {
+ options.compilerArgs << '-Xlint:unchecked'
+}
+
+artifacts {
+ archives jar
+ archives sourcesJar
+}
+
+publishing.publications.mavenJava(MavenPublication) {
+ from components.java
+ artifact sourcesJar
+}
\ No newline at end of file
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java b/fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java
new file mode 100644
index 0000000000..c6e300657d
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/Bindings.java
@@ -0,0 +1,36 @@
+package net.minecraftforge.fml;
+
+import cpw.mods.modlauncher.util.ServiceLoaderUtils;
+import net.minecraftforge.eventbus.api.BusBuilder;
+import net.minecraftforge.eventbus.api.IEventBus;
+import net.minecraftforge.fml.config.IConfigEvent;
+import net.minecraftforge.fml.loading.FMLLoader;
+
+import java.util.ServiceLoader;
+import java.util.function.Supplier;
+
+public class Bindings {
+ private static final Bindings INSTANCE = new Bindings();
+
+ private final IBindingsProvider provider;
+
+ private Bindings() {
+ final var providers = ServiceLoaderUtils.streamServiceLoader(()->ServiceLoader.load(FMLLoader.getGameLayer(), IBindingsProvider.class), sce->{}).toList();
+ if (providers.size() != 1) {
+ throw new IllegalStateException("Could not find bindings provider");
+ }
+ this.provider = providers.get(0);
+ }
+
+ public static Supplier getForgeBus() {
+ return INSTANCE.provider.getForgeBusSupplier();
+ }
+
+ public static Supplier getMessageParser() {
+ return INSTANCE.provider.getMessageParser();
+ }
+
+ public static Supplier getConfigConfiguration() {
+ return INSTANCE.provider.getConfigConfiguration();
+ }
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/CrashReportCallables.java b/fmlcore/src/main/java/net/minecraftforge/fml/CrashReportCallables.java
new file mode 100644
index 0000000000..0644b2f0cc
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/CrashReportCallables.java
@@ -0,0 +1,32 @@
+package net.minecraftforge.fml;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Supplier;
+
+public class CrashReportCallables {
+ private static final List crashCallables = Collections.synchronizedList(new ArrayList<>());
+
+ public static void registerCrashCallable(ISystemReportExtender callable)
+ {
+ crashCallables.add(callable);
+ }
+
+ public static void registerCrashCallable(String headerName, Supplier reportGenerator) {
+ registerCrashCallable(new ISystemReportExtender() {
+ @Override
+ public String getLabel() {
+ return headerName;
+ }
+ @Override
+ public String get() {
+ return reportGenerator.get();
+ }
+ });
+ }
+
+ public static List allCrashCallables() {
+ return List.copyOf(crashCallables);
+ }
+}
diff --git a/src/main/java/net/minecraftforge/fml/DeferredWorkQueue.java b/fmlcore/src/main/java/net/minecraftforge/fml/DeferredWorkQueue.java
similarity index 65%
rename from src/main/java/net/minecraftforge/fml/DeferredWorkQueue.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/DeferredWorkQueue.java
index 3343369fef..475b52d2fa 100644
--- a/src/main/java/net/minecraftforge/fml/DeferredWorkQueue.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/DeferredWorkQueue.java
@@ -21,20 +21,19 @@ package net.minecraftforge.fml;
import static net.minecraftforge.fml.Logging.LOADING;
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.Executor;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
-import net.minecraftforge.fml.event.lifecycle.ParallelDispatchEvent;
-import org.apache.commons.lang3.time.StopWatch;
+import com.google.common.base.Stopwatch;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import com.google.common.base.Stopwatch;
-
import net.minecraftforge.forgespi.language.IModInfo;
/**
@@ -52,26 +51,28 @@ public class DeferredWorkQueue
{
private static final Logger LOGGER = LogManager.getLogger();
- private static Map, DeferredWorkQueue> workQueues = new HashMap<>();
+ private static final Map workQueues = new HashMap<>();
- private final ModLoadingStage modLoadingStage;
private final ConcurrentLinkedDeque tasks = new ConcurrentLinkedDeque<>();
+ private final ModLoadingStage modLoadingStage;
- public DeferredWorkQueue(final ModLoadingStage modLoadingStage, Class extends ParallelDispatchEvent> eventClass) {
+ public DeferredWorkQueue(ModLoadingStage modLoadingStage) {
this.modLoadingStage = modLoadingStage;
- workQueues.put(eventClass, this);
+ workQueues.put(modLoadingStage, this);
}
- public static Optional lookup(Optional> parallelClass) {
+ @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
+ public static Optional lookup(Optional parallelClass) {
return Optional.ofNullable(workQueues.get(parallelClass.orElse(null)));
}
- void runTasks() {
+ public void runTasks() {
if (tasks.isEmpty()) return;
- LOGGER.debug(LOADING, "Dispatching synchronous work after {}: {} jobs", modLoadingStage, tasks.size());
- StopWatch globalTimer = StopWatch.createStarted();
+ LOGGER.debug(LOADING, "Dispatching synchronous work for work queue {}: {} jobs", modLoadingStage, tasks.size());
+ Stopwatch timer = Stopwatch.createStarted();
tasks.forEach(t->makeRunnable(t, Runnable::run));
- LOGGER.debug(LOADING, "Synchronous work queue completed in {}", globalTimer);
+ timer.stop();
+ LOGGER.debug(LOADING, "Synchronous work queue completed in {}", timer);
}
private static void makeRunnable(TaskInfo ti, Executor executor) {
@@ -93,28 +94,5 @@ public class DeferredWorkQueue
return CompletableFuture.supplyAsync(work, r->tasks.add(new TaskInfo(modInfo, r)));
}
- /**
- * DEPRECATED FOR REMOVAL. Use {@link ParallelDispatchEvent#enqueueWork(Runnable)} or {@link ParallelDispatchEvent#enqueueWork(Supplier)}
- *
- * @param workToEnqueue Runnable to execute later
- * @return a completable future
- */
- @Deprecated
- public static CompletableFuture runLater(Runnable workToEnqueue) {
- return
- Optional.ofNullable(ModLoadingContext.get().getActiveContainer().modLoadingStage.getDeferredWorkQueue())
- .map(wq->wq.enqueueWork(ModLoadingContext.get().getActiveContainer().modInfo, workToEnqueue))
- .orElseGet(()->CompletableFuture.completedFuture(null));
- }
-
- static class TaskInfo
- {
- public final IModInfo owner;
- public final Runnable task;
-
- private TaskInfo(IModInfo owner, Runnable task) {
- this.owner = owner;
- this.task = task;
- }
- }
+ record TaskInfo(IModInfo owner, Runnable task) {}
}
\ No newline at end of file
diff --git a/src/main/java/net/minecraftforge/fml/DistExecutor.java b/fmlcore/src/main/java/net/minecraftforge/fml/DistExecutor.java
similarity index 100%
rename from src/main/java/net/minecraftforge/fml/DistExecutor.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/DistExecutor.java
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/I18NParser.java b/fmlcore/src/main/java/net/minecraftforge/fml/I18NParser.java
new file mode 100644
index 0000000000..c7e3f75a0a
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/I18NParser.java
@@ -0,0 +1,6 @@
+package net.minecraftforge.fml;
+
+public interface I18NParser {
+ String parseMessage(String i18nMessage, Object... args);
+ String stripControlCodes(String toStrip);
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/IBindingsProvider.java b/fmlcore/src/main/java/net/minecraftforge/fml/IBindingsProvider.java
new file mode 100644
index 0000000000..5800dce590
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/IBindingsProvider.java
@@ -0,0 +1,12 @@
+package net.minecraftforge.fml;
+
+import net.minecraftforge.eventbus.api.IEventBus;
+import net.minecraftforge.fml.config.IConfigEvent;
+
+import java.util.function.Supplier;
+
+public interface IBindingsProvider {
+ Supplier getForgeBusSupplier();
+ Supplier getMessageParser();
+ Supplier getConfigConfiguration();
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/ICrashCallable.java b/fmlcore/src/main/java/net/minecraftforge/fml/ICrashCallable.java
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/main/java/net/minecraftforge/fml/ExtensionPoint.java b/fmlcore/src/main/java/net/minecraftforge/fml/IExtensionPoint.java
similarity index 76%
rename from src/main/java/net/minecraftforge/fml/ExtensionPoint.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/IExtensionPoint.java
index 23e6c1e342..dbe9c95aeb 100644
--- a/src/main/java/net/minecraftforge/fml/ExtensionPoint.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/IExtensionPoint.java
@@ -19,21 +19,11 @@
package net.minecraftforge.fml;
-import java.util.function.BiFunction;
import java.util.function.BiPredicate;
import java.util.function.Supplier;
-import org.apache.commons.lang3.tuple.Pair;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.resources.IResourcePack;
-import net.minecraftforge.fml.packs.ModFileResourcePack;
-
-public class ExtensionPoint
+public interface IExtensionPoint
{
- public static final ExtensionPoint> CONFIGGUIFACTORY = new ExtensionPoint<>();
- public static final ExtensionPoint> RESOURCEPACK = new ExtensionPoint<>();
/**
* Compatibility display test for the mod.
* Used for displaying compatibility with remote servers with the same mod, and on disk saves.
@@ -68,11 +58,5 @@ public class ExtensionPoint
*
*
*/
- public static final ExtensionPoint, BiPredicate>> DISPLAYTEST = new ExtensionPoint<>();
-
- private Class type;
-
- private ExtensionPoint() {
- }
-
+ record DisplayTest(Supplier suppliedVersion, BiPredicate remoteVersionTest) implements IExtensionPoint {}
}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/IModLoadingState.java b/fmlcore/src/main/java/net/minecraftforge/fml/IModLoadingState.java
new file mode 100644
index 0000000000..83fea95e63
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/IModLoadingState.java
@@ -0,0 +1,25 @@
+package net.minecraftforge.fml;
+
+import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.fml.event.IModBusEvent;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+public interface IModLoadingState {
+ String name();
+ String previous();
+ ModLoadingPhase phase();
+ Function message();
+ Optional> inlineRunnable();
+
+ default Optional>> buildTransition(final Executor syncExecutor, final Executor parallelExecutor) {
+ return buildTransition(syncExecutor, parallelExecutor, e->CompletableFuture.runAsync(()->{}, e), e->CompletableFuture.runAsync(()->{}, e));
+ }
+
+ Optional>> buildTransition(Executor syncExecutor, Executor parallelExecutor, Function> preSyncTask, Function> postSyncTask);
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/IModStateProvider.java b/fmlcore/src/main/java/net/minecraftforge/fml/IModStateProvider.java
new file mode 100644
index 0000000000..4888698e15
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/IModStateProvider.java
@@ -0,0 +1,7 @@
+package net.minecraftforge.fml;
+
+import java.util.List;
+
+public interface IModStateProvider {
+ List getAllStates();
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/IModStateTransition.java b/fmlcore/src/main/java/net/minecraftforge/fml/IModStateTransition.java
new file mode 100644
index 0000000000..330008ed27
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/IModStateTransition.java
@@ -0,0 +1,87 @@
+package net.minecraftforge.fml;
+
+import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.fml.event.IModBusEvent;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.stream.Stream;
+
+@SuppressWarnings("unchecked")
+public interface IModStateTransition {
+ static IModStateTransition buildNoopTransition() {
+ return new NoopTransition();
+ }
+
+ default CompletableFuture> build(Executor syncExecutor, Executor parallelExecutor, Function> preSyncTask, Function> postSyncTask) {
+ List>> cfs = new ArrayList<>();
+ this.eventFunctionStream().get()
+ .map(f->(EventGenerator)f)
+ .reduce((head, tail)-> addCompletableFutureTaskForModDispatch(syncExecutor, parallelExecutor, cfs, head, ModLoadingStage::currentState, tail))
+ .ifPresent(last-> addCompletableFutureTaskForModDispatch(syncExecutor, parallelExecutor, cfs, last, nextModLoadingStage(), null));
+ final CompletableFuture preSyncTaskCF = preSyncTask.apply(syncExecutor);
+ final CompletableFuture> eventDispatchCF = ModList.gather(cfs).thenCompose(ModList::completableFutureFromExceptionList);
+ final CompletableFuture> postEventDispatchCF = preSyncTaskCF.thenComposeAsync(n -> eventDispatchCF, parallelExecutor).thenApply(r -> {
+ postSyncTask.apply(syncExecutor);
+ return r;
+ });
+ return this.finalActivityGenerator().apply(syncExecutor, postEventDispatchCF);
+ }
+
+ default BiFunction nextModLoadingStage() {
+ return ModLoadingStage::nextState;
+ }
+
+ private EventGenerator addCompletableFutureTaskForModDispatch(final Executor syncExecutor, final Executor parallelExecutor, final List>> completeableFutures, final EventGenerator eventGenerator, BiFunction nextState, final EventGenerator nextGenerator) {
+ completeableFutures.add(((BiFunction, CompletableFuture>>)preDispatchHook()).apply(threadSelector().apply(syncExecutor, parallelExecutor), eventGenerator));
+ completeableFutures.add(ModList.get().futureVisitor(eventGenerator, nextState).apply(threadSelector().apply(syncExecutor, parallelExecutor)));
+ completeableFutures.add(((BiFunction, CompletableFuture>>)postDispatchHook()).apply(threadSelector().apply(syncExecutor, parallelExecutor), eventGenerator));
+ return nextGenerator;
+ }
+
+ Supplier>> eventFunctionStream();
+ ThreadSelector threadSelector();
+ BiFunction>, CompletableFuture>> finalActivityGenerator();
+ BiFunction, CompletableFuture>> preDispatchHook();
+ BiFunction, CompletableFuture>> postDispatchHook();
+
+ interface EventGenerator extends Function {
+ static EventGenerator fromFunction(Function fn) {
+ return fn::apply;
+ }
+ }
+}
+
+record NoopTransition() implements IModStateTransition {
+
+ @Override
+ public Supplier>> eventFunctionStream() {
+ return Stream::of;
+ }
+
+ @Override
+ public ThreadSelector threadSelector() {
+ return ThreadSelector.SYNC;
+ }
+
+ @Override
+ public BiFunction>, CompletableFuture>> finalActivityGenerator() {
+ return (e, t) -> t.thenApplyAsync(Function.identity(), e);
+ }
+
+ @Override
+ public BiFunction, CompletableFuture>> preDispatchHook() {
+ return (t, f)-> CompletableFuture.completedFuture(Collections.emptyList());
+ }
+
+ @Override
+ public BiFunction, CompletableFuture>> postDispatchHook() {
+ return (t, f)-> CompletableFuture.completedFuture(Collections.emptyList());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraftforge/fml/common/ICrashCallable.java b/fmlcore/src/main/java/net/minecraftforge/fml/ISystemReportExtender.java
similarity index 83%
rename from src/main/java/net/minecraftforge/fml/common/ICrashCallable.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ISystemReportExtender.java
index f9f4064be9..fc64a9325d 100644
--- a/src/main/java/net/minecraftforge/fml/common/ICrashCallable.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ISystemReportExtender.java
@@ -17,11 +17,11 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common;
+package net.minecraftforge.fml;
-import net.minecraft.crash.ICrashReportDetail;
+import java.util.function.Supplier;
-public interface ICrashCallable extends ICrashReportDetail
+public interface ISystemReportExtender extends Supplier
{
String getLabel();
}
diff --git a/src/main/java/net/minecraftforge/fml/InterModComms.java b/fmlcore/src/main/java/net/minecraftforge/fml/InterModComms.java
similarity index 92%
rename from src/main/java/net/minecraftforge/fml/InterModComms.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/InterModComms.java
index 45fadae85b..1c21df0e7b 100644
--- a/src/main/java/net/minecraftforge/fml/InterModComms.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/InterModComms.java
@@ -33,38 +33,32 @@ import java.util.stream.StreamSupport;
public class InterModComms
{
- public static final class IMCMessage {
- private final String modId;
- private final String method;
- private final String senderModId;
- private final Supplier> thing;
-
- IMCMessage(String senderModId, String modId, String method, Supplier> thing)
- {
- this.senderModId = senderModId;
- this.modId = modId;
- this.method = method;
- this.thing = thing;
- }
+ public record IMCMessage(String senderModId, String modId, String method, Supplier> messageSupplier) {
/**
+ * Deprecated: use {@link #senderModId()}
* @return The modid of the sender. This is supplied by the caller, or by the active mod container context.
* Consider it unreliable.
*/
+ @Deprecated
public final String getSenderModId() {
return this.senderModId;
}
/**
+ * Deprecated: use {@link #modId()}
* @return The modid being sent to.
*/
+ @Deprecated
public final String getModId() {
return this.modId;
}
/**
+ * Deprecated: use {@link #method()}
* @return The method being sent to.
*/
+ @Deprecated
public final String getMethod() {
return this.method;
}
@@ -72,10 +66,12 @@ public class InterModComms
/**
* @param The type of the message.
* @return A {@link Supplier} of the message.
+ * Use {@link #messageSupplier()}
*/
@SuppressWarnings("unchecked")
+ @Deprecated
public final Supplier getMessageSupplier() {
- return (Supplier)this.thing;
+ return (Supplier) this.messageSupplier;
}
}
diff --git a/src/main/java/net/minecraftforge/fml/LoadingFailedException.java b/fmlcore/src/main/java/net/minecraftforge/fml/LoadingFailedException.java
similarity index 100%
rename from src/main/java/net/minecraftforge/fml/LoadingFailedException.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/LoadingFailedException.java
diff --git a/src/main/java/net/minecraftforge/fml/Logging.java b/fmlcore/src/main/java/net/minecraftforge/fml/Logging.java
similarity index 93%
rename from src/main/java/net/minecraftforge/fml/Logging.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/Logging.java
index d29b9618b5..26efa8544d 100644
--- a/src/main/java/net/minecraftforge/fml/Logging.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/Logging.java
@@ -31,6 +31,7 @@ public class Logging
public static final Marker SPLASH = MarkerManager.getMarker("SPLASH");
public static final Marker CAPABILITIES = MarkerManager.getMarker("CAPABILITIES");
public static final Marker MODELLOADING = MarkerManager.getMarker("MODELLOADING");
+ public static final Marker FORGEMOD = MarkerManager.getMarker("FORGEMOD").addParents(LOADING);
// --log CORE:+DEBUG,SCAN:-OFF
// forge log debug 5
diff --git a/src/main/java/net/minecraftforge/fml/LogicalSide.java b/fmlcore/src/main/java/net/minecraftforge/fml/LogicalSide.java
similarity index 100%
rename from src/main/java/net/minecraftforge/fml/LogicalSide.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/LogicalSide.java
diff --git a/src/main/java/net/minecraftforge/fml/ModContainer.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModContainer.java
similarity index 86%
rename from src/main/java/net/minecraftforge/fml/ModContainer.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ModContainer.java
index 605582405e..56a44b986a 100644
--- a/src/main/java/net/minecraftforge/fml/ModContainer.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModContainer.java
@@ -20,10 +20,10 @@
package net.minecraftforge.fml;
import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.fml.config.IConfigEvent;
import net.minecraftforge.fml.config.ModConfig;
-import net.minecraftforge.fml.event.lifecycle.IModBusEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.forgespi.language.IModInfo;
-import org.apache.commons.lang3.tuple.Pair;
import java.util.EnumMap;
import java.util.HashMap;
@@ -58,10 +58,10 @@ public abstract class ModContainer
protected ModLoadingStage modLoadingStage;
protected Supplier> contextExtension;
protected final Map activityMap = new HashMap<>();
- protected final Map> extensionPoints = new IdentityHashMap<>();
+ protected final Map>, Supplier>> extensionPoints = new IdentityHashMap<>();
protected final EnumMap configs = new EnumMap<>(ModConfig.Type.class);
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
- protected Optional> configHandler = Optional.empty();
+ protected Optional> configHandler = Optional.empty();
public ModContainer(IModInfo info)
{
@@ -71,7 +71,7 @@ public abstract class ModContainer
this.modInfo = info;
this.modLoadingStage = ModLoadingStage.CONSTRUCT;
// default displaytest extension checks for version string match
- registerExtensionPoint(ExtensionPoint.DISPLAYTEST, () -> Pair.of(()->this.modInfo.getVersion().toString(),
+ registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(()->this.modInfo.getVersion().toString(),
(incoming, isNetwork)->Objects.equals(incoming, this.modInfo.getVersion().toString())));
}
@@ -111,7 +111,7 @@ public abstract class ModContainer
public static CompletableFuture buildTransitionHandler(
final ModContainer target,
- final ModLoadingStage.EventGenerator eventGenerator,
+ final IModStateTransition.EventGenerator eventGenerator,
final BiFunction stateChangeHandler,
final Executor executor) {
return CompletableFuture
@@ -126,20 +126,17 @@ public abstract class ModContainer
});
}
- /**
- * @return the modinfo used to create this mod instance
- */
public IModInfo getModInfo()
{
return modInfo;
}
@SuppressWarnings("unchecked")
- public Optional getCustomExtension(ExtensionPoint point) {
+ public Optional getCustomExtension(Class extends IExtensionPoint> point) {
return Optional.ofNullable((T)extensionPoints.getOrDefault(point,()-> null).get());
}
- public void registerExtensionPoint(ExtensionPoint point, Supplier extension)
+ public > void registerExtensionPoint(Class extends IExtensionPoint> point, Supplier extension)
{
extensionPoints.put(point, extension);
}
@@ -148,7 +145,7 @@ public abstract class ModContainer
configs.put(modConfig.getType(), modConfig);
}
- public void dispatchConfigEvent(ModConfig.ModConfigEvent event) {
+ public void dispatchConfigEvent(IConfigEvent event) {
configHandler.ifPresent(configHandler->configHandler.accept(event));
}
diff --git a/src/main/java/net/minecraftforge/fml/ModList.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModList.java
similarity index 87%
rename from src/main/java/net/minecraftforge/fml/ModList.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ModList.java
index 889bc557d3..5f685edade 100644
--- a/src/main/java/net/minecraftforge/fml/ModList.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModList.java
@@ -20,11 +20,14 @@
package net.minecraftforge.fml;
import net.minecraftforge.eventbus.api.Event;
-import net.minecraftforge.fml.event.lifecycle.IModBusEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
+import net.minecraftforge.forgespi.language.IModFileInfo;
+import net.minecraftforge.forgespi.language.IModInfo;
import net.minecraftforge.forgespi.language.ModFileScanData;
import net.minecraftforge.fml.loading.moddiscovery.ModFile;
import net.minecraftforge.fml.loading.moddiscovery.ModFileInfo;
import net.minecraftforge.fml.loading.moddiscovery.ModInfo;
+import net.minecraftforge.forgespi.locating.IModFile;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -58,8 +61,8 @@ public class ModList
{
private static Logger LOGGER = LogManager.getLogger();
private static ModList INSTANCE;
- private final List modFiles;
- private final List sortedList;
+ private final List modFiles;
+ private final List sortedList;
private final Map fileById;
private List mods;
private Map indexedMods;
@@ -71,17 +74,17 @@ public class ModList
this.sortedList = sortedList.stream().
map(ModInfo.class::cast).
collect(Collectors.toList());
- this.fileById = this.modFiles.stream().map(ModFileInfo::getMods).flatMap(Collection::stream).
+ this.fileById = this.modFiles.stream().map(IModFileInfo::getMods).flatMap(Collection::stream).
map(ModInfo.class::cast).
collect(Collectors.toMap(ModInfo::getModId, ModInfo::getOwningFile));
- CrashReportExtender.registerCrashCallable("Mod List", this::crashReport);
+ CrashReportCallables.registerCrashCallable("Mod List", this::crashReport);
}
private String getModContainerState(String modId) {
return getModContainerById(modId).map(ModContainer::getCurrentState).map(Object::toString).orElse("NONE");
}
- private String fileToLine(ModFile mf) {
+ private String fileToLine(IModFile mf) {
return String.format("%-50.50s|%-30.30s|%-30.30s|%-20.20s|%-10.10s|Manifest: %s", mf.getFileName(),
mf.getModInfos().get(0).getDisplayName(),
mf.getModInfos().get(0).getModId(),
@@ -111,18 +114,18 @@ public class ModList
return thread;
}
- public List getModFiles()
+ public List getModFiles()
{
return modFiles;
}
- public ModFileInfo getModFileById(String modid)
+ public IModFileInfo getModFileById(String modid)
{
return this.fileById.get(modid);
}
Function>> futureVisitor(
- final ModLoadingStage.EventGenerator eventGenerator,
+ final IModStateTransition.EventGenerator eventGenerator,
final BiFunction stateChange) {
return executor -> gather(
this.mods.stream()
@@ -185,7 +188,7 @@ public class ModList
return mods.stream().filter(mc -> mc.getMod() == obj).findFirst();
}
- public List getMods()
+ public List getMods()
{
return this.sortedList;
}
@@ -205,24 +208,24 @@ public class ModList
if (modFileScanData == null)
{
modFileScanData = this.sortedList.stream().
- map(ModInfo::getOwningFile).
+ map(IModInfo::getOwningFile).
filter(Objects::nonNull).
- map(ModFileInfo::getFile).
+ map(IModFileInfo::getFile).
distinct().
- map(ModFile::getScanResult).
+ map(IModFile::getScanResult).
collect(Collectors.toList());
}
return modFileScanData;
}
- public void forEachModFile(Consumer fileConsumer)
+ public void forEachModFile(Consumer fileConsumer)
{
- modFiles.stream().map(ModFileInfo::getFile).forEach(fileConsumer);
+ modFiles.stream().map(IModFileInfo::getFile).forEach(fileConsumer);
}
- public Stream applyForEachModFile(Function function) {
- return modFiles.stream().map(ModFileInfo::getFile).map(function);
+ public Stream applyForEachModFile(Function function) {
+ return modFiles.stream().map(IModFileInfo::getFile).map(function);
}
public void forEachModContainer(BiConsumer modContainerConsumer) {
diff --git a/src/main/java/net/minecraftforge/fml/ModLoader.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoader.java
similarity index 66%
rename from src/main/java/net/minecraftforge/fml/ModLoader.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ModLoader.java
index 0462b28d3d..eed6990710 100644
--- a/src/main/java/net/minecraftforge/fml/ModLoader.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoader.java
@@ -20,28 +20,16 @@
package net.minecraftforge.fml;
import com.google.common.collect.ImmutableList;
-import cpw.mods.modlauncher.TransformingClassLoader;
-import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.common.capabilities.CapabilityManager;
import net.minecraftforge.eventbus.api.Event;
-import net.minecraftforge.fml.config.ConfigTracker;
-import net.minecraftforge.fml.config.ModConfig;
-import net.minecraftforge.fml.event.lifecycle.IModBusEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.fml.loading.FMLLoader;
-import net.minecraftforge.fml.loading.FMLPaths;
import net.minecraftforge.fml.loading.LoadingModList;
import net.minecraftforge.fml.loading.moddiscovery.InvalidModIdentifier;
import net.minecraftforge.fml.loading.moddiscovery.ModFile;
import net.minecraftforge.fml.loading.moddiscovery.ModFileInfo;
-import net.minecraftforge.fml.loading.moddiscovery.ModInfo;
import net.minecraftforge.fml.loading.progress.StartupMessageManager;
-import net.minecraftforge.fml.network.FMLNetworkConstants;
-import net.minecraftforge.fml.network.NetworkRegistry;
import net.minecraftforge.forgespi.language.IModInfo;
import net.minecraftforge.forgespi.language.IModLanguageProvider;
-import net.minecraftforge.registries.GameData;
-import net.minecraftforge.registries.ObjectHolderRegistry;
-import net.minecraftforge.versions.forge.ForgeVersion;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -102,38 +90,37 @@ public class ModLoader
{
private static final Logger LOGGER = LogManager.getLogger();
private static ModLoader INSTANCE;
- private final TransformingClassLoader launchClassLoader;
private final LoadingModList loadingModList;
private final List loadingExceptions;
private final List loadingWarnings;
+ private final ModStateManager stateManager;
private boolean loadingStateValid;
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
private final Optional> statusConsumer = StartupMessageManager.modLoaderConsumer();
+ private ModList modList;
private ModLoader()
{
INSTANCE = this;
- this.launchClassLoader = FMLLoader.getLaunchClassLoader();
this.loadingModList = FMLLoader.getLoadingModList();
- this.loadingExceptions = FMLLoader.getLoadingModList().
- getErrors().stream().flatMap(ModLoadingException::fromEarlyException).collect(Collectors.toList());
- this.loadingWarnings = FMLLoader.getLoadingModList().
- getBrokenFiles().stream().map(file -> new ModLoadingWarning(null, ModLoadingStage.VALIDATE,
- InvalidModIdentifier.identifyJarProblem(file.getFilePath()).orElse("fml.modloading.brokenfile"), file.getFileName())).collect(Collectors.toList());
- FMLLoader.getLoadingModList()
- .getModFiles().stream().filter(ModFileInfo::missingLicense) //Search for files with missing licenses
+ this.loadingExceptions = FMLLoader.getLoadingModList().getErrors().stream()
+ .flatMap(ModLoadingException::fromEarlyException)
+ .collect(Collectors.toList());
+ this.loadingWarnings = FMLLoader.getLoadingModList().getBrokenFiles().stream()
+ .map(file -> new ModLoadingWarning(null, ModLoadingStage.VALIDATE, InvalidModIdentifier.identifyJarProblem(file.getFilePath()).orElse("fml.modloading.brokenfile"), file.getFileName()))
+ .collect(Collectors.toList());
+ FMLLoader.getLoadingModList().getModFiles().stream()
+ .filter(ModFileInfo::missingLicense) //Search for files with missing licenses
.filter(modFileInfo -> modFileInfo.getMods().stream().noneMatch(thisModInfo -> this.loadingExceptions.stream().map(ModLoadingException::getModInfo).anyMatch(otherInfo -> otherInfo == thisModInfo))) //Ignore files where any other mod already encountered an error
.map(modFileInfo -> new ModLoadingException(null, ModLoadingStage.VALIDATE, "fml.modloading.missinglicense", null, modFileInfo.getFile()))
.forEach(this.loadingExceptions::add);
- LOGGER.debug(CORE, "Loading Network data for FML net version: {}", FMLNetworkConstants.init());
- CrashReportExtender.registerCrashCallable("ModLauncher", FMLLoader::getLauncherInfo);
- CrashReportExtender.registerCrashCallable("ModLauncher launch target", FMLLoader::launcherHandlerName);
- CrashReportExtender.registerCrashCallable("ModLauncher naming", FMLLoader::getNaming);
- CrashReportExtender.registerCrashCallable("ModLauncher services", this::computeModLauncherServiceList);
- CrashReportExtender.registerCrashCallable("FML", ForgeVersion::getSpec);
- CrashReportExtender.registerCrashCallable("Forge", ()->ForgeVersion.getGroup()+":"+ForgeVersion.getVersion());
- CrashReportExtender.registerCrashCallable("FML Language Providers", this::computeLanguageList);
+ this.stateManager = new ModStateManager();
+ CrashReportCallables.registerCrashCallable("ModLauncher", FMLLoader::getLauncherInfo);
+ CrashReportCallables.registerCrashCallable("ModLauncher launch target", FMLLoader::launcherHandlerName);
+ CrashReportCallables.registerCrashCallable("ModLauncher naming", FMLLoader::getNaming);
+ CrashReportCallables.registerCrashCallable("ModLauncher services", this::computeModLauncherServiceList);
+ CrashReportCallables.registerCrashCallable("FML Language Providers", this::computeLanguageList);
}
private String computeLanguageList() {
@@ -165,11 +152,7 @@ public class ModLoader
statusConsumer.ifPresent(c->c.accept("Waiting for scan to complete"));
FMLLoader.backgroundScanHandler.waitForScanToComplete(periodicTask);
statusConsumer.ifPresent(c->c.accept("Loading mods"));
- final ModList modList = ModList.of(loadingModList
- .getModFiles()
- .stream()
- .map(ModFileInfo::getFile)
- .collect(Collectors.toList()),
+ final ModList modList = ModList.of(loadingModList.getModFiles().stream().map(ModFileInfo::getFile).toList(),
loadingModList.getMods());
if (!this.loadingExceptions.isEmpty()) {
LOGGER.fatal(CORE, "Error during pre-loading phase", loadingExceptions.get(0));
@@ -178,11 +161,11 @@ public class ModLoader
throw new LoadingFailedException(loadingExceptions);
}
statusConsumer.ifPresent(c->c.accept("Building Mod List"));
- final List modContainers = loadingModList.getModFiles().stream().
- map(ModFileInfo::getFile).
- map(mf -> buildMods(mf, launchClassLoader)).
- flatMap(Collection::stream).
- collect(Collectors.toList());
+ final List modContainers = loadingModList.getModFiles().stream()
+ .map(ModFileInfo::getFile)
+ .map(this::buildMods)
+ .mapMulti(Iterable::forEach)
+ .toList();
if (!loadingExceptions.isEmpty()) {
LOGGER.fatal(CORE, "Failed to initialize mod containers", loadingExceptions.get(0));
modList.setLoadedMods(Collections.emptyList());
@@ -190,61 +173,45 @@ public class ModLoader
throw new LoadingFailedException(loadingExceptions);
}
modList.setLoadedMods(modContainers);
- statusConsumer.ifPresent(c->c.accept(String.format("Constructing %d mods", modList.size())));
- dispatchAndHandleError(ModLoadingStage.CONSTRUCT, syncExecutor, parallelExecutor, periodicTask);
- statusConsumer.ifPresent(c->c.accept("Creating registries"));
- dispatchAndHandleError(ModLoadingStage.CREATE_REGISTRIES, syncExecutor, parallelExecutor, periodicTask);
- ObjectHolderRegistry.findObjectHolders();
- CapabilityManager.INSTANCE.injectCapabilities(modList.getAllScanData());
- statusConsumer.ifPresent(c->c.accept("Adding custom tag types"));
- GameData.setCustomTagTypesFromRegistries();
- statusConsumer.ifPresent(c->c.accept("Populating registries"));
- dispatchAndHandleError(ModLoadingStage.LOAD_REGISTRIES, syncExecutor, parallelExecutor, periodicTask);
- statusConsumer.ifPresent(c->c.accept("Early mod loading complete"));
+ this.modList = modList;
+ statusConsumer.ifPresent(c->c.accept("Dispatching gathering events"));
+ stateManager.getStates(ModLoadingPhase.GATHER).forEach(mls->dispatchAndHandleError(mls, syncExecutor, parallelExecutor, periodicTask));
+ statusConsumer.ifPresent(c->c.accept("Gathering phase complete"));
}
- public void loadMods(final ModWorkManager.DrivenExecutor syncExecutor, final Executor parallelExecutor, final Function> beforeSidedEvent, final Function> afterSidedEvent, final Runnable periodicTask) {
- statusConsumer.ifPresent(c->c.accept("Loading mod config"));
- DistExecutor.unsafeRunWhenOn(Dist.CLIENT, ()->()-> ConfigTracker.INSTANCE.loadConfigs(ModConfig.Type.CLIENT, FMLPaths.CONFIGDIR.get()));
- ConfigTracker.INSTANCE.loadConfigs(ModConfig.Type.COMMON, FMLPaths.CONFIGDIR.get());
- statusConsumer.ifPresent(c->c.accept("Mod setup: SETUP"));
- dispatchAndHandleError(ModLoadingStage.COMMON_SETUP, syncExecutor, parallelExecutor, periodicTask);
- statusConsumer.ifPresent(c->c.accept("Mod setup: SIDED SETUP"));
- dispatchAndHandleError(ModLoadingStage.SIDED_SETUP, syncExecutor, parallelExecutor, periodicTask, beforeSidedEvent, afterSidedEvent);
+ public void loadMods(final ModWorkManager.DrivenExecutor syncExecutor, final Executor parallelExecutor, final Runnable periodicTask) {
+ statusConsumer.ifPresent(c->c.accept("Performing load phase"));
+ stateManager.getStates(ModLoadingPhase.LOAD).forEach(mls->dispatchAndHandleError(mls, syncExecutor, parallelExecutor, periodicTask));
statusConsumer.ifPresent(c->c.accept("Mod setup complete"));
}
- public void finishMods(final ModWorkManager.DrivenExecutor syncExecutor, final Executor parallelExecutor, final Runnable periodicTask)
- {
- statusConsumer.ifPresent(c->c.accept("Mod setup: ENQUEUE IMC"));
- dispatchAndHandleError(ModLoadingStage.ENQUEUE_IMC, syncExecutor, parallelExecutor, periodicTask);
- statusConsumer.ifPresent(c->c.accept("Mod setup: PROCESS IMC"));
- dispatchAndHandleError(ModLoadingStage.PROCESS_IMC, syncExecutor, parallelExecutor, periodicTask);
- statusConsumer.ifPresent(c->c.accept("Mod setup: Final completion"));
- dispatchAndHandleError(ModLoadingStage.COMPLETE, syncExecutor, parallelExecutor, periodicTask);
- statusConsumer.ifPresent(c->c.accept("Freezing data"));
- GameData.freezeData();
- NetworkRegistry.lock();
- statusConsumer.ifPresent(c->c.accept(String.format("Mod loading complete - %d mods loaded", ModList.get().size())));
+ public void finishMods(final ModWorkManager.DrivenExecutor syncExecutor, final Executor parallelExecutor, final Runnable periodicTask) {
+ statusConsumer.ifPresent(c->c.accept("Performing completion phase"));
+ stateManager.getStates(ModLoadingPhase.COMPLETE).forEach(mls->dispatchAndHandleError(mls, syncExecutor, parallelExecutor, periodicTask));
+ statusConsumer.ifPresent(c->c.accept(String.format("Mod loading complete - %d mods loaded", this.modList.size())));
}
- private void dispatchAndHandleError(ModLoadingStage state, ModWorkManager.DrivenExecutor syncExecutor, Executor parallelExecutor, final Runnable ticker) {
+ private void dispatchAndHandleError(IModLoadingState state, ModWorkManager.DrivenExecutor syncExecutor, Executor parallelExecutor, final Runnable ticker) {
if (!isLoadingStateValid()) {
LOGGER.error("Cowardly refusing to process mod state change request from {}", state);
return;
}
- waitForTransition(state, syncExecutor, ticker, state.buildTransition(syncExecutor, parallelExecutor));
+ statusConsumer.ifPresent(c->c.accept(state.message().apply(this.modList)));
+ state.inlineRunnable().ifPresent(a->a.accept(this.modList));
+ state.buildTransition(syncExecutor, parallelExecutor).ifPresent(t->waitForTransition(state, syncExecutor, ticker, t));
}
- private void dispatchAndHandleError(ModLoadingStage state, ModWorkManager.DrivenExecutor syncExecutor, Executor parallelExecutor, final Runnable ticker, Function> preSyncTask, Function> postSyncTask) {
+ private void dispatchAndHandleError(IModLoadingState state, ModWorkManager.DrivenExecutor syncExecutor, Executor parallelExecutor, final Runnable ticker, Function> preSyncTask, Function> postSyncTask) {
if (!isLoadingStateValid()) {
LOGGER.error("Cowardly refusing to process mod state change request from {}", state);
return;
}
- waitForTransition(state, syncExecutor, ticker, state.buildTransition(syncExecutor, parallelExecutor, preSyncTask, postSyncTask));
+ statusConsumer.ifPresent(c->c.accept(state.message().apply(this.modList)));
+ state.inlineRunnable().ifPresent(a->a.accept(this.modList));
+ state.buildTransition(syncExecutor, parallelExecutor, preSyncTask, postSyncTask).ifPresent(t->waitForTransition(state, syncExecutor, ticker, t));
}
- private void waitForTransition(final ModLoadingStage state, final ModWorkManager.DrivenExecutor syncExecutor, final Runnable ticker, final CompletableFuture> transition) {
+ private void waitForTransition(final IModLoadingState state, final ModWorkManager.DrivenExecutor syncExecutor, final Runnable ticker, final CompletableFuture> transition) {
while (!transition.isDone()) {
syncExecutor.drive(ticker);
}
@@ -265,12 +232,12 @@ public class ModLoader
.filter(ModLoadingException.class::isInstance)
.map(ModLoadingException.class::cast)
.collect(Collectors.toList());
- LOGGER.fatal(LOADING,"Failed to complete lifecycle event {}, {} errors found", state, modLoadingExceptions.size());
+ LOGGER.fatal(LOADING,"Failed to complete lifecycle event {}, {} errors found", state.name(), modLoadingExceptions.size());
throw new LoadingFailedException(modLoadingExceptions);
}
}
- private List buildMods(final ModFile modFile, final TransformingClassLoader modClassLoader)
+ private List buildMods(final ModFile modFile)
{
final Map modInfoMap = modFile.getModFileInfo().getMods().stream().collect(Collectors.toMap(IModInfo::getModId, Function.identity()));
@@ -278,7 +245,7 @@ public class ModLoader
final List containers = modFile.getScanResult().getTargets()
.entrySet()
.stream()
- .map(e -> buildModContainerFromTOML(modFile, modClassLoader, modInfoMap, e))
+ .map(e -> buildModContainerFromTOML(modFile, modInfoMap, e))
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (containers.size() != modInfoMap.size()) {
@@ -292,14 +259,14 @@ public class ModLoader
return containers.stream().filter(mc -> mc.modLoadingStage != ModLoadingStage.ERROR).collect(Collectors.toList());
}
- private ModContainer buildModContainerFromTOML(final ModFile modFile, final TransformingClassLoader modClassLoader, final Map modInfoMap, final Map.Entry idToProviderEntry) {
+ private ModContainer buildModContainerFromTOML(final ModFile modFile, final Map modInfoMap, final Map.Entry idToProviderEntry) {
try {
final String modId = idToProviderEntry.getKey();
final IModLanguageProvider.IModLanguageLoader languageLoader = idToProviderEntry.getValue();
IModInfo info = Optional.ofNullable(modInfoMap.get(modId)).
// throw a missing metadata error if there is no matching modid in the modInfoMap from the mods.toml file
orElseThrow(()->new ModLoadingException(null, ModLoadingStage.CONSTRUCT, "fml.modloading.missingmetadata", null, modId));
- return languageLoader.loadMod(info, modClassLoader, modFile.getScanResult());
+ return languageLoader.loadMod(info, modFile.getScanResult(), FMLLoader.getGameLayer());
} catch (ModLoadingException mle) {
// exceptions are caught and added to the error list for later handling
loadingExceptions.add(mle);
diff --git a/src/main/java/net/minecraftforge/fml/ModLoadingContext.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingContext.java
similarity index 80%
rename from src/main/java/net/minecraftforge/fml/ModLoadingContext.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingContext.java
index 2cf73ee4dc..098b065de2 100644
--- a/src/main/java/net/minecraftforge/fml/ModLoadingContext.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingContext.java
@@ -19,14 +19,14 @@
package net.minecraftforge.fml;
-import net.minecraftforge.common.ForgeConfigSpec;
+import net.minecraftforge.fml.config.IConfigSpec;
import net.minecraftforge.fml.config.ModConfig;
import java.util.function.Supplier;
public class ModLoadingContext
{
- private static ThreadLocal context = ThreadLocal.withInitial(ModLoadingContext::new);
+ private static final ThreadLocal context = ThreadLocal.withInitial(ModLoadingContext::new);
private Object languageExtension;
private ModLoadingStage stage;
@@ -50,20 +50,20 @@ public class ModLoadingContext
}
/**
- * Register an {@link ExtensionPoint} with the mod container.
+ * Register an {@link IExtensionPoint} with the mod container.
* @param point The extension point to register
* @param extension An extension operator
* @param The type signature of the extension operator
*/
- public void registerExtensionPoint(ExtensionPoint point, Supplier extension) {
+ public > void registerExtensionPoint(Class extends IExtensionPoint> point, Supplier extension) {
getActiveContainer().registerExtensionPoint(point, extension);
}
- public void registerConfig(ModConfig.Type type, ForgeConfigSpec spec) {
+ public void registerConfig(ModConfig.Type type, IConfigSpec> spec) {
getActiveContainer().addConfig(new ModConfig(type, spec, getActiveContainer()));
}
- public void registerConfig(ModConfig.Type type, ForgeConfigSpec spec, String fileName) {
+ public void registerConfig(ModConfig.Type type, IConfigSpec> spec, String fileName) {
getActiveContainer().addConfig(new ModConfig(type, spec, getActiveContainer(), fileName));
}
diff --git a/src/main/java/net/minecraftforge/fml/ModLoadingException.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingException.java
similarity index 91%
rename from src/main/java/net/minecraftforge/fml/ModLoadingException.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingException.java
index 2aa6400328..71396d2721 100644
--- a/src/main/java/net/minecraftforge/fml/ModLoadingException.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingException.java
@@ -73,7 +73,7 @@ public class ModLoadingException extends RuntimeException
}
public String formatToString() {
- return ForgeI18n.parseMessage(i18nMessage, Streams.concat(Stream.of(modInfo, errorStage, getCause()), context.stream()).toArray());
+ return Bindings.getMessageParser().get().parseMessage(i18nMessage, Streams.concat(Stream.of(modInfo, errorStage, getCause()), context.stream()).toArray());
}
@Override
@@ -85,6 +85,6 @@ public class ModLoadingException extends RuntimeException
return modInfo;
}
public String getCleanMessage() {
- return ForgeI18n.stripControlCodes(formatToString());
+ return Bindings.getMessageParser().get().stripControlCodes(formatToString());
}
}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingPhase.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingPhase.java
new file mode 100644
index 0000000000..05a0b7a05c
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingPhase.java
@@ -0,0 +1,9 @@
+package net.minecraftforge.fml;
+
+public enum ModLoadingPhase {
+ ERROR, // Special state for error handling
+ GATHER,
+ LOAD,
+ COMPLETE,
+ DONE;
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingStage.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingStage.java
new file mode 100644
index 0000000000..d95439e708
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingStage.java
@@ -0,0 +1,51 @@
+/*
+ * Minecraft Forge
+ * Copyright (c) 2016-2021.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation version 2.1
+ * of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package net.minecraftforge.fml;
+
+public enum ModLoadingStage
+{
+ ERROR,
+ VALIDATE,
+ CONSTRUCT,
+ COMMON_SETUP,
+ SIDED_SETUP,
+ ENQUEUE_IMC,
+ PROCESS_IMC,
+ COMPLETE,
+ DONE;
+
+ private final DeferredWorkQueue deferredWorkQueue;
+
+ ModLoadingStage() {
+ deferredWorkQueue = new DeferredWorkQueue(this);
+ }
+
+ ModLoadingStage nextState(Throwable exception) {
+ return exception != null ? ERROR : values()[this.ordinal()+1];
+ }
+
+ public ModLoadingStage currentState(Throwable exception) {
+ return exception != null ? ERROR : this;
+ }
+
+ public DeferredWorkQueue getDeferredWorkQueue() {
+ return deferredWorkQueue;
+ }
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingState.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingState.java
new file mode 100644
index 0000000000..d19068f78a
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingState.java
@@ -0,0 +1,33 @@
+package net.minecraftforge.fml;
+
+import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.fml.event.IModBusEvent;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+public record ModLoadingState(String name, String previous, Function message, ModLoadingPhase phase, Optional> inlineRunnable, Optional transition) implements IModLoadingState {
+ @Override
+ public Optional>> buildTransition(final Executor syncExecutor, final Executor parallelExecutor, Function> preSyncTask, Function> postSyncTask) {
+ return transition.map(t->t.build(syncExecutor, parallelExecutor, preSyncTask, postSyncTask));
+ }
+
+ public static ModLoadingState empty(final String name, final String previous, final ModLoadingPhase phase) {
+ return new ModLoadingState(name, previous, ml->"", phase, Optional.empty(), Optional.empty());
+ }
+
+ public static ModLoadingState withTransition(final String name, final String previous, final ModLoadingPhase phase, IModStateTransition transition) {
+ return new ModLoadingState(name, previous, ml->"Processing transition "+name, phase, Optional.empty(), Optional.of(transition));
+ }
+
+ public static ModLoadingState withTransition(final String name, final String previous, final Function message, final ModLoadingPhase phase, IModStateTransition transition) {
+ return new ModLoadingState(name, previous, message, phase, Optional.empty(), Optional.of(transition));
+ }
+ public static ModLoadingState withInline(final String name, final String previous, final ModLoadingPhase phase, Consumer inline) {
+ return new ModLoadingState(name, previous, ml->"Processing work "+name, phase, Optional.of(inline), Optional.empty());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/net/minecraftforge/fml/ModLoadingWarning.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingWarning.java
similarity index 91%
rename from src/main/java/net/minecraftforge/fml/ModLoadingWarning.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingWarning.java
index a87dfb7158..1a037de6fb 100644
--- a/src/main/java/net/minecraftforge/fml/ModLoadingWarning.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingWarning.java
@@ -55,6 +55,6 @@ public class ModLoadingWarning
}
public String formatToString() {
- return ForgeI18n.parseMessage(i18nMessage, Streams.concat(Stream.of(modInfo, warningStage), context.stream()).toArray());
+ return Bindings.getMessageParser().get().parseMessage(i18nMessage, Streams.concat(Stream.of(modInfo, warningStage), context.stream()).toArray());
}
}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/ModStateManager.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModStateManager.java
new file mode 100644
index 0000000000..471b1a3b17
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModStateManager.java
@@ -0,0 +1,38 @@
+package net.minecraftforge.fml;
+
+import com.google.common.graph.GraphBuilder;
+import com.google.common.graph.MutableGraph;
+import cpw.mods.modlauncher.util.ServiceLoaderUtils;
+import net.minecraftforge.fml.loading.FMLLoader;
+import net.minecraftforge.fml.loading.toposort.TopologicalSort;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@SuppressWarnings("UnstableApiUsage")
+public class ModStateManager {
+ static ModStateManager INSTANCE;
+ private final EnumMap> stateMap;
+
+ public ModStateManager() {
+ INSTANCE = this;
+ final var sp = ServiceLoader.load(FMLLoader.getGameLayer(), IModStateProvider.class);
+ this.stateMap = ServiceLoaderUtils.streamWithErrorHandling(sp, sce->{})
+ .map(IModStateProvider::getAllStates)
+ .mapMulti(Iterable::forEach)
+ .collect(Collectors.groupingBy(IModLoadingState::phase, ()->new EnumMap<>(ModLoadingPhase.class), Collectors.toUnmodifiableList()));
+ }
+
+ public List getStates(final ModLoadingPhase phase) {
+ var nodes = stateMap.get(phase);
+ var lookup = nodes.stream().collect(Collectors.toMap(IModLoadingState::name, Function.identity()));
+
+ var graph = GraphBuilder.directed().allowsSelfLoops(false).build();
+ var dummy = ModLoadingState.empty("", "", phase);
+ nodes.forEach(graph::addNode);
+ graph.addNode(dummy);
+ nodes.forEach(n->graph.putEdge(lookup.getOrDefault(n.previous(), dummy), n));
+ return TopologicalSort.topologicalSort(graph, Comparator.comparingInt(nodes::indexOf)).stream().filter(st->st!=dummy).toList();
+ }
+}
diff --git a/src/main/java/net/minecraftforge/fml/ModWorkManager.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModWorkManager.java
similarity index 100%
rename from src/main/java/net/minecraftforge/fml/ModWorkManager.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/ModWorkManager.java
diff --git a/src/main/java/net/minecraftforge/fml/OptionalMod.java b/fmlcore/src/main/java/net/minecraftforge/fml/OptionalMod.java
similarity index 100%
rename from src/main/java/net/minecraftforge/fml/OptionalMod.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/OptionalMod.java
diff --git a/src/main/java/net/minecraftforge/fml/StartupMessageManager.java b/fmlcore/src/main/java/net/minecraftforge/fml/StartupMessageManager.java
similarity index 70%
rename from src/main/java/net/minecraftforge/fml/StartupMessageManager.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/StartupMessageManager.java
index d3b0c6418e..12680cb535 100644
--- a/src/main/java/net/minecraftforge/fml/StartupMessageManager.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/StartupMessageManager.java
@@ -19,8 +19,19 @@
package net.minecraftforge.fml;
+import java.util.Optional;
+import java.util.function.Consumer;
+
public class StartupMessageManager {
public static void addModMessage(final String message) {
net.minecraftforge.fml.loading.progress.StartupMessageManager.addModMessage(message);
}
+
+ public static Optional> modLoaderConsumer() {
+ return net.minecraftforge.fml.loading.progress.StartupMessageManager.modLoaderConsumer();
+ }
+
+ public static Optional> mcLoaderConsumer() {
+ return net.minecraftforge.fml.loading.progress.StartupMessageManager.mcLoaderConsumer();
+ }
}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/ThreadSelector.java b/fmlcore/src/main/java/net/minecraftforge/fml/ThreadSelector.java
new file mode 100644
index 0000000000..e6380cc108
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ThreadSelector.java
@@ -0,0 +1,20 @@
+package net.minecraftforge.fml;
+
+import java.util.concurrent.Executor;
+import java.util.function.BinaryOperator;
+
+public enum ThreadSelector implements BinaryOperator {
+ SYNC((sync, parallel) -> sync),
+ PARALLEL((sync, parallel) -> parallel);
+
+ private final BinaryOperator selector;
+
+ ThreadSelector(final BinaryOperator selector) {
+ this.selector = selector;
+ }
+
+ @Override
+ public Executor apply(final Executor sync, final Executor parallel) {
+ return this.selector.apply(sync, parallel);
+ }
+}
diff --git a/src/main/java/net/minecraftforge/fml/VersionChecker.java b/fmlcore/src/main/java/net/minecraftforge/fml/VersionChecker.java
similarity index 89%
rename from src/main/java/net/minecraftforge/fml/VersionChecker.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/VersionChecker.java
index f53bd07164..6d8cd7e6f8 100644
--- a/src/main/java/net/minecraftforge/fml/VersionChecker.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/VersionChecker.java
@@ -24,15 +24,16 @@ import com.google.gson.Gson;
import net.minecraftforge.fml.loading.FMLConfig;
import net.minecraftforge.fml.loading.moddiscovery.ModInfo;
import net.minecraftforge.forgespi.language.IModInfo;
-import net.minecraftforge.versions.mcp.MCPVersion;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.maven.artifact.versioning.ComparableVersion;
+
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
+import java.net.http.HttpClient;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
@@ -41,8 +42,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import static net.minecraftforge.fml.VersionChecker.Status.*;
@@ -103,25 +102,7 @@ public class VersionChecker
}
- public static class CheckResult
- {
- @Nonnull
- public final Status status;
- @Nullable
- public final ComparableVersion target;
- @Nullable
- public final Map changes;
- @Nullable
- public final String url;
-
- private CheckResult(@Nonnull Status status, @Nullable ComparableVersion target, @Nullable Map changes, @Nullable String url)
- {
- this.status = status;
- this.target = target;
- this.changes = changes == null ? Collections.emptyMap() : Collections.unmodifiableMap(changes);
- this.url = url;
- }
- }
+ public record CheckResult(VersionChecker.Status status, ComparableVersion target, Map changes, String url) {}
public static void startVersionCheck()
{
@@ -175,13 +156,15 @@ public class VersionChecker
private void process(IModInfo mod)
{
+// HttpClient.newBuilder().build();
Status status = PENDING;
ComparableVersion target = null;
Map changes = null;
String display_url = null;
try
{
- URL url = mod.getUpdateURL();
+ if (mod.getUpdateURL().isEmpty()) return;
+ URL url = mod.getUpdateURL().get();
LOGGER.info("[{}] Starting version check at {}", mod.getModId(), url.toString());
InputStream con = openUrlStream(url);
@@ -197,7 +180,8 @@ public class VersionChecker
Map promos = (Map)json.get("promos");
display_url = (String)json.get("homepage");
- String mcVersion = MCPVersion.getMCVersion();
+// String mcVersion = MCPVersion.getMCVersion();
+ var mcVersion = "1.17";
String rec = promos.get(mcVersion + "-recommended");
String lat = promos.get(mcVersion + "-latest");
ComparableVersion current = new ComparableVersion(mod.getVersion().toString());
@@ -278,9 +262,8 @@ public class VersionChecker
private static List gatherMods()
{
List ret = new LinkedList<>();
- for (ModInfo info : ModList.get().getMods()) {
- URL url = info.getUpdateURL();
- if (url != null)
+ for (IModInfo info : ModList.get().getMods()) {
+ if (info.getUpdateURL().isPresent())
ret.add(info);
}
return ret;
diff --git a/src/main/java/net/minecraftforge/fml/config/ConfigFileTypeHandler.java b/fmlcore/src/main/java/net/minecraftforge/fml/config/ConfigFileTypeHandler.java
similarity index 98%
rename from src/main/java/net/minecraftforge/fml/config/ConfigFileTypeHandler.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/config/ConfigFileTypeHandler.java
index 4e81783087..a0ff68d490 100644
--- a/src/main/java/net/minecraftforge/fml/config/ConfigFileTypeHandler.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/config/ConfigFileTypeHandler.java
@@ -157,7 +157,7 @@ public class ConfigFileTypeHandler {
}
LOGGER.debug(CONFIG, "Config file {} changed, sending notifies", this.modConfig.getFileName());
this.modConfig.getSpec().afterReload();
- this.modConfig.fireEvent(new ModConfig.Reloading(this.modConfig));
+ this.modConfig.fireEvent(IConfigEvent.reloading(this.modConfig));
}
}
}
diff --git a/src/main/java/net/minecraftforge/fml/config/ConfigTracker.java b/fmlcore/src/main/java/net/minecraftforge/fml/config/ConfigTracker.java
similarity index 69%
rename from src/main/java/net/minecraftforge/fml/config/ConfigTracker.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/config/ConfigTracker.java
index 61426d85b0..78ec0b98d5 100644
--- a/src/main/java/net/minecraftforge/fml/config/ConfigTracker.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/config/ConfigTracker.java
@@ -21,33 +21,14 @@ package net.minecraftforge.fml.config;
import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
-import com.electronwill.nightconfig.toml.TomlFormat;
-import it.unimi.dsi.fastutil.bytes.Byte2ByteOpenCustomHashMap;
-import net.minecraft.client.Minecraft;
-import net.minecraftforge.fml.network.FMLHandshakeMessages;
-import net.minecraftforge.fml.network.NetworkEvent;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.nio.file.Files;
import java.nio.file.Path;
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
-import static cpw.mods.modlauncher.api.LamdbaExceptionUtils.rethrowFunction;
public class ConfigTracker {
private static final Logger LOGGER = LogManager.getLogger();
@@ -55,7 +36,7 @@ public class ConfigTracker {
public static final ConfigTracker INSTANCE = new ConfigTracker();
private final ConcurrentHashMap fileMap;
private final EnumMap> configSets;
- private ConcurrentHashMap> configsByMod;
+ private final ConcurrentHashMap> configsByMod;
private ConfigTracker() {
this.fileMap = new ConcurrentHashMap<>();
@@ -88,22 +69,11 @@ public class ConfigTracker {
this.configSets.get(type).forEach(config -> closeConfig(config, configBasePath));
}
- public List> syncConfigs(boolean isLocal) {
- final Map configData = configSets.get(ModConfig.Type.SERVER).stream().collect(Collectors.toMap(ModConfig::getFileName, mc -> { //TODO: Test cpw's LambdaExceptionUtils on Oracle javac.
- try {
- return Files.readAllBytes(mc.getFullPath());
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }));
- return configData.entrySet().stream().map(e->Pair.of("Config "+e.getKey(), new FMLHandshakeMessages.S2CConfigData(e.getKey(), e.getValue()))).collect(Collectors.toList());
- }
-
private void openConfig(final ModConfig config, final Path configBasePath) {
LOGGER.trace(CONFIG, "Loading config file type {} at {} for {}", config.getType(), config.getFileName(), config.getModId());
final CommentedFileConfig configData = config.getHandler().reader(configBasePath).apply(config);
config.setConfigData(configData);
- config.fireEvent(new ModConfig.Loading(config));
+ config.fireEvent(IConfigEvent.loading(config));
config.save();
}
@@ -116,21 +86,12 @@ public class ConfigTracker {
}
}
- public void receiveSyncedConfig(final FMLHandshakeMessages.S2CConfigData s2CConfigData, final Supplier contextSupplier) {
- if (!Minecraft.getInstance().isLocalServer()) {
- Optional.ofNullable(fileMap.get(s2CConfigData.getFileName())).ifPresent(mc-> {
- mc.setConfigData(TomlFormat.instance().createParser().parse(new ByteArrayInputStream(s2CConfigData.getBytes())));
- mc.fireEvent(new ModConfig.Reloading(mc));
- });
- }
- }
-
public void loadDefaultServerConfigs() {
configSets.get(ModConfig.Type.SERVER).forEach(modConfig -> {
final CommentedConfig commentedConfig = CommentedConfig.inMemory();
modConfig.getSpec().correct(commentedConfig);
modConfig.setConfigData(commentedConfig);
- modConfig.fireEvent(new ModConfig.Loading(modConfig));
+ modConfig.fireEvent(IConfigEvent.loading(modConfig));
});
}
@@ -138,4 +99,12 @@ public class ConfigTracker {
return Optional.ofNullable(configsByMod.getOrDefault(modId, Collections.emptyMap()).getOrDefault(type, null)).
map(ModConfig::getFullPath).map(Object::toString).orElse(null);
}
+
+ public Map> configSets() {
+ return configSets;
+ }
+
+ public ConcurrentHashMap fileMap() {
+ return fileMap;
+ }
}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigEvent.java b/fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigEvent.java
new file mode 100644
index 0000000000..b53d3dc5ba
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigEvent.java
@@ -0,0 +1,24 @@
+package net.minecraftforge.fml.config;
+
+import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.fml.Bindings;
+
+import java.util.function.Function;
+
+public interface IConfigEvent {
+ record ConfigConfig(Function loading, Function reloading) {}
+ ConfigConfig CONFIGCONFIG = Bindings.getConfigConfiguration().get();
+
+ static IConfigEvent reloading(ModConfig modConfig) {
+ return CONFIGCONFIG.reloading().apply(modConfig);
+ }
+ static IConfigEvent loading(ModConfig modConfig) {
+ return CONFIGCONFIG.loading().apply(modConfig);
+ }
+ ModConfig getConfig();
+
+ @SuppressWarnings("unchecked")
+ default T self() {
+ return (T) this;
+ }
+}
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigSpec.java b/fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigSpec.java
new file mode 100644
index 0000000000..0257559122
--- /dev/null
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/config/IConfigSpec.java
@@ -0,0 +1,21 @@
+package net.minecraftforge.fml.config;
+
+import com.electronwill.nightconfig.core.CommentedConfig;
+import com.electronwill.nightconfig.core.UnmodifiableConfig;
+
+public interface IConfigSpec> extends UnmodifiableConfig {
+ @SuppressWarnings("unchecked")
+ default T self() {
+ return (T) this;
+ }
+
+ void acceptConfig(CommentedConfig data);
+
+ boolean isCorrecting();
+
+ boolean isCorrect(CommentedConfig commentedFileConfig);
+
+ int correct(CommentedConfig commentedFileConfig);
+
+ void afterReload();
+}
diff --git a/src/main/java/net/minecraftforge/fml/config/ModConfig.java b/fmlcore/src/main/java/net/minecraftforge/fml/config/ModConfig.java
similarity index 77%
rename from src/main/java/net/minecraftforge/fml/config/ModConfig.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/config/ModConfig.java
index d2cbb565b5..f41543bb11 100644
--- a/src/main/java/net/minecraftforge/fml/config/ModConfig.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/config/ModConfig.java
@@ -21,26 +21,25 @@ package net.minecraftforge.fml.config;
import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
-import net.minecraftforge.common.ForgeConfigSpec;
-import net.minecraftforge.eventbus.api.Event;
+import com.electronwill.nightconfig.toml.TomlFormat;
import net.minecraftforge.fml.ModContainer;
-import net.minecraftforge.fml.event.lifecycle.IModBusEvent;
import net.minecraftforge.fml.loading.StringUtils;
+import java.io.ByteArrayInputStream;
import java.nio.file.Path;
import java.util.concurrent.Callable;
public class ModConfig
{
private final Type type;
- private final ForgeConfigSpec spec;
+ private final IConfigSpec> spec;
private final String fileName;
private final ModContainer container;
private final ConfigFileTypeHandler configHandler;
private CommentedConfig configData;
private Callable saveHandler;
- public ModConfig(final Type type, final ForgeConfigSpec spec, final ModContainer container, final String fileName) {
+ public ModConfig(final Type type, final IConfigSpec> spec, final ModContainer container, final String fileName) {
this.type = type;
this.spec = spec;
this.fileName = fileName;
@@ -49,7 +48,7 @@ public class ModConfig
ConfigTracker.INSTANCE.trackConfig(this);
}
- public ModConfig(final Type type, final ForgeConfigSpec spec, final ModContainer activeContainer) {
+ public ModConfig(final Type type, final IConfigSpec> spec, final ModContainer activeContainer) {
this(type, spec, activeContainer, defaultConfigName(type, activeContainer.getModId()));
}
@@ -69,8 +68,9 @@ public class ModConfig
return configHandler;
}
- public ForgeConfigSpec getSpec() {
- return spec;
+ @SuppressWarnings("unchecked")
+ public > IConfigSpec getSpec() {
+ return (IConfigSpec) spec;
}
public String getModId() {
@@ -83,10 +83,10 @@ public class ModConfig
void setConfigData(final CommentedConfig configData) {
this.configData = configData;
- this.spec.setConfig(this.configData);
+ this.spec.acceptConfig(this.configData);
}
- void fireEvent(final ModConfigEvent configEvent) {
+ void fireEvent(final IConfigEvent configEvent) {
this.container.dispatchConfigEvent(configEvent);
}
@@ -98,6 +98,11 @@ public class ModConfig
return ((CommentedFileConfig)this.configData).getNioPath();
}
+ public void acceptSyncedConfig(byte[] bytes) {
+ setConfigData(TomlFormat.instance().createParser().parse(new ByteArrayInputStream(bytes)));
+ fireEvent(IConfigEvent.reloading(this));
+ }
+
public enum Type {
/**
* Common mod config for configuration that needs to be loaded on both environments.
@@ -133,28 +138,4 @@ public class ModConfig
return StringUtils.toLowerCase(name());
}
}
-
- public static class ModConfigEvent extends Event implements IModBusEvent {
- private final ModConfig config;
-
- ModConfigEvent(final ModConfig config) {
- this.config = config;
- }
-
- public ModConfig getConfig() {
- return config;
- }
- }
-
- public static class Loading extends ModConfigEvent {
- Loading(final ModConfig config) {
- super(config);
- }
- }
-
- public static class Reloading extends ModConfigEvent {
- Reloading(final ModConfig config) {
- super(config);
- }
- }
}
diff --git a/src/main/java/net/minecraftforge/fml/event/lifecycle/IModBusEvent.java b/fmlcore/src/main/java/net/minecraftforge/fml/event/IModBusEvent.java
similarity index 94%
rename from src/main/java/net/minecraftforge/fml/event/lifecycle/IModBusEvent.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/event/IModBusEvent.java
index 79c5ffb1d9..41e0b14d29 100644
--- a/src/main/java/net/minecraftforge/fml/event/lifecycle/IModBusEvent.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/event/IModBusEvent.java
@@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.event.lifecycle;
+package net.minecraftforge.fml.event;
/**
* Marker interface for events dispatched on the ModLifecycle event bus instead of the primary event bus
diff --git a/src/main/java/net/minecraftforge/fml/common/CertificateHelper.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/CertificateHelper.java
similarity index 98%
rename from src/main/java/net/minecraftforge/fml/common/CertificateHelper.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/CertificateHelper.java
index d61a2b0ef0..ae6e296eff 100644
--- a/src/main/java/net/minecraftforge/fml/common/CertificateHelper.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/CertificateHelper.java
@@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common;
+package net.minecraftforge.fml.util;
import com.google.common.collect.ImmutableList;
diff --git a/src/main/java/net/minecraftforge/fml/common/EnhancedRuntimeException.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/EnhancedRuntimeException.java
similarity index 98%
rename from src/main/java/net/minecraftforge/fml/common/EnhancedRuntimeException.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/EnhancedRuntimeException.java
index fde2747a03..fdee96905d 100644
--- a/src/main/java/net/minecraftforge/fml/common/EnhancedRuntimeException.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/EnhancedRuntimeException.java
@@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common;
+package net.minecraftforge.fml.util;
import java.io.PrintStream;
import java.io.PrintWriter;
diff --git a/src/main/java/net/minecraftforge/fml/common/LoaderException.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/LoaderException.java
similarity index 91%
rename from src/main/java/net/minecraftforge/fml/common/LoaderException.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/LoaderException.java
index 3e31d0fc8e..373e860c64 100644
--- a/src/main/java/net/minecraftforge/fml/common/LoaderException.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/LoaderException.java
@@ -17,8 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common;
-import net.minecraftforge.fml.common.EnhancedRuntimeException.WrappedPrintStream;
+package net.minecraftforge.fml.util;
public class LoaderException extends EnhancedRuntimeException
diff --git a/src/main/java/net/minecraftforge/fml/common/LoaderExceptionModCrash.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/LoaderExceptionModCrash.java
similarity index 96%
rename from src/main/java/net/minecraftforge/fml/common/LoaderExceptionModCrash.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/LoaderExceptionModCrash.java
index 6e866e3024..1031d6e14d 100644
--- a/src/main/java/net/minecraftforge/fml/common/LoaderExceptionModCrash.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/LoaderExceptionModCrash.java
@@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common;
+package net.minecraftforge.fml.util;
/**
* Prevent LoaderException from adding its own stack trace to the wrapped throwable's stack trace.
diff --git a/src/main/java/net/minecraftforge/fml/common/ObfuscationReflectionHelper.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/ObfuscationReflectionHelper.java
similarity index 93%
rename from src/main/java/net/minecraftforge/fml/common/ObfuscationReflectionHelper.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/ObfuscationReflectionHelper.java
index 79b670dafd..52e5dded68 100644
--- a/src/main/java/net/minecraftforge/fml/common/ObfuscationReflectionHelper.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/ObfuscationReflectionHelper.java
@@ -17,15 +17,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common;
+package net.minecraftforge.fml.util;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.StringJoiner;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
import cpw.mods.modlauncher.api.INameMappingService;
import net.minecraftforge.fml.loading.FMLLoader;
import org.apache.logging.log4j.LogManager;
@@ -34,6 +31,8 @@ import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
import com.google.common.base.Preconditions;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
/**
* Some reflection helper code.
@@ -58,7 +57,7 @@ public class ObfuscationReflectionHelper
* @param name The name to try and remap.
* @return The remapped name, or the original name if it couldn't be remapped.
*/
- @Nonnull
+ @NotNull
public static String remapName(INameMappingService.Domain domain, String name)
{
return FMLLoader.getNameFunction("srg").map(f->f.apply(domain, name)).orElse(name);
@@ -72,7 +71,7 @@ public class ObfuscationReflectionHelper
*
* @param classToAccess The class to find the field on.
* @param instance The instance of the {@code classToAccess}.
- * @param fieldName The SRG (unmapped) name of the field to find (e.g. "field_181725_a").
+ * @param fieldName The SRG (unmapped) name of the field to find (e.g. "f_46443_").
* @param The type of the value.
* @param The type of the {@code classToAccess}.
* @return The value of the field with the specified name in the {@code classToAccess}.
@@ -113,7 +112,7 @@ public class ObfuscationReflectionHelper
* @throws UnableToFindFieldException If there was a problem getting the field.
* @throws UnableToAccessFieldException If there was a problem setting the value of the field.
*/
- public static void setPrivateValue(@Nonnull final Class super T> classToAccess, @Nonnull final T instance, @Nullable final E value, @Nonnull final String fieldName)
+ public static void setPrivateValue(@NotNull final Class super T> classToAccess, @NotNull final T instance, @Nullable final E value, @NotNull final String fieldName)
{
try
{
@@ -138,7 +137,7 @@ public class ObfuscationReflectionHelper
* Throws an exception if the method is not found.
*
* @param clazz The class to find the method on.
- * @param methodName The SRG (unmapped) name of the method to find (e.g. "func_12820_D").
+ * @param methodName The SRG (unmapped) name of the method to find (e.g. "m_5776_").
* @param parameterTypes The parameter types of the method to find.
* @return The method with the specified name and parameters in the given class.
* @throws NullPointerException If {@code clazz} is null.
@@ -147,8 +146,8 @@ public class ObfuscationReflectionHelper
* @throws NullPointerException If {@code parameterTypes} is null.
* @throws UnableToFindMethodException If the method could not be found.
*/
- @Nonnull
- public static Method findMethod(@Nonnull final Class> clazz, @Nonnull final String methodName, @Nonnull final Class>... parameterTypes)
+ @NotNull
+ public static Method findMethod(@NotNull final Class> clazz, @NotNull final String methodName, @NotNull final Class>... parameterTypes)
{
Preconditions.checkNotNull(clazz, "Class to find method on cannot be null.");
Preconditions.checkNotNull(methodName, "Name of method to find cannot be null.");
@@ -181,8 +180,8 @@ public class ObfuscationReflectionHelper
* @throws NullPointerException If {@code parameterTypes} is null.
* @throws UnknownConstructorException If the constructor could not be found.
*/
- @Nonnull
- public static Constructor findConstructor(@Nonnull final Class clazz, @Nonnull final Class>... parameterTypes)
+ @NotNull
+ public static Constructor findConstructor(@NotNull final Class clazz, @NotNull final Class>... parameterTypes)
{
Preconditions.checkNotNull(clazz, "Class to find constructor on cannot be null.");
Preconditions.checkNotNull(parameterTypes, "Parameter types of constructor to find cannot be null.");
@@ -216,7 +215,7 @@ public class ObfuscationReflectionHelper
* Throws an exception if the field is not found.
*
* @param clazz The class to find the field on.
- * @param fieldName The SRG (unmapped) name of the field to find (e.g. "field_181725_a").
+ * @param fieldName The SRG (unmapped) name of the field to find (e.g. "f_46443_").
* @param The type.
* @return The constructor with the specified parameters in the given class.
* @throws NullPointerException If {@code clazz} is null.
@@ -224,8 +223,8 @@ public class ObfuscationReflectionHelper
* @throws IllegalArgumentException If {@code fieldName} is empty.
* @throws UnableToFindFieldException If the field could not be found.
*/
- @Nonnull
- public static Field findField(@Nonnull final Class super T> clazz, @Nonnull final String fieldName)
+ @NotNull
+ public static Field findField(@NotNull final Class super T> clazz, @NotNull final String fieldName)
{
Preconditions.checkNotNull(clazz, "Class to find field on cannot be null.");
Preconditions.checkNotNull(fieldName, "Name of field to find cannot be null.");
diff --git a/src/main/java/net/minecraftforge/fml/common/thread/EffectiveSide.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/thread/EffectiveSide.java
similarity index 95%
rename from src/main/java/net/minecraftforge/fml/common/thread/EffectiveSide.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/thread/EffectiveSide.java
index 61fd6b6c60..c4452f99dd 100644
--- a/src/main/java/net/minecraftforge/fml/common/thread/EffectiveSide.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/thread/EffectiveSide.java
@@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common.thread;
+package net.minecraftforge.fml.util.thread;
import net.minecraftforge.fml.LogicalSide;
diff --git a/src/main/java/net/minecraftforge/fml/common/thread/SidedThreadGroup.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/thread/SidedThreadGroup.java
similarity index 90%
rename from src/main/java/net/minecraftforge/fml/common/thread/SidedThreadGroup.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/thread/SidedThreadGroup.java
index 2cb7c0de2c..af10af460a 100644
--- a/src/main/java/net/minecraftforge/fml/common/thread/SidedThreadGroup.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/thread/SidedThreadGroup.java
@@ -17,14 +17,13 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common.thread;
+package net.minecraftforge.fml.util.thread;
import net.minecraftforge.fml.LogicalSide;
+import org.jetbrains.annotations.NotNull;
import java.util.concurrent.ThreadFactory;
-import javax.annotation.Nonnull;
-
/**
* A thread group and factory combination which belongs to a {@link LogicalSide}.
*/
@@ -49,7 +48,7 @@ public final class SidedThreadGroup extends ThreadGroup implements ThreadFactory
}
@Override
- public Thread newThread(@Nonnull final Runnable runnable)
+ public Thread newThread(@NotNull final Runnable runnable)
{
return new Thread(this, runnable);
}
diff --git a/src/main/java/net/minecraftforge/fml/common/thread/SidedThreadGroups.java b/fmlcore/src/main/java/net/minecraftforge/fml/util/thread/SidedThreadGroups.java
similarity index 95%
rename from src/main/java/net/minecraftforge/fml/common/thread/SidedThreadGroups.java
rename to fmlcore/src/main/java/net/minecraftforge/fml/util/thread/SidedThreadGroups.java
index d87374f0c4..1600462238 100644
--- a/src/main/java/net/minecraftforge/fml/common/thread/SidedThreadGroups.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/util/thread/SidedThreadGroups.java
@@ -17,7 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-package net.minecraftforge.fml.common.thread;
+package net.minecraftforge.fml.util.thread;
import net.minecraftforge.fml.LogicalSide;
diff --git a/fmlloader/build.gradle b/fmlloader/build.gradle
new file mode 100644
index 0000000000..7667c4591f
--- /dev/null
+++ b/fmlloader/build.gradle
@@ -0,0 +1,80 @@
+plugins {
+ id 'com.github.ben-manes.versions'
+ id 'org.javamodularity.moduleplugin' version '1.8.3' apply false
+}
+apply plugin: 'java-library'
+apply plugin: 'jacoco'
+apply plugin: 'org.javamodularity.moduleplugin'
+
+dependencyUpdates.rejectVersionIf { isNonStable(it.candidate.version) }
+configurations.forEach{ it.transitive = false }
+
+dependencies {
+ implementation('net.sf.jopt-simple:jopt-simple:5.0.4')
+ compileOnly('org.jetbrains:annotations:21.0.0')
+ api("org.ow2.asm:asm:${ASM_VERSION}")
+ api("org.ow2.asm:asm-tree:${ASM_VERSION}")
+ api("org.ow2.asm:asm-commons:${ASM_VERSION}")
+ api('net.minecraftforge:forgespi:4.0.+')
+ api('org.apache.logging.log4j:log4j-api:2.14.1')
+ api('com.google.guava:guava:21.0')
+ api('com.google.code.gson:gson:2.8.0')
+ api('org.apache.maven:maven-artifact:3.8.1')
+ api('org.apache.commons:commons-lang3:3.8.1')
+ api('com.electronwill.night-config:core:3.6.3')
+ api('com.electronwill.night-config:toml:3.6.3')
+ api('cpw.mods:modlauncher:9.0.+')
+ api('net.minecraftforge:coremods:5.0.+')
+ implementation("cpw.mods:securejarhandler:${SECUREJARHANDLER_VERSION}")
+ implementation('org.apache.logging.log4j:log4j-core:2.14.1')
+ annotationProcessor('org.apache.logging.log4j:log4j-core:2.14.1')
+ implementation('net.minecraftforge:accesstransformers:8.0.4')
+ implementation('net.minecrell:terminalconsoleappender:1.2.0')
+// implementation('org.jline:jline:3.12.+')
+ testCompileOnly('org.jetbrains:annotations:21.0.0')
+ testRuntimeOnly("cpw.mods:bootstraplauncher:${BOOTSTRAPLAUNCHER_VERSION}")
+}
+
+task sourcesJar(type: Jar) {
+ archiveClassifier = 'sources'
+ from sourceSets.main.allSource
+}
+
+ext {
+ MANIFESTS = [
+ '/': [
+ 'Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
+ 'Git-Commit': GIT_INFO.abbreviatedId,
+ 'Git-Branch': GIT_INFO.branch,
+ 'Build-Number': "${System.getenv('BUILD_NUMBER')?:0}",
+ ] as LinkedHashMap,
+ 'net/minecraftforge/fml/loading/': [
+ 'Specification-Title': 'FMLLoader',
+ 'Specification-Vendor': 'Forge Development LLC',
+ 'Specification-Version': '1',
+ 'Implementation-Title': 'FML Loader',
+ 'Implementation-Version': '1.0',
+ 'Implementation-Vendor': 'Forge'
+ ] as LinkedHashMap
+ ]
+}
+
+jar.doFirst {
+ MANIFESTS.each { pkg, values ->
+ manifest.attributes(values, pkg)
+ }
+}
+
+tasks.withType(JavaCompile) {
+ options.compilerArgs << '-Xlint:unchecked'
+}
+
+artifacts {
+ archives jar
+ archives sourcesJar
+}
+
+publishing.publications.mavenJava(MavenPublication) {
+ from components.java
+ artifact sourcesJar
+}
\ No newline at end of file
diff --git a/src/fmllauncher/java/net/minecraftforge/common/asm/CapabilityInjectDefinalize.java b/fmlloader/src/main/java/net/minecraftforge/common/asm/CapabilityInjectDefinalize.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/common/asm/CapabilityInjectDefinalize.java
rename to fmlloader/src/main/java/net/minecraftforge/common/asm/CapabilityInjectDefinalize.java
diff --git a/src/fmllauncher/java/net/minecraftforge/common/asm/ObjectHolderDefinalize.java b/fmlloader/src/main/java/net/minecraftforge/common/asm/ObjectHolderDefinalize.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/common/asm/ObjectHolderDefinalize.java
rename to fmlloader/src/main/java/net/minecraftforge/common/asm/ObjectHolderDefinalize.java
diff --git a/src/fmllauncher/java/net/minecraftforge/common/asm/RuntimeEnumExtender.java b/fmlloader/src/main/java/net/minecraftforge/common/asm/RuntimeEnumExtender.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/common/asm/RuntimeEnumExtender.java
rename to fmlloader/src/main/java/net/minecraftforge/common/asm/RuntimeEnumExtender.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/AdvancedLogMessageAdapter.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/AdvancedLogMessageAdapter.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/AdvancedLogMessageAdapter.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/AdvancedLogMessageAdapter.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/BackgroundWaiter.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/BackgroundWaiter.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/BackgroundWaiter.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/BackgroundWaiter.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/EarlyLoadingException.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/EarlyLoadingException.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/EarlyLoadingException.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/EarlyLoadingException.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLConfig.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLConfig.java
similarity index 91%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/FMLConfig.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLConfig.java
index 5ce6746424..88cf4758df 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLConfig.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLConfig.java
@@ -21,6 +21,7 @@ package net.minecraftforge.fml.loading;
import com.electronwill.nightconfig.core.ConfigSpec;
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
+import com.electronwill.nightconfig.core.file.FileNotFoundAction;
import com.electronwill.nightconfig.core.io.ParsingException;
import com.electronwill.nightconfig.core.io.WritingMode;
import net.minecraftforge.api.distmarker.Dist;
@@ -30,6 +31,7 @@ import org.apache.logging.log4j.Logger;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
+import java.util.Objects;
import java.util.stream.Collectors;
import static net.minecraftforge.fml.loading.LogMarkers.CORE;
@@ -50,11 +52,11 @@ public class FMLConfig
private void loadFrom(final Path configFile)
{
- configData = CommentedFileConfig.builder(configFile).sync().
- defaultResource("/META-INF/defaultfmlconfig.toml").
- autosave().autoreload().
- writingMode(WritingMode.REPLACE).
- build();
+ configData = CommentedFileConfig.builder(configFile).sync()
+ .onFileNotFound(FileNotFoundAction.copyData(Objects.requireNonNull(getClass().getResourceAsStream("/META-INF/defaultfmlconfig.toml"))))
+ .autosave().autoreload()
+ .writingMode(WritingMode.REPLACE)
+ .build();
try
{
configData.load();
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLEnvironment.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLEnvironment.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/FMLEnvironment.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLEnvironment.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLLoader.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLLoader.java
similarity index 71%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/FMLLoader.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLLoader.java
index de65ff54a4..c439493b27 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLLoader.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLLoader.java
@@ -20,42 +20,25 @@
package net.minecraftforge.fml.loading;
import cpw.mods.modlauncher.Launcher;
-import cpw.mods.modlauncher.ServiceLoaderStreamUtils;
-import cpw.mods.modlauncher.TransformingClassLoader;
-import cpw.mods.modlauncher.api.IEnvironment;
-import cpw.mods.modlauncher.api.ILaunchHandlerService;
-import cpw.mods.modlauncher.api.INameMappingService;
-import cpw.mods.modlauncher.api.ITransformationService;
-import cpw.mods.modlauncher.api.ITransformingClassLoader;
-import cpw.mods.modlauncher.api.IncompatibleEnvironmentException;
+import cpw.mods.modlauncher.api.*;
import cpw.mods.modlauncher.serviceapi.ILaunchPluginService;
+import cpw.mods.modlauncher.util.ServiceLoaderUtils;
import net.minecraftforge.accesstransformer.service.AccessTransformerService;
import net.minecraftforge.api.distmarker.Dist;
-import net.minecraftforge.fml.loading.moddiscovery.BackgroundScanHandler;
-import net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer;
-import net.minecraftforge.fml.loading.moddiscovery.ModFile;
-import net.minecraftforge.fml.loading.moddiscovery.ModFileInfo;
+import net.minecraftforge.fml.loading.moddiscovery.*;
import net.minecraftforge.fml.loading.progress.EarlyProgressVisualization;
import net.minecraftforge.fml.loading.progress.StartupMessageManager;
+import net.minecraftforge.fml.loading.targets.CommonLaunchHandler;
import net.minecraftforge.forgespi.Environment;
import net.minecraftforge.forgespi.coremod.ICoreModProvider;
-import net.minecraftforge.forgespi.locating.IModFile;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.function.Predicate;
import java.util.stream.Collectors;
import static net.minecraftforge.fml.loading.LogMarkers.CORE;
@@ -72,21 +55,16 @@ public class FMLLoader
private static Dist dist;
private static String naming;
private static LoadingModList loadingModList;
- private static TransformingClassLoader launchClassLoader;
private static RuntimeDistCleaner runtimeDistCleaner;
private static Path gamePath;
- private static Path forgePath;
- private static Path[] mcPaths;
- static String mcVersion;
- private static String mcpVersion;
- static String forgeVersion;
- private static String forgeGroup;
- private static Predicate classLoaderExclusions;
+ private static VersionInfo versionInfo;
private static String launchHandlerName;
- private static FMLCommonLaunchHandler commonLaunchHandler;
+ private static CommonLaunchHandler commonLaunchHandler;
public static Runnable progressWindowTick;
+ private static ModValidator modValidator;
public static BackgroundScanHandler backgroundScanHandler;
private static boolean production;
+ private static IModuleLayerManager moduleLayerManager;
static void onInitialLoad(IEnvironment environment, Set otherServices) throws IncompatibleEnvironmentException
{
@@ -98,8 +76,6 @@ public class FMLLoader
LOGGER.fatal(CORE,"Found incompatible ModLauncher specification : {}, version {} from {}", modLauncherPackage.getSpecificationVersion(), modLauncherPackage.getImplementationVersion(), modLauncherPackage.getImplementationVendor());
throw new IncompatibleEnvironmentException("Incompatible modlauncher found "+modLauncherPackage.getSpecificationVersion());
}
- LOGGER.debug(CORE, "Initializing modjar URL handler");
- URL.setURLStreamHandlerFactory(p->p.equals("modjar") ? new ModJarURLHandler() : null);
accessTransformer = (AccessTransformerService) environment.findLaunchPlugin("accesstransformer").orElseThrow(()-> {
LOGGER.fatal(CORE,"Access Transformer library is missing, we need this to run");
@@ -131,8 +107,7 @@ public class FMLLoader
});
LOGGER.debug(CORE, "Found Runtime Dist Cleaner");
- final ArrayList coreModProviders = new ArrayList<>();
- ServiceLoaderStreamUtils.errorHandlingServiceLoader(ICoreModProvider.class, serviceConfigurationError -> LOGGER.fatal(CORE, "Failed to load a coremod library, expect problems", serviceConfigurationError)).forEach(coreModProviders::add);
+ var coreModProviders = ServiceLoaderUtils.streamWithErrorHandling(ServiceLoader.load(FMLLoader.class.getModule().getLayer(), ICoreModProvider.class), sce -> LOGGER.fatal(CORE, "Failed to load a coremod library, expect problems", sce)).toList();
if (coreModProviders.isEmpty()) {
LOGGER.fatal(CORE, "Found no coremod provider. Cannot run");
@@ -161,7 +136,6 @@ public class FMLLoader
LOGGER.fatal(CORE, "Failed to load NightConfig");
throw new IncompatibleEnvironmentException("Missing NightConfig");
}
- FixSSL.fixup();
}
static void setupLaunchHandler(final IEnvironment environment, final Map arguments)
@@ -169,55 +143,48 @@ public class FMLLoader
final String launchTarget = environment.getProperty(IEnvironment.Keys.LAUNCHTARGET.get()).orElse("MISSING");
final Optional launchHandler = environment.findLaunchHandler(launchTarget);
LOGGER.debug(CORE, "Using {} as launch service", launchTarget);
- if (!launchHandler.isPresent()) {
+ if (launchHandler.isEmpty()) {
LOGGER.fatal(CORE,"Missing LaunchHandler {}, cannot continue", launchTarget);
- throw new RuntimeException("Missing launch handler");
+ throw new RuntimeException("Missing launch handler: " + launchTarget);
}
- if (!(launchHandler.get() instanceof FMLCommonLaunchHandler)) {
+ if (!(launchHandler.get() instanceof CommonLaunchHandler)) {
LOGGER.fatal(CORE, "Incompatible Launch handler found - type {}, cannot continue", launchHandler.get().getClass().getName());
throw new RuntimeException("Incompatible launch handler found");
}
+ commonLaunchHandler = (CommonLaunchHandler)launchHandler.get();
launchHandlerName = launchHandler.get().name();
gamePath = environment.getProperty(IEnvironment.Keys.GAMEDIR.get()).orElse(Paths.get(".").toAbsolutePath());
- commonLaunchHandler = (FMLCommonLaunchHandler)launchHandler.get();
naming = commonLaunchHandler.getNaming();
dist = commonLaunchHandler.getDist();
production = commonLaunchHandler.isProduction();
- mcVersion = (String) arguments.get("mcVersion");
- progressWindowTick = EarlyProgressVisualization.INSTANCE.accept(dist, commonLaunchHandler.isData(), mcVersion);
+ versionInfo = new VersionInfo(arguments);
+
StartupMessageManager.modLoaderConsumer().ifPresent(c->c.accept("Early Loading!"));
accessTransformer.getExtension().accept(Pair.of(naming, "srg"));
- mcpVersion = (String) arguments.get("mcpVersion");
- forgeVersion = (String) arguments.get("forgeVersion");
- forgeGroup = (String) arguments.get("forgeGroup");
-
- LOGGER.debug(CORE,"Received command line version data : MC Version: '{}' MCP Version: '{}' Forge Version: '{}' Forge group: '{}'", mcVersion, mcpVersion, forgeVersion, forgeGroup);
- forgePath = commonLaunchHandler.getForgePath(mcVersion, forgeVersion, forgeGroup);
- mcPaths = commonLaunchHandler.getMCPaths(mcVersion, mcpVersion, forgeVersion, forgeGroup);
-
- commonLaunchHandler.validatePaths(forgePath, mcPaths, forgeVersion, mcVersion, mcpVersion);
- commonLaunchHandler.setup(environment, arguments);
- classLoaderExclusions = commonLaunchHandler.getPackagePredicate();
-
- languageLoadingProvider = new LanguageLoadingProvider();
- languageLoadingProvider.addForgeLanguage(forgePath);
+ LOGGER.debug(CORE,"Received command line version data : {}", versionInfo);
runtimeDistCleaner.getExtension().accept(dist);
- progressWindowTick.run();
}
- public static Map> beginModScan(final Map arguments)
+ public static List beginModScan(final Map arguments)
{
LOGGER.debug(SCAN,"Scanning for Mod Locators");
modDiscoverer = new ModDiscoverer(arguments);
- backgroundScanHandler = modDiscoverer.discoverMods();
+ modValidator = modDiscoverer.discoverMods();
+ var pluginResources = modValidator.getPluginResources();
+ return List.of(pluginResources);
+ }
+
+ public static List completeScan(IModuleLayerManager layerManager) {
+ progressWindowTick = EarlyProgressVisualization.INSTANCE.accept(dist, commonLaunchHandler.isData(), versionInfo.mcVersion());
+ moduleLayerManager = layerManager;
+ languageLoadingProvider = new LanguageLoadingProvider();
+ backgroundScanHandler = modValidator.stage2Validation();
loadingModList = backgroundScanHandler.getLoadingModList();
- commonLaunchHandler.addLibraries(backgroundScanHandler.getModFiles().getOrDefault(IModFile.Type.LIBRARY, Collections.emptyList()));
- progressWindowTick.run();
- return loadingModList.getModFiles().stream().map(ModFileInfo::getFile).collect(Collectors.groupingBy(ModFile::getType));
+ return List.of(modValidator.getModResources());
}
public static ICoreModProvider getCoreModProvider() {
@@ -233,6 +200,10 @@ public class FMLLoader
return modDiscoverer;
}
+ public static CommonLaunchHandler getLaunchHandler() {
+ return commonLaunchHandler;
+ }
+
public static void addAccessTransformer(Path atPath, ModFile modName)
{
LOGGER.debug(SCAN, "Adding Access Transformer in {}", modName.getFilePath());
@@ -244,9 +215,8 @@ public class FMLLoader
return dist;
}
- public static void beforeStart(ITransformingClassLoader launchClassLoader)
+ public static void beforeStart(ClassLoader launchClassLoader)
{
- FMLLoader.launchClassLoader = (TransformingClassLoader) launchClassLoader.getInstance();
StartupMessageManager.modLoaderConsumer().ifPresent(c->c.accept("Launching minecraft"));
progressWindowTick.run();
}
@@ -256,28 +226,11 @@ public class FMLLoader
return loadingModList;
}
- public static TransformingClassLoader getLaunchClassLoader()
- {
- return launchClassLoader;
- }
-
public static Path getGamePath()
{
return gamePath;
}
- public static Path getForgePath() {
- return forgePath;
- }
-
- public static Path[] getMCPaths() {
- return mcPaths;
- }
-
- public static Predicate getClassLoaderExclusions() {
- return classLoaderExclusions;
- }
-
public static String getNaming() {
return naming;
}
@@ -286,10 +239,6 @@ public class FMLLoader
return Launcher.INSTANCE.environment().findNameMapping(naming);
}
- public static String getMcpVersion() {
- return mcpVersion;
- }
-
public static String getLauncherInfo() {
return Launcher.INSTANCE.environment().getProperty(IEnvironment.Keys.MLIMPL_VERSION.get()).orElse("MISSING");
}
@@ -307,6 +256,14 @@ public class FMLLoader
}
public static boolean isSecureJarEnabled() {
- return Launcher.INSTANCE.environment().getProperty(IEnvironment.Keys.SECURED_JARS_ENABLED.get()).orElse(false);
+ return true;
+ }
+
+ public static ModuleLayer getGameLayer() {
+ return moduleLayerManager.getLayer(IModuleLayerManager.Layer.GAME).orElseThrow();
+ }
+
+ public static VersionInfo versionInfo() {
+ return versionInfo;
}
}
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLPaths.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLPaths.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/FMLPaths.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLPaths.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServiceProvider.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLServiceProvider.java
similarity index 83%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServiceProvider.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLServiceProvider.java
index 0f260650a2..7c4dc9fb16 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/FMLServiceProvider.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FMLServiceProvider.java
@@ -19,10 +19,8 @@
package net.minecraftforge.fml.loading;
-import cpw.mods.modlauncher.api.IEnvironment;
-import cpw.mods.modlauncher.api.ITransformationService;
-import cpw.mods.modlauncher.api.ITransformer;
-import cpw.mods.modlauncher.api.IncompatibleEnvironmentException;
+import cpw.mods.jarhandling.SecureJar;
+import cpw.mods.modlauncher.api.*;
import joptsimple.ArgumentAcceptingOptionSpec;
import joptsimple.OptionSpecBuilder;
import net.minecraftforge.fml.loading.moddiscovery.ModFile;
@@ -30,14 +28,16 @@ import net.minecraftforge.forgespi.Environment;
import net.minecraftforge.forgespi.locating.IModFile;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.jetbrains.annotations.NotNull;
-import javax.annotation.Nonnull;
import java.nio.file.Path;
import java.util.AbstractMap;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.function.BiFunction;
@@ -47,7 +47,6 @@ import static net.minecraftforge.fml.loading.LogMarkers.CORE;
public class FMLServiceProvider implements ITransformationService
{
-
private static final Logger LOGGER = LogManager.getLogger();
private ArgumentAcceptingOptionSpec modsOption;
private ArgumentAcceptingOptionSpec modListsOption;
@@ -67,6 +66,12 @@ public class FMLServiceProvider implements ITransformationService
private String targetForgeGroup;
private Map arguments;
+ public FMLServiceProvider()
+ {
+ final String markerselection = System.getProperty("forge.logging.markers", "");
+ Arrays.stream(markerselection.split(",")).forEach(marker -> System.setProperty("forge.logging.marker." + marker.toLowerCase(Locale.ROOT), "ACCEPT"));
+ }
+
@Override
public String name()
{
@@ -97,28 +102,22 @@ public class FMLServiceProvider implements ITransformationService
}
@Override
- public void beginScanning(final IEnvironment environment) {
- throw new IllegalStateException("WHY ARE YOU HERE??????");
+ public List beginScanning(final IEnvironment environment) {
+ LOGGER.debug(CORE,"Initiating mod scan");
+ return FMLLoader.beginModScan(arguments);
}
@Override
- public List> runScan(final IEnvironment environment) {
- LOGGER.debug(CORE,"Initiating mod scan");
- final Map> foundFiles = FMLLoader.beginModScan(arguments);
- return foundFiles
- .values()
- .stream()
- .flatMap(Collection::stream)
- .map(modFile -> new AbstractMap.SimpleImmutableEntry<>(modFile.getFileName(), modFile.getFilePath()))
- .collect(Collectors.toList());
+ public List completeScan(final IModuleLayerManager layerManager) {
+ return FMLLoader.completeScan(layerManager);
}
@Override
public void onLoad(IEnvironment environment, Set otherServices) throws IncompatibleEnvironmentException
{
- LOGGER.debug("Injecting tracing printstreams for STDOUT/STDERR.");
- System.setOut(new TracingPrintStream(LogManager.getLogger("STDOUT"), System.out));
- System.setErr(new TracingPrintStream(LogManager.getLogger("STDERR"), System.err));
+// LOGGER.debug("Injecting tracing printstreams for STDOUT/STDERR.");
+// System.setOut(new TracingPrintStream(LogManager.getLogger("STDOUT"), System.out));
+// System.setErr(new TracingPrintStream(LogManager.getLogger("STDERR"), System.err));
FMLLoader.onInitialLoad(environment, otherServices);
}
@@ -148,9 +147,8 @@ public class FMLServiceProvider implements ITransformationService
targetMcpMappings = option.value(mappingsOption);
}
- @Nonnull
@Override
- public List transformers()
+ public @NotNull List transformers()
{
LOGGER.debug(CORE, "Loading coremod transformers");
return new ArrayList<>(FMLLoader.getCoreModProvider().getCoreModTransformers());
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/FileUtils.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/FileUtils.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/FileUtils.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/FileUtils.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/JarVersionLookupHandler.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/JarVersionLookupHandler.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/JarVersionLookupHandler.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/JarVersionLookupHandler.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/LanguageLoadingProvider.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LanguageLoadingProvider.java
similarity index 84%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/LanguageLoadingProvider.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/LanguageLoadingProvider.java
index 1ea6c5c6d5..4992a0c172 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/LanguageLoadingProvider.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LanguageLoadingProvider.java
@@ -19,7 +19,9 @@
package net.minecraftforge.fml.loading;
-import cpw.mods.modlauncher.ServiceLoaderStreamUtils;
+import cpw.mods.modlauncher.Launcher;
+import cpw.mods.modlauncher.api.IModuleLayerManager;
+import cpw.mods.modlauncher.util.ServiceLoaderUtils;
import net.minecraftforge.fml.loading.progress.StartupMessageManager;
import net.minecraftforge.forgespi.language.IModLanguageProvider;
import net.minecraftforge.fml.loading.moddiscovery.ExplodedDirectoryLocator;
@@ -49,13 +51,12 @@ import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Stream;
-import static cpw.mods.modlauncher.api.LamdbaExceptionUtils.rethrowFunction;
import static net.minecraftforge.fml.loading.LogMarkers.CORE;
+import static net.minecraftforge.fml.loading.LogMarkers.LOADING;
public class LanguageLoadingProvider
{
private static final Logger LOGGER = LogManager.getLogger();
- private final LanguageClassLoader languageClassLoader;
private final List languageProviders = new ArrayList<>();
private final ServiceLoader serviceLoader;
private final Map languageProviderMap = new HashMap<>();
@@ -71,7 +72,6 @@ public class LanguageLoadingProvider
}
private static class ModLanguageWrapper {
-
private final IModLanguageProvider modLanguageProvider;
private final ArtifactVersion version;
@@ -92,26 +92,14 @@ public class LanguageLoadingProvider
}
- private static class LanguageClassLoader extends URLClassLoader
- {
- public LanguageClassLoader() {
- super(new URL[0]);
- }
- @Override
- public void addURL(final URL url) {
- LOGGER.debug(CORE, "Adding {} to languageloader classloader", url);
- super.addURL(url);
- }
-
- }
LanguageLoadingProvider() {
- languageClassLoader = new LanguageClassLoader();
- serviceLoader = ServiceLoader.load(IModLanguageProvider.class, languageClassLoader);
+ var sl = Launcher.INSTANCE.environment().findModuleLayerManager().flatMap(lm->lm.getLayer(IModuleLayerManager.Layer.PLUGIN)).orElseThrow();
+ serviceLoader = ServiceLoader.load(sl, IModLanguageProvider.class);
loadLanguageProviders();
}
private void loadLanguageProviders() {
- LOGGER.debug(CORE, "Found {} language providers", ServiceLoaderStreamUtils.toList(serviceLoader).size());
+ LOGGER.debug(CORE, "Found {} language providers", ServiceLoaderUtils.streamServiceLoader(()->serviceLoader, sce->LOGGER.fatal("Problem with language loaders")).count());
serviceLoader.forEach(languageProviders::add);
languageProviders.forEach(lp -> {
@@ -122,7 +110,7 @@ public class LanguageLoadingProvider
throw new RuntimeException("Huh?", e);
}
Optional implementationVersion = JarVersionLookupHandler.getImplementationVersion(lp.getClass());
- String impl = implementationVersion.orElse(Files.isDirectory(lpPath) ? FMLLoader.forgeVersion.split("\\.")[0] : null);
+ String impl = implementationVersion.orElse(Files.isDirectory(lpPath) ? FMLLoader.versionInfo().forgeVersion().split("\\.")[0] : null);
if (impl == null) {
LOGGER.fatal(CORE, "Found unversioned language provider {}", lp.name());
throw new RuntimeException("Failed to find implementation version for language provider "+ lp.name());
@@ -147,7 +135,7 @@ public class LanguageLoadingProvider
private void addLanguagePaths(final Stream langPaths) {
languageProviders.clear();
languageProviderMap.clear();
- langPaths.peek(languagePaths::add).map(Path::toFile).map(File::toURI).map(rethrowFunction(URI::toURL)).forEach(languageClassLoader::addURL);
+// langPaths.peek(languagePaths::add).map(Path::toFile).map(File::toURI).map(rethrowFunction(URI::toURL)).forEach(languageClassLoader::addURL);
}
public void addAdditionalLanguages(List modFiles)
@@ -167,11 +155,11 @@ public class LanguageLoadingProvider
final String languageFileName = mf.getLocator() instanceof ExplodedDirectoryLocator ? "in-development" : mf.getFileName();
final ModLanguageWrapper mlw = languageProviderMap.get(modLoader);
if (mlw == null) {
- LOGGER.error("Missing language {} version {} wanted by {}", modLoader, modLoaderVersion, languageFileName);
+ LOGGER.error(LOADING,"Missing language {} version {} wanted by {}", modLoader, modLoaderVersion, languageFileName);
throw new EarlyLoadingException("Missing language "+modLoader, null, Collections.singletonList(new EarlyLoadingException.ExceptionData("fml.language.missingversion", modLoader, modLoaderVersion, languageFileName, "null")));
}
if (!VersionSupportMatrix.testVersionSupportMatrix(modLoaderVersion, modLoader, "languageloader", (llid, range) -> range.containsVersion(mlw.getVersion()))) {
- LOGGER.error("Missing language {} version {} wanted by {}, found {}", modLoader, modLoaderVersion, languageFileName, mlw.getVersion());
+ LOGGER.error(LOADING,"Missing language {} version {} wanted by {}, found {}", modLoader, modLoaderVersion, languageFileName, mlw.getVersion());
throw new EarlyLoadingException("Missing language "+ modLoader + " matching range "+modLoaderVersion + " found "+mlw.getVersion(), null, Collections.singletonList(new EarlyLoadingException.ExceptionData("fml.language.missingversion", modLoader, modLoaderVersion, languageFileName, mlw.getVersion())));
}
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/LauncherVersion.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LauncherVersion.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/LauncherVersion.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/LauncherVersion.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/LibraryFinder.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LibraryFinder.java
similarity index 82%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/LibraryFinder.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/LibraryFinder.java
index faa9d45665..8332ed38cf 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/LibraryFinder.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LibraryFinder.java
@@ -36,11 +36,10 @@ public class LibraryFinder {
private static Path libsPath;
static Path findLibsPath() {
if (libsPath == null) {
- final Path asm = findJarPathFor("org/objectweb/asm/Opcodes.class", "asm");
- // go up SIX parents to find the libs dir
- final Path libs = asm.getParent().getParent().getParent().getParent().getParent().getParent();
- LOGGER.debug(CORE, "Found probable library path {}", libs);
- libsPath = libs;
+ libsPath = Path.of(System.getProperty("libraryDirectory","crazysnowmannonsense/cheezwhizz"));
+ if (!Files.isDirectory(libsPath)) {
+ throw new IllegalStateException("Missing libraryDirectory system property, cannot continue");
+ }
}
return libsPath;
}
@@ -87,4 +86,14 @@ public class LibraryFinder {
LOGGER.debug(CORE,"Forge patches at {} is {}", patchedBinariesPath.toString(), pathStatus(patchedBinariesPath));
return new Path[] { patchedBinariesPath, mcExtrasPath, srgMcPath };
}
+
+ public static Path findPathForMaven(final String group, final String artifact, final String extension, final String classifier, final String version) {
+ return findLibsPath().resolve(MavenCoordinateResolver.get(group, artifact, extension, classifier, version));
+ }
+ public static Path findPathForMaven(final String maven) {
+ return findLibsPath().resolve(MavenCoordinateResolver.get(maven));
+ }
+ public static Path getFMLCorePath() {
+ return findLibsPath().resolve(MavenCoordinateResolver.get("net.minecraftforge:fmlcore:1.0"));
+ }
}
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/LoadingModList.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LoadingModList.java
similarity index 98%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/LoadingModList.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/LoadingModList.java
index 831d111829..7c5247cbcd 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/LoadingModList.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LoadingModList.java
@@ -41,8 +41,6 @@ public class LoadingModList
private final List modFiles;
private final List sortedList;
private final Map fileById;
- @SuppressWarnings("unused")
- private BackgroundScanHandler scanner;
private final List preLoadErrors;
private List brokenFiles;
@@ -94,7 +92,6 @@ public class LoadingModList
public void addForScanning(BackgroundScanHandler backgroundScanHandler)
{
- this.scanner = backgroundScanHandler;
backgroundScanHandler.setLoadingModList(this);
modFiles.stream()
.map(ModFileInfo::getFile)
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/LogMarkers.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LogMarkers.java
similarity index 92%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/LogMarkers.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/LogMarkers.java
index d9d8ed5f4b..00f015fbcb 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/LogMarkers.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LogMarkers.java
@@ -27,5 +27,4 @@ public class LogMarkers {
public static final Marker LOADING = MarkerManager.getMarker("LOADING");
public static final Marker SCAN = MarkerManager.getMarker("SCAN");
public static final Marker SPLASH = MarkerManager.getMarker("SPLASH");
- public static final Marker FORGEMOD = MarkerManager.getMarker("FORGEMOD").addParents(LOADING);
}
diff --git a/src/userdev/java/net/minecraftforge/userdev/MCPNamingService.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/MCPNamingService.java
similarity index 71%
rename from src/userdev/java/net/minecraftforge/userdev/MCPNamingService.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/MCPNamingService.java
index 7f55f177f3..1279980b10 100644
--- a/src/userdev/java/net/minecraftforge/userdev/MCPNamingService.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/MCPNamingService.java
@@ -1,23 +1,4 @@
-/*
- * Minecraft Forge
- * Copyright (c) 2016-2021.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation version 2.1
- * of the License.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package net.minecraftforge.userdev;
+package net.minecraftforge.fml.loading;
import cpw.mods.modlauncher.api.INameMappingService;
import org.apache.commons.lang3.tuple.Pair;
@@ -47,7 +28,7 @@ public class MCPNamingService implements INameMappingService {
@Override
public String mappingVersion() {
- return "1234";
+ return "1234"; //TODO: Minecraft Version?
}
@Override
@@ -92,19 +73,14 @@ public class MCPNamingService implements INameMappingService {
return fields.getOrDefault(origin, origin);
}
-
- private static void loadMappings(final String mappingFileName, BiConsumer mapStore)
- {
- URL path = ClassLoader.getSystemResource(mappingFileName); //We EXPLICITLY go throught the SystemClassLoader here because this is dev-time only. And will be on the root classpath.
+ private static void loadMappings(final String mappingFileName, BiConsumer mapStore) {
+ URL path = ClassLoader.getSystemResource(mappingFileName); //We EXPLICITLY go through the SystemClassLoader here because this is dev-time only. And will be on the root classpath.
if (path == null)
return;
- try (BufferedReader reader = new BufferedReader(new InputStreamReader(path.openStream())))
- {
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(path.openStream()))) {
reader.lines().skip(1).map(e -> e.split(",")).forEach(e -> mapStore.accept(e[0], e[1]));
- }
- catch (IOException e1)
- {
+ } catch (IOException e1) {
LOGGER.error(CORE, "Error reading mappings", e1);
}
}
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/MavenCoordinateResolver.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/MavenCoordinateResolver.java
similarity index 100%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/MavenCoordinateResolver.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/MavenCoordinateResolver.java
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.java
similarity index 76%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.java
index bc6d0a7871..08a4c4241c 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/ModDirTransformerDiscoverer.java
@@ -20,6 +20,7 @@
package net.minecraftforge.fml.loading;
import cpw.mods.modlauncher.api.LamdbaExceptionUtils;
+import cpw.mods.modlauncher.api.NamedPath;
import cpw.mods.modlauncher.serviceapi.ITransformerDiscoveryService;
import org.apache.logging.log4j.LogManager;
@@ -29,40 +30,30 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Stream;
import java.util.zip.ZipFile;
public class ModDirTransformerDiscoverer implements ITransformerDiscoveryService {
@Override
- public List candidates(final Path gameDirectory) {
+ public List candidates(final Path gameDirectory) {
ModDirTransformerDiscoverer.scan(gameDirectory);
- return ModDirTransformerDiscoverer.transformers;
+ return List.copyOf(found);
}
- private static List transformers = new ArrayList<>();
- private static List locators = new ArrayList<>();
+ private final static List found = new ArrayList<>();
public static List allExcluded() {
- ArrayList paths = new ArrayList<>();
- paths.addAll(transformers);
- paths.addAll(locators);
- return paths;
- }
-
- public static List getExtraLocators() {
- return locators;
+ return found.stream().map(np->np.paths()[0]).toList();
}
private static void scan(final Path gameDirectory) {
final Path modsDir = gameDirectory.resolve(FMLPaths.MODSDIR.relative()).toAbsolutePath().normalize();
- transformers = new ArrayList<>();
- locators = new ArrayList<>();
if (!Files.exists(modsDir)) {
// Skip if the mods dir doesn't exist yet.
return;
}
- try {
- Files.createDirectories(modsDir);
- Files.walk(modsDir, 1).forEach(ModDirTransformerDiscoverer::visitFile);
+ try (var walk = Files.walk(modsDir, 1)){
+ walk.forEach(ModDirTransformerDiscoverer::visitFile);
} catch (IOException | IllegalStateException ioe) {
LogManager.getLogger().error("Error during early discovery", ioe);
}
@@ -74,9 +65,9 @@ public class ModDirTransformerDiscoverer implements ITransformerDiscoveryService
if (LamdbaExceptionUtils.uncheck(() -> Files.size(path)) == 0) return;
try (ZipFile zf = new ZipFile(new File(path.toUri()))) {
if (zf.getEntry("META-INF/services/cpw.mods.modlauncher.api.ITransformationService") != null) {
- transformers.add(path);
+ found.add(new NamedPath(zf.getName(), path));
} else if (zf.getEntry("META-INF/services/net.minecraftforge.forgespi.locating.IModLocator") != null) {
- locators.add(path);
+ found.add(new NamedPath(zf.getName(), path));
}
} catch (IOException ioe) {
LogManager.getLogger().error("Zip Error when loading jar file {}", path, ioe);
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/ModJarURLHandler.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/ModJarURLHandler.java
similarity index 88%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/ModJarURLHandler.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/ModJarURLHandler.java
index bde21bcbce..0e96c8b24f 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/ModJarURLHandler.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/ModJarURLHandler.java
@@ -70,13 +70,13 @@ public class ModJarURLHandler extends URLStreamHandler
@Override
public void connect()
{
- if (resource == null) {
- modid = url.getHost();
- // trim first char
- modpath = url.getPath().substring(1);
- resource = FMLLoader.getLoadingModList().getModFileById(modid).getFile().findResource(modpath);
- manifest = FMLLoader.getLoadingModList().getModFileById(modid).getManifest();
- }
+// if (resource == null) {
+// modid = url.getHost();
+// // trim first char
+// modpath = url.getPath().substring(1);
+// resource = FMLLoader.getLoadingModList().getModFileById(modid).getFile().findResource(modpath);
+// manifest = FMLLoader.getLoadingModList().getModFileById(modid).getManifest();
+// }
}
@Override
diff --git a/src/fmllauncher/java/net/minecraftforge/fml/loading/ModSorter.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/ModSorter.java
similarity index 64%
rename from src/fmllauncher/java/net/minecraftforge/fml/loading/ModSorter.java
rename to fmlloader/src/main/java/net/minecraftforge/fml/loading/ModSorter.java
index aa749dd98d..87d1856b29 100644
--- a/src/fmllauncher/java/net/minecraftforge/fml/loading/ModSorter.java
+++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/ModSorter.java
@@ -42,6 +42,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import static java.util.stream.Collectors.*;
import static net.minecraftforge.fml.loading.LogMarkers.LOADING;
public class ModSorter
@@ -57,22 +58,20 @@ public class ModSorter
this.modFiles = modFiles;
}
- public static LoadingModList sort(List mods)
+ public static LoadingModList sort(List mods, final List errors)
{
final ModSorter ms = new ModSorter(mods);
try {
ms.buildUniqueList();
} catch (EarlyLoadingException e) {
// We cannot build any list with duped mods. We have to abort immediately and report it
- return LoadingModList.of(ms.forgeAndMC, ms.forgeAndMC.stream().map(mf->(ModInfo)mf.getModInfos().get(0)).collect(Collectors.toList()), e);
+ return LoadingModList.of(ms.forgeAndMC, ms.forgeAndMC.stream().map(mf->(ModInfo)mf.getModInfos().get(0)).collect(toList()), e);
}
- // try and locate languages and validate dependencies
- List missingLangs = ms.findLanguages();
- List missingDeps = ms.verifyDependencyVersions();
- final List failedList = Stream.concat(missingLangs.stream(), missingDeps.stream()).collect(Collectors.toList());
+ // try and validate dependencies
+ final List failedList = Stream.concat(ms.verifyDependencyVersions().stream(), errors.stream()).toList();
// if we miss one or the other, we abort now
if (!failedList.isEmpty()) {
- return LoadingModList.of(ms.forgeAndMC, ms.forgeAndMC.stream().map(mf->(ModInfo)mf.getModInfos().get(0)).collect(Collectors.toList()), new EarlyLoadingException("failure to validate mod list", null, failedList));
+ return LoadingModList.of(ms.forgeAndMC, ms.forgeAndMC.stream().map(mf->(ModInfo)mf.getModInfos().get(0)).collect(toList()), new EarlyLoadingException("failure to validate mod list", null, failedList));
} else {
// Otherwise, lets try and sort the modlist and proceed
EarlyLoadingException earlyLoadingException = null;
@@ -85,35 +84,21 @@ public class ModSorter
}
}
- private List findLanguages() {
- List errorData = new ArrayList<>();
- modFiles.forEach(modFile -> {
- try {
- modFile.identifyLanguage();
- } catch (EarlyLoadingException e) {
- errorData.addAll(e.getAllData());
- }
- });
- return errorData;
- }
-
@SuppressWarnings("UnstableApiUsage")
private void sort()
{
// lambdas are identity based, so sorting them is impossible unless you hold reference to them
final MutableGraph graph = GraphBuilder.directed().build();
AtomicInteger counter = new AtomicInteger();
- Map infos = modFiles
- .stream()
+ Map infos = modFiles.stream()
.map(ModFile::getModFileInfo)
- .collect(Collectors.toMap(Function.identity(), e -> counter.incrementAndGet()));
+ .collect(toMap(Function.identity(), e -> counter.incrementAndGet()));
infos.keySet().forEach(i -> graph.addNode((ModFileInfo) i));
- modFiles
- .stream()
+ modFiles.stream()
.map(ModFile::getModInfos)
- .flatMap(Collection::stream)
+ .mapMulti(Iterable::forEach)
.map(IModInfo::getDependencies)
- .flatMap(Collection::stream)
+ .mapMulti(Iterable::forEach)
.forEach(dep -> addDependency(graph, dep));
final List