diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29..eda2e04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1,2 @@ +- updated to 1.21.5 +- fixed incorrect knockback calculations diff --git a/build.gradle b/build.gradle index 9359844..e6a4207 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,9 @@ plugins { id 'idea' id 'maven-publish' - id 'me.modmuss50.mod-publish-plugin' version '0.7.4' apply false - id 'net.neoforged.moddev' version '2.0.34-beta' apply false + id 'fabric-loom' version '1.11-SNAPSHOT' apply false + id 'me.modmuss50.mod-publish-plugin' version '1.0.0' apply false + id 'net.neoforged.moddev' version '2.0.112' apply false } version = "${project.mod_version}+mc${project.minecraft_version}" diff --git a/common/build.gradle b/common/build.gradle index 75311f5..379c267 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -2,6 +2,14 @@ plugins { id 'net.neoforged.moddev' } +neoForge.neoFormVersion = project.neoform_version + +configurations.configureEach { + resolutionStrategy { + force 'org.ow2.asm:asm:9.8' + } +} + dependencies { compileOnly("org.jetbrains:annotations:${project.jetbrains_annotations_version}") compileOnly("net.fabricmc:sponge-mixin:${project.mixin_version}") @@ -12,8 +20,6 @@ dependencies { } neoForge { - neoFormVersion = project.neoform_version - parchment { minecraftVersion = project.parchment_minecraft_version mappingsVersion = project.parchment_mappings_version diff --git a/common/src/main/java/dev/rosebud/ramel/mixin/CamelEntityMixin.java b/common/src/main/java/dev/rosebud/ramel/mixin/CamelEntityMixin.java index d3fd0b7..d721994 100644 --- a/common/src/main/java/dev/rosebud/ramel/mixin/CamelEntityMixin.java +++ b/common/src/main/java/dev/rosebud/ramel/mixin/CamelEntityMixin.java @@ -3,6 +3,7 @@ import com.google.common.base.MoreObjects; import dev.rosebud.ramel.Config; import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.Mth; @@ -12,6 +13,7 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.animal.camel.Camel; +import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -36,8 +38,10 @@ private CamelEntityMixin(EntityType entityType, Level level) { return; } - int speedEffectModifier = this.hasEffect(MobEffects.MOVEMENT_SPEED) ? Objects.requireNonNull(this.getEffect(MobEffects.MOVEMENT_SPEED)).getAmplifier() + 1 : 0; - int slowEffectModifier = this.hasEffect(MobEffects.MOVEMENT_SLOWDOWN) ? Objects.requireNonNull(this.getEffect(MobEffects.MOVEMENT_SLOWDOWN)).getAmplifier() + 1 : 0; + ServerLevel level = (ServerLevel) this.level(); + + int speedEffectModifier = this.hasEffect(MobEffects.SPEED) ? Objects.requireNonNull(this.getEffect(MobEffects.SPEED)).getAmplifier() + 1 : 0; + int slowEffectModifier = this.hasEffect(MobEffects.SLOWNESS) ? Objects.requireNonNull(this.getEffect(MobEffects.SLOWNESS)).getAmplifier() + 1 : 0; double speedAdjustedImpact = Mth.clamp(this.getSpeed() * 1.65, .2, 3.0) + .25 * (speedEffectModifier - slowEffectModifier); float rammingRange = Config.INSTANCE.additionalRammingRange.value() * (isBaby() ? 0.5F : 1.0F); @@ -46,17 +50,20 @@ private CamelEntityMixin(EntityType entityType, Level level) { DamageSource source = this.damageSources().mobAttack(MoreObjects.firstNonNull(this.getControllingPassenger(), this)); - this.level().getEntities(this, this.getBoundingBox().inflate(rammingRange), Entity::isAlive).stream() + level.getEntities(this, this.getBoundingBox().inflate(rammingRange), Entity::isAlive).stream() .filter(e -> e instanceof LivingEntity && !this.getPassengers().contains(e)) .forEach(e -> { LivingEntity entity = (LivingEntity) e; + if (entity.hurtServer(level, source, rammingDamage)) { + EnchantmentHelper.doPostAttackEffects(level, entity, source); + } + entity.playSound(SoundEvents.PLAYER_ATTACK_KNOCKBACK); - entity.hurt(source, rammingDamage); - final double blockedImpact = entity.isDamageSourceBlocked(source) ? .5 : 1.0; + final double blockedImpact = entity.applyItemBlocking(level, source, rammingDamage) > 0.0 ? .5 : 1.0; entity.knockback(blockedImpact * speedAdjustedImpact * knockBackMultiplier, - Mth.sin(this.getXRot() * (Mth.PI / 180.0F)), -Mth.cos(this.getXRot() * (Mth.PI / 180.0F))); + Mth.sin(this.getYRot() * Mth.PI / 180.0F), -Mth.cos(this.getYRot() * Mth.PI / 180.0F)); if (entity instanceof ServerPlayer player) { // The player won't feel any effects if we don't update the velocity player.connection.send(new ClientboundSetEntityMotionPacket(player)); diff --git a/fabric/build.gradle b/fabric/build.gradle index cbc49dc..3b32ca5 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.7-SNAPSHOT' + id 'fabric-loom' id 'me.modmuss50.mod-publish-plugin' } def platformName = "Fabric" diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 464e3d0..422aaea 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -30,7 +30,7 @@ "depends": { "fabricloader": ">=0.15.11", - "minecraft": ">=1.21" + "minecraft": ">=1.21.5" }, "custom": { diff --git a/gradle.properties b/gradle.properties index f1ae039..10b2731 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,26 +1,26 @@ # Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx2G +org.gradle.jvmargs=-Xmx3G # common -minecraft_version=1.21.4 +minecraft_version=1.21.9 # https://parchmentmc.org/docs/getting-started -parchment_minecraft_version=1.21.4 -parchment_mappings_version=2025.03.23 +parchment_minecraft_version=1.21.8 +parchment_mappings_version=2025.09.14 # https://projects.neoforged.net/neoforged/neoform -neoform_version=1.21.4-20241203.161809 -mixin_version=0.15.2+mixin.0.8.7 -mixin_extras_version=0.4.1 -jetbrains_annotations_version=25.0.0 +neoform_version=1.21.9-20250930.151910 +mixin_version=0.16.3+mixin.0.8.7 +mixin_extras_version=0.5.0 +jetbrains_annotations_version=26.0.2-1 # fabric # https://fabricmc.net/develop -fabric_loader_version=0.16.9 -fabric_version=0.119.2+1.21.4 -modmenu_version=13.0.3 +fabric_loader_version=0.17.2 +fabric_version=0.134.0+1.21.9 +modmenu_version=16.0.0-rc.1 # neoforge # https://projects.neoforged.net/neoforged/neoforge -neoforge_version=21.4.118-beta +neoforge_version=21.9.11-beta # other kaleido_config_version=0.3.3+1.3.2 @@ -35,7 +35,7 @@ issue_tracker_url=https://github.com/rosebudmods/ramel/issues discord_url=https://discord.gg/TN9gaXJ6E8 # publishing -mod_version=1.2.2 +mod_version=1.2.3 pub.should_publish=true pub.additional_versions= pub.curseforge_id=877074 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..8bdaf60 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index df97d72..2e11132 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6..adff685 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9d21a21..c4bdd3a 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/neoforge/build.gradle b/neoforge/build.gradle index 53c0020..59b2e99 100644 --- a/neoforge/build.gradle +++ b/neoforge/build.gradle @@ -5,10 +5,11 @@ plugins { def platformName = "NeoForge" +neoForge.version = project.neoforge_version + dependencies { compileOnly(project(':common')) implementation("folk.sisby:kaleido-config:${project.kaleido_config_version}") - additionalRuntimeClasspath("folk.sisby:kaleido-config:${project.kaleido_config_version}") // needed because kaleido does not have a neoforge.mods.toml file jarJar("folk.sisby:kaleido-config:${project.kaleido_config_version}") { version { strictly "[${project.kaleido_config_version},)" @@ -51,8 +52,6 @@ publishMods { } neoForge { - version = project.neoforge_version - parchment { minecraftVersion = project.parchment_minecraft_version mappingsVersion = project.parchment_mappings_version diff --git a/neoforge/src/main/java/dev/rosebud/ramel/neoforge/RamelNeoForge.java b/neoforge/src/main/java/dev/rosebud/ramel/neoforge/RamelNeoForge.java index 71e2f16..dbb3c44 100644 --- a/neoforge/src/main/java/dev/rosebud/ramel/neoforge/RamelNeoForge.java +++ b/neoforge/src/main/java/dev/rosebud/ramel/neoforge/RamelNeoForge.java @@ -11,7 +11,7 @@ public class RamelNeoForge { public RamelNeoForge(ModContainer modContainer, IEventBus modEventBus) { - if(FMLEnvironment.dist.isClient()) { + if(FMLEnvironment.getDist().isClient()) { RamelNeoForgeClient.init(modContainer); } } diff --git a/neoforge/src/main/java/dev/rosebud/ramel/neoforge/client/RamelNeoForgeClient.java b/neoforge/src/main/java/dev/rosebud/ramel/neoforge/client/RamelNeoForgeClient.java index cfdfb3d..2f0cfbc 100644 --- a/neoforge/src/main/java/dev/rosebud/ramel/neoforge/client/RamelNeoForgeClient.java +++ b/neoforge/src/main/java/dev/rosebud/ramel/neoforge/client/RamelNeoForgeClient.java @@ -1,12 +1,9 @@ package dev.rosebud.ramel.neoforge.client; import dev.rosebud.ramel.client.RamelConfigScreen; -import net.neoforged.api.distmarker.Dist; -import net.neoforged.api.distmarker.OnlyIn; import net.neoforged.fml.ModContainer; import net.neoforged.neoforge.client.gui.IConfigScreenFactory; -@OnlyIn(Dist.CLIENT) public class RamelNeoForgeClient { public static void init(ModContainer modContainer) { diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index 60b4265..2934b6a 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -21,7 +21,7 @@ config = "${mod_id}.mixins.json" [dependencies] "${mod_id}" = [ { modId = "neoforge", type = "required", versionRange = "*", ordering = "NONE", side = "BOTH" }, - { modId = "minecraft", type = "required", versionRange = "[1.21,)", ordering = "NONE", side = "BOTH" }, + { modId = "minecraft", type = "required", versionRange = "[1.21.5,)", ordering = "NONE", side = "BOTH" }, ] # Features are specific properties of the game environment, that you may want to declare you require. This example declares diff --git a/settings.gradle b/settings.gradle index 88b138d..7d0065c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,7 +12,7 @@ pluginManagement { } plugins { - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' + id 'org.gradle.toolchains.foojay-resolver-convention' version '1.0.0' } rootProject.name = 'ramel'