diff --git a/gradle.properties b/gradle.properties index f5d3061..0ddbc52 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ yarn_mappings=1.20.2+build.4 loader_version=0.14.24 # Mod Properties -mod_version=1.1.1 +mod_version=1.0.0 maven_group=ru.octol1ttle.knockdowns archives_base_name=knockdowns diff --git a/src/client/java/ru/octol1ttle/knockdowns/KnockdownsClient.java b/src/client/java/ru/octol1ttle/knockdowns/KnockdownsClient.java index 25ff0de..889224a 100644 --- a/src/client/java/ru/octol1ttle/knockdowns/KnockdownsClient.java +++ b/src/client/java/ru/octol1ttle/knockdowns/KnockdownsClient.java @@ -81,7 +81,7 @@ public class KnockdownsClient implements ClientModInitializer { PacketByteBuf buf = PacketByteBufs.create(); buf.writeUuid(entity.getUuid()); - ClientPlayNetworking.send(KnockdownsNetworkingConstants.C2S_REQUEST_PLAYER_KNOCKED_DOWN, PacketByteBufs.copy(buf)); + ClientPlayNetworking.send(KnockdownsNetworkingConstants.C2S_REQUEST_PLAYER_KNOCKED_DOWN, buf); ClientPlayNetworking.send(KnockdownsNetworkingConstants.C2S_REQUEST_PLAYER_REVIVING, buf); } }); diff --git a/src/main/java/ru/octol1ttle/knockdowns/Knockdowns.java b/src/main/java/ru/octol1ttle/knockdowns/Knockdowns.java index a59282c..39c228f 100644 --- a/src/main/java/ru/octol1ttle/knockdowns/Knockdowns.java +++ b/src/main/java/ru/octol1ttle/knockdowns/Knockdowns.java @@ -25,7 +25,6 @@ import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; import net.minecraft.util.TypedActionResult; -import net.minecraft.world.GameRules; import ru.octol1ttle.knockdowns.api.IKnockableDown; import ru.octol1ttle.knockdowns.network.KnockdownsNetworkingConstants; @@ -55,18 +54,13 @@ public class Knockdowns implements ModInitializer { return true; } - ServerPlayerEntity serverPlayer = (ServerPlayerEntity) entity; // TODO: timer - if (!serverPlayer.getWorld().getGameRules().getBoolean(GameRules.KEEP_INVENTORY)) { - serverPlayer.getInventory().dropAll(); - } entity.setHealth(1.0f); entity.setInvulnerable(true); entity.setGlowing(true); entity.setAir(entity.getMaxAir()); - entity.extinguish(); + entity.setFireTicks(0); entity.setFrozenTicks(0); - entity.setOnFire(false); entity.clearStatusEffects(); knockableDown.knockdowns$setKnockedDown(true); @@ -75,6 +69,8 @@ public class Knockdowns implements ModInitializer { buf.writeUuid(entity.getUuid()); buf.writeBoolean(true); + ServerPlayerEntity serverPlayer = (ServerPlayerEntity) entity; + ServerPlayNetworking.send(serverPlayer, KnockdownsNetworkingConstants.S2C_SEND_PLAYER_KNOCKED_DOWN, buf); for (ServerPlayerEntity player : PlayerLookup.tracking(entity)) { ServerPlayNetworking.send(player, KnockdownsNetworkingConstants.S2C_SEND_PLAYER_KNOCKED_DOWN, buf); diff --git a/src/main/java/ru/octol1ttle/knockdowns/mixin/PlayerEntityMixin.java b/src/main/java/ru/octol1ttle/knockdowns/mixin/PlayerEntityMixin.java index 3852bee..28a70a1 100644 --- a/src/main/java/ru/octol1ttle/knockdowns/mixin/PlayerEntityMixin.java +++ b/src/main/java/ru/octol1ttle/knockdowns/mixin/PlayerEntityMixin.java @@ -4,12 +4,9 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.ModifyReturnValue; import java.util.UUID; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.NbtCompound; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import ru.octol1ttle.knockdowns.api.IKnockableDown; @Mixin(PlayerEntity.class) @@ -18,9 +15,11 @@ public abstract class PlayerEntityMixin implements IKnockableDown { private boolean knockedDown; @Unique private boolean beingRevived; + @Unique + private int reviveAt; @ModifyExpressionValue(method = "updatePose", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;isSwimming()Z")) - private boolean enterSwimmingIfKnockedDown(boolean original) { + private boolean isKnockedDown(boolean original) { PlayerEntity player = (PlayerEntity)(Object)this; if (!(player instanceof IKnockableDown knockableDown)) { throw new IllegalStateException(); @@ -30,20 +29,10 @@ public abstract class PlayerEntityMixin implements IKnockableDown { } @ModifyReturnValue(method = "canFoodHeal", at = @At("RETURN")) - private boolean dontHealIfKnockedDown(boolean original) { + private boolean canFoodHeal(boolean original) { return original && !this.knockdowns$isKnockedDown(); } - @Inject(method = "readCustomDataFromNbt", at = @At("TAIL")) - public void readKnockedDownFromNbt(NbtCompound nbt, CallbackInfo ci) { - this.knockedDown = nbt.getBoolean("KnockedDown"); - } - - @Inject(method = "writeCustomDataToNbt", at = @At("TAIL")) - public void writeKnockedDownToNbt(NbtCompound nbt, CallbackInfo ci) { - nbt.putBoolean("KnockedDown", this.knockedDown); - } - @Override public boolean knockdowns$isKnockedDown() { return knockedDown;