Skip to content

Commit

Permalink
feat: upgrade to forge 1.18.2
Browse files Browse the repository at this point in the history
Samarium150 committed Apr 12, 2022
1 parent 632e545 commit a0ec58c
Showing 5 changed files with 53 additions and 30 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@ apply plugin: 'net.minecraftforge.gradle'

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

dependencies {
minecraft 'net.minecraftforge:forge:1.18.1-39.0.88'
minecraft 'net.minecraftforge:forge:1.18.2-40.0.12'
}

compileJava {
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.samarium150.minecraft.mod.structures_compass.item;

import com.mojang.datafixers.util.Pair;
import io.github.samarium150.minecraft.mod.structures_compass.config.StructuresCompassConfig;
import io.github.samarium150.minecraft.mod.structures_compass.network.StructuresCompassNetwork;
import io.github.samarium150.minecraft.mod.structures_compass.network.packet.CompassSearchPacket;
@@ -9,9 +10,13 @@
import io.github.samarium150.minecraft.mod.structures_compass.util.StructureUtils;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderSet;
import net.minecraft.core.Registry;
import net.minecraft.nbt.*;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.InteractionHand;
@@ -22,6 +27,8 @@
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
@@ -160,18 +167,26 @@ public static boolean isSkip(@Nonnull ItemStack stack) {
* @see ServerLevel#findNearestMapFeature
*/
public static void search(@Nonnull ServerLevel world, Player player, @Nonnull StructureFeature<?> structure, ItemStack stack) {
ResourceLocation registry = structure.getRegistryName();
assert registry != null;
setStructureName(registry.toString(), stack);
ResourceLocation structureRegistryName = structure.getRegistryName();
assert structureRegistryName != null;
setStructureName(structureRegistryName.toString(), stack);
sendTranslatedMessage(GeneralUtils.prefix + "msg_searching", player);
BlockPos pos = world.findNearestMapFeature(
structure, player.blockPosition(), StructuresCompassConfig.radius.get(), isSkip(stack)
ChunkGenerator generator = world.getChunkSource().getGenerator();
HolderSet<ConfiguredStructureFeature<?, ?>> holderSet = world
.registryAccess()
.registryOrThrow(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY)
.getHolder(ResourceKey.create(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY, structureRegistryName))
.map(HolderSet::direct)
.orElseThrow();
Pair<BlockPos, Holder<ConfiguredStructureFeature<?, ?>>> result = generator.findNearestMapFeature(
world, holderSet, player.blockPosition(), StructuresCompassConfig.radius.get(), isSkip(stack)
);
sendTranslatedMessage(GeneralUtils.prefix + "msg_done", player);
if (pos == null) {
if (result == null) {
ItemUtils.removeTag(stack, DIM_TAG);
ItemUtils.removeTag(stack, POS_TAG);
} else {
BlockPos pos = result.getFirst();
Vec3 dis = StructureUtils.getDistance(pos, player);
double distance = (double) Math.round(dis.length() * 100) / 100;
if (distance > StructuresCompassConfig.maxDistance.get()) {
@@ -222,7 +237,8 @@ public InteractionResultHolder<ItemStack> use(
sendMessage(I18n.get(GeneralUtils.prefix + "msg_no_target"), player);
return super.use(world, player, hand);
}
StructureFeature<?> structure = StructureFeature.STRUCTURES_REGISTRY.get(name.replace("minecraft:", ""));
@SuppressWarnings("deprecation")
StructureFeature<?> structure = Registry.STRUCTURE_FEATURE.get(ResourceLocation.tryParse(name));
if (structure == null) {
sendMessage(I18n.get(GeneralUtils.prefix + "msg_error_name") + name, player);
return super.use(world, player, hand);
Original file line number Diff line number Diff line change
@@ -3,15 +3,12 @@
import io.github.samarium150.minecraft.mod.structures_compass.config.StructuresCompassConfig;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceKey;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.levelgen.StructureSettings;
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
@@ -22,8 +19,10 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.*;
import java.util.stream.Collectors;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;

/**
* Utilities related to structures
@@ -154,18 +153,26 @@ public static List<String> getDimensions(@Nonnull ServerLevel world, StructureFe
*/
@Nonnull
private static Boolean canGenerateStructure(@Nonnull ServerLevel world, StructureFeature<?> structure) {
ChunkGenerator generator = world.getChunkSource().getGenerator();
StructureSettings settings = generator.getSettings();
if (structure == StructureFeature.STRONGHOLD)
return world.dimension() == Level.OVERWORLD;
Set<String> biomes = generator.getBiomeSource().possibleBiomes().stream()
.map(Biome::getRegistryName)
.filter(Objects::nonNull)
.map(ResourceLocation::toString)
.collect(Collectors.toSet());
for (ResourceKey<Biome> biome : settings.structures(structure).values()) {
if (biomes.contains(biome.location().toString()))
return true;
List<ConfiguredStructureFeature<?, ?>> configured = world.registryAccess()
.registryOrThrow(Registry.CONFIGURED_STRUCTURE_FEATURE_REGISTRY)
.stream()
.filter(configuredStructureFeature -> configuredStructureFeature.feature == structure)
.toList();
if (!configured.isEmpty()) {
List<ResourceLocation> biomeSet = world.getChunkSource().getGenerator()
.getBiomeSource()
.possibleBiomes()
.stream()
.map(holder -> holder.unwrapKey().orElseThrow().location())
.toList();
for (ResourceLocation biome : configured.stream()
.flatMap(configuredStructureFeature -> configuredStructureFeature.biomes.stream()
.map(holder -> holder.unwrapKey().orElseThrow().location()))
.distinct().toList()
) {
if (biomeSet.contains(biome))
return true;
}
}
return false;
}
2 changes: 1 addition & 1 deletion src/main/resources/META-INF/mods.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
modLoader="javafml"
loaderVersion="[38,)"
loaderVersion="[40,)"
issueTrackerURL="https://github.com/Samarium150/StructuresCompass/issues"
license="GNU GENERAL PUBLIC LICENSE Version 3"

2 changes: 1 addition & 1 deletion src/main/resources/pack.mcmeta
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"pack": {
"description": "Structures' Compass mod resources",
"pack_format": 8
"pack_format": 9
}
}

0 comments on commit a0ec58c

Please sign in to comment.