aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java382
1 files changed, 115 insertions, 267 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java
index 842e19438b..ce9ea45841 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java
@@ -1,17 +1,21 @@
package gtPlusPlus.xmod.gregtech.common.helpers;
import static gregtech.api.GregTech_API.mEUtoRF;
-import static gregtech.api.enums.Mods.COFHCore;
+import static gregtech.api.enums.Mods.*;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
+import javax.annotation.Nonnull;
+
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
+import baubles.api.BaublesApi;
import cofh.api.energy.IEnergyContainerItem;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
@@ -21,7 +25,6 @@ import gregtech.common.items.GT_MetaGenerated_Item_01;
import gregtech.common.items.GT_MetaGenerated_Item_02;
import gregtech.common.items.GT_MetaGenerated_Item_03;
import gregtech.common.items.GT_MetaGenerated_Tool_01;
-import gtPlusPlus.api.objects.Logger;
import gtPlusPlus.api.objects.data.Pair;
import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.util.Utils;
@@ -33,125 +36,82 @@ import ic2.api.item.IElectricItem;
public class ChargingHelper {
- private static Map<String, Pair<GregtechMetaWirelessCharger, Byte>> mValidPlayers = new HashMap<String, Pair<GregtechMetaWirelessCharger, Byte>>();
- protected static Map<BlockPos, GregtechMetaWirelessCharger> mChargerMap = new HashMap<BlockPos, GregtechMetaWirelessCharger>();
+ private static final Map<String, Pair<GregtechMetaWirelessCharger, Byte>> mValidPlayers = new HashMap<>();
+ protected static Map<BlockPos, GregtechMetaWirelessCharger> mChargerMap = new HashMap<>();
private int mTickTimer = 0;
- private final int mTickMultiplier = 20;
+ private static final int mTickMultiplier = 20;
// Called whenever the player is updated or ticked.
@SubscribeEvent(priority = EventPriority.HIGHEST)
+ @SuppressWarnings("unused")
public void onPlayerTick(LivingUpdateEvent event) {
try {
if (event.entity != null && event.entityLiving != null) {
- if (event.entityLiving instanceof EntityPlayer) {
- EntityPlayer mPlayerMan = (EntityPlayer) event.entityLiving;
-
- if (mPlayerMan != null) {
- // Utils.LOG_WARNING("Found Player.");
-
- if (Utils.isServer()) {
- // Utils.LOG_WARNING("Found Server-Side.");
-
- mTickTimer++;
- if (mTickTimer % mTickMultiplier == 0) {
-
- long mVoltage = 0;
- long mEuStored = 0;
-
- if (!mChargerMap.isEmpty() && mValidPlayers.containsKey(mPlayerMan.getDisplayName())) {
- InventoryPlayer mPlayerInventory = mPlayerMan.inventory;
- ItemStack[] mArmourContents = mPlayerInventory.armorInventory.clone();
- ItemStack[] mInventoryContents = mPlayerInventory.mainInventory.clone();
-
- for (GregtechMetaWirelessCharger mEntityTemp : mChargerMap.values()) {
- if (mEntityTemp != null) {
- if (mEntityTemp.getBaseMetaTileEntity() == null
- || !mEntityTemp.getBaseMetaTileEntity().isAllowedToWork())
- continue;
- if (mPlayerMan.getEntityWorld().provider.dimensionId
- == mEntityTemp.getDimensionID()) {
- mVoltage = mEntityTemp.maxEUInput();
- mEuStored = mEntityTemp.getEUVar();
- if (mVoltage > 0 && mEuStored >= mVoltage) {
-
- Map<String, UUID> LR = mEntityTemp.getLongRangeMap();
- Map<String, UUID> LO = mEntityTemp.getLocalMap();
-
- long mStartingEu = mEntityTemp.getEUVar();
- long mCurrentEu = mEntityTemp.getEUVar();
- long mEuUsed = 0;
+ if (event.entityLiving instanceof EntityPlayer mPlayerMan) {
+ if (Utils.isServer()) {
+ mTickTimer++;
+ if (mTickTimer % mTickMultiplier == 0) {
+
+ long mVoltage;
+ long mEuStored;
+
+ if (!mChargerMap.isEmpty() && mValidPlayers.containsKey(mPlayerMan.getDisplayName())) {
+ InventoryPlayer mPlayerInventory = mPlayerMan.inventory;
+ ItemStack[] mArmourContents = mPlayerInventory.armorInventory.clone();
+ ItemStack[] mInventoryContents = mPlayerInventory.mainInventory.clone();
+ ItemStack[] baubleSlots = null;
+ if (Baubles.isModLoaded()) {
+ IInventory baubleInv = BaublesApi.getBaubles(mPlayerMan);
+ if (baubleInv != null) {
+ baubleSlots = new ItemStack[baubleInv.getSizeInventory()];
+ for (int i = 0; i < baubleInv.getSizeInventory(); i++) {
+ baubleSlots[i] = baubleInv.getStackInSlot(i);
+ }
+ }
+ }
+
+ for (GregtechMetaWirelessCharger mEntityTemp : mChargerMap.values()) {
+ if (mEntityTemp != null) {
+ if (mEntityTemp.getBaseMetaTileEntity() == null
+ || !mEntityTemp.getBaseMetaTileEntity().isAllowedToWork())
+ continue;
+ if (mPlayerMan.getEntityWorld().provider.dimensionId
+ == mEntityTemp.getDimensionID()) {
+ mVoltage = mEntityTemp.maxEUInput();
+ mEuStored = mEntityTemp.getEUVar();
+ if (mVoltage > 0 && mEuStored >= mVoltage) {
+
+ Map<String, UUID> LR = mEntityTemp.getLongRangeMap();
+ Map<String, UUID> LO = mEntityTemp.getLocalMap();
+
+ long mStartingEu = mEntityTemp.getEUVar();
+ if (canCharge(mEntityTemp, mPlayerMan, LR, LO)) {
+ chargeItems(mEntityTemp, mArmourContents);
+ chargeItems(mEntityTemp, mInventoryContents);
+ chargeItems(mEntityTemp, baubleSlots);
+ }
+
+ if (mStartingEu - mEntityTemp.getEUVar() <= 0) {
+ long mMaxDistance;
if (mEntityTemp.getMode() == 0) {
- if (!LR.isEmpty()
- && LR.containsKey(mPlayerMan.getDisplayName())) {
- mCurrentEu = chargeItems(
- mEntityTemp,
- mArmourContents,
- mPlayerMan);
- mCurrentEu = chargeItems(
- mEntityTemp,
- mInventoryContents,
- mPlayerMan);
- }
+ mMaxDistance = (4 * GT_Values.V[mEntityTemp.getTier()]);
} else if (mEntityTemp.getMode() == 1) {
- if (!LO.isEmpty()
- && LO.containsKey(mPlayerMan.getDisplayName())) {
- mCurrentEu = chargeItems(
- mEntityTemp,
- mArmourContents,
- mPlayerMan);
- mCurrentEu = chargeItems(
- mEntityTemp,
- mInventoryContents,
- mPlayerMan);
- }
+ mMaxDistance = (mEntityTemp.getTier() * 10L);
} else {
- if (!LR.isEmpty()
- && LR.containsKey(mPlayerMan.getDisplayName())) {
- mCurrentEu = chargeItems(
- mEntityTemp,
- mArmourContents,
- mPlayerMan);
- mCurrentEu = chargeItems(
- mEntityTemp,
- mInventoryContents,
- mPlayerMan);
- }
- if (!LO.isEmpty()
- && LO.containsKey(mPlayerMan.getDisplayName())) {
- mCurrentEu = chargeItems(
- mEntityTemp,
- mArmourContents,
- mPlayerMan);
- mCurrentEu = chargeItems(
- mEntityTemp,
- mInventoryContents,
- mPlayerMan);
- }
+ mMaxDistance = (4 * GT_Values.V[mEntityTemp.getTier()] / 2);
}
-
- if ((mEuUsed = (mStartingEu - mCurrentEu)) <= 0
- && mEntityTemp != null) {
- long mMaxDistance;
- if (mEntityTemp.getMode() == 0) {
- mMaxDistance = (4 * GT_Values.V[mEntityTemp.getTier()]);
- } else if (mEntityTemp.getMode() == 1) {
- mMaxDistance = (mEntityTemp.getTier() * 10);
+ double mDistance = calculateDistance(mEntityTemp, mPlayerMan);
+ long mVoltageCost = MathUtils
+ .findPercentageOfInt(mMaxDistance, (float) mDistance);
+
+ if (mVoltageCost > 0) {
+ if (mVoltageCost > mEntityTemp.maxEUInput()) {
+ mEntityTemp.setEUVar(
+ (mEntityTemp.getEUVar()
+ - mEntityTemp.maxEUInput()));
} else {
- mMaxDistance = (4 * GT_Values.V[mEntityTemp.getTier()] / 2);
- }
- double mDistance = calculateDistance(mEntityTemp, mPlayerMan);
- long mVoltageCost = MathUtils
- .findPercentageOfInt(mMaxDistance, (float) mDistance);
-
- if (mVoltageCost > 0) {
- if (mVoltageCost > mEntityTemp.maxEUInput()) {
- mEntityTemp.setEUVar(
- (mEntityTemp.getEUVar()
- - mEntityTemp.maxEUInput()));
- } else {
- mEntityTemp.setEUVar(
- (mEntityTemp.getEUVar() - mVoltageCost));
- }
+ mEntityTemp
+ .setEUVar((mEntityTemp.getEUVar() - mVoltageCost));
}
}
}
@@ -165,7 +125,6 @@ public class ChargingHelper {
}
}
} catch (Throwable t) {
- // Utils.LOG_WARNING("State of Wireless Charger changed in an invalid way, this prevented a crash.");
if (!mChargerMap.isEmpty()) {
for (BlockPos aPos : mChargerMap.keySet()) {
GregtechMetaWirelessCharger r = mChargerMap.get(aPos);
@@ -174,7 +133,6 @@ public class ChargingHelper {
}
}
}
- // t.printStackTrace();
}
}
@@ -183,11 +141,7 @@ public class ChargingHelper {
return false;
}
if (!mChargerMap.containsKey(mPos)) {
- if (mChargerMap.put(mPos, mEntity) == null) {
- return true;
- } else {
- return false;
- }
+ return mChargerMap.put(mPos, mEntity) == null;
} else {
return true;
}
@@ -198,11 +152,7 @@ public class ChargingHelper {
return false;
}
if (mChargerMap.containsKey(mPos)) {
- if (mChargerMap.remove(mPos, mEntity)) {
- return true;
- } else {
- return false;
- }
+ return mChargerMap.remove(mPos, mEntity);
} else {
return false;
}
@@ -212,22 +162,11 @@ public class ChargingHelper {
if (mEntity == null) {
return false;
}
- Logger.WARNING("trying to map new player");
if (mValidPlayers.containsKey(mPlayer.getDisplayName())) {
- Logger.WARNING("Key contains player already?");
return false;
} else {
- Logger.WARNING("key not found, adding");
- Pair<GregtechMetaWirelessCharger, Byte> mEntry = new Pair<GregtechMetaWirelessCharger, Byte>(
- mEntity,
- (byte) mEntity.getMode());
- if (mValidPlayers.put(mPlayer.getDisplayName(), mEntry) == null) {
- Logger.WARNING("Added a Player to the Tick Map.");
- return true;
- } else {
- Logger.WARNING("Tried to add player but it was already there?");
- return false;
- }
+ Pair<GregtechMetaWirelessCharger, Byte> mEntry = new Pair<>(mEntity, (byte) mEntity.getMode());
+ return mValidPlayers.put(mPlayer.getDisplayName(), mEntry) == null;
}
}
@@ -235,26 +174,29 @@ public class ChargingHelper {
if (mEntity == null) {
return false;
}
- Logger.WARNING("trying to remove player from map");
if (mValidPlayers.containsKey(mPlayer.getDisplayName())) {
- Logger.WARNING("key found, removing");
- Pair<GregtechMetaWirelessCharger, Byte> mEntry = new Pair<GregtechMetaWirelessCharger, Byte>(
- mEntity,
- (byte) mEntity.getMode());
- if (mValidPlayers.remove(mPlayer, mEntry)) {
- Logger.WARNING("Removed a Player to the Tick Map.");
- return true;
- } else {
- Logger.WARNING("Tried to remove player but it was not there?");
- return false;
- }
+ Pair<GregtechMetaWirelessCharger, Byte> mEntry = new Pair<>(mEntity, (byte) mEntity.getMode());
+ return mValidPlayers.remove(mPlayer.getDisplayName(), mEntry);
} else {
- Logger.WARNING("Key does not contain player?");
return false;
}
}
- public double calculateDistance(GregtechMetaWirelessCharger mEntityTemp, EntityPlayer mPlayerMan) {
+ private boolean canCharge(GregtechMetaWirelessCharger charger, EntityPlayer chargeablePlayer,
+ Map<String, UUID> longRangeChargers, Map<String, UUID> shortRangeChargers) {
+ if (charger.getMode() == 0) {
+ return !longRangeChargers.isEmpty() && longRangeChargers.containsKey(chargeablePlayer.getDisplayName());
+ } else if (charger.getMode() == 1) {
+ return !shortRangeChargers.isEmpty() && shortRangeChargers.containsKey(chargeablePlayer.getDisplayName());
+ } else {
+ if (!longRangeChargers.isEmpty() && longRangeChargers.containsKey(chargeablePlayer.getDisplayName())) {
+ return true;
+ }
+ return !shortRangeChargers.isEmpty() && shortRangeChargers.containsKey(chargeablePlayer.getDisplayName());
+ }
+ }
+
+ private double calculateDistance(GregtechMetaWirelessCharger mEntityTemp, EntityPlayer mPlayerMan) {
if (mEntityTemp == null || mPlayerMan == null) {
return 0;
}
@@ -263,52 +205,30 @@ public class ChargingHelper {
mEntityTemp.getPositionOfEntity(mPlayerMan));
}
- public long chargeItems(GregtechMetaWirelessCharger mEntity, ItemStack[] mItems, EntityPlayer mPlayer) {
- if (mEntity == null) {
- return -100;
- }
+ private void chargeItems(@Nonnull GregtechMetaWirelessCharger mEntity, ItemStack[] mItems) {
if (mItems == null || mItems.length == 0) {
- return mEntity.getEUVar();
+ return;
}
- long mInitialValue = mEntity.getEUVar();
- long mReturnValue = chargeItemsEx(mEntity, mItems, mPlayer);
- return ((mReturnValue < mInitialValue) ? mReturnValue : mInitialValue);
+ chargeItemsEx(mEntity, mItems);
}
- public long chargeItemsEx(GregtechMetaWirelessCharger mEntity, ItemStack[] mItems, EntityPlayer mPlayer) {
-
- // Bad Entity
- if (mEntity == null) {
- return -100;
- }
+ private void chargeItemsEx(@Nonnull GregtechMetaWirelessCharger mEntity, ItemStack[] mItems) {
// Bad Inventory
if (mItems == null || mItems.length == 0) {
- return mEntity.getEUVar();
+ return;
}
// Set Variables to Charge
- int mChargedItems = 0;
- final int mTier = mEntity.getTier();
final long mVoltage = mEntity.maxEUInput();
long mEuStored = mEntity.getEUVar();
- final long mEuStoredOriginal = mEntity.getEUVar();
// For Inventory Contents
- int mItemSlot = 0;
-
for (ItemStack mTemp : mItems) {
- mItemSlot++;
- if (mTemp != null) {
- Logger.WARNING("Slot " + mItemSlot + " contains " + mTemp.getDisplayName());
- }
// Is item Electrical
if (isItemValid(mTemp)) {
- Logger.WARNING("1");
-
// Transfer Limit
double mItemEuTLimit = ((IElectricItem) mTemp.getItem()).getTransferLimit(mTemp);
// Check if Tile has more or equal EU to what can be transferred into the item.
if (mEuStored >= mItemEuTLimit) {
- Logger.WARNING("2");
double mItemMaxCharge = ((IElectricItem) mTemp.getItem()).getMaxCharge(mTemp);
double mitemCurrentCharge = ElectricItem.manager.getCharge(mTemp);
@@ -317,8 +237,7 @@ public class ChargingHelper {
continue;
}
- // Try get charge direct from NBT for GT and IC2 stacks
- Logger.WARNING("3");
+ // Try to get charge direct from NBT for GT and IC2 stacks
if (mTemp.getItem() instanceof GT_MetaGenerated_Tool_01
|| mTemp.getItem() instanceof GT_MetaGenerated_Item_01
|| mTemp.getItem() instanceof GT_MetaGenerated_Item_02
@@ -349,8 +268,6 @@ public class ChargingHelper {
mVoltageIncrease = mItemEuTLimit;
}
- Logger.WARNING("4");
-
int mMulti;
if ((mitemCurrentCharge + (mVoltageIncrease * 20)) <= (mItemMaxCharge - (mVoltageIncrease * 20))) {
mMulti = 20;
@@ -364,44 +281,19 @@ public class ChargingHelper {
} else {
mMulti = 1;
}
- Logger.WARNING("5");
int mMultiVoltage = (int) (mMulti * mVoltageIncrease);
if ((mitemCurrentCharge + mMultiVoltage) <= mItemMaxCharge) {
- Logger.WARNING("6");
- int g = 0;
- if ((g = GT_ModHandler.chargeElectricItem(mTemp, mMultiVoltage, Integer.MAX_VALUE, true, false))
+ if (GT_ModHandler.chargeElectricItem(mTemp, mMultiVoltage, Integer.MAX_VALUE, true, false)
> 0) {
- Logger.WARNING("6.5 - " + g + " - " + mMulti);
for (int i = 0; i < mMulti; i++) {
- if (ElectricItem.manager
- .charge(mTemp, mVoltageIncrease, Integer.MAX_VALUE, false, false) > 0) {
- continue;
- }
+ ElectricItem.manager.charge(mTemp, mVoltageIncrease, Integer.MAX_VALUE, false, false);
}
}
if (ElectricItem.manager.getCharge(mTemp) > mitemCurrentCharge) {
- Logger.WARNING("7");
mEntity.setEUVar(mEuStored - (mVoltage * mMulti));
mEuStored = mEntity.getEUVar();
- Logger.WARNING(
- "Charged " + mTemp.getDisplayName()
- + " | Slot: "
- + mItemSlot
- + " | EU Multiplier: "
- + mMulti
- + " | EU/t input: "
- + mVoltageIncrease
- + " | EU/t consumed by Tile: "
- + mVoltage
- + " | Item Max Charge: "
- + mItemMaxCharge
- + " | Item Start Charge: "
- + mitemCurrentCharge
- + " | Item New Charge"
- + ElectricItem.manager.getCharge(mTemp));
- mChargedItems++;
}
}
@@ -409,31 +301,10 @@ public class ChargingHelper {
mitemCurrentCharge = ElectricItem.manager.getCharge(mTemp);
if (mitemCurrentCharge < mItemMaxCharge && mitemCurrentCharge >= (mItemMaxCharge - mVoltage)) {
int xDif = (int) (mItemMaxCharge - mitemCurrentCharge);
- Logger.WARNING("8 - " + xDif);
- int g = 0;
- if ((g = GT_ModHandler.chargeElectricItem(mTemp, xDif, Integer.MAX_VALUE, true, false)) >= 0) {
- Logger.WARNING("8.5 - " + g);
+ if (GT_ModHandler.chargeElectricItem(mTemp, xDif, Integer.MAX_VALUE, true, false) >= 0) {
if (ElectricItem.manager.getCharge(mTemp) >= mItemMaxCharge) {
- Logger.WARNING("9");
mEntity.setEUVar(mEntity.getEUVar() - (xDif));
mEuStored = mEntity.getEUVar();
- Logger.WARNING(
- "Charged " + mTemp.getDisplayName()
- + " | Slot: "
- + mItemSlot
- + " | EU Multiplier: "
- + mMulti
- + " | EU/t input: "
- + mVoltageIncrease
- + " | EU/t consumed by Tile: "
- + mVoltage
- + " | Item Max Charge: "
- + mItemMaxCharge
- + " | Item Start Charge: "
- + mitemCurrentCharge
- + " | Item New Charge"
- + ElectricItem.manager.getCharge(mTemp));
- mChargedItems++;
}
}
}
@@ -441,33 +312,23 @@ public class ChargingHelper {
} else if (isItemValidRF(mTemp)) {
try {
IEnergyContainerItem rfItem = (IEnergyContainerItem) mTemp.getItem();
- long chargedPower = Math.min(
- rfItem.getMaxEnergyStored(mTemp) - rfItem.getEnergyStored(mTemp),
- mEntity.getEUVar() * mEUtoRF / 100L);
- chargedPower = rfItem.receiveEnergy(
- mTemp,
- chargedPower > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) chargedPower,
- false);
- chargedPower = chargedPower * 100L / mEUtoRF;
- mEntity.setEUVar(Math.max(mEntity.getEUVar() - chargedPower, 0));
- mChargedItems++;
- mEuStored = mEntity.getEUVar();
- } catch (Exception e) {
- Logger.WARNING("Failed charging of RF-Tool");
- }
- } else {
- if (mTemp != null) {
- Logger.WARNING("Found Non-Valid item. " + mTemp.getDisplayName());
+ if (rfItem != null) {
+ long chargedPower = Math.min(
+ rfItem.getMaxEnergyStored(mTemp) - rfItem.getEnergyStored(mTemp),
+ mEntity.getEUVar() * mEUtoRF / 100L);
+ chargedPower = rfItem.receiveEnergy(
+ mTemp,
+ chargedPower > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) chargedPower,
+ false);
+ chargedPower = chargedPower * 100L / mEUtoRF;
+ mEntity.setEUVar(Math.max(mEntity.getEUVar() - chargedPower, 0));
+ mEuStored = mEntity.getEUVar();
+ }
+ } catch (Exception ignored) {
+
}
}
}
-
- // Return Values
- if (mChargedItems < 1) {
- return mEuStoredOriginal;
- }
-
- return mEntity.getEUVar();
}
public static boolean isItemValid(final ItemStack itemstack) {
@@ -477,23 +338,10 @@ public class ChargingHelper {
if (GT_ModHandler.isElectricItem(itemstack)) {
return true;
}
- if ((accepts(itemstack)) || (itemstack.getItem() instanceof IElectricItem)) {
- return true;
- }
- return false;
+ return itemstack.getItem() instanceof IElectricItem;
}
- public static boolean isItemValidRF(final ItemStack itemStack) {
+ private static boolean isItemValidRF(final ItemStack itemStack) {
return itemStack != null && COFHCore.isModLoaded() && itemStack.getItem() instanceof IEnergyContainerItem;
}
-
- public static boolean accepts(final ItemStack stack) {
- if (stack == null) {
- return false;
- } else {
- return false;
- }
- // return (Info.itemEnergy.getEnergyValue(stack) > 0.0D) || (ElectricItem.manager.discharge(stack, (1.0D /
- // 0.0D), 4, true, true, true) > 0.0D);
- }
}