mirror of
https://github.com/GTNewHorizons/EnderIO.git
synced 2026-11-14 17:14:50 +00:00
Compare commits
8
Commits
master
...
armor-support
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0f9bae85b7 | ||
|
|
0e29c1af62 | ||
|
|
c2eda5efbb | ||
|
|
e2d6b417b4 | ||
|
|
fc826d169a | ||
|
|
9242fdd23d | ||
|
|
0e60bba4ce | ||
|
|
9e1a7c7f3c |
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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user