mirror of
https://github.com/GTNewHorizons/EnderIO.git
synced 2026-10-25 20:22:23 +00:00
Travel Anchor improvements (#62)
* No penalty for failed teleportation * Allow Travel Anchors to be hidden * Fix protected mode not working * Fix visibility not written to disk
This commit is contained in:
1 parent
f4f2b857b7
commit
efc8eba67b
14 files changed
+185
-48
No files matched your search
+1
-1
@@ -13,7 +13,7 @@ dependencies {
|
||||
compileOnly('com.github.GTNewHorizons:Baubles:1.0.1.14:dev') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:Railcraft:9.13.6:api') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:StorageDrawers:1.11.13-GTNH:api') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:Chisel:2.10.8-GTNH:dev') {transitive = false}
|
||||
compile('com.github.GTNewHorizons:Chisel:2.10.8-GTNH:dev') {transitive = false}
|
||||
compileOnly('com.github.GTNewHorizons:OpenComputers:1.7.5.25-GTNH:api') {transitive = false}
|
||||
compileOnly('curse.maven:minefactory-reloaded-66672:2366150') // https://www.curseforge.com/minecraft/mc-mods/minefactory-reloaded/files/2366150
|
||||
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
|
||||
|
||||
@@ -12,7 +12,6 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.enderio.core.common.Lang;
|
||||
import com.enderio.core.common.network.MessageTileNBT;
|
||||
import com.enderio.core.common.util.EntityUtil;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
@@ -591,7 +590,6 @@ public class EnderIO {
|
||||
|
||||
instance = this;
|
||||
|
||||
PacketHandler.INSTANCE.registerMessage(MessageTileNBT.class, MessageTileNBT.class, PacketHandler.nextID(), Side.SERVER);
|
||||
PacketHandler.INSTANCE.registerMessage(PacketRedstoneMode.class, PacketRedstoneMode.class, PacketHandler.nextID(), Side.SERVER);
|
||||
|
||||
NetworkRegistry.INSTANCE.registerGuiHandler(this, guiHandler);
|
||||
|
||||
@@ -13,7 +13,7 @@ import crazypants.util.UserIdent;
|
||||
|
||||
public interface ITravelAccessable {
|
||||
|
||||
public enum AccessMode {
|
||||
enum AccessMode {
|
||||
PUBLIC,
|
||||
PRIVATE,
|
||||
PROTECTED
|
||||
@@ -53,8 +53,22 @@ public interface ITravelAccessable {
|
||||
|
||||
void setPlacedBy(EntityPlayer player);
|
||||
|
||||
public void clearAuthorisedUsers();
|
||||
void clearAuthorisedUsers();
|
||||
|
||||
public BlockCoord getLocation();
|
||||
BlockCoord getLocation();
|
||||
|
||||
/**
|
||||
* Is this block a travel target for the staff or a travel anchor?
|
||||
*/
|
||||
default boolean isTravelSource() {
|
||||
return true;
|
||||
}
|
||||
|
||||
default boolean isVisible() {
|
||||
return true;
|
||||
}
|
||||
|
||||
default void setVisible(boolean visible) {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -123,7 +123,10 @@ public enum IconEIO implements IWidgetIcon {
|
||||
SORT_SIZE_DOWN(224, 240, SORT_DIR_DOWN),
|
||||
SORT_SIZE_UP(224, 240, SORT_DIR_UP),
|
||||
SORT_MOD_DOWN(240, 240, SORT_DIR_DOWN),
|
||||
SORT_MOD_UP(240, 240, SORT_DIR_UP);
|
||||
SORT_MOD_UP(240, 240, SORT_DIR_UP),
|
||||
|
||||
VISIBLE_NO(224, 160),
|
||||
VISIBLE_YES(240, 160);
|
||||
|
||||
// Texture size is actually 512 but everything is aligned to a 256 grid
|
||||
private static final int TEX_SIZE = 256;
|
||||
|
||||
@@ -2,6 +2,9 @@ package crazypants.enderio.teleport;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import com.enderio.core.client.gui.button.ToggleButton;
|
||||
import crazypants.enderio.gui.IconEIO;
|
||||
import crazypants.enderio.teleport.packet.PacketVisibility;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
@@ -29,18 +32,23 @@ public class GuiTravelAccessable extends GuiContainerBaseEIO {
|
||||
private static final int ID_PUBLIC = 0;
|
||||
private static final int ID_PRIVATE = 1;
|
||||
private static final int ID_PROTECTED = 2;
|
||||
private static final int ID_VISIBLE = -1;
|
||||
|
||||
private CheckBox publicCB;
|
||||
private CheckBox privateCB;
|
||||
private CheckBox protectedCB;
|
||||
private final CheckBox publicCB;
|
||||
private final CheckBox privateCB;
|
||||
private final CheckBox protectedCB;
|
||||
private final ToggleButton visibleCB;
|
||||
|
||||
private TextFieldEnder tf;
|
||||
private final TextFieldEnder tf;
|
||||
|
||||
private String publicStr;
|
||||
private String privateStr;
|
||||
private String protectedStr;
|
||||
private final String publicStr;
|
||||
private final String privateStr;
|
||||
private final String protectedStr;
|
||||
private final String visibleStr;
|
||||
private final String visibleDesc1Str;
|
||||
private final String visibleDesc2Str;
|
||||
|
||||
private ITravelAccessable te;
|
||||
private final ITravelAccessable te;
|
||||
private int col0x;
|
||||
private int col1x;
|
||||
private int col2x;
|
||||
@@ -59,6 +67,9 @@ public class GuiTravelAccessable extends GuiContainerBaseEIO {
|
||||
publicStr = EnderIO.lang.localize("gui.travelAccessable.public");
|
||||
privateStr = EnderIO.lang.localize("gui.travelAccessable.private");
|
||||
protectedStr = EnderIO.lang.localize("gui.travelAccessable.protected");
|
||||
visibleStr = EnderIO.lang.localize("gui.travelAccessable.tooltip.visible");
|
||||
visibleDesc1Str = EnderIO.lang.localize("gui.travelAccessable.tooltip.visible.desc1");
|
||||
visibleDesc2Str = EnderIO.lang.localize("gui.travelAccessable.tooltip.visible.desc2");
|
||||
|
||||
FontRenderer fr = Minecraft.getMinecraft().fontRenderer;
|
||||
|
||||
@@ -84,6 +95,10 @@ public class GuiTravelAccessable extends GuiContainerBaseEIO {
|
||||
publicCB = new CheckBox(this, ID_PUBLIC, x, y);
|
||||
publicCB.setSelected(te.getAccessMode() == AccessMode.PUBLIC);
|
||||
|
||||
visibleCB = new ToggleButton(this, ID_VISIBLE, 150, 10, IconEIO.VISIBLE_NO, IconEIO.VISIBLE_YES);
|
||||
visibleCB.setSelected(te.isVisible());
|
||||
visibleCB.setToolTip(visibleStr, visibleDesc1Str, visibleDesc2Str);
|
||||
|
||||
ySize = 185;
|
||||
|
||||
textFields.add(tf);
|
||||
@@ -91,16 +106,24 @@ public class GuiTravelAccessable extends GuiContainerBaseEIO {
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton b) {
|
||||
privateCB.setSelected(b.id == ID_PRIVATE);
|
||||
protectedCB.setSelected(b.id == ID_PROTECTED);
|
||||
publicCB.setSelected(b.id == ID_PUBLIC);
|
||||
if (b.id >= 0) {
|
||||
privateCB.setSelected(b.id == ID_PRIVATE);
|
||||
protectedCB.setSelected(b.id == ID_PROTECTED);
|
||||
publicCB.setSelected(b.id == ID_PUBLIC);
|
||||
|
||||
AccessMode curMode = b.id == ID_PRIVATE ? AccessMode.PRIVATE : b.id == ID_PROTECTED ? AccessMode.PROTECTED : AccessMode.PUBLIC;
|
||||
te.setAccessMode(curMode);
|
||||
AccessMode curMode = b.id == ID_PRIVATE ? AccessMode.PRIVATE : b.id == ID_PROTECTED ? AccessMode.PROTECTED : AccessMode.PUBLIC;
|
||||
te.setAccessMode(curMode);
|
||||
BlockCoord bc = te.getLocation();
|
||||
PacketAccessMode p = new PacketAccessMode(bc.x, bc.y, bc.z, curMode);
|
||||
PacketHandler.INSTANCE.sendToServer(p);
|
||||
} else if (b == visibleCB) {
|
||||
boolean visible = visibleCB.isSelected();
|
||||
te.setVisible(visible);
|
||||
BlockCoord bc = te.getLocation();
|
||||
PacketVisibility p = new PacketVisibility(bc.x, bc.y, bc.z, visible);
|
||||
PacketHandler.INSTANCE.sendToServer(p);
|
||||
}
|
||||
|
||||
BlockCoord bc = te.getLocation();
|
||||
PacketAccessMode p = new PacketAccessMode(bc.x, bc.y, bc.z, curMode);
|
||||
PacketHandler.INSTANCE.sendToServer(p);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -112,6 +135,7 @@ public class GuiTravelAccessable extends GuiContainerBaseEIO {
|
||||
publicCB.onGuiInit();
|
||||
privateCB.onGuiInit();
|
||||
protectedCB.onGuiInit();
|
||||
visibleCB.onGuiInit();
|
||||
|
||||
tf.setMaxStringLength(32);
|
||||
tf.setFocused(true);
|
||||
|
||||
@@ -5,19 +5,15 @@ import java.awt.Color;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.enderio.core.client.render.ColorUtil;
|
||||
import com.enderio.core.client.render.RenderUtil;
|
||||
import com.enderio.core.common.network.MessageTileNBT;
|
||||
|
||||
import crazypants.enderio.EnderIO;
|
||||
import crazypants.enderio.api.teleport.ITravelAccessable;
|
||||
import crazypants.enderio.gui.GuiContainerBaseEIO;
|
||||
import crazypants.enderio.network.PacketHandler;
|
||||
|
||||
public class GuiTravelAuth extends GuiContainerBaseEIO {
|
||||
|
||||
@@ -51,9 +47,6 @@ public class GuiTravelAuth extends GuiContainerBaseEIO {
|
||||
protected void actionPerformed(GuiButton par1GuiButton) {
|
||||
ContainerTravelAuth poo = (ContainerTravelAuth) inventorySlots;
|
||||
if(ta.authoriseUser(player, poo.getInv().getInventory())) {
|
||||
TileEntity te = ((TileEntity) ta);
|
||||
PacketHandler.INSTANCE.sendToServer(new MessageTileNBT(te));
|
||||
|
||||
this.mc.displayGuiScreen((GuiScreen) null);
|
||||
this.mc.setIngameFocus();
|
||||
} else {
|
||||
|
||||
@@ -63,7 +63,7 @@ public class TravelController {
|
||||
|
||||
private int delayTimer = 0;
|
||||
|
||||
private int timer = Config.travelAnchorCooldown;
|
||||
private final int timer = Config.travelAnchorCooldown;
|
||||
|
||||
private boolean tempJump;
|
||||
|
||||
@@ -307,23 +307,25 @@ public class TravelController {
|
||||
if((input.jump && !wasJumping && onBlock && selectedCoord != null && delayTimer == 0)
|
||||
|| (input.sneak && !wasSneaking && onBlock && selectedCoord != null && delayTimer == 0 && Config.travelAnchorSneak)) {
|
||||
|
||||
onInput(player);
|
||||
delayTimer = timer;
|
||||
if (onInput(player)) {
|
||||
delayTimer = timer;
|
||||
}
|
||||
}
|
||||
// If there is no selected coordinate and the input is jump, go up
|
||||
if(input.jump && !wasJumping && onBlock && selectedCoord == null && delayTimer == 0) {
|
||||
|
||||
updateVerticalTarget(player, 1);
|
||||
onInput(player);
|
||||
delayTimer = timer;
|
||||
|
||||
if (onInput(player)) {
|
||||
delayTimer = timer;
|
||||
}
|
||||
}
|
||||
|
||||
// If there is no selected coordinate and the input is sneak, go down
|
||||
if(input.sneak && !wasSneaking && onBlock && selectedCoord == null && delayTimer == 0) {
|
||||
updateVerticalTarget(player, -1);
|
||||
onInput(player);
|
||||
delayTimer = timer;
|
||||
if (onInput(player)) {
|
||||
delayTimer = timer;
|
||||
}
|
||||
}
|
||||
|
||||
if(delayTimer != 0) {
|
||||
@@ -604,12 +606,12 @@ public class TravelController {
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private void onInput(EntityClientPlayerMP player) {
|
||||
private boolean onInput(EntityClientPlayerMP player) {
|
||||
|
||||
MovementInput input = player.movementInput;
|
||||
BlockCoord target = TravelController.instance.selectedCoord;
|
||||
if(target == null) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
TileEntity te = player.worldObj.getTileEntity(target.x, target.y, target.z);
|
||||
@@ -618,12 +620,13 @@ public class TravelController {
|
||||
if(ta.getRequiresPassword(player)) {
|
||||
PacketOpenAuthGui p = new PacketOpenAuthGui(target.x, target.y, target.z);
|
||||
PacketHandler.INSTANCE.sendToServer(p);
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(isTargetEnderIO()) {
|
||||
openEnderIO(null, player.worldObj, player);
|
||||
return true;
|
||||
} else if(Config.travelAnchorEnabled && travelToSelectedTarget(player, TravelSource.BLOCK, false)) {
|
||||
input.jump = false;
|
||||
try {
|
||||
@@ -631,8 +634,9 @@ public class TravelController {
|
||||
} catch (Exception e) {
|
||||
//ignore
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public double getScaleForCandidate(Vector3d loc) {
|
||||
@@ -720,8 +724,11 @@ public class TravelController {
|
||||
int x = MathHelper.floor_double(player.posX);
|
||||
int y = MathHelper.floor_double(player.boundingBox.minY) - 1;
|
||||
int z = MathHelper.floor_double(player.posZ);
|
||||
if(world.getBlock(x, y, z) == EnderIO.blockTravelPlatform) {
|
||||
return new BlockCoord(x, y, z);
|
||||
TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if(tileEntity instanceof ITravelAccessable) {
|
||||
if (((ITravelAccessable) tileEntity).isTravelSource()) {
|
||||
return new BlockCoord(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -2,6 +2,7 @@ package crazypants.enderio.teleport.anchor;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import crazypants.enderio.teleport.packet.PacketVisibility;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.ITileEntityProvider;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
@@ -62,6 +63,7 @@ public class BlockTravelAnchor extends BlockEio implements IGuiHandler, ITileEnt
|
||||
PacketHandler.INSTANCE.registerMessage(PacketDrainStaff.class, PacketDrainStaff.class, PacketHandler.nextID(), Side.SERVER);
|
||||
PacketHandler.INSTANCE.registerMessage(PacketOpenAuthGui.class, PacketOpenAuthGui.class, PacketHandler.nextID(), Side.SERVER);
|
||||
PacketHandler.INSTANCE.registerMessage(PacketPassword.Handler.class, PacketPassword.class, PacketHandler.nextID(), Side.SERVER);
|
||||
PacketHandler.INSTANCE.registerMessage(PacketVisibility.class, PacketVisibility.class, PacketHandler.nextID(), Side.SERVER);
|
||||
|
||||
BlockTravelAnchor result = new BlockTravelAnchor();
|
||||
result.init();
|
||||
|
||||
@@ -44,13 +44,23 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
|
||||
|
||||
private List<UserIdent> authorisedUsers = new ArrayList<UserIdent>();
|
||||
|
||||
private boolean visible = true;
|
||||
|
||||
private boolean isAuthorisedUser(UserIdent ident) {
|
||||
return authorisedUsers.contains(ident);
|
||||
}
|
||||
|
||||
private boolean isOwnerUser(UserIdent ident) {
|
||||
return owner.equals(ident);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBlockBeAccessed(EntityPlayer playerName) {
|
||||
if(accessMode == AccessMode.PUBLIC) {
|
||||
return true;
|
||||
}
|
||||
// Covers protected and private access modes
|
||||
return owner.equals(playerName.getGameProfile()) || authorisedUsers.contains(playerName.getGameProfile());
|
||||
return isOwnerUser(UserIdent.create(playerName.getGameProfile())) || isAuthorisedUser(UserIdent.create(playerName.getGameProfile()));
|
||||
|
||||
}
|
||||
|
||||
@@ -81,7 +91,7 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
|
||||
@Override
|
||||
public boolean getRequiresPassword(EntityPlayer playerName) {
|
||||
return getAccessMode() == AccessMode.PROTECTED && !canUiBeAccessed(playerName)
|
||||
&& !authorisedUsers.contains(PlayerUtil.getPlayerUUID(playerName.getGameProfile().getName()));
|
||||
&& !isAuthorisedUser(UserIdent.create(playerName.getGameProfile()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,7 +105,7 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
|
||||
|
||||
@Override
|
||||
public boolean canUiBeAccessed(EntityPlayer playerName) {
|
||||
return owner.equals(playerName.getGameProfile());
|
||||
return isOwnerUser(UserIdent.create(playerName.getGameProfile()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -103,7 +113,7 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
|
||||
if(accessMode != AccessMode.PRIVATE) {
|
||||
return true;
|
||||
}
|
||||
return owner.equals(playerName.getGameProfile());
|
||||
return isOwnerUser(UserIdent.create(playerName.getGameProfile()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -210,6 +220,11 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
|
||||
//keep behavior the same for blocks placed prior to this update
|
||||
accessMode = AccessMode.PUBLIC;
|
||||
}
|
||||
if (root.hasKey("visible")) {
|
||||
visible = root.getBoolean("visible");
|
||||
} else {
|
||||
visible = true;
|
||||
}
|
||||
if (root.hasKey("placedBy")) {
|
||||
owner = UserIdent.create(root.getString("placedBy"));
|
||||
} else {
|
||||
@@ -264,6 +279,7 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
|
||||
@Override
|
||||
protected void writeCustomNBT(NBTTagCompound root) {
|
||||
root.setShort("accessMode", (short) accessMode.ordinal());
|
||||
root.setBoolean("visible", visible);
|
||||
owner.saveToNbt(root, "owner");
|
||||
for (int i = 0; i < password.length; i++) {
|
||||
ItemStack stack = password[i];
|
||||
@@ -308,4 +324,14 @@ public class TileTravelAnchor extends TileEntityEio implements ITravelAccessable
|
||||
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
|
||||
readCustomNBT(pkt.func_148857_g());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return visible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setVisible(boolean visible) {
|
||||
this.visible = visible;
|
||||
}
|
||||
}
|
||||
@@ -54,6 +54,10 @@ public class TravelEntitySpecialRenderer extends TileEntitySpecialRenderer {
|
||||
|
||||
ITravelAccessable ta = (ITravelAccessable) tileentity;
|
||||
|
||||
if (!ta.isVisible()) {
|
||||
return;
|
||||
}
|
||||
|
||||
BlockCoord onBlock = TravelController.instance.onBlockCoord;
|
||||
if(onBlock != null && onBlock.equals(ta.getLocation())) {
|
||||
return;
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package crazypants.enderio.teleport.packet;
|
||||
|
||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
||||
import crazypants.enderio.api.teleport.ITravelAccessable;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class PacketVisibility implements IMessage, IMessageHandler<PacketVisibility, IMessage> {
|
||||
int x, y, z;
|
||||
boolean visible;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public PacketVisibility() {}
|
||||
|
||||
public PacketVisibility(int x, int y, int z, boolean visible) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
this.visible = visible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(x);
|
||||
buf.writeInt(y);
|
||||
buf.writeInt(z);
|
||||
buf.writeBoolean(visible);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
x = buf.readInt();
|
||||
y = buf.readInt();
|
||||
z = buf.readInt();
|
||||
visible = buf.readBoolean();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(PacketVisibility message, MessageContext ctx) {
|
||||
EntityPlayer player = ctx.getServerHandler().playerEntity;
|
||||
TileEntity te = player.worldObj.getTileEntity(message.x, message.y, message.z);
|
||||
if(te instanceof ITravelAccessable) {
|
||||
((ITravelAccessable) te).setVisible(message.visible);
|
||||
player.worldObj.markBlockForUpdate(message.x, message.y, message.z);
|
||||
player.worldObj.markTileEntityChunkModified(message.x, message.y, message.z, te);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -419,6 +419,17 @@ public class TileTelePad extends TileTravelAnchor implements IInternalPowerRecei
|
||||
return this;
|
||||
}
|
||||
|
||||
/* ITravelAccessable */
|
||||
@Override
|
||||
public boolean isTravelSource() {
|
||||
return isMaster() && inNetwork();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return super.isVisible() && isTravelSource();
|
||||
}
|
||||
|
||||
/* ITelePad */
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1158,6 +1158,9 @@ enderio.gui.travelAccessable.ok=Authorise
|
||||
enderio.gui.travelAccessable.skipLocked=Skipped locked anchor, use targeted teleport.
|
||||
enderio.gui.travelAccessable.skipObstructed=Skipped obstructed anchor.
|
||||
enderio.gui.travelAccessable.skipPrivate=Skipped private anchor.
|
||||
enderio.gui.travelAccessable.tooltip.visible=Visibility
|
||||
enderio.gui.travelAccessable.tooltip.visible.desc1=When off, you cannot see this block through other blocks.
|
||||
enderio.gui.travelAccessable.tooltip.visible.desc2=Handy for use as elevators.
|
||||
|
||||
enderio.gui.telepad.configure.travel=Travel Settings
|
||||
enderio.gui.telepad.configure.telepad=Telepad Settings
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 37 KiB |
Reference in new issue
Block a user