v1.7
This commit is contained in:
1 parent
4f816381c3
commit
6fa409d60a
49 files changed
+795
-93
No files matched your search
+2
-1
@@ -46,5 +46,6 @@ test.java
|
|||||||
cambios.md
|
cambios.md
|
||||||
# no está terminado
|
# no está terminado
|
||||||
src/main/java/me/retucio/camtweaks/module/modules/TooltipsPlus.java
|
src/main/java/me/retucio/camtweaks/module/modules/TooltipsPlus.java
|
||||||
|
src/main/java/me/retucio/camtweaks/util/RenderUtil.java
|
||||||
|
src/main/java/me/retucio/camtweaks/util/Layers.java
|
||||||
remappedSrc/
|
remappedSrc/
|
||||||
@@ -24,7 +24,6 @@ dependencies {
|
|||||||
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
|
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
|
||||||
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
||||||
|
|
||||||
// Fabric API. This is technically optional, but you probably want it anyway.
|
|
||||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-7
@@ -1,19 +1,21 @@
|
|||||||
# v1.5
|
# v1.6
|
||||||
|
|
||||||
## novedades
|
## novedades
|
||||||
|
|
||||||
sigo vivo (creo)
|
todo un sistema de renderizado skiddeado de https://github.com/mioclient/oyvey-ported/
|
||||||
|
|
||||||
### adiciones
|
### adiciones
|
||||||
|
|
||||||
- editor de hud bastante básico pero por lo general funcional (`pág. arriba` por defecto). viene con muchos bugs, ojalá me caiga un rayo.
|
- marca de agua en la pantalla de inicio porque molo un montón
|
||||||
|
- prev. de shulkers: te permite previsualizar el contenido de cajas de shulker desde el inventario
|
||||||
|
- puntos de desconexión: te muestra el punto donde un jugador se desconecta
|
||||||
|
|
||||||
### arreglos / mejoras
|
### arreglos / mejoras
|
||||||
|
|
||||||
- ya no salta un error al hacer una captura con los módulos `capturas de pantalla` y `chat plus` activos
|
- el scroll del freecam ahora requiere una tecla (para mayor comodidad)
|
||||||
- ahora la telemetría (abuso de privacidad al usuario de microshit) está desactivado por huevos. si quieres activarlo te jodes.
|
- ahora puedes ver tu propio nametag (nametags -> mostrar propio)
|
||||||
- ahora ya no puedes abrir interfaces del mod si no estás en un mundo
|
- opción para desactivar hud en chat agregada
|
||||||
- mejorada la seguridad de algunas operaciones
|
- arreglos menores varios
|
||||||
|
|
||||||
## problemas reconocidos
|
## problemas reconocidos
|
||||||
|
|
||||||
|
|||||||
+8
-5
@@ -1,5 +1,8 @@
|
|||||||
meteor client dev team
|
Meteor Client: https://github.com/MeteorDevelopment/meteor-client | https://meteorclient.com
|
||||||
oyvey client (1.21 port by mioclient)
|
OyVey Port: https://github.com/mioclient/oyvey-ported/
|
||||||
lennyboi (youtube)
|
Lenny Boi: https://www.youtube.com/@lennyboi7195
|
||||||
packbar by cattyn on github
|
Shotify: https://modrinth.com/mod/shotify
|
||||||
shotify mod
|
No Telemetry: https://modrinth.com/mod/no-telemetry
|
||||||
|
|
||||||
|
probablemente más pero como tengo demencia se me olvida
|
||||||
|
si quieres que te acredite mándame un mensaje en discord (username: retucio) y sin problemas :)
|
||||||
+1
-6
@@ -1,18 +1,13 @@
|
|||||||
# Done to increase the memory available to gradle.
|
|
||||||
org.gradle.jvmargs=-Xmx1G
|
org.gradle.jvmargs=-Xmx1G
|
||||||
org.gradle.parallel=true
|
org.gradle.parallel=true
|
||||||
|
|
||||||
# Fabric Properties
|
|
||||||
# check these on https://fabricmc.net/develop
|
|
||||||
minecraft_version=1.21.10
|
minecraft_version=1.21.10
|
||||||
yarn_mappings=1.21.10+build.2
|
yarn_mappings=1.21.10+build.2
|
||||||
loader_version=0.17.3
|
loader_version=0.17.3
|
||||||
loom_version=1.11-SNAPSHOT
|
loom_version=1.11-SNAPSHOT
|
||||||
|
|
||||||
# Mod Properties
|
mod_version=1.6
|
||||||
mod_version=1.5
|
|
||||||
maven_group=me.retucio
|
maven_group=me.retucio
|
||||||
archives_base_name=camtweaks
|
archives_base_name=camtweaks
|
||||||
|
|
||||||
# Dependencies
|
|
||||||
fabric_version=0.135.0+1.21.10
|
fabric_version=0.135.0+1.21.10
|
||||||
@@ -17,8 +17,8 @@ import me.retucio.camtweaks.module.Module;
|
|||||||
import me.retucio.camtweaks.module.ModuleManager;
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
|
|
||||||
import me.retucio.camtweaks.module.modules.HUD;
|
import me.retucio.camtweaks.module.modules.HUD;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.HudEditorScreen;
|
import me.retucio.camtweaks.ui.screen.HudEditorScreen;
|
||||||
import me.retucio.camtweaks.ui.HudRenderer;
|
import me.retucio.camtweaks.ui.HudRenderer;
|
||||||
import me.retucio.camtweaks.ui.buttons.BindButton;
|
import me.retucio.camtweaks.ui.buttons.BindButton;
|
||||||
import me.retucio.camtweaks.ui.buttons.SettingButton;
|
import me.retucio.camtweaks.ui.buttons.SettingButton;
|
||||||
@@ -34,10 +34,10 @@ import me.retucio.camtweaks.util.MiscUtil;
|
|||||||
|
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
|
|
||||||
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
|
|
||||||
import net.minecraft.client.gui.screen.TitleScreen;
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
@@ -48,15 +48,28 @@ import org.lwjgl.glfw.GLFW;
|
|||||||
public class CameraTweaks implements ClientModInitializer {
|
public class CameraTweaks implements ClientModInitializer {
|
||||||
|
|
||||||
// cosas necesarias
|
// cosas necesarias
|
||||||
public static final String MOD_ID = "camtweaks";
|
|
||||||
public static final CameraTweaks INSTANCE = new CameraTweaks();
|
public static final CameraTweaks INSTANCE = new CameraTweaks();
|
||||||
public static final Logger LOGGER = LogManager.getLogger(CameraTweaks.class);
|
|
||||||
public static final EventBus EVENT_BUS = new EventBus();
|
public static final EventBus EVENT_BUS = new EventBus();
|
||||||
|
public static final Logger LOGGER = LogManager.getLogger(CameraTweaks.class);
|
||||||
public static MinecraftClient mc;
|
public static MinecraftClient mc;
|
||||||
|
|
||||||
|
// id y versión
|
||||||
|
public static final String MOD_ID = "camtweaks";
|
||||||
|
public static final String MOD_VERSION;
|
||||||
|
|
||||||
|
static {
|
||||||
|
MOD_VERSION = FabricLoader.getInstance().getModContainer(MOD_ID)
|
||||||
|
.orElseThrow()
|
||||||
|
.getMetadata()
|
||||||
|
.getVersion()
|
||||||
|
.getFriendlyString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private Screen prevScreen;
|
private Screen prevScreen;
|
||||||
public boolean settingsApplied = false;
|
public boolean settingsApplied = false;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
// por algún motivo aunque lo añada a los args de la JVM sigue siendo true a menos que haga esto??? puta vida
|
// por algún motivo aunque lo añada a los args de la JVM sigue siendo true a menos que haga esto??? puta vida
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package me.retucio.camtweaks.config;
|
|||||||
import me.retucio.camtweaks.event.SubscribeEvent;
|
import me.retucio.camtweaks.event.SubscribeEvent;
|
||||||
import me.retucio.camtweaks.event.events.camtweaks.*;
|
import me.retucio.camtweaks.event.events.camtweaks.*;
|
||||||
import me.retucio.camtweaks.module.settings.*;
|
import me.retucio.camtweaks.module.settings.*;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import me.retucio.camtweaks.CameraTweaks;
|
|||||||
import me.retucio.camtweaks.module.Module;
|
import me.retucio.camtweaks.module.Module;
|
||||||
import me.retucio.camtweaks.module.ModuleManager;
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
import me.retucio.camtweaks.module.settings.*;
|
import me.retucio.camtweaks.module.settings.*;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package me.retucio.camtweaks.event.events;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.event.Event;
|
||||||
|
import net.minecraft.client.render.Camera;
|
||||||
|
import net.minecraft.client.render.RenderTickCounter;
|
||||||
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
|
public class RenderWorldEvent extends Event {
|
||||||
|
|
||||||
|
private final MatrixStack matrices;
|
||||||
|
private final RenderTickCounter tc;
|
||||||
|
private final Camera camera;
|
||||||
|
|
||||||
|
public RenderWorldEvent(MatrixStack matrices, RenderTickCounter tc, Camera camera) {
|
||||||
|
this.matrices = matrices;
|
||||||
|
this.tc = tc;
|
||||||
|
this.camera = camera;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MatrixStack getMatrices() {
|
||||||
|
return matrices;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RenderTickCounter getTickCounter() {
|
||||||
|
return tc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Camera getCamera() {
|
||||||
|
return camera;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package me.retucio.camtweaks.event.events.camtweaks;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.event.Event;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
|
||||||
|
public class AddEntityEvent extends Event {
|
||||||
|
|
||||||
|
private final Entity entity;
|
||||||
|
|
||||||
|
public AddEntityEvent(Entity entity) {
|
||||||
|
this.entity = entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entity getEntity() {
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package me.retucio.camtweaks.event.events.camtweaks;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.event.Event;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
|
||||||
|
public class RemoveEntityEvent extends Event {
|
||||||
|
|
||||||
|
private final Entity entity;
|
||||||
|
|
||||||
|
public RemoveEntityEvent(Entity entity) {
|
||||||
|
this.entity = entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entity getEntity() {
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package me.retucio.camtweaks.mixin;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.event.events.camtweaks.AddEntityEvent;
|
||||||
|
import me.retucio.camtweaks.event.events.camtweaks.RemoveEntityEvent;
|
||||||
|
import net.minecraft.client.world.ClientWorld;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import static me.retucio.camtweaks.CameraTweaks.EVENT_BUS;
|
||||||
|
|
||||||
|
@Mixin(ClientWorld.class)
|
||||||
|
public abstract class ClientWorldMixin {
|
||||||
|
|
||||||
|
@Shadow @Nullable
|
||||||
|
public abstract Entity getEntityById(int id);
|
||||||
|
|
||||||
|
@Inject(method = "addEntity", at = @At("HEAD"))
|
||||||
|
private void onEntityAdded(Entity entity, CallbackInfo ci) {
|
||||||
|
if (entity != null) EVENT_BUS.post(new AddEntityEvent(entity));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "removeEntity", at = @At("HEAD"))
|
||||||
|
private void onRemoveEntity(int entityId, Entity.RemovalReason removalReason, CallbackInfo ci) {
|
||||||
|
Entity entity = getEntityById(entityId);
|
||||||
|
if (entity != null) EVENT_BUS.post(new RemoveEntityEvent(entity));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,20 +1,23 @@
|
|||||||
package me.retucio.camtweaks.mixin;
|
package me.retucio.camtweaks.mixin;
|
||||||
|
|
||||||
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
|
|
||||||
import me.retucio.camtweaks.event.events.GetFOVEvent;
|
import me.retucio.camtweaks.event.events.GetFOVEvent;
|
||||||
import me.retucio.camtweaks.module.ModuleManager;
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
import me.retucio.camtweaks.module.modules.Freecam;
|
import me.retucio.camtweaks.module.modules.Freecam;
|
||||||
import me.retucio.camtweaks.module.modules.NoRender;
|
import me.retucio.camtweaks.module.modules.NoRender;
|
||||||
import me.retucio.camtweaks.module.modules.Zoom;
|
import me.retucio.camtweaks.module.modules.Zoom;
|
||||||
import me.retucio.camtweaks.util.interfaces.IVec3d;
|
import me.retucio.camtweaks.util.interfaces.IVec3d;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.BufferBuilderStorage;
|
import net.minecraft.client.render.BufferBuilderStorage;
|
||||||
import net.minecraft.client.render.GameRenderer;
|
import net.minecraft.client.render.GameRenderer;
|
||||||
import net.minecraft.client.render.block.BlockRenderManager;
|
import net.minecraft.client.render.block.BlockRenderManager;
|
||||||
import net.minecraft.client.render.item.HeldItemRenderer;
|
import net.minecraft.client.render.item.HeldItemRenderer;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
|
||||||
import org.joml.Matrix4f;
|
import org.joml.Matrix4f;
|
||||||
import org.joml.Vector3d;
|
import org.joml.Vector3d;
|
||||||
|
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
@@ -23,9 +26,11 @@ import org.spongepowered.asm.mixin.injection.At;
|
|||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
import org.spongepowered.asm.mixin.injection.ModifyVariable;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import com.llamalad7.mixinextras.injector.ModifyReturnValue;
|
||||||
|
|
||||||
import static me.retucio.camtweaks.CameraTweaks.EVENT_BUS;
|
import static me.retucio.camtweaks.CameraTweaks.EVENT_BUS;
|
||||||
|
|
||||||
|
|
||||||
@Mixin(GameRenderer.class)
|
@Mixin(GameRenderer.class)
|
||||||
public abstract class GameRendererMixin {
|
public abstract class GameRendererMixin {
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import me.retucio.camtweaks.module.modules.Freecam;
|
|||||||
import me.retucio.camtweaks.module.modules.Nametags;
|
import me.retucio.camtweaks.module.modules.Nametags;
|
||||||
import net.minecraft.client.render.entity.EntityRendererFactory;
|
import net.minecraft.client.render.entity.EntityRendererFactory;
|
||||||
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
import net.minecraft.client.render.entity.LivingEntityRenderer;
|
||||||
import net.minecraft.client.render.entity.PlayerEntityRenderer;
|
|
||||||
import net.minecraft.client.render.entity.model.EntityModel;
|
import net.minecraft.client.render.entity.model.EntityModel;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
@@ -19,6 +18,9 @@ import org.spongepowered.asm.mixin.Unique;
|
|||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
import static me.retucio.camtweaks.CameraTweaks.mc;
|
||||||
|
|
||||||
@Mixin(LivingEntityRenderer.class)
|
@Mixin(LivingEntityRenderer.class)
|
||||||
public abstract class LivingEntityRendererMixin<T extends LivingEntity> {
|
public abstract class LivingEntityRendererMixin<T extends LivingEntity> {
|
||||||
@@ -52,4 +54,14 @@ public abstract class LivingEntityRendererMixin<T extends LivingEntity> {
|
|||||||
if (nametags.isEnabled() && livingEntity instanceof PlayerEntity) return nametags.entities.isEnabled(EntityType.PLAYER) && original;
|
if (nametags.isEnabled() && livingEntity instanceof PlayerEntity) return nametags.entities.isEnabled(EntityType.PLAYER) && original;
|
||||||
return original;
|
return original;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "hasLabel(Lnet/minecraft/entity/LivingEntity;D)Z", at = @At("RETURN"), cancellable = true)
|
||||||
|
private void renderSelfNametag(T livingEntity, double d, CallbackInfoReturnable<Boolean> cir) {
|
||||||
|
if (livingEntity instanceof PlayerEntity player) {
|
||||||
|
if (player == mc.player && nametags.showSelf.isEnabled()) {
|
||||||
|
cir.setReturnValue(true);
|
||||||
|
cir.cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
package me.retucio.camtweaks.mixin;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.CameraTweaks;
|
||||||
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
|
import net.minecraft.SharedConstants;
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
import net.minecraft.client.gui.screen.TitleScreen;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
import static me.retucio.camtweaks.CameraTweaks.mc;
|
||||||
|
|
||||||
|
@Mixin(TitleScreen.class)
|
||||||
|
public abstract class TitleScreenMixin {
|
||||||
|
|
||||||
|
// marca de agua porque soy superguay
|
||||||
|
@Inject(method = "render", at = @At("TAIL"))
|
||||||
|
private void renderWatermark(DrawContext context, int mouseX, int mouseY, float deltaTicks, CallbackInfo ci) {
|
||||||
|
String watermark = CameraTweaks.MOD_ID + "_v" + CameraTweaks.MOD_VERSION + "_" + SharedConstants.getGameVersion().name();
|
||||||
|
context.drawText(mc.textRenderer, watermark,
|
||||||
|
mc.getWindow().getScaledWidth() - mc.textRenderer.getWidth(watermark) - 2, 2,
|
||||||
|
new Color((int) ClientSettingsFrame.guiSettings.red.getDefaultValue(),
|
||||||
|
(int) ClientSettingsFrame.guiSettings.green.getDefaultValue(),
|
||||||
|
(int) ClientSettingsFrame.guiSettings.blue.getDefaultValue(),
|
||||||
|
(int) ClientSettingsFrame.guiSettings.alpha.getDefaultValue()
|
||||||
|
).getRGB(), false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,16 +1,25 @@
|
|||||||
package me.retucio.camtweaks.mixin;
|
package me.retucio.camtweaks.mixin;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.sugar.Local;
|
||||||
|
import com.mojang.blaze3d.buffers.GpuBufferSlice;
|
||||||
|
import me.retucio.camtweaks.CameraTweaks;
|
||||||
|
import me.retucio.camtweaks.event.events.RenderWorldEvent;
|
||||||
import me.retucio.camtweaks.module.ModuleManager;
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
import me.retucio.camtweaks.module.modules.BlockOutline;
|
import me.retucio.camtweaks.module.modules.BlockOutline;
|
||||||
import me.retucio.camtweaks.module.modules.Freecam;
|
import me.retucio.camtweaks.module.modules.Freecam;
|
||||||
import me.retucio.camtweaks.module.modules.NoRender;
|
import me.retucio.camtweaks.module.modules.NoRender;
|
||||||
import net.minecraft.client.render.Camera;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.render.Frustum;
|
import net.minecraft.client.render.*;
|
||||||
import net.minecraft.client.render.VertexConsumerProvider;
|
|
||||||
import net.minecraft.client.render.WorldRenderer;
|
|
||||||
import net.minecraft.client.render.state.WorldRenderState;
|
import net.minecraft.client.render.state.WorldRenderState;
|
||||||
|
import net.minecraft.client.util.ObjectAllocator;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.util.math.ColorHelper;
|
import net.minecraft.util.math.ColorHelper;
|
||||||
|
import net.minecraft.util.math.Direction;
|
||||||
|
import net.minecraft.util.math.RotationAxis;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.minecraft.util.profiler.Profiler;
|
||||||
|
import org.joml.Matrix4f;
|
||||||
|
import org.joml.Vector4f;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
@@ -21,6 +30,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
import static me.retucio.camtweaks.CameraTweaks.EVENT_BUS;
|
||||||
|
import static me.retucio.camtweaks.CameraTweaks.mc;
|
||||||
|
|
||||||
@Mixin(WorldRenderer.class)
|
@Mixin(WorldRenderer.class)
|
||||||
public abstract class WorldRendererMixin {
|
public abstract class WorldRendererMixin {
|
||||||
|
|
||||||
@@ -29,6 +41,23 @@ public abstract class WorldRendererMixin {
|
|||||||
return ModuleManager.INSTANCE.getModuleByClass(Freecam.class).isEnabled() || spectator;
|
return ModuleManager.INSTANCE.getModuleByClass(Freecam.class).isEnabled() || spectator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "render", at = @At("RETURN"))
|
||||||
|
private void render(ObjectAllocator allocator, RenderTickCounter tickCounter, boolean renderBlockOutline, Camera camera, Matrix4f positionMatrix, Matrix4f matrix4f, Matrix4f projectionMatrix, GpuBufferSlice fogBuffer, Vector4f fogColor, boolean renderSky, CallbackInfo ci, @Local Profiler profiler) {
|
||||||
|
if (mc == null || mc.world == null) return;
|
||||||
|
|
||||||
|
MatrixStack matrices = new MatrixStack();
|
||||||
|
matrices.push();
|
||||||
|
|
||||||
|
matrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(camera.getPitch()));
|
||||||
|
matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(camera.getYaw() + 180f));
|
||||||
|
|
||||||
|
profiler.push(CameraTweaks.MOD_ID + "-3d");
|
||||||
|
EVENT_BUS.post(new RenderWorldEvent(matrices, tickCounter, camera));
|
||||||
|
|
||||||
|
profiler.pop();
|
||||||
|
matrices.pop();
|
||||||
|
}
|
||||||
|
|
||||||
@Inject(method = "renderTargetBlockOutline", at = @At("HEAD"), cancellable = true)
|
@Inject(method = "renderTargetBlockOutline", at = @At("HEAD"), cancellable = true)
|
||||||
private void noRenderBlockOutlinesFreecam(VertexConsumerProvider.Immediate immediate, MatrixStack matrices, boolean renderBlockOutline, WorldRenderState renderStates, CallbackInfo ci) {
|
private void noRenderBlockOutlinesFreecam(VertexConsumerProvider.Immediate immediate, MatrixStack matrices, boolean renderBlockOutline, WorldRenderState renderStates, CallbackInfo ci) {
|
||||||
Freecam freecam = ModuleManager.INSTANCE.getModuleByClass(Freecam.class);
|
Freecam freecam = ModuleManager.INSTANCE.getModuleByClass(Freecam.class);
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package me.retucio.camtweaks.mixin.accessor;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
||||||
|
import net.minecraft.screen.slot.Slot;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
@Mixin(HandledScreen.class)
|
||||||
|
public interface HandledScreenAccessor {
|
||||||
|
|
||||||
|
@Accessor("focusedSlot")
|
||||||
|
Slot getFocusedSlot();
|
||||||
|
}
|
||||||
@@ -37,11 +37,13 @@ public class ModuleManager {
|
|||||||
modules.add(new Fullbright());
|
modules.add(new Fullbright());
|
||||||
modules.add(new HandView());
|
modules.add(new HandView());
|
||||||
modules.add(new HUD());
|
modules.add(new HUD());
|
||||||
|
modules.add(new LogoutSpots());
|
||||||
modules.add(new Nametags());
|
modules.add(new Nametags());
|
||||||
modules.add(new NoRender());
|
modules.add(new NoRender());
|
||||||
modules.add(new PerspectivePlus());
|
modules.add(new PerspectivePlus());
|
||||||
modules.add(new PortalGUI());
|
modules.add(new PortalGUI());
|
||||||
modules.add(new ScreenshotPlus());
|
modules.add(new ScreenshotPlus());
|
||||||
|
modules.add(new ShulkerPeek());
|
||||||
modules.add(new TimeChanger());
|
modules.add(new TimeChanger());
|
||||||
// modules.add(new TooltipsPlus());
|
// modules.add(new TooltipsPlus());
|
||||||
modules.add(new Zoom());
|
modules.add(new Zoom());
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class CritsPlus extends Module {
|
|||||||
public NumberSetting multiplier; // no sé dónde se calcula cuántas partículas aparecen :/
|
public NumberSetting multiplier; // no sé dónde se calcula cuántas partículas aparecen :/
|
||||||
public NumberSetting velocityMultipler = addSetting(new NumberSetting("dispersión", "multiplicador de la velocidad de dispersión", 1, 0, 10, 0.1));
|
public NumberSetting velocityMultipler = addSetting(new NumberSetting("dispersión", "multiplicador de la velocidad de dispersión", 1, 0, 10, 0.1));
|
||||||
public NumberSetting gravity = addSetting(new NumberSetting("gravedad", "multiplicador de fuerza de gravedad", 1, 0, 10, 0.1));
|
public NumberSetting gravity = addSetting(new NumberSetting("gravedad", "multiplicador de fuerza de gravedad", 1, 0, 10, 0.1));
|
||||||
public NumberSetting maxAge = addSetting(new NumberSetting("vida máxima", "cuánto persiste la partícula", 4, 0, 50, 1));
|
public NumberSetting maxAge = addSetting(new NumberSetting("vida máxima", "cuánto persiste la partícula", 10, 0, 50, 1));
|
||||||
public BooleanSetting collide = addSetting(new BooleanSetting("colisionar", "colisionar con bloques", false));
|
public BooleanSetting collide = addSetting(new BooleanSetting("colisionar", "colisionar con bloques", false));
|
||||||
|
|
||||||
public CritsPlus() {
|
public CritsPlus() {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import me.retucio.camtweaks.module.Module;
|
|||||||
import me.retucio.camtweaks.module.settings.StringSetting;
|
import me.retucio.camtweaks.module.settings.StringSetting;
|
||||||
import net.minecraft.client.network.OtherClientPlayerEntity;
|
import net.minecraft.client.network.OtherClientPlayerEntity;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@@ -21,24 +22,28 @@ public class FakePlayer extends Module {
|
|||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
if (mc.world == null) return;
|
if (mc.world == null) return;
|
||||||
|
addPlayer(mc.player, name.getValue());
|
||||||
player = new OtherClientPlayerEntity(mc.world, new GameProfile(UUID.randomUUID(), name.getValue()));
|
|
||||||
// player.copyPositionAndRotation(mc.player);
|
|
||||||
player.copyFrom(mc.player);
|
|
||||||
|
|
||||||
mc.world.addEntity(player);
|
|
||||||
|
|
||||||
super.onEnable();
|
super.onEnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
if (mc.world == null || player == null) return;
|
if (mc.world == null || player == null) return;
|
||||||
|
removePlayer();
|
||||||
|
super.onDisable();
|
||||||
|
}
|
||||||
|
|
||||||
|
public OtherClientPlayerEntity addPlayer(PlayerEntity playerToCopy, String dummyName) {
|
||||||
|
player = new OtherClientPlayerEntity(mc.world, new GameProfile(UUID.randomUUID(), dummyName));
|
||||||
|
player.copyFrom(playerToCopy);
|
||||||
|
player.setCustomNameVisible(true);
|
||||||
|
mc.world.addEntity(player);
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removePlayer() {
|
||||||
player.setRemoved(Entity.RemovalReason.KILLED);
|
player.setRemoved(Entity.RemovalReason.KILLED);
|
||||||
player.onRemoved();
|
player.onRemoved();
|
||||||
player = null;
|
player = null;
|
||||||
|
|
||||||
super.onDisable();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@ import me.retucio.camtweaks.event.SubscribeEvent;
|
|||||||
import me.retucio.camtweaks.event.events.*;
|
import me.retucio.camtweaks.event.events.*;
|
||||||
import me.retucio.camtweaks.module.Module;
|
import me.retucio.camtweaks.module.Module;
|
||||||
import me.retucio.camtweaks.module.settings.BooleanSetting;
|
import me.retucio.camtweaks.module.settings.BooleanSetting;
|
||||||
|
import me.retucio.camtweaks.module.settings.KeySetting;
|
||||||
import me.retucio.camtweaks.module.settings.NumberSetting;
|
import me.retucio.camtweaks.module.settings.NumberSetting;
|
||||||
import me.retucio.camtweaks.util.ChatUtil;
|
import me.retucio.camtweaks.util.ChatUtil;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
import me.retucio.camtweaks.util.KeyUtil;
|
||||||
@@ -30,7 +31,6 @@ import org.lwjgl.glfw.GLFW;
|
|||||||
* @see me.retucio.camtweaks.mixin.CameraMixin
|
* @see me.retucio.camtweaks.mixin.CameraMixin
|
||||||
* @see me.retucio.camtweaks.mixin.ChunkBorderDebugRendererMixin
|
* @see me.retucio.camtweaks.mixin.ChunkBorderDebugRendererMixin
|
||||||
* @see me.retucio.camtweaks.mixin.ClientPlayerInteractionManagerMixin
|
* @see me.retucio.camtweaks.mixin.ClientPlayerInteractionManagerMixin
|
||||||
* @see me.retucio.camtweaks.mixin.CompassStateMixin
|
|
||||||
* @see me.retucio.camtweaks.mixin.EntityMixin
|
* @see me.retucio.camtweaks.mixin.EntityMixin
|
||||||
* @see me.retucio.camtweaks.mixin.GameRendererMixin
|
* @see me.retucio.camtweaks.mixin.GameRendererMixin
|
||||||
* @see me.retucio.camtweaks.mixin.KeyInputMixin
|
* @see me.retucio.camtweaks.mixin.KeyInputMixin
|
||||||
@@ -53,13 +53,13 @@ public class Freecam extends Module {
|
|||||||
public NumberSetting speedSetting = addSetting(new NumberSetting(
|
public NumberSetting speedSetting = addSetting(new NumberSetting(
|
||||||
"velocidad", "velocidad de movimiento de la cámara",
|
"velocidad", "velocidad de movimiento de la cámara",
|
||||||
1, 0, 10, 0.2));
|
1, 0, 10, 0.2));
|
||||||
|
|
||||||
|
public KeySetting scrollKey = addSetting(new KeySetting("tecla del scroll", "tecla a mantener pulsada para cambiar velocidad con el scroll", GLFW.GLFW_KEY_LEFT_CONTROL));
|
||||||
public NumberSetting scrollSens = addSetting(new NumberSetting(
|
public NumberSetting scrollSens = addSetting(new NumberSetting(
|
||||||
"sensibilidad del scroll", "sensibilidad de la rueda del ratón para modificar la velocidad, 0 para desactivar",
|
"sensibilidad del scroll", "sensibilidad de la rueda del ratón para modificar la velocidad, 0 para desactivar",
|
||||||
0, 0, 2, 0.1));
|
1, 0, 2, 0.1));
|
||||||
|
|
||||||
|
|
||||||
// rotate?
|
|
||||||
|
|
||||||
private final Vector3d prevPos = new Vector3d();
|
private final Vector3d prevPos = new Vector3d();
|
||||||
private float prevYaw, prevPitch;
|
private float prevYaw, prevPitch;
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ public class Freecam extends Module {
|
|||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
private void onMouseScroll(MouseScrollEvent event) {
|
private void onMouseScroll(MouseScrollEvent event) {
|
||||||
if (scrollSens.getValue() > 0 && mc.currentScreen == null) {
|
if (scrollSens.getValue() > 0 && mc.currentScreen == null && KeyUtil.isKeyDown(scrollKey.getKey())) {
|
||||||
speed += event.getVertical() / 4 * (scrollSens.getValue() * speed);
|
speed += event.getVertical() / 4 * (scrollSens.getValue() * speed);
|
||||||
if (speed < 0.1) speed = 0.1;
|
if (speed < 0.1) speed = 0.1;
|
||||||
event.cancel();
|
event.cancel();
|
||||||
|
|||||||
@@ -2,12 +2,13 @@ package me.retucio.camtweaks.module.modules;
|
|||||||
|
|
||||||
import me.retucio.camtweaks.module.Module;
|
import me.retucio.camtweaks.module.Module;
|
||||||
import me.retucio.camtweaks.module.settings.*;
|
import me.retucio.camtweaks.module.settings.*;
|
||||||
|
import me.retucio.camtweaks.ui.screen.HudEditorScreen;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
/** lógica del HUD manejada en:
|
/** lógica del HUD manejada en:
|
||||||
* @see me.retucio.camtweaks.ui.HudRenderer
|
* @see me.retucio.camtweaks.ui.HudRenderer
|
||||||
* @see me.retucio.camtweaks.ui.widgets.HudElement
|
* @see me.retucio.camtweaks.ui.widgets.HudElement
|
||||||
* @see me.retucio.camtweaks.ui.HudEditorScreen
|
* @see HudEditorScreen
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class HUD extends Module {
|
public class HUD extends Module {
|
||||||
@@ -27,6 +28,8 @@ public class HUD extends Module {
|
|||||||
|
|
||||||
// ajustes
|
// ajustes
|
||||||
public BooleanSetting showOnF3 = addSetting(new BooleanSetting("mostrar en F3", "renderizar HUD en el menú de debug", false));
|
public BooleanSetting showOnF3 = addSetting(new BooleanSetting("mostrar en F3", "renderizar HUD en el menú de debug", false));
|
||||||
|
public BooleanSetting showOnChat = addSetting(new BooleanSetting("mostrar en chat", "renderizar HUD en la pantalla del chat", false));
|
||||||
|
|
||||||
public BooleanSetting shadow = addSetting(new BooleanSetting("sombra", "texto con sombra", true));
|
public BooleanSetting shadow = addSetting(new BooleanSetting("sombra", "texto con sombra", true));
|
||||||
public NumberSetting timezone = addSetting(new NumberSetting("zona horaria", "zona horaria en UTC+n", 1, -6, 6, 1));
|
public NumberSetting timezone = addSetting(new NumberSetting("zona horaria", "zona horaria en UTC+n", 1, -6, 6, 1));
|
||||||
public EnumSetting<TimeFormat> timeFormat = addSetting(new EnumSetting<>("formato de la hora", "12h o 24h", TimeFormat.class, TimeFormat.TWENTY_FOUR_HOUR));
|
public EnumSetting<TimeFormat> timeFormat = addSetting(new EnumSetting<>("formato de la hora", "12h o 24h", TimeFormat.class, TimeFormat.TWENTY_FOUR_HOUR));
|
||||||
@@ -36,10 +39,10 @@ public class HUD extends Module {
|
|||||||
super("HUD", "superposición de la pantalla con info. adicional");
|
super("HUD", "superposición de la pantalla con info. adicional");
|
||||||
|
|
||||||
rainbow.onUpdate(v -> {
|
rainbow.onUpdate(v -> {
|
||||||
|
rainbowSpeed.setVisible(v);
|
||||||
red.setVisible(!v);
|
red.setVisible(!v);
|
||||||
green.setVisible(!v);
|
green.setVisible(!v);
|
||||||
blue.setVisible(!v);
|
blue.setVisible(!v);
|
||||||
rainbowSpeed.setVisible(v);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,119 @@
|
|||||||
|
package me.retucio.camtweaks.module.modules;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.event.SubscribeEvent;
|
||||||
|
import me.retucio.camtweaks.event.events.KeyEvent;
|
||||||
|
import me.retucio.camtweaks.event.events.RenderWorldEvent;
|
||||||
|
import me.retucio.camtweaks.event.events.camtweaks.AddEntityEvent;
|
||||||
|
import me.retucio.camtweaks.event.events.camtweaks.RemoveEntityEvent;
|
||||||
|
import me.retucio.camtweaks.module.Module;
|
||||||
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
|
import me.retucio.camtweaks.module.settings.BooleanSetting;
|
||||||
|
import me.retucio.camtweaks.module.settings.KeySetting;
|
||||||
|
import me.retucio.camtweaks.module.settings.NumberSetting;
|
||||||
|
import me.retucio.camtweaks.util.render.RenderUtil;
|
||||||
|
|
||||||
|
import net.minecraft.client.network.OtherClientPlayerEntity;
|
||||||
|
import net.minecraft.client.render.*;
|
||||||
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
|
||||||
|
import org.joml.*;
|
||||||
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
public class LogoutSpots extends Module {
|
||||||
|
|
||||||
|
public KeySetting clearBoxesKey = addSetting(new KeySetting("vaciar cajas", "tecla asignada a olvidar todas las cajas activas", GLFW.GLFW_KEY_UNKNOWN));
|
||||||
|
|
||||||
|
public BooleanSetting filledBox = addSetting(new BooleanSetting("caja rellena", "rellenar caja", true));
|
||||||
|
public BooleanSetting outlineBox = addSetting(new BooleanSetting("caja de esquinas", "contorno de caja", true));
|
||||||
|
|
||||||
|
public NumberSetting red = addSetting(new NumberSetting("rojo", "cantidad de rojo", 200, 0, 255, 1));
|
||||||
|
public NumberSetting green = addSetting(new NumberSetting("verde", "cantidad de verde", 90, 0, 255, 1));
|
||||||
|
public NumberSetting blue = addSetting(new NumberSetting("azul", "cantidad de azul", 255, 0, 255, 1));
|
||||||
|
public NumberSetting alpha = addSetting(new NumberSetting("opacidad", "antitransparencia", 50, 0, 255, 1));
|
||||||
|
|
||||||
|
public NumberSetting lineWidth = addSetting(new NumberSetting("grosor", "grosor de las líneas a dibujar", 2, 1, 10, 0.5f));
|
||||||
|
|
||||||
|
private final List<LogoutBox> boxes = new ArrayList<>();
|
||||||
|
|
||||||
|
public LogoutSpots() {
|
||||||
|
super("puntos de desconexión", "te muestra los puntos donde se desconectan los jugadores");
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onWorldRender(RenderWorldEvent event) {
|
||||||
|
if (mc.player == null || mc.world == null) return;
|
||||||
|
|
||||||
|
int r = red.getIntValue();
|
||||||
|
int g = green.getIntValue();
|
||||||
|
int b = blue.getIntValue();
|
||||||
|
int a = alpha.getIntValue();
|
||||||
|
|
||||||
|
MatrixStack matrices = event.getMatrices();
|
||||||
|
|
||||||
|
for (LogoutBox box : boxes) {
|
||||||
|
if (filledBox.isEnabled())
|
||||||
|
RenderUtil.drawFilledBox(matrices, box.dummy.getBoundingBox(), new Color(r, g, b, a));
|
||||||
|
if (outlineBox.isEnabled())
|
||||||
|
RenderUtil.drawOutlineBox(matrices, box.dummy.getBoundingBox(), new Color(r, g, b, a), lineWidth.getFloatValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onEntityRemoved(RemoveEntityEvent event) {
|
||||||
|
if (event.getEntity() instanceof PlayerEntity player && player != mc.player) {
|
||||||
|
String playerName = player.getName().getString() + " (" + getLogoutTime(System.currentTimeMillis()) + ")";
|
||||||
|
|
||||||
|
boxes.add(new LogoutBox(
|
||||||
|
ModuleManager.INSTANCE.getModuleByClass(FakePlayer.class).addPlayer(player, playerName),
|
||||||
|
System.currentTimeMillis()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onEntityAdded(AddEntityEvent event) {
|
||||||
|
boxes.removeIf(box -> event.getEntity().getUuid().equals(box.dummy.getUuid()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onKey(KeyEvent event) {
|
||||||
|
if (event.getKey() == clearBoxesKey.getKey()) {
|
||||||
|
boxes.forEach(box -> {
|
||||||
|
box.dummy.setRemoved(Entity.RemovalReason.KILLED);
|
||||||
|
box.dummy.onRemoved();
|
||||||
|
});
|
||||||
|
|
||||||
|
boxes.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getLogoutTime(long logoutTimeMillis) {
|
||||||
|
HUD hud = ModuleManager.INSTANCE.getModuleByClass(HUD.class);
|
||||||
|
|
||||||
|
Instant instant = Instant.ofEpochMilli(logoutTimeMillis);
|
||||||
|
|
||||||
|
ZoneOffset offset = ZoneOffset.ofHours(hud.timezone.getIntValue());
|
||||||
|
LocalTime logoutTime = LocalTime.from(instant.atOffset(offset));
|
||||||
|
|
||||||
|
boolean is24 = hud.timeFormat.is(HUD.TimeFormat.TWENTY_FOUR_HOUR);
|
||||||
|
DateTimeFormatter format = DateTimeFormatter.ofPattern(is24 ? "HH:mm" : "hh:mm a");
|
||||||
|
|
||||||
|
return logoutTime.format(format);
|
||||||
|
}
|
||||||
|
|
||||||
|
public record LogoutBox(
|
||||||
|
OtherClientPlayerEntity dummy,
|
||||||
|
long logoutTime
|
||||||
|
) {}
|
||||||
|
}
|
||||||
@@ -51,6 +51,7 @@ public class Nametags extends Module {
|
|||||||
Lists.itemList, Lists.allTrue(Lists.itemList), Lists.itemNames));
|
Lists.itemList, Lists.allTrue(Lists.itemList), Lists.itemNames));
|
||||||
public BooleanSetting showProjectileDamage = addSetting(new BooleanSetting("daño del proyectil", "muestra cuánto daño hace un proyectil en su nametag", true));
|
public BooleanSetting showProjectileDamage = addSetting(new BooleanSetting("daño del proyectil", "muestra cuánto daño hace un proyectil en su nametag", true));
|
||||||
|
|
||||||
|
public BooleanSetting showSelf = addSetting(new BooleanSetting("mostrar propio", "mostrar nametag propio", false));
|
||||||
public BooleanSetting distinguishBabies = addSetting(new BooleanSetting("distinguir bebés", "cambia el nametag cuando una entidad está en su fase bebé", false));
|
public BooleanSetting distinguishBabies = addSetting(new BooleanSetting("distinguir bebés", "cambia el nametag cuando una entidad está en su fase bebé", false));
|
||||||
public BooleanSetting petOwner = addSetting(new BooleanSetting("mostrar dueño", "muestra el dueño de una mascota (no funciona en servers no premium)", false));
|
public BooleanSetting petOwner = addSetting(new BooleanSetting("mostrar dueño", "muestra el dueño de una mascota (no funciona en servers no premium)", false));
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,98 @@
|
|||||||
|
package me.retucio.camtweaks.module.modules;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.event.SubscribeEvent;
|
||||||
|
import me.retucio.camtweaks.event.events.KeyEvent;
|
||||||
|
import me.retucio.camtweaks.mixin.accessor.HandledScreenAccessor;
|
||||||
|
import me.retucio.camtweaks.module.Module;
|
||||||
|
import me.retucio.camtweaks.module.settings.KeySetting;
|
||||||
|
import me.retucio.camtweaks.ui.screen.ShulkerPreviewScreen;
|
||||||
|
|
||||||
|
import net.minecraft.block.ShulkerBoxBlock;
|
||||||
|
import net.minecraft.client.gui.screen.ingame.HandledScreen;
|
||||||
|
import net.minecraft.component.DataComponentTypes;
|
||||||
|
import net.minecraft.component.type.ContainerComponent;
|
||||||
|
import net.minecraft.item.BlockItem;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
|
import net.minecraft.screen.slot.Slot;
|
||||||
|
|
||||||
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class ShulkerPeek extends Module {
|
||||||
|
|
||||||
|
public KeySetting previewKey = addSetting(new KeySetting("tecla de previsualización", "tecla a mantener para previsualizar", GLFW.GLFW_KEY_LEFT_ALT));
|
||||||
|
|
||||||
|
public static final HashMap<Item, Color> SHULKER_COLORS = new HashMap<>();
|
||||||
|
|
||||||
|
public ShulkerPeek() {
|
||||||
|
super("prev. de shulkers", "te permite previsualizar el contenido de shulkers desde el inventario");
|
||||||
|
|
||||||
|
// colores y tal (https://github.com/kgriff0n/shulker-preview)
|
||||||
|
SHULKER_COLORS.put(Items.SHULKER_BOX, new Color(142, 108, 142));
|
||||||
|
SHULKER_COLORS.put(Items.WHITE_SHULKER_BOX, new Color(225, 230, 230));
|
||||||
|
SHULKER_COLORS.put(Items.LIGHT_GRAY_SHULKER_BOX, new Color(137, 137, 128));
|
||||||
|
SHULKER_COLORS.put(Items.GRAY_SHULKER_BOX, new Color(60, 65, 68));
|
||||||
|
SHULKER_COLORS.put(Items.BLACK_SHULKER_BOX, new Color(31, 31, 35));
|
||||||
|
SHULKER_COLORS.put(Items.BROWN_SHULKER_BOX, new Color(113, 70, 39));
|
||||||
|
SHULKER_COLORS.put(Items.RED_SHULKER_BOX, new Color(152, 36, 34));
|
||||||
|
SHULKER_COLORS.put(Items.ORANGE_SHULKER_BOX, new Color(241, 114, 15));
|
||||||
|
SHULKER_COLORS.put(Items.YELLOW_SHULKER_BOX, new Color(249, 196, 35));
|
||||||
|
SHULKER_COLORS.put(Items.LIME_SHULKER_BOX, new Color(110, 185, 24));
|
||||||
|
SHULKER_COLORS.put(Items.GREEN_SHULKER_BOX, new Color(83, 107, 29));
|
||||||
|
SHULKER_COLORS.put(Items.CYAN_SHULKER_BOX, new Color(22, 133, 144));
|
||||||
|
SHULKER_COLORS.put(Items.LIGHT_BLUE_SHULKER_BOX, new Color(57, 177, 215));
|
||||||
|
SHULKER_COLORS.put(Items.BLUE_SHULKER_BOX, new Color(49, 52, 152));
|
||||||
|
SHULKER_COLORS.put(Items.PURPLE_SHULKER_BOX, new Color(113, 37, 166));
|
||||||
|
SHULKER_COLORS.put(Items.MAGENTA_SHULKER_BOX, new Color(183, 61, 172));
|
||||||
|
SHULKER_COLORS.put(Items.PINK_SHULKER_BOX, new Color(239, 135, 166));
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void onKey(KeyEvent event) {
|
||||||
|
if (mc.player == null) return;
|
||||||
|
if (event.getKey() != previewKey.getKey()) return;
|
||||||
|
|
||||||
|
if (event.getAction() == GLFW.GLFW_PRESS) {
|
||||||
|
openPreviewScreen();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getAction() == GLFW.GLFW_REPEAT) {
|
||||||
|
if (!(mc.currentScreen instanceof ShulkerPreviewScreen)) {
|
||||||
|
openPreviewScreen();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.getAction() == GLFW.GLFW_RELEASE) {
|
||||||
|
if (mc.currentScreen instanceof ShulkerPreviewScreen preview)
|
||||||
|
preview.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openPreviewScreen() {
|
||||||
|
if (!(mc.currentScreen instanceof HandledScreen<?> prevScreen)) return;
|
||||||
|
|
||||||
|
Slot focusedSlot = ((HandledScreenAccessor) prevScreen).getFocusedSlot();
|
||||||
|
if (focusedSlot == null) return;
|
||||||
|
|
||||||
|
ItemStack stack = focusedSlot.getStack();
|
||||||
|
if (isShulkerEmpty(stack)) return;
|
||||||
|
|
||||||
|
mc.setScreen(new ShulkerPreviewScreen(stack, prevScreen));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isShulkerEmpty(ItemStack stack) {
|
||||||
|
if (!(stack.getItem() instanceof BlockItem blockItem)) return true;
|
||||||
|
if (!(blockItem.getBlock() instanceof ShulkerBoxBlock)) return true;
|
||||||
|
|
||||||
|
ContainerComponent container = stack.get(DataComponentTypes.CONTAINER);
|
||||||
|
if (container == null) return true;
|
||||||
|
|
||||||
|
return container.stream().allMatch(ItemStack::isEmpty);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package me.retucio.camtweaks.ui;
|
package me.retucio.camtweaks.ui;
|
||||||
|
|
||||||
import me.retucio.camtweaks.CameraTweaks;
|
|
||||||
import me.retucio.camtweaks.config.ConfigManager;
|
import me.retucio.camtweaks.config.ConfigManager;
|
||||||
import me.retucio.camtweaks.event.SubscribeEvent;
|
import me.retucio.camtweaks.event.SubscribeEvent;
|
||||||
import me.retucio.camtweaks.event.events.PacketEvent;
|
import me.retucio.camtweaks.event.events.PacketEvent;
|
||||||
@@ -8,10 +7,12 @@ import me.retucio.camtweaks.event.events.camtweaks.UpdateSettingEvent;
|
|||||||
import me.retucio.camtweaks.module.ModuleManager;
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
import me.retucio.camtweaks.module.modules.Freecam;
|
import me.retucio.camtweaks.module.modules.Freecam;
|
||||||
import me.retucio.camtweaks.module.modules.HUD;
|
import me.retucio.camtweaks.module.modules.HUD;
|
||||||
|
import me.retucio.camtweaks.ui.screen.HudEditorScreen;
|
||||||
import me.retucio.camtweaks.ui.widgets.HudElement;
|
import me.retucio.camtweaks.ui.widgets.HudElement;
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
import net.minecraft.client.gui.screen.ChatScreen;
|
||||||
import net.minecraft.client.gui.screen.TitleScreen;
|
import net.minecraft.client.gui.screen.TitleScreen;
|
||||||
import net.minecraft.client.render.RenderTickCounter;
|
import net.minecraft.client.render.RenderTickCounter;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
@@ -131,6 +132,7 @@ public class HudRenderer {
|
|||||||
HUD hud = ModuleManager.INSTANCE.getModuleByClass(HUD.class);
|
HUD hud = ModuleManager.INSTANCE.getModuleByClass(HUD.class);
|
||||||
if (!hud.isEnabled()) return;
|
if (!hud.isEnabled()) return;
|
||||||
if (mc.getDebugHud().shouldShowDebugHud() && !hud.showOnF3.isEnabled()) return;
|
if (mc.getDebugHud().shouldShowDebugHud() && !hud.showOnF3.isEnabled()) return;
|
||||||
|
if (mc.currentScreen instanceof ChatScreen && !hud.showOnChat.isEnabled()) return;
|
||||||
|
|
||||||
initElements();
|
initElements();
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +1,15 @@
|
|||||||
package me.retucio.camtweaks.ui.buttons;
|
package me.retucio.camtweaks.ui.buttons;
|
||||||
|
|
||||||
import me.retucio.camtweaks.module.settings.KeySetting;
|
import me.retucio.camtweaks.module.settings.KeySetting;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
import me.retucio.camtweaks.util.ChatUtil;
|
import me.retucio.camtweaks.util.ChatUtil;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.client.input.KeyInput;
|
import net.minecraft.client.input.KeyInput;
|
||||||
import net.minecraft.client.option.KeyBinding;
|
import net.minecraft.client.option.KeyBinding;
|
||||||
import net.minecraft.client.resource.language.I18n;
|
import net.minecraft.client.resource.language.I18n;
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package me.retucio.camtweaks.ui.buttons;
|
package me.retucio.camtweaks.ui.buttons;
|
||||||
|
|
||||||
import me.retucio.camtweaks.module.settings.EnumSetting;
|
import me.retucio.camtweaks.module.settings.EnumSetting;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
import me.retucio.camtweaks.util.KeyUtil;
|
||||||
|
|||||||
@@ -3,13 +3,11 @@ package me.retucio.camtweaks.ui.buttons;
|
|||||||
import me.retucio.camtweaks.module.Module;
|
import me.retucio.camtweaks.module.Module;
|
||||||
import me.retucio.camtweaks.module.settings.BooleanSetting;
|
import me.retucio.camtweaks.module.settings.BooleanSetting;
|
||||||
import me.retucio.camtweaks.module.settings.ListSetting;
|
import me.retucio.camtweaks.module.settings.ListSetting;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import org.lwjgl.glfw.GLFW;
|
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -60,7 +58,7 @@ public class ListButton<T> extends SettingButton {
|
|||||||
@Override
|
@Override
|
||||||
public void drawTooltip(DrawContext ctx, double mouseX, double mouseY) {
|
public void drawTooltip(DrawContext ctx, double mouseX, double mouseY) {
|
||||||
if (isHovered(mouseX, mouseY))
|
if (isHovered(mouseX, mouseY))
|
||||||
ctx.drawTooltip(Text.of(setting.getDescription() + "( " + countEnabled() + " de " + setting.getOptions().size() + ")"), (int) mouseX, (int) mouseY);
|
ctx.drawTooltip(Text.of(setting.getDescription() + " (" + countEnabled() + " de " + setting.getOptions().size() + ")"), (int) mouseX, (int) mouseY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
package me.retucio.camtweaks.ui.buttons;
|
package me.retucio.camtweaks.ui.buttons;
|
||||||
|
|
||||||
import me.retucio.camtweaks.module.Module;
|
import me.retucio.camtweaks.module.Module;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.ModuleFrame;
|
import me.retucio.camtweaks.ui.frames.ModuleFrame;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
// clase para el botón para cada módulo
|
// clase para el botón para cada módulo
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
package me.retucio.camtweaks.ui.buttons;
|
package me.retucio.camtweaks.ui.buttons;
|
||||||
|
|
||||||
import me.retucio.camtweaks.module.settings.AbstractSetting;
|
import me.retucio.camtweaks.module.settings.AbstractSetting;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
// clase base para los botones de los ajustes
|
// clase base para los botones de los ajustes
|
||||||
|
|||||||
@@ -3,14 +3,11 @@ package me.retucio.camtweaks.ui.buttons;
|
|||||||
import me.retucio.camtweaks.event.SubscribeEvent;
|
import me.retucio.camtweaks.event.SubscribeEvent;
|
||||||
import me.retucio.camtweaks.event.events.KeyEvent;
|
import me.retucio.camtweaks.event.events.KeyEvent;
|
||||||
import me.retucio.camtweaks.module.settings.NumberSetting;
|
import me.retucio.camtweaks.module.settings.NumberSetting;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
package me.retucio.camtweaks.ui.buttons;
|
package me.retucio.camtweaks.ui.buttons;
|
||||||
|
|
||||||
import me.retucio.camtweaks.module.settings.StringSetting;
|
import me.retucio.camtweaks.module.settings.StringSetting;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
import me.retucio.camtweaks.util.KeyUtil;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
import static me.retucio.camtweaks.CameraTweaks.mc;
|
import static me.retucio.camtweaks.CameraTweaks.mc;
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
package me.retucio.camtweaks.ui.buttons;
|
package me.retucio.camtweaks.ui.buttons;
|
||||||
|
|
||||||
import me.retucio.camtweaks.module.settings.BooleanSetting;
|
import me.retucio.camtweaks.module.settings.BooleanSetting;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
import me.retucio.camtweaks.ui.frames.SettingsFrame;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
|
||||||
import net.minecraft.text.Text;
|
|
||||||
import org.lwjgl.glfw.GLFW;
|
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package me.retucio.camtweaks.ui.frames;
|
|||||||
import me.retucio.camtweaks.CameraTweaks;
|
import me.retucio.camtweaks.CameraTweaks;
|
||||||
import me.retucio.camtweaks.event.events.camtweaks.GUISettingsFrameEvent;
|
import me.retucio.camtweaks.event.events.camtweaks.GUISettingsFrameEvent;
|
||||||
import me.retucio.camtweaks.module.modules.GUI;
|
import me.retucio.camtweaks.module.modules.GUI;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.buttons.SettingButton;
|
import me.retucio.camtweaks.ui.buttons.SettingButton;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import me.retucio.camtweaks.CameraTweaks;
|
|||||||
import me.retucio.camtweaks.event.events.camtweaks.ModuleFrameEvent;
|
import me.retucio.camtweaks.event.events.camtweaks.ModuleFrameEvent;
|
||||||
import me.retucio.camtweaks.module.Module;
|
import me.retucio.camtweaks.module.Module;
|
||||||
import me.retucio.camtweaks.module.ModuleManager;
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.buttons.ModuleButton;
|
import me.retucio.camtweaks.ui.buttons.ModuleButton;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import me.retucio.camtweaks.CameraTweaks;
|
|||||||
import me.retucio.camtweaks.event.events.camtweaks.SettingsFrameEvent;
|
import me.retucio.camtweaks.event.events.camtweaks.SettingsFrameEvent;
|
||||||
import me.retucio.camtweaks.module.Module;
|
import me.retucio.camtweaks.module.Module;
|
||||||
import me.retucio.camtweaks.module.settings.*;
|
import me.retucio.camtweaks.module.settings.*;
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.buttons.*;
|
import me.retucio.camtweaks.ui.buttons.*;
|
||||||
import me.retucio.camtweaks.ui.buttons.SliderButton;
|
import me.retucio.camtweaks.ui.buttons.SliderButton;
|
||||||
import me.retucio.camtweaks.ui.buttons.TextButton;
|
import me.retucio.camtweaks.ui.buttons.TextButton;
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package me.retucio.camtweaks.ui;
|
package me.retucio.camtweaks.ui.screen;
|
||||||
|
|
||||||
import me.retucio.camtweaks.CameraTweaks;
|
import me.retucio.camtweaks.CameraTweaks;
|
||||||
import me.retucio.camtweaks.event.SubscribeEvent;
|
import me.retucio.camtweaks.event.SubscribeEvent;
|
||||||
+1
-3
@@ -1,10 +1,9 @@
|
|||||||
package me.retucio.camtweaks.ui;
|
package me.retucio.camtweaks.ui.screen;
|
||||||
|
|
||||||
import me.retucio.camtweaks.config.ConfigManager;
|
import me.retucio.camtweaks.config.ConfigManager;
|
||||||
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
import me.retucio.camtweaks.ui.widgets.HudElement;
|
import me.retucio.camtweaks.ui.widgets.HudElement;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.Click;
|
import net.minecraft.client.gui.Click;
|
||||||
@@ -16,7 +15,6 @@ import net.minecraft.text.Text;
|
|||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
package me.retucio.camtweaks.ui.screen;
|
||||||
|
|
||||||
|
import me.retucio.camtweaks.CameraTweaks;
|
||||||
|
import me.retucio.camtweaks.module.modules.ShulkerPeek;
|
||||||
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
|
import me.retucio.camtweaks.util.Colors;
|
||||||
|
import net.minecraft.client.gl.RenderPipelines;
|
||||||
|
import net.minecraft.client.gui.DrawContext;
|
||||||
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
|
import net.minecraft.component.DataComponentTypes;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
// https://github.com/kgriff0n/shulker-preview/blob/master/src/main/java/io/github/kgriff0n/screen/FakeShulkerScreen.java
|
||||||
|
public class ShulkerPreviewScreen extends Screen {
|
||||||
|
|
||||||
|
private static final Identifier TEXTURE = Identifier.of(CameraTweaks.MOD_ID, "textures/gui/shulker.png");
|
||||||
|
|
||||||
|
private int x, y;
|
||||||
|
private final int bgWidth = 176;
|
||||||
|
private final int bgHeight = 78;
|
||||||
|
|
||||||
|
private final Color color;
|
||||||
|
private final Text title;
|
||||||
|
private final List<ItemStack> inventory;
|
||||||
|
private final Screen parent;
|
||||||
|
|
||||||
|
public ShulkerPreviewScreen(ItemStack shulker, Screen parent) {
|
||||||
|
super(Text.literal("previsualización del shulker"));
|
||||||
|
this.color = ShulkerPeek.SHULKER_COLORS.get(shulker.getItem());
|
||||||
|
this.title = shulker.getName();
|
||||||
|
this.inventory = shulker.get(DataComponentTypes.CONTAINER).stream().toList();
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void init() {
|
||||||
|
this.x = (width - bgWidth) / 2;
|
||||||
|
this.y = (height - bgHeight) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void render(DrawContext ctx, int mouseX, int mouseY, float delta) {
|
||||||
|
super.render(ctx, mouseX, mouseY, delta);
|
||||||
|
|
||||||
|
this.renderBackground(ctx, mouseX, mouseY, delta);
|
||||||
|
this.renderItems(ctx, inventory, x + 8, y + 18);
|
||||||
|
|
||||||
|
int selectedSlot = getSlot(mouseX, mouseY);
|
||||||
|
if (selectedSlot > -1 && selectedSlot < inventory.size() && !inventory.get(selectedSlot).isOf(Items.AIR))
|
||||||
|
renderTooltip(ctx, inventory.get(selectedSlot), mouseX, mouseY);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderBackground(DrawContext ctx, int mouseX, int mouseY, float delta) {
|
||||||
|
ctx.fill(0, 0, width, height, Colors.hudEditorScreenBackgroundColor.getRGB());
|
||||||
|
ctx.drawTexture(RenderPipelines.GUI_TEXTURED, TEXTURE, x, y, 0, 0, bgWidth, bgHeight, 256, 256, color.getRGB());
|
||||||
|
ctx.drawText(textRenderer, title, x + 8, y + 6, Colors.instructionsTextColor.getRGB(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderItems(DrawContext context, List<ItemStack> inventory, int x, int y) {
|
||||||
|
int baseX = x;
|
||||||
|
int count = 0;
|
||||||
|
for (ItemStack item : inventory) {
|
||||||
|
count++;
|
||||||
|
context.drawItem(item, x, y);
|
||||||
|
context.drawStackOverlay(textRenderer, item, x, y);
|
||||||
|
x += 18;
|
||||||
|
if (count % 9 == 0) {
|
||||||
|
x = baseX;
|
||||||
|
y += 18;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getSlot(int i, int j) {
|
||||||
|
int x = this.x + 7;
|
||||||
|
int y = this.y + 17;
|
||||||
|
|
||||||
|
int slotX = (i - x) / 18;
|
||||||
|
int slotY = (j - y) / 18;
|
||||||
|
|
||||||
|
if (i < x || j < y || i > x + 9 * 18 - 1 || j > y + 3 * 18 - 1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return slotX + slotY * 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void renderTooltip(DrawContext ctx, ItemStack stack, int x, int y) {
|
||||||
|
ctx.drawItemTooltip(textRenderer, stack, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
client.setScreen(parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void applyBlur(DrawContext ctx) {
|
||||||
|
if (ClientSettingsFrame.guiSettings.blur.isEnabled()) super.applyBlur(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldPause() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@ package me.retucio.camtweaks.ui.widgets;
|
|||||||
|
|
||||||
import me.retucio.camtweaks.module.ModuleManager;
|
import me.retucio.camtweaks.module.ModuleManager;
|
||||||
import me.retucio.camtweaks.module.modules.HUD;
|
import me.retucio.camtweaks.module.modules.HUD;
|
||||||
import me.retucio.camtweaks.ui.HudEditorScreen;
|
import me.retucio.camtweaks.ui.screen.HudEditorScreen;
|
||||||
import me.retucio.camtweaks.ui.HudRenderer;
|
import me.retucio.camtweaks.ui.HudRenderer;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
|
|
||||||
@@ -10,11 +10,6 @@ import net.minecraft.client.MinecraftClient;
|
|||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.time.ZoneOffset;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
|
|
||||||
|
|
||||||
public class HudElement {
|
public class HudElement {
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package me.retucio.camtweaks.ui.widgets;
|
package me.retucio.camtweaks.ui.widgets;
|
||||||
|
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
package me.retucio.camtweaks.ui.widgets;
|
package me.retucio.camtweaks.ui.widgets;
|
||||||
|
|
||||||
import me.retucio.camtweaks.ui.ClickGUI;
|
import me.retucio.camtweaks.ui.screen.ClickGUI;
|
||||||
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
import me.retucio.camtweaks.ui.frames.ClientSettingsFrame;
|
||||||
import me.retucio.camtweaks.util.ChatUtil;
|
|
||||||
import me.retucio.camtweaks.util.Colors;
|
import me.retucio.camtweaks.util.Colors;
|
||||||
import me.retucio.camtweaks.util.KeyUtil;
|
import me.retucio.camtweaks.util.KeyUtil;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
@@ -56,7 +55,7 @@ public class SearchBarWidget {
|
|||||||
ctx.drawHorizontalLine(x + 4, x + 16, renderY + 3 * i + 5, Color.LIGHT_GRAY.getRGB());
|
ctx.drawHorizontalLine(x + 4, x + 16, renderY + 3 * i + 5, Color.LIGHT_GRAY.getRGB());
|
||||||
|
|
||||||
// texto
|
// texto
|
||||||
Text label = Text.literal(focused ? buffer + "_" : (buffer.isEmpty() ? Formatting.ITALIC + "buscar..." : buffer.toString()));
|
Text label = Text.literal(focused ? buffer + "_" : (buffer.isEmpty() ? Formatting.ITALIC + "\uD83D\uDD0D buscar..." : buffer.toString()));
|
||||||
ctx.drawText(mc.textRenderer, label,
|
ctx.drawText(mc.textRenderer, label,
|
||||||
x + 24, renderY + h / 2 - mc.textRenderer.fontHeight / 2,
|
x + 24, renderY + h / 2 - mc.textRenderer.fontHeight / 2,
|
||||||
(buffer.isEmpty() && !focused) ? Color.LIGHT_GRAY.getRGB() : -1, true);
|
(buffer.isEmpty() && !focused) ? Color.LIGHT_GRAY.getRGB() : -1, true);
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
package me.retucio.camtweaks.util.render;
|
||||||
|
|
||||||
|
import net.minecraft.client.render.RenderLayer;
|
||||||
|
import net.minecraft.client.render.RenderPhase;
|
||||||
|
import net.minecraft.util.Util;
|
||||||
|
|
||||||
|
import java.util.OptionalDouble;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import static me.retucio.camtweaks.util.render.Pipelines.GLOBAL_LINES_PIPELINE;
|
||||||
|
import static me.retucio.camtweaks.util.render.Pipelines.GLOBAL_QUADS_PIPELINE;
|
||||||
|
|
||||||
|
public class Layers {
|
||||||
|
|
||||||
|
private static final RenderLayer GLOBAL_QUADS;
|
||||||
|
private static final Function<Double, RenderLayer> GLOBAL_LINES;
|
||||||
|
|
||||||
|
public static RenderLayer getGlobalLines(double width) {
|
||||||
|
return GLOBAL_LINES.apply(width);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RenderLayer getGlobalQuads() {
|
||||||
|
return GLOBAL_QUADS;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static RenderLayer.MultiPhaseParameters.Builder builder() {
|
||||||
|
return RenderLayer.MultiPhaseParameters.builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static RenderLayer.MultiPhaseParameters empty() {
|
||||||
|
return builder().build(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
GLOBAL_QUADS = RenderLayer.of("global_fill", 156, GLOBAL_QUADS_PIPELINE, empty());
|
||||||
|
|
||||||
|
GLOBAL_LINES = Util.memoize(l -> {
|
||||||
|
RenderPhase.LineWidth width = new RenderPhase.LineWidth(OptionalDouble.of(l));
|
||||||
|
return RenderLayer.of("global_lines", 156, GLOBAL_LINES_PIPELINE, builder().lineWidth(width).build(false));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
package me.retucio.camtweaks.util.render;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.pipeline.BlendFunction;
|
||||||
|
import com.mojang.blaze3d.pipeline.RenderPipeline;
|
||||||
|
import com.mojang.blaze3d.platform.DepthTestFunction;
|
||||||
|
import com.mojang.blaze3d.vertex.VertexFormat;
|
||||||
|
import me.retucio.camtweaks.CameraTweaks;
|
||||||
|
import net.minecraft.client.gl.RenderPipelines;
|
||||||
|
import net.minecraft.client.render.RenderLayer;
|
||||||
|
import net.minecraft.client.render.RenderPhase;
|
||||||
|
import net.minecraft.client.render.VertexFormats;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.util.Util;
|
||||||
|
|
||||||
|
import java.util.OptionalDouble;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
|
||||||
|
public class Pipelines {
|
||||||
|
|
||||||
|
static final RenderPipeline GLOBAL_LINES_PIPELINE = RenderPipeline.builder(RenderPipelines.RENDERTYPE_LINES_SNIPPET)
|
||||||
|
.withLocation(Identifier.of(CameraTweaks.MOD_ID, "pipeline/global_lines"))
|
||||||
|
.withVertexFormat(VertexFormats.POSITION_COLOR_NORMAL, VertexFormat.DrawMode.LINES)
|
||||||
|
.withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST)
|
||||||
|
.withDepthWrite(false)
|
||||||
|
.withCull(false)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
static final RenderPipeline GLOBAL_QUADS_PIPELINE = RenderPipeline.builder(RenderPipelines.POSITION_COLOR_SNIPPET)
|
||||||
|
.withLocation("pipeline/global_fill_pipeline")
|
||||||
|
.withVertexFormat(VertexFormats.POSITION_COLOR, VertexFormat.DrawMode.QUADS)
|
||||||
|
.withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST)
|
||||||
|
.withBlend(BlendFunction.TRANSLUCENT)
|
||||||
|
.withDepthWrite(false)
|
||||||
|
.withCull(false)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
static final Function<Double, RenderLayer> GLOBAL_LINES_LAYER = Util.memoize(lineWidth -> {
|
||||||
|
RenderPhase.LineWidth lineState = new RenderPhase.LineWidth(OptionalDouble.of(lineWidth));
|
||||||
|
RenderLayer.MultiPhaseParameters compositeState = RenderLayer.MultiPhaseParameters.builder()
|
||||||
|
.lineWidth(lineState)
|
||||||
|
.build(false);
|
||||||
|
return RenderLayer.of("global_lines", RenderLayer.DEFAULT_BUFFER_SIZE, GLOBAL_LINES_PIPELINE, compositeState);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static RenderLayer getGlobalLinesLayer(double lineWidth) {
|
||||||
|
return GLOBAL_LINES_LAYER.apply(lineWidth);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
package me.retucio.camtweaks.util.render;
|
||||||
|
|
||||||
|
import com.mojang.blaze3d.vertex.VertexFormat;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.render.*;
|
||||||
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
import net.minecraft.util.math.Box;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
// literalmente robado de https://github.com/mioclient/oyvey-ported/ (perdón)
|
||||||
|
public class RenderUtil {
|
||||||
|
|
||||||
|
private static final MinecraftClient mc = MinecraftClient.getInstance();
|
||||||
|
private static final Tessellator tesselator = Tessellator.getInstance();
|
||||||
|
|
||||||
|
public static void drawOutlineBox(MatrixStack stack, Box box, Color color, double lineWidth) {
|
||||||
|
float r = color.getRed() / 255f;
|
||||||
|
float g = color.getGreen() / 255f;
|
||||||
|
float b = color.getBlue() / 255f;
|
||||||
|
float a = color.getAlpha() / 255f;
|
||||||
|
|
||||||
|
Vec3d cameraPos = mc.gameRenderer.getCamera().getPos();
|
||||||
|
float minX = (float) (box.minX - cameraPos.x);
|
||||||
|
float minY = (float) (box.minY - cameraPos.y);
|
||||||
|
float minZ = (float) (box.minZ - cameraPos.z);
|
||||||
|
float maxX = (float) (box.maxX - cameraPos.x);
|
||||||
|
float maxY = (float) (box.maxY - cameraPos.y);
|
||||||
|
float maxZ = (float) (box.maxZ - cameraPos.z);
|
||||||
|
|
||||||
|
BufferBuilder buffer = tesselator.begin(VertexFormat.DrawMode.LINES, VertexFormats.POSITION_COLOR_NORMAL);
|
||||||
|
|
||||||
|
VertexRendering.drawBox(stack.peek(), buffer, minX, minY, minZ, maxX, maxY, maxZ, r, g, b, a);
|
||||||
|
|
||||||
|
Layers.getGlobalLines(lineWidth).draw(buffer.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void drawFilledBox(MatrixStack matrices, Box box, Color color) {
|
||||||
|
Vec3d cameraPos = mc.gameRenderer.getCamera().getPos();
|
||||||
|
float minX = (float) (box.minX - cameraPos.x);
|
||||||
|
float minY = (float) (box.minY - cameraPos.y);
|
||||||
|
float minZ = (float) (box.minZ - cameraPos.z);
|
||||||
|
float maxX = (float) (box.maxX - cameraPos.x);
|
||||||
|
float maxY = (float) (box.maxY - cameraPos.y);
|
||||||
|
float maxZ = (float) (box.maxZ - cameraPos.z);
|
||||||
|
|
||||||
|
BufferBuilder buffer = tesselator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_COLOR);
|
||||||
|
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, minY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, minY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, minY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, minY, maxZ).color(color.getRGB());
|
||||||
|
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, maxY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, maxY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, maxY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, maxY, minZ).color(color.getRGB());
|
||||||
|
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, minY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, maxY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, maxY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, minY, minZ).color(color.getRGB());
|
||||||
|
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, minY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, maxY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, maxY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, minY, maxZ).color(color.getRGB());
|
||||||
|
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, minY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, minY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), maxX, maxY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, maxY, maxZ).color(color.getRGB());
|
||||||
|
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, minY, minZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, minY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, maxY, maxZ).color(color.getRGB());
|
||||||
|
buffer.vertex(matrices.peek().getPositionMatrix(), minX, maxY, minZ).color(color.getRGB());
|
||||||
|
|
||||||
|
Layers.getGlobalQuads().draw(buffer.end());
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 7.4 KiB |
@@ -8,4 +8,6 @@ accessible field net/minecraft/client/particle/Particle velocityMultiplier F
|
|||||||
accessible field net/minecraft/client/particle/Particle gravityStrength F
|
accessible field net/minecraft/client/particle/Particle gravityStrength F
|
||||||
accessible field net/minecraft/client/particle/Particle collidesWithWorld Z
|
accessible field net/minecraft/client/particle/Particle collidesWithWorld Z
|
||||||
|
|
||||||
accessible method net/minecraft/client/render/WorldRenderer method_74752 (Lnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/Frustum;Z)V
|
accessible method net/minecraft/client/render/WorldRenderer method_74752 (Lnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/Frustum;Z)V
|
||||||
|
accessible method net/minecraft/client/render/GameRenderer getProjectionMatrix (F)Lorg/joml/Matrix4f;
|
||||||
|
accessible method net/minecraft/client/render/command/DebugHitboxCommandRenderer renderDebugHitbox (Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/entity/state/EntityHitboxAndView;Lnet/minecraft/client/render/VertexConsumer;F)V
|
||||||
@@ -33,6 +33,7 @@
|
|||||||
"ClientPlayerEntityMixin",
|
"ClientPlayerEntityMixin",
|
||||||
"ClientPlayerInteractionManagerMixin",
|
"ClientPlayerInteractionManagerMixin",
|
||||||
"ClientPlayNetworkHandlerMixin",
|
"ClientPlayNetworkHandlerMixin",
|
||||||
|
"ClientWorldMixin",
|
||||||
"ClientWorldPropertiesMixin",
|
"ClientWorldPropertiesMixin",
|
||||||
"DamageParticleFactoryMixin",
|
"DamageParticleFactoryMixin",
|
||||||
"DamageParticleMixin",
|
"DamageParticleMixin",
|
||||||
@@ -57,9 +58,11 @@
|
|||||||
"TelemetryManagerMixin",
|
"TelemetryManagerMixin",
|
||||||
"TextRendererDrawerMixin",
|
"TextRendererDrawerMixin",
|
||||||
"TextRendererMixin",
|
"TextRendererMixin",
|
||||||
|
"TitleScreenMixin",
|
||||||
"WeatherRenderingMixin",
|
"WeatherRenderingMixin",
|
||||||
"WorldRendererMixin",
|
"WorldRendererMixin",
|
||||||
"accessor.ClientPlayNetworkHandlerAccessor",
|
"accessor.ClientPlayNetworkHandlerAccessor",
|
||||||
|
"accessor.HandledScreenAccessor",
|
||||||
"accessor.KeyBindingAccessor"
|
"accessor.KeyBindingAccessor"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user