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/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..99d194d 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.7-SNAPSHOT' + id 'fabric-loom' version '1.10-SNAPSHOT' 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..775971b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,25 +2,25 @@ org.gradle.jvmargs=-Xmx2G # common -minecraft_version=1.21.4 +minecraft_version=1.21.5 # https://parchmentmc.org/docs/getting-started -parchment_minecraft_version=1.21.4 -parchment_mappings_version=2025.03.23 +parchment_minecraft_version=1.21.5 +parchment_mappings_version=2025.06.15 # https://projects.neoforged.net/neoforged/neoform -neoform_version=1.21.4-20241203.161809 +neoform_version=1.21.5-20250325.162830 mixin_version=0.15.2+mixin.0.8.7 mixin_extras_version=0.4.1 jetbrains_annotations_version=25.0.0 # 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.16.14 +fabric_version=0.127.1+1.21.5 +modmenu_version=14.0.0-rc.2 # neoforge # https://projects.neoforged.net/neoforged/neoforge -neoforge_version=21.4.118-beta +neoforge_version=21.5.78 # other kaleido_config_version=0.3.3+1.3.2 @@ -35,9 +35,9 @@ 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.additional_versions=1.21.6 pub.curseforge_id=877074 pub.modrinth_id=4Uw92C2y github_repository=rosebudmods/ramel diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..1b33c55 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..cea7a79 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-8.12-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6..23d15a9 100755 --- a/gradlew +++ b/gradlew @@ -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,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -206,7 +205,7 @@ 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. @@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 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..db3a6ac 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar +set CLASSPATH= @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%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell 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