maintanence update

This commit is contained in:
lehjr 2018-10-18 20:29:35 -04:00
parent 74bd150d16
commit 1e0b1923b8
11 changed files with 607 additions and 952 deletions

View file

@ -11,7 +11,7 @@ import net.minecraft.item.ItemStack;
* - handle charging, taking amount, tier, transfer limit, canProvideEnergy and simulate into account
* - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId())
* - update and manage the damage value for the visual charge indicator
*
*
* @note If you're implementing your own variant (ISpecialElectricItem), you can delegate to the
* default implementations through ElectricItem.rawManager. The default implementation is designed
* to minimize its dependency on its own constraints/structure and delegates most work back to the
@ -45,7 +45,7 @@ public interface IElectricItemManager {
/**
* Determine the charge level for the specified item.
*
*
* @param stack ItemStack containing the electric item
* @return charge level in EU
*/
@ -85,7 +85,7 @@ public interface IElectricItemManager {
/**
* Get the tool tip to display for electric items.
*
*
* @param stack ItemStack to determine the tooltip for
* @return tool tip string or null for none
*/

View file

@ -21,7 +21,7 @@ import net.minecraft.item.ItemStack;
@Optional.Interface(iface = "cofh.api.energy.IEnergyContainerItem", modid = "CoFHAPI|energy", striprefs = true),
@Optional.Interface(iface = "ic2.api.item.IElectricItemManager", modid = "IC2", striprefs = true),
@Optional.Interface(iface = "ic2.api.item.ISpecialElectricItem", modid = "IC2", striprefs = true),
@Optional.Interface(iface = "appeng.api.implementations.items.IAEItemPowerStorage", modid = "AE2", striprefs = true)
@Optional.Interface(iface = "appeng.api.implementations.items.IAEItemPowerStorage", modid = "appliedenergistics2", striprefs = true)
})
public interface IMuseElectricItem extends
IEnergyContainerItem,

View file

@ -1,253 +0,0 @@
package net.machinemuse.api.electricity;
import appeng.api.config.AccessRestriction;
import ic2.api.item.ElectricItem;
import ic2.api.item.IElectricItemManager;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.utils.ElectricItemUtils;
import net.machinemuse.utils.MuseItemUtils;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
/**
* Author: MachineMuse (Claire Semple)
* Created: 10:12 PM, 4/20/13
*
* Ported to Java by lehjr on 11/3/16.
*/
public class MuseElectricItem extends Item implements IMuseElectricItem {
private static MuseElectricItem INSTANCE;
public static MuseElectricItem getInstance() {
if (INSTANCE == null)
INSTANCE = new MuseElectricItem();
return INSTANCE;
}
/**
* Call to get the energy of an item
*
* @param stack ItemStack to set
* @return Current energy level
*/
@Override
public double getCurrentEnergy(ItemStack stack) {
return MuseItemUtils.getDoubleOrZero(stack, ElectricItemUtils.CURRENT_ENERGY);
}
/**
* Call to set the energy of an item
*
* @param stack ItemStack to set
* @return Maximum energy level
*/
@Override
public double getMaxEnergy(ItemStack stack) {
return ModuleManager.computeModularProperty(stack, ElectricItemUtils.MAXIMUM_ENERGY);
}
/**
* Call to set the energy of an item
*
* @param stack ItemStack to set
* @param energy Level to set it to
*/
@Override
public void setCurrentEnergy(ItemStack stack, double energy) {
MuseItemUtils.setDoubleOrRemove(stack, ElectricItemUtils.CURRENT_ENERGY, Math.min(energy, getMaxEnergy(stack)));
}
/**
* Call to drain energy from an item
*
* @param stack ItemStack being requested for energy
* @param requested Amount of energy to drain
* @return Amount of energy successfully drained
*/
@Override
public double drainEnergyFrom(ItemStack stack, double requested) {
double available = getCurrentEnergy(stack);
if (available > requested) {
setCurrentEnergy(stack, available - requested);
return requested;
} else {
setCurrentEnergy(stack, 0);
return available;
}
}
/**
* Call to give energy to an item
*
* @param stack ItemStack being provided with energy
* @param provided Amount of energy to add
* @return Amount of energy added
*/
@Override
public double giveEnergyTo(ItemStack stack, double provided) {
double available = getCurrentEnergy(stack);
double max = getMaxEnergy(stack);
if (available + provided < max) {
setCurrentEnergy(stack, available + provided);
return provided;
} else {
setCurrentEnergy(stack, max);
return max - available;
}
}
@Override
public int getMaxDamage(ItemStack itemStack) {
return 0;
}
/* Industrialcraft 2 -------------------------------------------------------------------------- */
@Override
public boolean canProvideEnergy(ItemStack itemStack) {
return true;
}
@Override
public Item getChargedItem(ItemStack itemStack) {
return this;
}
@Override
public Item getEmptyItem(ItemStack itemStack) {
return this;
}
@Override
public double getMaxCharge(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(getMaxEnergy(itemStack));
}
@Override
public int getTier(ItemStack itemStack) {
return ElectricConversions.getTier(itemStack);
}
@Override
public double getTransferLimit(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(Math.sqrt(getMaxEnergy(itemStack)));
}
@Override
public double charge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate){
double current = getCurrentEnergy(itemStack);
double transfer = (ignoreTransferLimit || amount < getTransferLimit(itemStack)) ? ElectricConversions.museEnergyFromEU(amount) : getTransferLimit(itemStack);
double given = giveEnergyTo(itemStack, transfer);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToEU(given);
}
@Override
public double discharge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double transfer = (ignoreTransferLimit || amount < getTransferLimit(itemStack)) ? ElectricConversions.museEnergyFromEU(amount) : getTransferLimit(itemStack);
double taken = drainEnergyFrom(itemStack, transfer);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToEU(taken);
}
@Override
public double getCharge(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(getCurrentEnergy(itemStack));
}
@Override
public boolean canUse(ItemStack itemStack, double amount) {
return ElectricConversions.museEnergyFromEU(amount) < getCurrentEnergy(itemStack);
}
@Override
public boolean use(ItemStack itemStack, double amount, EntityLivingBase entity) {
return ElectricItem.rawManager.use(itemStack, ElectricConversions.museEnergyToEU(amount), entity);
}
@Override
public void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity) {
ElectricItem.rawManager.chargeFromArmor(itemStack, entity);
}
@Override
public String getToolTip(ItemStack itemStack) {
// return itemStack.getTooltip(Minecraft.getMinecraft().thePlayer, false).toString(); // enabling this doubles up the tooltips
return "";
}
@Override
public IElectricItemManager getManager(ItemStack itemStack) {
return this;
}
/* Thermal Expansion -------------------------------------------------------------------------- */
@Override
public int receiveEnergy(ItemStack itemStack, int energy, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double receivedME = ElectricConversions.museEnergyFromRF(energy);
double eatenME = giveEnergyTo(itemStack, receivedME);
if (simulate) setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToRF(eatenME);
}
@Override
public int extractEnergy(ItemStack itemStack, int energy, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double requesteddME = ElectricConversions.museEnergyFromRF(energy);
double takenME = drainEnergyFrom(itemStack, requesteddME);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToRF(takenME);
}
@Override
public int getEnergyStored(ItemStack itemStack) {
return ElectricConversions.museEnergyToRF(getCurrentEnergy(itemStack));
}
@Override
public int getMaxEnergyStored(ItemStack itemStack) {
return ElectricConversions.museEnergyToRF(getMaxEnergy(itemStack));
}
/* Applied Energistics 2 ---------------------------------------------------------------------- */
@Override
public double injectAEPower(ItemStack itemStack, double ae) {
double current = getCurrentEnergy(itemStack);
double recieved = ElectricConversions.museEnergyFromAE(ae);
setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToAE(recieved);
}
@Override
public double extractAEPower(ItemStack itemStack, double ae) {
double current = getCurrentEnergy(itemStack);
double taken = ElectricConversions.museEnergyFromAE(ae);
setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToAE(taken);
}
@Override
public double getAEMaxPower(ItemStack itemStack) {
return ElectricConversions.museEnergyToAE(getCurrentEnergy(itemStack));
}
@Override
public double getAECurrentPower(ItemStack itemStack) {
return ElectricConversions.museEnergyToAE(getCurrentEnergy(itemStack));
}
@Override
public AccessRestriction getPowerFlow(ItemStack itemStack) {
return AccessRestriction.READ_WRITE;
}
}

View file

@ -20,7 +20,7 @@ import static net.machinemuse.powersuits.common.ModularPowersuits.VERSION;
*
* Ported to Java by lehjr on 11/14/16.
*/
@Mod(modid = MODID, version = VERSION, dependencies = "required-after:numina@[@numina_version@,)")
@Mod(modid = MODID, version = VERSION, dependencies = "required-after:numina@[@numina_version@,), ae2wct")
public final class ModularPowersuits {
public static final String MODID = "powersuits";
public static final String VERSION = "@VERSION@";

View file

@ -47,10 +47,4 @@ public interface IModularItemBase extends IModularItem, IMuseElectricItem {
List<String> getLongInfo(EntityPlayer player, ItemStack stack);
double getArmorDouble(EntityPlayer player, ItemStack stack);
double getPlayerEnergy(EntityPlayer player);
void drainPlayerEnergy(EntityPlayer player, double drainEnergy);
void givePlayerEnergy(EntityPlayer player, double joulesToGive);
}

View file

@ -1,190 +1,358 @@
package net.machinemuse.powersuits.item;
import appeng.api.config.AccessRestriction;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ic2.api.item.ElectricItem;
import ic2.api.item.IElectricItemManager;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.api.electricity.ElectricConversions;
import net.machinemuse.api.electricity.IMuseElectricItem;
import net.machinemuse.api.electricity.MuseElectricItem;
import net.machinemuse.numina.geometry.Colour;
import net.machinemuse.powersuits.powermodule.misc.CosmeticGlowModule;
import net.machinemuse.powersuits.powermodule.misc.TintModule;
import net.machinemuse.utils.ElectricItemUtils;
import net.machinemuse.utils.MuseCommonStrings;
import net.machinemuse.utils.MuseItemUtils;
import net.machinemuse.utils.MuseStringUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import java.util.ArrayList;
import java.util.List;
import static net.machinemuse.numina.general.MuseMathUtils.clampDouble;
/**
* Ported to Java by lehjr on 10/26/16.
*/
@Optional.InterfaceList({
@Optional.Interface(iface = "cofh.api.energy.IEnergyContainerItem", modid = "CoFHAPI|energy", striprefs = true),
@Optional.Interface(iface = "ic2.api.item.IElectricItemManager", modid = "IC2", striprefs = true),
@Optional.Interface(iface = "ic2.api.item.ISpecialElectricItem", modid = "IC2", striprefs = true),
@Optional.Interface(iface = "appeng.api.implementations.items.IAEItemPowerStorage", modid = "appliedenergistics2", striprefs = true)
})
public abstract class ItemElectricArmor extends ItemArmor implements IModularItemBase, IMuseElectricItem {
public ItemElectricArmor(final ItemArmor.ArmorMaterial material, final int index1, final int index2) {
super(material, index1, index2);
}
@SideOnly(Side.CLIENT)
@Override
public int getColorFromItemStack(ItemStack itemStack, int par2) {
return getColorFromItemStack(itemStack).getInt();
}
@Override
public Colour getGlowFromItemStack(ItemStack itemStack) {
if (!ModuleManager.itemHasActiveModule(itemStack, CosmeticGlowModule.MODULE_GLOW)) {
return Colour.LIGHTBLUE;
}
double computedred = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.RED_GLOW);
double computedgreen = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.GREEN_GLOW);
double computedblue = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.BLUE_GLOW);
return new Colour(clampDouble(computedred, 0, 1), clampDouble(computedgreen, 0, 1), clampDouble(computedblue, 0, 1), 0.8);
}
@Override
public Colour getColorFromItemStack(ItemStack itemStack) {
if (!ModuleManager.itemHasActiveModule(itemStack, TintModule.MODULE_TINT)) {
return Colour.WHITE;
}
double computedred = ModuleManager.computeModularProperty(itemStack, TintModule.RED_TINT);
double computedgreen = ModuleManager.computeModularProperty(itemStack, TintModule.GREEN_TINT);
double computedblue = ModuleManager.computeModularProperty(itemStack, TintModule.BLUE_TINT);
return new Colour(clampDouble(computedred, 0, 1), clampDouble(computedgreen, 0, 1), clampDouble(computedblue, 0, 1), 1.0F);
}
@Override
public boolean requiresMultipleRenderPasses() {
return false;
}
@SideOnly(Side.CLIENT)
@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List currentTipList, boolean advancedToolTips) {
MuseCommonStrings.addInformation(itemStack, player, currentTipList, advancedToolTips);
}
@Override
public String formatInfo(String string, double value) {
return string + '\t' + MuseStringUtils.formatNumberShort(value);
}
/* IModularItem ------------------------------------------------------------------------------- */
@SideOnly(Side.CLIENT)
@Override
public List<String> getLongInfo(EntityPlayer player, ItemStack itemStack) {
List<String> info = new ArrayList<>();
info.add("Detailed Summary");
info.add(formatInfo("Armor", getArmorDouble(player, itemStack)));
info.add(formatInfo("Energy Storage", getCurrentEnergy(itemStack)) + 'J');
info.add(formatInfo("Weight", MuseCommonStrings.getTotalWeight(itemStack)) + 'g');
return info;
}
@Override
public double getArmorDouble(EntityPlayer player, ItemStack itemStack) {
return 0;
}
@Override
public double getPlayerEnergy(EntityPlayer player) {
return ElectricItemUtils.getPlayerEnergy(player);
}
@Override
public void drainPlayerEnergy(EntityPlayer player, double drainEnergy) {
ElectricItemUtils.drainPlayerEnergy(player, drainEnergy);
}
@Override
public void givePlayerEnergy(EntityPlayer player, double joulesToGive) {
ElectricItemUtils.givePlayerEnergy(player, joulesToGive);
}
@Override
public int getMaxDamage(ItemStack itemStack) {
return 0;
}
@SideOnly(Side.CLIENT)
@Override
public String getToolTip(ItemStack itemStack) {
return null;
return itemStack.getTooltip(Minecraft.getMinecraft().thePlayer, false).toString();
}
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(final ItemStack stack, final int par2) {
return ModularItemBase.getInstance().getColorFromItemStack(stack, par2);
}
public Colour getGlowFromItemStack(final ItemStack stack) {
return ModularItemBase.getInstance().getGlowFromItemStack(stack);
}
public Colour getColorFromItemStack(final ItemStack stack) {
return ModularItemBase.getInstance().getColorFromItemStack(stack);
}
@SideOnly(Side.CLIENT)
public boolean requiresMultipleRenderPasses() {
return ModularItemBase.getInstance().requiresMultipleRenderPasses();
}
@SideOnly(Side.CLIENT)
/**
* Call to get the energy of an item
*
* @param stack ItemStack to set
* @return Current energy level
*/
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List currentTipList, boolean advancedToolTips) {
ModularItemBase.getInstance().addInformation(stack, player, currentTipList, advancedToolTips);
public double getCurrentEnergy(ItemStack stack) {
return MuseItemUtils.getDoubleOrZero(stack, ElectricItemUtils.CURRENT_ENERGY);
}
public String formatInfo(final String string, final double value) {
return ModularItemBase.getInstance().formatInfo(string, value);
/**
* Call to set the energy of an item
*
* @param stack ItemStack to set
* @return Maximum energy level
*/
@Override
public double getMaxEnergy(ItemStack stack) {
return ModuleManager.computeModularProperty(stack, ElectricItemUtils.MAXIMUM_ENERGY);
}
public List<String> getLongInfo(final EntityPlayer player, final ItemStack stack) {
return ModularItemBase.getInstance().getLongInfo(player, stack);
/**
* Call to set the energy of an item
*
* @param stack ItemStack to set
* @param energy Level to set it to
*/
@Override
public void setCurrentEnergy(ItemStack stack, double energy) {
MuseItemUtils.setDoubleOrRemove(stack, ElectricItemUtils.CURRENT_ENERGY, Math.min(energy, getMaxEnergy(stack)));
}
public double getArmorDouble(final EntityPlayer player, final ItemStack stack) {
return ModularItemBase.getInstance().getArmorDouble(player, stack);
/**
* Call to drain energy from an item
*
* @param stack ItemStack being requested for energy
* @param requested Amount of energy to drain
* @return Amount of energy successfully drained
*/
@Override
public double drainEnergyFrom(ItemStack stack, double requested) {
double available = getCurrentEnergy(stack);
if (available > requested) {
setCurrentEnergy(stack, available - requested);
return requested;
} else {
setCurrentEnergy(stack, 0);
return available;
}
}
public double getPlayerEnergy(final EntityPlayer player) {
return ModularItemBase.getInstance().getPlayerEnergy(player);
/**
* Call to give energy to an item
*
* @param stack ItemStack being provided with energy
* @param provided Amount of energy to add
* @return Amount of energy added
*/
@Override
public double giveEnergyTo(ItemStack stack, double provided) {
double available = getCurrentEnergy(stack);
double max = getMaxEnergy(stack);
if (available + provided < max) {
setCurrentEnergy(stack, available + provided);
return provided;
} else {
setCurrentEnergy(stack, max);
return max - available;
}
}
public void drainPlayerEnergy(final EntityPlayer player, final double drainEnergy) {
ModularItemBase.getInstance().drainPlayerEnergy(player, drainEnergy);
/* Industrialcraft 2 -------------------------------------------------------------------------- */
@Optional.Method(modid = "IC2")
@Override
public boolean canProvideEnergy(ItemStack itemStack) {
return true;
}
public void givePlayerEnergy(final EntityPlayer player, final double joulesToGive) {
ModularItemBase.getInstance().givePlayerEnergy(player, joulesToGive);
@Optional.Method(modid = "IC2")
@Override
public Item getChargedItem(ItemStack itemStack) {
return this;
}
public double getCurrentEnergy(final ItemStack stack) {
return MuseElectricItem.getInstance().getCurrentEnergy(stack);
@Optional.Method(modid = "IC2")
@Override
public Item getEmptyItem(ItemStack itemStack) {
return this;
}
public double getMaxEnergy(final ItemStack stack) {
return MuseElectricItem.getInstance().getMaxEnergy(stack);
@Optional.Method(modid = "IC2")
@Override
public double getMaxCharge(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(getMaxEnergy(itemStack));
}
public void setCurrentEnergy(final ItemStack stack, final double energy) {
MuseElectricItem.getInstance().setCurrentEnergy(stack, energy);
@Optional.Method(modid = "IC2")
@Override
public int getTier(ItemStack itemStack) {
return ElectricConversions.getTier(itemStack);
}
public double drainEnergyFrom(final ItemStack stack, final double requested) {
return MuseElectricItem.getInstance().drainEnergyFrom(stack, requested);
@Optional.Method(modid = "IC2")
@Override
public double getTransferLimit(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(Math.sqrt(getMaxEnergy(itemStack)));
}
public double giveEnergyTo(final ItemStack stack, final double provided) {
return MuseElectricItem.getInstance().giveEnergyTo(stack, provided);
@Optional.Method(modid = "IC2")
@Override
public double charge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate){
double current = getCurrentEnergy(itemStack);
double transfer = (ignoreTransferLimit || amount < getTransferLimit(itemStack)) ? ElectricConversions.museEnergyFromEU(amount) : getTransferLimit(itemStack);
double given = giveEnergyTo(itemStack, transfer);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToEU(given);
}
public IMuseElectricItem getManager(final ItemStack itemStack) {
return (IMuseElectricItem) MuseElectricItem.getInstance().getManager(itemStack);
@Optional.Method(modid = "IC2")
@Override
public double discharge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double transfer = (ignoreTransferLimit || amount < getTransferLimit(itemStack)) ? ElectricConversions.museEnergyFromEU(amount) : getTransferLimit(itemStack);
double taken = drainEnergyFrom(itemStack, transfer);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToEU(taken);
}
public void chargeFromArmor(final ItemStack itemStack, final EntityLivingBase entity) {
MuseElectricItem.getInstance().chargeFromArmor(itemStack, entity);
@Optional.Method(modid = "IC2")
@Override
public double getCharge(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(getCurrentEnergy(itemStack));
}
public boolean use(final ItemStack itemStack, final double amount, final EntityLivingBase entity) {
return MuseElectricItem.getInstance().use(itemStack, amount, entity);
@Optional.Method(modid = "IC2")
@Override
public boolean canUse(ItemStack itemStack, double amount) {
return ElectricConversions.museEnergyFromEU(amount) < getCurrentEnergy(itemStack);
}
public boolean canProvideEnergy(final ItemStack itemStack) {
return MuseElectricItem.getInstance().canProvideEnergy(itemStack);
@Optional.Method(modid = "IC2")
@Override
public boolean use(ItemStack itemStack, double amount, EntityLivingBase entity) {
return ElectricItem.rawManager.use(itemStack, ElectricConversions.museEnergyToEU(amount), entity);
}
public double getCharge(final ItemStack itemStack) {
return MuseElectricItem.getInstance().getCharge(itemStack);
@Optional.Method(modid = "IC2")
@Override
public void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity) {
ElectricItem.rawManager.chargeFromArmor(itemStack, entity);
}
public double getMaxCharge(final ItemStack itemStack) {
return MuseElectricItem.getInstance().getMaxCharge(itemStack);
@Optional.Method(modid = "IC2")
@Override
public IElectricItemManager getManager(ItemStack itemStack) {
return this;
}
/* Thermal Expansion -------------------------------------------------------------------------- */
@Override
public int receiveEnergy(ItemStack itemStack, int energy, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double receivedME = ElectricConversions.museEnergyFromRF(energy);
double eatenME = giveEnergyTo(itemStack, receivedME);
if (simulate) setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToRF(eatenME);
}
public int getTier(final ItemStack itemStack) {
return MuseElectricItem.getInstance().getTier(itemStack);
@Override
public int extractEnergy(ItemStack itemStack, int energy, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double requesteddME = ElectricConversions.museEnergyFromRF(energy);
double takenME = drainEnergyFrom(itemStack, requesteddME);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToRF(takenME);
}
public double getTransferLimit(final ItemStack itemStack) {
return MuseElectricItem.getInstance().getTransferLimit(itemStack);
@Override
public int getEnergyStored(ItemStack itemStack) {
return ElectricConversions.museEnergyToRF(getCurrentEnergy(itemStack));
}
public double charge(final ItemStack itemStack, final double amount, final int tier, final boolean ignoreTransferLimit, final boolean simulate) {
return MuseElectricItem.getInstance().charge(itemStack, amount, tier, ignoreTransferLimit, simulate);
}
public double discharge(final ItemStack itemStack, final double amount, final int tier, final boolean ignoreTransferLimit, final boolean externally, final boolean simulate) {
return MuseElectricItem.getInstance().discharge(itemStack, amount, tier, ignoreTransferLimit, externally, simulate);
}
public boolean canUse(final ItemStack itemStack, final double amount) {
return MuseElectricItem.getInstance().canUse(itemStack, amount);
}
public Item getChargedItem(final ItemStack itemStack) {
return MuseElectricItem.getInstance().getChargedItem(itemStack);
}
public Item getEmptyItem(final ItemStack itemStack) {
return MuseElectricItem.getInstance().getEmptyItem(itemStack);
}
public int receiveEnergy(final ItemStack stack, final int energy, final boolean simulate) {
return MuseElectricItem.getInstance().receiveEnergy(stack, energy, simulate);
}
public int extractEnergy(final ItemStack stack, final int energy, final boolean simulate) {
return MuseElectricItem.getInstance().extractEnergy(stack, energy, simulate);
}
public int getEnergyStored(final ItemStack theItem) {
return MuseElectricItem.getInstance().getEnergyStored(theItem);
}
public int getMaxEnergyStored(final ItemStack theItem) {
return MuseElectricItem.getInstance().getMaxEnergyStored(theItem);
}
public int getMaxDamage(final ItemStack itemStack) {
return MuseElectricItem.getInstance().getMaxDamage(itemStack);
@Override
public int getMaxEnergyStored(ItemStack itemStack) {
return ElectricConversions.museEnergyToRF(getMaxEnergy(itemStack));
}
/* Applied Energistics 2 ---------------------------------------------------------------------- */
public double injectAEPower(final ItemStack stack, final double ae) {
return MuseElectricItem.getInstance().injectAEPower(stack, ae);
@Override
public double injectAEPower(ItemStack itemStack, double ae) {
double current = getCurrentEnergy(itemStack);
double recieved = ElectricConversions.museEnergyFromAE(ae);
setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToAE(recieved);
}
public double extractAEPower(final ItemStack stack, final double ae) {
return MuseElectricItem.getInstance().extractAEPower(stack, ae);
@Override
public double extractAEPower(ItemStack itemStack, double ae) {
double current = getCurrentEnergy(itemStack);
double taken = ElectricConversions.museEnergyFromAE(ae);
setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToAE(taken);
}
public double getAEMaxPower(final ItemStack stack) {
return MuseElectricItem.getInstance().getAEMaxPower(stack);
@Override
public double getAEMaxPower(ItemStack itemStack) {
return ElectricConversions.museEnergyToAE(getCurrentEnergy(itemStack));
}
public double getAECurrentPower(final ItemStack stack) {
return MuseElectricItem.getInstance().getAECurrentPower(stack);
@Override
public double getAECurrentPower(ItemStack itemStack) {
return ElectricConversions.museEnergyToAE(getCurrentEnergy(itemStack));
}
public AccessRestriction getPowerFlow(final ItemStack stack) {
return MuseElectricItem.getInstance().getPowerFlow(stack);
@Override
public AccessRestriction getPowerFlow(ItemStack itemStack) {
return AccessRestriction.READ_WRITE;
}
}
}

View file

@ -44,6 +44,7 @@ public class ItemPowerArmorHelmet extends ItemPowerArmor implements
itemIcon = iconRegister.registerIcon(iconpath);
}
@Optional.Method(modid = "Thaumcraft")
@Override
public boolean showIngamePopups(ItemStack itemStack, EntityLivingBase entityLivingBase) {
return ModuleManager.itemHasActiveModule(itemStack, ThaumGogglesModule.MODULE_THAUM_GOGGLES);

View file

@ -2,13 +2,23 @@ package net.machinemuse.powersuits.item;
import appeng.api.config.AccessRestriction;
import com.google.common.collect.Sets;
import cpw.mods.fml.common.Optional;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ic2.api.item.ElectricItem;
import ic2.api.item.IElectricItemManager;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.api.electricity.ElectricConversions;
import net.machinemuse.api.electricity.IMuseElectricItem;
import net.machinemuse.api.electricity.MuseElectricItem;
import net.machinemuse.numina.geometry.Colour;
import net.machinemuse.powersuits.powermodule.misc.CosmeticGlowModule;
import net.machinemuse.powersuits.powermodule.misc.TintModule;
import net.machinemuse.utils.ElectricItemUtils;
import net.machinemuse.utils.MuseCommonStrings;
import net.machinemuse.utils.MuseItemUtils;
import net.machinemuse.utils.MuseStringUtils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
@ -16,12 +26,23 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import static net.machinemuse.numina.general.MuseMathUtils.clampDouble;
/**
* Ported to Java by lehjr on 11/4/16.
*/
@Optional.InterfaceList({
@Optional.Interface(iface = "cofh.api.energy.IEnergyContainerItem", modid = "CoFHAPI|energy", striprefs = true),
@Optional.Interface(iface = "ic2.api.item.IElectricItemManager", modid = "IC2", striprefs = true),
@Optional.Interface(iface = "ic2.api.item.ISpecialElectricItem", modid = "IC2", striprefs = true),
@Optional.Interface(iface = "appeng.api.implementations.items.IAEItemPowerStorage", modid = "appliedenergistics2", striprefs = true)
})
public class MPSItemElectricTool extends ItemTool implements IModularItemBase, IMuseElectricItem {
public static final Set<Block> blocksEffectiveOn = Sets.newHashSet(Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone,
Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore,
@ -33,194 +54,320 @@ public class MPSItemElectricTool extends ItemTool implements IModularItemBase, I
super(damageBonus, material, blocksEffectiveOn);
}
@Override
public String getToolTip(ItemStack itemStack) {
return null;
}
@Override
public double getCurrentEnergy(ItemStack stack) {
return MuseElectricItem.getInstance().getCurrentEnergy(stack);
}
@Override
public double getMaxEnergy(ItemStack stack) {
return MuseElectricItem.getInstance().getMaxEnergy(stack);
}
@Override
public void setCurrentEnergy(ItemStack stack, double energy) {
MuseElectricItem.getInstance().setCurrentEnergy(stack, energy);
}
@Override
public double drainEnergyFrom(ItemStack stack, double requested) {
return MuseElectricItem.getInstance().drainEnergyFrom(stack, requested);
}
@Override
public double giveEnergyTo(ItemStack stack, double provided) {
return MuseElectricItem.getInstance().giveEnergyTo(stack, provided);
}
@SideOnly(Side.CLIENT)
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List currentTipList, boolean advancedToolTips) {
ModularItemBase.getInstance().addInformation(stack, player, currentTipList, advancedToolTips);
}
/* Industrialcraft 2 -------------------------------------------------------------------------- */
@Override
public IElectricItemManager getManager(ItemStack stack) {
return MuseElectricItem.getInstance().getManager(stack);
}
@Override
public void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity) {
MuseElectricItem.getInstance().chargeFromArmor(itemStack, entity);
}
@Override
public boolean use(ItemStack itemStack, double amount, EntityLivingBase entity) {
return MuseElectricItem.getInstance().use(itemStack, amount, entity);
}
@Override
public boolean canProvideEnergy(ItemStack itemStack) {
return MuseElectricItem.getInstance().canProvideEnergy(itemStack);
}
@Override
public double getCharge(ItemStack itemStack) {
return MuseElectricItem.getInstance().getCharge(itemStack);
}
@Override
public double getMaxCharge(ItemStack itemStack) {
return MuseElectricItem.getInstance().getMaxCharge(itemStack);
}
@Override
public int getTier(ItemStack itemStack) {
return MuseElectricItem.getInstance().getTier(itemStack);
}
@Override
public double getTransferLimit(ItemStack itemStack) {
return MuseElectricItem.getInstance().getTransferLimit(itemStack);
}
@Override
public double charge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate) {
return MuseElectricItem.getInstance().charge(itemStack, amount, tier, ignoreTransferLimit, simulate);
}
@Override
public double discharge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) {
return MuseElectricItem.getInstance().discharge(itemStack, amount, tier, ignoreTransferLimit, externally, simulate);
}
@Override
public boolean canUse(ItemStack itemStack, double amount) {
return MuseElectricItem.getInstance().canUse(itemStack, amount);
}
@Override
public Item getChargedItem(ItemStack itemStack) {
return MuseElectricItem.getInstance().getChargedItem(itemStack);
}
@Override
public Item getEmptyItem(ItemStack itemStack) {
return MuseElectricItem.getInstance().getEmptyItem(itemStack);
}
/* Thermal Expansion -------------------------------------------------------------------------- */
@Override
public int receiveEnergy(ItemStack stack, int energy, boolean simulate) {
return MuseElectricItem.getInstance().receiveEnergy(stack, energy, simulate);
}
@Override
public int extractEnergy(ItemStack stack, int energy, boolean simulate) {
return MuseElectricItem.getInstance().extractEnergy(stack, energy, simulate);
}
@Override
public int getEnergyStored(ItemStack theItem) {
return MuseElectricItem.getInstance().getEnergyStored(theItem);
}
@Override
public int getMaxEnergyStored(ItemStack theItem) {
return MuseElectricItem.getInstance().getMaxEnergyStored(theItem);
}
/* Applied Energistics 2 ---------------------------------------------------------------------- */
@Override
public double injectAEPower(ItemStack stack, double ae) {
return MuseElectricItem.getInstance().injectAEPower(stack, ae);
}
@Override
public double extractAEPower(ItemStack stack, double ae) {
return MuseElectricItem.getInstance().extractAEPower(stack, ae);
}
@Override
public double getAEMaxPower(ItemStack stack) {
return MuseElectricItem.getInstance().getAEMaxPower(stack);
}
@Override
public double getAECurrentPower(ItemStack stack) {
return MuseElectricItem.getInstance().getAECurrentPower(stack);
}
@Override
public AccessRestriction getPowerFlow(ItemStack stack) {
return MuseElectricItem.getInstance().getPowerFlow(stack);
}
/* IModularItemBase ------------------------------------------------------------------------------ */
@Override
public Colour getGlowFromItemStack(ItemStack stack) {
return ModularItemBase.getInstance().getGlowFromItemStack(stack);
}
@Override
public Colour getColorFromItemStack(ItemStack stack) {
return ModularItemBase.getInstance().getColorFromItemStack(stack);
}
@Override
public String formatInfo(String string, double value) {
return ModularItemBase.getInstance().formatInfo(string, value);
}
@Override
public List<String> getLongInfo(EntityPlayer player, ItemStack stack) {
return ModularItemBase.getInstance().getLongInfo(player, stack);
}
@Override
public double getArmorDouble(EntityPlayer player, ItemStack stack) {
return 0;
}
/* MPSItemElectricTool ------------------------------------------------------------------------ */
@SideOnly(Side.CLIENT)
@Override
public int getColorFromItemStack(ItemStack itemStack, int par2) {
return getColorFromItemStack(itemStack).getInt();
}
@Override
public Colour getGlowFromItemStack(ItemStack itemStack) {
if (!ModuleManager.itemHasActiveModule(itemStack, CosmeticGlowModule.MODULE_GLOW)) {
return Colour.LIGHTBLUE;
}
double computedred = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.RED_GLOW);
double computedgreen = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.GREEN_GLOW);
double computedblue = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.BLUE_GLOW);
return new Colour(clampDouble(computedred, 0, 1), clampDouble(computedgreen, 0, 1), clampDouble(computedblue, 0, 1), 0.8);
}
@Override
public Colour getColorFromItemStack(ItemStack itemStack) {
if (!ModuleManager.itemHasActiveModule(itemStack, TintModule.MODULE_TINT)) {
return Colour.WHITE;
}
double computedred = ModuleManager.computeModularProperty(itemStack, TintModule.RED_TINT);
double computedgreen = ModuleManager.computeModularProperty(itemStack, TintModule.GREEN_TINT);
double computedblue = ModuleManager.computeModularProperty(itemStack, TintModule.BLUE_TINT);
return new Colour(clampDouble(computedred, 0, 1), clampDouble(computedgreen, 0, 1), clampDouble(computedblue, 0, 1), 1.0F);
}
@Override
public boolean requiresMultipleRenderPasses() {
return false;
}
@SideOnly(Side.CLIENT)
@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List currentTipList, boolean advancedToolTips) {
MuseCommonStrings.addInformation(itemStack, player, currentTipList, advancedToolTips);
}
@Override
public String formatInfo(String string, double value) {
return string + '\t' + MuseStringUtils.formatNumberShort(value);
}
/* IModularItem ------------------------------------------------------------------------------- */
@SideOnly(Side.CLIENT)
@Override
public List<String> getLongInfo(EntityPlayer player, ItemStack itemStack) {
List<String> info = new ArrayList<>();
info.add("Detailed Summary");
info.add(formatInfo("Armor", getArmorDouble(player, itemStack)));
info.add(formatInfo("Energy Storage", getCurrentEnergy(itemStack)) + 'J');
info.add(formatInfo("Weight", MuseCommonStrings.getTotalWeight(itemStack)) + 'g');
return info;
}
@Override
public double getPlayerEnergy(EntityPlayer player) {
return 0;
return ElectricItemUtils.getPlayerEnergy(player);
}
@Override
public void drainPlayerEnergy(EntityPlayer player, double drainEnergy) {
ElectricItemUtils.drainPlayerEnergy(player, drainEnergy);
}
@Override
public void givePlayerEnergy(EntityPlayer player, double joulesToGive) {
ElectricItemUtils.givePlayerEnergy(player, joulesToGive);
}
@Override
public int getMaxDamage(ItemStack itemStack) {
return 0;
}
@SideOnly(Side.CLIENT)
@Override
public String getToolTip(ItemStack itemStack) {
return itemStack.getTooltip(Minecraft.getMinecraft().thePlayer, false).toString();
}
/**
* Call to get the energy of an item
*
* @param stack ItemStack to set
* @return Current energy level
*/
@Override
public double getCurrentEnergy(ItemStack stack) {
return MuseItemUtils.getDoubleOrZero(stack, ElectricItemUtils.CURRENT_ENERGY);
}
/**
* Call to set the energy of an item
*
* @param stack ItemStack to set
* @return Maximum energy level
*/
@Override
public double getMaxEnergy(ItemStack stack) {
return ModuleManager.computeModularProperty(stack, ElectricItemUtils.MAXIMUM_ENERGY);
}
/**
* Call to set the energy of an item
*
* @param stack ItemStack to set
* @param energy Level to set it to
*/
@Override
public void setCurrentEnergy(ItemStack stack, double energy) {
MuseItemUtils.setDoubleOrRemove(stack, ElectricItemUtils.CURRENT_ENERGY, Math.min(energy, getMaxEnergy(stack)));
}
/**
* Call to drain energy from an item
*
* @param stack ItemStack being requested for energy
* @param requested Amount of energy to drain
* @return Amount of energy successfully drained
*/
@Override
public double drainEnergyFrom(ItemStack stack, double requested) {
double available = getCurrentEnergy(stack);
if (available > requested) {
setCurrentEnergy(stack, available - requested);
return requested;
} else {
setCurrentEnergy(stack, 0);
return available;
}
}
/**
* Call to give energy to an item
*
* @param stack ItemStack being provided with energy
* @param provided Amount of energy to add
* @return Amount of energy added
*/
@Override
public double giveEnergyTo(ItemStack stack, double provided) {
double available = getCurrentEnergy(stack);
double max = getMaxEnergy(stack);
if (available + provided < max) {
setCurrentEnergy(stack, available + provided);
return provided;
} else {
setCurrentEnergy(stack, max);
return max - available;
}
}
/* Industrialcraft 2 -------------------------------------------------------------------------- */
@Optional.Method(modid = "IC2")
@Override
public boolean canProvideEnergy(ItemStack itemStack) {
return true;
}
@Optional.Method(modid = "IC2")
@Override
public Item getChargedItem(ItemStack itemStack) {
return this;
}
@Optional.Method(modid = "IC2")
@Override
public Item getEmptyItem(ItemStack itemStack) {
return this;
}
@Optional.Method(modid = "IC2")
@Override
public double getMaxCharge(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(getMaxEnergy(itemStack));
}
@Optional.Method(modid = "IC2")
@Override
public int getTier(ItemStack itemStack) {
return ElectricConversions.getTier(itemStack);
}
@Optional.Method(modid = "IC2")
@Override
public double getTransferLimit(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(Math.sqrt(getMaxEnergy(itemStack)));
}
@Optional.Method(modid = "IC2")
@Override
public double charge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate){
double current = getCurrentEnergy(itemStack);
double transfer = (ignoreTransferLimit || amount < getTransferLimit(itemStack)) ? ElectricConversions.museEnergyFromEU(amount) : getTransferLimit(itemStack);
double given = giveEnergyTo(itemStack, transfer);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToEU(given);
}
@Optional.Method(modid = "IC2")
@Override
public double discharge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double transfer = (ignoreTransferLimit || amount < getTransferLimit(itemStack)) ? ElectricConversions.museEnergyFromEU(amount) : getTransferLimit(itemStack);
double taken = drainEnergyFrom(itemStack, transfer);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToEU(taken);
}
@Optional.Method(modid = "IC2")
@Override
public double getCharge(ItemStack itemStack) {
return ElectricConversions.museEnergyToEU(getCurrentEnergy(itemStack));
}
@Optional.Method(modid = "IC2")
@Override
public boolean canUse(ItemStack itemStack, double amount) {
return ElectricConversions.museEnergyFromEU(amount) < getCurrentEnergy(itemStack);
}
@Optional.Method(modid = "IC2")
@Override
public boolean use(ItemStack itemStack, double amount, EntityLivingBase entity) {
return ElectricItem.rawManager.use(itemStack, ElectricConversions.museEnergyToEU(amount), entity);
}
@Optional.Method(modid = "IC2")
@Override
public void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity) {
ElectricItem.rawManager.chargeFromArmor(itemStack, entity);
}
@Optional.Method(modid = "IC2")
@Override
public IElectricItemManager getManager(ItemStack itemStack) {
return this;
}
/* Thermal Expansion -------------------------------------------------------------------------- */
@Override
public int receiveEnergy(ItemStack itemStack, int energy, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double receivedME = ElectricConversions.museEnergyFromRF(energy);
double eatenME = giveEnergyTo(itemStack, receivedME);
if (simulate) setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToRF(eatenME);
}
@Override
public int extractEnergy(ItemStack itemStack, int energy, boolean simulate) {
double current = getCurrentEnergy(itemStack);
double requesteddME = ElectricConversions.museEnergyFromRF(energy);
double takenME = drainEnergyFrom(itemStack, requesteddME);
if (simulate) {
setCurrentEnergy(itemStack, current);
}
return ElectricConversions.museEnergyToRF(takenME);
}
@Override
public int getEnergyStored(ItemStack itemStack) {
return ElectricConversions.museEnergyToRF(getCurrentEnergy(itemStack));
}
@Override
public int getMaxEnergyStored(ItemStack itemStack) {
return ElectricConversions.museEnergyToRF(getMaxEnergy(itemStack));
}
/* Applied Energistics 2 ---------------------------------------------------------------------- */
@Override
public double injectAEPower(ItemStack itemStack, double ae) {
double current = getCurrentEnergy(itemStack);
double recieved = ElectricConversions.museEnergyFromAE(ae);
setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToAE(recieved);
}
@Override
public double extractAEPower(ItemStack itemStack, double ae) {
double current = getCurrentEnergy(itemStack);
double taken = ElectricConversions.museEnergyFromAE(ae);
setCurrentEnergy(itemStack, current);
return ElectricConversions.museEnergyToAE(taken);
}
@Override
public double getAEMaxPower(ItemStack itemStack) {
return ElectricConversions.museEnergyToAE(getCurrentEnergy(itemStack));
}
@Override
public double getAECurrentPower(ItemStack itemStack) {
return ElectricConversions.museEnergyToAE(getCurrentEnergy(itemStack));
}
@Override
public AccessRestriction getPowerFlow(ItemStack itemStack) {
return AccessRestriction.READ_WRITE;
}
}

View file

@ -1,130 +0,0 @@
//package net.machinemuse.powersuits.item;
//
//import net.machinemuse.api.ModuleManager;
//import net.machinemuse.api.moduletrigger.IRightClickModule;
//import net.machinemuse.numina.item.NuminaItemUtils;
//import net.machinemuse.numina.network.MusePacketModeChangeRequest;
//import net.machinemuse.numina.network.PacketSender;
//import net.minecraft.entity.player.EntityPlayer;
//import net.minecraft.item.ItemStack;
//import net.minecraft.util.IIcon;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * Author: MachineMuse (Claire Semple)
// * Created: 4:52 PM, 9/5/13
// *
// * Ported to Java by lehjr on 12/12/16.
// */
//public class ModeChangingModularItem implements IModeChangingModularItem {
// private static ModeChangingModularItem ourInstance = new ModeChangingModularItem();
//
// public static ModeChangingModularItem getInstance() {
// return ourInstance;
// }
//
// private ModeChangingModularItem() {
// }
//
// @Override
// public void setActiveMode(ItemStack itemStack, String newMode) {
// NuminaItemUtils.getTagCompound(itemStack).setString("mode", newMode);
// }
//
// @Override
// public String getActiveMode(ItemStack itemStack, EntityPlayer player) {
// return getActiveMode(itemStack);
// }
//
// @Override
// public void cycleMode(ItemStack itemStack, EntityPlayer player, int dMode) {
// List<String> modes = getValidModes(itemStack, player);
// if (!modes.isEmpty()) {
// int newindex = clampMode(modes.indexOf(getActiveMode(itemStack, player)) + dMode, modes.size());
// String newmode = modes.get(newindex);
// setActiveMode(itemStack, newmode);
// PacketSender.sendToServer(new MusePacketModeChangeRequest(player,newmode, player.inventory.currentItem));
// }
// }
//
// @Override
// public String nextMode(ItemStack itemStack, EntityPlayer player) {
// List<String> modes = getValidModes(itemStack, player);
// if (!modes.isEmpty()) {
// int newindex = clampMode(modes.indexOf(getActiveMode(itemStack, player)) + 1, modes.size());
// return modes.get(newindex);
// } else {
// return "";
// }
// }
//
// @Override
// public String prevMode(ItemStack itemStack, EntityPlayer player) {
// List<String> modes = getValidModes(itemStack, player);
// if (!modes.isEmpty()) {
// int newindex = clampMode(modes.indexOf(getActiveMode(itemStack, player)) - 1, modes.size());
// return modes.get(newindex);
// } else {
// return "";
// }
// }
//
// @Override
// public void cycleModeForItem(ItemStack itemStack, EntityPlayer player, int dMode) {
// if (itemStack != null) {
// this.cycleMode(itemStack, player, dMode);
// }
// }
//
// @Override
// public IIcon getModeIcon(String mode, ItemStack itemStack, EntityPlayer player) {
// if (!mode.isEmpty())
// return ModuleManager.getModule(mode).getIcon(itemStack);
// return null;
// }
//
//
// private int clampMode(int selection, int modesSize) {
// if (selection > 0) {
// return selection % modesSize;
// } else {
// return (selection + modesSize * (-selection)) % modesSize;
// }
// }
////-------------
//
//
// @Override
// public List<String> getValidModes(ItemStack stack, EntityPlayer player) {
// return getValidModes(stack);
// }
//
// @Override
// public List<String> getValidModes(ItemStack itemStack) {
//// List<String> validModes = new ArrayList<>();
////
//// for (IRightClickModule module : ModuleManager.getRightClickModules()) {
//// if (module.isValidForItem(itemStack))
//// if (ModuleManager.itemHasActiveModule(itemStack, module.getDataName()))
//// validModes.add(module.getDataName());
//// }
// return ModuleManager.getValidModes(itemStack);
// }
//
// @Override
// public String getActiveMode(ItemStack itemStack) {
// String modeFromNBT = NuminaItemUtils.getTagCompound(itemStack).getString("mode");
// if (!modeFromNBT.isEmpty()) {
// return modeFromNBT;
// } else {
// List<String> validModes = getValidModes(itemStack);
// if (!validModes.isEmpty()) {
// return validModes.get(0);
// } else {
// return "";
// }
// }
// }
//}

View file

@ -1,273 +0,0 @@
package net.machinemuse.powersuits.item;
import appeng.api.config.AccessRestriction;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ic2.api.item.IElectricItemManager;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.api.electricity.MuseElectricItem;
import net.machinemuse.numina.geometry.Colour;
import net.machinemuse.powersuits.powermodule.misc.CosmeticGlowModule;
import net.machinemuse.powersuits.powermodule.misc.TintModule;
import net.machinemuse.utils.ElectricItemUtils;
import net.machinemuse.utils.MuseCommonStrings;
import net.machinemuse.utils.MuseStringUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import java.util.ArrayList;
import java.util.List;
import static net.machinemuse.numina.general.MuseMathUtils.clampDouble;
/**
* Author: MachineMuse (Claire Semple)
* Created: 7:49 PM, 4/23/13
*
* Ported to Java by lehjr on 11/4/16.
*/
public class ModularItemBase extends Item implements IModularItemBase {
private static ModularItemBase INSTANCE;
public static ModularItemBase getInstance() {
if (INSTANCE == null) {
INSTANCE = new ModularItemBase();
}
return INSTANCE;
}
@SideOnly(Side.CLIENT)
@Override
public int getColorFromItemStack(ItemStack itemStack, int par2) {
return getColorFromItemStack(itemStack).getInt();
}
@Override
public Colour getGlowFromItemStack(ItemStack itemStack) {
if (!ModuleManager.itemHasActiveModule(itemStack, CosmeticGlowModule.MODULE_GLOW)) {
return Colour.LIGHTBLUE;
}
double computedred = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.RED_GLOW);
double computedgreen = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.GREEN_GLOW);
double computedblue = ModuleManager.computeModularProperty(itemStack, CosmeticGlowModule.BLUE_GLOW);
return new Colour(clampDouble(computedred, 0, 1), clampDouble(computedgreen, 0, 1), clampDouble(computedblue, 0, 1), 0.8);
}
@Override
public Colour getColorFromItemStack(ItemStack itemStack) {
if (!ModuleManager.itemHasActiveModule(itemStack, TintModule.MODULE_TINT)) {
return Colour.WHITE;
}
double computedred = ModuleManager.computeModularProperty(itemStack, TintModule.RED_TINT);
double computedgreen = ModuleManager.computeModularProperty(itemStack, TintModule.GREEN_TINT);
double computedblue = ModuleManager.computeModularProperty(itemStack, TintModule.BLUE_TINT);
return new Colour(clampDouble(computedred, 0, 1), clampDouble(computedgreen, 0, 1), clampDouble(computedblue, 0, 1), 1.0F);
}
@Override
public boolean requiresMultipleRenderPasses() {
return false;
}
@Override
public void addInformation(ItemStack itemStack, EntityPlayer player, List currentTipList, boolean advancedToolTips) {
MuseCommonStrings.addInformation(itemStack, player, currentTipList, advancedToolTips);
}
@Override
public String formatInfo(String string, double value) {
return string + '\t' + MuseStringUtils.formatNumberShort(value);
}
/* IModularItem ------------------------------------------------------------------------------- */
@SideOnly(Side.CLIENT)
@Override
public List<String> getLongInfo(EntityPlayer player, ItemStack itemStack) {
List<String> info = new ArrayList<>();
info.add("Detailed Summary");
info.add(formatInfo("Armor", getArmorDouble(player, itemStack)));
info.add(formatInfo("Energy Storage", getCurrentEnergy(itemStack)) + 'J');
info.add(formatInfo("Weight", MuseCommonStrings.getTotalWeight(itemStack)) + 'g');
return info;
}
@Override
public double getArmorDouble(EntityPlayer player, ItemStack itemStack) {
return 0;
}
@Override
public double getPlayerEnergy(EntityPlayer player) {
return ElectricItemUtils.getPlayerEnergy(player);
}
@Override
public void drainPlayerEnergy(EntityPlayer player, double drainEnergy) {
ElectricItemUtils.drainPlayerEnergy(player, drainEnergy);
}
@Override
public void givePlayerEnergy(EntityPlayer player, double joulesToGive) {
ElectricItemUtils.givePlayerEnergy(player, joulesToGive);
}
/* MuseElectricItem --------------------------------------------------------------------------- */
@Override
public double getCurrentEnergy(ItemStack itemStack) {
return MuseElectricItem.getInstance().getCurrentEnergy(itemStack);
}
@Override
public double getMaxEnergy(ItemStack itemStack) {
return MuseElectricItem.getInstance().getCurrentEnergy(itemStack);
}
@Override
public void setCurrentEnergy(ItemStack itemStack, double energy) {
MuseElectricItem.getInstance().setCurrentEnergy(itemStack, energy);
}
@Override
public double drainEnergyFrom(ItemStack itemStack, double requested) {
return MuseElectricItem.getInstance().drainEnergyFrom(itemStack, requested);
}
@Override
public double giveEnergyTo(ItemStack itemStack, double provided) {
return MuseElectricItem.getInstance().giveEnergyTo(itemStack, provided);
}
@Override
public int getMaxDamage(ItemStack itemStack) {
return 0;
}
@SideOnly(Side.CLIENT)
@Override
public String getToolTip(ItemStack itemStack) {
return itemStack.getTooltip(Minecraft.getMinecraft().thePlayer, false).toString();
}
/* Industrialcraft 2 -------------------------------------------------------------------------- */
@Override
public boolean canProvideEnergy(ItemStack itemStack) {
return MuseElectricItem.getInstance().canProvideEnergy(itemStack);
}
@Override
public Item getChargedItem(ItemStack itemStack) {
return MuseElectricItem.getInstance().getChargedItem(itemStack);
}
@Override
public Item getEmptyItem(ItemStack itemStack) {
return MuseElectricItem.getInstance().getEmptyItem(itemStack);
}
@Override
public double getMaxCharge(ItemStack itemStack) {
return MuseElectricItem.getInstance().getMaxCharge(itemStack);
}
@Override
public int getTier(ItemStack itemStack) {
return MuseElectricItem.getInstance().getTier(itemStack);
}
@Override
public double getTransferLimit(ItemStack itemStack) {
return MuseElectricItem.getInstance().getTransferLimit(itemStack);
}
@Override
public double charge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate) {
return MuseElectricItem.getInstance().charge(itemStack, amount, tier, ignoreTransferLimit, simulate);
}
@Override
public double discharge(ItemStack itemStack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) {
return MuseElectricItem.getInstance().discharge(itemStack, amount, tier, ignoreTransferLimit, externally, simulate);
}
@Override
public double getCharge(ItemStack itemStack) {
return MuseElectricItem.getInstance().getCharge(itemStack);
}
@Override
public boolean canUse(ItemStack itemStack, double amount) {
return MuseElectricItem.getInstance().canUse(itemStack, amount);
}
@Override
public boolean use(ItemStack itemStack, double amount, EntityLivingBase entity) {
return MuseElectricItem.getInstance().use(itemStack, amount, entity);
}
@Override
public void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity) {
MuseElectricItem.getInstance().chargeFromArmor(itemStack, entity);
}
@Override
public IElectricItemManager getManager(ItemStack itemStack) {
return MuseElectricItem.getInstance().getManager(itemStack);
}
/* Thermal Expansion -------------------------------------------------------------------------- */
@Override
public int receiveEnergy(ItemStack itemStack, int energy, boolean simulate) {
return MuseElectricItem.getInstance().receiveEnergy(itemStack, energy, simulate);
}
@Override
public int extractEnergy(ItemStack itemStack, int energy, boolean simulate) {
return MuseElectricItem.getInstance().extractEnergy(itemStack, energy, simulate);
}
@Override
public int getEnergyStored(ItemStack itemStack) {
return MuseElectricItem.getInstance().getEnergyStored(itemStack);
}
@Override
public int getMaxEnergyStored(ItemStack itemStack) {
return MuseElectricItem.getInstance().getMaxEnergyStored(itemStack);
}
/* Applied Energistics 2 ---------------------------------------------------------------------- */
@Override
public double injectAEPower(ItemStack itemStack, double ae) {
return MuseElectricItem.getInstance().injectAEPower(itemStack, ae);
}
@Override
public double extractAEPower(ItemStack itemStack, double ae) {
return MuseElectricItem.getInstance().extractAEPower(itemStack, ae);
}
@Override
public double getAEMaxPower(ItemStack itemStack) {
return MuseElectricItem.getInstance().getAEMaxPower(itemStack);
}
@Override
public double getAECurrentPower(ItemStack itemStack) {
return MuseElectricItem.getInstance().getAECurrentPower(itemStack);
}
@Override
public AccessRestriction getPowerFlow(ItemStack itemStack) {
return MuseElectricItem.getInstance().getPowerFlow(itemStack);
}
}

View file

@ -27,7 +27,8 @@
"Thaumcraft",
"GalacticraftCore",
"numina",
"chisel"
"chisel",
"ae2wct"
],
"useDependencyInformation": true