Skip to content

Commit a0ec58c

Browse files
committed
feat: upgrade to forge 1.18.2
1 parent 632e545 commit a0ec58c

5 files changed

Lines changed: 53 additions & 30 deletions

File tree

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ apply plugin: 'net.minecraftforge.gradle'
1818

1919
def previousVersion = '1.3.1'
2020
def baseVersion = '1.4.0'
21-
def minecraftVersion = '1.18.1'
21+
def minecraftVersion = '1.18.2'
2222
version = "${minecraftVersion}-${baseVersion}" as Object
2323
group = 'io.github.samarium150'
2424
archivesBaseName = 'structures_compass'
@@ -73,7 +73,7 @@ minecraft {
7373
// sourceSets.main.resources { srcDir 'src/generated/resources' }
7474

7575
dependencies {
76-
minecraft 'net.minecraftforge:forge:1.18.1-39.0.88'
76+
minecraft 'net.minecraftforge:forge:1.18.2-40.0.12'
7777
}
7878

7979
compileJava {

src/main/java/io/github/samarium150/minecraft/mod/structures_compass/item/StructuresCompassItem.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.samarium150.minecraft.mod.structures_compass.item;
22

3+
import com.mojang.datafixers.util.Pair;
34
import io.github.samarium150.minecraft.mod.structures_compass.config.StructuresCompassConfig;
45
import io.github.samarium150.minecraft.mod.structures_compass.network.StructuresCompassNetwork;
56
import io.github.samarium150.minecraft.mod.structures_compass.network.packet.CompassSearchPacket;
@@ -9,9 +10,13 @@
910
import io.github.samarium150.minecraft.mod.structures_compass.util.StructureUtils;
1011
import net.minecraft.client.resources.language.I18n;
1112
import net.minecraft.core.BlockPos;
13+
import net.minecraft.core.Holder;
14+
import net.minecraft.core.HolderSet;
15+
import net.minecraft.core.Registry;
1216
import net.minecraft.nbt.*;
1317
import net.minecraft.network.chat.TextComponent;
1418
import net.minecraft.network.chat.TranslatableComponent;
19+
import net.minecraft.resources.ResourceKey;
1520
import net.minecraft.resources.ResourceLocation;
1621
import net.minecraft.server.level.ServerLevel;
1722
import net.minecraft.world.InteractionHand;
@@ -22,6 +27,8 @@
2227
import net.minecraft.world.item.ItemStack;
2328
import net.minecraft.world.item.Rarity;
2429
import net.minecraft.world.level.Level;
30+
import net.minecraft.world.level.chunk.ChunkGenerator;
31+
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
2532
import net.minecraft.world.level.levelgen.feature.StructureFeature;
2633
import net.minecraft.world.phys.Vec3;
2734
import net.minecraftforge.api.distmarker.Dist;
@@ -160,18 +167,26 @@ public static boolean isSkip(@Nonnull ItemStack stack) {
160167
* @see ServerLevel#findNearestMapFeature
161168
*/
162169
public static void search(@Nonnull ServerLevel world, Player player, @Nonnull StructureFeature<?> structure, ItemStack stack) {
163-
ResourceLocation registry = structure.getRegistryName();
164-
assert registry != null;
165-
setStructureName(registry.toString(), stack);
170+
ResourceLocation structureRegistryName = structure.getRegistryName();
171+
assert structureRegistryName != null;
172+
setStructureName(structureRegistryName.toString(), stack);
166173
sendTranslatedMessage(GeneralUtils.prefix + "msg_searching", player);
167-
BlockPos pos = world.findNearestMapFeature(
168-
structure, player.blockPosition(), StructuresCompassConfig.radius.get(), isSkip(stack)
174+
ChunkGenerator generator = world.getChunkSource().getGenerator();
175+
HolderSet<ConfiguredStructureFeature<?, ?>> holderSet = world
176+
.registryAccess()
177+
.registryOrThrow(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY)
178+
.getHolder(ResourceKey.create(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY, structureRegistryName))
179+
.map(HolderSet::direct)
180+
.orElseThrow();
181+
Pair<BlockPos, Holder<ConfiguredStructureFeature<?, ?>>> result = generator.findNearestMapFeature(
182+
world, holderSet, player.blockPosition(), StructuresCompassConfig.radius.get(), isSkip(stack)
169183
);
170184
sendTranslatedMessage(GeneralUtils.prefix + "msg_done", player);
171-
if (pos == null) {
185+
if (result == null) {
172186
ItemUtils.removeTag(stack, DIM_TAG);
173187
ItemUtils.removeTag(stack, POS_TAG);
174188
} else {
189+
BlockPos pos = result.getFirst();
175190
Vec3 dis = StructureUtils.getDistance(pos, player);
176191
double distance = (double) Math.round(dis.length() * 100) / 100;
177192
if (distance > StructuresCompassConfig.maxDistance.get()) {
@@ -222,7 +237,8 @@ public InteractionResultHolder<ItemStack> use(
222237
sendMessage(I18n.get(GeneralUtils.prefix + "msg_no_target"), player);
223238
return super.use(world, player, hand);
224239
}
225-
StructureFeature<?> structure = StructureFeature.STRUCTURES_REGISTRY.get(name.replace("minecraft:", ""));
240+
@SuppressWarnings("deprecation")
241+
StructureFeature<?> structure = Registry.STRUCTURE_FEATURE.get(ResourceLocation.tryParse(name));
226242
if (structure == null) {
227243
sendMessage(I18n.get(GeneralUtils.prefix + "msg_error_name") + name, player);
228244
return super.use(world, player, hand);

src/main/java/io/github/samarium150/minecraft/mod/structures_compass/util/StructureUtils.java

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@
33
import io.github.samarium150.minecraft.mod.structures_compass.config.StructuresCompassConfig;
44
import net.minecraft.client.resources.language.I18n;
55
import net.minecraft.core.BlockPos;
6-
import net.minecraft.resources.ResourceKey;
6+
import net.minecraft.core.Registry;
77
import net.minecraft.resources.ResourceLocation;
88
import net.minecraft.server.MinecraftServer;
99
import net.minecraft.server.level.ServerLevel;
1010
import net.minecraft.world.entity.Entity;
11-
import net.minecraft.world.level.Level;
12-
import net.minecraft.world.level.biome.Biome;
13-
import net.minecraft.world.level.chunk.ChunkGenerator;
14-
import net.minecraft.world.level.levelgen.StructureSettings;
11+
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
1512
import net.minecraft.world.level.levelgen.feature.StructureFeature;
1613
import net.minecraft.world.phys.Vec3;
1714
import net.minecraftforge.api.distmarker.Dist;
@@ -22,8 +19,10 @@
2219

2320
import javax.annotation.Nonnull;
2421
import javax.annotation.Nullable;
25-
import java.util.*;
26-
import java.util.stream.Collectors;
22+
import java.util.ArrayList;
23+
import java.util.HashMap;
24+
import java.util.List;
25+
import java.util.Optional;
2726

2827
/**
2928
* Utilities related to structures
@@ -154,18 +153,26 @@ public static List<String> getDimensions(@Nonnull ServerLevel world, StructureFe
154153
*/
155154
@Nonnull
156155
private static Boolean canGenerateStructure(@Nonnull ServerLevel world, StructureFeature<?> structure) {
157-
ChunkGenerator generator = world.getChunkSource().getGenerator();
158-
StructureSettings settings = generator.getSettings();
159-
if (structure == StructureFeature.STRONGHOLD)
160-
return world.dimension() == Level.OVERWORLD;
161-
Set<String> biomes = generator.getBiomeSource().possibleBiomes().stream()
162-
.map(Biome::getRegistryName)
163-
.filter(Objects::nonNull)
164-
.map(ResourceLocation::toString)
165-
.collect(Collectors.toSet());
166-
for (ResourceKey<Biome> biome : settings.structures(structure).values()) {
167-
if (biomes.contains(biome.location().toString()))
168-
return true;
156+
List<ConfiguredStructureFeature<?, ?>> configured = world.registryAccess()
157+
.registryOrThrow(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY)
158+
.stream()
159+
.filter(configuredStructureFeature -> configuredStructureFeature.feature == structure)
160+
.toList();
161+
if (!configured.isEmpty()) {
162+
List<ResourceLocation> biomeSet = world.getChunkSource().getGenerator()
163+
.getBiomeSource()
164+
.possibleBiomes()
165+
.stream()
166+
.map(holder -> holder.unwrapKey().orElseThrow().location())
167+
.toList();
168+
for (ResourceLocation biome : configured.stream()
169+
.flatMap(configuredStructureFeature -> configuredStructureFeature.biomes.stream()
170+
.map(holder -> holder.unwrapKey().orElseThrow().location()))
171+
.distinct().toList()
172+
) {
173+
if (biomeSet.contains(biome))
174+
return true;
175+
}
169176
}
170177
return false;
171178
}

src/main/resources/META-INF/mods.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
modLoader="javafml"
2-
loaderVersion="[38,)"
2+
loaderVersion="[40,)"
33
issueTrackerURL="https://github.com/Samarium150/StructuresCompass/issues"
44
license="GNU GENERAL PUBLIC LICENSE Version 3"
55

src/main/resources/pack.mcmeta

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"pack": {
33
"description": "Structures' Compass mod resources",
4-
"pack_format": 8
4+
"pack_format": 9
55
}
66
}

0 commit comments

Comments
 (0)