diff --git a/changelog.md b/changelog.md index 05ba6a46..6fe534d1 100644 --- a/changelog.md +++ b/changelog.md @@ -1 +1,3 @@ -- changed required Majrusz Library version from 6.0.0+ to 6.1.0+ \ No newline at end of file +- changed required Majrusz Library version from 6.1.0+ to 6.1.7+ +- fixed game crash `java.lang.NullPointerException: Registry Object not present` (reported by @Note, @PlayfulPiano) +- fixed exploit with duplicating items and chests (reported by @Ladocterus, @HeavyDeception) \ No newline at end of file diff --git a/common/libs/majrusz-library-common-1.20.1-6.1.0.jar b/common/libs/majrusz-library-common-1.20.1-6.1.7.jar similarity index 78% rename from common/libs/majrusz-library-common-1.20.1-6.1.0.jar rename to common/libs/majrusz-library-common-1.20.1-6.1.7.jar index 587a6827..51b728ee 100644 Binary files a/common/libs/majrusz-library-common-1.20.1-6.1.0.jar and b/common/libs/majrusz-library-common-1.20.1-6.1.7.jar differ diff --git a/common/src/main/java/com/majruszsaccessories/MajruszsAccessories.java b/common/src/main/java/com/majruszsaccessories/MajruszsAccessories.java index ba8c059d..5f7eb32f 100644 --- a/common/src/main/java/com/majruszsaccessories/MajruszsAccessories.java +++ b/common/src/main/java/com/majruszsaccessories/MajruszsAccessories.java @@ -15,16 +15,15 @@ import com.mlib.annotation.Dist; import com.mlib.annotation.OnlyIn; import com.mlib.contexts.OnGameInitialized; -import com.mlib.contexts.OnParticlesRegistered; import com.mlib.emitter.ParticleEmitter; import com.mlib.math.Random; import com.mlib.modhelper.ModHelper; import com.mlib.network.NetworkObject; import com.mlib.platform.Services; +import com.mlib.registry.Custom; import com.mlib.registry.RegistryGroup; import com.mlib.registry.RegistryObject; import net.minecraft.core.particles.ParticleType; -import net.minecraft.core.particles.SimpleParticleType; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; @@ -114,7 +113,9 @@ private MajruszsAccessories() {} @OnlyIn( Dist.CLIENT ) public static class Client { static { - OnParticlesRegistered.listen( data->data.register( BONUS_PARTICLE.get(), BonusParticle.Factory::new ) ); + HELPER.create( Custom.Particles.class, particles->{ + particles.register( BONUS_PARTICLE.get(), BonusParticle.Factory::new ); + } ); } } } diff --git a/common/src/main/java/com/majruszsaccessories/accessories/AdventurerKit.java b/common/src/main/java/com/majruszsaccessories/accessories/AdventurerKit.java index 0668563e..d52bad50 100644 --- a/common/src/main/java/com/majruszsaccessories/accessories/AdventurerKit.java +++ b/common/src/main/java/com/majruszsaccessories/accessories/AdventurerKit.java @@ -33,7 +33,7 @@ protected AnyChestDropChance( BonusHandler< AccessoryItem > handler ) { super( handler ); MoreChestLoot.OnChestOpened.listen( this::addToGeneratedLoot ) - .addCondition( CustomConditions.dropChance( ()->this.chance, data->data.entity ) ); + .addCondition( CustomConditions.dropChance( ()->this.chance, data->MoreChestLoot.OnChestOpened.findPlayer( data ).orElse( null ) ) ); Serializable< ? > config = handler.getConfig(); config.defineFloat( "any_chest_spawn_chance", s->this.chance, ( s, v )->this.chance = Range.CHANCE.clamp( v ) ); diff --git a/common/src/main/java/com/majruszsaccessories/accessories/components/MoreChestLoot.java b/common/src/main/java/com/majruszsaccessories/accessories/components/MoreChestLoot.java index 300c217f..17ab49f2 100644 --- a/common/src/main/java/com/majruszsaccessories/accessories/components/MoreChestLoot.java +++ b/common/src/main/java/com/majruszsaccessories/accessories/components/MoreChestLoot.java @@ -18,7 +18,6 @@ import com.mlib.data.Serializable; import com.mlib.data.Serializables; import com.mlib.emitter.ParticleEmitter; -import com.mlib.level.BlockHelper; import com.mlib.level.LevelHelper; import com.mlib.math.Random; import com.mlib.math.Range; @@ -26,9 +25,7 @@ import com.mlib.text.TextHelper; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; -import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity; import java.util.Optional; import java.util.function.Consumer; @@ -47,7 +44,7 @@ protected MoreChestLoot( BonusHandler< AccessoryItem > handler, float sizeMultip this.sizeMultiplier.set( sizeMultiplier, Range.of( 0.0f, 10.0f ) ); OnChestOpened.listen( this::addExtraLoot ) - .addCondition( CustomConditions.hasAccessory( this::getItem, data->( LivingEntity )data.entity ) ); + .addCondition( CustomConditions.hasAccessory( this::getItem, data->OnChestOpened.findPlayer( data ).orElse( null ) ) ); this.addTooltip( "majruszsaccessories.bonuses.more_chest_loot", this.getPerPercentInfo(), this.getPercentInfo(), this.getCurrentInfo() ); @@ -56,7 +53,7 @@ protected MoreChestLoot( BonusHandler< AccessoryItem > handler, float sizeMultip } private void addExtraLoot( OnLootGenerated data ) { - ServerPlayer player = ( ServerPlayer )data.entity; + ServerPlayer player = OnChestOpened.findPlayer( data ).orElseThrow(); float sizeMultiplier = 1.0f + CustomConditions.getLastHolder().apply( this.sizeMultiplier ) * MoreChestLoot.getDistanceBonus( player ); boolean hasIncreasedLoot = false; for( ItemStack itemStack : data.generatedLoot ) { @@ -102,13 +99,19 @@ public static class OnChestOpened { public static Context< OnLootGenerated > listen( Consumer< OnLootGenerated > consumer ) { return OnLootGenerated.listen( consumer ) .addCondition( Condition.isLogicalServer() ) - .addCondition( Condition.hasLevel() ) - .addCondition( data->data.origin != null ) - .addCondition( data->data.entity instanceof ServerPlayer ) - .addCondition( data->{ - return BlockHelper.getEntity( data.getLevel(), data.origin ) instanceof RandomizableContainerBlockEntity - || data.lootId.toString().contains( "chest" ); - } ); + .addCondition( data->data.lootId.toString().contains( "chests/" ) ); + } + + public static Optional< ServerPlayer > findPlayer( OnLootGenerated data ) { + if( data.entity instanceof ServerPlayer player ) { + return Optional.of( player ); + } + + if( data.origin != null && data.level.getNearestPlayer( data.origin.x, data.origin.y, data.origin.z, 5.0f, true ) instanceof ServerPlayer player ) { + return Optional.of( player ); + } + + return Optional.empty(); } } diff --git a/fabric/libs/majrusz-library-fabric-1.20.1-6.1.0.jar b/fabric/libs/majrusz-library-fabric-1.20.1-6.1.7.jar similarity index 79% rename from fabric/libs/majrusz-library-fabric-1.20.1-6.1.0.jar rename to fabric/libs/majrusz-library-fabric-1.20.1-6.1.7.jar index d79ac8bf..3f548cb8 100644 Binary files a/fabric/libs/majrusz-library-fabric-1.20.1-6.1.0.jar and b/fabric/libs/majrusz-library-fabric-1.20.1-6.1.7.jar differ diff --git a/forge/libs/majrusz-library-forge-1.20.1-6.1.0.jar b/forge/libs/majrusz-library-forge-1.20.1-6.1.7.jar similarity index 75% rename from forge/libs/majrusz-library-forge-1.20.1-6.1.0.jar rename to forge/libs/majrusz-library-forge-1.20.1-6.1.7.jar index 85625943..7515b112 100644 Binary files a/forge/libs/majrusz-library-forge-1.20.1-6.1.0.jar and b/forge/libs/majrusz-library-forge-1.20.1-6.1.7.jar differ diff --git a/gradle.properties b/gradle.properties index 78e09442..c693ade7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ minecraft_version_range=[1.20.1,) # Mod mod_id=majruszsaccessories mod_archives_name=majruszs-accessories -mod_version=1.3.2 +mod_version=1.3.3 mod_display_name=Majrusz's Accessories mod_description=Mod that adds new special accessories to make certain aspects of the game more enjoyable. mod_authors=Majrusz @@ -23,7 +23,7 @@ mod_logo=logo.png forge_version=1.20.1-47.1.0 forge_version_loader=[47,) forge_version_range=[47.1,) -forge_mlib_version_range=[6.1.0,7.0.0) +forge_mlib_version_range=[6.1.7,7.0.0) forge_curios_version=5.2.0-beta.3+1.20.1 forge_curios_version_range=[5.2.0-beta.3+1.20.1,) @@ -31,19 +31,19 @@ forge_curios_version_range=[5.2.0-beta.3+1.20.1,) neoforge_version=1.20.1-47.1.76 neoforge_version_loader=[47,) neoforge_version_range=1.20.1-47.1.76 -neoforge_mlib_version_range=[6.1.0,7.0.0) +neoforge_mlib_version_range=[6.1.7,7.0.0) neoforge_curios_version=5.2.0-beta.3+1.20.1 neoforge_curios_version_range=[5.2.0-beta.3+1.20.1,) # Fabric fabric_loader_version=0.14.22 fabric_api_version=0.89.0+1.20.1 -fabric_mlib_version_range=>=6.1.0 +fabric_mlib_version_range=>=6.1.7 fabric_trinkets_version=3.7.0 fabric_cca_version=5.2.0 # Majrusz Library -mlib_version=1.20.1-6.1.0 +mlib_version=1.20.1-6.1.7 # Publishing modrinth_project_id=6roN0iTa diff --git a/neoforge/libs/majrusz-library-neoforge-1.20.1-6.1.0.jar b/neoforge/libs/majrusz-library-neoforge-1.20.1-6.1.7.jar similarity index 75% rename from neoforge/libs/majrusz-library-neoforge-1.20.1-6.1.0.jar rename to neoforge/libs/majrusz-library-neoforge-1.20.1-6.1.7.jar index ecfe0d94..b0b0bd9e 100644 Binary files a/neoforge/libs/majrusz-library-neoforge-1.20.1-6.1.0.jar and b/neoforge/libs/majrusz-library-neoforge-1.20.1-6.1.7.jar differ