From 7da4dda7cf4d3431bb11fe83a098bef904e2e6ca Mon Sep 17 00:00:00 2001 From: Alex Nijjar Date: Mon, 29 Jan 2024 11:10:43 -0600 Subject: [PATCH] Fix JEI/REI not showing ingredients in recipes --- .github/workflows/release.yml | 14 ++++++++ changelog.md | 10 +----- .../adastra/common/menus/PlanetsMenu.java | 9 ++--- .../menus/base/PlanetsMenuProvider.java | 36 +++++++++---------- .../common/recipes/SpaceStationRecipe.java | 8 +++++ .../common/recipes/base/IngredientHolder.java | 5 +++ .../recipes/machines/AlloyingRecipe.java | 10 ++++++ .../recipes/machines/CompressingRecipe.java | 10 ++++++ .../recipes/machines/CryoFreezingRecipe.java | 10 ++++++ .../recipes/machines/NasaWorkbenchRecipe.java | 8 +++++ .../common/registry/ModRecipeSerializers.java | 10 +++--- fabric/build.gradle.kts | 4 +-- fabric/gradle.properties | 2 +- gradle.properties | 2 +- 14 files changed, 96 insertions(+), 42 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a7f2aad6e..454116341 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -61,7 +61,14 @@ jobs: resourceful-lib | depends | * resourceful-config | depends | * botarium | depends | * + cadmus | recommends | * + argonauts | recommends | * + curseforge-dependencies: | shimmer | recommends | * + athena | recommends | * + modrinth-dependencies: | + athena-ctm | recommends | * + shimmer! | recommends | * - name: Upload Fabric Releases (Curse/Modrinth/Github) id: fabric_release @@ -88,7 +95,14 @@ jobs: resourceful-lib | depends | * resourceful-config | depends | * botarium | depends | * + cadmus | recommends | * + argonauts | recommends | * + curseforge-dependencies: | shimmer | recommends | * + athena | recommends | * + modrinth-dependencies: | + athena-ctm | recommends | * + shimmer! | recommends | * - name: Generate Discord Embed run: ./gradlew injectEmbed diff --git a/changelog.md b/changelog.md index f8f663a68..b54d98517 100644 --- a/changelog.md +++ b/changelog.md @@ -10,12 +10,4 @@ See https://modrinth.com/mod/ad-astra/version/1.15.7 for the full changelog. ## Changes -- Added biome and dimension translations -- Fixed create compat (#441) -- Fixed diamond ore incorrect tag (#440) -- Fixed waterlogged blocks getting destroyed in space (#437) -- Fixed missing blocks in mars temple and lunarian tower. -- Re-added planet sky rendering resource pack support. -- Added German radio station (#438) -- Fixed crash with cryo freezer moving fluids -- Added config to disable oxygen, temperature, and gravity \ No newline at end of file +- Fixed JEI/REI not showing ingredients in recipes \ No newline at end of file diff --git a/common/src/main/java/earth/terrarium/adastra/common/menus/PlanetsMenu.java b/common/src/main/java/earth/terrarium/adastra/common/menus/PlanetsMenu.java index f305db3b2..1b898559a 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/menus/PlanetsMenu.java +++ b/common/src/main/java/earth/terrarium/adastra/common/menus/PlanetsMenu.java @@ -48,16 +48,17 @@ public PlanetsMenu(int containerId, Inventory inventory, FriendlyByteBuf buf) { inventory, PlanetsMenuProvider.createDisabledPlanetsFromBuf(buf), PlanetsMenuProvider.createSpaceStationsFromBuf(buf), - PlanetsMenuProvider.createClaimedChunksFromBuf(buf), - PlanetsMenuProvider.createSpawnLocationsFromBuf(buf)); + PlanetsMenuProvider.createSpawnLocationsFromBuf(buf), + PlanetsMenuProvider.createClaimedChunksFromBuf(buf) + ); } public PlanetsMenu(int containerId, Inventory inventory, Set disabledPlanets, Map, Map>> spaceStations, - Object2BooleanMap> claimedChunks, - Set spawnLocations) { + Set spawnLocations, + Object2BooleanMap> claimedChunks) { super(ModMenus.PLANETS.get(), containerId); this.inventory = inventory; player = inventory.player; diff --git a/common/src/main/java/earth/terrarium/adastra/common/menus/base/PlanetsMenuProvider.java b/common/src/main/java/earth/terrarium/adastra/common/menus/base/PlanetsMenuProvider.java index 68d24dace..5bfedf017 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/menus/base/PlanetsMenuProvider.java +++ b/common/src/main/java/earth/terrarium/adastra/common/menus/base/PlanetsMenuProvider.java @@ -35,7 +35,7 @@ public Component getDisplayName() { @Override public AbstractContainerMenu createMenu(int containerId, Inventory inventory, Player player) { - return new PlanetsMenu(containerId, inventory, Set.of(), Map.of(), Object2BooleanMaps.emptyMap(), Set.of()); + return new PlanetsMenu(containerId, inventory, Set.of(), Map.of(), Set.of(), Object2BooleanMaps.emptyMap()); } @Override @@ -59,20 +59,20 @@ public void writeExtraData(ServerPlayer player, FriendlyByteBuf buffer) { }); }); - if (CadmusIntegration.cadmusLoaded()) { - buffer.writeVarInt(AdAstraData.planets().size()); - AdAstraData.planets().keySet().forEach(dimension -> { - buffer.writeResourceKey(dimension); - buffer.writeBoolean(CadmusIntegration.isClaimed(player.server.getLevel(dimension), player.chunkPosition())); - }); - } - List locations = new ArrayList<>(); AdAstraData.planets().forEach((dimension, planet) -> LaunchingDimensionHandler.getSpawningLocation(player, player.serverLevel(), planet).ifPresent(locations::add)); buffer.writeVarInt(locations.size()); locations.forEach(buffer::writeGlobalPos); + + buffer.writeVarInt(AdAstraData.planets().size()); + if (CadmusIntegration.cadmusLoaded()) { + AdAstraData.planets().keySet().forEach(dimension -> { + buffer.writeResourceKey(dimension); + buffer.writeBoolean(CadmusIntegration.isClaimed(player.server.getLevel(dimension), player.chunkPosition())); + }); + } } public static Set createDisabledPlanetsFromBuf(FriendlyByteBuf buf) { @@ -115,18 +115,16 @@ public static Map, Map>> createSpaceS public static Object2BooleanMap> createClaimedChunksFromBuf(FriendlyByteBuf buf) { - if (CadmusIntegration.cadmusLoaded()) { - int dimensionCount = buf.readVarInt(); - Object2BooleanMap> claimedChunks = new Object2BooleanOpenHashMap<>(); - - for (int i = 0; i < dimensionCount; i++) { - ResourceKey dimension = buf.readResourceKey(Registries.DIMENSION); - claimedChunks.put(dimension, buf.readBoolean()); - } + int dimensionCount = buf.readVarInt(); + if (dimensionCount == 0) return Object2BooleanMaps.emptyMap(); + Object2BooleanMap> claimedChunks = new Object2BooleanOpenHashMap<>(); - return Object2BooleanMaps.unmodifiable(claimedChunks); + for (int i = 0; i < dimensionCount; i++) { + ResourceKey dimension = buf.readResourceKey(Registries.DIMENSION); + claimedChunks.put(dimension, buf.readBoolean()); } - return Object2BooleanMaps.emptyMap(); + + return Object2BooleanMaps.unmodifiable(claimedChunks); } public static Set createSpawnLocationsFromBuf(FriendlyByteBuf buf) { diff --git a/common/src/main/java/earth/terrarium/adastra/common/recipes/SpaceStationRecipe.java b/common/src/main/java/earth/terrarium/adastra/common/recipes/SpaceStationRecipe.java index 1da5214fb..3c5dbcc78 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/recipes/SpaceStationRecipe.java +++ b/common/src/main/java/earth/terrarium/adastra/common/recipes/SpaceStationRecipe.java @@ -28,6 +28,14 @@ public static Codec codec(ResourceLocation id) { ).apply(instance, SpaceStationRecipe::new)); } + public static Codec netCodec(ResourceLocation id) { + return RecordCodecBuilder.create(instance -> instance.group( + RecordCodecBuilder.point(id), + IngredientHolder.NETWORK_CODEC.listOf().fieldOf("ingredients").forGetter(SpaceStationRecipe::ingredients), + ResourceKey.codec(Registries.DIMENSION).fieldOf("dimension").forGetter(SpaceStationRecipe::dimension) + ).apply(instance, SpaceStationRecipe::new)); + } + @Override public boolean matches(@NotNull Container container, @NotNull Level level) { for (IngredientHolder holder : ingredients) { diff --git a/common/src/main/java/earth/terrarium/adastra/common/recipes/base/IngredientHolder.java b/common/src/main/java/earth/terrarium/adastra/common/recipes/base/IngredientHolder.java index 78a9f3317..179dcb587 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/recipes/base/IngredientHolder.java +++ b/common/src/main/java/earth/terrarium/adastra/common/recipes/base/IngredientHolder.java @@ -11,6 +11,11 @@ public record IngredientHolder(Ingredient ingredient, int count) { Codec.INT.fieldOf("count").orElse(1).forGetter(IngredientHolder::count) ).apply(instance, IngredientHolder::new)); + public static final Codec NETWORK_CODEC = RecordCodecBuilder.create(instance -> instance.group( + IngredientCodec.NETWORK_CODEC.fieldOf("ingredient").forGetter(IngredientHolder::ingredient), + Codec.INT.fieldOf("count").orElse(1).forGetter(IngredientHolder::count) + ).apply(instance, IngredientHolder::new)); + public static IngredientHolder of(Ingredient ingredient) { return new IngredientHolder(ingredient, 1); } diff --git a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/AlloyingRecipe.java b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/AlloyingRecipe.java index 41d62080c..fd91aa856 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/AlloyingRecipe.java +++ b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/AlloyingRecipe.java @@ -36,6 +36,16 @@ public static Codec codec(ResourceLocation id) { ).apply(instance, AlloyingRecipe::new)); } + public static Codec netCodec(ResourceLocation id) { + return RecordCodecBuilder.create(instance -> instance.group( + RecordCodecBuilder.point(id), + Codec.INT.fieldOf("cookingtime").forGetter(AlloyingRecipe::cookingTime), + Codec.INT.fieldOf("energy").forGetter(AlloyingRecipe::energy), + IngredientCodec.NETWORK_CODEC.listOf().fieldOf("ingredients").forGetter(AlloyingRecipe::ingredients), + ItemStackCodec.NETWORK_CODEC.fieldOf("result").forGetter(AlloyingRecipe::result) + ).apply(instance, AlloyingRecipe::new)); + } + @Override public boolean matches(@NotNull Container container, @NotNull Level level) { if (container.getContainerSize() < ingredients.size()) return false; diff --git a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CompressingRecipe.java b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CompressingRecipe.java index 9032172e0..f8bd5c403 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CompressingRecipe.java +++ b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CompressingRecipe.java @@ -34,6 +34,16 @@ public static Codec codec(ResourceLocation id) { ).apply(instance, CompressingRecipe::new)); } + public static Codec netCodec(ResourceLocation id) { + return RecordCodecBuilder.create(instance -> instance.group( + RecordCodecBuilder.point(id), + Codec.INT.fieldOf("cookingtime").forGetter(CompressingRecipe::cookingTime), + Codec.INT.fieldOf("energy").forGetter(CompressingRecipe::energy), + IngredientCodec.NETWORK_CODEC.fieldOf("ingredient").forGetter(CompressingRecipe::ingredient), + ItemStackCodec.NETWORK_CODEC.fieldOf("result").forGetter(CompressingRecipe::result) + ).apply(instance, CompressingRecipe::new)); + } + @Override public boolean matches(@NotNull Container container, @NotNull Level level) { if (!ingredient.test(container.getItem(1))) return false; diff --git a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CryoFreezingRecipe.java b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CryoFreezingRecipe.java index 94805a6cc..5df3ef71c 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CryoFreezingRecipe.java +++ b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/CryoFreezingRecipe.java @@ -33,6 +33,16 @@ public static Codec codec(ResourceLocation id) { ).apply(instance, CryoFreezingRecipe::new)); } + public static Codec netCodec(ResourceLocation id) { + return RecordCodecBuilder.create(instance -> instance.group( + RecordCodecBuilder.point(id), + Codec.INT.fieldOf("cookingtime").forGetter(CryoFreezingRecipe::cookingTime), + Codec.INT.fieldOf("energy").forGetter(CryoFreezingRecipe::energy), + IngredientCodec.NETWORK_CODEC.fieldOf("ingredient").forGetter(CryoFreezingRecipe::input), + FluidHolder.NEW_CODEC.fieldOf("result").forGetter(CryoFreezingRecipe::result) + ).apply(instance, CryoFreezingRecipe::new)); + } + @Override public boolean matches(@NotNull Container container, @NotNull Level level) { if (!input.test(container.getItem(1))) return false; diff --git a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/NasaWorkbenchRecipe.java b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/NasaWorkbenchRecipe.java index 47eb9e82a..1765e683e 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/NasaWorkbenchRecipe.java +++ b/common/src/main/java/earth/terrarium/adastra/common/recipes/machines/NasaWorkbenchRecipe.java @@ -32,6 +32,14 @@ public static Codec codec(ResourceLocation id) { ).apply(instance, NasaWorkbenchRecipe::new)); } + public static Codec netCodec(ResourceLocation id) { + return RecordCodecBuilder.create(instance -> instance.group( + RecordCodecBuilder.point(id), + IngredientCodec.NETWORK_CODEC.listOf().fieldOf("ingredients").forGetter(NasaWorkbenchRecipe::ingredients), + ItemStackCodec.NETWORK_CODEC.fieldOf("result").forGetter(NasaWorkbenchRecipe::result) + ).apply(instance, NasaWorkbenchRecipe::new)); + } + @Override public boolean matches(@NotNull Container container, @NotNull Level level) { if (container.getContainerSize() < 14) return false; diff --git a/common/src/main/java/earth/terrarium/adastra/common/registry/ModRecipeSerializers.java b/common/src/main/java/earth/terrarium/adastra/common/registry/ModRecipeSerializers.java index c0e540ccc..cbd107060 100644 --- a/common/src/main/java/earth/terrarium/adastra/common/registry/ModRecipeSerializers.java +++ b/common/src/main/java/earth/terrarium/adastra/common/registry/ModRecipeSerializers.java @@ -14,10 +14,10 @@ public class ModRecipeSerializers { public static final ResourcefulRegistry> RECIPE_SERIALIZERS = ResourcefulRegistries.create(BuiltInRegistries.RECIPE_SERIALIZER, AdAstra.MOD_ID); public static final RegistryEntry> COMPRESSING = RECIPE_SERIALIZERS.register("compressing", () -> - new CodecRecipeSerializer<>(ModRecipeTypes.COMPRESSING.get(), CompressingRecipe::codec)); + new CodecRecipeSerializer<>(ModRecipeTypes.COMPRESSING.get(), CompressingRecipe::codec, CompressingRecipe::netCodec)); public static final RegistryEntry> ALLOYING = RECIPE_SERIALIZERS.register("alloying", () -> - new CodecRecipeSerializer<>(ModRecipeTypes.ALLOYING.get(), AlloyingRecipe::codec)); + new CodecRecipeSerializer<>(ModRecipeTypes.ALLOYING.get(), AlloyingRecipe::codec, AlloyingRecipe::netCodec)); public static final RegistryEntry> OXYGEN_LOADING = RECIPE_SERIALIZERS.register("oxygen_loading", () -> new CodecRecipeSerializer<>(ModRecipeTypes.OXYGEN_LOADING.get(), OxygenLoadingRecipe::codec)); @@ -26,11 +26,11 @@ public class ModRecipeSerializers { new CodecRecipeSerializer<>(ModRecipeTypes.REFINING.get(), RefiningRecipe::codec)); public static final RegistryEntry> CRYO_FREEZING = RECIPE_SERIALIZERS.register("cryo_freezing", () -> - new CodecRecipeSerializer<>(ModRecipeTypes.CRYO_FREEZING.get(), CryoFreezingRecipe::codec)); + new CodecRecipeSerializer<>(ModRecipeTypes.CRYO_FREEZING.get(), CryoFreezingRecipe::codec, CryoFreezingRecipe::netCodec)); public static final RegistryEntry> NASA_WORKBENCH_SERIALIZER = RECIPE_SERIALIZERS.register("nasa_workbench", () -> - new CodecRecipeSerializer<>(ModRecipeTypes.NASA_WORKBENCH.get(), NasaWorkbenchRecipe::codec)); + new CodecRecipeSerializer<>(ModRecipeTypes.NASA_WORKBENCH.get(), NasaWorkbenchRecipe::codec, NasaWorkbenchRecipe::netCodec)); public static final RegistryEntry> SPACE_STATION_SERIALIZER = RECIPE_SERIALIZERS.register("space_station_recipe", () -> - new CodecRecipeSerializer<>(ModRecipeTypes.SPACE_STATION_RECIPE.get(), SpaceStationRecipe::codec)); + new CodecRecipeSerializer<>(ModRecipeTypes.SPACE_STATION_RECIPE.get(), SpaceStationRecipe::codec, SpaceStationRecipe::netCodec)); } diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index 2e6610539..20a0395aa 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -26,9 +26,7 @@ dependencies { modImplementation(group = "net.fabricmc", name = "fabric-loader", version = fabricLoaderVersion) modApi(group = "net.fabricmc.fabric-api", name = "fabric-api", version = "$fabricApiVersion+$minecraftVersion") - modLocalRuntime(group = "me.shedaniel", name = "RoughlyEnoughItems-fabric", version = reiVersion) { - isTransitive = false - } + modLocalRuntime(group = "me.shedaniel", name = "RoughlyEnoughItems-fabric", version = reiVersion) modApi(group = "com.terraformersmc", name = "modmenu", version = modMenuVersion) diff --git a/fabric/gradle.properties b/fabric/gradle.properties index 089f926dc..1499d4c89 100644 --- a/fabric/gradle.properties +++ b/fabric/gradle.properties @@ -1,2 +1,2 @@ -fabricLoaderVersion=0.15.5 +fabricLoaderVersion=0.15.6 fabricApiVersion=0.91.0 diff --git a/gradle.properties b/gradle.properties index 2bd42bb1e..d3a3199f0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx2G enabledPlatforms=fabric,forge -version=1.15.11 +version=1.15.12 group=earth.terrarium.adastra minecraftVersion=1.20.1