From e54c35eacc6311995906b12ac041d308fe3eec77 Mon Sep 17 00:00:00 2001 From: Maxim Date: Thu, 11 Aug 2022 05:50:15 +0200 Subject: Wireless charger improvements (#272) * Added function to also charge RF tools * Added check if the TE is server side before registering it in the charging helper * Removed unused imports * Fixed charged items not increasing when charging RF tools and removed unnecessary check for cofh on mod load * Removed unnecessary import --- .../gregtech/common/helpers/ChargingHelper.java | 22 ++++++++++++++++++++++ .../basic/GregtechMetaWirelessCharger.java | 6 ++++-- 2 files changed, 26 insertions(+), 2 deletions(-) (limited to 'src/main/java/gtPlusPlus/xmod') 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 be9db74eef..0db61beebb 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/helpers/ChargingHelper.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +import cofh.api.energy.IEnergyContainerItem; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import gregtech.api.enums.GT_Values; @@ -11,9 +12,11 @@ import gregtech.api.util.GT_ModHandler; import gregtech.common.items.GT_MetaGenerated_Item_01; import gregtech.common.items.GT_MetaGenerated_Item_02; import gregtech.common.items.GT_MetaGenerated_Tool_01; +import gtPlusPlus.GTplusplus; import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.Pair; import gtPlusPlus.api.objects.minecraft.BlockPos; +import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.NBTUtils; @@ -26,6 +29,8 @@ import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import static gregtech.api.GregTech_API.mEUtoRF; + public class ChargingHelper { private static Map> mValidPlayers = new HashMap>(); @@ -384,6 +389,19 @@ 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()); @@ -412,6 +430,10 @@ public class ChargingHelper { return false; } + public static boolean isItemValidRF(final ItemStack itemStack) { + return itemStack != null && LoadedMods.CoFHCore && itemStack.getItem() instanceof IEnergyContainerItem; + } + public static boolean accepts(final ItemStack stack) { if (stack == null) { return false; diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java index 665a1f78df..13da9cd868 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/basic/GregtechMetaWirelessCharger.java @@ -582,8 +582,10 @@ public class GregtechMetaWirelessCharger extends GregtechMetaTileEntity { @Override public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { - if (!mHasBeenMapped && ChargingHelper.addEntry(getTileEntityPosition(), this)){ - mHasBeenMapped = true; + if (aBaseMetaTileEntity.isServerSide()) { + if (!mHasBeenMapped && ChargingHelper.addEntry(getTileEntityPosition(), this)){ + mHasBeenMapped = true; + } } super.onPreTick(aBaseMetaTileEntity, aTick); } -- cgit