Initial commit

This commit is contained in:
KäseToatz
2024-07-13 16:36:39 +02:00
parent e58f179209
commit bef08cccf1
17 changed files with 667 additions and 0 deletions

View File

@ -0,0 +1,24 @@
package com.kasetoatz.riptidehacks;
import net.fabricmc.api.ClientModInitializer;
import net.minecraft.client.MinecraftClient;
public class RiptideHacks implements ClientModInitializer {
public static MinecraftClient client;
private static long lastTridentUse = 0;
@Override
public void onInitializeClient() {
client = MinecraftClient.getInstance();
}
public static void setLastTridentUse()
{
lastTridentUse = System.currentTimeMillis();
}
public static boolean shouldAnimate()
{
return lastTridentUse > System.currentTimeMillis() - 1000;
}
}

View File

@ -0,0 +1,28 @@
package com.kasetoatz.riptidehacks.mixin;
import com.kasetoatz.riptidehacks.RiptideHacks;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.item.Items;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket;
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.CallbackInfo;
@Mixin(ClientConnection.class)
public abstract class ClientConnectionMixin {
@Inject(method="send*", at=@At("HEAD"), cancellable = true)
private void send(Packet<?> packet, CallbackInfo ci)
{
if (packet instanceof PlayerActionC2SPacket)
{
ClientPlayerEntity player = RiptideHacks.client.player;
if (player != null && player.getActiveItem().getItem() == Items.TRIDENT)
{
ci.cancel();
}
}
}
}

View File

@ -0,0 +1,16 @@
package com.kasetoatz.riptidehacks.mixin;
import net.minecraft.enchantment.EnchantmentHelper;
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;
@Mixin(EnchantmentHelper.class)
public abstract class EnchantmentHelperMixin {
@Inject(method="getTridentSpinAttackStrength", at=@At("HEAD"), cancellable = true)
private static void getTridentSpinAttackStrength(CallbackInfoReturnable<Float> cir)
{
cir.setReturnValue(3.f);
}
}

View File

@ -0,0 +1,20 @@
package com.kasetoatz.riptidehacks.mixin;
import com.kasetoatz.riptidehacks.RiptideHacks;
import net.minecraft.entity.Entity;
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;
@Mixin(Entity.class)
public abstract class EntityMixin {
@Inject(method="isTouchingWaterOrRain", at=@At("HEAD"), cancellable = true)
private void isTouchingWaterOrRain(CallbackInfoReturnable<Boolean> cir)
{
if (((Entity)(Object)this) == RiptideHacks.client.player)
{
cir.setReturnValue(true);
}
}
}

View File

@ -0,0 +1,21 @@
package com.kasetoatz.riptidehacks.mixin;
import com.kasetoatz.riptidehacks.RiptideHacks;
import net.minecraft.entity.LivingEntity;
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;
@Mixin(LivingEntity.class)
public abstract class LivingEntityMixin {
@Inject(method="isUsingRiptide", at=@At("HEAD"), cancellable = true)
private void isUsingRiptide(CallbackInfoReturnable<Boolean> cir)
{
LivingEntity entity = (LivingEntity)(Object)this;
if (RiptideHacks.shouldAnimate() && entity == RiptideHacks.client.player)
{
cir.setReturnValue(true);
}
}
}

View File

@ -0,0 +1,26 @@
package com.kasetoatz.riptidehacks.mixin;
import com.kasetoatz.riptidehacks.RiptideHacks;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.TridentItem;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.world.World;
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.CallbackInfo;
@Mixin(TridentItem.class)
public class TridentItemMixin {
@Inject(method="onStoppedUsing", at=@At("HEAD"))
private void onStoppedUsing(ItemStack stack, World world, LivingEntity user, int remainingUseTicks, CallbackInfo ci)
{
if (user == RiptideHacks.client.player && user.getItemUseTime() > 10)
{
world.playSoundFromEntity(user, SoundEvents.ITEM_TRIDENT_RIPTIDE_3.value(), SoundCategory.AMBIENT, 1.f, 1.f);
RiptideHacks.setLastTridentUse();
}
}
}