From 38ef58573f348fb71dfe08dc667f3621cf7cb661 Mon Sep 17 00:00:00 2001 From: Henry Lin Date: Mon, 27 May 2024 10:23:03 +0800 Subject: [PATCH] Fix code for 1.19 --- build.gradle | 26 +++++++- gradle.properties | 8 +-- .../create_power_loader/BackportUtils.java | 10 ++++ .../create_power_loader/CPLBlocks.java | 10 ++-- .../create_power_loader/CPLCreativeTabs.java | 59 ++++++++++--------- .../create_power_loader/CPLDatagen.java | 11 ++-- .../hlysine/create_power_loader/CPLIcons.java | 15 +++-- .../hlysine/create_power_loader/CPLTags.java | 12 ++-- .../CreatePowerLoader.java | 3 +- .../command/EnumArgument.java | 5 +- .../command/ListLoadersCommand.java | 12 ++-- .../command/SummaryCommand.java | 8 +-- .../create_power_loader/compat/Mods.java | 4 +- .../config/CPLConfigs.java | 6 +- .../content/ChunkLoadManager.java | 6 +- .../AndesiteChunkLoaderBlock.java | 3 + .../EmptyChunkLoaderBlockItem.java | 6 +- .../content/trains/CarriageChunkLoader.java | 13 ++-- .../content/trains/StationChunkLoader.java | 4 +- .../content/trains/TrainChunkLoader.java | 3 +- .../mixin/ArgumentTypeInfosAccessor.java | 16 +++++ .../chunk/loading/PortingLibChunkManager.java | 2 - .../loading/mixin/MinecraftServerMixin.java | 12 ++-- .../chunk/loading/mixin/ServerLevelMixin.java | 16 ++--- .../resources/create_power_loader.mixins.json | 1 + 25 files changed, 169 insertions(+), 102 deletions(-) create mode 100644 src/main/java/com/hlysine/create_power_loader/BackportUtils.java create mode 100644 src/main/java/com/hlysine/create_power_loader/mixin/ArgumentTypeInfosAccessor.java diff --git a/build.gradle b/build.gradle index 22ca9c3..0feb582 100644 --- a/build.gradle +++ b/build.gradle @@ -112,6 +112,17 @@ repositories { url = "https://maven.jamieswhiteshirt.com/libs-release" content { includeGroup("com.jamieswhiteshirt") } } + exclusiveContent { + forRepository { + maven { + name = "Modrinth" + url = "https://api.modrinth.com/maven" + } + } + filter { + includeGroup "maven.modrinth" + } + } // If you have mod jar dependencies in ./libs, you can declare them as a repository like so. // See https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver @@ -133,14 +144,19 @@ dependencies { modImplementation("com.tterrag.registrate_fabric:Registrate:${registrate_version}") modImplementation("com.jozufozu.flywheel:flywheel-fabric-${flywheel_minecraft_version}:${flywheel_version}") modImplementation("com.jamieswhiteshirt:reach-entity-attributes:$reach_entity_attributes_version") - modCompileOnly("com.simibubi.create:create-fabric-${create_minecraft_version}:${create_version}") { transitive = false } - modRuntimeOnly("com.simibubi.create:create-fabric-${create_minecraft_version}:${create_version}") + modCompileOnly("com.simibubi.create:create-fabric-${create_minecraft_version}:${create_version}") { + transitive = true + exclude group: "maven.modrinth" + } + modRuntimeOnly("com.simibubi.create:create-fabric-${create_minecraft_version}:${create_version}"){ + exclude group: "maven.modrinth" + } // todo: use porting lib when chunk_loading module gets backported // for (String module in port_lib_modules.split(",")) { // modImplementation(include("io.github.fabricators_of_create.Porting-Lib:$module:$port_lib_version")) // } - modImplementation("fuzs.forgeconfigapiport:forgeconfigapiport-fabric:$config_api_version") + modImplementation("net.minecraftforge:forgeconfigapiport-fabric:$config_api_version") // Example mod dependency with JEI - using the mod prefix ensures the dependency is remapped to your development mappings // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime @@ -150,6 +166,10 @@ dependencies { // at runtime, use the full JEI jar for fabric modRuntimeOnly("mezz.jei:jei-${jei_minecraft_version}-fabric:${jei_version}") + implementation 'javax.annotation:javax.annotation-api:1.3.2' + + include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.3.6"))) + // Example mod dependency using a mod jar from ./libs with a flat dir repository // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar // The group id is ignored when searching -- in this case, it is "blank" diff --git a/gradle.properties b/gradle.properties index 9f5506c..a8ec3ba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -16,12 +16,12 @@ mapping_version=1.19.2:2022.11.27 ## Dependency Properties -config_api_version=9.0.0 -config_api_version_range=>=9.0.0 +config_api_version=4.2.9 +config_api_version_range=>=4.2.9 -port_lib_version=2.3.0+1.20.1 +port_lib_version=2.1.1305+1.19.2 # adding a module also requires adding a dependency to the FMJ -port_lib_modules=base,chunk_loading +port_lib_modules=chunk_loading create_minecraft_version=1.19.2 diff --git a/src/main/java/com/hlysine/create_power_loader/BackportUtils.java b/src/main/java/com/hlysine/create_power_loader/BackportUtils.java new file mode 100644 index 0000000..ed8d51d --- /dev/null +++ b/src/main/java/com/hlysine/create_power_loader/BackportUtils.java @@ -0,0 +1,10 @@ +package com.hlysine.create_power_loader; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; + +public class BackportUtils { + public static BlockPos blockPosContaining(Vec3 vec) { + return new BlockPos(vec.x, vec.y, vec.z); + } +} diff --git a/src/main/java/com/hlysine/create_power_loader/CPLBlocks.java b/src/main/java/com/hlysine/create_power_loader/CPLBlocks.java index d16029e..5cb3035 100644 --- a/src/main/java/com/hlysine/create_power_loader/CPLBlocks.java +++ b/src/main/java/com/hlysine/create_power_loader/CPLBlocks.java @@ -13,7 +13,7 @@ import com.tterrag.registrate.util.entry.BlockEntry; import net.minecraft.client.renderer.RenderType; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.material.MapColor; +import net.minecraft.world.level.material.MaterialColor; import static com.simibubi.create.AllMovementBehaviours.movementBehaviour; import static com.simibubi.create.foundation.data.ModelGen.customItemModel; @@ -26,7 +26,7 @@ public class CPLBlocks { .block("empty_andesite_chunk_loader", props -> new EmptyChunkLoaderBlock(props, CPLBlockEntityTypes.EMPTY_ANDESITE_CHUNK_LOADER)) .initialProperties(() -> Blocks.BEACON) .properties(p -> p - .mapColor(MapColor.PODZOL) + .color(MaterialColor.PODZOL) .isRedstoneConductor((state, getter, pos) -> false) .noOcclusion() ) @@ -42,7 +42,7 @@ public class CPLBlocks { .block("andesite_chunk_loader", AndesiteChunkLoaderBlock::new) .initialProperties(() -> Blocks.BEACON) .properties(p -> p - .mapColor(MapColor.PODZOL) + .color(MaterialColor.PODZOL) .isRedstoneConductor((state, getter, pos) -> false) .noOcclusion() .lightLevel((state) -> 4) @@ -61,7 +61,7 @@ public class CPLBlocks { .block("empty_brass_chunk_loader", props -> new EmptyChunkLoaderBlock(props, CPLBlockEntityTypes.EMPTY_BRASS_CHUNK_LOADER)) .initialProperties(() -> Blocks.BEACON) .properties(p -> p - .mapColor(MapColor.TERRACOTTA_YELLOW) + .color(MaterialColor.TERRACOTTA_YELLOW) .isRedstoneConductor((state, getter, pos) -> false) .noOcclusion() ) @@ -77,7 +77,7 @@ public class CPLBlocks { .block("brass_chunk_loader", BrassChunkLoaderBlock::new) .initialProperties(() -> Blocks.BEACON) .properties(p -> p - .mapColor(MapColor.TERRACOTTA_YELLOW) + .color(MaterialColor.TERRACOTTA_YELLOW) .isRedstoneConductor((state, getter, pos) -> false) .noOcclusion() .lightLevel((state) -> 6) diff --git a/src/main/java/com/hlysine/create_power_loader/CPLCreativeTabs.java b/src/main/java/com/hlysine/create_power_loader/CPLCreativeTabs.java index 067e6a3..76553d6 100644 --- a/src/main/java/com/hlysine/create_power_loader/CPLCreativeTabs.java +++ b/src/main/java/com/hlysine/create_power_loader/CPLCreativeTabs.java @@ -1,38 +1,43 @@ package com.hlysine.create_power_loader; -import com.simibubi.create.AllCreativeModeTabs; -import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup; -import net.minecraft.core.Registry; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; +import com.tterrag.registrate.util.entry.ItemProviderEntry; +import io.github.fabricators_of_create.porting_lib.util.ItemGroupUtil; +import net.minecraft.core.NonNullList; import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import org.jetbrains.annotations.NotNull; -import java.util.function.Supplier; +import java.util.List; public class CPLCreativeTabs { - public static final AllCreativeModeTabs.TabInfo MAIN = register("main", () -> FabricItemGroup.builder() - .title(Component.translatable("itemGroup.create_power_loader.main")) - .icon(CPLBlocks.BRASS_CHUNK_LOADER::asStack) - .displayItems((params, output) -> { - output.accept(CPLBlocks.EMPTY_ANDESITE_CHUNK_LOADER.asStack()); - output.accept(CPLBlocks.ANDESITE_CHUNK_LOADER.asStack()); - output.accept(CPLBlocks.EMPTY_BRASS_CHUNK_LOADER.asStack()); - output.accept(CPLBlocks.BRASS_CHUNK_LOADER.asStack()); - }) - .build()); - - private static AllCreativeModeTabs.TabInfo register(String name, Supplier supplier) { - ResourceLocation id = CreatePowerLoader.asResource(name); - ResourceKey key = ResourceKey.create(Registries.CREATIVE_MODE_TAB, id); - CreativeModeTab tab = supplier.get(); - Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, key, tab); - return new AllCreativeModeTabs.TabInfo(key, tab); - } + public static final CreativeModeTab MAIN = new MainCreativeModeTab(); + + public static final List> ITEMS = List.of( + CPLBlocks.EMPTY_ANDESITE_CHUNK_LOADER, + CPLBlocks.ANDESITE_CHUNK_LOADER, + CPLBlocks.EMPTY_BRASS_CHUNK_LOADER, + CPLBlocks.BRASS_CHUNK_LOADER + ); public static void register() { + } + + public static class MainCreativeModeTab extends CreativeModeTab { + + public MainCreativeModeTab() { + super(ItemGroupUtil.expandArrayAndGetId(), CreatePowerLoader.MODID + ".main"); + } + + @Override + public @NotNull ItemStack makeIcon() { + return CPLBlocks.BRASS_CHUNK_LOADER.asStack(); + } + @Override + public void fillItemList(@NotNull NonNullList pItems) { + for (ItemProviderEntry item : ITEMS) { + item.get().asItem().fillItemCategory(this, pItems); + } + } } } diff --git a/src/main/java/com/hlysine/create_power_loader/CPLDatagen.java b/src/main/java/com/hlysine/create_power_loader/CPLDatagen.java index ec25b67..6cbd2d3 100644 --- a/src/main/java/com/hlysine/create_power_loader/CPLDatagen.java +++ b/src/main/java/com/hlysine/create_power_loader/CPLDatagen.java @@ -3,26 +3,25 @@ import com.hlysine.create_power_loader.CPLTags.AllEntityTags; import com.tterrag.registrate.providers.ProviderType; import com.tterrag.registrate.providers.RegistrateTagsProvider; -import io.github.fabricators_of_create.porting_lib.data.ExistingFileHelper; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator; import net.minecraft.world.entity.EntityType; +import net.minecraftforge.common.data.ExistingFileHelper; public class CPLDatagen implements DataGeneratorEntrypoint { @Override public void onInitializeDataGenerator(FabricDataGenerator generator) { ExistingFileHelper helper = ExistingFileHelper.withResourcesFromArg(); - FabricDataGenerator.Pack pack = generator.createPack(); - CreatePowerLoader.getRegistrate().setupDatagen(pack, helper); - gatherData(pack, helper); + CreatePowerLoader.getRegistrate().setupDatagen(generator, helper); + gatherData(generator, helper); } - public static void gatherData(FabricDataGenerator.Pack pack, ExistingFileHelper helper) { + public static void gatherData(FabricDataGenerator generator, ExistingFileHelper helper) { CreatePowerLoader.getRegistrate().addDataGenerator(ProviderType.ENTITY_TAGS, CPLDatagen::genEntityTags); } private static void genEntityTags(RegistrateTagsProvider> prov) { - prov.addTag(AllEntityTags.CHUNK_LOADER_CAPTURABLE.tag).add(EntityType.GHAST); + prov.tag(AllEntityTags.CHUNK_LOADER_CAPTURABLE.tag).add(EntityType.GHAST); } } diff --git a/src/main/java/com/hlysine/create_power_loader/CPLIcons.java b/src/main/java/com/hlysine/create_power_loader/CPLIcons.java index ee96491..852847f 100644 --- a/src/main/java/com/hlysine/create_power_loader/CPLIcons.java +++ b/src/main/java/com/hlysine/create_power_loader/CPLIcons.java @@ -3,18 +3,18 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Matrix4f; import com.simibubi.create.foundation.gui.AllIcons; import com.simibubi.create.foundation.gui.element.DelegatedStencilElement; import com.simibubi.create.foundation.utility.Color; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.phys.Vec3; -import org.joml.Matrix4f; public class CPLIcons extends AllIcons { @@ -52,8 +52,15 @@ public void bind() { @Environment(EnvType.CLIENT) @Override - public void render(GuiGraphics graphics, int x, int y) { - graphics.blit(ICON_ATLAS, x, y, 0, iconX, iconY, 16, 16, ICON_ATLAS_SIZE, ICON_ATLAS_SIZE); + public void render(PoseStack matrixStack, int x, int y) { + bind(); + GuiComponent.blit(matrixStack, x, y, 0, iconX, iconY, 16, 16, ICON_ATLAS_SIZE, ICON_ATLAS_SIZE); + } + + @Environment(EnvType.CLIENT) + public void render(PoseStack matrixStack, int x, int y, GuiComponent component) { + bind(); + component.blit(matrixStack, x, y, iconX, iconY, 16, 16); } @Environment(EnvType.CLIENT) diff --git a/src/main/java/com/hlysine/create_power_loader/CPLTags.java b/src/main/java/com/hlysine/create_power_loader/CPLTags.java index 72f3061..b1fdfb4 100644 --- a/src/main/java/com/hlysine/create_power_loader/CPLTags.java +++ b/src/main/java/com/hlysine/create_power_loader/CPLTags.java @@ -2,8 +2,6 @@ import com.simibubi.create.foundation.utility.Lang; import net.minecraft.core.Registry; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.entity.Entity; @@ -23,15 +21,15 @@ public static TagKey forgeTag(Registry registry, String path) { } public static TagKey forgeBlockTag(String path) { - return forgeTag(BuiltInRegistries.BLOCK, path); + return forgeTag(Registry.BLOCK, path); } public static TagKey forgeItemTag(String path) { - return forgeTag(BuiltInRegistries.ITEM, path); + return forgeTag(Registry.ITEM, path); } public static TagKey forgeFluidTag(String path) { - return forgeTag(BuiltInRegistries.FLUID, path); + return forgeTag(Registry.FLUID, path); } public enum NameSpace { @@ -83,9 +81,9 @@ public enum AllEntityTags { AllEntityTags(NameSpace namespace, String path, boolean optional, boolean alwaysDatagen) { ResourceLocation id = new ResourceLocation(namespace.id, path == null ? Lang.asId(name()) : path); if (optional) { - tag = optionalTag(BuiltInRegistries.ENTITY_TYPE, id); + tag = optionalTag(Registry.ENTITY_TYPE, id); } else { - tag = TagKey.create(Registries.ENTITY_TYPE, id); + tag = TagKey.create(Registry.ENTITY_TYPE.key(), id); } this.alwaysDatagen = alwaysDatagen; } diff --git a/src/main/java/com/hlysine/create_power_loader/CreatePowerLoader.java b/src/main/java/com/hlysine/create_power_loader/CreatePowerLoader.java index 818c16b..b68af59 100644 --- a/src/main/java/com/hlysine/create_power_loader/CreatePowerLoader.java +++ b/src/main/java/com/hlysine/create_power_loader/CreatePowerLoader.java @@ -32,11 +32,12 @@ public class CreatePowerLoader implements ModInitializer { @Override public void onInitialize() { + REGISTRATE.creativeModeTab(() -> CPLCreativeTabs.MAIN); + CPLCreativeTabs.register(); CPLTags.register(); CPLBlocks.register(); CPLBlockEntityTypes.register(); REGISTRATE.register(); - CPLCreativeTabs.register(); CPLConfigs.register(); diff --git a/src/main/java/com/hlysine/create_power_loader/command/EnumArgument.java b/src/main/java/com/hlysine/create_power_loader/command/EnumArgument.java index 450aedf..5f0d590 100644 --- a/src/main/java/com/hlysine/create_power_loader/command/EnumArgument.java +++ b/src/main/java/com/hlysine/create_power_loader/command/EnumArgument.java @@ -3,6 +3,7 @@ import com.google.gson.JsonObject; import com.hlysine.create_power_loader.CreatePowerLoader; +import com.hlysine.create_power_loader.mixin.ArgumentTypeInfosAccessor; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.context.CommandContext; @@ -14,7 +15,7 @@ import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.commands.synchronization.ArgumentTypeInfos; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.Registry; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.Component; @@ -26,7 +27,7 @@ public class EnumArgument> implements ArgumentType { public static void register() { - ArgumentTypeInfos.register(BuiltInRegistries.COMMAND_ARGUMENT_TYPE, + ArgumentTypeInfosAccessor.callRegister(Registry.COMMAND_ARGUMENT_TYPE, CreatePowerLoader.asResource("enum").toString(), EnumArgument.class, new EnumArgument.Info()); diff --git a/src/main/java/com/hlysine/create_power_loader/command/ListLoadersCommand.java b/src/main/java/com/hlysine/create_power_loader/command/ListLoadersCommand.java index f227b50..37c6b3e 100644 --- a/src/main/java/com/hlysine/create_power_loader/command/ListLoadersCommand.java +++ b/src/main/java/com/hlysine/create_power_loader/command/ListLoadersCommand.java @@ -16,7 +16,7 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.Registries; +import net.minecraft.core.Registry; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.HoverEvent; @@ -34,6 +34,8 @@ import java.util.function.Consumer; import java.util.function.Function; +import static com.hlysine.create_power_loader.BackportUtils.blockPosContaining; + public class ListLoadersCommand { public static ArgumentBuilder register() { @@ -80,8 +82,8 @@ private static Command handler(boolean hasMode, boolean hasL hasMode ? ctx.getArgument("type", LoaderMode.class) : null, hasLimit ? ctx.getArgument("limit", Integer.class) : 20, activeOnly, - (s, f) -> source.sendSuccess(() -> Components.literal(s).withStyle(st -> st.withColor(f)), false), - (c) -> source.sendSuccess(() -> c, false)); + (s, f) -> source.sendSuccess(Components.literal(s).withStyle(st -> st.withColor(f)), false), + (c) -> source.sendSuccess(c, false)); return Command.SINGLE_SUCCESS; }; } @@ -124,7 +126,7 @@ private static void fillReport(ServerLevel level, Map typeCache = new HashMap<>(); MinecraftServer server = level.getServer(); - Function computeType = key -> server.getLevel(ResourceKey.create(Registries.DIMENSION, key)).dimensionType(); + Function computeType = key -> server.getLevel(ResourceKey.create(Registry.DIMENSION_REGISTRY, key)).dimensionType(); List>> pairs = loaders.stream() .map(loader -> Pair.of(loader, loader.getLocation())) .map(pair -> Pair.of(pair.getFirst(), Pair.of(pair.getSecond().getFirst(), Vec3.atCenterOf(pair.getSecond().getSecond())))) @@ -144,7 +146,7 @@ private static void fillReport(ServerLevel level, for (Pair> pair : pairs) { ChunkLoader loader = pair.getFirst(); ResourceLocation dimension = pair.getSecond().getFirst(); - BlockPos pos = BlockPos.containing(pair.getSecond().getSecond()); + BlockPos pos = blockPosContaining(pair.getSecond().getSecond()); chatRaw.accept( text(mode == null ? loader.getLoaderMode().getSerializedName() + " - " : "", white) diff --git a/src/main/java/com/hlysine/create_power_loader/command/SummaryCommand.java b/src/main/java/com/hlysine/create_power_loader/command/SummaryCommand.java index 2f8f9ce..d1b9573 100644 --- a/src/main/java/com/hlysine/create_power_loader/command/SummaryCommand.java +++ b/src/main/java/com/hlysine/create_power_loader/command/SummaryCommand.java @@ -32,16 +32,16 @@ public class SummaryCommand { .executes(ctx -> { CommandSourceStack source = ctx.getSource(); fillReport(ctx.getArgument("dimension", ResourceLocation.class), - (s, f) -> source.sendSuccess(() -> Components.literal(s).withStyle(st -> st.withColor(f)), false), - (c) -> source.sendSuccess(() -> c, false)); + (s, f) -> source.sendSuccess(Components.literal(s).withStyle(st -> st.withColor(f)), false), + (c) -> source.sendSuccess(c, false)); return Command.SINGLE_SUCCESS; }) ) .executes(ctx -> { CommandSourceStack source = ctx.getSource(); fillReport(null, - (s, f) -> source.sendSuccess(() -> Components.literal(s).withStyle(st -> st.withColor(f)), false), - (c) -> source.sendSuccess(() -> c, false)); + (s, f) -> source.sendSuccess(Components.literal(s).withStyle(st -> st.withColor(f)), false), + (c) -> source.sendSuccess(c, false)); return Command.SINGLE_SUCCESS; }); } diff --git a/src/main/java/com/hlysine/create_power_loader/compat/Mods.java b/src/main/java/com/hlysine/create_power_loader/compat/Mods.java index 81079ec..f8f0231 100644 --- a/src/main/java/com/hlysine/create_power_loader/compat/Mods.java +++ b/src/main/java/com/hlysine/create_power_loader/compat/Mods.java @@ -1,7 +1,7 @@ package com.hlysine.create_power_loader.compat; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; @@ -32,7 +32,7 @@ public ResourceLocation rl(String path) { } public Block getBlock(String id) { - return BuiltInRegistries.BLOCK.get(rl(id)); + return Registry.BLOCK.get(rl(id)); } /** diff --git a/src/main/java/com/hlysine/create_power_loader/config/CPLConfigs.java b/src/main/java/com/hlysine/create_power_loader/config/CPLConfigs.java index 3a05acc..792de79 100644 --- a/src/main/java/com/hlysine/create_power_loader/config/CPLConfigs.java +++ b/src/main/java/com/hlysine/create_power_loader/config/CPLConfigs.java @@ -3,8 +3,8 @@ import com.hlysine.create_power_loader.CreatePowerLoader; import com.simibubi.create.content.kinetics.BlockStressValues; import com.simibubi.create.foundation.config.ConfigBase; -import fuzs.forgeconfigapiport.api.config.v2.ForgeConfigRegistry; -import fuzs.forgeconfigapiport.api.config.v2.ModConfigEvents; +import net.minecraftforge.api.ModLoadingContext; +import net.minecraftforge.api.fml.event.config.ModConfigEvents; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.fml.config.ModConfig; import org.apache.commons.lang3.tuple.Pair; @@ -45,7 +45,7 @@ public static void register() { server = register(CServer::new, ModConfig.Type.SERVER); for (Entry pair : CONFIGS.entrySet()) - ForgeConfigRegistry.INSTANCE.register(CreatePowerLoader.MODID, pair.getKey(), pair.getValue().specification); + ModLoadingContext.registerConfig(CreatePowerLoader.MODID, pair.getKey(), pair.getValue().specification); BlockStressValues.registerProvider(CreatePowerLoader.MODID, server()); diff --git a/src/main/java/com/hlysine/create_power_loader/content/ChunkLoadManager.java b/src/main/java/com/hlysine/create_power_loader/content/ChunkLoadManager.java index aa7a780..e98c000 100644 --- a/src/main/java/com/hlysine/create_power_loader/content/ChunkLoadManager.java +++ b/src/main/java/com/hlysine/create_power_loader/content/ChunkLoadManager.java @@ -6,7 +6,7 @@ import com.simibubi.create.foundation.utility.Pair; import io.github.fabricators_of_create.porting_lib.chunk.loading.PortingLibChunkManager; import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.Registries; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -117,7 +117,7 @@ private static Set getChunksAroundCenter(LoadedChunkPos center, } private static > void forceChunk(MinecraftServer server, T owner, ResourceLocation dimension, int chunkX, int chunkZ, boolean add) { - ServerLevel targetLevel = server.getLevel(ResourceKey.create(Registries.DIMENSION, dimension)); + ServerLevel targetLevel = server.getLevel(ResourceKey.create(Registry.DIMENSION_REGISTRY, dimension)); assert targetLevel != null; if (owner instanceof BlockPos) { PortingLibChunkManager.forceChunk(targetLevel, CreatePowerLoader.MODID, (BlockPos) owner, chunkX, chunkZ, add, true); @@ -190,7 +190,7 @@ public static void reclaimChunks(Level level, UUID owner, Map Set oldChunks = getSavedForcedChunks(owner); if (oldChunks != null) { for (LoadedChunkPos chunk : oldChunks) { - ResourceKey key = ResourceKey.create(Registries.DIMENSION, chunk.dimension()); + ResourceKey key = ResourceKey.create(Registry.DIMENSION_REGISTRY, chunk.dimension()); Set reclaim = reclaimedChunks.get(key); if (reclaim != null) { reclaim.add(chunk); diff --git a/src/main/java/com/hlysine/create_power_loader/content/andesitechunkloader/AndesiteChunkLoaderBlock.java b/src/main/java/com/hlysine/create_power_loader/content/andesitechunkloader/AndesiteChunkLoaderBlock.java index 2fa2cca..ffe6715 100644 --- a/src/main/java/com/hlysine/create_power_loader/content/andesitechunkloader/AndesiteChunkLoaderBlock.java +++ b/src/main/java/com/hlysine/create_power_loader/content/andesitechunkloader/AndesiteChunkLoaderBlock.java @@ -4,6 +4,9 @@ import com.hlysine.create_power_loader.content.AbstractChunkLoaderBlock; import com.hlysine.create_power_loader.content.LoaderType; import com.simibubi.create.foundation.block.IBE; +import net.minecraft.core.NonNullList; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; public class AndesiteChunkLoaderBlock extends AbstractChunkLoaderBlock implements IBE { diff --git a/src/main/java/com/hlysine/create_power_loader/content/emptychunkloader/EmptyChunkLoaderBlockItem.java b/src/main/java/com/hlysine/create_power_loader/content/emptychunkloader/EmptyChunkLoaderBlockItem.java index a522689..8ba4707 100644 --- a/src/main/java/com/hlysine/create_power_loader/content/emptychunkloader/EmptyChunkLoaderBlockItem.java +++ b/src/main/java/com/hlysine/create_power_loader/content/emptychunkloader/EmptyChunkLoaderBlockItem.java @@ -21,6 +21,8 @@ import javax.annotation.ParametersAreNonnullByDefault; +import static com.hlysine.create_power_loader.BackportUtils.blockPosContaining; + @MethodsReturnNonnullByDefault @ParametersAreNonnullByDefault @@ -47,7 +49,7 @@ public InteractionResult interactLivingEntity(ItemStack heldItem, Player player, if (!AllEntityTags.CHUNK_LOADER_CAPTURABLE.matches(entity)) return InteractionResult.PASS; - Level world = player.level(); + Level world = player.level; spawnCaptureEffects(world, entity.position()); if (world.isClientSide) return InteractionResult.FAIL; @@ -79,7 +81,7 @@ private void spawnCaptureEffects(Level world, Vec3 vec) { return; } - BlockPos soundPos = BlockPos.containing(vec); + BlockPos soundPos = blockPosContaining(vec); world.playSound(null, soundPos, SoundEvents.GHAST_HURT, SoundSource.HOSTILE, .25f, .75f); world.playSound(null, soundPos, SoundEvents.FIRE_EXTINGUISH, SoundSource.HOSTILE, .5f, .75f); } diff --git a/src/main/java/com/hlysine/create_power_loader/content/trains/CarriageChunkLoader.java b/src/main/java/com/hlysine/create_power_loader/content/trains/CarriageChunkLoader.java index 293969f..7a7c886 100644 --- a/src/main/java/com/hlysine/create_power_loader/content/trains/CarriageChunkLoader.java +++ b/src/main/java/com/hlysine/create_power_loader/content/trains/CarriageChunkLoader.java @@ -25,6 +25,7 @@ import java.util.HashSet; import java.util.Set; +import static com.hlysine.create_power_loader.BackportUtils.blockPosContaining; import static com.hlysine.create_power_loader.content.ChunkLoadManager.LoadedChunkPos; public class CarriageChunkLoader implements ChunkLoader { @@ -61,7 +62,7 @@ public Pair getLocation() { if (carriage.train.graph == null) return null; return Pair.of( carriage.leadingBogey().trailing().node1.getLocation().getDimension().location(), - BlockPos.containing(carriage.leadingBogey().trailing().getPosition(carriage.train.graph)) + blockPosContaining(carriage.leadingBogey().trailing().getPosition(carriage.train.graph)) ); } @@ -90,16 +91,16 @@ private void addLoadTargets(Set loadTargets, TravellingPoint poi if (point.edge.isInterDimensional()) { loadTargets.add(new LoadedChunkPos( point.node1.getLocation().getDimension().location(), - new ChunkPos(BlockPos.containing(point.node1.getLocation().getLocation())) + new ChunkPos(blockPosContaining(point.node1.getLocation().getLocation())) )); loadTargets.add(new LoadedChunkPos( point.node2.getLocation().getDimension().location(), - new ChunkPos(BlockPos.containing(point.node2.getLocation().getLocation())) + new ChunkPos(blockPosContaining(point.node2.getLocation().getLocation())) )); } else { loadTargets.add(new LoadedChunkPos( point.node1.getLocation().getDimension().location(), - new ChunkPos(BlockPos.containing(point.getPosition(carriage.train.graph))) + new ChunkPos(blockPosContaining(point.getPosition(carriage.train.graph))) )); } } @@ -116,10 +117,10 @@ private void updateCarriage() { boolean hasAndesite = false, hasBrass = false; for (MutablePair actor : entity.getContraption().getActors()) { - if (!hasAndesite && actor.left.state().is(CPLBlocks.ANDESITE_CHUNK_LOADER.get())) { + if (!hasAndesite && actor.left.state.is(CPLBlocks.ANDESITE_CHUNK_LOADER.get())) { hasAndesite = true; } - if (!hasBrass && actor.left.state().is(CPLBlocks.BRASS_CHUNK_LOADER.get())) { + if (!hasBrass && actor.left.state.is(CPLBlocks.BRASS_CHUNK_LOADER.get())) { hasBrass = true; } if (hasAndesite && hasBrass) break; diff --git a/src/main/java/com/hlysine/create_power_loader/content/trains/StationChunkLoader.java b/src/main/java/com/hlysine/create_power_loader/content/trains/StationChunkLoader.java index 87729fe..9f3de2e 100644 --- a/src/main/java/com/hlysine/create_power_loader/content/trains/StationChunkLoader.java +++ b/src/main/java/com/hlysine/create_power_loader/content/trains/StationChunkLoader.java @@ -23,6 +23,8 @@ import java.util.*; +import static com.hlysine.create_power_loader.BackportUtils.blockPosContaining; + public class StationChunkLoader implements ChunkLoader { private final GlobalStation station; public final Set attachments = new HashSet<>(); @@ -58,7 +60,7 @@ public LoaderType getLoaderType() { public @Nullable Pair getLocation() { return Pair.of( station.edgeLocation.getFirst().dimension.location(), - BlockPos.containing(station.edgeLocation.getFirst().getLocation().add(station.edgeLocation.getSecond().getLocation()).scale(0.5)) + blockPosContaining(station.edgeLocation.getFirst().getLocation().add(station.edgeLocation.getSecond().getLocation()).scale(0.5)) ); } diff --git a/src/main/java/com/hlysine/create_power_loader/content/trains/TrainChunkLoader.java b/src/main/java/com/hlysine/create_power_loader/content/trains/TrainChunkLoader.java index c449157..65a66ba 100644 --- a/src/main/java/com/hlysine/create_power_loader/content/trains/TrainChunkLoader.java +++ b/src/main/java/com/hlysine/create_power_loader/content/trains/TrainChunkLoader.java @@ -19,6 +19,7 @@ import java.util.*; +import static com.hlysine.create_power_loader.BackportUtils.blockPosContaining; import static com.hlysine.create_power_loader.content.ChunkLoadManager.LoadedChunkPos; public class TrainChunkLoader implements ChunkLoader { @@ -59,7 +60,7 @@ public Pair getLocation() { return train.carriages.stream().findFirst() .map(carriage -> Pair.of( carriage.leadingBogey().trailing().node1.getLocation().getDimension().location(), - BlockPos.containing(carriage.leadingBogey().trailing().getPosition(train.graph)) + blockPosContaining(carriage.leadingBogey().trailing().getPosition(train.graph)) )) .orElse(null); } diff --git a/src/main/java/com/hlysine/create_power_loader/mixin/ArgumentTypeInfosAccessor.java b/src/main/java/com/hlysine/create_power_loader/mixin/ArgumentTypeInfosAccessor.java new file mode 100644 index 0000000..11df696 --- /dev/null +++ b/src/main/java/com/hlysine/create_power_loader/mixin/ArgumentTypeInfosAccessor.java @@ -0,0 +1,16 @@ +package com.hlysine.create_power_loader.mixin; + +import com.mojang.brigadier.arguments.ArgumentType; +import net.minecraft.commands.synchronization.ArgumentTypeInfo; +import net.minecraft.commands.synchronization.ArgumentTypeInfos; +import net.minecraft.core.Registry; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(ArgumentTypeInfos.class) +public interface ArgumentTypeInfosAccessor { + @Invoker + static , T extends ArgumentTypeInfo.Template> ArgumentTypeInfo callRegister(Registry> registry, String id, Class argumentClass, ArgumentTypeInfo info) { + throw new UnsupportedOperationException(); + } +} diff --git a/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/PortingLibChunkManager.java b/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/PortingLibChunkManager.java index 6f38f89..5a2d858 100644 --- a/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/PortingLibChunkManager.java +++ b/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/PortingLibChunkManager.java @@ -13,7 +13,6 @@ import java.util.UUID; import java.util.function.BiConsumer; import java.util.function.Function; -import javax.annotation.ParametersAreNonnullByDefault; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.world.entity.Entity; @@ -29,7 +28,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -@ParametersAreNonnullByDefault public class PortingLibChunkManager { private static final Logger LOGGER = LogManager.getLogger(); private static final TicketType> BLOCK = TicketType.create("forge:block", Comparator.comparing(info -> info)); diff --git a/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/MinecraftServerMixin.java b/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/MinecraftServerMixin.java index 526e711..613f557 100644 --- a/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/MinecraftServerMixin.java +++ b/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/MinecraftServerMixin.java @@ -13,10 +13,10 @@ @Mixin(MinecraftServer.class) public class MinecraftServerMixin { - @ModifyExpressionValue(method = "prepareLevels", at = @At(value = "INVOKE", target = "Lit/unimi/dsi/fastutil/longs/LongIterator;hasNext()Z")) - private boolean reinstatePersistentChunks(boolean original, @Local(index = 6) ServerLevel serverLevel2, @Local(index = 7) ForcedChunksSavedData forcedChunksSavedData) { - if (!original) // a bit of a hack honestly but avoids us having to make a custom Injection Point - PortingLibChunkManager.reinstatePersistentChunks(serverLevel2, forcedChunksSavedData); - return original; - } + @ModifyExpressionValue(method = "prepareLevels", at = @At(value = "INVOKE", target = "Lit/unimi/dsi/fastutil/longs/LongIterator;hasNext()Z", remap = false)) + private boolean reinstatePersistentChunks(boolean original, @Local(index = 6) ServerLevel serverLevel2, @Local(index = 7) ForcedChunksSavedData forcedChunksSavedData) { + if (!original) // a bit of a hack honestly but avoids us having to make a custom Injection Point + PortingLibChunkManager.reinstatePersistentChunks(serverLevel2, forcedChunksSavedData); + return original; + } } diff --git a/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/ServerLevelMixin.java b/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/ServerLevelMixin.java index 9449b70..258e23c 100644 --- a/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/ServerLevelMixin.java +++ b/src/main/java/io/github/fabricators_of_create/porting_lib/chunk/loading/mixin/ServerLevelMixin.java @@ -11,13 +11,13 @@ @Mixin(ServerLevel.class) public abstract class ServerLevelMixin { - @Shadow - public abstract LongSet getForcedChunks(); + @Shadow + public abstract LongSet getForcedChunks(); - // Future me see if this can be replaced with a modify expression - @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lit/unimi/dsi/fastutil/longs/LongSet;isEmpty()Z")) - private boolean hasChunks(LongSet instance) { - //noinspection ConstantValue - return getForcedChunks().isEmpty() && !PortingLibChunkManager.hasForcedChunks((ServerLevel) (Object) this); - } + // Future me see if this can be replaced with a modify expression + @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lit/unimi/dsi/fastutil/longs/LongSet;isEmpty()Z", remap = false)) + private boolean hasChunks(LongSet instance) { + //noinspection ConstantValue + return getForcedChunks().isEmpty() && !PortingLibChunkManager.hasForcedChunks((ServerLevel) (Object) this); + } } diff --git a/src/main/resources/create_power_loader.mixins.json b/src/main/resources/create_power_loader.mixins.json index 507d93d..afe92eb 100644 --- a/src/main/resources/create_power_loader.mixins.json +++ b/src/main/resources/create_power_loader.mixins.json @@ -6,6 +6,7 @@ "refmap": "create_power_loader-refmap.json", "plugin": "com.hlysine.create_power_loader.mixin.MixinPlugin", "mixins": [ + "ArgumentTypeInfosAccessor", "GlobalRailwayManagerMixin", "GlobalStationMixin", "TrackEdgePointMixin",