start of minepad stuff

This commit is contained in:
GiantLuigi4 2023-05-31 15:31:14 -04:00
parent bc16cf9769
commit 3719448331
8 changed files with 273 additions and 217 deletions

View File

@ -10,6 +10,7 @@ import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -75,7 +76,7 @@ public class SharedProxy {
public void screenUpdateAutoVolumeInGui(Vector3i pos, BlockSide side, boolean av) { public void screenUpdateAutoVolumeInGui(Vector3i pos, BlockSide side, boolean av) {
} }
public void displaySetPadURLGui(String padURL) { public void displaySetPadURLGui(ItemStack is, String padURL) {
Log.error("Called SharedProxy.displaySetPadURLGui() on server side..."); Log.error("Called SharedProxy.displaySetPadURLGui() on server side...");
} }

View File

@ -85,10 +85,10 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
public IBrowser view; public IBrowser view;
private boolean isInHotbar; private boolean isInHotbar;
private final int id; private final UUID id;
private long lastURLSent; private long lastURLSent;
private PadData(String url, int id) { private PadData(String url, UUID id) {
String webUrl; String webUrl;
try { try {
webUrl = TileEntityScreen.url(url); webUrl = TileEntityScreen.url(url);
@ -130,7 +130,7 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
private int lastTracked = 0; private int lastTracked = 0;
//MinePads Management //MinePads Management
private final HashMap<Integer, PadData> padMap = new HashMap<>(); private final HashMap<UUID, PadData> padMap = new HashMap<>();
private final ArrayList<PadData> padList = new ArrayList<>(); private final ArrayList<PadData> padList = new ArrayList<>();
private int minePadTickCounter = 0; private int minePadTickCounter = 0;
@ -268,8 +268,8 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
} }
@Override @Override
public void displaySetPadURLGui(String padURL) { public void displaySetPadURLGui(ItemStack is, String padURL) {
mc.setScreen(new GuiSetURL2(padURL)); mc.setScreen(new GuiSetURL2(is, padURL));
} }
@Override @Override
@ -729,13 +729,13 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
CompoundTag tag = item.getTag(); CompoundTag tag = item.getTag();
if (tag != null && tag.contains("PadID")) if (tag != null && tag.contains("PadID"))
updatePad(tag.getInt("PadID"), tag, item == heldStack); updatePad(tag.getUUID("PadID"), tag, item == heldStack);
} }
} }
} }
} }
private void updatePad(int id, CompoundTag tag, boolean isSelected) { private void updatePad(UUID id, CompoundTag tag, boolean isSelected) {
PadData pd = padMap.get(id); PadData pd = padMap.get(id);
if(pd != null) if(pd != null)
@ -751,7 +751,7 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
return minePadRenderer; return minePadRenderer;
} }
public PadData getPadByID(int id) { public PadData getPadByID(UUID id) {
return padMap.get(id); return padMap.get(id);
} }

View File

@ -7,7 +7,6 @@ package net.montoyo.wd.client.gui;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@ -17,15 +16,17 @@ import net.montoyo.wd.client.gui.controls.Button;
import net.montoyo.wd.client.gui.controls.TextField; import net.montoyo.wd.client.gui.controls.TextField;
import net.montoyo.wd.client.gui.loading.FillControl; import net.montoyo.wd.client.gui.loading.FillControl;
import net.montoyo.wd.entity.TileEntityScreen; import net.montoyo.wd.entity.TileEntityScreen;
import net.montoyo.wd.init.ItemInit; import net.montoyo.wd.item.ItemMinePad2;
import net.montoyo.wd.net.WDNetworkRegistry; import net.montoyo.wd.net.WDNetworkRegistry;
import net.montoyo.wd.net.server_bound.C2SMessageScreenCtrl; import net.montoyo.wd.net.server_bound.C2SMessageScreenCtrl;
import net.montoyo.wd.net.server_bound.C2SMinepadUrl;
import net.montoyo.wd.utilities.BlockSide; import net.montoyo.wd.utilities.BlockSide;
import net.montoyo.wd.utilities.Util; import net.montoyo.wd.utilities.Util;
import net.montoyo.wd.utilities.Vector3i; import net.montoyo.wd.utilities.Vector3i;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
import java.util.UUID;
@Mod.EventBusSubscriber(Dist.CLIENT) @Mod.EventBusSubscriber(Dist.CLIENT)
public class GuiSetURL2 extends WDScreen { public class GuiSetURL2 extends WDScreen {
@ -36,6 +37,7 @@ public class GuiSetURL2 extends WDScreen {
private Vector3i remoteLocation; private Vector3i remoteLocation;
//Pad data //Pad data
private ItemStack stack;
private final boolean isPad; private final boolean isPad;
//Common //Common
@ -62,9 +64,10 @@ public class GuiSetURL2 extends WDScreen {
screenURL = url; screenURL = url;
} }
public GuiSetURL2(String url) { public GuiSetURL2(ItemStack is, String url) {
super(Component.nullToEmpty(null)); super(Component.nullToEmpty(null));
isPad = true; isPad = true;
stack = is;
screenURL = url; screenURL = url;
} }
@ -80,6 +83,15 @@ public class GuiSetURL2 extends WDScreen {
vars.put("isPad", isPad ? 1.0 : 0.0); vars.put("isPad", isPad ? 1.0 : 0.0);
} }
protected UUID getUUID() {
if (stack == null || !(stack.getItem() instanceof ItemMinePad2))
throw new RuntimeException("Get UUID is being called for a non-minepad UI");
if (!stack.hasTag())
stack.getOrCreateTag().putUUID("PadID", UUID.randomUUID());
return stack.getTag().getUUID("PadID");
}
@GuiSubscribe @GuiSubscribe
public void onButtonClicked(Button.ClickEvent ev) { public void onButtonClicked(Button.ClickEvent ev) {
if (ev.getSource() == btnCancel) if (ev.getSource() == btnCancel)
@ -87,8 +99,13 @@ public class GuiSetURL2 extends WDScreen {
else if (ev.getSource() == btnOk) else if (ev.getSource() == btnOk)
validate(tfURL.getText()); validate(tfURL.getText());
else if (ev.getSource() == btnShutDown) { else if (ev.getSource() == btnShutDown) {
// if(isPad) if (isPad) {
// WDNetworkRegistry.INSTANCE.sendToServer(new SMessagePadCtrl("")); WDNetworkRegistry.INSTANCE.sendToServer(new C2SMinepadUrl(
getUUID(),
""
));
stack.getTag().remove("PadURL");
}
minecraft.setScreen(null); minecraft.setScreen(null);
} }
@ -112,17 +129,17 @@ public class GuiSetURL2 extends WDScreen {
url = ((ClientProxy) WebDisplays.PROXY).getMCEF().punycode(url); url = ((ClientProxy) WebDisplays.PROXY).getMCEF().punycode(url);
if (isPad) { if (isPad) {
// WDNetworkRegistry.INSTANCE.sendToServer(new SMessagePadCtrl(url)); UUID uuid = getUUID();
ItemStack held = minecraft.player.getItemInHand(InteractionHand.MAIN_HAND); WDNetworkRegistry.INSTANCE.sendToServer(new C2SMinepadUrl(uuid, url));
stack.getTag().putString("PadURL", url);
if(held.getItem().equals(ItemInit.itemMinePad.get()) && held.getTag() != null && held.getTag().contains("PadID")) { ClientProxy.PadData pd = ((ClientProxy) WebDisplays.PROXY).getPadByID(uuid);
ClientProxy.PadData pd = ((ClientProxy) WebDisplays.PROXY).getPadByID(held.getTag().getInt("PadID"));
if (pd != null && pd.view != null) { if (pd != null && pd.view != null) {
pd.view.loadURL(WebDisplays.applyBlacklist(url)); pd.view.loadURL(WebDisplays.applyBlacklist(url));
} }
} } else
} else WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.setURL(tileEntity, screenSide, url, remoteLocation)); WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.setURL(tileEntity, screenSide, url, remoteLocation));
} }
minecraft.setScreen(null); minecraft.setScreen(null);

View File

@ -6,11 +6,8 @@ package net.montoyo.wd.client.renderers;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f;
import com.mojang.math.Vector3f; import com.mojang.math.Vector3f;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.client.renderer.entity.player.PlayerRenderer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -20,8 +17,6 @@ import net.minecraftforge.api.distmarker.OnlyIn;
import net.montoyo.wd.WebDisplays; import net.montoyo.wd.WebDisplays;
import net.montoyo.wd.client.ClientProxy; import net.montoyo.wd.client.ClientProxy;
import static org.lwjgl.opengl.GL12.GL_RESCALE_NORMAL;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public final class MinePadRenderer implements IItemRenderer { public final class MinePadRenderer implements IItemRenderer {
@ -94,7 +89,7 @@ public final class MinePadRenderer implements IItemRenderer {
//Render web view //Render web view
if(is.getTag() != null && is.getTag().contains("PadID")) { if(is.getTag() != null && is.getTag().contains("PadID")) {
ClientProxy.PadData pd = clientProxy.getPadByID(is.getTag().getInt("PadID")); ClientProxy.PadData pd = clientProxy.getPadByID(is.getTag().getUUID("PadID"));
if(pd != null) { if(pd != null) {
stack.translate(0.063f, 0.28f, 0.001f); stack.translate(0.063f, 0.28f, 0.001f);

View File

@ -50,7 +50,7 @@ public class ItemMinePad2 extends Item implements WDItem {
if (ply.isShiftKeyDown()) { if (ply.isShiftKeyDown()) {
if (world.isClientSide) if (world.isClientSide)
WebDisplays.PROXY.displaySetPadURLGui(getURL(is)); WebDisplays.PROXY.displaySetPadURLGui(is, getURL(is));
ok = true; ok = true;
} else if (is.getTag() != null && is.getTag().contains("PadID")) { } else if (is.getTag() != null && is.getTag().contains("PadID")) {

View File

@ -4,10 +4,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.NetworkRegistry;
import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.simple.SimpleChannel;
import net.montoyo.wd.net.client_bound.*; import net.montoyo.wd.net.client_bound.*;
import net.montoyo.wd.net.server_bound.C2SMessageACQuery; import net.montoyo.wd.net.server_bound.*;
import net.montoyo.wd.net.server_bound.C2SMessageMiniservConnect;
import net.montoyo.wd.net.server_bound.C2SMessageRedstoneCtrl;
import net.montoyo.wd.net.server_bound.C2SMessageScreenCtrl;
import java.util.ArrayList; import java.util.ArrayList;
@ -53,6 +50,9 @@ public class WDNetworkRegistry {
// jsquery // jsquery
entries.add(new NetworkEntry<>(S2CMessageJSResponse.class, S2CMessageJSResponse::new)); entries.add(new NetworkEntry<>(S2CMessageJSResponse.class, S2CMessageJSResponse::new));
// minepad
entries.add(new NetworkEntry<>(C2SMinepadUrl.class, C2SMinepadUrl::new));
for (int i = 0; i < entries.size(); i++) entries.get(i).register(i, INSTANCE); for (int i = 0; i < entries.size(); i++) entries.get(i).register(i, INSTANCE);
} }

View File

@ -0,0 +1,43 @@
package net.montoyo.wd.net.server_bound;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.network.NetworkEvent;
import net.montoyo.wd.item.ItemMinePad2;
import net.montoyo.wd.net.Packet;
import java.util.UUID;
public class C2SMinepadUrl extends Packet {
UUID id;
String url;
public C2SMinepadUrl(UUID id, String url) {
this.id = id;
this.url = url;
}
public C2SMinepadUrl(FriendlyByteBuf buf) {
super(buf);
this.id = buf.readUUID();
this.url = buf.readUtf();
}
@Override
public void write(FriendlyByteBuf buf) {
buf.writeUUID(id);
buf.writeUtf(url);
}
@Override
public void handle(NetworkEvent.Context ctx) {
for (InteractionHand value : InteractionHand.values()) {
ItemStack stack = ctx.getSender().getItemInHand(value);
if (stack.getItem() instanceof ItemMinePad2 pad) {
stack.getOrCreateTag().putUUID("PadID", id);
stack.getOrCreateTag().putString("PadURL", url);
}
}
}
}

View File

@ -12,15 +12,15 @@
"item.webdisplays.ownerthief": "Ownership Thief [ADMIN]", "item.webdisplays.ownerthief": "Ownership Thief [ADMIN]",
"item.webdisplays.linker": "Linking Tool", "item.webdisplays.linker": "Linking Tool",
"item.webdisplays.craftcomp": "Craft Component", "item.webdisplays.craftcomp": "Craft Component",
"item.webdisplays.craftcomp.stonekey": "Stone Key", "item.webdisplays.craftcomp_stonekey": "Stone Key",
"item.webdisplays.craftcomp.upgrade": "Blank Upgrade", "item.webdisplays.craftcomp_upgrade": "Blank Upgrade",
"item.webdisplays.craftcomp.peripheral": "Peripheral Base", "item.webdisplays.craftcomp_peripheral": "Peripheral Base",
"item.webdisplays.craftcomp.batcell": "Battery Cell", "item.webdisplays.craftcomp_batcell": "Battery Cell",
"item.webdisplays.craftcomp.batpack": "Battery Pack", "item.webdisplays.craftcomp_batpack": "Battery Pack",
"item.webdisplays.craftcomp.laserdiode": "650nm Laser Diode", "item.webdisplays.craftcomp_laserdiode": "650nm Laser Diode",
"item.webdisplays.craftcomp.backlight": "Backlight", "item.webdisplays.craftcomp_backlight": "Backlight",
"item.webdisplays.craftcomp.extcard": "Extension Card", "item.webdisplays.craftcomp_extcard": "Extension Card",
"item.webdisplays.craftcomp.badextcard": "Bad Extension Card", "item.webdisplays.craftcomp_badextcard": "Bad Extension Card",
"item.webdisplays.minepad": "minePad", "item.webdisplays.minepad": "minePad",
"item.webdisplays.minepad2": "minePad 2", "item.webdisplays.minepad2": "minePad 2",
"item.webdisplays.upgrade": "Screen Upgrade", "item.webdisplays.upgrade": "Screen Upgrade",
@ -45,7 +45,7 @@
"webdisplays.message.linked": "Linked!", "webdisplays.message.linked": "Linked!",
"webdisplays.message.linkError": "Link error :( Check logs...", "webdisplays.message.linkError": "Link error :( Check logs...",
"webdisplays.message.notAScreen": "Please right click on the screen first...", "webdisplays.message.notAScreen": "Please right click on the screen first...",
"webdisplays.message.screenSet2": "Screen set! Now right click on the periphe,ral...", "webdisplays.message.screenSet2": "Screen set! Now right click on the peripheral...",
"webdisplays.message.chunkUnloaded": "The chunk the screen is placed in is no,t loaded!", "webdisplays.message.chunkUnloaded": "The chunk the screen is placed in is no,t loaded!",
"webdisplays.message.notLinked": "This peripheral has not been linked yet.", "webdisplays.message.notLinked": "This peripheral has not been linked yet.",
"webdisplays.message.missingCC": "ComputerCraft is not available.", "webdisplays.message.missingCC": "ComputerCraft is not available.",
@ -108,7 +108,7 @@
"advancements.webdisplays.minepad2.title": "Pigeon", "advancements.webdisplays.minepad2.title": "Pigeon",
"advancements.webdisplays.minepad2.description": "Craft a minePad 2. Look, I know it's expensive, but that means it's better than anything else, right? ...right?", "advancements.webdisplays.minepad2.description": "Craft a minePad 2. Look, I know it's expensive, but that means it's better than anything else, right? ...right?",
"advancements.webdisplays.linkperipheral.title": "It's wireless!", "advancements.webdisplays.linkperipheral.title": "It's wireless!",
"advancements.webdisplays.linkperipheral.description": "Link a peripheral to ,a screen", "advancements.webdisplays.linkperipheral.description": "Link a peripheral to a screen",
"advancements.webdisplays.keyboardcat.title": "DAMN CATS", "advancements.webdisplays.keyboardcat.title": "DAMN CATS",
"advancements.webdisplays.keyboardcat.description": "Have an ocelot walk on y,our keyboard", "advancements.webdisplays.keyboardcat.description": "Have an ocelot walk on y,our keyboard",
"advancements.webdisplays.upgrade.title": "More than a screen", "advancements.webdisplays.upgrade.title": "More than a screen",