From 01a4bdbe8ea54aa5f98ec45afa396ff69cff6481 Mon Sep 17 00:00:00 2001 From: Necrontyr Date: Wed, 12 Oct 2022 08:50:36 +0200 Subject: [PATCH 1/4] Don't ignore endCityFailChance config value. Fixes quiqueck/BetterEnd#92 --- .../mixin/common/EndCityFeatureMixin.java | 2 +- .../resources/betterend.mixins.common.json | 41 ++++++++++--------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java b/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java index 81cb4f2e..4ae0698a 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java @@ -24,12 +24,12 @@ public class EndCityFeatureMixin { ) { final ChunkPos pos = context.chunkPos(); WorldgenRandom chunkRandom = new WorldgenRandom(new XoroshiroRandomSource(pos.x, pos.z)); + chunkRandom.consumeCount(1); if (GeneratorOptions.useNewGenerator()) { int chance = GeneratorOptions.getEndCityFailChance(); if (chance > 0 && chunkRandom.nextInt(chance) != 0) { info.setReturnValue(Optional.empty()); - info.cancel(); } } } diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index 33ede3c7..917baba8 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -2,34 +2,35 @@ "required": true, "minVersion": "0.8", "package": "org.betterx.betterend.mixin.common", - "compatibilityLevel": "JAVA_16", + "compatibilityLevel": "JAVA_17", "mixins": [ - "LevelMixin", - "NoiseBasedChunkGeneratorAccessor", - "NoiseGeneratorSettingsMixin", - "NoiseInterpolatorAccessor", - "ChorusPlantFeatureMixin", - "PlayerAdvancementsMixin", + "BlockBehaviourMixin", "ChorusFlowerBlockMixin", "ChorusPlantBlockMixin", - "EndPodiumFeatureMixin", - "EndDragonFightMixin", - "MappedRegistryMixin", - "WorldGenRegionMixin", - "BlockBehaviourMixin", - "NoiseChunkAccessor", + "ChorusPlantFeatureMixin", "CraftingMenuMixin", - "LivingEntityMixin", - "ServerPlayerMixin", - "SpikeFeatureMixin", - "ServerLevelMixin", - "NoiseChunkMixin", + "EndCityFeatureMixin", + "EndDragonFightMixin", "EnderManMixin", + "EndPodiumFeatureMixin", "EndSpikeMixin", - "MonsterMixin", "EntityMixin", + "LevelMixin", + "LivingEntityMixin", + "MappedRegistryMixin", + "MonsterMixin", + "NoiseBasedChunkGeneratorAccessor", + "NoiseChunkAccessor", + "NoiseChunkMixin", + "NoiseGeneratorSettingsMixin", + "NoiseInterpolatorAccessor", + "PlayerAdvancementsMixin", "PlayerMixin", - "SlimeMixin" + "ServerLevelMixin", + "ServerPlayerMixin", + "SlimeMixin", + "SpikeFeatureMixin", + "WorldGenRegionMixin" ], "injectors": { "defaultRequire": 1 From 54f1100e2249c98613c5f98de3f58e7d02546410 Mon Sep 17 00:00:00 2001 From: Necrontyr Date: Thu, 13 Oct 2022 05:38:13 +0200 Subject: [PATCH 2/4] Use BCLBiome equals comparison instead of instance comparison. Fixes quiqueck/BetterEnd#88 --- .../betterx/betterend/entity/CubozoaEntity.java | 2 +- .../betterx/betterend/entity/EndFishEntity.java | 2 +- .../betterx/betterend/entity/EndSlimeEntity.java | 14 +++++++------- .../org/betterx/betterend/util/LootTableUtil.java | 10 +++++----- .../features/terrain/FloatingSpireFeature.java | 2 +- .../world/features/terrain/SpireFeature.java | 2 +- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/betterx/betterend/entity/CubozoaEntity.java b/src/main/java/org/betterx/betterend/entity/CubozoaEntity.java index 32059398..85e68e25 100644 --- a/src/main/java/org/betterx/betterend/entity/CubozoaEntity.java +++ b/src/main/java/org/betterx/betterend/entity/CubozoaEntity.java @@ -51,7 +51,7 @@ public class CubozoaEntity extends AbstractSchoolingFish { ) { SpawnGroupData data = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityTag); - if (BiomeAPI.getBiome(world.getBiome(blockPosition())) == EndBiomes.SULPHUR_SPRINGS) { + if (BiomeAPI.getBiome(world.getBiome(blockPosition())).equals(EndBiomes.SULPHUR_SPRINGS)) { this.entityData.set(VARIANT, (byte) 1); } diff --git a/src/main/java/org/betterx/betterend/entity/EndFishEntity.java b/src/main/java/org/betterx/betterend/entity/EndFishEntity.java index 76566aa9..6afa3ceb 100644 --- a/src/main/java/org/betterx/betterend/entity/EndFishEntity.java +++ b/src/main/java/org/betterx/betterend/entity/EndFishEntity.java @@ -59,7 +59,7 @@ public class EndFishEntity extends AbstractSchoolingFish { ) { SpawnGroupData data = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityTag); - if (BiomeAPI.getBiome(world.getBiome(blockPosition())) == EndBiomes.SULPHUR_SPRINGS) { + if (BiomeAPI.getBiome(world.getBiome(blockPosition())).equals(EndBiomes.SULPHUR_SPRINGS)) { this.entityData.set(VARIANT, (byte) (random.nextInt(VARIANTS_SULPHUR) + VARIANTS_NORMAL)); } diff --git a/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java b/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java index 8ab94993..b0743d7b 100644 --- a/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java +++ b/src/main/java/org/betterx/betterend/entity/EndSlimeEntity.java @@ -90,12 +90,12 @@ public class EndSlimeEntity extends Slime { ) { SpawnGroupData data = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityTag); BCLBiome biome = BiomeAPI.getBiome(world.getBiome(blockPosition())); - if (biome == EndBiomes.FOGGY_MUSHROOMLAND) { + if (biome.equals(EndBiomes.FOGGY_MUSHROOMLAND)) { this.setMossy(); - } else if (biome == EndBiomes.MEGALAKE || biome == EndBiomes.MEGALAKE_GROVE) { + } else if (biome.equals(EndBiomes.MEGALAKE) || biome.equals(EndBiomes.MEGALAKE_GROVE)) { this.setLake(); - } else if (biome == EndBiomes.AMBER_LAND) { - this.setAmber(true); + } else if (biome.equals(EndBiomes.AMBER_LAND)) { + this.setAmber(); } this.refreshDimensions(); return data; @@ -205,7 +205,7 @@ public class EndSlimeEntity extends Slime { return getSlimeType() == 2; } - protected void setAmber(boolean mossy) { + protected void setAmber() { this.entityData.set(VARIANT, (byte) 3); } @@ -228,10 +228,10 @@ public class EndSlimeEntity extends Slime { return false; } BCLBiome biome = BiomeAPI.getBiome(world.getBiome(pos)); - if (biome == EndBiomes.CHORUS_FOREST || biome == EndBiomes.MEGALAKE) { + if (biome.equals(EndBiomes.CHORUS_FOREST) || biome.equals(EndBiomes.MEGALAKE)) { return true; } - if (biome == EndBiomes.MEGALAKE_GROVE && random.nextBoolean()) { + if (biome.equals(EndBiomes.MEGALAKE_GROVE) && random.nextBoolean()) { return true; } return random.nextInt(4) == 0 && isWaterNear(world, pos); diff --git a/src/main/java/org/betterx/betterend/util/LootTableUtil.java b/src/main/java/org/betterx/betterend/util/LootTableUtil.java index 1fcd0861..a406844d 100644 --- a/src/main/java/org/betterx/betterend/util/LootTableUtil.java +++ b/src/main/java/org/betterx/betterend/util/LootTableUtil.java @@ -92,15 +92,15 @@ public class LootTableUtil { public static ResourceLocation getTable(Holder biome) { BCLBiome bclBiome = BiomeAPI.getBiome(biome.value()); - if (bclBiome == EndBiomes.FOGGY_MUSHROOMLAND) { + if (bclBiome.equals(EndBiomes.FOGGY_MUSHROOMLAND)) { return FOGGY_MUSHROOMLAND; - } else if (bclBiome == EndBiomes.CHORUS_FOREST) { + } else if (bclBiome.equals(EndBiomes.CHORUS_FOREST)) { return CHORUS_FOREST; - } else if (bclBiome == EndBiomes.SHADOW_FOREST) { + } else if (bclBiome.equals(EndBiomes.SHADOW_FOREST)) { return SHADOW_FOREST; - } else if (bclBiome == EndBiomes.LANTERN_WOODS) { + } else if (bclBiome.equals(EndBiomes.LANTERN_WOODS)) { return LANTERN_WOODS; - } else if (bclBiome == EndBiomes.UMBRELLA_JUNGLE) { + } else if (bclBiome.equals(EndBiomes.UMBRELLA_JUNGLE)) { return UMBRELLA_JUNGLE; } return COMMON; diff --git a/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java b/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java index 1abf83dd..9fed55d0 100644 --- a/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java +++ b/src/main/java/org/betterx/betterend/world/features/terrain/FloatingSpireFeature.java @@ -86,7 +86,7 @@ public class FloatingSpireFeature extends SpireFeature { sdf.fillRecursive(world, center); support.forEach((bpos) -> { - if (BiomeAPI.getBiome(world.getBiome(bpos)) == EndBiomes.BLOSSOMING_SPIRES) { + if (BiomeAPI.getBiome(world.getBiome(bpos)).equals(EndBiomes.BLOSSOMING_SPIRES)) { EndFeatures.TENANEA_BUSH.getFeature() .place(new FeaturePlaceContext( Optional.empty(), diff --git a/src/main/java/org/betterx/betterend/world/features/terrain/SpireFeature.java b/src/main/java/org/betterx/betterend/world/features/terrain/SpireFeature.java index f24cd178..3f67014d 100644 --- a/src/main/java/org/betterx/betterend/world/features/terrain/SpireFeature.java +++ b/src/main/java/org/betterx/betterend/world/features/terrain/SpireFeature.java @@ -86,7 +86,7 @@ public class SpireFeature extends DefaultFeature { }).fillRecursive(world, center); support.forEach((bpos) -> { - if (BiomeAPI.getBiome(world.getBiome(bpos)) == EndBiomes.BLOSSOMING_SPIRES) { + if (BiomeAPI.getBiome(world.getBiome(bpos)).equals(EndBiomes.BLOSSOMING_SPIRES)) { EndFeatures.TENANEA_BUSH.getFeature() .place(new FeaturePlaceContext( Optional.empty(), From 1992fbd988bb9591882a0623feeec1bb003b207c Mon Sep 17 00:00:00 2001 From: Necrontyr Date: Sat, 15 Oct 2022 20:33:49 +0200 Subject: [PATCH 3/4] endCityFailChance fix (another approach) --- .../betterx/betterend/mixin/common/EndCityFeatureMixin.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java b/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java index 4ae0698a..c4d4f291 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java @@ -22,11 +22,9 @@ public class EndCityFeatureMixin { Structure.GenerationContext context, CallbackInfoReturnable> info ) { - final ChunkPos pos = context.chunkPos(); - WorldgenRandom chunkRandom = new WorldgenRandom(new XoroshiroRandomSource(pos.x, pos.z)); - chunkRandom.consumeCount(1); - if (GeneratorOptions.useNewGenerator()) { + final ChunkPos pos = context.chunkPos(); + WorldgenRandom chunkRandom = new WorldgenRandom(new XoroshiroRandomSource(context.seed() * pos.x, context.seed() * pos.z)); int chance = GeneratorOptions.getEndCityFailChance(); if (chance > 0 && chunkRandom.nextInt(chance) != 0) { info.setReturnValue(Optional.empty()); From bff1d42469fae778b8ed95c964d02eed3456e713 Mon Sep 17 00:00:00 2001 From: Necrontyr Date: Sun, 16 Oct 2022 00:19:36 +0200 Subject: [PATCH 4/4] endCityFailChance fix (final approach) --- .../betterend/mixin/common/EndCityFeatureMixin.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java b/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java index c4d4f291..3f42cdae 100644 --- a/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java +++ b/src/main/java/org/betterx/betterend/mixin/common/EndCityFeatureMixin.java @@ -2,9 +2,6 @@ package org.betterx.betterend.mixin.common; import org.betterx.betterend.world.generator.GeneratorOptions; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.levelgen.WorldgenRandom; -import net.minecraft.world.level.levelgen.XoroshiroRandomSource; import net.minecraft.world.level.levelgen.structure.Structure; import net.minecraft.world.level.levelgen.structure.structures.EndCityStructure; @@ -23,10 +20,8 @@ public class EndCityFeatureMixin { CallbackInfoReturnable> info ) { if (GeneratorOptions.useNewGenerator()) { - final ChunkPos pos = context.chunkPos(); - WorldgenRandom chunkRandom = new WorldgenRandom(new XoroshiroRandomSource(context.seed() * pos.x, context.seed() * pos.z)); int chance = GeneratorOptions.getEndCityFailChance(); - if (chance > 0 && chunkRandom.nextInt(chance) != 0) { + if (chance > 0 && context.random().nextInt(chance) != 0) { info.setReturnValue(Optional.empty()); } }