From a3471e7a390505ddddf3dec4c2e4e2c84c4e9e7d Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Wed, 20 Mar 2024 19:04:49 +0500 Subject: [PATCH 1/4] fix: reset knocked state when activating Totem of Undying --- .../knockdowns/common/mixin/LivingEntityMixin.java | 12 ++++++++++++ gradle.properties | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/ru/octol1ttle/knockdowns/common/mixin/LivingEntityMixin.java b/common/src/main/java/ru/octol1ttle/knockdowns/common/mixin/LivingEntityMixin.java index 369a8b4..afd6eb4 100644 --- a/common/src/main/java/ru/octol1ttle/knockdowns/common/mixin/LivingEntityMixin.java +++ b/common/src/main/java/ru/octol1ttle/knockdowns/common/mixin/LivingEntityMixin.java @@ -2,8 +2,12 @@ package ru.octol1ttle.knockdowns.common.mixin; import com.llamalad7.mixinextras.injector.ModifyReturnValue; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.damage.DamageSource; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.octol1ttle.knockdowns.common.KnockdownsUtils; import ru.octol1ttle.knockdowns.common.api.IKnockableDown; @Mixin(LivingEntity.class) @@ -12,4 +16,12 @@ public abstract class LivingEntityMixin { private boolean dontTargetKnockedPlayers(boolean original, LivingEntity target) { return original && !(target instanceof IKnockableDown knockable && knockable.is_KnockedDown()); } + + @Inject(method = "tryUseTotem", at = @At("RETURN")) + private void resetKnockedDownOnTotemUse(DamageSource source, CallbackInfoReturnable cir) { + LivingEntity $this = (LivingEntity) (Object) this; + if (cir.getReturnValue() && $this instanceof IKnockableDown knockable && knockable.is_KnockedDown()) { + KnockdownsUtils.resetKnockedState(knockable); + } + } } diff --git a/gradle.properties b/gradle.properties index ed344f3..6d54409 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ minecraft_version=1.20.1 enabled_platforms=fabric,forge archives_base_name=knockdowns -mod_version=2.2.0 +mod_version=2.2.1 maven_group=ru.octol1ttle.knockdowns architectury_version=9.1.12 From b182a3575031b7121f63104e9804c23023258799 Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Wed, 20 Mar 2024 19:50:49 +0500 Subject: [PATCH 2/4] chore: remove unnecessary Mixin files --- fabric/src/main/resources/fabric.mod.json | 1 - fabric/src/main/resources/knockdowns.mixins.json | 13 ------------- forge/build.gradle | 1 - forge/src/main/resources/knockdowns.mixins.json | 13 ------------- 4 files changed, 28 deletions(-) delete mode 100644 fabric/src/main/resources/knockdowns.mixins.json delete mode 100644 forge/src/main/resources/knockdowns.mixins.json diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 5e30f2e..48aa342 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -23,7 +23,6 @@ ] }, "mixins": [ - "knockdowns.mixins.json", "knockdowns-common.mixins.json" ], "depends": { diff --git a/fabric/src/main/resources/knockdowns.mixins.json b/fabric/src/main/resources/knockdowns.mixins.json deleted file mode 100644 index 76a92ed..0000000 --- a/fabric/src/main/resources/knockdowns.mixins.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "required": true, - "package": "ru.octol1ttle.knockdowns.fabric.mixin", - "compatibilityLevel": "JAVA_17", - "minVersion": "0.8", - "client": [ - ], - "mixins": [ - ], - "injectors": { - "defaultRequire": 1 - } -} \ No newline at end of file diff --git a/forge/build.gradle b/forge/build.gradle index 490b2f1..5fd4535 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -15,7 +15,6 @@ loom { extraAccessWideners.add loom.accessWidenerPath.get().asFile.name mixinConfig "knockdowns-common.mixins.json" - mixinConfig "knockdowns.mixins.json" } } diff --git a/forge/src/main/resources/knockdowns.mixins.json b/forge/src/main/resources/knockdowns.mixins.json deleted file mode 100644 index bc08964..0000000 --- a/forge/src/main/resources/knockdowns.mixins.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "required": true, - "package": "ru.octol1ttle.knockdowns.forge.mixin", - "compatibilityLevel": "JAVA_17", - "minVersion": "0.8", - "client": [ - ], - "mixins": [ - ], - "injectors": { - "defaultRequire": 1 - } -} \ No newline at end of file From f4d2174fba53a36f1f0a4682d9ec679f9de802ee Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Wed, 20 Mar 2024 19:51:02 +0500 Subject: [PATCH 3/4] change: don't allow knocked players to place blocks --- .../knockdowns/common/events/KnockdownsEvents.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsEvents.java b/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsEvents.java index ac6ce61..06748e2 100644 --- a/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsEvents.java +++ b/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsEvents.java @@ -2,11 +2,13 @@ package ru.octol1ttle.knockdowns.common.events; import dev.architectury.event.CompoundEventResult; import dev.architectury.event.EventResult; +import dev.architectury.event.events.common.BlockEvent; import dev.architectury.event.events.common.EntityEvent; import dev.architectury.event.events.common.InteractionEvent; import dev.architectury.event.events.common.PlayerEvent; import dev.architectury.event.events.common.TickEvent; import net.minecraft.SharedConstants; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; @@ -126,6 +128,12 @@ public class KnockdownsEvents { } return EventResult.pass(); }); + BlockEvent.PLACE.register((level, pos, state, placer) -> { + if (placer instanceof PlayerEntity player && KnockdownsUtils.isKnockedOrReviving(player)) { + return EventResult.interruptFalse(); + } + return EventResult.pass(); + }); InteractionEvent.RIGHT_CLICK_ITEM.register((player, hand) -> { if (KnockdownsUtils.isKnockedOrReviving(player)) { return CompoundEventResult.interruptFalse(hand == Hand.MAIN_HAND ? player.getMainHandStack() : player.getOffHandStack()); From 2e288d073875b80203c77895787ff93a815fcbbb Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Wed, 20 Mar 2024 19:51:18 +0500 Subject: [PATCH 4/4] chore: bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 6d54409..822bf00 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ minecraft_version=1.20.1 enabled_platforms=fabric,forge archives_base_name=knockdowns -mod_version=2.2.1 +mod_version=2.2.2 maven_group=ru.octol1ttle.knockdowns architectury_version=9.1.12