Skip to content

Commit 086cd48

Browse files
committed
RocketExtend module
1 parent 8f7db1b commit 086cd48

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.lambda.module.modules.movement
2+
3+
import com.lambda.event.events.PacketEvent
4+
import com.lambda.event.listener.SafeListener.Companion.listener
5+
import com.lambda.module.Module
6+
import com.lambda.module.tag.ModuleTag
7+
import com.lambda.threading.runSafe
8+
import com.lambda.util.Communication.info
9+
import net.minecraft.entity.projectile.FireworkRocketEntity
10+
import net.minecraft.network.packet.c2s.common.CommonPongC2SPacket
11+
import net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket
12+
import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket
13+
14+
object RocketExtend : Module(
15+
name = "RocketExtend",
16+
description = "Extends rocket length on grim",
17+
defaultTags = setOf(ModuleTag.MOVEMENT)
18+
) {
19+
var extendedRockets: MutableList<FireworkRocketEntity> = mutableListOf();
20+
var pingPacket: CommonPongC2SPacket? = null;
21+
init {
22+
onDisable {
23+
if (extendedRockets.isNotEmpty()) reset()
24+
}
25+
listener<PacketEvent.Receive.Pre> { event ->
26+
when (event.packet) {
27+
is EntitiesDestroyS2CPacket -> {
28+
val rockets = event.packet.entityIds.map { id ->
29+
world.getEntityById(id)
30+
}.filter { entity ->
31+
entity is FireworkRocketEntity && entity.shooter?.equals(this.player) == true
32+
}.filterNotNull().map {it as FireworkRocketEntity}
33+
34+
if (rockets.isEmpty()) return@listener
35+
extendedRockets.addAll(rockets)
36+
event.packet.entityIds.removeAll(rockets.map { it.id }.toSet())
37+
38+
this@RocketExtend.info("RocketExtend triggered")
39+
}
40+
is PlayerPositionLookS2CPacket -> {
41+
if(extendedRockets.isNotEmpty()) reset()
42+
}
43+
}
44+
}
45+
listener<PacketEvent.Send.Pre> { event ->
46+
when (event.packet) {
47+
is CommonPongC2SPacket -> {
48+
if (extendedRockets.isNotEmpty()) {
49+
pingPacket = event.packet
50+
51+
event.cancel()
52+
}
53+
}
54+
}
55+
}
56+
}
57+
58+
fun reset() {
59+
this@RocketExtend.info("Reset RocketExtend")
60+
61+
runSafe {
62+
extendedRockets.forEach { it.discard() }
63+
if (pingPacket != null) connection.sendPacket(pingPacket)
64+
}
65+
66+
extendedRockets.clear()
67+
pingPacket = null
68+
}
69+
}

common/src/main/resources/lambda.accesswidener

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ accessWidener v2 named
33
accessible field net/minecraft/client/MinecraftClient itemUseCooldown I
44
accessible field net/minecraft/client/MinecraftClient attackCooldown I
55

6+
accessible field net/minecraft/entity/projectile/FireworkRocketEntity shooter Lnet/minecraft/entity/LivingEntity;
7+
68
# Text
79
accessible field net/minecraft/text/Style color Lnet/minecraft/text/TextColor;
810
accessible field net/minecraft/text/Style bold Ljava/lang/Boolean;

0 commit comments

Comments
 (0)