- Статус
- Оффлайн
- Регистрация
- 5 Мар 2024
- Сообщения
- 69
- Реакции
- 0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вроде бы ивенты вхуканы правильно, весь код выглядит в целом нормально и должен работать, но происходит какой то пиздец и оно не работает, помогите пж
и вот ещё как я хукаю джамп эвент
Java:
package ru.expensive.implement.features.modules.render;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.Vec3d;
import ru.expensive.api.event.EventHandler;
import ru.expensive.api.feature.module.Module;
import ru.expensive.api.feature.module.ModuleCategory;
import ru.expensive.api.feature.module.setting.implement.ColorSetting;
import ru.expensive.api.system.shape.implement.Image;
import ru.expensive.common.QuickImports;
import ru.expensive.implement.events.player.EventPlayerJump;
import ru.expensive.implement.events.render.WorldRenderEvent;
import ru.expensive.api.system.shape.ShapeProperties;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class JumpCirclesModule extends Module {
private final List<JumpCircle> circles = new ArrayList<>();
private static ColorSetting color = new ColorSetting("Circles color", "Change jump circles color")
.presets(0x80FFFFFF, 0x80FF0000
);
public JumpCirclesModule() {
super("JumpCircles", ModuleCategory.RENDER);
setup(color);
}
@EventHandler
private void onJump(EventPlayerJump e) {
if (mc.player != null && mc.world != null) {
Vec3d pos = interpolatePosition(mc.player).add(0, 0.01, 0);
circles.add(new JumpCircle(pos, System.currentTimeMillis()));
}
}
@EventHandler
private void onRenderEvent(WorldRenderEvent e) {
if (circles.isEmpty()) return;
long now = System.currentTimeMillis();
Iterator<JumpCircle> iterator = circles.iterator();
while (iterator.hasNext()) {
JumpCircle circle = iterator.next();
float life = (now - circle.startTime) / 1000f;
if (life >= 5f) {
iterator.remove();
continue;
}
float radius = easeOutBack(life / 5f) * 2.5f;
Image image = QuickImports.image.setMatrixStack(e.getStack());
image.setTexture("images/render/circle.png").render(
ShapeProperties.create(
e.getStack().peek().getPositionMatrix(),
circle.pos.x - radius / 2,
circle.pos.y,
radius,
radius)
.color(color.getColor())
.bloom(true)
.build()
);
}
}
private Vec3d interpolatePosition(Entity entity) {
float tickDelta = mc.getTickDelta();
double dx = entity.getX() - entity.lastRenderX;
double dy = entity.getY() - entity.lastRenderY;
double dz = entity.getZ() - entity.lastRenderZ;
return new Vec3d(entity.lastRenderX + dx * tickDelta,
entity.lastRenderY + dy * tickDelta,
entity.lastRenderZ + dz * tickDelta);
}
private static float easeOutBack(float value) {
double c1 = 1.70158, c3 = c1 + 1;
return (float) (1 + c3 * Math.pow(value - 1, 3) + c1 * Math.pow(value - 1, 2));
}
private static class JumpCircle {
final Vec3d pos;
final long startTime;
JumpCircle(Vec3d pos, long startTime) {
this.pos = pos;
this.startTime = startTime;
}
}
}
Java:
@Mixin(PlayerEntity.class)
public class PlayerEntityMixin {
@Inject(method = "jump", at = @At("HEAD"))
private void onJump(CallbackInfo ci) {
EventManager.callEvent(new EventPlayerJump());
}