Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Часть функционала JumpCircle Rockstar 2.0 BETA

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
4 Янв 2023
Сообщения
5
Реакции
0
Выберите загрузчик игры
  1. Fabric
Сливаю джамп серкл который мне написал дипсик за 10 минут. Пастерам на рокстаре пойдет.
Java:
Expand Collapse Copy
package moscow.rockstar.systems.modules.modules.visuals;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import moscow.rockstar.Rockstar;
import moscow.rockstar.systems.event.EventListener;
import moscow.rockstar.systems.event.impl.render.Render3DEvent;
import moscow.rockstar.systems.modules.api.ModuleCategory;
import moscow.rockstar.systems.modules.api.ModuleInfo;
import moscow.rockstar.systems.modules.impl.BaseModule;
import moscow.rockstar.systems.setting.settings.ModeSetting;
import moscow.rockstar.systems.setting.settings.SliderSetting;
import moscow.rockstar.utility.colors.ColorRGBA;
import moscow.rockstar.utility.colors.Colors;
import net.minecraft.block.Blocks;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;

@ModuleInfo(name = "Jump Circle", category = ModuleCategory.VISUALS, desc = "Отображает анимированные круги в месте приземления")
public class JumpCircle extends BaseModule {

    private final ModeSetting mode = new ModeSetting(this, "Режим");
    private final ModeSetting.Value defaultMode = new ModeSetting.Value(mode, "Обычный").select();
    private final ModeSetting.Value customMode = new ModeSetting.Value(mode, "Кастомный");

    private final SliderSetting rotateSpeed = new SliderSetting(this, "Скорость вращения")
            .min(0.5F).max(5.0F).step(0.1F).currentValue(2.0F);

    private final SliderSetting circleScale = new SliderSetting(this, "Масштаб круга")
            .min(0.5F).max(3.0F).step(0.1F).currentValue(1.0F);

    private final SliderSetting brightness = new SliderSetting(this, "Яркость")
            .min(1.0F).max(2.5F).step(0.1F).currentValue(1.8F);

    private final SliderSetting animationDuration = new SliderSetting(this, "Длительность")
            .min(1000F).max(8000F).step(100F).currentValue(5000F).suffix(" ms");

    private final List<Circle> circles = new ArrayList<>();
    private final List<PlayerEntity> cache = new CopyOnWriteArrayList<>();
    private Identifier customTexture;
    private static final Identifier DEFAULT_TEXTURE = Rockstar.id("textures/jumpcircle/default.png");

    private final EventListener<Render3DEvent> onRender3D = event -> {
        if (mc.player == null || circles.isEmpty()) return;
        Collections.reverse(circles);
        RenderSystem.disableDepthTest();
        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        Identifier texture = mode.is(customMode) ?
                Objects.requireNonNullElse(customTexture, DEFAULT_TEXTURE) : DEFAULT_TEXTURE;
        RenderSystem.setShaderTexture(0, texture);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);
        BufferBuilder buffer = Tessellator.getInstance().begin(
                VertexFormat.DrawMode.QUADS,
                VertexFormats.POSITION_TEXTURE_COLOR
        );
        MatrixStack matrices = event.getMatrices();
        Vec3d cameraPos = mc.gameRenderer.getCamera().getPos();
        float bright = brightness.getCurrentValue();
        for (Circle circle : circles) {
            float passedTime = (float) circle.timer.getPassedTimeMs();
            float duration = animationDuration.getCurrentValue();
            float alphaAnim = 1.0f - (passedTime / duration);
            alphaAnim = Math.max(0, Math.min(1, alphaAnim));
            alphaAnim = alphaAnim * 0.9f;
            float sizeAnim = circleScale.getCurrentValue() - (float) Math.pow(1 - (passedTime / duration), 4);
            matrices.push();
            matrices.translate(
                    circle.pos.x - cameraPos.x,
                    circle.pos.y - cameraPos.y,
                    circle.pos.z - cameraPos.z
            );
            matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(90));
            matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(sizeAnim * rotateSpeed.getCurrentValue() * 1000f));
            Matrix4f matrix = matrices.peek().getPositionMatrix();
            ColorRGBA themeColor = getThemeColor();
            int r = Math.min(255, (int)(themeColor.getRed() * bright));
            int g = Math.min(255, (int)(themeColor.getGreen() * bright));
            int b = Math.min(255, (int)(themeColor.getBlue() * bright));
            int a = (int)(alphaAnim * 200);
            int color = new ColorRGBA(r, g, b, a).getRGB();
            float size = sizeAnim * 2f;
            buffer.vertex(matrix, -sizeAnim, -sizeAnim + size, 0).texture(0, 1).color(color);
            buffer.vertex(matrix, -sizeAnim + size, -sizeAnim + size, 0).texture(1, 1).color(color);
            buffer.vertex(matrix, -sizeAnim + size, -sizeAnim, 0).texture(1, 0).color(color);
            buffer.vertex(matrix, -sizeAnim, -sizeAnim, 0).texture(0, 0).color(color);
            matrices.pop();
        }
        var builtBuffer = buffer.endNullable();
        if (builtBuffer != null) {
            BufferRenderer.drawWithGlobalProgram(builtBuffer);
        }
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableBlend();
        RenderSystem.enableDepthTest();
        Collections.reverse(circles);
    };

    private ColorRGBA getThemeColor() {
        if (Rockstar.getInstance().getThemeManager() != null) {
            ColorRGBA color = Rockstar.getInstance().getThemeManager().getCurrentTheme().getAdditionalColor();
            if (color.getRed() < 50 && color.getGreen() < 50 && color.getBlue() < 50) {
                return new ColorRGBA(255, 150, 100, 255);
            }
            return color;
        }
        return new ColorRGBA(255, 150, 100, 255);
    }

    @Override
    public void tick() {
        if (mc.player == null) return;
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (!cache.contains(player) && player.isOnGround()) {
                cache.add(player);
            }
        }
        cache.forEach(player -> {
            if (player != null && !player.isOnGround()) {
                BlockPos blockPos = BlockPos.ofFloored(player.getPos());
                double yOffset = 0.001f;
                if (mc.world.getBlockState(blockPos).getBlock() == Blocks.SNOW) {
                    yOffset = 0.126f;
                }
                circles.add(new Circle(
                        new Vec3d(player.getX(), Math.floor(player.getY()) + yOffset, player.getZ()),
                        new Timer()
                ));
                cache.remove(player);
            }
        });
        circles.removeIf(c -> c.timer.passedMs((long) animationDuration.getCurrentValue()));
    }

    @Override
    public void onEnable() {
        circles.clear();
        cache.clear();
        customTexture = Rockstar.id("textures/jumpcircle/custom.png");
        super.onEnable();
        Rockstar.getInstance().getEventManager().subscribe(onRender3D);
    }

    @Override
    public void onDisable() {
        circles.clear();
        cache.clear();
        super.onDisable();
        Rockstar.getInstance().getEventManager().unsubscribe(onRender3D);
    }

    private static class Circle {
        private final Vec3d pos;
        private final Timer timer;
        public Circle(Vec3d pos, Timer timer) {
            this.pos = pos;
            this.timer = timer;
        }
    }

    private static class Timer {
        private final long startTime;
        public Timer() {
            this.startTime = System.currentTimeMillis();
        }
        public long getPassedTimeMs() {
            return System.currentTimeMillis() - startTime;
        }
        public boolean passedMs(long ms) {
            return getPassedTimeMs() >= ms;
        }
    }
}

Пожалуйста, авторизуйтесь для просмотра ссылки.
 

Вложения

  • circle.png
    circle.png
    1.6 MB · Просмотры: 80
  • konchalebal.png
    konchalebal.png
    248.9 KB · Просмотры: 83
Сливаю джамп серкл который мне написал дипсик за 10 минут. Пастерам на рокстаре пойдет.
Java:
Expand Collapse Copy
package moscow.rockstar.systems.modules.modules.visuals;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import moscow.rockstar.Rockstar;
import moscow.rockstar.systems.event.EventListener;
import moscow.rockstar.systems.event.impl.render.Render3DEvent;
import moscow.rockstar.systems.modules.api.ModuleCategory;
import moscow.rockstar.systems.modules.api.ModuleInfo;
import moscow.rockstar.systems.modules.impl.BaseModule;
import moscow.rockstar.systems.setting.settings.ModeSetting;
import moscow.rockstar.systems.setting.settings.SliderSetting;
import moscow.rockstar.utility.colors.ColorRGBA;
import moscow.rockstar.utility.colors.Colors;
import net.minecraft.block.Blocks;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;

@ModuleInfo(name = "Jump Circle", category = ModuleCategory.VISUALS, desc = "Отображает анимированные круги в месте приземления")
public class JumpCircle extends BaseModule {

    private final ModeSetting mode = new ModeSetting(this, "Режим");
    private final ModeSetting.Value defaultMode = new ModeSetting.Value(mode, "Обычный").select();
    private final ModeSetting.Value customMode = new ModeSetting.Value(mode, "Кастомный");

    private final SliderSetting rotateSpeed = new SliderSetting(this, "Скорость вращения")
            .min(0.5F).max(5.0F).step(0.1F).currentValue(2.0F);

    private final SliderSetting circleScale = new SliderSetting(this, "Масштаб круга")
            .min(0.5F).max(3.0F).step(0.1F).currentValue(1.0F);

    private final SliderSetting brightness = new SliderSetting(this, "Яркость")
            .min(1.0F).max(2.5F).step(0.1F).currentValue(1.8F);

    private final SliderSetting animationDuration = new SliderSetting(this, "Длительность")
            .min(1000F).max(8000F).step(100F).currentValue(5000F).suffix(" ms");

    private final List<Circle> circles = new ArrayList<>();
    private final List<PlayerEntity> cache = new CopyOnWriteArrayList<>();
    private Identifier customTexture;
    private static final Identifier DEFAULT_TEXTURE = Rockstar.id("textures/jumpcircle/default.png");

    private final EventListener<Render3DEvent> onRender3D = event -> {
        if (mc.player == null || circles.isEmpty()) return;
        Collections.reverse(circles);
        RenderSystem.disableDepthTest();
        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        Identifier texture = mode.is(customMode) ?
                Objects.requireNonNullElse(customTexture, DEFAULT_TEXTURE) : DEFAULT_TEXTURE;
        RenderSystem.setShaderTexture(0, texture);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);
        BufferBuilder buffer = Tessellator.getInstance().begin(
                VertexFormat.DrawMode.QUADS,
                VertexFormats.POSITION_TEXTURE_COLOR
        );
        MatrixStack matrices = event.getMatrices();
        Vec3d cameraPos = mc.gameRenderer.getCamera().getPos();
        float bright = brightness.getCurrentValue();
        for (Circle circle : circles) {
            float passedTime = (float) circle.timer.getPassedTimeMs();
            float duration = animationDuration.getCurrentValue();
            float alphaAnim = 1.0f - (passedTime / duration);
            alphaAnim = Math.max(0, Math.min(1, alphaAnim));
            alphaAnim = alphaAnim * 0.9f;
            float sizeAnim = circleScale.getCurrentValue() - (float) Math.pow(1 - (passedTime / duration), 4);
            matrices.push();
            matrices.translate(
                    circle.pos.x - cameraPos.x,
                    circle.pos.y - cameraPos.y,
                    circle.pos.z - cameraPos.z
            );
            matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(90));
            matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(sizeAnim * rotateSpeed.getCurrentValue() * 1000f));
            Matrix4f matrix = matrices.peek().getPositionMatrix();
            ColorRGBA themeColor = getThemeColor();
            int r = Math.min(255, (int)(themeColor.getRed() * bright));
            int g = Math.min(255, (int)(themeColor.getGreen() * bright));
            int b = Math.min(255, (int)(themeColor.getBlue() * bright));
            int a = (int)(alphaAnim * 200);
            int color = new ColorRGBA(r, g, b, a).getRGB();
            float size = sizeAnim * 2f;
            buffer.vertex(matrix, -sizeAnim, -sizeAnim + size, 0).texture(0, 1).color(color);
            buffer.vertex(matrix, -sizeAnim + size, -sizeAnim + size, 0).texture(1, 1).color(color);
            buffer.vertex(matrix, -sizeAnim + size, -sizeAnim, 0).texture(1, 0).color(color);
            buffer.vertex(matrix, -sizeAnim, -sizeAnim, 0).texture(0, 0).color(color);
            matrices.pop();
        }
        var builtBuffer = buffer.endNullable();
        if (builtBuffer != null) {
            BufferRenderer.drawWithGlobalProgram(builtBuffer);
        }
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableBlend();
        RenderSystem.enableDepthTest();
        Collections.reverse(circles);
    };

    private ColorRGBA getThemeColor() {
        if (Rockstar.getInstance().getThemeManager() != null) {
            ColorRGBA color = Rockstar.getInstance().getThemeManager().getCurrentTheme().getAdditionalColor();
            if (color.getRed() < 50 && color.getGreen() < 50 && color.getBlue() < 50) {
                return new ColorRGBA(255, 150, 100, 255);
            }
            return color;
        }
        return new ColorRGBA(255, 150, 100, 255);
    }

    @Override
    public void tick() {
        if (mc.player == null) return;
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (!cache.contains(player) && player.isOnGround()) {
                cache.add(player);
            }
        }
        cache.forEach(player -> {
            if (player != null && !player.isOnGround()) {
                BlockPos blockPos = BlockPos.ofFloored(player.getPos());
                double yOffset = 0.001f;
                if (mc.world.getBlockState(blockPos).getBlock() == Blocks.SNOW) {
                    yOffset = 0.126f;
                }
                circles.add(new Circle(
                        new Vec3d(player.getX(), Math.floor(player.getY()) + yOffset, player.getZ()),
                        new Timer()
                ));
                cache.remove(player);
            }
        });
        circles.removeIf(c -> c.timer.passedMs((long) animationDuration.getCurrentValue()));
    }

    @Override
    public void onEnable() {
        circles.clear();
        cache.clear();
        customTexture = Rockstar.id("textures/jumpcircle/custom.png");
        super.onEnable();
        Rockstar.getInstance().getEventManager().subscribe(onRender3D);
    }

    @Override
    public void onDisable() {
        circles.clear();
        cache.clear();
        super.onDisable();
        Rockstar.getInstance().getEventManager().unsubscribe(onRender3D);
    }

    private static class Circle {
        private final Vec3d pos;
        private final Timer timer;
        public Circle(Vec3d pos, Timer timer) {
            this.pos = pos;
            this.timer = timer;
        }
    }

    private static class Timer {
        private final long startTime;
        public Timer() {
            this.startTime = System.currentTimeMillis();
        }
        public long getPassedTimeMs() {
            return System.currentTimeMillis() - startTime;
        }
        public boolean passedMs(long ms) {
            return getPassedTimeMs() >= ms;
        }
    }
}

Пожалуйста, авторизуйтесь для просмотра ссылки.
нахуй ты там что то ещё кешируешь тебе просто надо сделать EventJump и всё
 
Сливаю джамп серкл который мне написал дипсик за 10 минут. Пастерам на рокстаре пойдет.
Java:
Expand Collapse Copy
package moscow.rockstar.systems.modules.modules.visuals;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import moscow.rockstar.Rockstar;
import moscow.rockstar.systems.event.EventListener;
import moscow.rockstar.systems.event.impl.render.Render3DEvent;
import moscow.rockstar.systems.modules.api.ModuleCategory;
import moscow.rockstar.systems.modules.api.ModuleInfo;
import moscow.rockstar.systems.modules.impl.BaseModule;
import moscow.rockstar.systems.setting.settings.ModeSetting;
import moscow.rockstar.systems.setting.settings.SliderSetting;
import moscow.rockstar.utility.colors.ColorRGBA;
import moscow.rockstar.utility.colors.Colors;
import net.minecraft.block.Blocks;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;

@ModuleInfo(name = "Jump Circle", category = ModuleCategory.VISUALS, desc = "Отображает анимированные круги в месте приземления")
public class JumpCircle extends BaseModule {

    private final ModeSetting mode = new ModeSetting(this, "Режим");
    private final ModeSetting.Value defaultMode = new ModeSetting.Value(mode, "Обычный").select();
    private final ModeSetting.Value customMode = new ModeSetting.Value(mode, "Кастомный");

    private final SliderSetting rotateSpeed = new SliderSetting(this, "Скорость вращения")
            .min(0.5F).max(5.0F).step(0.1F).currentValue(2.0F);

    private final SliderSetting circleScale = new SliderSetting(this, "Масштаб круга")
            .min(0.5F).max(3.0F).step(0.1F).currentValue(1.0F);

    private final SliderSetting brightness = new SliderSetting(this, "Яркость")
            .min(1.0F).max(2.5F).step(0.1F).currentValue(1.8F);

    private final SliderSetting animationDuration = new SliderSetting(this, "Длительность")
            .min(1000F).max(8000F).step(100F).currentValue(5000F).suffix(" ms");

    private final List<Circle> circles = new ArrayList<>();
    private final List<PlayerEntity> cache = new CopyOnWriteArrayList<>();
    private Identifier customTexture;
    private static final Identifier DEFAULT_TEXTURE = Rockstar.id("textures/jumpcircle/default.png");

    private final EventListener<Render3DEvent> onRender3D = event -> {
        if (mc.player == null || circles.isEmpty()) return;
        Collections.reverse(circles);
        RenderSystem.disableDepthTest();
        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        Identifier texture = mode.is(customMode) ?
                Objects.requireNonNullElse(customTexture, DEFAULT_TEXTURE) : DEFAULT_TEXTURE;
        RenderSystem.setShaderTexture(0, texture);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);
        BufferBuilder buffer = Tessellator.getInstance().begin(
                VertexFormat.DrawMode.QUADS,
                VertexFormats.POSITION_TEXTURE_COLOR
        );
        MatrixStack matrices = event.getMatrices();
        Vec3d cameraPos = mc.gameRenderer.getCamera().getPos();
        float bright = brightness.getCurrentValue();
        for (Circle circle : circles) {
            float passedTime = (float) circle.timer.getPassedTimeMs();
            float duration = animationDuration.getCurrentValue();
            float alphaAnim = 1.0f - (passedTime / duration);
            alphaAnim = Math.max(0, Math.min(1, alphaAnim));
            alphaAnim = alphaAnim * 0.9f;
            float sizeAnim = circleScale.getCurrentValue() - (float) Math.pow(1 - (passedTime / duration), 4);
            matrices.push();
            matrices.translate(
                    circle.pos.x - cameraPos.x,
                    circle.pos.y - cameraPos.y,
                    circle.pos.z - cameraPos.z
            );
            matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(90));
            matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(sizeAnim * rotateSpeed.getCurrentValue() * 1000f));
            Matrix4f matrix = matrices.peek().getPositionMatrix();
            ColorRGBA themeColor = getThemeColor();
            int r = Math.min(255, (int)(themeColor.getRed() * bright));
            int g = Math.min(255, (int)(themeColor.getGreen() * bright));
            int b = Math.min(255, (int)(themeColor.getBlue() * bright));
            int a = (int)(alphaAnim * 200);
            int color = new ColorRGBA(r, g, b, a).getRGB();
            float size = sizeAnim * 2f;
            buffer.vertex(matrix, -sizeAnim, -sizeAnim + size, 0).texture(0, 1).color(color);
            buffer.vertex(matrix, -sizeAnim + size, -sizeAnim + size, 0).texture(1, 1).color(color);
            buffer.vertex(matrix, -sizeAnim + size, -sizeAnim, 0).texture(1, 0).color(color);
            buffer.vertex(matrix, -sizeAnim, -sizeAnim, 0).texture(0, 0).color(color);
            matrices.pop();
        }
        var builtBuffer = buffer.endNullable();
        if (builtBuffer != null) {
            BufferRenderer.drawWithGlobalProgram(builtBuffer);
        }
        RenderSystem.defaultBlendFunc();
        RenderSystem.disableBlend();
        RenderSystem.enableDepthTest();
        Collections.reverse(circles);
    };

    private ColorRGBA getThemeColor() {
        if (Rockstar.getInstance().getThemeManager() != null) {
            ColorRGBA color = Rockstar.getInstance().getThemeManager().getCurrentTheme().getAdditionalColor();
            if (color.getRed() < 50 && color.getGreen() < 50 && color.getBlue() < 50) {
                return new ColorRGBA(255, 150, 100, 255);
            }
            return color;
        }
        return new ColorRGBA(255, 150, 100, 255);
    }

    @Override
    public void tick() {
        if (mc.player == null) return;
        for (PlayerEntity player : mc.world.getPlayers()) {
            if (!cache.contains(player) && player.isOnGround()) {
                cache.add(player);
            }
        }
        cache.forEach(player -> {
            if (player != null && !player.isOnGround()) {
                BlockPos blockPos = BlockPos.ofFloored(player.getPos());
                double yOffset = 0.001f;
                if (mc.world.getBlockState(blockPos).getBlock() == Blocks.SNOW) {
                    yOffset = 0.126f;
                }
                circles.add(new Circle(
                        new Vec3d(player.getX(), Math.floor(player.getY()) + yOffset, player.getZ()),
                        new Timer()
                ));
                cache.remove(player);
            }
        });
        circles.removeIf(c -> c.timer.passedMs((long) animationDuration.getCurrentValue()));
    }

    @Override
    public void onEnable() {
        circles.clear();
        cache.clear();
        customTexture = Rockstar.id("textures/jumpcircle/custom.png");
        super.onEnable();
        Rockstar.getInstance().getEventManager().subscribe(onRender3D);
    }

    @Override
    public void onDisable() {
        circles.clear();
        cache.clear();
        super.onDisable();
        Rockstar.getInstance().getEventManager().unsubscribe(onRender3D);
    }

    private static class Circle {
        private final Vec3d pos;
        private final Timer timer;
        public Circle(Vec3d pos, Timer timer) {
            this.pos = pos;
            this.timer = timer;
        }
    }

    private static class Timer {
        private final long startTime;
        public Timer() {
            this.startTime = System.currentTimeMillis();
        }
        public long getPassedTimeMs() {
            return System.currentTimeMillis() - startTime;
        }
        public boolean passedMs(long ms) {
            return getPassedTimeMs() >= ms;
        }
    }
}

Пожалуйста, авторизуйтесь для просмотра ссылки.
дерьмо
 
Назад
Сверху Снизу