From 0867dd68d7179d6ef3887193e7097d4248e4c414 Mon Sep 17 00:00:00 2001 From: GiantLuigi4 <49770992+GiantLuigi4@users.noreply.github.com> Date: Fri, 22 Sep 2023 15:26:43 -0400 Subject: [PATCH] mod compiles, things *really* don't work --- build.gradle | 3 +- libs/mcef-2.x.jar | Bin 195086 -> 194678 bytes settings.gradle | 1 + src/main/java/net/montoyo/wd/SharedProxy.java | 8 +- src/main/java/net/montoyo/wd/WebDisplays.java | 18 +- .../net/montoyo/wd/block/BlockScreen.java | 2 +- .../net/montoyo/wd/client/ClientProxy.java | 1551 +++++++++-------- .../java/net/montoyo/wd/client/WDScheme.java | 298 ++-- .../montoyo/wd/client/gui/GuiKeyboard.java | 12 +- .../net/montoyo/wd/client/gui/GuiMinePad.java | 127 +- .../net/montoyo/wd/client/gui/GuiServer.java | 49 +- .../net/montoyo/wd/client/gui/GuiSetURL2.java | 2 +- .../montoyo/wd/client/gui/RenderRecipe.java | 22 +- .../net/montoyo/wd/client/gui/WDScreen.java | 21 +- .../wd/client/gui/controls/Button.java | 35 +- .../wd/client/gui/controls/CheckBox.java | 35 +- .../wd/client/gui/controls/Container.java | 9 +- .../wd/client/gui/controls/Control.java | 5 +- .../wd/client/gui/controls/ControlGroup.java | 18 +- .../montoyo/wd/client/gui/controls/Icon.java | 13 +- .../montoyo/wd/client/gui/controls/Label.java | 7 +- .../montoyo/wd/client/gui/controls/List.java | 7 +- .../wd/client/gui/controls/TextField.java | 29 +- .../wd/client/gui/controls/UpgradeGroup.java | 11 +- .../client/renderers/ScreenModelLoader.java | 25 +- .../wd/controls/builtin/JSRequestControl.java | 4 +- .../net/montoyo/wd/core/WDCreativeTab.java | 42 +- .../wd/entity/TileEntityInterfaceBase.java | 2 +- .../java/net/montoyo/wd/init/ItemInit.java | 10 +- .../montoyo/wd/item/ItemCraftComponent.java | 4 +- .../net/montoyo/wd/item/ItemLaserPointer.java | 4 +- .../java/net/montoyo/wd/item/ItemLinker.java | 4 +- .../net/montoyo/wd/item/ItemMinePad2.java | 13 +- .../montoyo/wd/item/ItemOwnershipThief.java | 4 +- .../wd/item/ItemScreenConfigurator.java | 4 +- .../java/net/montoyo/wd/item/ItemUpgrade.java | 2 +- .../net/montoyo/wd/mixins/OverlayMixin.java | 6 +- .../server_bound/C2SMessageRedstoneCtrl.java | 4 +- 38 files changed, 1243 insertions(+), 1168 deletions(-) diff --git a/build.gradle b/build.gradle index f9c4da4..8416dd1 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ plugins { id 'maven-publish' id 'net.neoforged.gradle' version '[6.0.18,6.2)' id 'org.spongepowered.mixin' version '0.7.+' + id 'org.parchmentmc.librarian.forgegradle' version '1.+' } version = mod_version @@ -12,7 +13,7 @@ java.toolchain.languageVersion = JavaLanguageVersion.of(17) println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) minecraft { - mappings channel: 'official', version: '1.20.1' + mappings channel: 'parchment', version: '2023.06.26-1.20.1' accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') diff --git a/libs/mcef-2.x.jar b/libs/mcef-2.x.jar index 05180058413e53644f2c53046445841e9906dadf..6e2a0fe0c8292d0b2c24821b8ef9e22e61312e93 100644 GIT binary patch delta 11991 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 S)K(II8AM8a>(ap<>;C{6b7@Tg delta 12565 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 diff --git a/settings.gradle b/settings.gradle index d495ccb..685a894 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,6 +5,7 @@ pluginManagement { name = 'NeoForged' url = 'https://maven.neoforged.net/releases' } + maven { url = 'https://maven.parchmentmc.org' } // Add this line } // resolutionStrategy { // eachPlugin { diff --git a/src/main/java/net/montoyo/wd/SharedProxy.java b/src/main/java/net/montoyo/wd/SharedProxy.java index 8a7d3f1..2540bcd 100644 --- a/src/main/java/net/montoyo/wd/SharedProxy.java +++ b/src/main/java/net/montoyo/wd/SharedProxy.java @@ -16,7 +16,6 @@ import net.minecraft.world.level.Level; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.server.ServerLifecycleHooks; -import net.montoyo.mcef.api.CefInitEvent; import net.montoyo.wd.core.HasAdvancement; import net.montoyo.wd.core.JSServerRequest; import net.montoyo.wd.data.GuiData; @@ -31,13 +30,14 @@ public class SharedProxy { } public void init() { - MinecraftForge.EVENT_BUS.addListener(this::onCefInit); +// MinecraftForge.EVENT_BUS.addListener(this::onCefInit); + onCefInit(); } public void postInit() { } - public void onCefInit(CefInitEvent event) { + public void onCefInit(/*CefInitEvent event*/) { } @Deprecated(forRemoval = true) @@ -46,7 +46,7 @@ public class SharedProxy { } public BlockGetter getWorld(NetworkEvent.Context context) { - if (context.getSender() != null) return context.getSender().level; + if (context.getSender() != null) return context.getSender().level(); return null; } diff --git a/src/main/java/net/montoyo/wd/WebDisplays.java b/src/main/java/net/montoyo/wd/WebDisplays.java index cd37441..cf0ab30 100644 --- a/src/main/java/net/montoyo/wd/WebDisplays.java +++ b/src/main/java/net/montoyo/wd/WebDisplays.java @@ -73,7 +73,7 @@ public class WebDisplays { cursorSupport = (ver.getMajorVersion() >= 1 && ver.getMinorVersion() >= 2 && ver.getIncrementalVersion() >= 4); } - public static WDCreativeTab CREATIVE_TAB; +// public static WDCreativeTab CREATIVE_TAB; public static final ResourceLocation ADV_PAD_BREAK = new ResourceLocation("webdisplays", "webdisplays/pad_break"); public static final String BLACKLIST_URL = "mod://webdisplays/blacklisted.html"; public static final Gson GSON = new Gson(); @@ -127,7 +127,7 @@ public class WebDisplays { CommonConfig.init(); - CREATIVE_TAB = new WDCreativeTab(); +// CREATIVE_TAB = new WDCreativeTab(); //Criterions criterionPadBreak = new Criterion("pad_break"); @@ -259,7 +259,7 @@ public class WebDisplays { @SubscribeEvent public void onToss(ItemTossEvent ev) { - if(!ev.getEntity().getLevel().isClientSide) { + if(!ev.getEntity().level().isClientSide) { ItemStack is = ev.getEntity().getItem(); if(is.getItem() == ItemInit.MINEPAD.get()) { @@ -284,8 +284,8 @@ public class WebDisplays { if((ev.getEntity() instanceof ServerPlayer && !hasPlayerAdvancement((ServerPlayer) ev.getEntity(), ADV_PAD_BREAK)) || PROXY.hasClientPlayerAdvancement(ADV_PAD_BREAK) != HasAdvancement.YES) { ev.getCrafting().setDamageValue(CraftComponent.BADEXTCARD.ordinal()); - if(!ev.getEntity().getLevel().isClientSide) - ev.getEntity().getLevel().playSound(null, ev.getEntity().getX(), ev.getEntity().getY(), ev.getEntity().getZ(), SoundEvents.ITEM_BREAK, SoundSource.MASTER, 1.0f, 1.0f); + if(!ev.getEntity().level().isClientSide) + ev.getEntity().level().playSound(null, ev.getEntity().getX(), ev.getEntity().getY(), ev.getEntity().getZ(), SoundEvents.ITEM_BREAK, SoundSource.MASTER, 1.0f, 1.0f); } } } @@ -297,7 +297,7 @@ public class WebDisplays { @SubscribeEvent public void onLogIn(PlayerEvent.PlayerLoggedInEvent ev) { - if(!ev.getEntity().getLevel().isClientSide && ev.getEntity() instanceof ServerPlayer) { + if(!ev.getEntity().level().isClientSide && ev.getEntity() instanceof ServerPlayer) { IWDDCapability cap = ev.getEntity().getCapability(WDDCapability.Provider.cap, null).orElseThrow(RuntimeException::new); if(cap.isFirstRun()) { @@ -320,7 +320,7 @@ public class WebDisplays { @SubscribeEvent public void onLogOut(PlayerEvent.PlayerLoggedOutEvent ev) { - if(!ev.getEntity().getLevel().isClientSide) + if(!ev.getEntity().level().isClientSide) Server.getInstance().getClientManager().revokeClientKey(ev.getEntity().getGameProfile().getId()); } @@ -361,7 +361,7 @@ public class WebDisplays { if(sb.toString().equals("ironic he could save others from death but not himself")) { Player ply = ev.getPlayer(); - ply.getLevel().playSound(null, ply.getX(), ply.getY(), ply.getZ(), soundIronic, SoundSource.PLAYERS, 1.0f, 1.0f); + ply.level().playSound(null, ply.getX(), ply.getY(), ply.getZ(), soundIronic, SoundSource.PLAYERS, 1.0f, 1.0f); } } @@ -388,7 +388,7 @@ public class WebDisplays { private static void registerSound(String resName) { ResourceLocation resLoc = new ResourceLocation("webdisplays", resName); - SoundEvent ret = new SoundEvent(resLoc); + SoundEvent ret = SoundEvent.createVariableRangeEvent(resLoc); SOUNDS.register(resName, () -> ret); } diff --git a/src/main/java/net/montoyo/wd/block/BlockScreen.java b/src/main/java/net/montoyo/wd/block/BlockScreen.java index b855586..74818c9 100644 --- a/src/main/java/net/montoyo/wd/block/BlockScreen.java +++ b/src/main/java/net/montoyo/wd/block/BlockScreen.java @@ -228,7 +228,7 @@ public class BlockScreen extends BaseEntityBlock { if (tes != null && tes.hasUpgrade(side, DefaultUpgrade.REDINPUT)) { Direction facing = Direction.from2DDataValue(side.reverse().ordinal()); //Opposite face vec.sub(pos.getX(), pos.getY(), pos.getZ()).neg(); - tes.updateJSRedstone(side, new Vector2i(vec.dot(side.right), vec.dot(side.up)), world.getSignal(pos, facing)); +// tes.updateJSRedstone(side, new Vector2i(vec.dot(side.right), vec.dot(side.up)), world.getSignal(pos, facing)); } } } diff --git a/src/main/java/net/montoyo/wd/client/ClientProxy.java b/src/main/java/net/montoyo/wd/client/ClientProxy.java index c5a0500..b6a739f 100644 --- a/src/main/java/net/montoyo/wd/client/ClientProxy.java +++ b/src/main/java/net/montoyo/wd/client/ClientProxy.java @@ -4,18 +4,20 @@ package net.montoyo.wd.client; +import com.cinemamod.mcef.MCEF; +import com.cinemamod.mcef.MCEFBrowser; import com.mojang.authlib.GameProfile; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3d; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.AdvancementProgress; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.Options; import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.multiplayer.ClientAdvancements; @@ -58,7 +60,6 @@ import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.network.NetworkEvent; -import net.montoyo.mcef.api.*; import net.montoyo.wd.SharedProxy; import net.montoyo.wd.WebDisplays; import net.montoyo.wd.block.BlockScreen; @@ -80,6 +81,11 @@ import net.montoyo.wd.miniserv.client.Client; import net.montoyo.wd.net.WDNetworkRegistry; import net.montoyo.wd.net.server_bound.C2SMessageMinepadUrl; import net.montoyo.wd.utilities.*; +import org.cef.CefSettings; +import org.cef.browser.CefBrowser; +import org.cef.browser.CefFrame; +import org.cef.handler.CefDisplayHandler; +import org.joml.Vector3d; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -92,502 +98,515 @@ import java.util.*; import java.util.stream.Stream; @Mod.EventBusSubscriber(modid = "webdisplays", value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) -public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQueryHandler, ResourceManagerReloadListener { - - private static ClientProxy INSTANCE; - - public ClientProxy() { - INSTANCE = this; - } - - public static void blit(PoseStack p_93229_, int p_93230_, int p_93231_, int p_93232_, int p_93233_, int p_93234_, int p_93235_, int offset) { - Gui.blit(p_93229_, p_93230_, p_93231_, offset, (float)p_93232_, (float)p_93233_, p_93234_, p_93235_, 256, 256); - } - - public static void renderCrosshair(Options options, int screenWidth, int screenHeight, int offset, PoseStack poseStack, CallbackInfo ci) { - ItemStack stack = Minecraft.getInstance().player.getItemInHand(InteractionHand.MAIN_HAND); - ItemStack stack1 = Minecraft.getInstance().player.getItemInHand(InteractionHand.OFF_HAND); - - if (stack.getItem() instanceof ItemMinePad2) { - float sign = 1; - if (Minecraft.getInstance().player.getMainArm() == HumanoidArm.LEFT) sign = -1; - if (!MinePadRenderer.renderAtSide(sign)) { - ci.cancel(); - return; - } - } else { - if (stack1.getItem() instanceof ItemMinePad2) { - float sign = -1; - if (Minecraft.getInstance().player.getMainArm() == HumanoidArm.LEFT) sign = 1; - if (!MinePadRenderer.renderAtSide(sign)) { - ci.cancel(); - return; - } - } - } - - if (!(stack.getItem() instanceof ItemLaserPointer || - stack1.getItem() instanceof ItemLaserPointer)) - return; - - if (!LaserPointerRenderer.isOn()) { - RenderSystem.setShaderTexture(0, new ResourceLocation( - "webdisplays:textures/gui/cursors.png" - )); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE_MINUS_DST_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - - blit(poseStack, (screenWidth - 15) / 2, (screenHeight - 15) / 2, 240, 240, 15, 15, offset); - ci.cancel(); - return; - } - - Minecraft mc = Minecraft.getInstance(); - - BlockHitResult result = raycast(64.0); //TODO: Make that distance configurable - - BlockPos bpos = result.getBlockPos(); - - if (result.getType() != HitResult.Type.BLOCK || mc.level.getBlockState(bpos).getBlock() != BlockInit.blockScreen.get()) - return; - - Vector3i pos = new Vector3i(result.getBlockPos()); - BlockSide side = BlockSide.values()[result.getDirection().ordinal()]; - - Multiblock.findOrigin(mc.level, pos, side, null); - TileEntityScreen te = (TileEntityScreen) mc.level.getBlockEntity(pos.toBlock()); - - TileEntityScreen.Screen sc = te.getScreen(side); - - if (sc == null) return; +public class ClientProxy extends SharedProxy implements CefDisplayHandler/*, IJSQueryHandler*/, ResourceManagerReloadListener { + + private static ClientProxy INSTANCE; + + public ClientProxy() { + INSTANCE = this; + } + +// public static void blit(PoseStack p_93229_, int p_93230_, int p_93231_, int p_93232_, int p_93233_, int p_93234_, int p_93235_, int offset) { +// Gui.blit(p_93229_, p_93230_, p_93231_, offset, (float) p_93232_, (float) p_93233_, p_93234_, p_93235_, 256, 256); +// } + +// public static void renderCrosshair(Options options, int screenWidth, int screenHeight, int offset, PoseStack poseStack, CallbackInfo ci) { + public static void renderCrosshair(Options options, int screenWidth, int screenHeight, int offset, GuiGraphics poseStack, CallbackInfo ci) { + ItemStack stack = Minecraft.getInstance().player.getItemInHand(InteractionHand.MAIN_HAND); + ItemStack stack1 = Minecraft.getInstance().player.getItemInHand(InteractionHand.OFF_HAND); + + if (stack.getItem() instanceof ItemMinePad2) { + float sign = 1; + if (Minecraft.getInstance().player.getMainArm() == HumanoidArm.LEFT) sign = -1; + if (!MinePadRenderer.renderAtSide(sign)) { + ci.cancel(); + return; + } + } else { + if (stack1.getItem() instanceof ItemMinePad2) { + float sign = -1; + if (Minecraft.getInstance().player.getMainArm() == HumanoidArm.LEFT) sign = 1; + if (!MinePadRenderer.renderAtSide(sign)) { + ci.cancel(); + return; + } + } + } + + if (!(stack.getItem() instanceof ItemLaserPointer || + stack1.getItem() instanceof ItemLaserPointer)) + return; + + if (!LaserPointerRenderer.isOn()) { + RenderSystem.setShaderTexture(0, new ResourceLocation( + "webdisplays:textures/gui/cursors.png" + )); + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE_MINUS_DST_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + +// blit(poseStack, (screenWidth - 15) / 2, (screenHeight - 15) / 2, 240, 240, 15, 15, offset); + ci.cancel(); + return; + } + + Minecraft mc = Minecraft.getInstance(); + + BlockHitResult result = raycast(64.0); //TODO: Make that distance configurable + + BlockPos bpos = result.getBlockPos(); + + if (result.getType() != HitResult.Type.BLOCK || mc.level.getBlockState(bpos).getBlock() != BlockInit.blockScreen.get()) + return; + + Vector3i pos = new Vector3i(result.getBlockPos()); + BlockSide side = BlockSide.values()[result.getDirection().ordinal()]; + + Multiblock.findOrigin(mc.level, pos, side, null); + TileEntityScreen te = (TileEntityScreen) mc.level.getBlockEntity(pos.toBlock()); + + TileEntityScreen.Screen sc = te.getScreen(side); + + if (sc == null) return; // if (sc.mouseType == 1) return; + + int coordX = sc.mouseType * 15; + int coordY = coordX / 256; + coordX -= coordY * 256; + + RenderSystem.setShaderTexture(0, new ResourceLocation( + "webdisplays:textures/gui/cursors.png" + )); + RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE_MINUS_DST_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + +// blit(poseStack, (screenWidth - 15) / 2, (screenHeight - 15) / 2, coordX, coordY, 15, 15, offset); + + ci.cancel(); + } + + public class PadData { + + public CefBrowser view; + private boolean isInHotbar; + private final UUID id; + private long lastURLSent; + + private PadData(String url, UUID id) { + String webUrl; + try { + webUrl = TileEntityScreen.url(url); + } catch (IOException e) { + throw new RuntimeException(e); + } + view = MCEF.createBrowser(WebDisplays.applyBlacklist(webUrl), false); + if (view instanceof MCEFBrowser browser) + browser.resize((int) WebDisplays.INSTANCE.padResX, (int) WebDisplays.INSTANCE.padResY); + isInHotbar = true; + this.id = id; + } + } + + private Minecraft mc; + private MinePadRenderer minePadRenderer; +// private JSQueryDispatcher jsDispatcher; + private LaserPointerRenderer laserPointerRenderer; + private Screen nextScreen; + private boolean isF1Down; + + //Miniserv handling + private int miniservPort; + private boolean msClientStarted; + + //Client-side advancement hack + private final Field advancementToProgressField = findAdvancementToProgressField(); + private ClientAdvancements lastAdvMgr; + private Map advancementToProgress; + + //Tracking + private final ArrayList screenTracking = new ArrayList<>(); + private int lastTracked = 0; + + //MinePads Management + private final HashMap padMap = new HashMap<>(); + private final ArrayList padList = new ArrayList<>(); + private int minePadTickCounter = 0; + + /**************************************** INHERITED METHODS ****************************************/ + @SubscribeEvent + public static void onClientSetup(FMLClientSetupEvent event) { + BlockEntityRenderers.register(TileInit.SCREEN_BLOCK_ENTITY.get(), new ScreenRenderer.ScreenRendererProvider()); + } + + @SubscribeEvent + public static void onModelRegistryEvent(ModelEvent.RegisterGeometryLoaders event) { + event.register(ScreenModelLoader.SCREEN_LOADER.getPath(), new ScreenModelLoader()); + } + + private static void registerBlockRenderLayers(RenderType layer, Block... blocks) { + Stream.of(blocks).forEach(block -> ItemBlockRenderTypes.setRenderLayer(block, layer)); + } + + @Override + public void preInit() { + super.preInit(); + mc = Minecraft.getInstance(); + } + + @Override + public void init() { + super.init(); + } + + @Override + public void onCefInit(/*CefInitEvent event*/) { + MinecraftForge.EVENT_BUS.register(this); +// if (mcef != null) +// mcef.registerScheme("wd", WDScheme.class, true, false, false, true, true, false, false); - int coordX = sc.mouseType * 15; - int coordY = coordX / 256; - coordX -= coordY * 256; - - RenderSystem.setShaderTexture(0, new ResourceLocation( - "webdisplays:textures/gui/cursors.png" - )); - RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.ONE_MINUS_DST_COLOR, GlStateManager.DestFactor.ONE_MINUS_SRC_COLOR, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); - - blit(poseStack, (screenWidth - 15) / 2, (screenHeight - 15) / 2, coordX, coordY, 15, 15, offset); - - ci.cancel(); - } - - public class PadData { - - public IBrowser view; - private boolean isInHotbar; - private final UUID id; - private long lastURLSent; - - private PadData(String url, UUID id) { - String webUrl; - try { - webUrl = TileEntityScreen.url(url); - } catch (IOException e) { - throw new RuntimeException(e); - } - view = mcef.createBrowser(WebDisplays.applyBlacklist(webUrl)); - view.resize((int) WebDisplays.INSTANCE.padResX, (int) WebDisplays.INSTANCE.padResY); - isInHotbar = true; - this.id = id; - } - } - - private Minecraft mc; - private net.montoyo.mcef.api.API mcef; - private MinePadRenderer minePadRenderer; - private JSQueryDispatcher jsDispatcher; - private LaserPointerRenderer laserPointerRenderer; - private Screen nextScreen; - private boolean isF1Down; - - //Miniserv handling - private int miniservPort; - private boolean msClientStarted; - - //Client-side advancement hack - private final Field advancementToProgressField = findAdvancementToProgressField(); - private ClientAdvancements lastAdvMgr; - private Map advancementToProgress; - - //Tracking - private final ArrayList screenTracking = new ArrayList<>(); - private int lastTracked = 0; - - //MinePads Management - private final HashMap padMap = new HashMap<>(); - private final ArrayList padList = new ArrayList<>(); - private int minePadTickCounter = 0; - - /**************************************** INHERITED METHODS ****************************************/ - @SubscribeEvent - public static void onClientSetup(FMLClientSetupEvent event) { - BlockEntityRenderers.register(TileInit.SCREEN_BLOCK_ENTITY.get(), new ScreenRenderer.ScreenRendererProvider()); - } - - @SubscribeEvent - public static void onModelRegistryEvent(ModelEvent.RegisterGeometryLoaders event) { - event.register(ScreenModelLoader.SCREEN_LOADER.getPath(), new ScreenModelLoader()); - } - - private static void registerBlockRenderLayers(RenderType layer, Block... blocks) { - Stream.of(blocks).forEach(block -> ItemBlockRenderTypes.setRenderLayer(block, layer)); - } - - @Override - public void preInit() { - super.preInit(); - mc = Minecraft.getInstance(); - } - - @Override - public void init() { - super.init(); - } - - @Override - public void onCefInit(CefInitEvent event) { - MinecraftForge.EVENT_BUS.register(this); - mcef = event.getApi(); - if(mcef != null) - mcef.registerScheme("wd", WDScheme.class, true, false, false, true, true, false, false); - - jsDispatcher = new JSQueryDispatcher(this); - minePadRenderer = new MinePadRenderer(); - laserPointerRenderer = new LaserPointerRenderer(); - - if(mcef == null) - throw new RuntimeException("MCEF is missing"); - - mcef.registerDisplayHandler(this); - mcef.registerJSQueryHandler(this); - findAdvancementToProgressField(); - } - - @Override - public void postInit() { - ((ReloadableResourceManager) mc.getResourceManager()).registerReloadListener(this); - } - - @Override - public Level getWorld(ResourceKey dim) { - Level ret = mc.level; +// jsDispatcher = new JSQueryDispatcher(this); + minePadRenderer = new MinePadRenderer(); + laserPointerRenderer = new LaserPointerRenderer(); + +// if (mcef == null) +// throw new RuntimeException("MCEF is missing"); + + MCEF.getClient().addDisplayHandler(this); +// mcef.registerJSQueryHandler(this); + findAdvancementToProgressField(); + } + + @Override + public void postInit() { + ((ReloadableResourceManager) mc.getResourceManager()).registerReloadListener(this); + } + + @Override + public Level getWorld(ResourceKey dim) { + Level ret = mc.level; // if(dim == CURRENT_DIMENSION) // return ret; - if(ret != null) { - if (!ret.dimension().equals(dim)) - throw new RuntimeException("Can't get non-current dimension " + dim + " from client."); - return ret; - } else { - throw new RuntimeException("Level on client is null"); - } - } - - @Override - public void enqueue(Runnable r) { - mc.submit(r); - } - - @Override - public void displayGui(GuiData data) { - Screen gui = data.createGui(mc.screen, mc.level); - if(gui != null) - mc.setScreen(gui); - } - - @Override - public void trackScreen(TileEntityScreen tes, boolean track) { - int idx = -1; - for(int i = 0; i < screenTracking.size(); i++) { - if(screenTracking.get(i) == tes) { - idx = i; - break; - } - } - - if(track) { - if(idx < 0) - screenTracking.add(tes); - } else if(idx >= 0) - screenTracking.remove(idx); - } - - @Override - public void onAutocompleteResult(NameUUIDPair[] pairs) { - if(mc.screen != null && mc.screen instanceof WDScreen screen) { - if(pairs.length == 0) - (screen).onAutocompleteFailure(); - else - (screen).onAutocompleteResult(pairs); - } - } - - @Override - public GameProfile[] getOnlineGameProfiles() { - return new GameProfile[] { mc.player.getGameProfile() }; - } - - @Override - public void screenUpdateResolutionInGui(Vector3i pos, BlockSide side, Vector2i res) { - if(mc.screen != null && mc.screen instanceof GuiScreenConfig gsc) { - if(gsc.isForBlock(pos.toBlock(), side)) - gsc.updateResolution(res); - } - } - - @Override - public void screenUpdateRotationInGui(Vector3i pos, BlockSide side, Rotation rot) { - if(mc.screen != null && mc.screen instanceof GuiScreenConfig gsc) { - if(gsc.isForBlock(pos.toBlock(), side)) - gsc.updateRotation(rot); - } - } - - @Override - public void screenUpdateAutoVolumeInGui(Vector3i pos, BlockSide side, boolean av) { - if(mc.screen != null && mc.screen instanceof GuiScreenConfig gsc) { - if(gsc.isForBlock(pos.toBlock(), side)) - gsc.updateAutoVolume(av); - } - } - - @Override - public void displaySetPadURLGui(ItemStack is, String padURL) { - mc.setScreen(new GuiSetURL2(is, padURL)); - } - - @Override - public void openMinePadGui(UUID padId) { - PadData pd = padMap.get(padId); - - if(pd != null && pd.view != null) - mc.setScreen(new GuiMinePad(pd)); - } - - @Override - @Nonnull - public HasAdvancement hasClientPlayerAdvancement(@Nonnull ResourceLocation rl) { - if(advancementToProgressField != null && mc.player != null && mc.player.connection != null) { - ClientAdvancements cam = mc.player.connection.getAdvancements(); - Advancement adv = cam.getAdvancements().get(rl); - - if(adv == null) - return HasAdvancement.DONT_KNOW; - - if(lastAdvMgr != cam) { - lastAdvMgr = cam; - - try { - advancementToProgress = (Map) advancementToProgressField.get(cam); - } catch(Throwable t) { - Log.warningEx("Could not get ClientAdvancementManager.advancementToProgress field", t); - advancementToProgress = null; - return HasAdvancement.DONT_KNOW; - } - } - - if(advancementToProgress == null) - return HasAdvancement.DONT_KNOW; - - Object progress = advancementToProgress.get(adv); - if(progress == null) - return HasAdvancement.NO; - - if(!(progress instanceof AdvancementProgress)) { - Log.warning("The ClientAdvancementManager.advancementToProgress map does not contain AdvancementProgress instances"); - advancementToProgress = null; //Invalidate this: it's wrong - return HasAdvancement.DONT_KNOW; - } - - return ((AdvancementProgress) progress).isDone() ? HasAdvancement.YES : HasAdvancement.NO; - } - - return HasAdvancement.DONT_KNOW; - } - - @Override - public MinecraftServer getServer() { - return mc.getSingleplayerServer(); - } - - @Override - public void handleJSResponseSuccess(int reqId, JSServerRequest type, byte[] data) { - JSQueryDispatcher.ServerQuery q = jsDispatcher.fulfillQuery(reqId); - - if(q == null) - Log.warning("Received success response for invalid query ID %d of type %s", reqId, type.toString()); - else { - if(type == JSServerRequest.CLEAR_REDSTONE || type == JSServerRequest.SET_REDSTONE_AT) - q.success("{\"status\":\"success\"}"); - else - Log.warning("Received success response for query ID %d, but type is invalid", reqId); - } - } - - @Override - public void handleJSResponseError(int reqId, JSServerRequest type, int errCode, String err) { - JSQueryDispatcher.ServerQuery q = jsDispatcher.fulfillQuery(reqId); - - if(q == null) - Log.warning("Received error response for invalid query ID %d of type %s", reqId, type.toString()); - else - q.error(errCode, err); - } - - @Override - public void setMiniservClientPort(int port) { - miniservPort = port; - } - - @Override - public void startMiniservClient() { - if(miniservPort <= 0) { - Log.warning("Can't start miniserv client: miniserv is disabled"); - return; - } - - if(mc.player == null) { - Log.warning("Can't start miniserv client: player is null"); - return; - } - - SocketAddress saddr = mc.player.connection.getConnection().channel().remoteAddress(); - if(saddr == null || !(saddr instanceof InetSocketAddress)) { - Log.warning("Miniserv client: remote address is not inet, assuming local address"); - saddr = new InetSocketAddress("127.0.0.1", 1234); - } - - InetSocketAddress msAddr = new InetSocketAddress(((InetSocketAddress) saddr).getAddress(), miniservPort); - Client.getInstance().start(msAddr); - msClientStarted = true; - } - - @Override - public boolean isMiniservDisabled() { - return miniservPort <= 0; - } - - @Override - public void closeGui(BlockPos bp, BlockSide bs) { - if(mc.screen instanceof WDScreen) { - WDScreen scr = (WDScreen) mc.screen; - - if(scr.isForBlock(bp, bs)) - mc.setScreen(null); - } - } - - @Override - public void renderRecipes() { - nextScreen = new RenderRecipe(); - } - - @Override - public boolean isShiftDown() { - return Screen.hasShiftDown(); - } - - - /**************************************** RESOURCE MANAGER METHODS ****************************************/ - - @Override - public void onResourceManagerReload(ResourceManager resourceManager) { - Log.info("Resource manager reload: clearing GUI cache..."); - GuiLoader.clearCache(); - } - - /**************************************** DISPLAY HANDLER METHODS ****************************************/ - - @Override - public void onAddressChange(IBrowser browser, String url) { - if(browser != null) { - long t = System.currentTimeMillis(); - - for(PadData pd: padList) { - if(pd.view == browser && t - pd.lastURLSent >= 1000) { - if(WebDisplays.isSiteBlacklisted(url)) - pd.view.loadURL(WebDisplays.BLACKLIST_URL); - else { - pd.lastURLSent = t; //Avoid spamming the server with porn URLs - WDNetworkRegistry.INSTANCE.sendToServer(new C2SMessageMinepadUrl(pd.id, url)); - } - - break; - } - } - - for(TileEntityScreen tes: screenTracking) - tes.updateClientSideURL(browser, url); - } - } - - @Override - public void onTitleChange(IBrowser browser, String title) { - } - - @Override - public void onTooltip(IBrowser browser, String text) { - } - - @Override - public void onStatusMessage(IBrowser browser, String value) { - } - - /**************************************** JS HANDLER METHODS ****************************************/ - - @Override - public boolean handleQuery(IBrowser browser, long queryId, String query, boolean persistent, IJSQueryCallback cb) { - if(browser != null && persistent && query != null && cb != null) { - query = query.toLowerCase(); - - if(query.startsWith("webdisplays_")) { - query = query.substring(12); - - String args; - int parenthesis = query.indexOf('('); - if(parenthesis < 0) - args = null; - else { - if(query.indexOf(')') != query.length() - 1) { - cb.failure(400, "Malformed request"); - return true; - } - - args = query.substring(parenthesis + 1, query.length() - 1); - query = query.substring(0, parenthesis); - } - - if(jsDispatcher.canHandleQuery(query)) - jsDispatcher.enqueueQuery(browser, query, args, cb); - else - cb.failure(404, "Unknown WebDisplays query"); - - return true; - } - } - - return false; - } - - @Override - public void cancelQuery(IBrowser browser, long queryId) { - } - - /**************************************** EVENT METHODS ****************************************/ - - @SubscribeEvent - public void onStitchTextures(TextureStitchEvent.Pre ev) { - TextureAtlas texMap = ev.getAtlas(); - - if (texMap.location().equals(TextureAtlas.LOCATION_BLOCKS)) { - for (Material materialsSide : ScreenModelLoader.MATERIALS_SIDES) { - ev.addSprite(materialsSide.texture()); - } - } - } + if (ret != null) { + if (!ret.dimension().equals(dim)) + throw new RuntimeException("Can't get non-current dimension " + dim + " from client."); + return ret; + } else { + throw new RuntimeException("Level on client is null"); + } + } + + @Override + public void enqueue(Runnable r) { + mc.submit(r); + } + + @Override + public void displayGui(GuiData data) { + Screen gui = data.createGui(mc.screen, mc.level); + if (gui != null) + mc.setScreen(gui); + } + + @Override + public void trackScreen(TileEntityScreen tes, boolean track) { + int idx = -1; + for (int i = 0; i < screenTracking.size(); i++) { + if (screenTracking.get(i) == tes) { + idx = i; + break; + } + } + + if (track) { + if (idx < 0) + screenTracking.add(tes); + } else if (idx >= 0) + screenTracking.remove(idx); + } + + @Override + public void onAutocompleteResult(NameUUIDPair[] pairs) { + if (mc.screen != null && mc.screen instanceof WDScreen screen) { + if (pairs.length == 0) + (screen).onAutocompleteFailure(); + else + (screen).onAutocompleteResult(pairs); + } + } + + @Override + public GameProfile[] getOnlineGameProfiles() { + return new GameProfile[]{mc.player.getGameProfile()}; + } + + @Override + public void screenUpdateResolutionInGui(Vector3i pos, BlockSide side, Vector2i res) { + if (mc.screen != null && mc.screen instanceof GuiScreenConfig gsc) { + if (gsc.isForBlock(pos.toBlock(), side)) + gsc.updateResolution(res); + } + } + + @Override + public void screenUpdateRotationInGui(Vector3i pos, BlockSide side, Rotation rot) { + if (mc.screen != null && mc.screen instanceof GuiScreenConfig gsc) { + if (gsc.isForBlock(pos.toBlock(), side)) + gsc.updateRotation(rot); + } + } + + @Override + public void screenUpdateAutoVolumeInGui(Vector3i pos, BlockSide side, boolean av) { + if (mc.screen != null && mc.screen instanceof GuiScreenConfig gsc) { + if (gsc.isForBlock(pos.toBlock(), side)) + gsc.updateAutoVolume(av); + } + } + + @Override + public void displaySetPadURLGui(ItemStack is, String padURL) { + mc.setScreen(new GuiSetURL2(is, padURL)); + } + + @Override + public void openMinePadGui(UUID padId) { + PadData pd = padMap.get(padId); + + if (pd != null && pd.view != null) + mc.setScreen(new GuiMinePad(pd)); + } + + @Override + @Nonnull + public HasAdvancement hasClientPlayerAdvancement(@Nonnull ResourceLocation rl) { + if (advancementToProgressField != null && mc.player != null && mc.player.connection != null) { + ClientAdvancements cam = mc.player.connection.getAdvancements(); + Advancement adv = cam.getAdvancements().get(rl); + + if (adv == null) + return HasAdvancement.DONT_KNOW; + + if (lastAdvMgr != cam) { + lastAdvMgr = cam; + + try { + advancementToProgress = (Map) advancementToProgressField.get(cam); + } catch (Throwable t) { + Log.warningEx("Could not get ClientAdvancementManager.advancementToProgress field", t); + advancementToProgress = null; + return HasAdvancement.DONT_KNOW; + } + } + + if (advancementToProgress == null) + return HasAdvancement.DONT_KNOW; + + Object progress = advancementToProgress.get(adv); + if (progress == null) + return HasAdvancement.NO; + + if (!(progress instanceof AdvancementProgress)) { + Log.warning("The ClientAdvancementManager.advancementToProgress map does not contain AdvancementProgress instances"); + advancementToProgress = null; //Invalidate this: it's wrong + return HasAdvancement.DONT_KNOW; + } + + return ((AdvancementProgress) progress).isDone() ? HasAdvancement.YES : HasAdvancement.NO; + } + + return HasAdvancement.DONT_KNOW; + } + + @Override + public MinecraftServer getServer() { + return mc.getSingleplayerServer(); + } + +// @Override +// public void handleJSResponseSuccess(int reqId, JSServerRequest type, byte[] data) { +// JSQueryDispatcher.ServerQuery q = jsDispatcher.fulfillQuery(reqId); +// +// if (q == null) +// Log.warning("Received success response for invalid query ID %d of type %s", reqId, type.toString()); +// else { +// if (type == JSServerRequest.CLEAR_REDSTONE || type == JSServerRequest.SET_REDSTONE_AT) +// q.success("{\"status\":\"success\"}"); +// else +// Log.warning("Received success response for query ID %d, but type is invalid", reqId); +// } +// } +// +// @Override +// public void handleJSResponseError(int reqId, JSServerRequest type, int errCode, String err) { +// JSQueryDispatcher.ServerQuery q = jsDispatcher.fulfillQuery(reqId); +// +// if (q == null) +// Log.warning("Received error response for invalid query ID %d of type %s", reqId, type.toString()); +// else +// q.error(errCode, err); +// } + + @Override + public void setMiniservClientPort(int port) { + miniservPort = port; + } + + @Override + public void startMiniservClient() { + if (miniservPort <= 0) { + Log.warning("Can't start miniserv client: miniserv is disabled"); + return; + } + + if (mc.player == null) { + Log.warning("Can't start miniserv client: player is null"); + return; + } + + SocketAddress saddr = mc.player.connection.getConnection().channel().remoteAddress(); + if (saddr == null || !(saddr instanceof InetSocketAddress)) { + Log.warning("Miniserv client: remote address is not inet, assuming local address"); + saddr = new InetSocketAddress("127.0.0.1", 1234); + } + + InetSocketAddress msAddr = new InetSocketAddress(((InetSocketAddress) saddr).getAddress(), miniservPort); + Client.getInstance().start(msAddr); + msClientStarted = true; + } + + @Override + public boolean isMiniservDisabled() { + return miniservPort <= 0; + } + + @Override + public void closeGui(BlockPos bp, BlockSide bs) { + if (mc.screen instanceof WDScreen) { + WDScreen scr = (WDScreen) mc.screen; + + if (scr.isForBlock(bp, bs)) + mc.setScreen(null); + } + } + + @Override + public void renderRecipes() { + nextScreen = new RenderRecipe(); + } + + @Override + public boolean isShiftDown() { + return Screen.hasShiftDown(); + } + + + /**************************************** RESOURCE MANAGER METHODS ****************************************/ + + @Override + public void onResourceManagerReload(ResourceManager resourceManager) { + Log.info("Resource manager reload: clearing GUI cache..."); + GuiLoader.clearCache(); + } + + /**************************************** DISPLAY HANDLER METHODS ****************************************/ + + + @Override + public void onAddressChange(CefBrowser browser, CefFrame cefFrame, String url) { + if (browser != null) { + long t = System.currentTimeMillis(); + + for (PadData pd : padList) { + if (pd.view == browser && t - pd.lastURLSent >= 1000) { + if (WebDisplays.isSiteBlacklisted(url)) + pd.view.loadURL(WebDisplays.BLACKLIST_URL); + else { + pd.lastURLSent = t; //Avoid spamming the server with porn URLs + WDNetworkRegistry.INSTANCE.sendToServer(new C2SMessageMinepadUrl(pd.id, url)); + } + + break; + } + } + + for (TileEntityScreen tes : screenTracking) + tes.updateClientSideURL(browser, url); + } + } + + @Override + public void onTitleChange(CefBrowser cefBrowser, String s) { + } + + @Override + public boolean onTooltip(CefBrowser cefBrowser, String s) { + return false; + } + + @Override + public void onStatusMessage(CefBrowser cefBrowser, String s) { + } + + @Override + public boolean onConsoleMessage(CefBrowser cefBrowser, CefSettings.LogSeverity logSeverity, String s, String s1, int i) { + return false; + } + + @Override + public boolean onCursorChange(CefBrowser cefBrowser, int i) { + return false; + } + + /**************************************** JS HANDLER METHODS ****************************************/ + +// @Override +// public boolean handleQuery(IBrowser browser, long queryId, String query, boolean persistent, IJSQueryCallback cb) { +// if (browser != null && persistent && query != null && cb != null) { +// query = query.toLowerCase(); +// +// if (query.startsWith("webdisplays_")) { +// query = query.substring(12); +// +// String args; +// int parenthesis = query.indexOf('('); +// if (parenthesis < 0) +// args = null; +// else { +// if (query.indexOf(')') != query.length() - 1) { +// cb.failure(400, "Malformed request"); +// return true; +// } +// +// args = query.substring(parenthesis + 1, query.length() - 1); +// query = query.substring(0, parenthesis); +// } +// +// if (jsDispatcher.canHandleQuery(query)) +// jsDispatcher.enqueueQuery(browser, query, args, cb); +// else +// cb.failure(404, "Unknown WebDisplays query"); +// +// return true; +// } +// } +// +// return false; +// } +// +// @Override +// public void cancelQuery(IBrowser browser, long queryId) { +// } + + /**************************************** EVENT METHODS ****************************************/ + + @SubscribeEvent + public void onStitchTextures(TextureStitchEvent ev) { + TextureAtlas texMap = ev.getAtlas(); + + if (texMap.location().equals(TextureAtlas.LOCATION_BLOCKS)) { + for (Material materialsSide : ScreenModelLoader.MATERIALS_SIDES) { + // TODO: what? +// texMap.addSprite(materialsSide.texture()); + } + } + } // @SubscribeEvent // public void onBakeModel(ModelBakeEvent ev) { @@ -617,303 +636,301 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer registerItemMultiModels(wd.itemCraftComp); registerItemMultiModels(wd.itemAdvIcon); } */ - + @SubscribeEvent public void onLevelTick(TickEvent.LevelTickEvent ev) { - if (!ev.side.equals(LogicalSide.CLIENT)) return; - if(ev.phase != TickEvent.Phase.END) return; + if (!ev.side.equals(LogicalSide.CLIENT)) return; + if (ev.phase != TickEvent.Phase.END) return; //Unload/load screens depending on client player distance if (mc.player != null || !screenTracking.isEmpty()) return; int id = lastTracked % screenTracking.size(); - + TileEntityScreen tes = screenTracking.get(id); - + if (!tes.getLevel().equals(ev.level)) return; - + lastTracked++; - if (tes.getLevel() != mc.player.level) { + if (tes.getLevel() != mc.player.level()) { // TODO: properly handle this // probably gonna want a helper class for cross-dimensional distances if (!tes.isLoaded()) tes.load(); } else { - double dist = Double.POSITIVE_INFINITY; - for (int i = 0; i < tes.screenCount(); i++) { - TileEntityScreen.Screen scrn = tes.getScreen(i); - - Vector3d pos = new Vector3d( - scrn.side.right.x * scrn.size.x + scrn.size.y * scrn.side.up.x, - scrn.side.right.y * scrn.size.x + scrn.size.y * scrn.side.up.y, - scrn.side.right.z * scrn.size.x + scrn.size.y * scrn.side.up.z - ); - - double dist2 = mc.player.distanceToSqr(pos.x, pos.y, pos.z); - dist = Math.min(dist, dist2); - } - + double dist = Double.POSITIVE_INFINITY; + for (int i = 0; i < tes.screenCount(); i++) { + TileEntityScreen.Screen scrn = tes.getScreen(i); + + Vector3d pos = new Vector3d( + scrn.side.right.x * scrn.size.x + scrn.size.y * scrn.side.up.x, + scrn.side.right.y * scrn.size.x + scrn.size.y * scrn.side.up.y, + scrn.side.right.z * scrn.size.x + scrn.size.y * scrn.side.up.z + ); + + double dist2 = mc.player.distanceToSqr(pos.x, pos.y, pos.z); + dist = Math.min(dist, dist2); + } + if (tes.isLoaded()) { if (dist > WebDisplays.INSTANCE.unloadDistance2) tes.unload(); - else if (ClientConfig.AutoVolumeControl.enableAutoVolume) - tes.updateTrackDistance(dist, 80); //ToDo find master volume +// else if (ClientConfig.AutoVolumeControl.enableAutoVolume) +// tes.updateTrackDistance(dist, 80); //ToDo find master volume } else if (dist <= WebDisplays.INSTANCE.loadDistance2) tes.load(); } } - - @SubscribeEvent - public void onTick(TickEvent.ClientTickEvent ev) { - if (ev.phase != TickEvent.Phase.END) return; - - //Help - if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_KEY_F1)) { - if (!isF1Down) { - isF1Down = true; - - String wikiName = null; - if (mc.screen instanceof WDScreen) - wikiName = ((WDScreen) mc.screen).getWikiPageName(); - else if (mc.screen instanceof AbstractContainerScreen) { - Slot slot = ((AbstractContainerScreen) mc.screen).getSlotUnderMouse(); - - if (slot != null && slot.hasItem() && slot.getItem().getItem() instanceof WDItem) - wikiName = ((WDItem) slot.getItem().getItem()).getWikiName(slot.getItem()); - } - - if (wikiName != null) - mcef.openExampleBrowser("https://montoyo.net/wdwiki/index.php/" + wikiName); - } - } else if (isF1Down) - isF1Down = false; - - //Workaround cuz chat sux - if (nextScreen != null && mc.screen == null) { - mc.setScreen(nextScreen); - nextScreen = null; - } - - // handle r button - if (KEY_MOUSE.isDown()) { - if (!rDown) { - rDown = true; - mouseOn = !mouseOn; - } - } else rDown = false; - if ( - Minecraft.getInstance().player == null || - !(Minecraft.getInstance().player.getItemInHand(InteractionHand.MAIN_HAND).getItem() instanceof ItemLaserPointer) - ) mouseOn = false; - - - //Load/unload minePads depending on which item is in the player's hand - if (++minePadTickCounter >= 10) { - minePadTickCounter = 0; - Player ep = mc.player; - - for (PadData pd : padList) - pd.isInHotbar = false; - - if (ep != null) { - updateInventory(ep.getInventory().items, ep.getItemInHand(InteractionHand.MAIN_HAND), 9); - updateInventory(ep.getInventory().offhand, ep.getItemInHand(InteractionHand.OFF_HAND), 1); //Is this okay? - } - - //TODO: Check for GuiContainer.draggedStack - - for (int i = padList.size() - 1; i >= 0; i--) { - PadData pd = padList.get(i); - - if (!pd.isInHotbar) { - pd.view.close(); - pd.view = null; //This is for GuiMinePad, in case the player dies with the GUI open - padList.remove(i); - padMap.remove(pd.id); - } - } - } - - //Laser pointer raycast - if (LaserPointerRenderer.isOn()) { - ItemLaserPointer.tick(mc); - } else { - ItemLaserPointer.deselect(mc); - } - + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent ev) { + if (ev.phase != TickEvent.Phase.END) return; + + //Help + if (InputConstants.isKeyDown(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_KEY_F1)) { + if (!isF1Down) { + isF1Down = true; + + String wikiName = null; + if (mc.screen instanceof WDScreen) + wikiName = ((WDScreen) mc.screen).getWikiPageName(); + else if (mc.screen instanceof AbstractContainerScreen) { + Slot slot = ((AbstractContainerScreen) mc.screen).getSlotUnderMouse(); + + if (slot != null && slot.hasItem() && slot.getItem().getItem() instanceof WDItem) + wikiName = ((WDItem) slot.getItem().getItem()).getWikiName(slot.getItem()); + } + +// if (wikiName != null) +// mcef.openExampleBrowser("https://montoyo.net/wdwiki/index.php/" + wikiName); + } + } else if (isF1Down) + isF1Down = false; + + //Workaround cuz chat sux + if (nextScreen != null && mc.screen == null) { + mc.setScreen(nextScreen); + nextScreen = null; + } + + // handle r button + if (KEY_MOUSE.isDown()) { + if (!rDown) { + rDown = true; + mouseOn = !mouseOn; + } + } else rDown = false; + if ( + Minecraft.getInstance().player == null || + !(Minecraft.getInstance().player.getItemInHand(InteractionHand.MAIN_HAND).getItem() instanceof ItemLaserPointer) + ) mouseOn = false; + + + //Load/unload minePads depending on which item is in the player's hand + if (++minePadTickCounter >= 10) { + minePadTickCounter = 0; + Player ep = mc.player; + + for (PadData pd : padList) + pd.isInHotbar = false; + + if (ep != null) { + updateInventory(ep.getInventory().items, ep.getItemInHand(InteractionHand.MAIN_HAND), 9); + updateInventory(ep.getInventory().offhand, ep.getItemInHand(InteractionHand.OFF_HAND), 1); //Is this okay? + } + + //TODO: Check for GuiContainer.draggedStack + + for (int i = padList.size() - 1; i >= 0; i--) { + PadData pd = padList.get(i); + + if (!pd.isInHotbar) { + pd.view.close(true); + pd.view = null; //This is for GuiMinePad, in case the player dies with the GUI open + padList.remove(i); + padMap.remove(pd.id); + } + } + } + + //Laser pointer raycast + if (LaserPointerRenderer.isOn()) { + ItemLaserPointer.tick(mc); + } else { + ItemLaserPointer.deselect(mc); + } + // //Handle JS queries // jsDispatcher.handleQueries(); - - //Miniserv - if (msClientStarted && mc.player == null) { - msClientStarted = false; - Client.getInstance().stop(); - } - } - - @SubscribeEvent - public void onRenderPlayerHand(RenderHandEvent ev) { - Item item = ev.getItemStack().getItem(); - IItemRenderer renderer; - - if(ItemInit.MINEPAD.isPresent() && ItemInit.LASER_POINTER.isPresent()) { - if (item == ItemInit.MINEPAD.get()) - renderer = minePadRenderer; - else if (item == ItemInit.LASER_POINTER.get()) - renderer = laserPointerRenderer; - else - return; - HumanoidArm handSide = mc.player.getMainArm(); - if (ev.getHand() == InteractionHand.OFF_HAND) - handSide = handSide.getOpposite(); - - if (renderer.render(ev.getPoseStack(), ev.getItemStack(), (handSide == HumanoidArm.RIGHT) ? 1.0f : -1.0f, ev.getSwingProgress(), ev.getEquipProgress(), ev.getMultiBufferSource(), ev.getPackedLight())) { - ev.setCanceled(true); - } - } - } - - @SubscribeEvent - public void onWorldUnload(LevelEvent.Unload ev) { - Log.info("World unloaded; killing screens..."); - if(ev.getLevel() instanceof Level level) { - ResourceLocation dim = level.dimension().location(); - for(int i = screenTracking.size() - 1; i >= 0; i--) { - if(screenTracking.get(i).getLevel().dimension().location().equals(dim)) //Could be world == ev.getWorld() - screenTracking.remove(i).unload(); - } - } - } - - public static BlockHitResult raycast(double dist) { - Minecraft mc = Minecraft.getInstance(); - - Vec3 start = mc.player.getEyePosition(1.0f); - Vec3 lookVec = mc.player.getLookAngle(); - Vec3 end = start.add(lookVec.x * dist, lookVec.y * dist, lookVec.z * dist); - - return mc.level.clip(new ClipContext(start, end, ClipContext.Block.COLLIDER, ClipContext.Fluid.ANY, null)); - } - - private void updateInventory(NonNullList inv, ItemStack heldStack, int cnt) { - for (int i = 0; i < cnt; i++) { - ItemStack item = inv.get(i); - - if (ItemInit.MINEPAD.isPresent()) { - if (item.getItem() == ItemInit.MINEPAD.get()) { - CompoundTag tag = item.getTag(); - - if (tag != null && tag.contains("PadID")) - updatePad(tag.getUUID("PadID"), tag, item == heldStack); - } - } - } - } - - private void updatePad(UUID id, CompoundTag tag, boolean isSelected) { - PadData pd = padMap.get(id); - - if(pd != null) - pd.isInHotbar = true; - else if(isSelected && tag.contains("PadURL")) { - pd = new PadData(tag.getString("PadURL"), id); - padMap.put(id, pd); - padList.add(pd); - } - } - - public MinePadRenderer getMinePadRenderer() { - return minePadRenderer; - } - - public PadData getPadByID(UUID id) { - return padMap.get(id); - } - - public net.montoyo.mcef.api.API getMCEF() { - return mcef; - } - - public static final class ScreenSidePair { - - public TileEntityScreen tes; - public BlockSide side; - - } - - public boolean findScreenFromBrowser(IBrowser browser, ScreenSidePair pair) { - for(TileEntityScreen tes: screenTracking) { - for(int i = 0; i < tes.screenCount(); i++) { - TileEntityScreen.Screen scr = tes.getScreen(i); - - if(scr.browser == browser) { - pair.tes = tes; - pair.side = scr.side; - return true; - } - } - } - - return false; - } - - private static Field findAdvancementToProgressField() { - Field[] fields = ClientAdvancements.class.getDeclaredFields(); - Optional result = Arrays.stream(fields).filter(f -> f.getType() == Map.class).findAny(); - - if(result.isPresent()) { - try { - Field ret = result.get(); - ret.setAccessible(true); - return ret; - } catch(Throwable t) { - t.printStackTrace(); - } - } - - Log.warning("ClientAdvancementManager.advancementToProgress field could not be found"); - return null; - } - - @Override - public BlockGetter getWorld(NetworkEvent.Context context) { - BlockGetter senderLevel = super.getWorld(context); - if (senderLevel == null) return Minecraft.getInstance().level; - return senderLevel; - } - - public static void onDrawSelection(RenderHighlightEvent event) { - if (event.getTarget() instanceof BlockHitResult bhr) { - BlockState state = Minecraft.getInstance().level.getBlockState(bhr.getBlockPos()); - if (state.getBlock() instanceof BlockScreen screen) { - Vector3i vec = new Vector3i(bhr.getBlockPos().getX(), bhr.getBlockPos().getY(), bhr.getBlockPos().getZ()); - BlockSide side = BlockSide.fromInt(bhr.getDirection().ordinal()); - Multiblock.findOrigin( - Minecraft.getInstance().level, vec, - side, null - ); - - BlockPos pos = new BlockPos(vec.x, vec.y, vec.z); - BlockEntity be = Minecraft.getInstance().level.getBlockEntity( - pos - ); - if (be instanceof TileEntityScreen tes) { - if (tes.getScreen(side) != null) { - event.setCanceled(true); - } - } - } - } - } - - /** KEYBINDS **/ - public static final KeyMapping KEY_MOUSE = new KeyMapping("webdisplays.key.toggle_mouse", GLFW.GLFW_KEY_R, "key.categories.misc"); - static boolean rDown = false; - public static boolean mouseOn = false; - - public static void onKeybindRegistry(RegisterKeyMappingsEvent event) { - event.register(KEY_MOUSE); - } + + //Miniserv + if (msClientStarted && mc.player == null) { + msClientStarted = false; + Client.getInstance().stop(); + } + } + + @SubscribeEvent + public void onRenderPlayerHand(RenderHandEvent ev) { + Item item = ev.getItemStack().getItem(); + IItemRenderer renderer; + + if (ItemInit.MINEPAD.isPresent() && ItemInit.LASER_POINTER.isPresent()) { + if (item == ItemInit.MINEPAD.get()) + renderer = minePadRenderer; + else if (item == ItemInit.LASER_POINTER.get()) + renderer = laserPointerRenderer; + else + return; + HumanoidArm handSide = mc.player.getMainArm(); + if (ev.getHand() == InteractionHand.OFF_HAND) + handSide = handSide.getOpposite(); + + if (renderer.render(ev.getPoseStack(), ev.getItemStack(), (handSide == HumanoidArm.RIGHT) ? 1.0f : -1.0f, ev.getSwingProgress(), ev.getEquipProgress(), ev.getMultiBufferSource(), ev.getPackedLight())) { + ev.setCanceled(true); + } + } + } + + @SubscribeEvent + public void onWorldUnload(LevelEvent.Unload ev) { + Log.info("World unloaded; killing screens..."); + if (ev.getLevel() instanceof Level level) { + ResourceLocation dim = level.dimension().location(); + for (int i = screenTracking.size() - 1; i >= 0; i--) { + if (screenTracking.get(i).getLevel().dimension().location().equals(dim)) //Could be world == ev.getWorld() + screenTracking.remove(i).unload(); + } + } + } + + public static BlockHitResult raycast(double dist) { + Minecraft mc = Minecraft.getInstance(); + + Vec3 start = mc.player.getEyePosition(1.0f); + Vec3 lookVec = mc.player.getLookAngle(); + Vec3 end = start.add(lookVec.x * dist, lookVec.y * dist, lookVec.z * dist); + + return mc.level.clip(new ClipContext(start, end, ClipContext.Block.COLLIDER, ClipContext.Fluid.ANY, null)); + } + + private void updateInventory(NonNullList inv, ItemStack heldStack, int cnt) { + for (int i = 0; i < cnt; i++) { + ItemStack item = inv.get(i); + + if (ItemInit.MINEPAD.isPresent()) { + if (item.getItem() == ItemInit.MINEPAD.get()) { + CompoundTag tag = item.getTag(); + + if (tag != null && tag.contains("PadID")) + updatePad(tag.getUUID("PadID"), tag, item == heldStack); + } + } + } + } + + private void updatePad(UUID id, CompoundTag tag, boolean isSelected) { + PadData pd = padMap.get(id); + + if (pd != null) + pd.isInHotbar = true; + else if (isSelected && tag.contains("PadURL")) { + pd = new PadData(tag.getString("PadURL"), id); + padMap.put(id, pd); + padList.add(pd); + } + } + + public MinePadRenderer getMinePadRenderer() { + return minePadRenderer; + } + + public PadData getPadByID(UUID id) { + return padMap.get(id); + } + + public static final class ScreenSidePair { + + public TileEntityScreen tes; + public BlockSide side; + + } + + public boolean findScreenFromBrowser(CefBrowser browser, ScreenSidePair pair) { + for (TileEntityScreen tes : screenTracking) { + for (int i = 0; i < tes.screenCount(); i++) { + TileEntityScreen.Screen scr = tes.getScreen(i); + + if (scr.browser == browser) { + pair.tes = tes; + pair.side = scr.side; + return true; + } + } + } + + return false; + } + + private static Field findAdvancementToProgressField() { + Field[] fields = ClientAdvancements.class.getDeclaredFields(); + Optional result = Arrays.stream(fields).filter(f -> f.getType() == Map.class).findAny(); + + if (result.isPresent()) { + try { + Field ret = result.get(); + ret.setAccessible(true); + return ret; + } catch (Throwable t) { + t.printStackTrace(); + } + } + + Log.warning("ClientAdvancementManager.advancementToProgress field could not be found"); + return null; + } + + @Override + public BlockGetter getWorld(NetworkEvent.Context context) { + BlockGetter senderLevel = super.getWorld(context); + if (senderLevel == null) return Minecraft.getInstance().level; + return senderLevel; + } + + public static void onDrawSelection(RenderHighlightEvent event) { + if (event.getTarget() instanceof BlockHitResult bhr) { + BlockState state = Minecraft.getInstance().level.getBlockState(bhr.getBlockPos()); + if (state.getBlock() instanceof BlockScreen screen) { + Vector3i vec = new Vector3i(bhr.getBlockPos().getX(), bhr.getBlockPos().getY(), bhr.getBlockPos().getZ()); + BlockSide side = BlockSide.fromInt(bhr.getDirection().ordinal()); + Multiblock.findOrigin( + Minecraft.getInstance().level, vec, + side, null + ); + + BlockPos pos = new BlockPos(vec.x, vec.y, vec.z); + BlockEntity be = Minecraft.getInstance().level.getBlockEntity( + pos + ); + if (be instanceof TileEntityScreen tes) { + if (tes.getScreen(side) != null) { + event.setCanceled(true); + } + } + } + } + } + + /** + * KEYBINDS + **/ + public static final KeyMapping KEY_MOUSE = new KeyMapping("webdisplays.key.toggle_mouse", GLFW.GLFW_KEY_R, "key.categories.misc"); + static boolean rDown = false; + public static boolean mouseOn = false; + + public static void onKeybindRegistry(RegisterKeyMappingsEvent event) { + event.register(KEY_MOUSE); + } } diff --git a/src/main/java/net/montoyo/wd/client/WDScheme.java b/src/main/java/net/montoyo/wd/client/WDScheme.java index 8baa669..7e21582 100644 --- a/src/main/java/net/montoyo/wd/client/WDScheme.java +++ b/src/main/java/net/montoyo/wd/client/WDScheme.java @@ -1,149 +1,149 @@ -/* - * Copyright (C) 2018 BARBOTIN Nicolas - */ - -package net.montoyo.wd.client; - -import net.montoyo.mcef.api.IScheme; -import net.montoyo.mcef.api.ISchemeResponseData; -import net.montoyo.mcef.api.ISchemeResponseHeaders; -import net.montoyo.mcef.api.SchemePreResponse; -import net.montoyo.wd.WebDisplays; -import net.montoyo.wd.miniserv.Constants; -import net.montoyo.wd.miniserv.client.Client; -import net.montoyo.wd.miniserv.client.ClientTaskGetFile; -import net.montoyo.wd.utilities.Log; -import net.montoyo.wd.utilities.Util; - -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.util.UUID; - -public class WDScheme implements IScheme { - - private static final String ERROR_PAGE = "

%d %s


Miniserv powered by WebDisplays"; - private ClientTaskGetFile task; - private boolean isErrorPage; - - @Override - public SchemePreResponse processRequest(String url) { - url = url.substring("wd://".length()); - - int pos = url.indexOf('/'); - if(pos < 0) - return SchemePreResponse.NOT_HANDLED; - - String uuidStr = url.substring(0, pos); - String fileStr = url.substring(pos + 1); - - try { - fileStr = URLDecoder.decode(fileStr, "UTF-8"); - } catch(UnsupportedEncodingException ex) { - Log.warningEx("UTF-8 isn't supported... yeah... and I'm a billionaire...", ex); - } - - if(uuidStr.isEmpty() || Util.isFileNameInvalid(fileStr)) - return SchemePreResponse.NOT_HANDLED; - - UUID uuid; - try { - uuid = UUID.fromString(uuidStr); - } catch(IllegalArgumentException ex) { - return SchemePreResponse.NOT_HANDLED; //Invalid UUID - } - - task = new ClientTaskGetFile(uuid, fileStr); - return Client.getInstance().addTask(task) ? SchemePreResponse.HANDLED_CONTINUE : SchemePreResponse.NOT_HANDLED; - } - - @Override - public void getResponseHeaders(ISchemeResponseHeaders resp) { - Log.info("Waiting for response..."); - int status = task.waitForResponse(); - Log.info("Got response %d", status); - - if(status == 0) { - //OK - int extPos = task.getFileName().lastIndexOf('.'); - if(extPos >= 0) { - String mime = ((ClientProxy) WebDisplays.PROXY).getMCEF().mimeTypeFromExtension(task.getFileName().substring(extPos + 1)); - - if(mime != null) - resp.setMimeType(mime); - } - - resp.setStatus(200); - resp.setStatusText("OK"); - resp.setResponseLength(-1); - return; - } - - int errCode; - String errStr; - - if(status == Constants.GETF_STATUS_NOT_FOUND) { - errCode = 404; - errStr = "Not Found"; - } else { - errCode = 500; - errStr = "Internal Server Error"; - } - - resp.setStatus(errCode); - resp.setStatusText(errStr); - - try { - dataToWrite = String.format(ERROR_PAGE, errCode, errStr).getBytes("UTF-8"); - dataOffset = 0; - amountToWrite = dataToWrite.length; - isErrorPage = true; - resp.setResponseLength(amountToWrite); - } catch(UnsupportedEncodingException ex) { - resp.setResponseLength(0); - } - } - - private byte[] dataToWrite; - private int dataOffset; - private int amountToWrite; - - @Override - public boolean readResponse(ISchemeResponseData data) { - if(dataToWrite == null) { - if(isErrorPage) { - data.setAmountRead(0); - return false; - } - - dataToWrite = task.waitForData(); - dataOffset = 3; //packet ID + size - amountToWrite = task.getDataLength(); - - if(amountToWrite <= 0) { - dataToWrite = null; - data.setAmountRead(0); - return false; - } - } - - int toWrite = data.getBytesToRead(); - if(toWrite > amountToWrite) - toWrite = amountToWrite; - - System.arraycopy(dataToWrite, dataOffset, data.getDataArray(), 0, toWrite); - data.setAmountRead(toWrite); - - dataOffset += toWrite; - amountToWrite -= toWrite; - - if(amountToWrite <= 0) { - if(!isErrorPage) - task.nextData(); - - dataToWrite = null; - } - - return true; - } - -} +///* +// * Copyright (C) 2018 BARBOTIN Nicolas +// */ +// +//package net.montoyo.wd.client; +// +//import net.montoyo.mcef.api.IScheme; +//import net.montoyo.mcef.api.ISchemeResponseData; +//import net.montoyo.mcef.api.ISchemeResponseHeaders; +//import net.montoyo.mcef.api.SchemePreResponse; +//import net.montoyo.wd.WebDisplays; +//import net.montoyo.wd.miniserv.Constants; +//import net.montoyo.wd.miniserv.client.Client; +//import net.montoyo.wd.miniserv.client.ClientTaskGetFile; +//import net.montoyo.wd.utilities.Log; +//import net.montoyo.wd.utilities.Util; +// +//import java.io.UnsupportedEncodingException; +//import java.net.URLDecoder; +//import java.util.UUID; +// +//public class WDScheme implements IScheme { +// +// private static final String ERROR_PAGE = "

%d %s


Miniserv powered by WebDisplays"; +// private ClientTaskGetFile task; +// private boolean isErrorPage; +// +// @Override +// public SchemePreResponse processRequest(String url) { +// url = url.substring("wd://".length()); +// +// int pos = url.indexOf('/'); +// if(pos < 0) +// return SchemePreResponse.NOT_HANDLED; +// +// String uuidStr = url.substring(0, pos); +// String fileStr = url.substring(pos + 1); +// +// try { +// fileStr = URLDecoder.decode(fileStr, "UTF-8"); +// } catch(UnsupportedEncodingException ex) { +// Log.warningEx("UTF-8 isn't supported... yeah... and I'm a billionaire...", ex); +// } +// +// if(uuidStr.isEmpty() || Util.isFileNameInvalid(fileStr)) +// return SchemePreResponse.NOT_HANDLED; +// +// UUID uuid; +// try { +// uuid = UUID.fromString(uuidStr); +// } catch(IllegalArgumentException ex) { +// return SchemePreResponse.NOT_HANDLED; //Invalid UUID +// } +// +// task = new ClientTaskGetFile(uuid, fileStr); +// return Client.getInstance().addTask(task) ? SchemePreResponse.HANDLED_CONTINUE : SchemePreResponse.NOT_HANDLED; +// } +// +// @Override +// public void getResponseHeaders(ISchemeResponseHeaders resp) { +// Log.info("Waiting for response..."); +// int status = task.waitForResponse(); +// Log.info("Got response %d", status); +// +// if(status == 0) { +// //OK +// int extPos = task.getFileName().lastIndexOf('.'); +// if(extPos >= 0) { +// String mime = ((ClientProxy) WebDisplays.PROXY).getMCEF().mimeTypeFromExtension(task.getFileName().substring(extPos + 1)); +// +// if(mime != null) +// resp.setMimeType(mime); +// } +// +// resp.setStatus(200); +// resp.setStatusText("OK"); +// resp.setResponseLength(-1); +// return; +// } +// +// int errCode; +// String errStr; +// +// if(status == Constants.GETF_STATUS_NOT_FOUND) { +// errCode = 404; +// errStr = "Not Found"; +// } else { +// errCode = 500; +// errStr = "Internal Server Error"; +// } +// +// resp.setStatus(errCode); +// resp.setStatusText(errStr); +// +// try { +// dataToWrite = String.format(ERROR_PAGE, errCode, errStr).getBytes("UTF-8"); +// dataOffset = 0; +// amountToWrite = dataToWrite.length; +// isErrorPage = true; +// resp.setResponseLength(amountToWrite); +// } catch(UnsupportedEncodingException ex) { +// resp.setResponseLength(0); +// } +// } +// +// private byte[] dataToWrite; +// private int dataOffset; +// private int amountToWrite; +// +// @Override +// public boolean readResponse(ISchemeResponseData data) { +// if(dataToWrite == null) { +// if(isErrorPage) { +// data.setAmountRead(0); +// return false; +// } +// +// dataToWrite = task.waitForData(); +// dataOffset = 3; //packet ID + size +// amountToWrite = task.getDataLength(); +// +// if(amountToWrite <= 0) { +// dataToWrite = null; +// data.setAmountRead(0); +// return false; +// } +// } +// +// int toWrite = data.getBytesToRead(); +// if(toWrite > amountToWrite) +// toWrite = amountToWrite; +// +// System.arraycopy(dataToWrite, dataOffset, data.getDataArray(), 0, toWrite); +// data.setAmountRead(toWrite); +// +// dataOffset += toWrite; +// amountToWrite -= toWrite; +// +// if(amountToWrite <= 0) { +// if(!isErrorPage) +// task.nextData(); +// +// dataToWrite = null; +// } +// +// return true; +// } +// +//} diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiKeyboard.java b/src/main/java/net/montoyo/wd/client/gui/GuiKeyboard.java index 9d61b8e..0536769 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiKeyboard.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiKeyboard.java @@ -136,16 +136,16 @@ public class GuiKeyboard extends WDScreen { defaultBackground = showWarning; syncTicks = 5; - if (vivecraftPresent) - if (VRPlayer.get() != null) - KeyboardHandler.setOverlayShowing(true); +// if (vivecraftPresent) +// if (VRPlayer.get() != null) +// KeyboardHandler.setOverlayShowing(true); } @Override public void onClose() { - if (vivecraftPresent) - if (VRPlayer.get() != null) - KeyboardHandler.setOverlayShowing(false); +// if (vivecraftPresent) +// if (VRPlayer.get() != null) +// KeyboardHandler.setOverlayShowing(false); super.onClose(); } diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java b/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java index c52cdb4..aee9839 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiMinePad.java @@ -37,8 +37,8 @@ public class GuiMinePad extends WDScreen { this(); this.pad = pad; - if (WebDisplays.cursorSupport) - pad.view.allowCursorChanges(true); +// if (WebDisplays.cursorSupport) +// pad.view.allowCursorChanges(true); } @Override @@ -61,31 +61,31 @@ public class GuiMinePad extends WDScreen { bb.vertex(x, y + h, 0.0).color(255, 255, 255, 255).endVertex(); } - @Override - public void render(PoseStack poseStack, int mouseX, int mouseY, float ptt) { - renderBackground(poseStack); - - RenderSystem.disableTexture(); - RenderSystem.disableCull(); - RenderSystem.setShaderColor(0.73f, 0.73f, 0.73f, 1.0f); - - Tesselator t = Tesselator.getInstance(); - BufferBuilder bb = t.getBuilder(); - bb.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); - addRect(bb, vx, vy - 16, vw, 16); - addRect(bb, vx, vy + vh, vw, 16); - addRect(bb, vx - 16, vy, 16, vh); - addRect(bb, vx + vw, vy, 16, vh); - t.end(); - - RenderSystem.enableTexture(); - - if (pad.view != null) { - pad.view.draw(poseStack, vx, vy + vh, vx + vw, vy); - } - - RenderSystem.enableCull(); - } +// @Override +// public void render(PoseStack poseStack, int mouseX, int mouseY, float ptt) { +// renderBackground(poseStack); +// +// RenderSystem.disableTexture(); +// RenderSystem.disableCull(); +// RenderSystem.setShaderColor(0.73f, 0.73f, 0.73f, 1.0f); +// +// Tesselator t = Tesselator.getInstance(); +// BufferBuilder bb = t.getBuilder(); +// bb.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); +// addRect(bb, vx, vy - 16, vw, 16); +// addRect(bb, vx, vy + vh, vw, 16); +// addRect(bb, vx - 16, vy, 16, vh); +// addRect(bb, vx + vw, vy, 16, vh); +// t.end(); +// +// RenderSystem.enableTexture(); +// +// if (pad.view != null) { +// pad.view.draw(poseStack, vx, vy + vh, vx + vw, vy); +// } +// +// RenderSystem.enableCull(); +// } @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { @@ -99,12 +99,13 @@ public class GuiMinePad extends WDScreen { @Override public boolean charTyped(char codePoint, int modifiers) { - if (pad.view != null) { - pad.view.injectKeyTyped((int) codePoint, modifiers); - return true; - } else { - return super.charTyped(codePoint, modifiers); - } +// if (pad.view != null) { +// pad.view.injectKeyTyped((int) codePoint, modifiers); +// return true; +// } else { +// return super.charTyped(codePoint, modifiers); +// } + return false; } /* copied from MCEF */ @@ -128,16 +129,16 @@ public class GuiMinePad extends WDScreen { key = '\n'; } - if (pad.view != null) { - if (pressed) - pad.view.injectKeyPressedByKeyCode(keyCode, key, modifiers); - else - pad.view.injectKeyReleasedByKeyCode(keyCode, key, modifiers); - - if (pressed && key == '\n') - if (modifiers != 0) pad.view.injectKeyTyped('\r', modifiers); - return true; - } +// if (pad.view != null) { +// if (pressed) +// pad.view.injectKeyPressedByKeyCode(keyCode, key, modifiers); +// else +// pad.view.injectKeyReleasedByKeyCode(keyCode, key, modifiers); +// +// if (pressed && key == '\n') +// if (modifiers != 0) pad.view.injectKeyTyped('\r', modifiers); +// return true; +// } return false; } @@ -176,20 +177,20 @@ public class GuiMinePad extends WDScreen { double mx = (sx - vx) / vw; double my = (sy - vy) / vh; - if (pad.view != null && mx >= 0 && mx <= 1) { - int wheel = (int) scrollAmount; - - //Scale again according to the webview - sx = (int) (mx * WebDisplays.INSTANCE.padResX); - sy = (int) (my * WebDisplays.INSTANCE.padResY); - - if (wheel != 0) - pad.view.injectMouseWheel(sx, sy, (hasControlDown() && ! hasAltDown() && !hasShiftDown()) ? GLFW.GLFW_MOD_CONTROL : 0, wheel, 0); - if (btn == -1) - pad.view.injectMouseMove(sx, sy, 0, sy < 0); - else - pad.view.injectMouseButton(sx, sy, 0, btn + 1, pressed, 1); - } +// if (pad.view != null && mx >= 0 && mx <= 1) { +// int wheel = (int) scrollAmount; +// +// //Scale again according to the webview +// sx = (int) (mx * WebDisplays.INSTANCE.padResX); +// sy = (int) (my * WebDisplays.INSTANCE.padResY); +// +// if (wheel != 0) +// pad.view.injectMouseWheel(sx, sy, (hasControlDown() && ! hasAltDown() && !hasShiftDown()) ? GLFW.GLFW_MOD_CONTROL : 0, wheel, 0); +// if (btn == -1) +// pad.view.injectMouseMove(sx, sy, 0, sy < 0); +// else +// pad.view.injectMouseButton(sx, sy, 0, btn + 1, pressed, 1); +// } } public static Optional getChar(int keyCode, int scanCode) { @@ -222,7 +223,7 @@ public class GuiMinePad extends WDScreen { public void removed() { super.removed(); if (pad.view instanceof CefBrowserOsr osr) { - osr.allowCursorChanges(true); +// osr.allowCursorChanges(true); osr.onCursorChange(null, 0); } } @@ -230,10 +231,10 @@ public class GuiMinePad extends WDScreen { @Override public void onClose() { super.onClose(); - if (WebDisplays.cursorSupport) { - pad.view.allowCursorChanges(false); - if (pad.view instanceof CefBrowserOsr osr) - osr.onCursorChange(null, 0); - } +// if (WebDisplays.cursorSupport) { +// pad.view.allowCursorChanges(false); +// if (pad.view instanceof CefBrowserOsr osr) +// osr.onCursorChange(null, 0); +// } } } diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiServer.java b/src/main/java/net/montoyo/wd/client/gui/GuiServer.java index fae025d..b8e6f2f 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiServer.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiServer.java @@ -8,6 +8,7 @@ import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.language.I18n; import net.minecraft.client.resources.sounds.SimpleSoundInstance; @@ -23,6 +24,8 @@ import net.montoyo.wd.miniserv.client.*; import net.montoyo.wd.net.WDNetworkRegistry; import net.montoyo.wd.utilities.*; import org.lwjgl.glfw.GLFW; +import org.lwjgl.opengl.GL; +import org.lwjgl.opengl.GL11; import javax.annotation.Nullable; import javax.swing.filechooser.FileSystemView; @@ -93,48 +96,50 @@ public class GuiServer extends WDScreen { } @Override - public void render(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void render(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { super.render(poseStack, mouseX, mouseY, ptt); int x = (width - 256) / 2; int y = (height - 176) / 2; - RenderSystem.enableTexture(); +// RenderSystem.enableTexture(); + GL11.glEnable(GL11.GL_TEXTURE_2D); RenderSystem.setShaderTexture(0, BG_IMAGE); RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); - blit(poseStack, x, y, 0, 0, 256, 176); +// blit(poseStack, x, y, 0, 0, 256, 176); x += 18; y += 18; for(int i = 0; i < lines.size(); i++) { - if(selectedLine == i) { - drawWhiteQuad(x - 1, y - 2, font.width(lines.get(i)) + 1, 12); - font.drawShadow(poseStack, lines.get(i), x, y, 0xFF129700, false); - } else - font.drawShadow(poseStack, lines.get(i), x, y, 0xFFFFFFFF, false); +// if(selectedLine == i) { +// drawWhiteQuad(x - 1, y - 2, font.width(lines.get(i)) + 1, 12); +// font.drawShadow(poseStack, lines.get(i), x, y, 0xFF129700, false); +// } else +// font.drawShadow(poseStack, lines.get(i), x, y, 0xFFFFFFFF, false); y += 12; } if(!promptLocked) { - if (queue.isEmpty()) { - x = font.drawShadow(poseStack, userPrompt, x, y, 0xFFFFFFFF, false); - x = font.drawShadow(poseStack, prompt, x, y, 0xFFFFFFFF, false); - } else { - x = font.drawShadow(poseStack, tr("press_for_more"), x, y, 0xFFFFFFFF, false); - } +// if (queue.isEmpty()) { +// x = font.drawShadow(poseStack, userPrompt, x, y, 0xFFFFFFFF, false); +// x = font.drawShadow(poseStack, prompt, x, y, 0xFFFFFFFF, false); +// } else { +// x = font.drawShadow(poseStack, tr("press_for_more"), x, y, 0xFFFFFFFF, false); +// } } if(!uploadWizard && blinkTime < 5) drawWhiteQuad(x + 1, y, 6, 8); - RenderSystem.enableTexture(); +// RenderSystem.enableTexture(); + GL11.glEnable(GL11.GL_TEXTURE_2D); RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); RenderSystem.setShaderTexture(0, FG_IMAGE); RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); - blit(poseStack,(width - 256) / 2, (height - 176) / 2, 0, 0, 256, 176); +// blit(poseStack,(width - 256) / 2, (height - 176) / 2, 0, 0, 256, 176); } private void drawWhiteQuad(int x, int y, int w, int h) { @@ -144,7 +149,8 @@ public class GuiServer extends WDScreen { float yd2 = (float) (y + h); float zd = (float) getBlitOffset(); - RenderSystem.disableTexture(); +// RenderSystem.disableTexture(); + GL11.glDisable(GL11.GL_TEXTURE_2D); RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); Tesselator t = Tesselator.getInstance(); BufferBuilder bb = t.getBuilder(); @@ -154,9 +160,14 @@ public class GuiServer extends WDScreen { bb.vertex(xd2, yd, zd).endVertex(); bb.vertex(xd, yd, zd).endVertex(); t.end(); - RenderSystem.enableTexture(); + GL11.glEnable(GL11.GL_TEXTURE_2D); +// RenderSystem.enableTexture(); } - + + private float getBlitOffset() { + return 0; + } + @Override public void tick() { super.tick(); diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java b/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java index 951c376..96ffe4c 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java @@ -126,7 +126,7 @@ public class GuiSetURL2 extends WDScreen { } url = Util.addProtocol(url); - url = ((ClientProxy) WebDisplays.PROXY).getMCEF().punycode(url); +// url = ((ClientProxy) WebDisplays.PROXY).getMCEF().punycode(url); if (isPad) { UUID uuid = getUUID(); diff --git a/src/main/java/net/montoyo/wd/client/gui/RenderRecipe.java b/src/main/java/net/montoyo/wd/client/gui/RenderRecipe.java index eaf1259..f06fc89 100644 --- a/src/main/java/net/montoyo/wd/client/gui/RenderRecipe.java +++ b/src/main/java/net/montoyo/wd/client/gui/RenderRecipe.java @@ -7,6 +7,7 @@ package net.montoyo.wd.client.gui; import com.mojang.blaze3d.platform.Lighting; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.resources.language.I18n; @@ -77,15 +78,16 @@ public class RenderRecipe extends Screen { Log.info("Loaded %d recipes", recipes.size()); nextRecipe(); } - + @Override - public void render(PoseStack poseStack, int mouseX, int mouseY, float partialTick) { - renderBackground(poseStack); + public void render(GuiGraphics context, int mouseX, int mouseY, float partialTick) { +// renderBackground(poseStack); + renderBackground(context); RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f); RenderSystem.setShaderTexture(0, CRAFTING_TABLE_GUI_TEXTURES); - blit(poseStack, x, y, 0, 0, SIZE_X, SIZE_Y); - font.draw(poseStack, I18n.get("container.crafting"), x + 28, y + 6, 0x404040); +// context.blit(x, y, 0, 0, SIZE_X, SIZE_Y); +// font.draw(poseStack, I18n.get("container.crafting"), x + 28, y + 6, 0x404040); Lighting.setupForFlatItems(); // RenderSystem.disableLighting(); //TODO: Need this? @@ -98,15 +100,15 @@ public class RenderRecipe extends Screen { int x = this.x + 30 + sx * 18; int y = this.y + 17 + sy * 18; - renderItem.renderAndDecorateItem(minecraft.player, is, x, y, 0); - renderItem.renderGuiItemDecorations(font, is, x, y, null); +// renderItem.renderAndDecorateItem(minecraft.player, is, x, y, 0); +// renderItem.renderGuiItemDecorations(font, is, x, y, null); } } } if(recipeResult != null) { - renderItem.renderAndDecorateItem(minecraft.player, recipeResult, x + 124, y + 35, 0); - renderItem.renderGuiItemDecorations(font, recipeResult, x + 124, y + 35, null); +// renderItem.renderAndDecorateItem(minecraft.player, recipeResult, x + 124, y + 35, 0); +// renderItem.renderGuiItemDecorations(font, recipeResult, x + 124, y + 35, null); } // GlStateManager.enableLighting(); @@ -127,7 +129,7 @@ public class RenderRecipe extends Screen { } } - recipeResult = recipe.getResultItem(); +// recipeResult = recipe.getResultItem(); } private void nextRecipe() { diff --git a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java index e2965a0..53ede97 100644 --- a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java +++ b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java @@ -9,6 +9,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; @@ -111,15 +112,15 @@ public abstract class WDScreen extends Screen { } @Override - public void render(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void render(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { if(defaultBackground) renderBackground(poseStack); - for(Control ctrl: controls) - ctrl.draw(poseStack, mouseX, mouseY, ptt); - - for(Control ctrl: postDrawList) - ctrl.postDraw(poseStack, mouseX, mouseY, ptt); +// for(Control ctrl: controls) +// ctrl.draw(poseStack, mouseX, mouseY, ptt); +// +// for(Control ctrl: postDrawList) +// ctrl.postDraw(poseStack, mouseX, mouseY, ptt); } @Override @@ -167,7 +168,7 @@ public abstract class WDScreen extends Screen { @Override protected void init() { CURRENT_SCREEN = this; - minecraft.keyboardHandler.setSendRepeatsToGui(true); +// minecraft.keyboardHandler.setSendRepeatsToGui(true); } @Override @@ -180,7 +181,7 @@ public abstract class WDScreen extends Screen { for(Control ctrl : controls) ctrl.destroy(); - Minecraft.getInstance().keyboardHandler.setSendRepeatsToGui(false); +// Minecraft.getInstance().keyboardHandler.setSendRepeatsToGui(false); CURRENT_SCREEN = null; } @@ -363,11 +364,11 @@ public abstract class WDScreen extends Screen { } public void drawItemStackTooltip(PoseStack poseStack, ItemStack is, int x, int y) { - renderTooltip(poseStack, is, x, y); //Since it's protected... +// renderTooltip(poseStack, is, x, y); //Since it's protected... } public void drawTooltip(PoseStack poseStack, List lines, int x, int y) { - renderTooltip(poseStack, lines.stream().map(a -> FormattedCharSequence.forward(a, Style.EMPTY)).collect(Collectors.toList()), x, y, font); //This is also protected... +// renderTooltip(poseStack, lines.stream().map(a -> FormattedCharSequence.forward(a, Style.EMPTY)).collect(Collectors.toList()), x, y, font); //This is also protected... } public void requirePostDraw(Control ctrl) { diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/Button.java b/src/main/java/net/montoyo/wd/client/gui/controls/Button.java index 35a30ae..db41777 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/Button.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/Button.java @@ -5,10 +5,15 @@ package net.montoyo.wd.client.gui.controls; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.ComponentContents; +import net.minecraft.network.chat.MutableComponent; import net.montoyo.wd.client.gui.loading.JsonOWrapper; import org.lwjgl.glfw.GLFW; +import java.util.function.Supplier; + public class Button extends Control { protected final net.minecraft.client.gui.components.Button btn; @@ -31,17 +36,23 @@ public class Button extends Control { } } - + public Button() { - btn = new net.minecraft.client.gui.components.Button(0,0, 0, 0, Component.nullToEmpty(null), a -> {}); + btn = net.minecraft.client.gui.components.Button.builder(Component.nullToEmpty(""), a -> {}) + .bounds(0, 0, 0, 0) + .build(); } public Button(String text, int x, int y, int width) { - btn = new net.minecraft.client.gui.components.Button(x, y, width, 20, Component.nullToEmpty(text), a -> {}); + btn = net.minecraft.client.gui.components.Button.builder(Component.nullToEmpty(text), a -> {}) + .bounds(x, y, width, 20) + .build(); } public Button(String text, int x, int y) { - btn = new net.minecraft.client.gui.components.Button(0, 0, x, y, Component.nullToEmpty(text), a -> {}); + btn = net.minecraft.client.gui.components.Button.builder(Component.nullToEmpty(text), a -> {}) + .bounds(0, 0, x, y) + .build(); } @Override @@ -71,7 +82,7 @@ public class Button extends Control { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { btn.render(poseStack, mouseX, mouseY, ptt); } @@ -103,18 +114,20 @@ public class Button extends Control { @Override public void setPos(int x, int y) { - btn.x = x; - btn.y = y; +// btn.x = x; +// btn.y = y; } @Override public int getX() { - return btn.x; +// return btn.x; + return 0; } @Override public int getY() { - return btn.y; +// return btn.y; + return 0; } public net.minecraft.client.gui.components.Button getMcButton() { @@ -204,8 +217,8 @@ public class Button extends Control { @Override public void load(JsonOWrapper json) { super.load(json); - btn.x = json.getInt("x", 0); - btn.y = json.getInt("y", 0); +// btn.x = json.getInt("x", 0); +// btn.y = json.getInt("y", 0); btn.setWidth(json.getInt("width", 200)); btn.setHeight(json.getInt("height", 20)); btn.setMessage(Component.nullToEmpty(tr(json.getString("label", btn.getMessage().getContents().toString())))); diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java b/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java index 092df44..c023261 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/CheckBox.java @@ -7,6 +7,7 @@ package net.montoyo.wd.client.gui.controls; import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; @@ -75,21 +76,21 @@ public class CheckBox extends BasicControl { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { - if(visible) { -// GlStateManager.disableAlpha(); - poseStack.pushPose(); - RenderSystem.setShaderTexture(2, checked ? texChecked : texUnchecked); - RenderSystem.bindTexture(2); - RenderSystem.enableBlend(); - fillTexturedRect(poseStack, x, y, WIDTH, HEIGHT, 0.0, 0.0, 1.0, 1.0); - RenderSystem.disableBlend(); - RenderSystem.bindTexture(-1); - - poseStack.popPose(); - boolean inside = (!disabled && mouseX >= x && mouseX <= x + WIDTH + 2 + labelW && mouseY >= y && mouseY < y + HEIGHT); - font.draw(poseStack, label, x + WIDTH + 2, y + 4, inside ? 0xFF0080FF : COLOR_WHITE); - } + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { +// if(visible) { +//// GlStateManager.disableAlpha(); +// poseStack.pushPose(); +// RenderSystem.setShaderTexture(2, checked ? texChecked : texUnchecked); +// RenderSystem.bindTexture(2); +// RenderSystem.enableBlend(); +// fillTexturedRect(poseStack, x, y, WIDTH, HEIGHT, 0.0, 0.0, 1.0, 1.0); +// RenderSystem.disableBlend(); +// RenderSystem.bindTexture(-1); +// +// poseStack.popPose(); +// boolean inside = (!disabled && mouseX >= x && mouseX <= x + WIDTH + 2 + labelW && mouseY >= y && mouseY < y + HEIGHT); +//// font.draw(poseStack, label, x + WIDTH + 2, y + 4, inside ? 0xFF0080FF : COLOR_WHITE); +// } } public void setLabel(String label) { @@ -134,9 +135,9 @@ public class CheckBox extends BasicControl { } @Override - public void postDraw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void postDraw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { if(tooltip != null && !disabled && mouseX >= x && mouseX <= x + WIDTH + 2 + labelW && mouseY >= y && mouseY < y + HEIGHT) - parent.drawTooltip(poseStack, tooltip, mouseX, mouseY); + parent.drawTooltip(poseStack.pose(), tooltip, mouseX, mouseY); } } diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/Container.java b/src/main/java/net/montoyo/wd/client/gui/controls/Container.java index ac736f8..488f284 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/Container.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/Container.java @@ -5,6 +5,7 @@ package net.montoyo.wd.client.gui.controls; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.montoyo.wd.client.gui.loading.GuiLoader; import net.montoyo.wd.client.gui.loading.JsonAWrapper; import net.montoyo.wd.client.gui.loading.JsonOWrapper; @@ -137,13 +138,13 @@ public abstract class Container extends BasicControl { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { if(visible) { mouseX -= x + paddingX; mouseY -= y + paddingY; - poseStack.pushPose(); - poseStack.translate(x + paddingX, y + paddingY, 0.0); + poseStack.pose().pushPose(); + poseStack.pose().translate(x + paddingX, y + paddingY, 0.0); if(disabled) { for(Control ctrl : childs) @@ -153,7 +154,7 @@ public abstract class Container extends BasicControl { ctrl.draw(poseStack, mouseX, mouseY, ptt); } - poseStack.popPose(); + poseStack.pose().popPose(); } } diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/Control.java b/src/main/java/net/montoyo/wd/client/gui/controls/Control.java index 00c33ac..76c6022 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/Control.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/Control.java @@ -10,6 +10,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.language.I18n; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; @@ -89,10 +90,10 @@ public abstract class Control { return false; } - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { } - public void postDraw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void postDraw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { } public void destroy() { diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/ControlGroup.java b/src/main/java/net/montoyo/wd/client/gui/controls/ControlGroup.java index 3b27b7d..4e97419 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/ControlGroup.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/ControlGroup.java @@ -9,8 +9,10 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexFormat; +import net.minecraft.client.gui.GuiGraphics; import net.montoyo.wd.client.gui.loading.JsonOWrapper; import net.montoyo.wd.utilities.Bounds; +import org.lwjgl.opengl.GL11; import static org.lwjgl.opengl.GL11.*; @@ -94,13 +96,14 @@ public class ControlGroup extends Container { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { super.draw(poseStack, mouseX, mouseY, ptt); if(visible) { - poseStack.pushPose(); + poseStack.pose().pushPose(); RenderSystem.setShaderColor(0.5f, 0.5f, 0.5f, 1.f); - RenderSystem.disableTexture(); +// RenderSystem.disableTexture(); + GL11.glDisable(GL_TEXTURE_2D); RenderSystem.enableBlend(); RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); @@ -159,11 +162,12 @@ public class ControlGroup extends Container { tessellator.end(); RenderSystem.disableBlend(); - RenderSystem.enableTexture(); - poseStack.popPose(); +// RenderSystem.enableTexture(); + GL11.glEnable(GL_TEXTURE_2D); + poseStack.pose().popPose(); - if(labelW != 0) - font.drawShadow(poseStack, label, x + 10 + ((int) bp), y, labelColor, labelShadowed); +// if(labelW != 0) +// font.drawShadow(poseStack, label, x + 10 + ((int) bp), y, labelColor, labelShadowed); } } diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/Icon.java b/src/main/java/net/montoyo/wd/client/gui/controls/Icon.java index 74cc619..22c46a2 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/Icon.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/Icon.java @@ -6,8 +6,10 @@ package net.montoyo.wd.client.gui.controls; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.resources.ResourceLocation; import net.montoyo.wd.client.gui.loading.JsonOWrapper; +import org.lwjgl.opengl.GL; import org.lwjgl.opengl.GL11; public class Icon extends BasicControl { @@ -44,17 +46,18 @@ public class Icon extends BasicControl { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { if(texture != null) { - poseStack.pushPose(); - RenderSystem.enableTexture(); + poseStack.pose().pushPose(); +// RenderSystem.enableTexture(); + GL11.glEnable(GL11.GL_TEXTURE_2D); RenderSystem.setShaderTexture(1, texture); RenderSystem.bindTexture(1); RenderSystem.enableBlend(); - fillTexturedRect(poseStack, x, y, width, height, u1, v1, u2, v2); + fillTexturedRect(poseStack.pose(), x, y, width, height, u1, v1, u2, v2); RenderSystem.disableBlend(); RenderSystem.bindTexture(-1); - poseStack.popPose(); + poseStack.pose().popPose(); } } diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/Label.java b/src/main/java/net/montoyo/wd/client/gui/controls/Label.java index ea1cc5b..a6b24ad 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/Label.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/Label.java @@ -5,6 +5,7 @@ package net.montoyo.wd.client.gui.controls; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.montoyo.wd.client.gui.loading.JsonOWrapper; public class Label extends BasicControl { @@ -72,9 +73,9 @@ public class Label extends BasicControl { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { - if(visible) - font.drawShadow(poseStack, label, x, y, color, shadowed); + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { +// if(visible) +// font.drawShadow(poseStack, label, x, y, color, shadowed); } @Override diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/List.java b/src/main/java/net/montoyo/wd/client/gui/controls/List.java index 10bea8c..2282afa 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/List.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/List.java @@ -9,6 +9,7 @@ import com.mojang.blaze3d.pipeline.TextureTarget; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.montoyo.wd.client.gui.loading.JsonOWrapper; import java.util.ArrayList; @@ -120,7 +121,7 @@ public class List extends BasicControl { break; int color = (i == selected) ? selColor : COLOR_WHITE; - font.draw(poseStack, content.get(i).text, 4, i * 12 + offset, color); +// font.draw(poseStack, content.get(i).text, 4, i * 12 + offset, color); } } @@ -311,7 +312,7 @@ public class List extends BasicControl { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { if(visible) { if(update) { renderToFBO(); @@ -320,7 +321,7 @@ public class List extends BasicControl { fbo.bindRead(); //TODO: Make sure is right RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); - fillTexturedRect(poseStack, x, y, width, height, 0.0, 1.0, 1.0, 0.0); +// fillTexturedRect(poseStack, x, y, width, height, 0.0, 1.0, 1.0, 0.0); fbo.unbindRead(); fillRect(x + width - 5, y + 1 + scrollPos, 4, scrollSize, (scrolling || isInScrollbar(mouseX, mouseY)) ? 0xFF202020 : 0xFF404040); diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/TextField.java b/src/main/java/net/montoyo/wd/client/gui/controls/TextField.java index b3cd183..5405196 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/TextField.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/TextField.java @@ -5,6 +5,7 @@ package net.montoyo.wd.client.gui.controls; import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.EditBox; import net.minecraft.network.chat.Component; import net.montoyo.wd.client.gui.loading.JsonOWrapper; @@ -190,7 +191,7 @@ public class TextField extends Control { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { field.render(poseStack, mouseX, mouseY, ptt); } @@ -241,23 +242,25 @@ public class TextField extends Control { @Override public void setPos(int x, int y) { - field.x = x + 1; - field.y = y + 1; +// field.x = x + 1; +// field.y = y + 1; } @Override public int getX() { - return field.x - 1; +// return field.x - 1; + return 0; } @Override public int getY() { - return field.y - 1; +// return field.y - 1; + return 0; } public void setDisabled(boolean en) { enabled = !en; - field.setFocus(enabled); +// field.setFocus(enabled); } public boolean isDisabled() { @@ -265,12 +268,12 @@ public class TextField extends Control { } public void enable() { - field.setFocus(true); +// field.setFocus(true); enabled = true; } public void disable() { - field.setFocus(false); +// field.setFocus(false); enabled = false; } @@ -291,7 +294,7 @@ public class TextField extends Control { } public void setFocused(boolean val) { - field.setFocus(val); +// field.setFocus(val); } public boolean hasFocus() { @@ -299,7 +302,7 @@ public class TextField extends Control { } public void focus() { - field.setFocus(true); +// field.setFocus(true); } public void setTextColor(int color) { @@ -336,8 +339,8 @@ public class TextField extends Control { @Override public void load(JsonOWrapper json) { super.load(json); - field.x = json.getInt("x", 0) + 1; - field.y = json.getInt("y", 0) + 1; +// field.x = json.getInt("x", 0) + 1; +// field.y = json.getInt("y", 0) + 1; field.setWidth(json.getInt("width", 200) - 2); field.setHeight(json.getInt("height", 22) - 2); field.setValue(tr(json.getString("text", ""))); @@ -350,7 +353,7 @@ public class TextField extends Control { field.setTextColor(textColor); field.setTextColorUneditable(disabledColor); - field.setFocus(enabled); +// field.setFocus(enabled); } } diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/UpgradeGroup.java b/src/main/java/net/montoyo/wd/client/gui/controls/UpgradeGroup.java index ffcbb14..f391d53 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/UpgradeGroup.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/UpgradeGroup.java @@ -6,6 +6,7 @@ package net.montoyo.wd.client.gui.controls; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.world.item.ItemStack; import net.montoyo.wd.client.gui.loading.JsonOWrapper; @@ -26,7 +27,7 @@ public class UpgradeGroup extends BasicControl { } @Override - public void draw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void draw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { if(upgrades != null) { int x = this.x; @@ -34,17 +35,17 @@ public class UpgradeGroup extends BasicControl { if(is == overStack && !disabled) fillRect(x, y, 16, 16, 0x80FF0000); - renderItem.renderAndDecorateItem(mc.player, is, x, y, 0); - renderItem.renderAndDecorateItem(is, font.lineHeight, x, y); //TODO is lineHeight right? +// renderItem.renderAndDecorateItem(mc.player, is, x, y, 0); +// renderItem.renderAndDecorateItem(is, font.lineHeight, x, y); //TODO is lineHeight right? x += 18; } } } @Override - public void postDraw(PoseStack poseStack, int mouseX, int mouseY, float ptt) { + public void postDraw(GuiGraphics poseStack, int mouseX, int mouseY, float ptt) { if(overStack != null) - parent.drawItemStackTooltip(poseStack, overStack, mouseX, mouseY); + parent.drawItemStackTooltip(poseStack.pose(), overStack, mouseX, mouseY); } @Override diff --git a/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java b/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java index 0d387d3..cd456ae 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java +++ b/src/main/java/net/montoyo/wd/client/renderers/ScreenModelLoader.java @@ -39,16 +39,27 @@ public class ScreenModelLoader implements IGeometryLoader { - + @Override - public BakedModel bake(IGeometryBakingContext iGeometryBakingContext, ModelBakery arg, Function spriteGetter, ModelState modelState, ItemOverrides itemOverrides, ResourceLocation arg4) { - return new ScreenBaker(modelState, spriteGetter, itemOverrides, iGeometryBakingContext.getTransforms()); + public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Function spriteGetter, ModelState modelState, ItemOverrides overrides, ResourceLocation modelLocation) { + return new ScreenBaker(modelState, spriteGetter, overrides, context.getTransforms()); } + +// @Override +// public void resolveParents(Function modelGetter, IGeometryBakingContext context) { +// IUnbakedGeometry.super.resolveParents(modelGetter, context); +// } + +// @Override +// public Set getConfigurableComponentNames() { +// return IUnbakedGeometry.super.getConfigurableComponentNames(); +// } - @Override - public Collection getMaterials(IGeometryBakingContext iGeometryBakingContext, Function function, Set> set) { - return Arrays.asList(MATERIALS_SIDES); - } + // TODO: ? +// @Override +// public Collection getMaterials(IGeometryBakingContext iGeometryBakingContext, Function function, Set> set) { +// return Arrays.asList(MATERIALS_SIDES); +// } } } diff --git a/src/main/java/net/montoyo/wd/controls/builtin/JSRequestControl.java b/src/main/java/net/montoyo/wd/controls/builtin/JSRequestControl.java index 5b3f5fb..282b3dc 100644 --- a/src/main/java/net/montoyo/wd/controls/builtin/JSRequestControl.java +++ b/src/main/java/net/montoyo/wd/controls/builtin/JSRequestControl.java @@ -51,8 +51,8 @@ public class JSRequestControl extends ScreenControl { @Override public void handleServer(BlockPos pos, BlockSide side, TileEntityScreen tes, NetworkEvent.Context ctx, Function permissionChecker) throws MissingPermissionException { ServerPlayer player = ctx.getSender(); - if (reqType == null || data == null) Log.warning("Caught invalid JS request from player %s (UUID %s)", player.getName(), player.getGameProfile().getId().toString()); - else tes.handleJSRequest(player, side, reqId, reqType, data); +// if (reqType == null || data == null) Log.warning("Caught invalid JS request from player %s (UUID %s)", player.getName(), player.getGameProfile().getId().toString()); +// else tes.handleJSRequest(player, side, reqId, reqType, data); } @Override diff --git a/src/main/java/net/montoyo/wd/core/WDCreativeTab.java b/src/main/java/net/montoyo/wd/core/WDCreativeTab.java index 1424853..bb149ce 100644 --- a/src/main/java/net/montoyo/wd/core/WDCreativeTab.java +++ b/src/main/java/net/montoyo/wd/core/WDCreativeTab.java @@ -1,21 +1,21 @@ -/* - * Copyright (C) 2018 BARBOTIN Nicolas - */ - -package net.montoyo.wd.core; - -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; -import net.montoyo.wd.init.BlockInit; - -public class WDCreativeTab extends CreativeModeTab { - - public WDCreativeTab() { - super("webdisplays"); - } - - @Override - public ItemStack makeIcon() { - return new ItemStack(BlockInit.blockScreen.get()); - } -} +///* +// * Copyright (C) 2018 BARBOTIN Nicolas +// */ +// +//package net.montoyo.wd.core; +// +//import net.minecraft.world.item.CreativeModeTab; +//import net.minecraft.world.item.ItemStack; +//import net.montoyo.wd.init.BlockInit; +// +//public class WDCreativeTab extends CreativeModeTab { +// +// public WDCreativeTab() { +// super("webdisplays"); +// } +// +// @Override +// public ItemStack makeIcon() { +// return new ItemStack(BlockInit.blockScreen.get()); +// } +//} diff --git a/src/main/java/net/montoyo/wd/entity/TileEntityInterfaceBase.java b/src/main/java/net/montoyo/wd/entity/TileEntityInterfaceBase.java index 98ed360..ae07714 100644 --- a/src/main/java/net/montoyo/wd/entity/TileEntityInterfaceBase.java +++ b/src/main/java/net/montoyo/wd/entity/TileEntityInterfaceBase.java @@ -391,7 +391,7 @@ public abstract class TileEntityInterfaceBase extends TileEntityPeripheralBase { else if((scr.getScreen(screenSide).rightsFor(owner.uuid) & ScreenRights.CHANGE_URL) == 0) return err("restrictions"); else { - scr.evalJS(screenSide, code); +// scr.evalJS(screenSide, code); return TRUE; } } diff --git a/src/main/java/net/montoyo/wd/init/ItemInit.java b/src/main/java/net/montoyo/wd/init/ItemInit.java index ca629e4..03a6837 100644 --- a/src/main/java/net/montoyo/wd/init/ItemInit.java +++ b/src/main/java/net/montoyo/wd/init/ItemInit.java @@ -45,12 +45,12 @@ public class ItemInit{ } } - public static final RegistryObject SCREEN = ITEMS.register("screen", () -> new BlockItem(BlockInit.blockScreen.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB))); + public static final RegistryObject SCREEN = ITEMS.register("screen", () -> new BlockItem(BlockInit.blockScreen.get(), new Item.Properties()/*.tab(WebDisplays.CREATIVE_TAB)*/)); - public static final RegistryObject KEYBOARD = ITEMS.register("keyboard", () -> new KeyboardItem(BlockInit.blockKeyBoard.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB))); - public static final RegistryObject REDSTONE_CONTROLLER = ITEMS.register("redctrl", () -> new BlockItem(BlockInit.blockRedControl.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB))); - public static final RegistryObject REMOTE_CONTROLLER = ITEMS.register("rctrl", () -> new BlockItem(BlockInit.blockRControl.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB))); - public static final RegistryObject SERVER = ITEMS.register("server", () -> new BlockItem(BlockInit.blockServer.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB))); + public static final RegistryObject KEYBOARD = ITEMS.register("keyboard", () -> new KeyboardItem(BlockInit.blockKeyBoard.get(), new Item.Properties()/*.tab(WebDisplays.CREATIVE_TAB)*/)); + public static final RegistryObject REDSTONE_CONTROLLER = ITEMS.register("redctrl", () -> new BlockItem(BlockInit.blockRedControl.get(), new Item.Properties()/*.tab(WebDisplays.CREATIVE_TAB)*/)); + public static final RegistryObject REMOTE_CONTROLLER = ITEMS.register("rctrl", () -> new BlockItem(BlockInit.blockRControl.get(), new Item.Properties()/*.tab(WebDisplays.CREATIVE_TAB)*/)); + public static final RegistryObject SERVER = ITEMS.register("server", () -> new BlockItem(BlockInit.blockServer.get(), new Item.Properties()/*.tab(WebDisplays.CREATIVE_TAB)*/)); public static RegistryObject getComputerCraftItem(int index) { return COMP_CRAFT_ITEMS[index]; diff --git a/src/main/java/net/montoyo/wd/item/ItemCraftComponent.java b/src/main/java/net/montoyo/wd/item/ItemCraftComponent.java index 7ad1e3c..367193e 100644 --- a/src/main/java/net/montoyo/wd/item/ItemCraftComponent.java +++ b/src/main/java/net/montoyo/wd/item/ItemCraftComponent.java @@ -13,8 +13,8 @@ public class ItemCraftComponent extends ItemMulti implements WDItem { public ItemCraftComponent(Properties properties) { super(CraftComponent.class, properties - //setRegistryName("craftcomp"); - .tab(WebDisplays.CREATIVE_TAB)); +// .tab(WebDisplays.CREATIVE_TAB) + ); //Hide the bad extension card from the creative tab creativeTabItems.clear(CraftComponent.BADEXTCARD.ordinal()); diff --git a/src/main/java/net/montoyo/wd/item/ItemLaserPointer.java b/src/main/java/net/montoyo/wd/item/ItemLaserPointer.java index 4347730..a77863c 100644 --- a/src/main/java/net/montoyo/wd/item/ItemLaserPointer.java +++ b/src/main/java/net/montoyo/wd/item/ItemLaserPointer.java @@ -33,9 +33,9 @@ public class ItemLaserPointer extends Item implements WDItem { public ItemLaserPointer(Properties properties) { super(properties - //setRegistryName("laserpointer") .stacksTo(1) - .tab(WebDisplays.CREATIVE_TAB)); +// .tab(WebDisplays.CREATIVE_TAB) + ); } //Laser pointer diff --git a/src/main/java/net/montoyo/wd/item/ItemLinker.java b/src/main/java/net/montoyo/wd/item/ItemLinker.java index 68f3fce..6b279ca 100644 --- a/src/main/java/net/montoyo/wd/item/ItemLinker.java +++ b/src/main/java/net/montoyo/wd/item/ItemLinker.java @@ -30,9 +30,9 @@ public class ItemLinker extends Item implements WDItem { public ItemLinker(Properties properties) { super(properties - //setRegistryName("linker"); .stacksTo(1) - .tab(WebDisplays.CREATIVE_TAB)); +// .tab(WebDisplays.CREATIVE_TAB) + ); } @Override diff --git a/src/main/java/net/montoyo/wd/item/ItemMinePad2.java b/src/main/java/net/montoyo/wd/item/ItemMinePad2.java index bcc99d7..8bf0caf 100644 --- a/src/main/java/net/montoyo/wd/item/ItemMinePad2.java +++ b/src/main/java/net/montoyo/wd/item/ItemMinePad2.java @@ -31,11 +31,10 @@ public class ItemMinePad2 extends Item implements WDItem { public ItemMinePad2(Properties properties) { super(properties - //setRegistryName("minepad"); .stacksTo(1) - //TODO what is Full3D(); .defaultDurability(0) - .tab(WebDisplays.CREATIVE_TAB)); +// .tab(WebDisplays.CREATIVE_TAB) + ); } private static String getURL(ItemStack is) { @@ -76,7 +75,7 @@ public class ItemMinePad2 extends Item implements WDItem { @Override public boolean onEntityItemUpdate(ItemStack stack, ItemEntity ent) { - if (ent.isOnGround() && !ent.getLevel().isClientSide) { + if (ent.onGround() && !ent.level().isClientSide) { CompoundTag tag = ent.getItem().getTag(); if (tag != null && tag.contains("ThrowHeight")) { @@ -95,11 +94,11 @@ public class ItemMinePad2 extends Item implements WDItem { ent.getItem().setTag(null); if (thrower != null && height - ent.getBlockY() >= 20.0) { - ent.getLevel().playSound(null, ent.getBlockX(), ent.getBlockY(), ent.getBlockZ(), SoundEvents.GLASS_BREAK, SoundSource.BLOCKS, 4.0f, 1.0f); - ent.getLevel().addFreshEntity(new ItemEntity(ent.getLevel(), ent.getBlockX(), ent.getBlockY(), ent.getBlockZ(), CraftComponent.EXTCARD.makeItemStack())); + ent.level().playSound(null, ent.getBlockX(), ent.getBlockY(), ent.getBlockZ(), SoundEvents.GLASS_BREAK, SoundSource.BLOCKS, 4.0f, 1.0f); + ent.level().addFreshEntity(new ItemEntity(ent.level(), ent.getBlockX(), ent.getBlockY(), ent.getBlockZ(), CraftComponent.EXTCARD.makeItemStack())); ent.setRemoved(Entity.RemovalReason.CHANGED_DIMENSION); - Player ply = ent.getLevel().getPlayerByUUID(thrower); + Player ply = ent.level().getPlayerByUUID(thrower); if (ply != null && ply instanceof ServerPlayer) WebDisplays.INSTANCE.criterionPadBreak.trigger(((ServerPlayer) ply).getAdvancements()); } diff --git a/src/main/java/net/montoyo/wd/item/ItemOwnershipThief.java b/src/main/java/net/montoyo/wd/item/ItemOwnershipThief.java index 86e7038..76887cb 100644 --- a/src/main/java/net/montoyo/wd/item/ItemOwnershipThief.java +++ b/src/main/java/net/montoyo/wd/item/ItemOwnershipThief.java @@ -26,9 +26,9 @@ public class ItemOwnershipThief extends Item implements WDItem { public ItemOwnershipThief(Properties properties) { super(properties - //setRegistryName("ownerthief"); .stacksTo(1) - .tab(WebDisplays.CREATIVE_TAB)); +// .tab(WebDisplays.CREATIVE_TAB) + ); } @Override diff --git a/src/main/java/net/montoyo/wd/item/ItemScreenConfigurator.java b/src/main/java/net/montoyo/wd/item/ItemScreenConfigurator.java index 3491625..0cacecd 100644 --- a/src/main/java/net/montoyo/wd/item/ItemScreenConfigurator.java +++ b/src/main/java/net/montoyo/wd/item/ItemScreenConfigurator.java @@ -24,9 +24,9 @@ public class ItemScreenConfigurator extends Item implements WDItem { public ItemScreenConfigurator(Properties properties) { super(properties - //setRegistryName("screencfg"); .stacksTo(1) - .tab(WebDisplays.CREATIVE_TAB)); +// .tab(WebDisplays.CREATIVE_TAB) + ); } @Override diff --git a/src/main/java/net/montoyo/wd/item/ItemUpgrade.java b/src/main/java/net/montoyo/wd/item/ItemUpgrade.java index c3d609b..6212636 100644 --- a/src/main/java/net/montoyo/wd/item/ItemUpgrade.java +++ b/src/main/java/net/montoyo/wd/item/ItemUpgrade.java @@ -21,7 +21,7 @@ public class ItemUpgrade extends ItemMulti implements IUpgrade, WDItem { public final DefaultUpgrade type; public ItemUpgrade(DefaultUpgrade type) { - super(DefaultUpgrade.class, new Properties().tab(WebDisplays.CREATIVE_TAB)); + super(DefaultUpgrade.class, new Properties()/*.tab(WebDisplays.CREATIVE_TAB)*/); this.type = type; } diff --git a/src/main/java/net/montoyo/wd/mixins/OverlayMixin.java b/src/main/java/net/montoyo/wd/mixins/OverlayMixin.java index 62fe35b..84cb49e 100644 --- a/src/main/java/net/montoyo/wd/mixins/OverlayMixin.java +++ b/src/main/java/net/montoyo/wd/mixins/OverlayMixin.java @@ -3,6 +3,7 @@ package net.montoyo.wd.mixins; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.GuiGraphics; import net.montoyo.wd.client.ClientProxy; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -24,7 +25,8 @@ public class OverlayMixin { protected int screenHeight; @Inject(at = @At("HEAD"), method = "renderCrosshair", cancellable = true) - public void preDrawCrosshair(PoseStack poseStack, CallbackInfo ci) { - ClientProxy.renderCrosshair(minecraft.options, screenWidth, screenHeight, ((Gui) (Object) this).getBlitOffset(), poseStack, ci); + public void preDrawCrosshair(GuiGraphics pGuiGraphics, CallbackInfo ci) { +// ClientProxy.renderCrosshair(minecraft.options, screenWidth, screenHeight, ((Gui) (Object) this).getBlitOffset(), poseStack, ci); + ClientProxy.renderCrosshair(minecraft.options, screenWidth, screenHeight, 0, pGuiGraphics, ci); } } diff --git a/src/main/java/net/montoyo/wd/net/server_bound/C2SMessageRedstoneCtrl.java b/src/main/java/net/montoyo/wd/net/server_bound/C2SMessageRedstoneCtrl.java index 5d7261c..0645c3b 100644 --- a/src/main/java/net/montoyo/wd/net/server_bound/C2SMessageRedstoneCtrl.java +++ b/src/main/java/net/montoyo/wd/net/server_bound/C2SMessageRedstoneCtrl.java @@ -42,9 +42,9 @@ public class C2SMessageRedstoneCtrl extends Packet implements Runnable { @Override public void run() { - Level world = player.level; + Level world = player.level(); BlockPos blockPos = pos.toBlock(); - final double maxRange = player.getAttribute(ForgeMod.REACH_DISTANCE.get()).getValue(); + final double maxRange = player.getAttribute(ForgeMod.BLOCK_REACH.get()).getValue(); if (player.distanceToSqr(blockPos.getX(), blockPos.getY(), blockPos.getZ()) > maxRange * maxRange) return;