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 0518005..6e2a0fe 100644 Binary files a/libs/mcef-2.x.jar and b/libs/mcef-2.x.jar differ 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;