Skip to content

Commit 42933d7

Browse files
authored
Add files via upload
1 parent 7a088fd commit 42933d7

25 files changed

Lines changed: 777 additions & 0 deletions
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.Poluteclient.phosphor.api.event.events.GameJoinedEvent;
4+
import net.Poluteclient.phosphor.common.Phosphor;
5+
import net.minecraft.client.network.ClientPlayNetworkHandler;
6+
import net.minecraft.network.packet.s2c.play.GameJoinS2CPacket;
7+
import org.spongepowered.asm.mixin.Mixin;
8+
import org.spongepowered.asm.mixin.injection.At;
9+
import org.spongepowered.asm.mixin.injection.Inject;
10+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
11+
12+
@Mixin(ClientPlayNetworkHandler.class)
13+
public class ClientPlayNetworkHandlerMixin {
14+
@Inject(method = "onGameJoin", at = @At("TAIL"))
15+
private void onGameJoin(GameJoinS2CPacket packet, CallbackInfo ci) {
16+
Phosphor.EVENTBUS.post(GameJoinedEvent.get());
17+
}
18+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import com.mojang.authlib.GameProfile;
4+
import net.Poluteclient.phosphor.api.event.events.PlayerTickEvent;
5+
import net.Poluteclient.phosphor.api.event.events.SendMovementPacketEvent;
6+
import net.Poluteclient.phosphor.common.Phosphor;
7+
import net.Poluteclient.phosphor.module.modules.player.BridgeAssistModule;
8+
import net.Poluteclient.phosphor.module.modules.render.NoShieldDelayModule;
9+
import net.minecraft.client.network.AbstractClientPlayerEntity;
10+
import net.minecraft.client.network.ClientPlayerEntity;
11+
import net.minecraft.client.world.ClientWorld;
12+
import net.minecraft.item.Item;
13+
import net.minecraft.item.Items;
14+
import net.minecraft.item.ShieldItem;
15+
import net.minecraft.util.math.MathHelper;
16+
import org.spongepowered.asm.mixin.Mixin;
17+
import org.spongepowered.asm.mixin.Shadow;
18+
import org.spongepowered.asm.mixin.injection.At;
19+
import org.spongepowered.asm.mixin.injection.Inject;
20+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
21+
22+
@Mixin(ClientPlayerEntity.class)
23+
public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity {
24+
@Shadow public abstract boolean isSneaking();
25+
26+
@Shadow public abstract boolean isUsingItem();
27+
28+
public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile) {
29+
super(world, profile);
30+
}
31+
32+
@Inject(method = "tick", at = @At("HEAD"))
33+
private void onPlayerTick(CallbackInfo ci) {
34+
Phosphor.EVENTBUS.post(PlayerTickEvent.get());
35+
}
36+
37+
@Inject(method = "sendMovementPackets", at = @At("HEAD"))
38+
private void onSendMovementPacketsHead(CallbackInfo info) {
39+
Phosphor.EVENTBUS.post(SendMovementPacketEvent.Pre.get());
40+
}
41+
42+
@Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0))
43+
private void onTickHasVehicleBeforeSendPackets(CallbackInfo info) {
44+
Phosphor.EVENTBUS.post(SendMovementPacketEvent.Pre.get());
45+
}
46+
47+
@Inject(method = "sendMovementPackets", at = @At("TAIL"))
48+
private void onSendMovementPacketsTail(CallbackInfo info) {
49+
Phosphor.EVENTBUS.post(SendMovementPacketEvent.Post.get());
50+
}
51+
52+
@Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 1, shift = At.Shift.AFTER))
53+
private void onTickHasVehicleAfterSendPackets(CallbackInfo info) {
54+
Phosphor.EVENTBUS.post(SendMovementPacketEvent.Post.get());
55+
}
56+
57+
@Override
58+
protected boolean clipAtLedge() {
59+
BridgeAssistModule bridgeAssist = Phosphor.moduleManager().getModule(BridgeAssistModule.class);
60+
if (bridgeAssist.isEnabled() && bridgeAssist.checkHands() && !isOnGround() &&
61+
MathHelper.wrapDegrees(getPitch()) >= bridgeAssist.minAngle.getFValue()) {
62+
if (!isSneaking()) setSneaking(true);
63+
}
64+
65+
return super.clipAtLedge();
66+
}
67+
68+
@Override
69+
public boolean isBlocking() {
70+
NoShieldDelayModule noShieldDelay = Phosphor.moduleManager().getModule(NoShieldDelayModule.class);
71+
if (noShieldDelay.isEnabled()) {
72+
if (this.isUsingItem() && this.activeItemStack.isOf(Items.SHIELD)) {
73+
return this.activeItemStack.getItem().getMaxUseTime(this.activeItemStack) - this.itemUseTimeLeft >= noShieldDelay.shieldDelay.getIValue();
74+
}
75+
}
76+
77+
return super.isBlocking();
78+
}
79+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.minecraft.client.network.ClientPlayerInteractionManager;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.gen.Invoker;
6+
7+
@Mixin(ClientPlayerInteractionManager.class)
8+
public interface ClientPlayerInteractionManagerAccessor {
9+
@Invoker
10+
void callSyncSelectedSlot();
11+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.Poluteclient.phosphor.common.Phosphor;
4+
import net.Poluteclient.phosphor.api.event.events.AttackEntityEvent;
5+
import net.Poluteclient.phosphor.gui.AsteriaMenu;
6+
import net.Poluteclient.phosphor.module.modules.combat.ReachModule;
7+
import net.minecraft.client.network.ClientPlayerInteractionManager;
8+
import net.minecraft.entity.Entity;
9+
import net.minecraft.entity.player.PlayerEntity;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
15+
16+
@Mixin(ClientPlayerInteractionManager.class)
17+
public abstract class ClientPlayerInteractionManagerMixin {
18+
@Inject(at = @At("HEAD"), method = "getReachDistance()F", cancellable = true)
19+
private void onGetReachDistance(CallbackInfoReturnable<Float> cir) {
20+
ReachModule reachModule = Phosphor.moduleManager().getModule(ReachModule.class);
21+
if (AsteriaMenu.isClientEnabled() && reachModule != null && reachModule.isEnabled() && reachModule.blockReachToggle.isEnabled()) {
22+
cir.setReturnValue(reachModule.blockReach.getFValue());
23+
}
24+
}
25+
26+
@Inject(at = @At("HEAD"), method = "hasExtendedReach()Z", cancellable = true)
27+
private void hasExtendedReach(CallbackInfoReturnable<Boolean> cir) {
28+
if (AsteriaMenu.isClientEnabled() && Phosphor.moduleManager().isModuleEnabled(ReachModule.class)) {
29+
cir.setReturnValue(false);
30+
}
31+
}
32+
33+
@Inject(at = @At("HEAD"), method = "attackEntity")
34+
private void onAttackEntity(PlayerEntity player, Entity target, CallbackInfo ci) {
35+
Phosphor.EVENTBUS.post(AttackEntityEvent.get(target));
36+
}
37+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.Poluteclient.phosphor.common.Phosphor;
4+
import net.Poluteclient.phosphor.api.event.events.EntityRemoveEvent;
5+
import net.Poluteclient.phosphor.api.event.events.WorldTickEvent;
6+
import net.fabricmc.api.EnvType;
7+
import net.fabricmc.api.Environment;
8+
import net.minecraft.client.MinecraftClient;
9+
import net.minecraft.client.world.ClientWorld;
10+
import net.minecraft.entity.Entity;
11+
import org.spongepowered.asm.mixin.Mixin;
12+
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.Inject;
14+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
15+
16+
@Environment(EnvType.CLIENT)
17+
@Mixin(ClientWorld.class)
18+
public class ClientWorldMixin {
19+
@Inject(method = "tickEntities", at = @At("HEAD"))
20+
private void startWorldTick(CallbackInfo ci) {
21+
Phosphor.EVENTBUS.post(WorldTickEvent.get());
22+
}
23+
24+
@Inject(method = "removeEntity", at = @At("HEAD"))
25+
private void onEntityRemove(int entityId, Entity.RemovalReason removalReason, CallbackInfo info) {
26+
Phosphor.EVENTBUS.post(EntityRemoveEvent.get(MinecraftClient.getInstance().world.getEntityById(entityId)));
27+
}
28+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen;
4+
import net.minecraft.item.ItemGroup;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.gen.Accessor;
7+
8+
@Mixin(CreativeInventoryScreen.class)
9+
public interface CreativeInventoryScreenAccessor {
10+
@Accessor
11+
static ItemGroup getSelectedTab() {
12+
return null;
13+
}
14+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.Poluteclient.phosphor.common.Phosphor;
4+
import net.Poluteclient.phosphor.gui.AsteriaMenu;
5+
import net.Poluteclient.phosphor.module.modules.player.CrystalOptimizerModule;
6+
import net.minecraft.client.MinecraftClient;
7+
import net.minecraft.entity.Entity;
8+
import net.minecraft.entity.damage.DamageSource;
9+
import net.minecraft.entity.decoration.EndCrystalEntity;
10+
import org.spongepowered.asm.mixin.Mixin;
11+
import org.spongepowered.asm.mixin.injection.At;
12+
import org.spongepowered.asm.mixin.injection.Inject;
13+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
14+
15+
@Mixin(EndCrystalEntity.class)
16+
public abstract class EndCrystalEntityMixin extends Entity {
17+
private EndCrystalEntityMixin() {
18+
super(null, null);
19+
}
20+
21+
@Inject(at = @At("HEAD"), method = "damage")
22+
private void damage(DamageSource source, float amount, CallbackInfoReturnable<Boolean> cir) {
23+
if (AsteriaMenu.isClientEnabled() &&
24+
source.getAttacker() == MinecraftClient.getInstance().player &&
25+
Phosphor.moduleManager().isModuleEnabled(CrystalOptimizerModule.class)) {
26+
this.kill();
27+
}
28+
}
29+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.Poluteclient.phosphor.common.Phosphor;
4+
import net.Poluteclient.phosphor.module.modules.combat.AutoCrystalModule;
5+
import net.minecraft.item.EndCrystalItem;
6+
import net.minecraft.item.ItemStack;
7+
import org.objectweb.asm.Opcodes;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Redirect;
11+
12+
@Mixin(EndCrystalItem.class)
13+
public class EndCrystalItemMixin {
14+
@Redirect(method = "useOnBlock",
15+
at = @At(value = "INVOKE",
16+
target = "Lnet/minecraft/item/ItemStack;decrement(I)V",
17+
opcode = Opcodes.INVOKEVIRTUAL))
18+
private void onItemShrink(ItemStack instance, int i) {
19+
AutoCrystalModule autoCrystal = Phosphor.moduleManager().getModule(AutoCrystalModule.class);
20+
if (autoCrystal == null || !autoCrystal.isEnabled() || !autoCrystal.noCountGlitch.isEnabled())
21+
instance.decrement(i);
22+
}
23+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.Poluteclient.phosphor.api.event.events.EntityMoveEvent;
4+
import net.Poluteclient.phosphor.common.Phosphor;
5+
import net.Poluteclient.phosphor.gui.AsteriaMenu;
6+
import net.Poluteclient.phosphor.module.modules.combat.HitboxesModule;
7+
import net.fabricmc.api.EnvType;
8+
import net.fabricmc.api.Environment;
9+
import net.minecraft.entity.Entity;
10+
import net.minecraft.entity.MovementType;
11+
import net.minecraft.util.math.Vec3d;
12+
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Inject;
15+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
16+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
17+
18+
@Environment(EnvType.CLIENT)
19+
@Mixin(Entity.class)
20+
public class EntityMixin {
21+
@Inject(
22+
method = "getTargetingMargin",
23+
at = @At("HEAD"),
24+
cancellable = true
25+
)
26+
private void onGetTargetingMargin(CallbackInfoReturnable<Float> cir) {
27+
HitboxesModule hitboxes = Phosphor.moduleManager().getModule(HitboxesModule.class);
28+
if (AsteriaMenu.isClientEnabled() && hitboxes.isEnabled()) {
29+
cir.setReturnValue(hitboxes.getHitboxSize((Entity) (Object) this));
30+
}
31+
}
32+
33+
@Inject(method = "move", at = @At("HEAD"))
34+
private void onEntityMove(MovementType movementType, Vec3d movement, CallbackInfo ci) {
35+
Phosphor.EVENTBUS.post(EntityMoveEvent.get((Entity) (Object) this));
36+
}
37+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package net.Poluteclient.phosphor.mixin;
2+
3+
import net.Poluteclient.phosphor.common.Phosphor;
4+
import net.Poluteclient.phosphor.gui.AsteriaMenu;
5+
import net.Poluteclient.phosphor.module.modules.combat.HitboxesModule;
6+
import net.minecraft.client.render.entity.EntityRenderDispatcher;
7+
import net.minecraft.util.math.Box;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
11+
12+
@Mixin(EntityRenderDispatcher.class)
13+
public class EntityRenderDispatcherMixin {
14+
@ModifyVariable(
15+
method = "renderHitbox",
16+
ordinal = 0,
17+
at = @At(
18+
value = "STORE",
19+
ordinal = 0
20+
)
21+
)
22+
private static Box onRenderHitboxEditBox(Box box) {
23+
if (AsteriaMenu.isClientEnabled()) {
24+
HitboxesModule hitboxes = Phosphor.moduleManager().getModule(HitboxesModule.class);
25+
if (hitboxes.isEnabled()) {
26+
return box.expand(hitboxes.getRenderHitboxSize());
27+
}
28+
}
29+
30+
return box;
31+
}
32+
}

0 commit comments

Comments
 (0)