+ Added Chinese translation by sadreminderwindows
+ Added "Auto Volume" option to screens
This commit is contained in:
parent
e41b3845d2
commit
0f00d9112b
|
|
@ -64,6 +64,9 @@ public class SharedProxy {
|
||||||
public void screenUpdateRotationInGui(Vector3i pos, BlockSide side, Rotation rot) {
|
public void screenUpdateRotationInGui(Vector3i pos, BlockSide side, Rotation rot) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void screenUpdateAutoVolumeInGui(Vector3i pos, BlockSide side, boolean av) {
|
||||||
|
}
|
||||||
|
|
||||||
public void displaySetPadURLGui(String padURL) {
|
public void displaySetPadURLGui(String padURL) {
|
||||||
Log.error("Called SharedProxy.displaySetPadURLGui() on server side...");
|
Log.error("Called SharedProxy.displaySetPadURLGui() on server side...");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -225,6 +225,16 @@ public class ClientProxy extends SharedProxy implements IResourceManagerReloadLi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void screenUpdateAutoVolumeInGui(Vector3i pos, BlockSide side, boolean av) {
|
||||||
|
if(mc.currentScreen != null && mc.currentScreen instanceof GuiScreenConfig) {
|
||||||
|
GuiScreenConfig gsc = (GuiScreenConfig) mc.currentScreen;
|
||||||
|
|
||||||
|
if(gsc.isForBlock(pos.toBlock(), side))
|
||||||
|
gsc.updateAutoVolume(av);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void displaySetPadURLGui(String padURL) {
|
public void displaySetPadURLGui(String padURL) {
|
||||||
mc.displayGuiScreen(new GuiSetURL2(padURL));
|
mc.displayGuiScreen(new GuiSetURL2(padURL));
|
||||||
|
|
|
||||||
|
|
@ -109,6 +109,9 @@ public class GuiScreenConfig extends WDScreen {
|
||||||
@FillControl
|
@FillControl
|
||||||
private CheckBox cbLockRatio;
|
private CheckBox cbLockRatio;
|
||||||
|
|
||||||
|
@FillControl
|
||||||
|
private CheckBox cbAutoVolume;
|
||||||
|
|
||||||
private CheckBox[] friendBoxes;
|
private CheckBox[] friendBoxes;
|
||||||
private CheckBox[] otherBoxes;
|
private CheckBox[] otherBoxes;
|
||||||
|
|
||||||
|
|
@ -150,6 +153,7 @@ public class GuiScreenConfig extends WDScreen {
|
||||||
|
|
||||||
//Hopefully upgrades have been synchronized...
|
//Hopefully upgrades have been synchronized...
|
||||||
ugUpgrades.setUpgrades(scr.upgrades);
|
ugUpgrades.setUpgrades(scr.upgrades);
|
||||||
|
cbAutoVolume.setChecked(scr.autoVolume);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(owner == null)
|
if(owner == null)
|
||||||
|
|
@ -304,7 +308,8 @@ public class GuiScreenConfig extends WDScreen {
|
||||||
} catch(NumberFormatException ex) {
|
} catch(NumberFormatException ex) {
|
||||||
cbLockRatio.setChecked(false);
|
cbLockRatio.setChecked(false);
|
||||||
}
|
}
|
||||||
}
|
} else if(ev.getSource() == cbAutoVolume)
|
||||||
|
WebDisplays.NET_HANDLER.sendToServer(SMessageScreenCtrl.autoVol(tes, side, ev.isChecked()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GuiSubscribe
|
@GuiSubscribe
|
||||||
|
|
@ -457,6 +462,7 @@ public class GuiScreenConfig extends WDScreen {
|
||||||
|
|
||||||
flag = (myRights & ScreenRights.MANAGE_UPGRADES) == 0;
|
flag = (myRights & ScreenRights.MANAGE_UPGRADES) == 0;
|
||||||
ugUpgrades.setDisabled(flag);
|
ugUpgrades.setDisabled(flag);
|
||||||
|
cbAutoVolume.setDisabled(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateResolution(Vector2i res) {
|
public void updateResolution(Vector2i res) {
|
||||||
|
|
@ -471,6 +477,10 @@ public class GuiScreenConfig extends WDScreen {
|
||||||
updateRotationStr();
|
updateRotationStr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateAutoVolume(boolean av) {
|
||||||
|
cbAutoVolume.setChecked(av);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isForBlock(BlockPos bp, BlockSide side) {
|
public boolean isForBlock(BlockPos bp, BlockSide side) {
|
||||||
return bp.equals(tes.getPos()) && side == this.side;
|
return bp.equals(tes.getPos()) && side == this.side;
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import net.montoyo.wd.WebDisplays;
|
||||||
import net.montoyo.wd.client.gui.controls.Container;
|
import net.montoyo.wd.client.gui.controls.Container;
|
||||||
import net.montoyo.wd.client.gui.controls.Control;
|
import net.montoyo.wd.client.gui.controls.Control;
|
||||||
import net.montoyo.wd.client.gui.controls.Event;
|
import net.montoyo.wd.client.gui.controls.Event;
|
||||||
|
import net.montoyo.wd.client.gui.controls.List;
|
||||||
import net.montoyo.wd.client.gui.loading.FillControl;
|
import net.montoyo.wd.client.gui.loading.FillControl;
|
||||||
import net.montoyo.wd.client.gui.loading.GuiLoader;
|
import net.montoyo.wd.client.gui.loading.GuiLoader;
|
||||||
import net.montoyo.wd.client.gui.loading.JsonOWrapper;
|
import net.montoyo.wd.client.gui.loading.JsonOWrapper;
|
||||||
|
|
@ -342,6 +343,10 @@ public abstract class WDScreen extends GuiScreen {
|
||||||
renderToolTip(is, x, y); //Since it's protected...
|
renderToolTip(is, x, y); //Since it's protected...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void drawTooltip(java.util.List<String> lines, int x, int y) {
|
||||||
|
drawHoveringText(lines, x, y, fontRenderer); //This is also protected...
|
||||||
|
}
|
||||||
|
|
||||||
public void requirePostDraw(Control ctrl) {
|
public void requirePostDraw(Control ctrl) {
|
||||||
if(!postDrawList.contains(ctrl))
|
if(!postDrawList.contains(ctrl))
|
||||||
postDrawList.add(ctrl);
|
postDrawList.add(ctrl);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import net.minecraft.init.SoundEvents;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.montoyo.wd.client.gui.loading.JsonOWrapper;
|
import net.montoyo.wd.client.gui.loading.JsonOWrapper;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
public class CheckBox extends BasicControl {
|
public class CheckBox extends BasicControl {
|
||||||
|
|
||||||
private static final ResourceLocation texUnchecked = new ResourceLocation("webdisplays", "textures/gui/checkbox.png");
|
private static final ResourceLocation texUnchecked = new ResourceLocation("webdisplays", "textures/gui/checkbox.png");
|
||||||
|
|
@ -35,6 +37,7 @@ public class CheckBox extends BasicControl {
|
||||||
private String label;
|
private String label;
|
||||||
private int labelW;
|
private int labelW;
|
||||||
private boolean checked;
|
private boolean checked;
|
||||||
|
private java.util.List<String> tooltip;
|
||||||
|
|
||||||
public CheckBox() {
|
public CheckBox() {
|
||||||
label = "";
|
label = "";
|
||||||
|
|
@ -116,6 +119,18 @@ public class CheckBox extends BasicControl {
|
||||||
label = tr(json.getString("label", ""));
|
label = tr(json.getString("label", ""));
|
||||||
labelW = font.getStringWidth(label);
|
labelW = font.getStringWidth(label);
|
||||||
checked = json.getBool("checked", false);
|
checked = json.getBool("checked", false);
|
||||||
|
|
||||||
|
String tt = tr(json.getString("tooltip", ""));
|
||||||
|
if(!tt.isEmpty()) {
|
||||||
|
tooltip = Arrays.asList(tt.split("\\\\n"));
|
||||||
|
parent.requirePostDraw(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postDraw(int mouseX, int mouseY, float ptt) {
|
||||||
|
if(tooltip != null && !disabled && mouseX >= x && mouseX <= x + WIDTH + 2 + labelW && mouseY >= y && mouseY < y + HEIGHT)
|
||||||
|
parent.drawTooltip(tooltip, mouseX, mouseY);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ public abstract class ScreenRights {
|
||||||
public static final int CLICK = 2; //Click AND type
|
public static final int CLICK = 2; //Click AND type
|
||||||
public static final int MANAGE_FRIEND_LIST = 4;
|
public static final int MANAGE_FRIEND_LIST = 4;
|
||||||
public static final int MANAGE_OTHER_RIGHTS = 8;
|
public static final int MANAGE_OTHER_RIGHTS = 8;
|
||||||
public static final int MANAGE_UPGRADES = 16; //Manage upgrades AND peripherals
|
public static final int MANAGE_UPGRADES = 16; //Manage upgrades AND peripherals AND autoVolume
|
||||||
public static final int CHANGE_RESOLUTION = 32; //Change resolution AND rotation
|
public static final int CHANGE_RESOLUTION = 32; //Change resolution AND rotation
|
||||||
|
|
||||||
public static final int NONE = 0;
|
public static final int NONE = 0;
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ public class TileEntityScreen extends TileEntity {
|
||||||
public EntityPlayer laserUser;
|
public EntityPlayer laserUser;
|
||||||
public final Vector2i lastMousePos = new Vector2i();
|
public final Vector2i lastMousePos = new Vector2i();
|
||||||
public NibbleArray redstoneStatus; //null on client
|
public NibbleArray redstoneStatus; //null on client
|
||||||
|
public boolean autoVolume = true;
|
||||||
|
|
||||||
public static Screen deserialize(NBTTagCompound tag) {
|
public static Screen deserialize(NBTTagCompound tag) {
|
||||||
Screen ret = new Screen();
|
Screen ret = new Screen();
|
||||||
|
|
@ -104,6 +105,9 @@ public class TileEntityScreen extends TileEntity {
|
||||||
for(int i = 0; i < upgrades.tagCount(); i++)
|
for(int i = 0; i < upgrades.tagCount(); i++)
|
||||||
ret.upgrades.add(new ItemStack(upgrades.getCompoundTagAt(i)));
|
ret.upgrades.add(new ItemStack(upgrades.getCompoundTagAt(i)));
|
||||||
|
|
||||||
|
if(tag.hasKey("AutoVolume"))
|
||||||
|
ret.autoVolume = tag.getBoolean("AutoVolume");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -142,6 +146,7 @@ public class TileEntityScreen extends TileEntity {
|
||||||
list.appendTag(is.writeToNBT(new NBTTagCompound()));
|
list.appendTag(is.writeToNBT(new NBTTagCompound()));
|
||||||
|
|
||||||
tag.setTag("Upgrades", list);
|
tag.setTag("Upgrades", list);
|
||||||
|
tag.setBoolean("AutoVolume", autoVolume);
|
||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -644,7 +649,7 @@ public class TileEntityScreen extends TileEntity {
|
||||||
int fracPart = 0;
|
int fracPart = 0;
|
||||||
|
|
||||||
for(Screen scr: screens) {
|
for(Screen scr: screens) {
|
||||||
if(scr.videoType != null && scr.browser != null && !scr.browser.isPageLoading()) {
|
if(scr.autoVolume && scr.videoType != null && scr.browser != null && !scr.browser.isPageLoading()) {
|
||||||
if(needsComputation) {
|
if(needsComputation) {
|
||||||
float dist = (float) Math.sqrt(d);
|
float dist = (float) Math.sqrt(d);
|
||||||
float vol;
|
float vol;
|
||||||
|
|
@ -1035,6 +1040,23 @@ public class TileEntityScreen extends TileEntity {
|
||||||
WebDisplays.NET_HANDLER.sendToAllAround(CMessageScreenUpdate.js(this, side, code), point());
|
WebDisplays.NET_HANDLER.sendToAllAround(CMessageScreenUpdate.js(this, side, code), point());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAutoVolume(BlockSide side, boolean av) {
|
||||||
|
Screen scr = getScreen(side);
|
||||||
|
if(scr == null) {
|
||||||
|
Log.error("Trying to toggle auto-volume on invalid screen (side %s)", side.toString());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
scr.autoVolume = av;
|
||||||
|
|
||||||
|
if(world.isRemote)
|
||||||
|
WebDisplays.PROXY.screenUpdateAutoVolumeInGui(new Vector3i(pos), side, av);
|
||||||
|
else {
|
||||||
|
WebDisplays.NET_HANDLER.sendToAllAround(CMessageScreenUpdate.autoVolume(this, side, av), point());
|
||||||
|
markDirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldRefresh(World world, BlockPos pos, @Nonnull IBlockState oldState, @Nonnull IBlockState newState) {
|
public boolean shouldRefresh(World world, BlockPos pos, @Nonnull IBlockState oldState, @Nonnull IBlockState newState) {
|
||||||
if(oldState.getBlock() != WebDisplays.INSTANCE.blockScreen || newState.getBlock() != WebDisplays.INSTANCE.blockScreen)
|
if(oldState.getBlock() != WebDisplays.INSTANCE.blockScreen || newState.getBlock() != WebDisplays.INSTANCE.blockScreen)
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ public class CMessageScreenUpdate implements IMessage, Runnable {
|
||||||
public static final int UPDATE_OWNER = 7;
|
public static final int UPDATE_OWNER = 7;
|
||||||
public static final int UPDATE_ROTATION = 8;
|
public static final int UPDATE_ROTATION = 8;
|
||||||
public static final int UPDATE_RUN_JS = 9;
|
public static final int UPDATE_RUN_JS = 9;
|
||||||
|
public static final int UPDATE_AUTO_VOL = 10;
|
||||||
|
|
||||||
public static final int MOUSE_CLICK = 0;
|
public static final int MOUSE_CLICK = 0;
|
||||||
public static final int MOUSE_UP = 1;
|
public static final int MOUSE_UP = 1;
|
||||||
|
|
@ -48,6 +49,7 @@ public class CMessageScreenUpdate implements IMessage, Runnable {
|
||||||
private int redstoneLevel;
|
private int redstoneLevel;
|
||||||
private NameUUIDPair owner;
|
private NameUUIDPair owner;
|
||||||
private Rotation rotation;
|
private Rotation rotation;
|
||||||
|
private boolean autoVolume;
|
||||||
|
|
||||||
public CMessageScreenUpdate() {
|
public CMessageScreenUpdate() {
|
||||||
}
|
}
|
||||||
|
|
@ -155,6 +157,16 @@ public class CMessageScreenUpdate implements IMessage, Runnable {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static CMessageScreenUpdate autoVolume(TileEntityScreen tes, BlockSide side, boolean av) {
|
||||||
|
CMessageScreenUpdate ret = new CMessageScreenUpdate();
|
||||||
|
ret.pos = new Vector3i(tes.getPos());
|
||||||
|
ret.side = side;
|
||||||
|
ret.action = UPDATE_AUTO_VOL;
|
||||||
|
ret.autoVolume = av;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fromBytes(ByteBuf buf) {
|
public void fromBytes(ByteBuf buf) {
|
||||||
pos = new Vector3i(buf);
|
pos = new Vector3i(buf);
|
||||||
|
|
@ -182,6 +194,8 @@ public class CMessageScreenUpdate implements IMessage, Runnable {
|
||||||
owner = new NameUUIDPair(buf);
|
owner = new NameUUIDPair(buf);
|
||||||
else if(action == UPDATE_ROTATION)
|
else if(action == UPDATE_ROTATION)
|
||||||
rotation = Rotation.values()[buf.readByte() & 3];
|
rotation = Rotation.values()[buf.readByte() & 3];
|
||||||
|
else if(action == UPDATE_AUTO_VOL)
|
||||||
|
autoVolume = buf.readBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -211,6 +225,8 @@ public class CMessageScreenUpdate implements IMessage, Runnable {
|
||||||
owner.writeTo(buf);
|
owner.writeTo(buf);
|
||||||
else if(action == UPDATE_ROTATION)
|
else if(action == UPDATE_ROTATION)
|
||||||
buf.writeByte(rotation.ordinal());
|
buf.writeByte(rotation.ordinal());
|
||||||
|
else if(action == UPDATE_AUTO_VOL)
|
||||||
|
buf.writeBoolean(autoVolume);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -251,6 +267,8 @@ public class CMessageScreenUpdate implements IMessage, Runnable {
|
||||||
scr.owner = owner;
|
scr.owner = owner;
|
||||||
} else if(action == UPDATE_ROTATION)
|
} else if(action == UPDATE_ROTATION)
|
||||||
tes.setRotation(side, rotation);
|
tes.setRotation(side, rotation);
|
||||||
|
else if(action == UPDATE_AUTO_VOL)
|
||||||
|
tes.setAutoVolume(side, autoVolume);
|
||||||
else
|
else
|
||||||
Log.warning("Caught invalid CMessageScreenUpdate with action ID %d", action);
|
Log.warning("Caught invalid CMessageScreenUpdate with action ID %d", action);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ public class SMessageScreenCtrl implements IMessage, Runnable {
|
||||||
public static final int CTRL_JS_REQUEST = 11;
|
public static final int CTRL_JS_REQUEST = 11;
|
||||||
public static final int CTRL_SET_ROTATION = 12;
|
public static final int CTRL_SET_ROTATION = 12;
|
||||||
public static final int CTRL_SET_URL_REMOTE = 13;
|
public static final int CTRL_SET_URL_REMOTE = 13;
|
||||||
|
public static final int CTRL_SET_AUTO_VOL = 14;
|
||||||
|
|
||||||
private int ctrl;
|
private int ctrl;
|
||||||
private int dim;
|
private int dim;
|
||||||
|
|
@ -64,6 +65,7 @@ public class SMessageScreenCtrl implements IMessage, Runnable {
|
||||||
private Object[] jsReqData;
|
private Object[] jsReqData;
|
||||||
private Rotation rotation;
|
private Rotation rotation;
|
||||||
private Vector3i remoteLoc;
|
private Vector3i remoteLoc;
|
||||||
|
private boolean autoVol;
|
||||||
|
|
||||||
public SMessageScreenCtrl() {
|
public SMessageScreenCtrl() {
|
||||||
}
|
}
|
||||||
|
|
@ -164,6 +166,17 @@ public class SMessageScreenCtrl implements IMessage, Runnable {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SMessageScreenCtrl autoVol(TileEntityScreen tes, BlockSide side, boolean av) {
|
||||||
|
SMessageScreenCtrl ret = new SMessageScreenCtrl();
|
||||||
|
ret.ctrl = CTRL_SET_AUTO_VOL;
|
||||||
|
ret.pos = new Vector3i(tes.getPos());
|
||||||
|
ret.dim = tes.getWorld().provider.getDimension();
|
||||||
|
ret.side = side;
|
||||||
|
ret.autoVol = av;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean isVec2Ctrl(int msg) {
|
private static boolean isVec2Ctrl(int msg) {
|
||||||
return msg == CTRL_SET_RESOLUTION || msg == CTRL_LASER_DOWN || msg == CTRL_LASER_MOVE;
|
return msg == CTRL_SET_RESOLUTION || msg == CTRL_LASER_DOWN || msg == CTRL_LASER_MOVE;
|
||||||
}
|
}
|
||||||
|
|
@ -204,7 +217,8 @@ public class SMessageScreenCtrl implements IMessage, Runnable {
|
||||||
else if(ctrl == CTRL_SET_URL_REMOTE) {
|
else if(ctrl == CTRL_SET_URL_REMOTE) {
|
||||||
url = ByteBufUtils.readUTF8String(buf);
|
url = ByteBufUtils.readUTF8String(buf);
|
||||||
remoteLoc = new Vector3i(buf);
|
remoteLoc = new Vector3i(buf);
|
||||||
}
|
} else if(ctrl == CTRL_SET_AUTO_VOL)
|
||||||
|
autoVol = buf.readBoolean();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -241,7 +255,8 @@ public class SMessageScreenCtrl implements IMessage, Runnable {
|
||||||
else if(ctrl == CTRL_SET_URL_REMOTE) {
|
else if(ctrl == CTRL_SET_URL_REMOTE) {
|
||||||
ByteBufUtils.writeUTF8String(buf, url);
|
ByteBufUtils.writeUTF8String(buf, url);
|
||||||
remoteLoc.writeTo(buf);
|
remoteLoc.writeTo(buf);
|
||||||
}
|
} else if(ctrl == CTRL_SET_AUTO_VOL)
|
||||||
|
buf.writeBoolean(autoVol);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -336,6 +351,9 @@ public class SMessageScreenCtrl implements IMessage, Runnable {
|
||||||
} else if(ctrl == CTRL_SET_ROTATION) {
|
} else if(ctrl == CTRL_SET_ROTATION) {
|
||||||
checkPermission(tes, ScreenRights.CHANGE_RESOLUTION);
|
checkPermission(tes, ScreenRights.CHANGE_RESOLUTION);
|
||||||
tes.setRotation(side, rotation);
|
tes.setRotation(side, rotation);
|
||||||
|
} else if(ctrl == CTRL_SET_AUTO_VOL) {
|
||||||
|
checkPermission(tes, ScreenRights.MANAGE_UPGRADES); //because why not
|
||||||
|
tes.setAutoVolume(side, autoVol);
|
||||||
} else
|
} else
|
||||||
Log.warning("Caught SMessageScreenCtrl with invalid control ID %d from player %s (UUID %s)", ctrl, player.getName(), player.getGameProfile().getId().toString());
|
Log.warning("Caught SMessageScreenCtrl with invalid control ID %d from player %s (UUID %s)", ctrl, player.getName(), player.getGameProfile().getId().toString());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -200,6 +200,14 @@
|
||||||
"x": 260,
|
"x": 260,
|
||||||
"y": 129,
|
"y": 129,
|
||||||
"width": 84
|
"width": 84
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "CheckBox",
|
||||||
|
"name": "cbAutoVolume",
|
||||||
|
"x": 257,
|
||||||
|
"y": 150,
|
||||||
|
"label": "$webdisplays.gui.screencfg.autovol",
|
||||||
|
"tooltip": "$webdisplays.gui.screencfg.avwarning"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"center": true
|
"center": true
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,8 @@ webdisplays.gui.screencfg.rot90=90°
|
||||||
webdisplays.gui.screencfg.rot180=180°
|
webdisplays.gui.screencfg.rot180=180°
|
||||||
webdisplays.gui.screencfg.rot270=270°
|
webdisplays.gui.screencfg.rot270=270°
|
||||||
webdisplays.gui.screencfg.lockratio=Lock ratio
|
webdisplays.gui.screencfg.lockratio=Lock ratio
|
||||||
|
webdisplays.gui.screencfg.autovol=Auto Volume
|
||||||
|
webdisplays.gui.screencfg.avwarning=§cCareful!\nAuto volume only works on YouTube\nvideos, and if enabled in client config!
|
||||||
webdisplays.linker.selectScreen=Right click on a screen
|
webdisplays.linker.selectScreen=Right click on a screen
|
||||||
webdisplays.linker.selectPeripheral=Right click on a peripheral
|
webdisplays.linker.selectPeripheral=Right click on a peripheral
|
||||||
webdisplays.linker.posInfo=Screen pos: %d %d %d
|
webdisplays.linker.posInfo=Screen pos: %d %d %d
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,8 @@ webdisplays.gui.screencfg.rot90=90°
|
||||||
webdisplays.gui.screencfg.rot180=180°
|
webdisplays.gui.screencfg.rot180=180°
|
||||||
webdisplays.gui.screencfg.rot270=270°
|
webdisplays.gui.screencfg.rot270=270°
|
||||||
webdisplays.gui.screencfg.lockratio=Verrouiller le ratio
|
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.selectScreen=Cliquez droit sur un écran
|
||||||
webdisplays.linker.selectPeripheral=Cliquez droit sur un périphérique
|
webdisplays.linker.selectPeripheral=Cliquez droit sur un périphérique
|
||||||
webdisplays.linker.posInfo=Pos. écran : %d %d %d
|
webdisplays.linker.posInfo=Pos. écran : %d %d %d
|
||||||
|
|
|
||||||
149
src/main/resources/assets/webdisplays/lang/zh_cn.lang
Normal file
149
src/main/resources/assets/webdisplays/lang/zh_cn.lang
Normal file
|
|
@ -0,0 +1,149 @@
|
||||||
|
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=重新连接到服务器[调试中]
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
"url": "https://montoyo.net/wd2.php",
|
"url": "https://montoyo.net/wd2.php",
|
||||||
"updateUrl": "",
|
"updateUrl": "",
|
||||||
"authorList": [ "montoyo" ],
|
"authorList": [ "montoyo" ],
|
||||||
"credits": "",
|
"credits": "Thanks to sadreminderwindows for the Chinese translation",
|
||||||
"logoFile": "",
|
"logoFile": "",
|
||||||
"screenshots": [],
|
"screenshots": [],
|
||||||
"dependencies": []
|
"dependencies": []
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user