You can now teleport through hoppers by pressing shift.

This commit is contained in:
Brianna O'Keefe 2018-08-27 17:18:44 -04:00
parent 19f7fcb373
commit 8489ec6a51
11 changed files with 71 additions and 41 deletions

View File

@ -77,22 +77,18 @@ public interface Hopper {
void setLastPlayer(UUID uuid); void setLastPlayer(UUID uuid);
/** /**
* Whether or not walk on teleporting has been * Get the teleport trigger is currently enabled.
* enabled for this hopper.
* *
* @return true if walk on teleporting enabled, * @return TeleportTrigger
* false otherwise
*/ */
boolean isWalkOnTeleport(); TeleportTrigger getTeleportTrigger();
/** /**
* Set the ability to teleport players from this * Set which teleport trigger is currently enabled.
* hopper to a remote hopper.
* *
* @param walkOnTeleport whether or not to enabled * @param teleportTrigger TeleportTrigger
* walk on teleporting
*/ */
void setWalkOnTeleport(boolean walkOnTeleport); void setTeleportTrigger(TeleportTrigger teleportTrigger);
/** /**
* Get the Block containing the hopper that is * Get the Block containing the hopper that is

View File

@ -0,0 +1,7 @@
package com.songoda.epichoppers.api.hopper;
public enum TeleportTrigger {
DISABLED,
WALK_ON,
SNEAK;
}

View File

@ -6,10 +6,7 @@ import com.songoda.arconix.api.utils.ConfigWrapper;
import com.songoda.arconix.plugin.Arconix; import com.songoda.arconix.plugin.Arconix;
import com.songoda.epichoppers.api.EpicHoppers; import com.songoda.epichoppers.api.EpicHoppers;
import com.songoda.epichoppers.api.EpicHoppersAPI; import com.songoda.epichoppers.api.EpicHoppersAPI;
import com.songoda.epichoppers.api.hopper.Hopper; import com.songoda.epichoppers.api.hopper.*;
import com.songoda.epichoppers.api.hopper.HopperManager;
import com.songoda.epichoppers.api.hopper.Level;
import com.songoda.epichoppers.api.hopper.LevelManager;
import com.songoda.epichoppers.api.utils.ClaimableProtectionPluginHook; import com.songoda.epichoppers.api.utils.ClaimableProtectionPluginHook;
import com.songoda.epichoppers.api.utils.ProtectionPluginHook; import com.songoda.epichoppers.api.utils.ProtectionPluginHook;
import com.songoda.epichoppers.boost.BoostData; import com.songoda.epichoppers.boost.BoostData;
@ -112,7 +109,7 @@ public class EpicHoppersPlugin extends JavaPlugin implements EpicHoppers {
String blockLoc = dataFile.getConfig().getString("data.sync." + locationStr + ".block"); String blockLoc = dataFile.getConfig().getString("data.sync." + locationStr + ".block");
Block block = blockLoc == null ? null : Arconix.pl().getApi().serialize().unserializeLocation(dataFile.getConfig().getString("data.sync." + locationStr + ".block")).getBlock(); Block block = blockLoc == null ? null : Arconix.pl().getApi().serialize().unserializeLocation(dataFile.getConfig().getString("data.sync." + locationStr + ".block")).getBlock();
boolean walkOnTeleport = dataFile.getConfig().getBoolean("data.sync." + locationStr + ".walkOnTeleport"); TeleportTrigger teleportTrigger = TeleportTrigger.valueOf(dataFile.getConfig().getString("data.sync." + locationStr + ".teleportTrigger"));
String playerStr = dataFile.getConfig().getString("data.sync." + locationStr + ".player"); String playerStr = dataFile.getConfig().getString("data.sync." + locationStr + ".player");
String placedByStr = dataFile.getConfig().getString("data.sync." + locationStr + ".placedBy"); String placedByStr = dataFile.getConfig().getString("data.sync." + locationStr + ".placedBy");
@ -133,7 +130,7 @@ public class EpicHoppersPlugin extends JavaPlugin implements EpicHoppers {
filter.setVoidList(voidList); filter.setVoidList(voidList);
filter.setEndPoint(black); filter.setEndPoint(black);
EHopper hopper = new EHopper(location, levelManager.getLevel(level), lastPlayer, placedBy, block, filter, walkOnTeleport); EHopper hopper = new EHopper(location, levelManager.getLevel(level), lastPlayer, placedBy, block, filter, teleportTrigger);
hopperManager.addHopper(location, hopper); hopperManager.addHopper(location, hopper);
} }
@ -218,7 +215,7 @@ public class EpicHoppersPlugin extends JavaPlugin implements EpicHoppers {
dataFile.getConfig().set("data.sync." + locationStr + ".block", hopper.getSyncedBlock() == null ? null : Arconix.pl().getApi().serialize().serializeLocation(hopper.getSyncedBlock().getLocation())); dataFile.getConfig().set("data.sync." + locationStr + ".block", hopper.getSyncedBlock() == null ? null : Arconix.pl().getApi().serialize().serializeLocation(hopper.getSyncedBlock().getLocation()));
dataFile.getConfig().set("data.sync." + locationStr + ".player", hopper.getLastPlayer() == null ? null : hopper.getLastPlayer().toString()); dataFile.getConfig().set("data.sync." + locationStr + ".player", hopper.getLastPlayer() == null ? null : hopper.getLastPlayer().toString());
dataFile.getConfig().set("data.sync." + locationStr + ".placedBy", hopper.getPlacedBy() == null ? null : hopper.getPlacedBy().toString()); dataFile.getConfig().set("data.sync." + locationStr + ".placedBy", hopper.getPlacedBy() == null ? null : hopper.getPlacedBy().toString());
dataFile.getConfig().set("data.sync." + locationStr + ".walkOnTeleport", hopper.isWalkOnTeleport()); dataFile.getConfig().set("data.sync." + locationStr + ".teleportTrigger", hopper.getTeleportTrigger().toString());
dataFile.getConfig().set("data.sync." + locationStr + ".whitelist", hopper.getFilter().getWhiteList()); dataFile.getConfig().set("data.sync." + locationStr + ".whitelist", hopper.getFilter().getWhiteList());
dataFile.getConfig().set("data.sync." + locationStr + ".blacklist", hopper.getFilter().getBlackList()); dataFile.getConfig().set("data.sync." + locationStr + ".blacklist", hopper.getFilter().getBlackList());
dataFile.getConfig().set("data.sync." + locationStr + ".void", hopper.getFilter().getVoidList()); dataFile.getConfig().set("data.sync." + locationStr + ".void", hopper.getFilter().getVoidList());

View File

@ -19,6 +19,7 @@ public class CommandEpicHoppers extends AbstractCommand {
sender.sendMessage(TextComponent.formatText("&6/EpicHoppers&7 - Displays this page.")); sender.sendMessage(TextComponent.formatText("&6/EpicHoppers&7 - Displays this page."));
if (sender.hasPermission("epichoppers.admin")) { if (sender.hasPermission("epichoppers.admin")) {
sender.sendMessage(TextComponent.formatText("&6/eh reload &7Reload the Configuration and Language files."));
sender.sendMessage(TextComponent.formatText("&6/eh book [player]&7- Gives Sync Touch book to you or a player.")); sender.sendMessage(TextComponent.formatText("&6/eh book [player]&7- Gives Sync Touch book to you or a player."));
sender.sendMessage(TextComponent.formatText("&6/eh give [player] [level]&7 - Give a leveled hopper to a player.")); sender.sendMessage(TextComponent.formatText("&6/eh give [player] [level]&7 - Give a leveled hopper to a player."));
sender.sendMessage(TextComponent.formatText("&6/eh settings&7 - Edit the EpicHoppers Settings.")); sender.sendMessage(TextComponent.formatText("&6/eh settings&7 - Edit the EpicHoppers Settings."));

View File

@ -2,12 +2,14 @@ package com.songoda.epichoppers.handlers;
import com.songoda.epichoppers.EpicHoppersPlugin; import com.songoda.epichoppers.EpicHoppersPlugin;
import com.songoda.epichoppers.api.hopper.Hopper; import com.songoda.epichoppers.api.hopper.Hopper;
import com.songoda.epichoppers.api.hopper.TeleportTrigger;
import com.songoda.epichoppers.player.PlayerData; import com.songoda.epichoppers.player.PlayerData;
import com.songoda.epichoppers.utils.Debugger; import com.songoda.epichoppers.utils.Debugger;
import com.songoda.epichoppers.utils.Methods; import com.songoda.epichoppers.utils.Methods;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -46,7 +48,7 @@ public class TeleportHandler {
Hopper hopper = instance.getHopperManager().getHopper(location); Hopper hopper = instance.getHopperManager().getHopper(location);
if (!hopper.isWalkOnTeleport()) continue; if (hopper.getTeleportTrigger() != TeleportTrigger.WALK_ON) continue;
PlayerData playerData = instance.getPlayerDataManager().getPlayerData(player); PlayerData playerData = instance.getPlayerDataManager().getPlayerData(player);
@ -86,6 +88,8 @@ public class TeleportHandler {
player.teleport(location); player.teleport(location);
next = player.getLocation().subtract(0, 0.5, 0).getBlock(); next = player.getLocation().subtract(0, 0.5, 0).getBlock();
if (instance.getConfig().getBoolean("Main.Sounds Enabled"))
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 10,10);
num++; num++;
} }
if (num == 1 && teleportFrom.containsKey(hopper.getLocation())) { if (num == 1 && teleportFrom.containsKey(hopper.getLocation())) {
@ -97,6 +101,9 @@ public class TeleportHandler {
location.setDirection(player.getLocation().getDirection()); location.setDirection(player.getLocation().getDirection());
player.teleport(location); player.teleport(location);
next = player.getLocation().subtract(0, 0.5, 0).getBlock(); next = player.getLocation().subtract(0, 0.5, 0).getBlock();
if (instance.getConfig().getBoolean("Main.Sounds Enabled"))
player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 10,10);
num ++; num ++;
} }

View File

@ -7,6 +7,7 @@ import com.songoda.epichoppers.EpicHoppersPlugin;
import com.songoda.epichoppers.api.hopper.Filter; import com.songoda.epichoppers.api.hopper.Filter;
import com.songoda.epichoppers.api.hopper.Hopper; import com.songoda.epichoppers.api.hopper.Hopper;
import com.songoda.epichoppers.api.hopper.Level; import com.songoda.epichoppers.api.hopper.Level;
import com.songoda.epichoppers.api.hopper.TeleportTrigger;
import com.songoda.epichoppers.boost.BoostData; import com.songoda.epichoppers.boost.BoostData;
import com.songoda.epichoppers.player.MenuType; import com.songoda.epichoppers.player.MenuType;
import com.songoda.epichoppers.player.PlayerData; import com.songoda.epichoppers.player.PlayerData;
@ -36,21 +37,21 @@ public class EHopper implements Hopper {
private UUID placedBy; private UUID placedBy;
private Block syncedBlock; private Block syncedBlock;
private Filter filter; private Filter filter;
private boolean walkOnTeleport; private TeleportTrigger teleportTrigger;
public EHopper(Location location, com.songoda.epichoppers.api.hopper.Level level, UUID lastPlayer, UUID placedBy, Block syncedBlock, Filter filter, boolean walkOnTeleport) { public EHopper(Location location, com.songoda.epichoppers.api.hopper.Level level, UUID lastPlayer, UUID placedBy, Block syncedBlock, Filter filter, TeleportTrigger teleportTrigger) {
this.location = location; this.location = location;
this.level = level; this.level = level;
this.syncedBlock = syncedBlock; this.syncedBlock = syncedBlock;
this.filter = filter; this.filter = filter;
this.lastPlayer = lastPlayer; this.lastPlayer = lastPlayer;
this.placedBy = placedBy; this.placedBy = placedBy;
this.walkOnTeleport = walkOnTeleport; this.teleportTrigger = teleportTrigger;
} }
public EHopper(Block block, com.songoda.epichoppers.api.hopper.Level level, UUID lastPlayer, UUID placedBy, Block syncedBlock, Filter filter, boolean walkOnTeleport) { public EHopper(Block block, com.songoda.epichoppers.api.hopper.Level level, UUID lastPlayer, UUID placedBy, Block syncedBlock, Filter filter, TeleportTrigger teleportTrigger) {
this(block.getLocation(), level, lastPlayer, placedBy, syncedBlock, filter, walkOnTeleport); this(block.getLocation(), level, lastPlayer, placedBy, syncedBlock, filter, teleportTrigger);
} }
public void overview(Player player) { public void overview(Player player) {
@ -58,7 +59,7 @@ public class EHopper implements Hopper {
EpicHoppersPlugin instance = EpicHoppersPlugin.getInstance(); EpicHoppersPlugin instance = EpicHoppersPlugin.getInstance();
if (!player.hasPermission("epichoppers.overview")) return; if (!player.hasPermission("epichoppers.overview")) return;
if (lastPlayer != null) { if (lastPlayer != null && lastPlayer != player.getUniqueId()) {
Bukkit.getPlayer(lastPlayer).closeInventory(); Bukkit.getPlayer(lastPlayer).closeInventory();
} }
@ -72,7 +73,7 @@ public class EHopper implements Hopper {
ItemMeta perlmeta = perl.getItemMeta(); ItemMeta perlmeta = perl.getItemMeta();
perlmeta.setDisplayName(instance.getLocale().getMessage("interface.hopper.perltitle")); perlmeta.setDisplayName(instance.getLocale().getMessage("interface.hopper.perltitle"));
ArrayList<String> loreperl = new ArrayList<>(); ArrayList<String> loreperl = new ArrayList<>();
String[] parts = instance.getLocale().getMessage("interface.hopper.perllore").split("\\|"); String[] parts = instance.getLocale().getMessage("interface.hopper.perllore2", teleportTrigger.name()).split("\\|");
for (String line : parts) { for (String line : parts) {
loreperl.add(Arconix.pl().getApi().format().formatText(line)); loreperl.add(Arconix.pl().getApi().format().formatText(line));
} }
@ -520,13 +521,13 @@ public class EHopper implements Hopper {
} }
@Override @Override
public boolean isWalkOnTeleport() { public TeleportTrigger getTeleportTrigger() {
return walkOnTeleport; return teleportTrigger;
} }
@Override @Override
public void setWalkOnTeleport(boolean walkOnTeleport) { public void setTeleportTrigger(TeleportTrigger teleportTrigger) {
this.walkOnTeleport = walkOnTeleport; this.teleportTrigger = teleportTrigger;
} }
@Override @Override

View File

@ -3,6 +3,7 @@ package com.songoda.epichoppers.hopper;
import com.songoda.epichoppers.EpicHoppersPlugin; import com.songoda.epichoppers.EpicHoppersPlugin;
import com.songoda.epichoppers.api.hopper.Hopper; import com.songoda.epichoppers.api.hopper.Hopper;
import com.songoda.epichoppers.api.hopper.HopperManager; import com.songoda.epichoppers.api.hopper.HopperManager;
import com.songoda.epichoppers.api.hopper.TeleportTrigger;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -28,7 +29,7 @@ public class EHopperManager implements HopperManager {
@Override @Override
public Hopper getHopper(Location location) { public Hopper getHopper(Location location) {
if (!registeredHoppers.containsKey(roundLocation(location))) { if (!registeredHoppers.containsKey(roundLocation(location))) {
addHopper(location, new EHopper(location, EpicHoppersPlugin.getInstance().getLevelManager().getLowestLevel(), null, null, null, new EFilter(), false)); addHopper(location, new EHopper(location, EpicHoppersPlugin.getInstance().getLevelManager().getLowestLevel(), null, null, null, new EFilter(), TeleportTrigger.DISABLED));
} }
return registeredHoppers.get(roundLocation(location)); return registeredHoppers.get(roundLocation(location));
} }

View File

@ -4,6 +4,7 @@ import com.songoda.arconix.plugin.Arconix;
import com.songoda.epichoppers.EpicHoppersPlugin; import com.songoda.epichoppers.EpicHoppersPlugin;
import com.songoda.epichoppers.api.hopper.Hopper; import com.songoda.epichoppers.api.hopper.Hopper;
import com.songoda.epichoppers.api.hopper.Level; import com.songoda.epichoppers.api.hopper.Level;
import com.songoda.epichoppers.api.hopper.TeleportTrigger;
import com.songoda.epichoppers.hopper.EFilter; import com.songoda.epichoppers.hopper.EFilter;
import com.songoda.epichoppers.hopper.EHopper; import com.songoda.epichoppers.hopper.EHopper;
import com.songoda.epichoppers.utils.Debugger; import com.songoda.epichoppers.utils.Debugger;
@ -55,7 +56,7 @@ public class BlockListeners implements Listener {
ItemStack item = e.getItemInHand().clone(); ItemStack item = e.getItemInHand().clone();
instance.getHopperManager().addHopper(e.getBlock().getLocation(), new EHopper(e.getBlock(), instance.getLevelFromItem(item), e.getPlayer().getUniqueId(), e.getPlayer().getUniqueId(),null, new EFilter(), false)); instance.getHopperManager().addHopper(e.getBlock().getLocation(), new EHopper(e.getBlock(), instance.getLevelFromItem(item), e.getPlayer().getUniqueId(), e.getPlayer().getUniqueId(),null, new EFilter(), TeleportTrigger.DISABLED));
} catch (Exception ee) { } catch (Exception ee) {
Debugger.runReport(ee); Debugger.runReport(ee);

View File

@ -2,17 +2,21 @@ package com.songoda.epichoppers.listeners;
import com.songoda.epichoppers.EpicHoppersPlugin; import com.songoda.epichoppers.EpicHoppersPlugin;
import com.songoda.epichoppers.api.hopper.Hopper; import com.songoda.epichoppers.api.hopper.Hopper;
import com.songoda.epichoppers.api.hopper.TeleportTrigger;
import com.songoda.epichoppers.hopper.EHopper; import com.songoda.epichoppers.hopper.EHopper;
import com.songoda.epichoppers.player.PlayerData; import com.songoda.epichoppers.player.PlayerData;
import com.songoda.epichoppers.player.SyncType; import com.songoda.epichoppers.player.SyncType;
import com.songoda.epichoppers.utils.Debugger; import com.songoda.epichoppers.utils.Debugger;
import com.songoda.epichoppers.utils.Methods; import com.songoda.epichoppers.utils.Methods;
import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.Action; import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -27,6 +31,19 @@ public class InteractListeners implements Listener {
this.instance = instance; this.instance = instance;
} }
@EventHandler
public void onPlayerToggleSneakEvent(PlayerToggleSneakEvent event) {
Player player = event.getPlayer();
if (player.isSneaking()) {
Location location = player.getLocation().getBlock().getRelative(BlockFace.DOWN).getLocation();
if (instance.getHopperManager().isHopper(location)) {
Hopper hopper = instance.getHopperManager().getHopper(location);
if (hopper.getTeleportTrigger() == TeleportTrigger.SNEAK)
instance.getTeleportHandler().tpPlayer(player, hopper);
}
}
}
@EventHandler @EventHandler
public void onBlockInteract(PlayerInteractEvent e) { public void onBlockInteract(PlayerInteractEvent e) {
try { try {

View File

@ -2,6 +2,7 @@ package com.songoda.epichoppers.listeners;
import com.songoda.epichoppers.EpicHoppersPlugin; import com.songoda.epichoppers.EpicHoppersPlugin;
import com.songoda.epichoppers.api.hopper.Hopper; import com.songoda.epichoppers.api.hopper.Hopper;
import com.songoda.epichoppers.api.hopper.TeleportTrigger;
import com.songoda.epichoppers.hopper.EHopper; import com.songoda.epichoppers.hopper.EHopper;
import com.songoda.epichoppers.player.MenuType; import com.songoda.epichoppers.player.MenuType;
import com.songoda.epichoppers.player.PlayerData; import com.songoda.epichoppers.player.PlayerData;
@ -36,7 +37,6 @@ public class InventoryListeners implements Listener {
Player player = (Player) event.getWhoClicked(); Player player = (Player) event.getWhoClicked();
if (inv == null || event.getCurrentItem() == null) return; if (inv == null || event.getCurrentItem() == null) return;
if (event.getRawSlot() > event.getView().getTopInventory().getSize() - 1) return; if (event.getRawSlot() > event.getView().getTopInventory().getSize() - 1) return;
if (event.getCursor() != null && event.getCurrentItem() != null) { if (event.getCursor() != null && event.getCurrentItem() != null) {
@ -45,7 +45,7 @@ public class InventoryListeners implements Listener {
if (c.hasItemMeta() if (c.hasItemMeta()
&& c.getItemMeta().hasLore() && c.getItemMeta().hasLore()
&& c.getType() == Material.ENCHANTED_BOOK && c.getType() == Material.ENCHANTED_BOOK
&& (item.getType().name().toUpperCase().contains("AXE") || item.getType().name().toUpperCase().contains("SPADE") || item.getType().name().toUpperCase().contains("SWORD")) && (item.getType().name().toUpperCase().contains("AXE") || item.getType().name().toUpperCase().contains("SHOVEL") || item.getType().name().toUpperCase().contains("SWORD"))
&& c.getItemMeta().getLore().equals(instance.enchantmentHandler.getbook().getItemMeta().getLore())) { && c.getItemMeta().getLore().equals(instance.enchantmentHandler.getbook().getItemMeta().getLore())) {
instance.enchantmentHandler.createSyncTouch(item, null); instance.enchantmentHandler.createSyncTouch(item, null);
event.setCancelled(true); event.setCancelled(true);
@ -83,13 +83,15 @@ public class InventoryListeners implements Listener {
instance.getTeleportHandler().tpPlayer(player, hopper); instance.getTeleportHandler().tpPlayer(player, hopper);
} }
} else { } else {
if (!hopper.isWalkOnTeleport()) { if (hopper.getTeleportTrigger() == TeleportTrigger.DISABLED) {
player.sendMessage(instance.references.getPrefix() + instance.getLocale().getMessage("event.hopper.walkteleenabled")); hopper.setTeleportTrigger(TeleportTrigger.SNEAK);
hopper.setWalkOnTeleport(true); } else if (hopper.getTeleportTrigger() == TeleportTrigger.SNEAK) {
} else { hopper.setTeleportTrigger(TeleportTrigger.WALK_ON);
player.sendMessage(instance.references.getPrefix() + instance.getLocale().getMessage("event.hopper.walkteledisabled")); } else if (hopper.getTeleportTrigger() == TeleportTrigger.WALK_ON) {
hopper.setWalkOnTeleport(false); hopper.setTeleportTrigger(TeleportTrigger.DISABLED);
} }
((EHopper)hopper).overview(player);
return;
} }
player.closeInventory(); player.closeInventory();

View File

@ -21,7 +21,7 @@ interface.hopper.blockbreak = "&7Block Break: &6Every %ticks% ticks"
interface.hopper.alreadymaxed = "&7This hopper is already maxed out!" interface.hopper.alreadymaxed = "&7This hopper is already maxed out!"
interface.hopper.synclore = "|&7Left-Click then click a another|&7hopper or chest to sync!||&7Right-Click to desync." interface.hopper.synclore = "|&7Left-Click then click a another|&7hopper or chest to sync!||&7Right-Click to desync."
interface.hopper.perltitle = "&6Click to Teleport" interface.hopper.perltitle = "&6Click to Teleport"
interface.hopper.perllore = "|&7Left-Click to teleport to|&7the end of the chain.||&7Right-Click to toggle walk|&7on teleport." interface.hopper.perllore2 = "|&7Left-Click to teleport to|&7the end of the chain.||&7Right-Click to switch the|&7teleport trigger mode.|&7Currently set to: &a%type%&7."
interface.hopper.filtertitle = "&cClick to Filter" interface.hopper.filtertitle = "&cClick to Filter"
interface.hopper.filterlore = "|&7This allows you to choose|&7which items go where." interface.hopper.filterlore = "|&7This allows you to choose|&7which items go where."
interface.hopper.synchopper = "&6Click to Sync This hopper" interface.hopper.synchopper = "&6Click to Sync This hopper"
@ -51,7 +51,7 @@ event.hopper.synctimeout = "&cSyncing timed out."
event.hopper.syncoutofrange = "&cThis block is out of your hoppers range." event.hopper.syncoutofrange = "&cThis block is out of your hoppers range."
event.hopper.syncdidnotplace = "&cSorry! You need to have placed this hopper to sync things to it." event.hopper.syncdidnotplace = "&cSorry! You need to have placed this hopper to sync things to it."
event.hopper.toomany = "&cYou can only place %amount% hoppers per chunk..." event.hopper.toomany = "&cYou can only place %amount% hoppers per chunk..."
event.hopper.walkteleenabled = "Walk on teleporting has been enabled for this hopper." event.hopper.walkteleenabled = "The teleport has been enabled for this hopper."
event.hopper.walkteledisabled = "Walk on teleporting has been disabled for this hopper." event.hopper.walkteledisabled = "Walk on teleporting has been disabled for this hopper."
event.hopper.onlyone = "&cYou may only place a single item at a time." event.hopper.onlyone = "&cYou may only place a single item at a time."
event.hopper.syncchest = "&7You have synchronized your &9%name% &7with this chest." event.hopper.syncchest = "&7You have synchronized your &9%name% &7with this chest."