- fix issues with minepad cursor lock
- keyboard now enables mouse controls - fix some issues with the keyboard camera - helper methods on the screen block entity for dealing with hit results - update non-english language files to json
This commit is contained in:
parent
21ffc08fcf
commit
a603bdc8df
|
|
@ -4,12 +4,20 @@
|
|||
|
||||
package net.montoyo.wd.client.gui;
|
||||
|
||||
import com.cinemamod.mcef.MCEFBrowser;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.math.Axis;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.event.ViewportEvent;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.loading.FMLPaths;
|
||||
import net.montoyo.wd.WebDisplays;
|
||||
|
|
@ -18,23 +26,29 @@ import net.montoyo.wd.client.gui.controls.Button;
|
|||
import net.montoyo.wd.client.gui.controls.Control;
|
||||
import net.montoyo.wd.client.gui.controls.Label;
|
||||
import net.montoyo.wd.client.gui.loading.FillControl;
|
||||
import net.montoyo.wd.controls.builtin.ClickControl;
|
||||
import net.montoyo.wd.entity.ScreenBlockEntity;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.net.WDNetworkRegistry;
|
||||
import net.montoyo.wd.net.server_bound.C2SMessageScreenCtrl;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import net.montoyo.wd.utilities.Log;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import net.montoyo.wd.utilities.math.Vector2i;
|
||||
import net.montoyo.wd.utilities.serialization.TypeData;
|
||||
import net.montoyo.wd.utilities.serialization.Util;
|
||||
import org.cef.browser.CefBrowser;
|
||||
import org.cef.misc.CefCursorType;
|
||||
import org.joml.Matrix4f;
|
||||
import org.joml.Vector4f;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import org.vivecraft.client_vr.gameplay.VRPlayer;
|
||||
import org.vivecraft.client_vr.gameplay.screenhandlers.KeyboardHandler;
|
||||
//import org.vivecraft.gameplay.VRPlayer;
|
||||
//import org.vivecraft.gameplay.screenhandlers.KeyboardHandler;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class GuiKeyboard extends WDScreen {
|
||||
|
|
@ -43,6 +57,7 @@ public class GuiKeyboard extends WDScreen {
|
|||
|
||||
private ScreenBlockEntity tes;
|
||||
private BlockSide side;
|
||||
private ScreenData data;
|
||||
private final ArrayList<TypeData> evStack = new ArrayList<>();
|
||||
private BlockPos kbPos;
|
||||
private boolean showWarning = true;
|
||||
|
|
@ -144,22 +159,42 @@ public class GuiKeyboard extends WDScreen {
|
|||
KeyboardHandler.setOverlayShowing(true);
|
||||
|
||||
KeyboardCamera.focus(tes, side);
|
||||
|
||||
data = tes.getScreen(side);
|
||||
CefBrowser browser = data.browser;
|
||||
((MCEFBrowser) browser).setCursor(CefCursorType.fromId(data.mouseType));
|
||||
((MCEFBrowser) browser).setCursorChangeListener((id) -> {
|
||||
data.mouseType = id;
|
||||
((MCEFBrowser) browser).setCursor(CefCursorType.fromId(id));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removed() {
|
||||
super.removed();
|
||||
if (vivecraftPresent)
|
||||
if (VRPlayer.get() != null)
|
||||
KeyboardHandler.setOverlayShowing(false);
|
||||
KeyboardCamera.focus(null, null);
|
||||
CefBrowser browser = data.browser;
|
||||
if (browser instanceof MCEFBrowser mcef) {
|
||||
mcef.setCursor(CefCursorType.POINTER);
|
||||
mcef.setCursorChangeListener((cursor) -> data.mouseType = cursor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose() {
|
||||
if (vivecraftPresent)
|
||||
if (VRPlayer.get() != null)
|
||||
KeyboardHandler.setOverlayShowing(false);
|
||||
removed();
|
||||
super.onClose();
|
||||
KeyboardCamera.focus(null, null);
|
||||
this.minecraft.popGuiLayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||
if(quitOnEscape && keyCode == GLFW.GLFW_KEY_ESCAPE) {
|
||||
Minecraft.getInstance().setScreen(null);
|
||||
if (quitOnEscape && keyCode == GLFW.GLFW_KEY_ESCAPE) {
|
||||
onClose();
|
||||
return true;
|
||||
}
|
||||
addKey(new TypeData(TypeData.Action.PRESS, keyCode, modifiers, scanCode));
|
||||
return super.keyPressed(keyCode, scanCode, modifiers);
|
||||
|
|
@ -249,4 +284,89 @@ public class GuiKeyboard extends WDScreen {
|
|||
return bp.equals(kbPos) || (bp.equals(tes.getBlockPos()) && side == this.side);
|
||||
}
|
||||
|
||||
protected void mouse(double mouseX, double mouseY, Consumer<Vector2i> func) {
|
||||
float pct = Minecraft.getInstance().getPartialTick();
|
||||
|
||||
ViewportEvent.ComputeFov fov = new ViewportEvent.ComputeFov(
|
||||
Minecraft.getInstance().gameRenderer,
|
||||
Minecraft.getInstance().getEntityRenderDispatcher().camera,
|
||||
pct, Minecraft.getInstance().options.fov().get(),
|
||||
true
|
||||
);
|
||||
|
||||
mouseX /= width;
|
||||
mouseY /= height;
|
||||
|
||||
mouseX -= 0.5;
|
||||
mouseY -= 0.5;
|
||||
mouseY = -mouseY;
|
||||
|
||||
Matrix4f proj = Minecraft.getInstance().gameRenderer.getProjectionMatrix(fov.getFOV());
|
||||
|
||||
Entity e = Minecraft.getInstance().getEntityRenderDispatcher().camera.getEntity();
|
||||
|
||||
PoseStack camera = new PoseStack();
|
||||
float[] angle = KeyboardCamera.getAngle(e, pct);
|
||||
camera.mulPose(Axis.XP.rotationDegrees(angle[0]));
|
||||
camera.mulPose(Axis.YP.rotationDegrees(angle[1] + 180.0F));
|
||||
|
||||
Vector4f coord = new Vector4f(0, 0, 0, 0);
|
||||
coord.add(proj.invert().transform(new Vector4f(2f * (float) mouseX, 2 * (float) mouseY, 0, 1f)));
|
||||
coord = camera.last().pose().invert().transform(coord);
|
||||
coord.w = 0;
|
||||
coord.normalize();
|
||||
|
||||
Vec3 vec3 = e.getEyePosition(pct);
|
||||
Vec3 vec31 = new Vec3(coord.x, coord.y, coord.z);
|
||||
|
||||
BlockHitResult result = tes.trace(side, vec3, vec31);
|
||||
if (result.getType() != HitResult.Type.MISS) {
|
||||
tes.interact(result, func);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseMoved(double mouseX, double mouseY) {
|
||||
mouse(mouseX, mouseY, (hit) -> {
|
||||
tes.handleMouseEvent(side, ClickControl.ControlType.MOVE, hit, -1);
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserMove(tes, side, hit));
|
||||
});
|
||||
|
||||
super.mouseMoved(mouseX, mouseY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseClicked(double mouseX, double mouseY, int button) {
|
||||
mouse(mouseX, mouseY, (hit) -> {
|
||||
tes.handleMouseEvent(side, ClickControl.ControlType.MOVE, hit, -1);
|
||||
tes.handleMouseEvent(side, ClickControl.ControlType.DOWN, hit, button);
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserDown(tes, side, hit, button));
|
||||
});
|
||||
|
||||
return super.mouseClicked(mouseX, mouseY, button);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseReleased(double mouseX, double mouseY, int button) {
|
||||
mouse(mouseX, mouseY, (hit) -> {
|
||||
tes.handleMouseEvent(side, ClickControl.ControlType.MOVE, hit, -1);
|
||||
tes.handleMouseEvent(side, ClickControl.ControlType.UP, hit, button);
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserUp(tes, side, button));
|
||||
});
|
||||
|
||||
return super.mouseReleased(mouseX, mouseY, button);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
double mouseX = Minecraft.getInstance().mouseHandler.xpos() / Minecraft.getInstance().getWindow().getWidth();
|
||||
double mouseY = Minecraft.getInstance().mouseHandler.ypos() / Minecraft.getInstance().getWindow().getHeight();
|
||||
|
||||
mouse(mouseX * width, mouseY * height, (hit) -> {
|
||||
tes.handleMouseEvent(side, ClickControl.ControlType.MOVE, hit, -1);
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserMove(tes, side, hit));
|
||||
});
|
||||
|
||||
super.tick();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,18 +8,21 @@ import com.cinemamod.mcef.MCEFBrowser;
|
|||
import com.google.gson.JsonObject;
|
||||
import com.mojang.blaze3d.platform.InputConstants;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.*;
|
||||
import com.mojang.blaze3d.vertex.BufferBuilder;
|
||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
|
||||
import com.mojang.blaze3d.vertex.Tesselator;
|
||||
import com.mojang.blaze3d.vertex.VertexFormat;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.renderer.GameRenderer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.locale.Language;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.montoyo.wd.WebDisplays;
|
||||
import net.montoyo.wd.client.ClientProxy;
|
||||
import net.montoyo.wd.utilities.browser.WDBrowser;
|
||||
import net.montoyo.wd.utilities.browser.handlers.js.Scripts;
|
||||
import net.montoyo.wd.utilities.browser.handlers.WDRouter;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import org.cef.misc.CefCursorType;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
|
|
@ -121,8 +124,9 @@ public class GuiMinePad extends WDScreen {
|
|||
RenderSystem.enableCull();
|
||||
|
||||
graphics.drawString(
|
||||
minecraft.font, "Press Shift and Escape to close",
|
||||
(int) vx + 4, (int) vy - minecraft.font.lineHeight - 3, 16777215, true
|
||||
minecraft.font, Language.getInstance().getOrDefault(
|
||||
"webdisplays.gui.minepad.close"
|
||||
), (int) vx + 4, (int) vy - minecraft.font.lineHeight - 3, 16777215, true
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +154,7 @@ public class GuiMinePad extends WDScreen {
|
|||
public boolean keyChanged(int keyCode, int scanCode, int modifiers, boolean pressed) {
|
||||
assert minecraft != null;
|
||||
if ((modifiers & GLFW.GLFW_MOD_SHIFT) == GLFW.GLFW_MOD_SHIFT && keyCode == GLFW.GLFW_KEY_ESCAPE) {
|
||||
minecraft.setScreen(null);
|
||||
onClose();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -211,27 +215,27 @@ public class GuiMinePad extends WDScreen {
|
|||
return super.mouseScrolled(mouseX, mouseY, amount);
|
||||
}
|
||||
|
||||
public void capturedMouse(int scaledX, int scaledY, int sx, int sy) {
|
||||
double centerX = 0.5 * (double)this.minecraft.getWindow().getGuiScaledWidth();
|
||||
double centerY = 0.5 * (double)this.minecraft.getWindow().getGuiScaledHeight();
|
||||
public void capturedMouse(double scaledX, double scaledY, int sx, int sy) {
|
||||
double centerX = (int) (0.5 * (double) this.minecraft.getWindow().getGuiScaledWidth());
|
||||
double centerY = (int) (0.5 * (double) this.minecraft.getWindow().getGuiScaledHeight());
|
||||
|
||||
if (sx == (int) centerX && sy == (int) centerY) return;
|
||||
|
||||
double mx = (centerX - vx) / vw;
|
||||
double my = (centerY - vy) / vh;
|
||||
int scaledCentX = (int) (mx * WebDisplays.INSTANCE.padResX);
|
||||
int scaledCentY = (int) (my * WebDisplays.INSTANCE.padResY);
|
||||
double scaledCentX = (mx * WebDisplays.INSTANCE.padResX);
|
||||
double scaledCentY = (my * WebDisplays.INSTANCE.padResY);
|
||||
|
||||
int deltX = scaledX - scaledCentX;
|
||||
int deltY = scaledY - scaledCentY;
|
||||
double deltX = scaledX - scaledCentX;
|
||||
double deltY = scaledY - scaledCentY;
|
||||
|
||||
String scr = Scripts.MOUSE_EVENT;
|
||||
pad.view.executeJavaScript(
|
||||
scr
|
||||
.replace("%xCoord%", "" + (int) centerX)
|
||||
.replace("%yCoord%", "" + (int) centerY)
|
||||
.replace("%xDelta%", "" + deltX)
|
||||
.replace("%yDelta%", "" + deltY),
|
||||
.replace("%xDelta%", "" + (deltX))
|
||||
.replace("%yDelta%", "" + (deltY)),
|
||||
"WebDisplays", 0
|
||||
);
|
||||
|
||||
|
|
@ -255,7 +259,7 @@ public class GuiMinePad extends WDScreen {
|
|||
|
||||
if (btn == -1) {
|
||||
if (locked)
|
||||
capturedMouse(scaledX, scaledY, sx, sy);
|
||||
capturedMouse(mx * WebDisplays.INSTANCE.padResX, my * WebDisplays.INSTANCE.padResY, sx, sy);
|
||||
else ((MCEFBrowser) pad.view).sendMouseMove(scaledX, scaledY);
|
||||
} else if (pressed)
|
||||
((MCEFBrowser) pad.view).sendMousePress(scaledX, scaledY, btn);
|
||||
|
|
@ -294,6 +298,10 @@ public class GuiMinePad extends WDScreen {
|
|||
@Override
|
||||
public void removed() {
|
||||
super.removed();
|
||||
InputConstants.updateRawMouseInput(
|
||||
minecraft.getWindow().getWindow(),
|
||||
Minecraft.getInstance().options.rawMouseInput().get()
|
||||
);
|
||||
if (pad.view instanceof MCEFBrowser browser) {
|
||||
browser.setCursor(CefCursorType.POINTER);
|
||||
browser.setCursorChangeListener((cursor) -> {
|
||||
|
|
@ -305,11 +313,8 @@ public class GuiMinePad extends WDScreen {
|
|||
@Override
|
||||
public void onClose() {
|
||||
super.onClose();
|
||||
InputConstants.updateRawMouseInput(
|
||||
minecraft.getWindow().getWindow(),
|
||||
Minecraft.getInstance().options.rawMouseInput().get()
|
||||
);
|
||||
removed();
|
||||
this.minecraft.popGuiLayer();
|
||||
}
|
||||
|
||||
boolean locked = false;
|
||||
|
|
|
|||
|
|
@ -4,15 +4,17 @@ import net.minecraft.client.Minecraft;
|
|||
import net.minecraft.commands.arguments.EntityAnchorArgument;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.phys.Vec2;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.client.event.ViewportEvent;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.montoyo.wd.client.gui.GuiKeyboard;
|
||||
import net.montoyo.wd.config.ClientConfig;
|
||||
import net.montoyo.wd.utilities.browser.handlers.js.queries.ElementCenterQuery;
|
||||
import net.montoyo.wd.entity.ScreenBlockEntity;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.utilities.browser.WDBrowser;
|
||||
import net.montoyo.wd.utilities.browser.handlers.js.queries.ElementCenterQuery;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
|
||||
public class KeyboardCamera {
|
||||
|
|
@ -76,41 +78,39 @@ public class KeyboardCamera {
|
|||
}
|
||||
|
||||
protected static void updateCrd(ElementCenterQuery lock) {
|
||||
if (lock.hasFocused()) {
|
||||
ScreenData scr = tes.getScreen(side);
|
||||
if (scr != null) {
|
||||
Vec2 c;
|
||||
ScreenData scr = tes.getScreen(side);
|
||||
if (scr != null) {
|
||||
Vec2 c;
|
||||
|
||||
if (lock.hasFocused()) {
|
||||
if (ClientConfig.Input.keyboardCamera) {
|
||||
nextX = lock.getX();
|
||||
nextY = lock.getY();
|
||||
|
||||
c = pxToHit(scr, new Vec2((float) nextX, (float) nextY));
|
||||
} else c = new Vec2(scr.size.x / 2f, scr.size.y / 2f);
|
||||
} else c = new Vec2(scr.size.x / 2f, scr.size.y / 2f);
|
||||
|
||||
nextX = c.x;
|
||||
nextY = c.y;
|
||||
nextX = c.x;
|
||||
nextY = c.y;
|
||||
|
||||
if (nextX < 0) nextX = 0;
|
||||
else if (nextX > scr.size.x) nextX = scr.size.x;
|
||||
if (nextY < 0) nextY = 0;
|
||||
else if (nextY > scr.size.y) nextY = scr.size.y;
|
||||
if (nextX < 0) nextX = 0;
|
||||
else if (nextX > scr.size.x) nextX = scr.size.x;
|
||||
if (nextY < 0) nextY = 0;
|
||||
else if (nextY > scr.size.y) nextY = scr.size.y;
|
||||
|
||||
float scl = Math.max(scr.size.x, scr.size.y);
|
||||
float scl = Math.max(scr.size.x, scr.size.y);
|
||||
|
||||
double mx = Minecraft.getInstance().mouseHandler.xpos();
|
||||
mx /= Minecraft.getInstance().getWindow().getWidth();
|
||||
double mx = Minecraft.getInstance().mouseHandler.xpos();
|
||||
mx /= Minecraft.getInstance().getWindow().getWidth();
|
||||
|
||||
double my = Minecraft.getInstance().mouseHandler.ypos();
|
||||
my /= Minecraft.getInstance().getWindow().getHeight();
|
||||
double my = Minecraft.getInstance().mouseHandler.ypos();
|
||||
my /= Minecraft.getInstance().getWindow().getHeight();
|
||||
|
||||
Vec2 v2 = new Vec2((float) mx, (float) my).add(-0.5f);
|
||||
Vec2 v2 = new Vec2((float) mx, (float) my).add(-0.5f);
|
||||
|
||||
nextX += v2.x * scl;
|
||||
nextY -= v2.y * scl;
|
||||
}
|
||||
} else {
|
||||
nextX = -1;
|
||||
nextY = -1;
|
||||
nextX += v2.x * scl;
|
||||
nextY -= v2.y * scl;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -130,20 +130,14 @@ public class KeyboardCamera {
|
|||
}
|
||||
}
|
||||
|
||||
public static void updateCamera(ViewportEvent.ComputeCameraAngles event) {
|
||||
if (tes == null) {
|
||||
xCrd = -1;
|
||||
yCrd = -1;
|
||||
return; // nothing to do
|
||||
}
|
||||
public static float[] getAngle(Entity e, double pct) {
|
||||
BlockEntity tes = KeyboardCamera.tes;
|
||||
BlockSide side = KeyboardCamera.side;
|
||||
if (tes == null) return new float[]{Float.NaN, 0};
|
||||
if (side == null) return new float[]{Float.NaN, 0};
|
||||
|
||||
if (xCrd == -1) return;
|
||||
if (yCrd == -1) return;
|
||||
|
||||
// TODO: implement
|
||||
|
||||
double coxCrd = Mth.lerp(0.5 * event.getPartialTick(), oxCrd, xCrd);
|
||||
double coyCrd = Mth.lerp(0.5 * event.getPartialTick(), oyCrd, yCrd);
|
||||
double coxCrd = Mth.lerp(0.5 * pct, oxCrd, xCrd);
|
||||
double coyCrd = Mth.lerp(0.5 * pct, oyCrd, yCrd);
|
||||
|
||||
double focalX = tes.getBlockPos().getX() +
|
||||
side.right.x * (coxCrd - 1) + side.up.x * coyCrd + Math.abs(side.forward.x) * 0.5;
|
||||
|
|
@ -157,11 +151,27 @@ public class KeyboardCamera {
|
|||
focalZ += side.forward.z * 0.5f;
|
||||
|
||||
float[] angle = lookAt(
|
||||
event.getCamera().getEntity(),
|
||||
EntityAnchorArgument.Anchor.EYES,
|
||||
e, EntityAnchorArgument.Anchor.EYES,
|
||||
new Vec3(focalX, focalY, focalZ)
|
||||
);
|
||||
|
||||
return angle;
|
||||
}
|
||||
|
||||
public static void updateCamera(ViewportEvent.ComputeCameraAngles event) {
|
||||
if (tes == null) {
|
||||
xCrd = -1;
|
||||
yCrd = -1;
|
||||
return; // nothing to do
|
||||
}
|
||||
|
||||
if (xCrd == -1) return;
|
||||
if (yCrd == -1) return;
|
||||
|
||||
float[] angle = getAngle(event.getCamera().getEntity(), event.getPartialTick());
|
||||
|
||||
if (Float.isNaN(angle[0])) return;
|
||||
|
||||
// float xRot = event.getYaw(); // left right
|
||||
// float yRot = event.getPitch(); // up down
|
||||
|
||||
|
|
@ -201,6 +211,12 @@ public class KeyboardCamera {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!(Minecraft.getInstance().screen instanceof GuiKeyboard)) {
|
||||
tes = null;
|
||||
side = null;
|
||||
return;
|
||||
}
|
||||
|
||||
pollElement();
|
||||
|
||||
double anxx = nextX;
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ import net.minecraft.client.renderer.MultiBufferSource;
|
|||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.montoyo.wd.WebDisplays;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.entity.ScreenBlockEntity;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.utilities.math.Vector3f;
|
||||
import net.montoyo.wd.utilities.math.Vector3i;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
|
|
|||
|
|
@ -4,9 +4,8 @@
|
|||
|
||||
package net.montoyo.wd.entity;
|
||||
|
||||
import com.cinemamod.mcef.MCEF;
|
||||
import com.cinemamod.mcef.MCEFBrowser;
|
||||
import com.cinemamod.mcef.listeners.MCEFCursorChangeListener;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
|
|
@ -19,10 +18,12 @@ import net.minecraft.world.InteractionHand;
|
|||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.network.PacketDistributor;
|
||||
import net.montoyo.wd.WebDisplays;
|
||||
import net.montoyo.wd.block.ScreenBlock;
|
||||
|
|
@ -33,20 +34,23 @@ import net.montoyo.wd.core.DefaultUpgrade;
|
|||
import net.montoyo.wd.core.IUpgrade;
|
||||
import net.montoyo.wd.core.ScreenRights;
|
||||
import net.montoyo.wd.data.ScreenConfigData;
|
||||
import net.montoyo.wd.registry.BlockRegistry;
|
||||
import net.montoyo.wd.registry.ItemRegistry;
|
||||
import net.montoyo.wd.registry.TileRegistry;
|
||||
import net.montoyo.wd.miniserv.SyncPlugin;
|
||||
import net.montoyo.wd.net.WDNetworkRegistry;
|
||||
import net.montoyo.wd.net.client_bound.S2CMessageAddScreen;
|
||||
import net.montoyo.wd.net.client_bound.S2CMessageScreenUpdate;
|
||||
import net.montoyo.wd.utilities.*;
|
||||
import net.montoyo.wd.registry.BlockRegistry;
|
||||
import net.montoyo.wd.registry.ItemRegistry;
|
||||
import net.montoyo.wd.registry.TileRegistry;
|
||||
import net.montoyo.wd.utilities.Log;
|
||||
import net.montoyo.wd.utilities.Multiblock;
|
||||
import net.montoyo.wd.utilities.ScreenIterator;
|
||||
import net.montoyo.wd.utilities.VideoType;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import net.montoyo.wd.utilities.data.Rotation;
|
||||
import net.montoyo.wd.utilities.math.MutableAABB;
|
||||
import net.montoyo.wd.utilities.math.Vector2i;
|
||||
import net.montoyo.wd.utilities.math.Vector3f;
|
||||
import net.montoyo.wd.utilities.math.Vector3i;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import net.montoyo.wd.utilities.data.Rotation;
|
||||
import net.montoyo.wd.utilities.serialization.NameUUIDPair;
|
||||
import net.montoyo.wd.utilities.serialization.TypeData;
|
||||
import org.cef.browser.CefBrowser;
|
||||
|
|
@ -55,8 +59,8 @@ import javax.annotation.Nonnull;
|
|||
import javax.annotation.Nullable;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import static net.montoyo.wd.block.PeripheralBlock.point;
|
||||
|
|
@ -1089,6 +1093,57 @@ public class ScreenBlockEntity extends BlockEntity {
|
|||
}
|
||||
}
|
||||
|
||||
public void interact(BlockHitResult result, Consumer<Vector2i> func) {
|
||||
BlockState state = getBlockState();
|
||||
if (state.getBlock() instanceof ScreenBlock) {
|
||||
Vector3i pos = new Vector3i(result.getBlockPos());
|
||||
BlockSide side = BlockSide.values()[result.getDirection().ordinal()];
|
||||
|
||||
Multiblock.findOrigin(Minecraft.getInstance().level, pos, side, null);
|
||||
|
||||
//Since rights aren't synchronized, let the server check them for us...
|
||||
ScreenData scr = this.getScreen(side);
|
||||
|
||||
if (scr.browser != null) {
|
||||
float hitX = ((float) result.getLocation().x) - (float) pos.x;
|
||||
float hitY = ((float) result.getLocation().y) - (float) pos.y;
|
||||
float hitZ = ((float) result.getLocation().z) - (float) pos.z;
|
||||
Vector2i tmp = new Vector2i();
|
||||
|
||||
if (ScreenBlock.hit2pixels(side, result.getBlockPos(), new Vector3i(result.getBlockPos()), scr, hitX, hitY, hitZ, tmp)) {
|
||||
func.accept(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public BlockHitResult trace(BlockSide side, Vec3 start, Vec3 look) {
|
||||
AABB box = getRenderBoundingBox();
|
||||
double pHitDistance = box.distanceToSqr(start) + 2;
|
||||
|
||||
Vec3 vec32 = start.add(look.x * pHitDistance, look.y * pHitDistance, look.z * pHitDistance);
|
||||
|
||||
box = box.move(
|
||||
-getBlockPos().getX(),
|
||||
-getBlockPos().getY(),
|
||||
-getBlockPos().getZ()
|
||||
);
|
||||
|
||||
BlockHitResult bhr = AABB.clip(Arrays.asList(box), start, vec32, getBlockPos());
|
||||
if (bhr == null || bhr.getType() != HitResult.Type.BLOCK || bhr.getDirection().ordinal() != side.ordinal()) {
|
||||
bhr = AABB.clip(Arrays.asList(box), vec32, start, getBlockPos());
|
||||
if (bhr == null || bhr.getType() != HitResult.Type.BLOCK || bhr.getDirection().ordinal() != side.ordinal()) {
|
||||
return BlockHitResult.miss(
|
||||
vec32,
|
||||
bhr == null ? Direction.getNearest(look.x, look.y, look.z).getOpposite() : bhr.getDirection(),
|
||||
getBlockPos()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return bhr;
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public boolean shouldRefresh(Level world, BlockPos pos, @Nonnull BlockState oldState, @Nonnull BlockState newState) {
|
||||
// if(oldState.getBlock() != WebDisplays.INSTANCE.blockScreen || newState.getBlock() != WebDisplays.INSTANCE.blockScreen)
|
||||
|
|
|
|||
|
|
@ -16,13 +16,13 @@ import net.montoyo.wd.client.ClientProxy;
|
|||
import net.montoyo.wd.config.ClientConfig;
|
||||
import net.montoyo.wd.controls.builtin.ClickControl;
|
||||
import net.montoyo.wd.core.DefaultUpgrade;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.entity.ScreenBlockEntity;
|
||||
import net.montoyo.wd.registry.BlockRegistry;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.net.WDNetworkRegistry;
|
||||
import net.montoyo.wd.net.server_bound.C2SMessageScreenCtrl;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import net.montoyo.wd.registry.BlockRegistry;
|
||||
import net.montoyo.wd.utilities.Multiblock;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import net.montoyo.wd.utilities.math.Vector2i;
|
||||
import net.montoyo.wd.utilities.math.Vector3i;
|
||||
|
||||
|
|
@ -120,11 +120,6 @@ public class ItemLaserPointer extends Item implements WDItem {
|
|||
BlockSide side = BlockSide.values()[result.getDirection().ordinal()];
|
||||
Multiblock.findOrigin(mc.level, pos, side, null);
|
||||
|
||||
float hitX = ((float) result.getLocation().x) - (float) pos.x;
|
||||
float hitY = ((float) result.getLocation().y) - (float) pos.y;
|
||||
float hitZ = ((float) result.getLocation().z) - (float) pos.z;
|
||||
Vector2i tmp = new Vector2i();
|
||||
|
||||
BlockEntity be = mc.level.getBlockEntity(pos.toBlock());
|
||||
if (!(be instanceof ScreenBlockEntity)) return;
|
||||
|
||||
|
|
@ -132,20 +127,16 @@ public class ItemLaserPointer extends Item implements WDItem {
|
|||
ScreenBlockEntity te = (ScreenBlockEntity) be;
|
||||
|
||||
if (te.hasUpgrade(side, DefaultUpgrade.LASERMOUSE)) { //hasUpgrade returns false is there's no screen on side 'side'
|
||||
//Since rights aren't synchronized, let the server check them for us...
|
||||
ScreenData scr = te.getScreen(side);
|
||||
|
||||
if (scr.browser != null) {
|
||||
if (ScreenBlock.hit2pixels(side, result.getBlockPos(), new Vector3i(result.getBlockPos()), scr, hitX, hitY, hitZ, tmp)) {
|
||||
te.handleMouseEvent(side, ClickControl.ControlType.MOVE, tmp, -1);
|
||||
te.handleMouseEvent(side, press ? ClickControl.ControlType.DOWN : ClickControl.ControlType.UP, tmp, button);
|
||||
|
||||
if (press)
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserDown(te, side, tmp, button));
|
||||
else
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserUp(te, side, button));
|
||||
}
|
||||
}
|
||||
int finalButton = button;
|
||||
te.interact(result, (hit) -> {
|
||||
te.handleMouseEvent(side, ClickControl.ControlType.MOVE, hit, -1);
|
||||
te.handleMouseEvent(side, press ? ClickControl.ControlType.DOWN : ClickControl.ControlType.UP, hit, finalButton);
|
||||
|
||||
if (press)
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserDown(te, side, hit, finalButton));
|
||||
else
|
||||
WDNetworkRegistry.INSTANCE.sendToServer(C2SMessageScreenCtrl.laserUp(te, side, finalButton));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
"block.webdisplays.ccinterface": "ComputerCraft Interface",
|
||||
"block.webdisplays.cointerface": "OpenComputers Interface",
|
||||
"block.webdisplays.redctrl": "Redstone Controller",
|
||||
"block.webdisplays.redctrl": "Redstone Controller",
|
||||
"block.webdisplays.server": "Server",
|
||||
"item.webdisplays.screencfg": "Screen Configurator",
|
||||
"item.webdisplays.ownerthief": "Ownership Thief [ADMIN]",
|
||||
|
|
@ -154,5 +153,7 @@
|
|||
"webdisplays.server.help.upload": "Opens the upload wizard",
|
||||
"webdisplays.server.help.rm": "Deletes a file",
|
||||
"webdisplays.server.help.reconnect": "Reconnect to miniserv [DEBUG]",
|
||||
"webdisplays.server.press_for_more": "<Press DOWN to show more>"
|
||||
"webdisplays.server.press_for_more": "<Press DOWN to show more>",
|
||||
"webdisplays.key.toggle_mouse": "Toggle Laser Mouse (WebDisplays)",
|
||||
"webdisplays.gui.minepad.close": "Press Shift and Escape to close."
|
||||
}
|
||||
|
|
|
|||
156
src/main/resources/assets/webdisplays/lang/fr_fr.json
Normal file
156
src/main/resources/assets/webdisplays/lang/fr_fr.json
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
{
|
||||
"itemGroup.webdisplays": "§5Web Displays",
|
||||
"block.webdisplays.screen": "Ecran",
|
||||
"block.webdisplays.peripheral": "Périphérique",
|
||||
"block.webdisplays.kb_left": "Clavier",
|
||||
"block.webdisplays.rctrl": "Télécommande",
|
||||
"block.webdisplays.ccinterface": "Interface ComputerCraft",
|
||||
"block.webdisplays.cointerface": "Interface OpenComputers",
|
||||
"block.webdisplays.redctrl": "Contrôleur",
|
||||
"block.webdisplays.server": "Serveur",
|
||||
"item.webdisplays.screencfg": "Gestionnaire d'écran",
|
||||
"item.webdisplays.ownerthief": "Voleur d'écran [ADMIN]",
|
||||
"item.webdisplays.linker": "Outil d'appairage",
|
||||
"item.webdisplays.craftcomp": "Ingrédient de recette",
|
||||
"item.webdisplays.craftcomp_stonekey": "Touche en pierre",
|
||||
"item.webdisplays.craftcomp_upgrade": "Amélioration vide",
|
||||
"item.webdisplays.craftcomp_peripheral": "Base de périphérique",
|
||||
"item.webdisplays.craftcomp_batcell": "Cellule de batterie",
|
||||
"item.webdisplays.craftcomp_batpack": "Batterie",
|
||||
"item.webdisplays.craftcomp_laserdiode": "Diode laser 650nm",
|
||||
"item.webdisplays.craftcomp_backlight": "Rétroéclairage",
|
||||
"item.webdisplays.craftcomp_extcard": "Carte d'extension",
|
||||
"item.webdisplays.craftcomp_badextcard": "Carte d'extension ratée",
|
||||
"item.webdisplays.minepad": "minePad",
|
||||
"item.webdisplays.minepad2": "minePad 2",
|
||||
"item.webdisplays.upgrade": "Amélioration d'écran",
|
||||
"item.webdisplays.upgrade_lasermouse": "Capteur de laser",
|
||||
"item.webdisplays.upgrade_redinput": "Port d'entrée Redstone",
|
||||
"item.webdisplays.upgrade_redoutput": "Port de sortie Redstone",
|
||||
"item.webdisplays.upgrade_gps": "Module GALILEO",
|
||||
"item.webdisplays.laserpointer": "Pointeur laser",
|
||||
"item.webdisplays.advicon": "Icone de progrès",
|
||||
"item.webdisplays.advicon.wd": "WebDisplays",
|
||||
"item.webdisplays.advicon.brokenpad": "minePad cassé",
|
||||
"item.webdisplays.advicon.pigeon": "Pigeon",
|
||||
"item.webdisplays.wiki": "Appuyez sur \"F1\" pour ouvrir le Wiki",
|
||||
"webdisplays.message.tooSmall": "Trop petit ! La taille minimale est de 2x2.",
|
||||
"webdisplays.message.tooBig": "Trop grand ! La taille maximale est de %dx%d.",
|
||||
"webdisplays.message.invalid": "La structure est invalide; regardez vers %s.",
|
||||
"webdisplays.message.turnOn": "Vous devez d'abord allumer l'écran",
|
||||
"webdisplays.message.screenSet": "Ecran sélectionné ! Donnez l'item à quelqu'un...",
|
||||
"webdisplays.message.newOwner": "Vous êtes maintenant le propriétaire de cet écran",
|
||||
"webdisplays.message.restrictions": "Vous n'avez pas le droit de faire cela :(",
|
||||
"webdisplays.message.peripheral": "Ce n'est pas un périphérique!",
|
||||
"webdisplays.message.linked": "Appairé !",
|
||||
"webdisplays.message.linkError": "Erreur d'appairage... :( vérifiez les logs",
|
||||
"webdisplays.message.notAScreen": "Vous devez d'abord sélectionner un écran",
|
||||
"webdisplays.message.screenSet2": "Ecran sélectionné! Maintenant, sélectionnez un périphérique...",
|
||||
"webdisplays.message.chunkUnloaded": "Le chunk dans lequel se trouve l'écran n'est pas chargé",
|
||||
"webdisplays.message.notLinked": "Ce périphérique n'a pas encore été appairé",
|
||||
"webdisplays.message.missingCC": "ComputerCraft non disponible.",
|
||||
"webdisplays.message.missingOC": "OpenComputers non disponible.",
|
||||
"webdisplays.message.upgradeError": "Erreur lors de l'amélioration, vérifiez les logs",
|
||||
"webdisplays.message.upgradeOk": "Amélioration installée !",
|
||||
"webdisplays.message.linkAbort": "Outil d'appairage remis à zéro.",
|
||||
"webdisplays.message.noMiniserv": "Le bloc serveur est désactivé",
|
||||
"webdisplays.message.otDisabled": "Le voleur d'écran est désactivé sur ce serveur",
|
||||
"webdisplays.message.welcome1": "Merci d'avoir installé WebDisplays ! Pour obtenir",
|
||||
"webdisplays.message.welcome2": "de l'aide sur un item, passez la souris dessus",
|
||||
"webdisplays.message.welcome3": "et appuyez sur F1. Amusez-vous bien, - montoyo",
|
||||
"webdisplays.gui.screencfg.owner": "Propriétaire :",
|
||||
"webdisplays.gui.screencfg.friends": "Amis :",
|
||||
"webdisplays.gui.screencfg.permissions": "Permissions :",
|
||||
"webdisplays.gui.screencfg.seturl": "Changer l'URL",
|
||||
"webdisplays.gui.screencfg.click": "Cliquer & écrire",
|
||||
"webdisplays.gui.screencfg.friendlist": "Gérer les amis",
|
||||
"webdisplays.gui.screencfg.otherrights": "Gérer les autres",
|
||||
"webdisplays.gui.screencfg.mupgrades": "Améliorer & appairer",
|
||||
"webdisplays.gui.screencfg.mres": "Changer la résolution",
|
||||
"webdisplays.gui.screencfg.others": "Autres",
|
||||
"webdisplays.gui.screencfg.upgrades": "Améliorations :",
|
||||
"webdisplays.gui.screencfg.resolution": "Résolution :",
|
||||
"webdisplays.gui.screencfg.setres": "Déf. Resolution",
|
||||
"webdisplays.gui.screencfg.rotation": "Rotation",
|
||||
"webdisplays.gui.screencfg.rot0": "0°",
|
||||
"webdisplays.gui.screencfg.rot90": "90°",
|
||||
"webdisplays.gui.screencfg.rot180": "180°",
|
||||
"webdisplays.gui.screencfg.rot270": "270°",
|
||||
"webdisplays.gui.screencfg.lockratio": "Verrouiller le ratio",
|
||||
"webdisplays.gui.screencfg.autovol": "Volume Auto",
|
||||
"webdisplays.gui.screencfg.avwarning": "§cAttention !\nLe volume auto ne fonctionne\nque sur les vidéos YouTube, et\nsi il a été activé dans la config !",
|
||||
"webdisplays.linker.selectScreen": "Cliquez droit sur un écran",
|
||||
"webdisplays.linker.selectPeripheral": "Cliquez droit sur un périphérique",
|
||||
"webdisplays.linker.posInfo": "Pos. écran : %d %d %d",
|
||||
"webdisplays.linker.sideInfo": "Côté : %s",
|
||||
"webdisplays.gui.seturl.url": "URL:",
|
||||
"webdisplays.gui.seturl.ok": "OK",
|
||||
"webdisplays.gui.seturl.cancel": "Annuler",
|
||||
"webdisplays.gui.seturl.shutdown": "Eteindre",
|
||||
"webdisplays.minepad.turnon": "Pour allumer, s'accroupir et faire clique-droit",
|
||||
"webdisplays.minepad2.info": "PAS DE REMBOURSEMENT !",
|
||||
"webdisplays.extcard.cantcraft1": "Vous n'avez pas assez de connaissances",
|
||||
"webdisplays.extcard.cantcraft2": "Vous ALLEZ RATER la fabrication de cet item",
|
||||
"webdisplays.extcard.bad": "Quelqu'un a raté la fabrication de cette carte",
|
||||
"webdisplays.gui.keyboard.hooked": "Clavier attaché. Appuyez sur Echap pour quitter.",
|
||||
"webdisplays.gui.keyboard.warning1": "ATTENTION ! Le texte que vous tapez ici est envoyé EN CLAIR au serveur.",
|
||||
"webdisplays.gui.keyboard.warning2": "Cela signifie que tout le monde peut voir ce que vous tapez.",
|
||||
"webdisplays.gui.keyboard.warning3": "Ne JAMAIS taper de mot de passe avec ce clavier.",
|
||||
"webdisplays.gui.keyboard.gotcha": "Je comprends",
|
||||
"advancements.webdisplays.root.title": "WebDisplays",
|
||||
"advancements.webdisplays.root.description": "Le mod WebDisplays",
|
||||
"advancements.webdisplays.screen.title": "The internet is for...",
|
||||
"advancements.webdisplays.screen.description": "Fabriquez votre premier écran",
|
||||
"advancements.webdisplays.minepad.title": "C'est une révolution",
|
||||
"advancements.webdisplays.minepad.description": "Essayez notre tout dernier bijoux technologique: le minePad !",
|
||||
"advancements.webdisplays.padbreak.title": "Rétro-ingénierie",
|
||||
"advancements.webdisplays.padbreak.description": "Ces trucs là sont fragiles ! Ne les jetez pas de haut pour débloquer les recettes des améliorations !",
|
||||
"advancements.webdisplays.minepad2.title": "Pigeon",
|
||||
"advancements.webdisplays.minepad2.description": "Fabriquez un minePad 2. Ecoutez, je sais que c'est très cher, mais ça veut dire que ce qu'il y'a de mieux non ?",
|
||||
"advancements.webdisplays.linkperipheral.title": "Sans fils !",
|
||||
"advancements.webdisplays.linkperipheral.description": "Appairez un périphérique à un écran",
|
||||
"advancements.webdisplays.keyboardcat.title": "PU**IN DE CHATS",
|
||||
"advancements.webdisplays.keyboardcat.description": "Faites en sorte qu'un ocelot marche sur votre clavier",
|
||||
"advancements.webdisplays.upgrade.title": "Plus qu'un écran",
|
||||
"advancements.webdisplays.upgrade.description": "Installez votre première amélioration",
|
||||
"advancements.webdisplays.laser.title": "Ne pas viser les yeux",
|
||||
"advancements.webdisplays.laser.description": "Fabriquez un pointeur laser",
|
||||
"webdisplays.side.bottom": "Bas",
|
||||
"webdisplays.side.top": "Haut",
|
||||
"webdisplays.side.north": "Nord",
|
||||
"webdisplays.side.south": "Sud",
|
||||
"webdisplays.side.west": "Ouest",
|
||||
"webdisplays.side.east": "Est",
|
||||
"webdisplays.server.info": "Tapez \"help\" pour obtenir de l'aide",
|
||||
"webdisplays.server.unknowncmd": "Commande inconnue.",
|
||||
"webdisplays.server.error": "Erreur interne. Vérifiez les logs.",
|
||||
"webdisplays.server.error2": "Erreur interne %d. Vérifiez les logs.",
|
||||
"webdisplays.server.argerror": "Argument non reconnu",
|
||||
"webdisplays.server.queryerr": "Erreur de requête, essayez \"reconnect\".",
|
||||
"webdisplays.server.errowner": "Seul le propriétaire peut faire cela.",
|
||||
"webdisplays.server.timeout": "Le délai est dépaissé. Vérifiez les logs.",
|
||||
"webdisplays.server.ownername": "Nom du propriétaire : %s",
|
||||
"webdisplays.server.owneruuid": "UUID du propriétaire :",
|
||||
"webdisplays.server.quota": "%s/%s utilisés",
|
||||
"webdisplays.server.fnamearg": "Nom de fichier manquant",
|
||||
"webdisplays.server.nameerr": "Nom de fichier invalide",
|
||||
"webdisplays.server.urlcopied": "URL copié dans le presse-papier.",
|
||||
"webdisplays.server.notfound": "Fichier introuvable",
|
||||
"webdisplays.server.upload.info": "Choisissez un fichier",
|
||||
"webdisplays.server.upload.parent": "[Dossier parent]",
|
||||
"webdisplays.server.upload.uploading": "Mise en ligne...",
|
||||
"webdisplays.server.upload.done": "Terminé !",
|
||||
"webdisplays.server.upload.exists": "Erreur : le fichier existe",
|
||||
"webdisplays.server.upload.quota": "Erreur : taille max atteinte",
|
||||
"webdisplays.server.help.help": "Affiche ce texte",
|
||||
"webdisplays.server.help.clear": "Efface l'écran",
|
||||
"webdisplays.server.help.exit": "Quitte la console",
|
||||
"webdisplays.server.help.access": "§kPas d'aide disponible",
|
||||
"webdisplays.server.help.owner": "Affiche le proprio. de ce serveur",
|
||||
"webdisplays.server.help.quota": "Affiche le quota de stockage",
|
||||
"webdisplays.server.help.ls": "Liste les fichiers de ce serveur",
|
||||
"webdisplays.server.help.url": "Copie l'URL d'un fichier",
|
||||
"webdisplays.server.help.upload": "Ouvre l'assitant de mise en ligne",
|
||||
"webdisplays.server.help.rm": "Supprime un fichier",
|
||||
"webdisplays.server.help.reconnect": "Se reco. à Miniserv [DEBUG]"
|
||||
}
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
itemGroup.webdisplays=§5Web Displays
|
||||
tile.webdisplays.screen.name=Ecran
|
||||
tile.webdisplays.peripheral.name=Périphérique
|
||||
tile.webdisplays.peripheral.keyboard.name=Clavier
|
||||
tile.webdisplays.peripheral.remotectrl.name=Télécommande
|
||||
tile.webdisplays.peripheral.ccinterface.name=Interface ComputerCraft
|
||||
tile.webdisplays.peripheral.cointerface.name=Interface OpenComputers
|
||||
tile.webdisplays.peripheral.redstonectrl.name=Contrôleur
|
||||
tile.webdisplays.peripheral.server.name=Serveur
|
||||
item.webdisplays.screencfg.name=Gestionnaire d'écran
|
||||
item.webdisplays.ownerthief.name=Voleur d'écran [ADMIN]
|
||||
item.webdisplays.linker.name=Outil d'appairage
|
||||
item.webdisplays.craftcomp.name=Ingrédient de recette
|
||||
item.webdisplays.craftcomp.stonekey.name=Touche en pierre
|
||||
item.webdisplays.craftcomp.upgrade.name=Amélioration vide
|
||||
item.webdisplays.craftcomp.peripheral.name=Base de périphérique
|
||||
item.webdisplays.craftcomp.batcell.name=Cellule de batterie
|
||||
item.webdisplays.craftcomp.batpack.name=Batterie
|
||||
item.webdisplays.craftcomp.laserdiode.name=Diode laser 650nm
|
||||
item.webdisplays.craftcomp.backlight.name=Rétroéclairage
|
||||
item.webdisplays.craftcomp.extcard.name=Carte d'extension
|
||||
item.webdisplays.craftcomp.badextcard.name=Carte d'extension ratée
|
||||
item.webdisplays.minepad.name=minePad
|
||||
item.webdisplays.minepad2.name=minePad 2
|
||||
item.webdisplays.upgrade.name=Amélioration d'écran
|
||||
item.webdisplays.upgrade.lasermouse.name=Capteur de laser
|
||||
item.webdisplays.upgrade.redinput.name=Port d'entrée Redstone
|
||||
item.webdisplays.upgrade.redoutput.name=Port de sortie Redstone
|
||||
item.webdisplays.upgrade.gps.name=Module GALILEO
|
||||
item.webdisplays.laserpointer.name=Pointeur laser
|
||||
item.webdisplays.advicon.name=Icone de progrès
|
||||
item.webdisplays.advicon.wd.name=WebDisplays
|
||||
item.webdisplays.advicon.brokenpad.name=minePad cassé
|
||||
item.webdisplays.advicon.pigeon.name=Pigeon
|
||||
item.webdisplays.wiki=Appuyez sur "F1" pour ouvrir le Wiki
|
||||
webdisplays.message.tooSmall=Trop petit ! La taille minimale est de 2x2.
|
||||
webdisplays.message.tooBig=Trop grand ! La taille maximale est de %dx%d.
|
||||
webdisplays.message.invalid=La structure est invalide; regardez vers %s.
|
||||
webdisplays.message.turnOn=Vous devez d'abord allumer l'écran
|
||||
webdisplays.message.screenSet=Ecran sélectionné ! Donnez l'item à quelqu'un...
|
||||
webdisplays.message.newOwner=Vous êtes maintenant le propriétaire de cet écran
|
||||
webdisplays.message.restrictions=Vous n'avez pas le droit de faire cela :(
|
||||
webdisplays.message.peripheral=Ce n'est pas un périphérique!
|
||||
webdisplays.message.linked=Appairé !
|
||||
webdisplays.message.linkError=Erreur d'appairage... :( vérifiez les logs
|
||||
webdisplays.message.notAScreen=Vous devez d'abord sélectionner un écran
|
||||
webdisplays.message.screenSet2=Ecran sélectionné! Maintenant, sélectionnez un périphérique...
|
||||
webdisplays.message.chunkUnloaded=Le chunk dans lequel se trouve l'écran n'est pas chargé
|
||||
webdisplays.message.notLinked=Ce périphérique n'a pas encore été appairé
|
||||
webdisplays.message.missingCC=ComputerCraft non disponible.
|
||||
webdisplays.message.missingOC=OpenComputers non disponible.
|
||||
webdisplays.message.upgradeError=Erreur lors de l'amélioration, vérifiez les logs
|
||||
webdisplays.message.upgradeOk=Amélioration installée !
|
||||
webdisplays.message.linkAbort=Outil d'appairage remis à zéro.
|
||||
webdisplays.message.noMiniserv=Le bloc serveur est désactivé
|
||||
webdisplays.message.otDisabled=Le voleur d'écran est désactivé sur ce serveur
|
||||
webdisplays.message.welcome1=Merci d'avoir installé WebDisplays ! Pour obtenir
|
||||
webdisplays.message.welcome2=de l'aide sur un item, passez la souris dessus
|
||||
webdisplays.message.welcome3=et appuyez sur F1. Amusez-vous bien, - montoyo
|
||||
webdisplays.gui.screencfg.owner=Propriétaire :
|
||||
webdisplays.gui.screencfg.friends=Amis :
|
||||
webdisplays.gui.screencfg.permissions=Permissions :
|
||||
webdisplays.gui.screencfg.seturl=Changer l'URL
|
||||
webdisplays.gui.screencfg.click=Cliquer & écrire
|
||||
webdisplays.gui.screencfg.friendlist=Gérer les amis
|
||||
webdisplays.gui.screencfg.otherrights=Gérer les autres
|
||||
webdisplays.gui.screencfg.mupgrades=Améliorer & appairer
|
||||
webdisplays.gui.screencfg.mres=Changer la résolution
|
||||
webdisplays.gui.screencfg.others=Autres
|
||||
webdisplays.gui.screencfg.upgrades=Améliorations :
|
||||
webdisplays.gui.screencfg.resolution=Résolution :
|
||||
webdisplays.gui.screencfg.setres=Déf. Resolution
|
||||
webdisplays.gui.screencfg.rotation=Rotation
|
||||
webdisplays.gui.screencfg.rot0=0°
|
||||
webdisplays.gui.screencfg.rot90=90°
|
||||
webdisplays.gui.screencfg.rot180=180°
|
||||
webdisplays.gui.screencfg.rot270=270°
|
||||
webdisplays.gui.screencfg.lockratio=Verrouiller le ratio
|
||||
webdisplays.gui.screencfg.autovol=Volume Auto
|
||||
webdisplays.gui.screencfg.avwarning=§cAttention !\nLe volume auto ne fonctionne\nque sur les vidéos YouTube, et\nsi il a été activé dans la config !
|
||||
webdisplays.linker.selectScreen=Cliquez droit sur un écran
|
||||
webdisplays.linker.selectPeripheral=Cliquez droit sur un périphérique
|
||||
webdisplays.linker.posInfo=Pos. écran : %d %d %d
|
||||
webdisplays.linker.sideInfo=Côté : %s
|
||||
webdisplays.gui.seturl.url=URL:
|
||||
webdisplays.gui.seturl.ok=OK
|
||||
webdisplays.gui.seturl.cancel=Annuler
|
||||
webdisplays.gui.seturl.shutdown=Eteindre
|
||||
webdisplays.minepad.turnon=Pour allumer, s'accroupir et faire clique-droit
|
||||
webdisplays.minepad2.info=PAS DE REMBOURSEMENT !
|
||||
webdisplays.extcard.cantcraft1=Vous n'avez pas assez de connaissances
|
||||
webdisplays.extcard.cantcraft2=Vous ALLEZ RATER la fabrication de cet item
|
||||
webdisplays.extcard.bad=Quelqu'un a raté la fabrication de cette carte
|
||||
webdisplays.gui.keyboard.hooked=Clavier attaché. Appuyez sur Echap pour quitter.
|
||||
webdisplays.gui.keyboard.warning1=ATTENTION ! Le texte que vous tapez ici est envoyé EN CLAIR au serveur.
|
||||
webdisplays.gui.keyboard.warning2=Cela signifie que tout le monde peut voir ce que vous tapez.
|
||||
webdisplays.gui.keyboard.warning3=Ne JAMAIS taper de mot de passe avec ce clavier.
|
||||
webdisplays.gui.keyboard.gotcha=Je comprends
|
||||
advancements.webdisplays.root.title=WebDisplays
|
||||
advancements.webdisplays.root.description=Le mod WebDisplays
|
||||
advancements.webdisplays.screen.title=The internet is for...
|
||||
advancements.webdisplays.screen.description=Fabriquez votre premier écran
|
||||
advancements.webdisplays.minepad.title=C'est une révolution
|
||||
advancements.webdisplays.minepad.description=Essayez notre tout dernier bijoux technologique: le minePad !
|
||||
advancements.webdisplays.padbreak.title=Rétro-ingénierie
|
||||
advancements.webdisplays.padbreak.description=Ces trucs là sont fragiles ! Ne les jetez pas de haut pour débloquer les recettes des améliorations !
|
||||
advancements.webdisplays.minepad2.title=Pigeon
|
||||
advancements.webdisplays.minepad2.description=Fabriquez un minePad 2. Ecoutez, je sais que c'est très cher, mais ça veut dire que ce qu'il y'a de mieux non ?
|
||||
advancements.webdisplays.linkperipheral.title=Sans fils !
|
||||
advancements.webdisplays.linkperipheral.description=Appairez un périphérique à un écran
|
||||
advancements.webdisplays.keyboardcat.title=PU**IN DE CHATS
|
||||
advancements.webdisplays.keyboardcat.description=Faites en sorte qu'un ocelot marche sur votre clavier
|
||||
advancements.webdisplays.upgrade.title=Plus qu'un écran
|
||||
advancements.webdisplays.upgrade.description=Installez votre première amélioration
|
||||
advancements.webdisplays.laser.title=Ne pas viser les yeux
|
||||
advancements.webdisplays.laser.description=Fabriquez un pointeur laser
|
||||
webdisplays.side.bottom=Bas
|
||||
webdisplays.side.top=Haut
|
||||
webdisplays.side.north=Nord
|
||||
webdisplays.side.south=Sud
|
||||
webdisplays.side.west=Ouest
|
||||
webdisplays.side.east=Est
|
||||
webdisplays.server.info=Tapez "help" pour obtenir de l'aide
|
||||
webdisplays.server.unknowncmd=Commande inconnue.
|
||||
webdisplays.server.error=Erreur interne. Vérifiez les logs.
|
||||
webdisplays.server.error2=Erreur interne %d. Vérifiez les logs.
|
||||
webdisplays.server.argerror=Argument non reconnu
|
||||
webdisplays.server.queryerr=Erreur de requête, essayez "reconnect".
|
||||
webdisplays.server.errowner=Seul le propriétaire peut faire cela.
|
||||
webdisplays.server.timeout=Le délai est dépaissé. Vérifiez les logs.
|
||||
webdisplays.server.ownername=Nom du propriétaire : %s
|
||||
webdisplays.server.owneruuid=UUID du propriétaire :
|
||||
webdisplays.server.quota=%s/%s utilisés
|
||||
webdisplays.server.fnamearg=Nom de fichier manquant
|
||||
webdisplays.server.nameerr=Nom de fichier invalide
|
||||
webdisplays.server.urlcopied=URL copié dans le presse-papier.
|
||||
webdisplays.server.notfound=Fichier introuvable
|
||||
webdisplays.server.upload.info=Choisissez un fichier
|
||||
webdisplays.server.upload.parent=[Dossier parent]
|
||||
webdisplays.server.upload.uploading=Mise en ligne...
|
||||
webdisplays.server.upload.done=Terminé !
|
||||
webdisplays.server.upload.exists=Erreur : le fichier existe
|
||||
webdisplays.server.upload.quota=Erreur : taille max atteinte
|
||||
webdisplays.server.help.help=Affiche ce texte
|
||||
webdisplays.server.help.clear=Efface l'écran
|
||||
webdisplays.server.help.exit=Quitte la console
|
||||
webdisplays.server.help.access=§kPas d'aide disponible
|
||||
webdisplays.server.help.owner=Affiche le proprio. de ce serveur
|
||||
webdisplays.server.help.quota=Affiche le quota de stockage
|
||||
webdisplays.server.help.ls=Liste les fichiers de ce serveur
|
||||
webdisplays.server.help.url=Copie l'URL d'un fichier
|
||||
webdisplays.server.help.upload=Ouvre l'assitant de mise en ligne
|
||||
webdisplays.server.help.rm=Supprime un fichier
|
||||
webdisplays.server.help.reconnect=Se reco. à Miniserv [DEBUG]
|
||||
151
src/main/resources/assets/webdisplays/lang/zh_cn.json
Normal file
151
src/main/resources/assets/webdisplays/lang/zh_cn.json
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
{
|
||||
"itemGroup.webdisplays": "§5内置网页浏览器",
|
||||
"block.webdisplays.screen": "网页屏幕方块",
|
||||
"block.webdisplays.peripheral": "外部设备",
|
||||
"block.webdisplays.kb_left": "键盘",
|
||||
"block.webdisplays.rctrl": "网页输入器",
|
||||
"block.webdisplays.ccinterface": "ComputerCraft接口",
|
||||
"block.webdisplays.cointerface": "OpenComputers接口",
|
||||
"block.webdisplays.redctrl": "红石控制器",
|
||||
"block.webdisplays.server": "服务器方块",
|
||||
"item.webdisplays.screencfg": "屏幕配置器",
|
||||
"item.webdisplays.ownerthief": "屏幕所有权给予器[管理员物品]",
|
||||
"item.webdisplays.linker": "连接工具",
|
||||
"item.webdisplays.craftcomp": "制作材料",
|
||||
"item.webdisplays.craftcomp_stonekey": "石头按钮",
|
||||
"item.webdisplays.craftcomp_upgrade": "空白升级组件",
|
||||
"item.webdisplays.craftcomp_peripheral": "外部设备材料",
|
||||
"item.webdisplays.craftcomp_batcell": "电池",
|
||||
"item.webdisplays.craftcomp_batpack": "电池组",
|
||||
"item.webdisplays.craftcomp_laserdiode": "650纳米激光二极管",
|
||||
"item.webdisplays.craftcomp_backlight": "屏幕背景",
|
||||
"item.webdisplays.craftcomp_extcard": "扩充卡片",
|
||||
"item.webdisplays.craftcomp_badextcard": "损坏的扩充卡片",
|
||||
"item.webdisplays.minepad": "掌上电脑",
|
||||
"item.webdisplays.minepad2": "第二代掌上电脑",
|
||||
"item.webdisplays.upgrade": "屏幕升级组件",
|
||||
"item.webdisplays.upgrade_lasermouse": "激光笔模块",
|
||||
"item.webdisplays.upgrade_redinput": "红石输入模块",
|
||||
"item.webdisplays.upgrade_redoutput": "红石输出模块",
|
||||
"item.webdisplays.upgrade_gps": "GPS模块",
|
||||
"item.webdisplays.laserpointer": "激光笔",
|
||||
"item.webdisplays.advicon": "进度图标",
|
||||
"item.webdisplays.advicon.wd": "内置网页浏览器",
|
||||
"item.webdisplays.advicon.brokenpad": "损坏的掌上电脑",
|
||||
"item.webdisplays.advicon.pigeon": "鸽子",
|
||||
"item.webdisplays.wiki": "点击\"F1\"来打开维基百科",
|
||||
"webdisplays.message.tooSmall": "这个屏幕太小了!最小尺寸是2x2.",
|
||||
"webdisplays.message.tooBig": "这个屏幕太大了!最大尺寸是%dx%d.",
|
||||
"webdisplays.message.invalid": "这个结构无效;你在看着坐标%s.",
|
||||
"webdisplays.message.turnOn": "你需要先打开这个屏幕!",
|
||||
"webdisplays.message.screenSet": "屏幕已设置!现在应将这个物品给新的拥有者...",
|
||||
"webdisplays.message.newOwner": "你现在是这个屏幕的拥有者!",
|
||||
"webdisplays.message.restrictions": "你不能做这件事 :(",
|
||||
"webdisplays.message.peripheral": "这不是一个外部设备!",
|
||||
"webdisplays.message.linked": "已连接!",
|
||||
"webdisplays.message.linkError": "连接失败 :( 请检查日志...",
|
||||
"webdisplays.message.notAScreen": "请先右击屏幕...",
|
||||
"webdisplays.message.screenSet2": "屏幕已设置!现在右击一个外部设备...",
|
||||
"webdisplays.message.chunkUnloaded": "放置在这个区块的屏幕未开启!",
|
||||
"webdisplays.message.notLinked": "这个外部设备还未连接.",
|
||||
"webdisplays.message.missingCC": "ComputerCraft不可用.",
|
||||
"webdisplays.message.missingOC": "OpenComputers不可用.",
|
||||
"webdisplays.message.upgradeError": "升级组件安装失败 :( 请检查日志...",
|
||||
"webdisplays.message.upgradeOk": "升级组件已安装!",
|
||||
"webdisplays.message.linkAbort": "连接器复位",
|
||||
"webdisplays.message.noMiniserv": "服务器方块在这个服务器不可用",
|
||||
"webdisplays.message.otDisabled": "屏幕所有权给予者在这个服务器不可用",
|
||||
"webdisplays.gui.screencfg.owner": "屏幕拥有者:",
|
||||
"webdisplays.gui.screencfg.friends": "朋友:",
|
||||
"webdisplays.gui.screencfg.permissions": "权限:",
|
||||
"webdisplays.gui.screencfg.seturl": "修改网址",
|
||||
"webdisplays.gui.screencfg.click": "点击和输入",
|
||||
"webdisplays.gui.screencfg.friendlist": "管理朋友",
|
||||
"webdisplays.gui.screencfg.otherrights": "管理其他人",
|
||||
"webdisplays.gui.screencfg.mupgrades": "安装升级组件和连接",
|
||||
"webdisplays.gui.screencfg.mres": "改变分辨率",
|
||||
"webdisplays.gui.screencfg.others": "其他人",
|
||||
"webdisplays.gui.screencfg.upgrades": "升级组件:",
|
||||
"webdisplays.gui.screencfg.resolution": "当前分辨率:",
|
||||
"webdisplays.gui.screencfg.setres": "设置分辨率",
|
||||
"webdisplays.gui.screencfg.rotation": "角度",
|
||||
"webdisplays.gui.screencfg.rot0": "0°",
|
||||
"webdisplays.gui.screencfg.rot90": "90°",
|
||||
"webdisplays.gui.screencfg.rot180": "180°",
|
||||
"webdisplays.gui.screencfg.rot270": "270°",
|
||||
"webdisplays.gui.screencfg.lockratio": "锁定分辨率比例",
|
||||
"webdisplays.linker.selectScreen": "右击一个屏幕",
|
||||
"webdisplays.linker.selectPeripheral": "右击一个外部设备",
|
||||
"webdisplays.linker.posInfo": "屏幕位置:%d %d %d",
|
||||
"webdisplays.linker.sideInfo": "地址:%s",
|
||||
"webdisplays.gui.seturl.url": "网址:",
|
||||
"webdisplays.gui.seturl.ok": "确定",
|
||||
"webdisplays.gui.seturl.cancel": "取消",
|
||||
"webdisplays.gui.seturl.shutdown": "停止",
|
||||
"webdisplays.minepad.turnon": "潜行并右击来打开",
|
||||
"webdisplays.minepad2.info": "不退款!",
|
||||
"webdisplays.extcard.cantcraft1": "你知道的还不够多.",
|
||||
"webdisplays.extcard.cantcraft2": "你不能制作这个物品.",
|
||||
"webdisplays.extcard.bad": "有人制作扩展卡片失败了",
|
||||
"webdisplays.gui.keyboard.hooked": "已连接至你的键盘.请按ESC离开界面.",
|
||||
"webdisplays.gui.keyboard.warning1": "警告!你输入的数据都将以纯文本形式发送到服务器.",
|
||||
"webdisplays.gui.keyboard.warning2": "这意味着任何人都可以知道你在输入什么.",
|
||||
"webdisplays.gui.keyboard.warning3": "永远都不要用这个键盘输入你的密码.",
|
||||
"webdisplays.gui.keyboard.gotcha": "被我耍到啦",
|
||||
"advancements.webdisplays.root.title": "内置网页浏览器",
|
||||
"advancements.webdisplays.root.description": "内置网页浏览器Mod",
|
||||
"advancements.webdisplays.screen.title": "互联网是...",
|
||||
"advancements.webdisplays.screen.description": "制作你第一个屏幕方块",
|
||||
"advancements.webdisplays.minepad.title": "这可是个革命",
|
||||
"advancements.webdisplays.minepad.description": "你得到了最新的科技:掌上电脑",
|
||||
"advancements.webdisplays.padbreak.title": "逆向工程",
|
||||
"advancements.webdisplays.padbreak.description": "这些东西易碎!不要为了得到升级组件材料而让掌上电脑从高空坠落",
|
||||
"advancements.webdisplays.minepad2.title": "鸽子",
|
||||
"advancements.webdisplays.minepad2.description": "制作第二代掌上电脑.看,我知道它有多贵,但这意味着它比任何东西都好,对吧?...对吧?",
|
||||
"advancements.webdisplays.linkperipheral.title": "这是无线的!",
|
||||
"advancements.webdisplays.linkperipheral.description": "连接外部设备到屏幕",
|
||||
"advancements.webdisplays.keyboardcat.title": "可恶的猫",
|
||||
"advancements.webdisplays.keyboardcat.description": "让一只猫踩过你的键盘",
|
||||
"advancements.webdisplays.upgrade.title": "不仅只是一个屏幕",
|
||||
"advancements.webdisplays.upgrade.description": "安装了你的第一个升级组件",
|
||||
"advancements.webdisplays.laser.title": "不要对着眼睛",
|
||||
"advancements.webdisplays.laser.description": "制作激光笔!",
|
||||
"webdisplays.side.bottom": "底部",
|
||||
"webdisplays.side.top": "顶部",
|
||||
"webdisplays.side.north": "北方",
|
||||
"webdisplays.side.south": "南方",
|
||||
"webdisplays.side.west": "西方",
|
||||
"webdisplays.side.east": "东方",
|
||||
"webdisplays.server.info": "如果你需要帮助请输入\"help\".",
|
||||
"webdisplays.server.unknowncmd": "未知指令.",
|
||||
"webdisplays.server.error": "内部错误.请检查日志.",
|
||||
"webdisplays.server.error2": "内部错误%d.请检查日志.",
|
||||
"webdisplays.server.argerror": "未识别的参数.",
|
||||
"webdisplays.server.queryerr": "查询错误,尝试输入\"reconnect\".",
|
||||
"webdisplays.server.errowner": "只有拥有者才可以访问.",
|
||||
"webdisplays.server.timeout": "查询超时.请检查日志.",
|
||||
"webdisplays.server.ownername": "拥有者名称:%s",
|
||||
"webdisplays.server.owneruuid": "拥有者UUID:",
|
||||
"webdisplays.server.quota": "%s/%s已使用",
|
||||
"webdisplays.server.fnamearg": "丢失文件名参数",
|
||||
"webdisplays.server.nameerr": "无效的文件名",
|
||||
"webdisplays.server.urlcopied": "复制网址到你的剪切板.",
|
||||
"webdisplays.server.notfound": "文件未找到",
|
||||
"webdisplays.server.upload.info": "选择一个文件来上传",
|
||||
"webdisplays.server.upload.parent": "[父目录]",
|
||||
"webdisplays.server.upload.uploading": "上传中...",
|
||||
"webdisplays.server.upload.done": "完成",
|
||||
"webdisplays.server.upload.exists": "错误:文件不存在",
|
||||
"webdisplays.server.upload.quota": "错误:文件过大",
|
||||
"webdisplays.server.help.help": "显示这段文本",
|
||||
"webdisplays.server.help.clear": "清空这个屏幕",
|
||||
"webdisplays.server.help.exit": "离开这个控制台",
|
||||
"webdisplays.server.help.access": "§k无帮助文件",
|
||||
"webdisplays.server.help.owner": "显示服务器的拥有者",
|
||||
"webdisplays.server.help.quota": "显示存储空间",
|
||||
"webdisplays.server.help.ls": "显示这个服务器的文件",
|
||||
"webdisplays.server.help.url": "复制一个文件网址到你的剪切板",
|
||||
"webdisplays.server.help.upload": "打开上传向导",
|
||||
"webdisplays.server.help.rm": "删除一个文件",
|
||||
"webdisplays.server.help.reconnect": "重新连接到服务器[调试中]"
|
||||
}
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
itemGroup.webdisplays=§5内置网页浏览器
|
||||
tile.webdisplays.screen.name=网页屏幕方块
|
||||
tile.webdisplays.peripheral.name=外部设备
|
||||
tile.webdisplays.peripheral.keyboard.name=键盘
|
||||
tile.webdisplays.peripheral.remotectrl.name=网页输入器
|
||||
tile.webdisplays.peripheral.ccinterface.name=ComputerCraft接口
|
||||
tile.webdisplays.peripheral.cointerface.name=OpenComputers接口
|
||||
tile.webdisplays.peripheral.redstonectrl.name=红石控制器
|
||||
tile.webdisplays.peripheral.server.name=服务器方块
|
||||
item.webdisplays.screencfg.name=屏幕配置器
|
||||
item.webdisplays.ownerthief.name=屏幕所有权给予器[管理员物品]
|
||||
item.webdisplays.linker.name=连接工具
|
||||
item.webdisplays.craftcomp.name=制作材料
|
||||
item.webdisplays.craftcomp.stonekey.name=石头按钮
|
||||
item.webdisplays.craftcomp.upgrade.name=空白升级组件
|
||||
item.webdisplays.craftcomp.peripheral.name=外部设备材料
|
||||
item.webdisplays.craftcomp.batcell.name=电池
|
||||
item.webdisplays.craftcomp.batpack.name=电池组
|
||||
item.webdisplays.craftcomp.laserdiode.name=650纳米激光二极管
|
||||
item.webdisplays.craftcomp.backlight.name=屏幕背景
|
||||
item.webdisplays.craftcomp.extcard.name=扩充卡片
|
||||
item.webdisplays.craftcomp.badextcard.name=损坏的扩充卡片
|
||||
item.webdisplays.minepad.name=掌上电脑
|
||||
item.webdisplays.minepad2.name=第二代掌上电脑
|
||||
item.webdisplays.upgrade.name=屏幕升级组件
|
||||
item.webdisplays.upgrade.lasermouse.name=激光笔模块
|
||||
item.webdisplays.upgrade.redinput.name=红石输入模块
|
||||
item.webdisplays.upgrade.redoutput.name=红石输出模块
|
||||
item.webdisplays.upgrade.gps.name=GPS模块
|
||||
item.webdisplays.laserpointer.name=激光笔
|
||||
item.webdisplays.advicon.name=进度图标
|
||||
item.webdisplays.advicon.wd.name=内置网页浏览器
|
||||
item.webdisplays.advicon.brokenpad.name=损坏的掌上电脑
|
||||
item.webdisplays.advicon.pigeon.name=鸽子
|
||||
item.webdisplays.wiki=点击"F1"来打开维基百科
|
||||
webdisplays.message.tooSmall=这个屏幕太小了!最小尺寸是2x2.
|
||||
webdisplays.message.tooBig=这个屏幕太大了!最大尺寸是%dx%d.
|
||||
webdisplays.message.invalid=这个结构无效;你在看着坐标%s.
|
||||
webdisplays.message.turnOn=你需要先打开这个屏幕!
|
||||
webdisplays.message.screenSet=屏幕已设置!现在应将这个物品给新的拥有者...
|
||||
webdisplays.message.newOwner=你现在是这个屏幕的拥有者!
|
||||
webdisplays.message.restrictions=你不能做这件事 :(
|
||||
webdisplays.message.peripheral=这不是一个外部设备!
|
||||
webdisplays.message.linked=已连接!
|
||||
webdisplays.message.linkError=连接失败 :( 请检查日志...
|
||||
webdisplays.message.notAScreen=请先右击屏幕...
|
||||
webdisplays.message.screenSet2=屏幕已设置!现在右击一个外部设备...
|
||||
webdisplays.message.chunkUnloaded=放置在这个区块的屏幕未开启!
|
||||
webdisplays.message.notLinked=这个外部设备还未连接.
|
||||
webdisplays.message.missingCC=ComputerCraft不可用.
|
||||
webdisplays.message.missingOC=OpenComputers不可用.
|
||||
webdisplays.message.upgradeError=升级组件安装失败 :( 请检查日志...
|
||||
webdisplays.message.upgradeOk=升级组件已安装!
|
||||
webdisplays.message.linkAbort=连接器复位
|
||||
webdisplays.message.noMiniserv=服务器方块在这个服务器不可用
|
||||
webdisplays.message.otDisabled=屏幕所有权给予者在这个服务器不可用
|
||||
webdisplays.gui.screencfg.owner=屏幕拥有者:
|
||||
webdisplays.gui.screencfg.friends=朋友:
|
||||
webdisplays.gui.screencfg.permissions=权限:
|
||||
webdisplays.gui.screencfg.seturl=修改网址
|
||||
webdisplays.gui.screencfg.click=点击和输入
|
||||
webdisplays.gui.screencfg.friendlist=管理朋友
|
||||
webdisplays.gui.screencfg.otherrights=管理其他人
|
||||
webdisplays.gui.screencfg.mupgrades=安装升级组件和连接
|
||||
webdisplays.gui.screencfg.mres=改变分辨率
|
||||
webdisplays.gui.screencfg.others=其他人
|
||||
webdisplays.gui.screencfg.upgrades=升级组件:
|
||||
webdisplays.gui.screencfg.resolution=当前分辨率:
|
||||
webdisplays.gui.screencfg.setres=设置分辨率
|
||||
webdisplays.gui.screencfg.rotation=角度
|
||||
webdisplays.gui.screencfg.rot0=0°
|
||||
webdisplays.gui.screencfg.rot90=90°
|
||||
webdisplays.gui.screencfg.rot180=180°
|
||||
webdisplays.gui.screencfg.rot270=270°
|
||||
webdisplays.gui.screencfg.lockratio=锁定分辨率比例
|
||||
webdisplays.linker.selectScreen=右击一个屏幕
|
||||
webdisplays.linker.selectPeripheral=右击一个外部设备
|
||||
webdisplays.linker.posInfo=屏幕位置:%d %d %d
|
||||
webdisplays.linker.sideInfo=地址:%s
|
||||
webdisplays.gui.seturl.url=网址:
|
||||
webdisplays.gui.seturl.ok=确定
|
||||
webdisplays.gui.seturl.cancel=取消
|
||||
webdisplays.gui.seturl.shutdown=停止
|
||||
webdisplays.minepad.turnon=潜行并右击来打开
|
||||
webdisplays.minepad2.info=不退款!
|
||||
webdisplays.extcard.cantcraft1=你知道的还不够多.
|
||||
webdisplays.extcard.cantcraft2=你不能制作这个物品.
|
||||
webdisplays.extcard.bad=有人制作扩展卡片失败了
|
||||
webdisplays.gui.keyboard.hooked=已连接至你的键盘.请按ESC离开界面.
|
||||
webdisplays.gui.keyboard.warning1=警告!你输入的数据都将以纯文本形式发送到服务器.
|
||||
webdisplays.gui.keyboard.warning2=这意味着任何人都可以知道你在输入什么.
|
||||
webdisplays.gui.keyboard.warning3=永远都不要用这个键盘输入你的密码.
|
||||
webdisplays.gui.keyboard.gotcha=被我耍到啦
|
||||
advancements.webdisplays.root.title=内置网页浏览器
|
||||
advancements.webdisplays.root.description=内置网页浏览器Mod
|
||||
advancements.webdisplays.screen.title=互联网是...
|
||||
advancements.webdisplays.screen.description=制作你第一个屏幕方块
|
||||
advancements.webdisplays.minepad.title=这可是个革命
|
||||
advancements.webdisplays.minepad.description=你得到了最新的科技:掌上电脑
|
||||
advancements.webdisplays.padbreak.title=逆向工程
|
||||
advancements.webdisplays.padbreak.description=这些东西易碎!不要为了得到升级组件材料而让掌上电脑从高空坠落
|
||||
advancements.webdisplays.minepad2.title=鸽子
|
||||
advancements.webdisplays.minepad2.description=制作第二代掌上电脑.看,我知道它有多贵,但这意味着它比任何东西都好,对吧?...对吧?
|
||||
advancements.webdisplays.linkperipheral.title=这是无线的!
|
||||
advancements.webdisplays.linkperipheral.description=连接外部设备到屏幕
|
||||
advancements.webdisplays.keyboardcat.title=可恶的猫
|
||||
advancements.webdisplays.keyboardcat.description=让一只猫踩过你的键盘
|
||||
advancements.webdisplays.upgrade.title=不仅只是一个屏幕
|
||||
advancements.webdisplays.upgrade.description=安装了你的第一个升级组件
|
||||
advancements.webdisplays.laser.title=不要对着眼睛
|
||||
advancements.webdisplays.laser.description=制作激光笔!
|
||||
webdisplays.side.bottom=底部
|
||||
webdisplays.side.top=顶部
|
||||
webdisplays.side.north=北方
|
||||
webdisplays.side.south=南方
|
||||
webdisplays.side.west=西方
|
||||
webdisplays.side.east=东方
|
||||
webdisplays.server.info=如果你需要帮助请输入"help".
|
||||
webdisplays.server.unknowncmd=未知指令.
|
||||
webdisplays.server.error=内部错误.请检查日志.
|
||||
webdisplays.server.error2=内部错误%d.请检查日志.
|
||||
webdisplays.server.argerror=未识别的参数.
|
||||
webdisplays.server.queryerr=查询错误,尝试输入"reconnect".
|
||||
webdisplays.server.errowner=只有拥有者才可以访问.
|
||||
webdisplays.server.timeout=查询超时.请检查日志.
|
||||
webdisplays.server.ownername=拥有者名称:%s
|
||||
webdisplays.server.owneruuid=拥有者UUID:
|
||||
webdisplays.server.quota=%s/%s已使用
|
||||
webdisplays.server.fnamearg=丢失文件名参数
|
||||
webdisplays.server.nameerr=无效的文件名
|
||||
webdisplays.server.urlcopied=复制网址到你的剪切板.
|
||||
webdisplays.server.notfound=文件未找到
|
||||
webdisplays.server.upload.info=选择一个文件来上传
|
||||
webdisplays.server.upload.parent=[父目录]
|
||||
webdisplays.server.upload.uploading=上传中...
|
||||
webdisplays.server.upload.done=完成
|
||||
webdisplays.server.upload.exists=错误:文件不存在
|
||||
webdisplays.server.upload.quota=错误:文件过大
|
||||
webdisplays.server.help.help=显示这段文本
|
||||
webdisplays.server.help.clear=清空这个屏幕
|
||||
webdisplays.server.help.exit=离开这个控制台
|
||||
webdisplays.server.help.access=§k无帮助文件
|
||||
webdisplays.server.help.owner=显示服务器的拥有者
|
||||
webdisplays.server.help.quota=显示存储空间
|
||||
webdisplays.server.help.ls=显示这个服务器的文件
|
||||
webdisplays.server.help.url=复制一个文件网址到你的剪切板
|
||||
webdisplays.server.help.upload=打开上传向导
|
||||
webdisplays.server.help.rm=删除一个文件
|
||||
webdisplays.server.help.reconnect=重新连接到服务器[调试中]
|
||||
Loading…
Reference in New Issue
Block a user