Repository navigation
Expand file tree
/
Copy pathAutoFrameDupe.java
More file actions
85 lines (71 loc) · 2.7 KB
/
Copy pathAutoFrameDupe.java
File metadata and controls
85 lines (71 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.matt.forgehax.mods;
import com.matt.forgehax.Globals;
import com.matt.forgehax.events.LocalPlayerUpdateEvent;
import com.matt.forgehax.util.command.Setting;
import com.matt.forgehax.util.mod.Category;
import com.matt.forgehax.util.mod.ToggleMod;
import com.matt.forgehax.util.mod.loader.RegisterMod;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItemFrame;
import net.minecraft.init.Items;
import net.minecraft.network.play.client.CPacketHeldItemChange;
import net.minecraft.network.play.client.CPacketUseEntity;
import net.minecraft.util.EnumHand;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import java.util.Comparator;
/**
* Created on 2/8/2022 by Windowsxp4972
*/
@RegisterMod
public class AutoFrameDupe extends ToggleMod {
public final Setting<Integer> delay =
getCommandStub()
.builders()
.<Integer>newSettingBuilder()
.name("delay")
.description("delay in ticks")
.defaultTo(10)
.min(0)
.max(20)
.build();
public AutoFrameDupe() {
super(Category.EXPLOIT, "AutoFrameDupe", false, "Shit Servers Dupe");
}
private boolean isSending = false;
private Entity entity;
private int ticks = 0;
@Override
public void onEnabled (){
isSending = false;
ticks = 0;
}
@Override
public void onDisabled (){
ticks = 0;
Globals.MC.player.inventory.currentItem = isSending? 0:1;
}
private boolean isValidTileEntity(Entity entity) { return (entity instanceof EntityItemFrame) && Globals.MC.player.getDistance(entity)<4f; }
@SubscribeEvent
public void onTick(LocalPlayerUpdateEvent event) {
ticks++;
if(ticks >= delay.get())
return;
entity = Globals.MC.world.loadedEntityList.stream()
.filter(loadedEntity -> isValidTileEntity(loadedEntity))
.min(Comparator.comparing(loadedEntity -> Globals.MC.player.getDistance(loadedEntity.getPosition().getX(), loadedEntity.getPosition().getY(), loadedEntity.getPosition().getZ())))
.orElse(null);
EntityItemFrame itemFrame = (EntityItemFrame)entity;
if(entity == null) {
toggle();
return;
}
if(Globals.MC.player.getHeldItemMainhand() == null || Globals.MC.player.getHeldItemMainhand().getItem() == Items.AIR)
return;
if(isSending && (itemFrame.getDisplayedItem() == null || itemFrame.getDisplayedItem().getItem() == Items.AIR))
isSending = false;
Globals.MC.player.connection.sendPacket(isSending?new CPacketUseEntity(entity):new CPacketUseEntity(entity, EnumHand.MAIN_HAND));
Globals.MC.player.connection.sendPacket(isSending?new CPacketHeldItemChange(0):new CPacketHeldItemChange(1));
isSending = !isSending;
ticks = 0;
}
}