more minepad stuff, switch off of cloth config
This commit is contained in:
parent
7d3de1fcc5
commit
116f7290d0
|
|
@ -104,7 +104,6 @@ public class ClientProxy extends SharedProxy implements IDisplayHandler, IJSQuer
|
||||||
isInHotbar = true;
|
isInHotbar = true;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Minecraft mc;
|
private Minecraft mc;
|
||||||
|
|
|
||||||
|
|
@ -100,11 +100,12 @@ public class GuiSetURL2 extends WDScreen {
|
||||||
validate(tfURL.getText());
|
validate(tfURL.getText());
|
||||||
else if (ev.getSource() == btnShutDown) {
|
else if (ev.getSource() == btnShutDown) {
|
||||||
if (isPad) {
|
if (isPad) {
|
||||||
|
stack.getTag().remove("PadURL");
|
||||||
|
stack.getTag().remove("PadID");
|
||||||
WDNetworkRegistry.INSTANCE.sendToServer(new C2SMinepadUrl(
|
WDNetworkRegistry.INSTANCE.sendToServer(new C2SMinepadUrl(
|
||||||
getUUID(),
|
getUUID(),
|
||||||
""
|
""
|
||||||
));
|
));
|
||||||
stack.getTag().remove("PadURL");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
minecraft.setScreen(null);
|
minecraft.setScreen(null);
|
||||||
|
|
|
||||||
|
|
@ -11,118 +11,119 @@ import net.minecraft.client.Minecraft;
|
||||||
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;
|
||||||
|
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.api.distmarker.OnlyIn;
|
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 net.montoyo.wd.item.ItemMinePad2;
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
public final class MinePadRenderer implements IItemRenderer {
|
public final class MinePadRenderer implements IItemRenderer {
|
||||||
|
private static final float PI = (float) Math.PI;
|
||||||
|
private final Minecraft mc = Minecraft.getInstance();
|
||||||
|
private final ResourceLocation tex = new ResourceLocation("webdisplays", "textures/models/minepad.png");
|
||||||
|
private final ModelMinePad model = new ModelMinePad();
|
||||||
|
private final ClientProxy clientProxy = (ClientProxy) WebDisplays.PROXY;
|
||||||
|
|
||||||
private static final float PI = (float) Math.PI;
|
private float sinSqrtSwingProg1;
|
||||||
private final Minecraft mc = Minecraft.getInstance();
|
private float sinSqrtSwingProg2;
|
||||||
private final ResourceLocation tex = new ResourceLocation("webdisplays", "textures/models/minepad.png");
|
private float sinSwingProg1;
|
||||||
// private final ModelMinePad model = new ModelMinePad();
|
private float sinSwingProg2;
|
||||||
private final ClientProxy clientProxy = (ClientProxy) WebDisplays.PROXY;
|
|
||||||
|
|
||||||
private float sinSqrtSwingProg1;
|
@Override
|
||||||
private float sinSqrtSwingProg2;
|
public final boolean render(PoseStack stack, ItemStack is, float handSideSign, float swingProgress, float equipProgress, MultiBufferSource multiBufferSource, int packedLight) {
|
||||||
private float sinSwingProg1;
|
//Pre-compute values
|
||||||
private float sinSwingProg2;
|
float sqrtSwingProg = (float) Math.sqrt(swingProgress);
|
||||||
|
sinSqrtSwingProg1 = (float) Math.sin(sqrtSwingProg * PI);
|
||||||
|
sinSqrtSwingProg2 = (float) Math.sin(sqrtSwingProg * PI * 2.0f);
|
||||||
|
sinSwingProg1 = (float) Math.sin(swingProgress * PI);
|
||||||
|
sinSwingProg2 = (float) Math.sin(swingProgress * swingProgress * PI);
|
||||||
|
|
||||||
// public static void drawAxis() {
|
//Render arm
|
||||||
// glDisable(GL_TEXTURE_2D);
|
stack.pushPose();
|
||||||
// glBegin(GL_LINES);
|
renderArmFirstPerson(stack, multiBufferSource, packedLight, equipProgress, handSideSign);
|
||||||
// glColor4f(1.f, 0.f, 0.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
stack.popPose();
|
||||||
// glColor4f(1.f, 0.f, 0.f, 1.f); glVertex3d(5.0, 0.0, 0.0);
|
|
||||||
// glColor4f(0.f, 1.f, 0.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
|
||||||
// glColor4f(0.f, 1.f, 0.f, 1.f); glVertex3d(0.0, 5.0, 0.0);
|
|
||||||
// glColor4f(0.f, 0.f, 1.f, 1.f); glVertex3d(0.0, 0.0, 0.0);
|
|
||||||
// glColor4f(0.f, 0.f, 1.f, 1.f); glVertex3d(0.0, 0.0, 5.0);
|
|
||||||
// glEnd();
|
|
||||||
// glEnable(GL_TEXTURE_2D);
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Override
|
//Prepare minePad transform
|
||||||
public final boolean render(PoseStack stack, ItemStack is, float handSideSign, float swingProgress, float equipProgress, MultiBufferSource multiBufferSource, int packedLight) {
|
stack.pushPose();
|
||||||
//Pre-compute values
|
stack.translate(handSideSign * -0.4f * sinSqrtSwingProg1, 0.2f * sinSqrtSwingProg2, -0.2f * sinSwingProg1);
|
||||||
float sqrtSwingProg = (float) Math.sqrt(swingProgress);
|
stack.translate(handSideSign * 0.56f, -0.52f - equipProgress * 0.6f, -0.72f);
|
||||||
sinSqrtSwingProg1 = (float) Math.sin(sqrtSwingProg * PI);
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * (45.0f - sinSwingProg2 * 20.0f)));
|
||||||
sinSqrtSwingProg2 = (float) Math.sin(sqrtSwingProg * PI * 2.0f);
|
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * -20.0f));
|
||||||
sinSwingProg1 = (float) Math.sin(swingProgress * PI);
|
stack.mulPose(Vector3f.XP.rotationDegrees(sinSqrtSwingProg1 * -80.0f));
|
||||||
sinSwingProg2 = (float) Math.sin(swingProgress * swingProgress * PI);
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -45.0f));
|
||||||
|
|
||||||
//Render arm
|
// by default, the player holds the device off to the side
|
||||||
stack.pushPose();
|
// if they are crouching, they hold it infront of them
|
||||||
renderArmFirstPerson(stack, multiBufferSource, packedLight, equipProgress, handSideSign);
|
// however, if they are holding two at once, then it once again should just be held off to the side
|
||||||
stack.popPose();
|
boolean sideHold = !Minecraft.getInstance().player.isShiftKeyDown();
|
||||||
|
if (
|
||||||
|
(handSideSign < 0 && Minecraft.getInstance().player.getItemInHand(InteractionHand.MAIN_HAND).getItem() instanceof ItemMinePad2) ||
|
||||||
|
(handSideSign > 0 && Minecraft.getInstance().player.getItemInHand(InteractionHand.OFF_HAND).getItem() instanceof ItemMinePad2)
|
||||||
|
) sideHold = true;
|
||||||
|
|
||||||
//Prepare minePad transform
|
if (sideHold) {
|
||||||
stack.pushPose();
|
stack.translate(0.0f, 0.0f, -0.2f);
|
||||||
stack.translate(handSideSign * -0.4f * sinSqrtSwingProg1, 0.2f * sinSqrtSwingProg2, -0.2f * sinSwingProg1);
|
stack.mulPose(Vector3f.YP.rotationDegrees(20.0f * -handSideSign));
|
||||||
stack.translate(handSideSign * 0.56f, -0.52f - equipProgress * 0.6f, -0.72f);
|
float total = 0.475f;
|
||||||
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * (45.0f - sinSwingProg2 * 20.0f)));
|
float off = -0.025f; // gotta love magic numbers
|
||||||
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * -20.0f));
|
stack.translate(-(total - off) + (off * handSideSign), -0.1f, 0.0f);
|
||||||
stack.mulPose(Vector3f.XP.rotationDegrees(sinSqrtSwingProg1 * -80.0f));
|
stack.mulPose(Vector3f.ZP.rotationDegrees(1.0f));
|
||||||
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -45.0f));
|
} else if (handSideSign >= 0) // right hand
|
||||||
|
stack.translate(-1.065f, 0.0f, 0.0f);
|
||||||
|
else // left hand
|
||||||
|
stack.translate(0.065f, 0.0f, 0.0f);
|
||||||
|
|
||||||
if(handSideSign >= 0.0f)
|
//Render model
|
||||||
stack.translate(-1.065f, 0.0f, 0.0f);
|
stack.translate(0.063f, 0.28f, 0.001f);
|
||||||
else {
|
model.render(multiBufferSource, stack);
|
||||||
stack.translate(0.0f, 0.0f, -0.2f);
|
stack.translate(-0.063f, -0.28f, -0.001f);
|
||||||
stack.mulPose(Vector3f.YP.rotationDegrees(20.0f));
|
|
||||||
stack.translate(-0.475f, -0.1f, 0.0f);
|
|
||||||
stack.mulPose(Vector3f.ZP.rotationDegrees(1.0f));
|
|
||||||
}
|
|
||||||
|
|
||||||
//Render model
|
if (is.getTag() != null && is.getTag().contains("PadID")) {
|
||||||
stack.pushPose();
|
ClientProxy.PadData pd = clientProxy.getPadByID(is.getTag().getUUID("PadID"));
|
||||||
stack.mulPose(Vector3f.XP.rotationDegrees(-90.0f));
|
|
||||||
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f);
|
|
||||||
RenderSystem.setShaderTexture(0, tex);
|
|
||||||
// model.render(1.f / 16.f);
|
|
||||||
stack.popPose();
|
|
||||||
|
|
||||||
//Render web view
|
//Render web view
|
||||||
if(is.getTag() != null && is.getTag().contains("PadID")) {
|
if (pd != null) {
|
||||||
ClientProxy.PadData pd = clientProxy.getPadByID(is.getTag().getUUID("PadID"));
|
double x1 = 0.0;
|
||||||
|
double y1 = 0.0;
|
||||||
|
double x2 = 27.65 / 32.0 + 0.01;
|
||||||
|
double y2 = 14.0 / 32.0 + 0.002;
|
||||||
|
|
||||||
if(pd != null) {
|
stack.translate(0.063f, 0.28f, 0.001f);
|
||||||
stack.translate(0.063f, 0.28f, 0.001f);
|
RenderSystem.setShaderTexture(0, tex);
|
||||||
RenderSystem.setShaderTexture(0, tex);
|
pd.view.draw(stack, x1, y1, x2, y2);
|
||||||
pd.view.draw(stack,0.0, 0.0, 27.65 / 32.0 + 0.01, 14.0 / 32.0 + 0.002);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
stack.popPose();
|
stack.popPose();
|
||||||
RenderSystem.enableCull();
|
RenderSystem.enableCull();
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderArmFirstPerson(PoseStack stack, MultiBufferSource buffer, int combinedLight, float equipProgress, float handSideSign) {
|
private void renderArmFirstPerson(PoseStack stack, MultiBufferSource buffer, int combinedLight, float equipProgress, float handSideSign) {
|
||||||
float tx = -0.3f * sinSqrtSwingProg1;
|
float tx = -0.3f * sinSqrtSwingProg1;
|
||||||
float ty = 0.4f * sinSqrtSwingProg2;
|
float ty = 0.4f * sinSqrtSwingProg2;
|
||||||
float tz = -0.4f * sinSwingProg1;
|
float tz = -0.4f * sinSwingProg1;
|
||||||
|
|
||||||
stack.translate(handSideSign * (tx + 0.64000005f), ty - 0.6f - equipProgress * 0.6f, tz - 0.71999997f);
|
stack.translate(handSideSign * (tx + 0.64000005f), ty - 0.6f - equipProgress * 0.6f, tz - 0.71999997f);
|
||||||
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * 45.0f));
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * 45.0f));
|
||||||
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * 70.0f));
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * sinSqrtSwingProg1 * 70.0f));
|
||||||
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSwingProg2 * -20.0f));
|
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * sinSwingProg2 * -20.0f));
|
||||||
stack.translate(-handSideSign, 3.6f, 3.5f);
|
stack.translate(-handSideSign, 3.6f, 3.5f);
|
||||||
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * 120.0f));
|
stack.mulPose(Vector3f.ZP.rotationDegrees(handSideSign * 120.0f));
|
||||||
stack.mulPose(Vector3f.XP.rotationDegrees(200.0f));
|
stack.mulPose(Vector3f.XP.rotationDegrees(200.0f));
|
||||||
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -135.0f));
|
stack.mulPose(Vector3f.YP.rotationDegrees(handSideSign * -135.0f));
|
||||||
stack.translate(handSideSign * 5.6f, 0.0f, 0.0f);
|
stack.translate(handSideSign * 5.6f, 0.0f, 0.0f);
|
||||||
|
|
||||||
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(mc.player);
|
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(mc.player);
|
||||||
RenderSystem.setShaderTexture(0, mc.player.getSkinTextureLocation());
|
RenderSystem.setShaderTexture(0, mc.player.getSkinTextureLocation());
|
||||||
|
|
||||||
if(handSideSign >= 0.0f)
|
|
||||||
playerRenderer.renderRightHand(stack, buffer, combinedLight, mc.player);
|
|
||||||
else
|
|
||||||
playerRenderer.renderLeftHand(stack, buffer, combinedLight, mc.player);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (handSideSign >= 0.0f)
|
||||||
|
playerRenderer.renderRightHand(stack, buffer, combinedLight, mc.player);
|
||||||
|
else
|
||||||
|
playerRenderer.renderLeftHand(stack, buffer, combinedLight, mc.player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,60 +4,36 @@
|
||||||
|
|
||||||
package net.montoyo.wd.client.renderers;
|
package net.montoyo.wd.client.renderers;
|
||||||
|
|
||||||
/*import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.*;
|
||||||
import net.minecraft.client.model.Model;
|
import com.mojang.math.Matrix4f;
|
||||||
import net.minecraft.client.model.geom.ModelPart;
|
import net.minecraft.client.renderer.GameRenderer;
|
||||||
|
import net.minecraft.client.renderer.MultiBufferSource;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
public final class ModelMinePad extends Model {
|
public final class ModelMinePad {
|
||||||
|
public void render(MultiBufferSource buffers, PoseStack stack) {
|
||||||
|
// TODO: this needs completing
|
||||||
|
// TODO: I'd like this to be able to load a model from a JSON if possible
|
||||||
|
|
||||||
// fields
|
double x1 = 1.0;
|
||||||
private final ModelPart base;
|
double y1 = 0.0;
|
||||||
private final ModelPart left;
|
double x2 = 27.65 / 32.0 + 0.01;
|
||||||
private final ModelPart right;
|
double y2 = 14.0 / 32.0 + 0.002;
|
||||||
|
|
||||||
public ModelMinePad() {
|
Matrix4f positionMatrix = stack.last().pose();
|
||||||
super();
|
Tesselator t = Tesselator.getInstance();
|
||||||
textureWidth = 64;
|
BufferBuilder vb = t.getBuilder();
|
||||||
textureHeight = 32;
|
|
||||||
|
|
||||||
base = new ModelPart(this, 0, 0);
|
RenderSystem.setShader(GameRenderer::getPositionColorShader);
|
||||||
base.addBox(0F, 0F, 0F, 14, 1, 9);
|
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
base.setRotationPoint(1F, 0F, 3.5F);
|
vb.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR);
|
||||||
base.setTextureSize(64, 32);
|
vb.vertex(positionMatrix, (float) x1, (float) y1, 0.0f).color(0, 0, 0, 255).endVertex();
|
||||||
base.mirror = true;
|
vb.vertex(positionMatrix, (float) x2, (float) y1, 0.0f).color(0, 0, 0, 255).endVertex();
|
||||||
clearRotation(base);
|
vb.vertex(positionMatrix, (float) x2, (float) y2, 0.0f).color(0, 0, 0, 255).endVertex();
|
||||||
left = new ModelRenderer(this, 0, 10);
|
vb.vertex(positionMatrix, (float) x1, (float) y2, 0.0f).color(0, 0, 0, 255).endVertex();
|
||||||
left.addBox(0F, 0F, 0F, 1, 1, 7);
|
t.end();
|
||||||
left.setRotationPoint(0F, 0F, 4.5F);
|
}
|
||||||
left.setTextureSize(64, 32);
|
}
|
||||||
left.mirror = true;
|
|
||||||
clearRotation(left);
|
|
||||||
right = new ModelRenderer(this, 30, 10);
|
|
||||||
right.addBox(0F, 0F, 0F, 1, 1, 7);
|
|
||||||
right.setRotationPoint(15F, 0F, 4.5F);
|
|
||||||
right.setTextureSize(64, 32);
|
|
||||||
right.mirror = true;
|
|
||||||
clearRotation(right);
|
|
||||||
}
|
|
||||||
|
|
||||||
public final void render(float f5) {
|
|
||||||
base.render(f5);
|
|
||||||
left.render(f5);
|
|
||||||
right.render(f5);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void clearRotation(ModelPart model) {
|
|
||||||
model.rotateAngleX = 0.0f;
|
|
||||||
model.rotateAngleY = 0.0f;
|
|
||||||
model.rotateAngleZ = 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void renderToBuffer(PoseStack poseStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
|
||||||
|
|
@ -35,9 +35,10 @@ public class CommonConfig {
|
||||||
@Comment("Options for the browsers (both the minePad and the screens)")
|
@Comment("Options for the browsers (both the minePad and the screens)")
|
||||||
@CFGSegment("browser_options")
|
@CFGSegment("browser_options")
|
||||||
public static class Browser {
|
public static class Browser {
|
||||||
@Name("home_page")
|
@Name("blacklist")
|
||||||
@Comment("The page which screens should open up to when turning on")
|
@Comment("The page which screens should open up to when turning on")
|
||||||
@Translation("config.webdisplays.blacklist")
|
@Translation("config.webdisplays.blacklist")
|
||||||
|
@Default(valueStr = "")
|
||||||
public static String[] blacklist = new String[0];
|
public static String[] blacklist = new String[0];
|
||||||
|
|
||||||
@Name("home_page")
|
@Name("home_page")
|
||||||
|
|
|
||||||
|
|
@ -138,10 +138,13 @@ public class AnnoCFG {
|
||||||
case OTHER -> {
|
case OTHER -> {
|
||||||
Class<?> fieldType = field.getType();
|
Class<?> fieldType = field.getType();
|
||||||
if (fieldType.equals(String[].class)) {
|
if (fieldType.equals(String[].class)) {
|
||||||
value = builder.define(nameStr, new String[0]);
|
Supplier<String> sup = builder.define(nameStr, defaultValue.valueStr());
|
||||||
|
value = () -> {
|
||||||
|
String v = sup.get();
|
||||||
|
return v.split(",");
|
||||||
|
};
|
||||||
} else if (fieldType.equals(String.class)) {
|
} else if (fieldType.equals(String.class)) {
|
||||||
String def = defaultValue.valueStr();
|
value = builder.define(nameStr, defaultValue.valueStr());
|
||||||
value = builder.define(nameStr, def);
|
|
||||||
} else
|
} else
|
||||||
throw new RuntimeException("NYI " + field.getType());
|
throw new RuntimeException("NYI " + field.getType());
|
||||||
}
|
}
|
||||||
|
|
@ -149,7 +152,8 @@ public class AnnoCFG {
|
||||||
}
|
}
|
||||||
} catch (NullPointerException npe) {
|
} catch (NullPointerException npe) {
|
||||||
String inf = "";
|
String inf = "";
|
||||||
if (npe.getMessage().contains("\"value.Default\"")) inf = " this is likely due to a missing default.";
|
if (npe.getMessage().contains("\"value.Default\""))
|
||||||
|
inf = " this is likely due to a missing default.";
|
||||||
throw new RuntimeException("A null pointer occurred on " + field.getName() + inf, npe);
|
throw new RuntimeException("A null pointer occurred on " + field.getName() + inf, npe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,13 +30,40 @@ public class C2SMinepadUrl extends Packet {
|
||||||
buf.writeUtf(url);
|
buf.writeUtf(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void merge(ItemStack stack) {
|
||||||
|
if (url.equals("")) {
|
||||||
|
stack.getOrCreateTag().remove("PadID");
|
||||||
|
stack.getOrCreateTag().remove("PadURL");
|
||||||
|
} else {
|
||||||
|
stack.getOrCreateTag().putUUID("PadID", id);
|
||||||
|
stack.getOrCreateTag().putString("PadURL", url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handle(NetworkEvent.Context ctx) {
|
public void handle(NetworkEvent.Context ctx) {
|
||||||
|
// check if the player is holding a minePad with the requested id
|
||||||
|
// if the player is, then update that pad
|
||||||
for (InteractionHand value : InteractionHand.values()) {
|
for (InteractionHand value : InteractionHand.values()) {
|
||||||
ItemStack stack = ctx.getSender().getItemInHand(value);
|
ItemStack stack = ctx.getSender().getItemInHand(value);
|
||||||
if (stack.getItem() instanceof ItemMinePad2 pad) {
|
if (stack.getItem() instanceof ItemMinePad2 && stack.getOrCreateTag().contains("PadID")) {
|
||||||
stack.getOrCreateTag().putUUID("PadID", id);
|
UUID padId = stack.getTag().getUUID("PadID");
|
||||||
stack.getOrCreateTag().putString("PadURL", url);
|
if (padId.equals(id)) {
|
||||||
|
merge(stack);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if the player is not holding the requested minePad, update the first one that does not already have an ID
|
||||||
|
for (InteractionHand value : InteractionHand.values()) {
|
||||||
|
ItemStack stack = ctx.getSender().getItemInHand(value);
|
||||||
|
if (stack.getItem() instanceof ItemMinePad2 && stack.getOrCreateTag().contains("PadID")) {
|
||||||
|
if (stack.getOrCreateTag().contains("PadID"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
merge(stack);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,10 +45,3 @@ mandatory=true
|
||||||
versionRange="[1.0.0, )"
|
versionRange="[1.0.0, )"
|
||||||
ordering="NONE"
|
ordering="NONE"
|
||||||
side="BOTH"
|
side="BOTH"
|
||||||
|
|
||||||
[[dependencies.webdisplays]]
|
|
||||||
modId="cloth_config"
|
|
||||||
mandatory=true
|
|
||||||
versionRange="[8.2.88, )"
|
|
||||||
ordering="NONE"
|
|
||||||
side="BOTH"
|
|
||||||
Loading…
Reference in New Issue
Block a user