Compare commits

...
8 Commits
Author SHA1 Message Date
github-actions[bot]andGitHub GTNH Actions 0f9bae85b7 Spotless apply for branch armor-support for #266 (#285)
Co-authored-by: GitHub GTNH Actions <>
2026-11-11 12:55:18 +01:00
Martin Robertz 0e29c1af62 Merge branch 'master' into armor-support 2026-11-11 12:55:07 +01:00
Spaghetti-OberNub c2eda5efbb Merge branch 'armor-support' of https://github.com/GTNewHorizons/EnderIO into armor-support 2026-11-11 02:26:43 +01:00
Spaghetti-OberNub e2d6b417b4 multiple bug fixes 2026-11-11 01:14:53 +01:00
Spaghetti fc826d169a Merge branch 'master' into armor-support 2026-11-01 23:15:28 +01:00
github-actions[bot]andGitHub GTNH Actions 9242fdd23d Spotless apply for branch armor-support for #266 (#267)
Co-authored-by: GitHub GTNH Actions <>
2026-09-19 01:04:32 +02:00
Spaghetti-OberNub 0e60bba4ce applied spotless 2026-09-18 23:49:47 +02:00
Spaghetti-OberNub 9e1a7c7f3c changes to enable travel/teleportation staff usage by armor 2026-09-18 23:05:09 +02:00
3 changed files with 57 additions and 5 deletions

No files matched your search

@@ -20,4 +20,8 @@ public interface IItemOfTravel extends IEnergyContainerItem {
default int canExtractInternal(ItemStack equipped, int power) {
return Config.strictTPItemChecking ? 0 : -1;
}
default boolean isTeleportStaff(EntityPlayer player, ItemStack stack) {
return false;
}
}
@@ -106,6 +106,11 @@ public class ItemTeleportStaff extends ItemTravelStaff {
return power;
}
@Override
public boolean isTeleportStaff(EntityPlayer player, ItemStack stack) {
return true;
}
@Override
public int getEnergyStored(ItemStack item) {
// Has infinite energy, always report as being full of energy for any validation-code purposes.
@@ -135,6 +135,18 @@ public class TravelController {
// allow 4 blocks of c/s player pos desync
if (getPower(toTp, source, target, -4F) > powerUse) return "power use too little";
ItemStack equippedItem = toTp.getCurrentEquippedItem();
if (equippedItem == null || !(equippedItem.getItem() instanceof IItemOfTravel)
|| !((IItemOfTravel) equippedItem.getItem()).isActive(toTp, equippedItem)) {
for (ItemStack armor : toTp.inventory.armorInventory) {
if (armor != null && armor.getItem() instanceof IItemOfTravel
&& ((IItemOfTravel) armor.getItem()).isActive(toTp, armor)) {
equippedItem = armor;
break;
}
}
}
switch (source) {
case TELEPAD:
// this source is invalid for this type of packet
@@ -172,10 +184,9 @@ public class TravelController {
return null;
case TELEPORT_STAFF_BLINK:
case TELEPORT_STAFF:
// 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
if (equippedItem != null && equippedItem.getItem() instanceof ItemTeleportStaff) {
if (equippedItem != null && equippedItem.getItem() instanceof IItemOfTravel travelItem
&& travelItem.isActive(toTp, equippedItem)
&& travelItem.isTeleportStaff(toTp, equippedItem)) {
return null;
}
return "not staff";
@@ -557,6 +568,19 @@ public class TravelController {
return null;
}
ItemStack equipped = ep.getCurrentEquippedItem();
if (equipped == null || !(equipped.getItem() instanceof IItemOfTravel)
|| !((IItemOfTravel) equipped.getItem()).isActive(ep, equipped)) {
for (ItemStack armor : ep.inventory.armorInventory) {
if (armor != null && armor.getItem() instanceof IItemOfTravel
&& ((IItemOfTravel) armor.getItem()).isActive(ep, armor)) {
equipped = armor;
break;
}
}
}
if (BackhandUtil.backhandLoaded) {
final ItemStack offhand = BackhandUtils.getOffhandItem(ep);
if (offhand != null && offhand.getItem() != null) {
@@ -567,7 +591,6 @@ public class TravelController {
}
}
ItemStack equipped = ep.getCurrentEquippedItem();
if (checkInventoryAndBaubles) {
if (equipped == null || !(equipped.getItem() instanceof IItemOfTravel)
|| !((IItemOfTravel) equipped.getItem()).isActive(ep, equipped)) {
@@ -589,6 +612,13 @@ public class TravelController {
*/
@Nullable
public ItemStack findTravelItemInInventoryOrBaubles(EntityPlayer ep) {
for (ItemStack armor : ep.inventory.armorInventory) {
if (armor != null && armor.getItem() instanceof IItemOfTravel
&& ((IItemOfTravel) armor.getItem()).isActive(ep, armor)) {
return armor;
}
}
ItemStack travelItem = null;
for (int i = 0; i < ep.inventory.getSizeInventory(); i++) {
ItemStack stack = ep.inventory.getStackInSlot(i);
@@ -626,6 +656,14 @@ public class TravelController {
* @return -1 if no travel item found. 0 or more if item found in inventory. -2 or less if item found in Baubles.
*/
public int findTravelItemSlotInInventoryOrBaubles(EntityPlayer ep) {
for (int i = 0; i < ep.inventory.armorInventory.length; i++) {
ItemStack armor = ep.inventory.armorInventory[i];
if (armor != null && armor.getItem() instanceof IItemOfTravel
&& ((IItemOfTravel) armor.getItem()).isActive(ep, armor)) {
return ep.inventory.mainInventory.length + i;
}
}
int travelItemSlot = -1;
for (int i = 0; i < ep.inventory.getSizeInventory(); i++) {
ItemStack stack = ep.inventory.getStackInSlot(i);
@@ -1219,4 +1257,9 @@ public class TravelController {
true);
}
}
@SideOnly(Side.CLIENT)
public void forceUpdateTarget(EntityPlayer player) {
updateSelectedTarget(player);
}
}