Improved implementation of ref
This commit is contained in:
+1
-1
Submodule common updated: d47360ecd7...7eb705d802
@@ -3,31 +3,20 @@ package org.saturnclient.impl;
|
||||
import java.awt.image.BufferedImage;
|
||||
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import org.saturnclient.common.MinecraftProvider;
|
||||
import org.saturnclient.common.provider.SaturnProvider;
|
||||
import org.saturnclient.common.ref.asset.IdentifierRef;
|
||||
import org.saturnclient.common.ref.game.MinecraftClientRef;
|
||||
import org.saturnclient.cosmetics.cloak.utils.IdentifierUtils;
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.ui.SaturnScreen;
|
||||
import org.saturnclient.ui.SaturnScreenFabric;
|
||||
import org.saturnclient.ui.screens.TitleMenu;
|
||||
|
||||
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
|
||||
import net.minecraft.client.gui.screen.option.OptionsScreen;
|
||||
import net.minecraft.client.gui.screen.world.SelectWorldScreen;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
public class SaturnClientProvider extends MinecraftProvider {
|
||||
public class SaturnClientProvider implements SaturnProvider {
|
||||
@Override
|
||||
public MinecraftClientRef getClient() {
|
||||
return (MinecraftClientRef) SaturnClient.client;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object createIdentifier(String namespace, String path) {
|
||||
return Identifier.of(namespace, path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isKeyPressed(int key) {
|
||||
return GLFW.glfwGetKey(SaturnClient.client.getWindow().getHandle(), key) == GLFW.GLFW_PRESS
|
||||
@@ -41,7 +30,7 @@ public class SaturnClientProvider extends MinecraftProvider {
|
||||
|
||||
@Override
|
||||
public void registerBufferedImageTexture(IdentifierRef i, BufferedImage bi) {
|
||||
IdentifierUtils.registerBufferedImageTextureFast((Identifier) i.inner, bi);
|
||||
IdentifierUtils.registerBufferedImageTextureFast((Identifier) (Object) i, bi);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,29 +38,7 @@ public class SaturnClientProvider extends MinecraftProvider {
|
||||
return GLFW.glfwGetKeyName(key, GLFW.glfwGetKeyScancode(key));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScreen(SaturnScreen screen) {
|
||||
SaturnClient.client.setScreen(new SaturnScreenFabric(screen));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScreen(MinecraftScreen screen) {
|
||||
SaturnScreenFabric exitTarget = new SaturnScreenFabric(new TitleMenu());
|
||||
|
||||
switch (screen) {
|
||||
case SelectWorld:
|
||||
SaturnClient.client.setScreen(new SelectWorldScreen(exitTarget));
|
||||
break;
|
||||
|
||||
case Multiplayer:
|
||||
SaturnClient.client.setScreen(new MultiplayerScreen(exitTarget));
|
||||
break;
|
||||
|
||||
case Options:
|
||||
SaturnClient.client.setScreen(new OptionsScreen(exitTarget, SaturnClient.client.options));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.saturnclient.impl.mixins;
|
||||
|
||||
import org.saturnclient.common.ref.asset.IdentifierRef;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
import net.minecraft.client.util.Window;
|
||||
|
||||
@Mixin(Window.class)
|
||||
public abstract class IdentifierMixin implements IdentifierRef {
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package org.saturnclient.impl.mixins;
|
||||
|
||||
import org.saturnclient.common.ref.game.ItemStackRef;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@Mixin(ItemStack.class)
|
||||
public abstract class ItemStackMixin implements ItemStackRef {
|
||||
@Shadow
|
||||
public abstract boolean isEmpty();
|
||||
|
||||
@Shadow
|
||||
public abstract int getMaxDamage();
|
||||
|
||||
@Shadow
|
||||
public abstract int getDamage();
|
||||
}
|
||||
@@ -2,7 +2,7 @@ package org.saturnclient.impl.mixins;
|
||||
|
||||
import org.joml.Quaternionf;
|
||||
import org.saturnclient.common.ref.render.MatrixStackRef;
|
||||
import org.saturnclient.common.ref.render.SaturnQuaternionf;
|
||||
import org.saturnclient.common.ref.render.QuaternionfRef;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||
@@ -43,13 +43,13 @@ public abstract class MatrixStackMixin implements MatrixStackRef {
|
||||
public abstract void loadIdentity();
|
||||
|
||||
@Override
|
||||
public void multiply(SaturnQuaternionf quaternion) {
|
||||
this.multiply((Quaternionf) quaternion.inner);
|
||||
public void multiply(QuaternionfRef quaternion) {
|
||||
this.multiply((Quaternionf) quaternion);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void multiply(SaturnQuaternionf quaternion, float originX, float originY, float originZ) {
|
||||
this.multiply((Quaternionf) quaternion.inner, originX, originY, originZ);
|
||||
public void multiply(QuaternionfRef quaternion, float originX, float originY, float originZ) {
|
||||
this.multiply((Quaternionf) quaternion, originX, originY, originZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+32
-1
@@ -6,10 +6,17 @@ import java.io.InputStream;
|
||||
import org.saturnclient.common.ref.asset.IdentifierRef;
|
||||
import org.saturnclient.common.ref.game.MinecraftClientRef;
|
||||
import org.saturnclient.common.ref.render.WindowRef;
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.ui.SaturnScreen;
|
||||
import org.saturnclient.ui.SaturnScreenFabric;
|
||||
import org.saturnclient.ui.screens.TitleMenu;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
|
||||
import net.minecraft.client.gui.screen.option.OptionsScreen;
|
||||
import net.minecraft.client.gui.screen.world.SelectWorldScreen;
|
||||
import net.minecraft.client.util.Window;
|
||||
import net.minecraft.resource.ReloadableResourceManagerImpl;
|
||||
import net.minecraft.util.Identifier;
|
||||
@@ -33,7 +40,7 @@ public class MinecraftClientMixin implements MinecraftClientRef {
|
||||
@Override
|
||||
public InputStream getResource(IdentifierRef identifier) {
|
||||
try {
|
||||
return resourceManager.getResource((Identifier) identifier.inner).get().getInputStream();
|
||||
return resourceManager.getResource((Identifier) (Object) identifier).get().getInputStream();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
@@ -43,4 +50,28 @@ public class MinecraftClientMixin implements MinecraftClientRef {
|
||||
public WindowRef getWindow() {
|
||||
return (WindowRef) (Object) this.window;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScreen(SaturnScreen screen) {
|
||||
SaturnClient.client.setScreen(new SaturnScreenFabric(screen));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScreen(MinecraftScreen screen) {
|
||||
SaturnScreenFabric exitTarget = new SaturnScreenFabric(new TitleMenu());
|
||||
|
||||
switch (screen) {
|
||||
case SelectWorld:
|
||||
SaturnClient.client.setScreen(new SelectWorldScreen(exitTarget));
|
||||
break;
|
||||
|
||||
case Multiplayer:
|
||||
SaturnClient.client.setScreen(new MultiplayerScreen(exitTarget));
|
||||
break;
|
||||
|
||||
case Options:
|
||||
SaturnClient.client.setScreen(new OptionsScreen(exitTarget, SaturnClient.client.options));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.saturnclient.impl.mixins;
|
||||
|
||||
import org.saturnclient.common.ref.render.QuaternionfRef;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
@Mixin(ItemStack.class)
|
||||
public abstract class QuaternionfMixin implements QuaternionfRef {
|
||||
}
|
||||
+12
-27
@@ -10,74 +10,59 @@ import net.minecraft.item.Items;
|
||||
|
||||
public class ArmorDisplayFabric implements ArmorDisplayInterface {
|
||||
|
||||
private ItemStack get(EquipmentSlot slot) {
|
||||
return MinecraftClient.getInstance().player.getEquippedStack(slot);
|
||||
private ItemStackRef get(EquipmentSlot slot) {
|
||||
return (ItemStackRef) (Object) MinecraftClient.getInstance().player.getEquippedStack(slot);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getMainHand() {
|
||||
return new ItemStackRef(get(EquipmentSlot.MAINHAND));
|
||||
return get(EquipmentSlot.MAINHAND);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getHelmet() {
|
||||
return new ItemStackRef(get(EquipmentSlot.HEAD));
|
||||
return get(EquipmentSlot.HEAD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getChestplate() {
|
||||
return new ItemStackRef(get(EquipmentSlot.CHEST));
|
||||
return get(EquipmentSlot.CHEST);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getLeggings() {
|
||||
return new ItemStackRef(get(EquipmentSlot.LEGS));
|
||||
return get(EquipmentSlot.LEGS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getBoots() {
|
||||
return new ItemStackRef(get(EquipmentSlot.FEET));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty(ItemStackRef stack) {
|
||||
return ((ItemStack) stack.get()).isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxDamage(ItemStackRef stack) {
|
||||
return ((ItemStack) stack.get()).getMaxDamage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDamage(ItemStackRef stack) {
|
||||
return ((ItemStack) stack.get()).getDamage();
|
||||
return get(EquipmentSlot.FEET);
|
||||
}
|
||||
|
||||
// Dummy items
|
||||
|
||||
@Override
|
||||
public ItemStackRef getDummyMainHand() {
|
||||
return new ItemStackRef(new ItemStack(Items.DIAMOND_SWORD));
|
||||
return (ItemStackRef) (Object) new ItemStack(Items.DIAMOND_SWORD);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getDummyHelmet() {
|
||||
return new ItemStackRef(new ItemStack(Items.DIAMOND_HELMET));
|
||||
return (ItemStackRef) (Object) new ItemStack(Items.DIAMOND_HELMET);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getDummyChestplate() {
|
||||
return new ItemStackRef(new ItemStack(Items.DIAMOND_CHESTPLATE));
|
||||
return (ItemStackRef) (Object) new ItemStack(Items.DIAMOND_CHESTPLATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getDummyLeggings() {
|
||||
return new ItemStackRef(new ItemStack(Items.DIAMOND_LEGGINGS));
|
||||
return (ItemStackRef) (Object) new ItemStack(Items.DIAMOND_LEGGINGS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackRef getDummyBoots() {
|
||||
return new ItemStackRef(new ItemStack(Items.DIAMOND_BOOTS));
|
||||
return (ItemStackRef) (Object) new ItemStack(Items.DIAMOND_BOOTS);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -21,7 +21,7 @@ public class StatusEffectsFabric implements StatusEffectsInterface {
|
||||
return mc.player.getStatusEffects().stream()
|
||||
.filter(StatusEffectInstance::shouldShowIcon)
|
||||
.map(se -> new Effect(
|
||||
new SpriteRef(manager.getSprite(se.getEffectType())),
|
||||
(SpriteRef) manager.getSprite(se.getEffectType()),
|
||||
se.getDuration() / 20,
|
||||
se.isInfinite(),
|
||||
se.shouldShowIcon(),
|
||||
@@ -32,7 +32,7 @@ public class StatusEffectsFabric implements StatusEffectsInterface {
|
||||
@Override
|
||||
public List<Effect> getDummyEffects() {
|
||||
return Arrays.asList(
|
||||
new Effect(new SpriteRef(null), 600, false, true, "Infinite"),
|
||||
new Effect(new SpriteRef(null), 600, false, true, "Infinite"));
|
||||
new Effect(null, 600, false, true, "Infinite"),
|
||||
new Effect(null, 600, false, true, "Infinite"));
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,8 @@ import org.saturnclient.client.ServiceClient;
|
||||
import org.saturnclient.cosmetics.Emotes;
|
||||
import org.saturnclient.cosmetics.Hats;
|
||||
import org.saturnclient.cosmetics.cloak.Cloaks;
|
||||
import org.saturnclient.common.MinecraftProvider;
|
||||
import org.saturnclient.common.bindings.SaturnClientBindings;
|
||||
import org.saturnclient.common.provider.Providers;
|
||||
import org.saturnclient.impl.FabricModuleProvider;
|
||||
import org.saturnclient.impl.SaturnClientProvider;
|
||||
import org.saturnclient.modules.ModManager;
|
||||
@@ -41,7 +41,7 @@ public class SaturnClient implements ModInitializer {
|
||||
LOGGER.info("Initializing " + MOD_ID);
|
||||
client = MinecraftClient.getInstance();
|
||||
|
||||
MinecraftProvider.PROVIDER = new SaturnClientProvider();
|
||||
Providers.saturn = new SaturnClientProvider();
|
||||
|
||||
ElementRenderer.INSTANCE = new ElementRendererImpl();
|
||||
|
||||
|
||||
+3
-3
@@ -7,7 +7,7 @@ import net.minecraft.client.util.InputUtil;
|
||||
|
||||
import org.saturnclient.config.Config;
|
||||
import org.saturnclient.client.ServiceClient;
|
||||
import org.saturnclient.common.MinecraftProvider;
|
||||
import org.saturnclient.common.provider.Providers;
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.ui.screens.EmoteWheel;
|
||||
import org.saturnclient.ui.screens.ShiftMenu;
|
||||
@@ -37,12 +37,12 @@ public class KeyInputHandler {
|
||||
// Register the event handler for the main menu key
|
||||
ClientTickEvents.END_CLIENT_TICK.register(client -> {
|
||||
if (mainMenuKeyBinding.wasPressed()) {
|
||||
MinecraftProvider.PROVIDER.setScreen(new ShiftMenu());
|
||||
Providers.saturn.getClient().setScreen(new ShiftMenu());
|
||||
}
|
||||
|
||||
if (Config.openEmoteWheel.wasKeyPressed() && client.currentScreen == null
|
||||
&& !InputUtil.isKeyPressed(client.getWindow().getHandle(), GLFW.GLFW_KEY_F3)) {
|
||||
MinecraftProvider.PROVIDER.setScreen(new EmoteWheel());
|
||||
Providers.saturn.getClient().setScreen(new EmoteWheel());
|
||||
}
|
||||
|
||||
if (SaturnClient.client.player != null && SaturnClient.client.player.isSneaking()) {
|
||||
|
||||
@@ -3,7 +3,7 @@ package org.saturnclient.ui;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.joml.Quaternionf;
|
||||
import org.joml.Vector3f;
|
||||
import org.saturnclient.common.ref.render.SaturnQuaternionf;
|
||||
import org.saturnclient.common.ref.render.QuaternionfRef;
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.ui.components.SkinPreview.EntityDrawer;
|
||||
|
||||
@@ -53,7 +53,7 @@ public class EntityDrawerImpl implements EntityDrawer {
|
||||
renderScope.getMatrixStack().translate((double) x, (double) y, 50.0);
|
||||
renderScope.getMatrixStack().scale(size, size, -size);
|
||||
renderScope.getMatrixStack().translate(vector3f.x, vector3f.y, vector3f.z);
|
||||
renderScope.getMatrixStack().multiply(new SaturnQuaternionf(quaternionf));
|
||||
renderScope.getMatrixStack().multiply((QuaternionfRef) quaternionf);
|
||||
renderScope.draw();
|
||||
DiffuseLighting.method_34742();
|
||||
EntityRenderDispatcher entityRenderDispatcher = SaturnClient.client.getEntityRenderDispatcher();
|
||||
|
||||
@@ -10,7 +10,7 @@ import org.joml.Matrix4f;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
|
||||
import org.saturnclient.common.MinecraftProvider;
|
||||
import org.saturnclient.common.provider.Providers;
|
||||
import org.saturnclient.common.ref.asset.IdentifierRef;
|
||||
import org.saturnclient.common.ref.asset.SpriteRef;
|
||||
import org.saturnclient.common.ref.game.ItemStackRef;
|
||||
@@ -238,7 +238,8 @@ public class RenderScopeImpl implements RenderScope {
|
||||
public void drawTexture(IdentifierRef sprite, int x, int y, float u, float v, int width, int height,
|
||||
int regionWidth,
|
||||
int regionHeight, int textureWidth, int textureHeight, int color) {
|
||||
this.drawTexturedQuad((Identifier) sprite.inner, x, x + width, y, y + height, (u + 0.0F) / (float) textureWidth,
|
||||
this.drawTexturedQuad((Identifier) (Object) sprite, x, x + width, y, y + height,
|
||||
(u + 0.0F) / (float) textureWidth,
|
||||
(u + (float) regionWidth) / (float) textureWidth, (v + 0.0F) / (float) textureHeight,
|
||||
(v + (float) regionHeight) / (float) textureHeight, color);
|
||||
}
|
||||
@@ -269,9 +270,9 @@ public class RenderScopeImpl implements RenderScope {
|
||||
float v2, int color) {
|
||||
|
||||
if (sprite.toString().endsWith(".svg")) {
|
||||
sprite = (Identifier) SvgTexture.getSvg(MinecraftProvider.PROVIDER.getClient(),
|
||||
new IdentifierRef(sprite),
|
||||
(x2 - x1) * 2, (y2 - y1) * 2).inner;
|
||||
sprite = (Identifier) (Object) SvgTexture.getSvg(Providers.saturn.getClient(),
|
||||
(IdentifierRef) (Object) sprite,
|
||||
(x2 - x1) * 2, (y2 - y1) * 2);
|
||||
}
|
||||
|
||||
if (color == 0)
|
||||
@@ -382,7 +383,7 @@ public class RenderScopeImpl implements RenderScope {
|
||||
|
||||
@Override
|
||||
public void drawItem(ItemStackRef stack, int x, int y, int seed, int z) {
|
||||
this.drawItem(SaturnClient.client.player, SaturnClient.client.world, (ItemStack) stack.inner, x, y, seed, z);
|
||||
this.drawItem(SaturnClient.client.player, SaturnClient.client.world, (ItemStack) (Object) stack, x, y, seed, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -397,7 +398,7 @@ public class RenderScopeImpl implements RenderScope {
|
||||
|
||||
private void drawItem(@Nullable LivingEntity entity, @Nullable World world, ItemStackRef stack, int x, int y,
|
||||
int seed) {
|
||||
this.drawItem(entity, world, (ItemStack) stack.inner, x, y, seed, 0);
|
||||
this.drawItem(entity, world, (ItemStack) (Object) stack, x, y, seed, 0);
|
||||
}
|
||||
|
||||
private void drawItem(@Nullable LivingEntity entity, @Nullable World world, ItemStack stack, int x, int y, int seed,
|
||||
@@ -448,7 +449,7 @@ public class RenderScopeImpl implements RenderScope {
|
||||
|
||||
@Override
|
||||
public void drawSpriteStretched(SpriteRef saturnSprite, int x, int y, int width, int height, int color) {
|
||||
Sprite sprite = (Sprite) saturnSprite.inner;
|
||||
Sprite sprite = (Sprite) saturnSprite;
|
||||
if (color == 0)
|
||||
return;
|
||||
if (width != 0 && height != 0) {
|
||||
|
||||
Reference in New Issue
Block a user