Initial commit
This commit is contained in:
24
src/main/java/com/kasetoatz/riptidehacks/RiptideHacks.java
Normal file
24
src/main/java/com/kasetoatz/riptidehacks/RiptideHacks.java
Normal 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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
27
src/main/resources/fabric.mod.json
Normal file
27
src/main/resources/fabric.mod.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "riptidehacks",
|
||||
"version": "${version}",
|
||||
"name": "RiptideHacks",
|
||||
"description": "",
|
||||
"authors": [],
|
||||
"contact": {
|
||||
"repo": "https://github.com/KaseToatz1337/RiptideHacks"
|
||||
},
|
||||
"license": "MIT",
|
||||
"environment": "*",
|
||||
"entrypoints": {
|
||||
"client": [
|
||||
"com.kasetoatz.riptidehacks.RiptideHacks"
|
||||
],
|
||||
"main": []
|
||||
},
|
||||
"mixins": [
|
||||
"riptidehacks.mixins.json"
|
||||
],
|
||||
"depends": {
|
||||
"fabricloader": ">=${loader_version}",
|
||||
"fabric": "*",
|
||||
"minecraft": "${minecraft_version}"
|
||||
}
|
||||
}
|
17
src/main/resources/riptidehacks.mixins.json
Normal file
17
src/main/resources/riptidehacks.mixins.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"required": true,
|
||||
"minVersion": "0.8",
|
||||
"package": "com.kasetoatz.riptidehacks.mixin",
|
||||
"compatibilityLevel": "JAVA_21",
|
||||
"mixins": [],
|
||||
"client": [
|
||||
"EnchantmentHelperMixin",
|
||||
"EntityMixin",
|
||||
"LivingEntityMixin",
|
||||
"TridentItemMixin",
|
||||
"ClientConnectionMixin"
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user