From a3471e7a390505ddddf3dec4c2e4e2c84c4e9e7d Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Wed, 20 Mar 2024 19:04:49 +0500 Subject: [PATCH 1/5] 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/5] 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/5] 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/5] 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 From 92ce91d05d6b133e4fd8bdcf823317e25030bae0 Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Thu, 18 Jan 2024 19:52:22 +0500 Subject: [PATCH 5/5] 1.19.2 --- build.gradle | 2 +- .../octol1ttle/knockdowns/common/KnockdownsUtils.java | 3 ++- .../common/events/KnockdownsClientEvents.java | 10 +++++----- .../knockdowns/common/events/KnockdownsEvents.java | 2 +- .../knockdowns/common/network/KnockdownsNetwork.java | 2 +- .../common/registries/KnockdownsSoundEvents.java | 6 +++--- fabric/src/main/resources/fabric.mod.json | 4 ++-- forge/src/main/resources/META-INF/mods.toml | 8 ++++---- gradle.properties | 8 ++++---- 9 files changed, 23 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index df015f7..9381573 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ subprojects { dependencies { minecraft "com.mojang:minecraft:${rootProject.minecraft_version}" // The following line declares the yarn mappings you may select this one as well. - mappings "net.fabricmc:yarn:1.20.1+build.10:v2" + mappings "net.fabricmc:yarn:1.19.2+build.28:v2" } } diff --git a/common/src/main/java/ru/octol1ttle/knockdowns/common/KnockdownsUtils.java b/common/src/main/java/ru/octol1ttle/knockdowns/common/KnockdownsUtils.java index 4d256fd..c4f0fa5 100644 --- a/common/src/main/java/ru/octol1ttle/knockdowns/common/KnockdownsUtils.java +++ b/common/src/main/java/ru/octol1ttle/knockdowns/common/KnockdownsUtils.java @@ -1,5 +1,6 @@ package ru.octol1ttle.knockdowns.common; +import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.server.MinecraftServer; import ru.octol1ttle.knockdowns.common.api.IKnockableDown; @@ -25,7 +26,7 @@ public class KnockdownsUtils { public static void hurtTenacity(PlayerEntity player, float damage) { player.setInvulnerable(false); //DamageSource recent = player.getRecentDamageSource(); - player.damage(/*Objects.requireNonNullElse(recent, */player.getDamageSources().generic()/*)*/, damage); + player.damage(/*Objects.requireNonNullElse(recent, */DamageSource.GENERIC/*)*/, damage); player.velocityModified = false; } diff --git a/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsClientEvents.java b/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsClientEvents.java index 47ec31d..bd314da 100644 --- a/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsClientEvents.java +++ b/common/src/main/java/ru/octol1ttle/knockdowns/common/events/KnockdownsClientEvents.java @@ -14,7 +14,7 @@ public class KnockdownsClientEvents { } private static void registerOnHudRender() { - ClientGuiEvent.RENDER_HUD.register((drawContext, tickDelta) -> { + ClientGuiEvent.RENDER_HUD.register((matrices, tickDelta) -> { IKnockableDown reviving = (IKnockableDown) KnockdownsClient.reviving; MinecraftClient client = MinecraftClient.getInstance(); if (reviving == null) { @@ -27,17 +27,17 @@ public class KnockdownsClientEvents { TextRenderer renderer = client.textRenderer; String timerText = String.format("%.1f", reviving.get_ReviveTimer() / (float) SharedConstants.TICKS_PER_SECOND); - int timerX = (drawContext.getScaledWindowWidth() - renderer.getWidth(timerText)) / 2; + int timerX = (client.getWindow().getScaledWidth() - renderer.getWidth(timerText)) / 2; int reviverCount = reviving.get_ReviverCount(); Integer color = reviverCount > 1 ? Formatting.GREEN.getColorValue() : Formatting.WHITE.getColorValue(); String reviverCountText = "x" + reviverCount; - int reviveCountX = (drawContext.getScaledWindowWidth() - renderer.getWidth(reviverCountText)) / 2; + int reviveCountX = (client.getWindow().getScaledWidth() - renderer.getWidth(reviverCountText)) / 2; if (color != null) { - drawContext.drawTextWithShadow(renderer, timerText, timerX, drawContext.getScaledWindowHeight() / 2 + 5, color); - drawContext.drawTextWithShadow(renderer, reviverCountText, reviveCountX, drawContext.getScaledWindowHeight() / 2 + 14, color); + renderer.drawWithShadow(matrices, timerText, timerX, client.getWindow().getScaledHeight() / 2.0f + 5, color); + renderer.drawWithShadow(matrices, reviverCountText, reviveCountX, client.getWindow().getScaledHeight() / 2.0f + 14, color); } }); } 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 06748e2..931d381 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 @@ -62,7 +62,7 @@ public class KnockdownsEvents { knockable.set_ReviveTimer(KnockdownsCommon.REVIVE_WAIT_TIME); knockable.set_KnockedAge(0); - KnockdownsNetwork.sendToWorld(player.getServerWorld(), new PlayKnockedDownSoundS2CPacket(player.getX(), player.getY(), player.getZ())); + KnockdownsNetwork.sendToWorld(player.getWorld(), new PlayKnockedDownSoundS2CPacket(player.getX(), player.getY(), player.getZ())); Text deathMessage = entity.getDamageTracker().getDeathMessage(); TranslatableTextContent deathContent = (TranslatableTextContent) deathMessage.getContent(); diff --git a/common/src/main/java/ru/octol1ttle/knockdowns/common/network/KnockdownsNetwork.java b/common/src/main/java/ru/octol1ttle/knockdowns/common/network/KnockdownsNetwork.java index 8544efb..6132466 100644 --- a/common/src/main/java/ru/octol1ttle/knockdowns/common/network/KnockdownsNetwork.java +++ b/common/src/main/java/ru/octol1ttle/knockdowns/common/network/KnockdownsNetwork.java @@ -3,7 +3,7 @@ package ru.octol1ttle.knockdowns.common.network; import dev.architectury.networking.NetworkChannel; import dev.architectury.networking.NetworkManager; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.network.packet.Packet; +import net.minecraft.network.Packet; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; diff --git a/common/src/main/java/ru/octol1ttle/knockdowns/common/registries/KnockdownsSoundEvents.java b/common/src/main/java/ru/octol1ttle/knockdowns/common/registries/KnockdownsSoundEvents.java index a207925..b8231f0 100644 --- a/common/src/main/java/ru/octol1ttle/knockdowns/common/registries/KnockdownsSoundEvents.java +++ b/common/src/main/java/ru/octol1ttle/knockdowns/common/registries/KnockdownsSoundEvents.java @@ -2,15 +2,15 @@ package ru.octol1ttle.knockdowns.common.registries; import dev.architectury.registry.registries.DeferredRegister; import dev.architectury.registry.registries.RegistrySupplier; -import net.minecraft.registry.RegistryKeys; import net.minecraft.sound.SoundEvent; import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; import ru.octol1ttle.knockdowns.common.KnockdownsCommon; public class KnockdownsSoundEvents { - private static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(KnockdownsCommon.MOD_ID, RegistryKeys.SOUND_EVENT); + private static final DeferredRegister SOUND_EVENTS = DeferredRegister.create(KnockdownsCommon.MOD_ID, Registry.SOUND_EVENT_KEY); public static final RegistrySupplier KNOCKED_DOWN = SOUND_EVENTS.register(KnockdownsCommon.MOD_ID, - () -> SoundEvent.of(new Identifier(KnockdownsCommon.MOD_ID, "knocked_down"))); + () -> new SoundEvent(new Identifier(KnockdownsCommon.MOD_ID, "knocked_down"))); public static void register() { SOUND_EVENTS.register(); diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 48aa342..498821e 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -27,7 +27,7 @@ ], "depends": { "fabric": "*", - "minecraft": ">=1.20.1", - "architectury": ">=9.1.12" + "minecraft": "1.19.*", + "architectury": ">=6.5.85" } } \ No newline at end of file diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index 9e1ece6..7573bcc 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -1,5 +1,5 @@ modLoader = "javafml" -loaderVersion = "[47,)" +loaderVersion = "[43,)" #issueTrackerURL = "" license = "ARR" @@ -16,20 +16,20 @@ DBNO mechanic from Fortnite, ported to Minecraft [[dependencies.knockdowns]] modId = "forge" mandatory = true -versionRange = "[47,)" +versionRange = "[43,)" ordering = "NONE" side = "BOTH" [[dependencies.knockdowns]] modId = "minecraft" mandatory = true -versionRange = "[1.20.1,)" +versionRange = "[1.19.2,1.20)" ordering = "NONE" side = "BOTH" [[dependencies.knockdowns]] modId = "architectury" mandatory = true -versionRange = "[9.1.12,)" +versionRange = "[6.5.85,)" ordering = "AFTER" side = "BOTH" \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 822bf00..3b4b6f1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,17 +1,17 @@ org.gradle.jvmargs=-Xmx2048M -minecraft_version=1.20.1 +minecraft_version=1.19.2 enabled_platforms=fabric,forge archives_base_name=knockdowns mod_version=2.2.2 maven_group=ru.octol1ttle.knockdowns -architectury_version=9.1.12 -fabric_api_version=0.90.4+1.20.1 +architectury_version=6.5.85 +fabric_api_version=0.77.0+1.19.2 fabric_loader_version=0.15.5 -forge_version=1.20.1-47.2.0 +forge_version=1.19.2-43.3.0