commit 29d90d0e5b7ac25f4dab103d55a90e634f221540 Author: Timo Ley Date: Thu Apr 23 23:02:47 2020 +0200 Init diff --git a/ley/anvil/api/energy/CommonType.java b/ley/anvil/api/energy/CommonType.java new file mode 100644 index 0000000..227e19d --- /dev/null +++ b/ley/anvil/api/energy/CommonType.java @@ -0,0 +1,58 @@ +package ley.anvil.api.energy; + +import ley.anvil.api.energy.common.IElectrical; +import ley.anvil.api.energy.common.IHeat; +import ley.anvil.api.energy.common.IRotational; + +public enum CommonType implements IEnergyType { + FLUX { + @Override + public String getID() { + return "flux"; + } + }, + ELECTRIC { + @Override + public String getID() { + return "electric"; + } + + @Override + public Class getInterface() { + return IElectrical.class; + } + }, + HEAT { + @Override + public String getID() { + return "heat"; + } + + @Override + public Class getInterface() { + return IHeat.class; + } + }, + ROTATION { + @Override + public String getID() { + return "rotation"; + } + + @Override + public Class getInterface() { + return IRotational.class; + } + }, + MANA { + @Override + public String getID() { + return "mana"; + } + }; + + + + + +} diff --git a/ley/anvil/api/energy/IDirectionalEnergy.java b/ley/anvil/api/energy/IDirectionalEnergy.java new file mode 100644 index 0000000..b65061f --- /dev/null +++ b/ley/anvil/api/energy/IDirectionalEnergy.java @@ -0,0 +1,9 @@ +package ley.anvil.api.energy; + +import net.minecraft.util.EnumFacing; + +public interface IDirectionalEnergy { + + T getEnergy(EnumFacing side); + +} diff --git a/ley/anvil/api/energy/IEnergy.java b/ley/anvil/api/energy/IEnergy.java new file mode 100644 index 0000000..1b6c134 --- /dev/null +++ b/ley/anvil/api/energy/IEnergy.java @@ -0,0 +1,78 @@ +package ley.anvil.api.energy; + +import net.minecraft.util.EnumFacing; +import net.minecraftforge.energy.IEnergyStorage; + +import javax.annotation.Nullable; + +public interface IEnergy /*Forge Specific*/extends IEnergyStorage { + + IEnergyType getType(); + + default IEnergyType[] getTypes() { + return new IEnergyType[] {getType()}; + } + + long getCapacity(); + + long getStored(); + + void setStored(long energy); + + long getOutputPower(IEnergyType type); + + long getInputPower(IEnergyType type); + + long insertEnergy(long energy, IEnergyType type, boolean simulate); + + long extractEnergy(long energy, IEnergyType type, boolean simulate); + + boolean canInput(IEnergyType type); + + boolean canOutput(IEnergyType type); + + @Deprecated + default long getOutputPower(IEnergyType type, @Nullable EnumFacing to) {return getOutputPower(type);} + @Deprecated + default long getInputPower(IEnergyType type, @Nullable EnumFacing to) {return getInputPower(type);} + @Deprecated + default long insertEnergy(long energy, IEnergyType type, @Nullable EnumFacing from, boolean simulate) {return insertEnergy(energy,type, simulate);} + @Deprecated + default long extractEnergy(long energy, IEnergyType type, @Nullable EnumFacing from, boolean simulate) {return extractEnergy(energy, type, simulate);} + @Deprecated + default boolean canInput(IEnergyType type, @Nullable EnumFacing from) {return canInput(type);} + @Deprecated + default boolean canOutput(IEnergyType type, @Nullable EnumFacing to) {return canOutput(type);} + + //Forge Specific + + @Override + default int receiveEnergy(int maxReceive, boolean simulate) { + return (int) insertEnergy(maxReceive, CommonType.FLUX, simulate); + } + + @Override + default int extractEnergy(int maxExtract, boolean simulate) { + return (int) extractEnergy(maxExtract, CommonType.FLUX, simulate); + } + + @Override + default int getEnergyStored() { + return (int) getStored(); + } + + @Override + default int getMaxEnergyStored() { + return (int) getCapacity(); + } + + @Override + default boolean canExtract() { + return canOutput(CommonType.FLUX); + } + + @Override + default boolean canReceive() { + return canInput(CommonType.FLUX); + } +} diff --git a/ley/anvil/api/energy/IEnergyType.java b/ley/anvil/api/energy/IEnergyType.java new file mode 100644 index 0000000..59bef77 --- /dev/null +++ b/ley/anvil/api/energy/IEnergyType.java @@ -0,0 +1,15 @@ +package ley.anvil.api.energy; + +public interface IEnergyType { + + String getID(); + + default boolean equals(IEnergyType o) { + return getID().equals(o.getID()); + } + + default Class getInterface() { + return IEnergy.class; + } + +} diff --git a/ley/anvil/api/energy/common/EnumDirection.java b/ley/anvil/api/energy/common/EnumDirection.java new file mode 100644 index 0000000..b1111e5 --- /dev/null +++ b/ley/anvil/api/energy/common/EnumDirection.java @@ -0,0 +1,6 @@ +package ley.anvil.api.energy.common; + +public enum EnumDirection { + CLOCKWISE, + COUNTERCLOCKWISE; +} diff --git a/ley/anvil/api/energy/common/IElectrical.java b/ley/anvil/api/energy/common/IElectrical.java new file mode 100644 index 0000000..5506e09 --- /dev/null +++ b/ley/anvil/api/energy/common/IElectrical.java @@ -0,0 +1,19 @@ +package ley.anvil.api.energy.common; + +import ley.anvil.api.energy.CommonType; +import ley.anvil.api.energy.IEnergy; +import ley.anvil.api.energy.IEnergyType; + +public interface IElectrical extends IEnergy { + + int getVoltage(); + + long insertCharge(long charge, int voltage); + + int getMaxVoltage(); + + @Override + default IEnergyType getType() { + return CommonType.ELECTRIC; + } +} diff --git a/ley/anvil/api/energy/common/IHeat.java b/ley/anvil/api/energy/common/IHeat.java new file mode 100644 index 0000000..09088f5 --- /dev/null +++ b/ley/anvil/api/energy/common/IHeat.java @@ -0,0 +1,19 @@ +package ley.anvil.api.energy.common; + +import ley.anvil.api.energy.CommonType; +import ley.anvil.api.energy.IEnergy; +import ley.anvil.api.energy.IEnergyType; + +public interface IHeat extends IEnergy { + + int getTemperature(); + + void addTemperature(int temp); + + void removeTemperature(int temp); + + @Override + default IEnergyType getType() { + return CommonType.HEAT; + } +} diff --git a/ley/anvil/api/energy/common/IRotational.java b/ley/anvil/api/energy/common/IRotational.java new file mode 100644 index 0000000..7400888 --- /dev/null +++ b/ley/anvil/api/energy/common/IRotational.java @@ -0,0 +1,23 @@ +package ley.anvil.api.energy.common; + +import ley.anvil.api.energy.CommonType; +import ley.anvil.api.energy.IEnergy; +import ley.anvil.api.energy.IEnergyType; + +public interface IRotational extends IEnergy { + + int getTorque(); + + int getSpeed(); + + void applyTorque(int torque); + + void applySpeed(int speed); + + EnumDirection getDirection(); + + @Override + default IEnergyType getType() { + return CommonType.ROTATION; + } +}