Skip to content
This repository has been archived by the owner on Mar 23, 2023. It is now read-only.

Commit

Permalink
Add sign spammer (#509)
Browse files Browse the repository at this point in the history
* add sign spammer

* remove unused imports

* sort mixins and use javadoc comment

* move javadoc above annotation
  • Loading branch information
LordMZTE authored Dec 30, 2020
1 parent 0c87a57 commit 4fac6be
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package me.zeroeightsix.kami.mixin.client;

import me.zeroeightsix.kami.feature.module.SignSpammer;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.network.Packet;
import net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket;
import net.minecraft.network.packet.s2c.play.SignEditorOpenS2CPacket;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;

@Mixin(ClientPlayNetworkHandler.class)
public abstract class MixinClientPlayNetworkHandler {
@Shadow
public abstract void sendPacket(Packet<?> packet);

@Inject(
method = "onSignEditorOpen",
at = @At(
value = "INVOKE",
target = "Lnet/minecraft/client/network/ClientPlayerEntity;openEditSignScreen(Lnet/minecraft/block/entity/SignBlockEntity;)V"
),
cancellable = true,
locals = LocalCapture.CAPTURE_FAILSOFT
)
private void onSignEditorOpen(SignEditorOpenS2CPacket packet, CallbackInfo ci, BlockEntity blockEntity) {
// this variable is just here for some deduplication
SignSpammer spammer = SignSpammer.INSTANCE;
if (spammer.getEnabled()) {
this.sendPacket(
new UpdateSignC2SPacket(
packet.getPos(),
spammer.getLine1(),
spammer.getLine2(),
spammer.getLine3(),
spammer.getLine4()
)
);
blockEntity.markDirty();
// cancel to not open edit screen
ci.cancel();
}
}
}
22 changes: 22 additions & 0 deletions src/main/kotlin/me/zeroeightsix/kami/feature/module/SignSpammer.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package me.zeroeightsix.kami.feature.module

import io.github.fablabsmc.fablabs.api.fiber.v1.annotation.Setting

/**
* @see me.zeroeightsix.kami.mixin.client.MixinClientPlayNetworkHandler
*/
@Module.Info(
name = "SignSpammer",
category = Module.Category.MISC,
description = "Automatically fills newly placed signs"
)
object SignSpammer : Module() {
@Setting
var line1 = ""
@Setting
var line2 = ""
@Setting
var line3 = ""
@Setting
var line4 = ""
}
1 change: 1 addition & 0 deletions src/main/resources/kami.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"MixinClientConnection",
"MixinClientPlayerEntity",
"MixinClientPlayerInteractionManager",
"MixinClientPlayNetworkHandler",
"MixinClientWorld",
"MixinComeCommand",
"MixinCommandSuggestor",
Expand Down

0 comments on commit 4fac6be

Please sign in to comment.