Fix teleportation staff keybind and add blink mode toggle

This commit is contained in:
DreamYao520 committed 2026-10-18 13:30:20 +08:00
1 parent d27f30951a
commit 3e01292c71
5 files changed
+48 -1

No files matched your search

@@ -173,6 +173,7 @@ public final class Config {
* The distance travelled when no block is found within {@link #teleportStaffMaxBlinkDistance}.
*/
public static int teleportStaffFailedBlinkDistance = 64;
public static boolean teleportStaffUseBlink = false;
/**
* Sets the teleport staff right-click action.
@@ -1323,6 +1324,13 @@ public final class Config {
+ " 3: Teleport to anchor, or look if no anchor")
.getInt(teleportStaffSneakAction);
teleportStaffUseBlink = config.get(
sectionPersonal.name,
"teleportStaffUseBlink",
teleportStaffUseBlink,
"Use the Staff of Traveling blink instead of long-range teleportation with the Staff of Teleportation.")
.getBoolean(teleportStaffUseBlink);
enderIoRange = config.get(
sectionEfficiency.name,
"enderIoRange",
@@ -36,6 +36,7 @@ import crazypants.enderio.item.darksteel.upgrade.SoundDetectorUpgrade;
import crazypants.enderio.item.darksteel.upgrade.SpeedUpgrade;
import crazypants.enderio.item.darksteel.upgrade.TrackmanGogglesUpgrade;
import crazypants.enderio.network.PacketHandler;
import crazypants.enderio.teleport.ItemTeleportStaff;
import crazypants.enderio.teleport.TravelController;
import crazypants.enderio.thaumcraft.GogglesOfRevealingUpgrade;
import crazypants.util.BaublesUtil;
@@ -67,6 +68,8 @@ public class KeyTracker {
private final KeyBinding staffOfTravelingTPKey;
private final KeyBinding teleportStaffModeKey;
private static long lastBlinkTick = -1;
public KeyTracker() {
@@ -132,6 +135,12 @@ public class KeyTracker {
Keyboard.KEY_NONE,
EnderIO.lang.localize("category.tools"));
ClientRegistry.registerKeyBinding(staffOfTravelingTPKey);
teleportStaffModeKey = new KeyBinding(
EnderIO.lang.localize("keybind.teleportstaffmode"),
Keyboard.KEY_NONE,
EnderIO.lang.localize("category.tools"));
ClientRegistry.registerKeyBinding(teleportStaffModeKey);
}
@SubscribeEvent
@@ -158,6 +167,7 @@ public class KeyTracker {
handleSpeed();
handleJump();
handleMagnet();
handleTeleportStaffMode();
handleStaffOfTravelingTP();
}
@@ -173,6 +183,16 @@ public class KeyTracker {
PacketHandler.INSTANCE.sendToServer(new PacketUpgradeState(type, isActive));
}
private void handleTeleportStaffMode() {
if (teleportStaffModeKey.isPressed() && Minecraft.getMinecraft().thePlayer != null) {
Config.teleportStaffUseBlink = !Config.teleportStaffUseBlink;
Config.config.get(Config.sectionPersonal.name, "teleportStaffUseBlink", false)
.set(Config.teleportStaffUseBlink);
Config.config.save();
sendEnabledChatMessage("teleportStaff.blinkMode", Config.teleportStaffUseBlink);
}
}
private void handleStaffOfTravelingTP() {
if (staffOfTravelingTPKey.isPressed()) {
if (Config.travelStaffKeybindEnabled) {
@@ -191,7 +211,10 @@ public class KeyTracker {
lastBlinkTick = -1;
}
if (ticksSinceBlink >= Config.travelStaffBlinkPauseTicks) {
if (TravelController.instance.doBlink(travelItem, player)) {
boolean teleported = travelItem.getItem() instanceof ItemTeleportStaff
? TravelController.instance.doTeleport(player)
: TravelController.instance.doBlink(travelItem, player);
if (teleported) {
lastBlinkTick = EnderIO.proxy.getTickCount();
}
}
@@ -172,6 +172,10 @@ public class TravelController {
return null;
case TELEPORT_STAFF_BLINK:
case TELEPORT_STAFF:
if (source == TravelSource.TELEPORT_STAFF_BLINK && Config.travelStaffKeybindEnabled
&& (equippedItem == null || !(equippedItem.getItem() instanceof ItemTeleportStaff))) {
equippedItem = findTravelItemInInventoryOrBaubles(toTp);
}
// tp staff is creative version of traveling staff
// no energy check or anything else needed
// but the player must actually be equipped with one of these
@@ -196,6 +200,9 @@ public class TravelController {
boolean alsoDoTeleport) {
if (!hasTarget()) {
if (alsoDoTeleport) {
if (source == TravelSource.TELEPORT_STAFF && Config.teleportStaffUseBlink) {
return doBlink(equipped, player);
}
Optional<BlockCoord> destinationOptional = findTeleportDestination(player);
if (destinationOptional.isPresent()) {
BlockCoord destination = destinationOptional.get();
@@ -338,6 +345,9 @@ public class TravelController {
/** This is the teleport staff super-teleport. */
public boolean doTeleport(EntityPlayer player) {
if (Config.teleportStaffUseBlink) {
return doBlink(player.getHeldItem(), player);
}
Optional<BlockCoord> destinationOptional = findTeleportDestination(player);
if (destinationOptional.isPresent()) {
return travelToLocation(player, TravelSource.TELEPORT_STAFF_BLINK, destinationOptional.get(), false);
@@ -763,6 +763,8 @@ item.itemTravelStaff.tooltip.detailed.line4=Shift-R-Click will teleport the
item.itemTravelStaff.tooltip.detailed.line5=player a short distance
enderio.itemTravelStaff.notEnoughPower=Not enough power
enderio.travelStaffKeybind.isDisabled=Travel Staff Blink Keybind Disabled!
enderio.teleportStaff.blinkMode.enabled=Staff of Teleportation: Travel Staff Blink
enderio.teleportStaff.blinkMode.disabled=Staff of Teleportation: Long-Range Teleport
item.itemTeleportStaff.name=Staff of Teleportation
item.itemTeleportStaff.tooltip.detailed.line1=R-Click to teleport wherever you are looking
@@ -1442,6 +1444,7 @@ enderio.keybind.stepassist=Step Assist
enderio.keybind.yetawrenchmode=Yeta Wrench Mode
enderio.keybind.magnet=Toggle Electromagnet
enderio.keybind.staffoftravelingtp=Travel Staff Blink
enderio.keybind.teleportstaffmode=Switch Staff of Teleportation Mode
enderio.nei.alloysmelter=Alloy Smelter
enderio.nei.enchanter=Enchanter
enderio.nei.sagmill=SAG Mill
@@ -1374,6 +1374,9 @@ enderio.keybind.jump=跳跃
enderio.keybind.stepassist=步行辅助
enderio.keybind.yetawrenchmode=以太扳手模式
enderio.keybind.magnet=电磁铁
enderio.keybind.teleportstaffmode=切换高级传送权杖模式
enderio.teleportStaff.blinkMode.enabled=高级传送权杖:普通闪现模式
enderio.teleportStaff.blinkMode.disabled=高级传送权杖:高级传送模式
enderio.nei.alloysmelter=合金炉
enderio.nei.enchanter=附魔器
enderio.nei.sagmill=SAG磨粉机