generated from tilera/1710mod
feat: RF and EU compat
This commit is contained in:
parent
4101578cd5
commit
7bf5274829
29
build.gradle
29
build.gradle
|
@ -1,9 +1,10 @@
|
|||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven { url 'https://maven.tilera.xyz' }
|
||||
maven {
|
||||
name = "forge"
|
||||
url = "https://files.minecraftforge.net/maven"
|
||||
url = "https://maven.minecraftforge.net/"
|
||||
}
|
||||
maven {
|
||||
name = "sonatype"
|
||||
|
@ -11,7 +12,7 @@ buildscript {
|
|||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
||||
classpath 'com.anatawa12.forge:ForgeGradle:1.2-1.1.0-SNAPSHOT'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,24 +42,28 @@ minecraft {
|
|||
|
||||
repositories {
|
||||
maven { url = "https://maven.tilera.xyz" }
|
||||
maven {
|
||||
name = "ic2c"
|
||||
url = "https://maven.ic2.player.to/"
|
||||
metadataSources {
|
||||
artifact()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile "universalelectricity:basiccomponents:1.0.2-dirty:deobf"
|
||||
implementation "universalelectricity:basiccomponents:1.1.0:deobf"
|
||||
implementation 'net.industrial-craft:industrialcraft-2:2.2.827-experimental:dev'
|
||||
}
|
||||
|
||||
processResources
|
||||
{
|
||||
processResources {
|
||||
// This will ensure that this task is redone when the versions change.
|
||||
inputs.property "version", project.version
|
||||
inputs.property "mcversion", project.minecraft.version
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include 'mcmod.info'
|
||||
|
||||
// Replace values in only mcmod.info.
|
||||
filesMatching('mcmod.info') {
|
||||
// Replace version and mcversion.
|
||||
expand 'version':project.version, 'mcversion':project.minecraft.version
|
||||
}
|
||||
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude 'mcmod.info'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
|||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
|
||||
|
|
|
@ -1,15 +1,11 @@
|
|||
package icbm.api;
|
||||
|
||||
import universalelectricity.prefab.flag.FlagRegistry;
|
||||
|
||||
public class ICBMFlags {
|
||||
// TODO: WTF
|
||||
// public static final String FLAG_BAN_GLOBAL =
|
||||
// FlagRegistry.registerFlag("ban_icbm");
|
||||
// public static final String FLAG_BAN_EXPLOSIVE =
|
||||
// FlagRegistry.registerFlag("ban_explosive");
|
||||
// public static final String FLAG_BAN_GRENADE =
|
||||
// FlagRegistry.registerFlag("ban_grenade");
|
||||
// public static final String FLAG_BAN_MISSILE =
|
||||
// FlagRegistry.registerFlag("ban_missile");
|
||||
// public static final String FLAG_BAN_MINECART =
|
||||
// FlagRegistry.registerFlag("ban_minecart");
|
||||
public static final String FLAG_BAN_GLOBAL = FlagRegistry.registerFlag("ban_icbm");
|
||||
public static final String FLAG_BAN_EXPLOSIVE = FlagRegistry.registerFlag("ban_explosive");
|
||||
public static final String FLAG_BAN_GRENADE = FlagRegistry.registerFlag("ban_grenade");
|
||||
public static final String FLAG_BAN_MISSILE = FlagRegistry.registerFlag("ban_missile");
|
||||
public static final String FLAG_BAN_MINECART = FlagRegistry.registerFlag("ban_minecart");
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package mffs;
|
||||
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
|
||||
public class ConversionHelper {
|
||||
|
||||
public static double toEU(double joules) {
|
||||
return joules / UniversalElectricity.UE_IC2_RATIO;
|
||||
}
|
||||
|
||||
public static double fromEU(double eu) {
|
||||
return eu * UniversalElectricity.UE_IC2_RATIO;
|
||||
}
|
||||
|
||||
public static int toRF(double joules) {
|
||||
return (int) (joules / UniversalElectricity.UE_RF_RATIO);
|
||||
}
|
||||
|
||||
public static double fromRF(int rf) {
|
||||
return rf * UniversalElectricity.UE_RF_RATIO;
|
||||
}
|
||||
|
||||
}
|
|
@ -75,7 +75,7 @@ import universalelectricity.prefab.CustomDamageSource;
|
|||
import universalelectricity.prefab.TranslationHelper;
|
||||
|
||||
@Mod(modid = "MFFS", name = "Modular Force Field System", version = "3.1.0",
|
||||
useMetadata = true)
|
||||
useMetadata = true, dependencies = "required-after:basiccomponents;after:IC2")
|
||||
public class ModularForceFieldSystem {
|
||||
public static final String CHANNEL = "MFFS";
|
||||
public static final String ID = "MFFS";
|
||||
|
|
|
@ -221,7 +221,7 @@ public class Recipes {
|
|||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleRotate)
|
||||
.pattern("F ", " F", " F")
|
||||
.pattern("F ", " F ", " F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
|
|
|
@ -1,19 +1,44 @@
|
|||
package mffs.base;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import calclavia.lib.IUniversalEnergyTile;
|
||||
import cofh.api.energy.IEnergyReceiver;
|
||||
import ic2.api.energy.event.EnergyTileLoadEvent;
|
||||
import ic2.api.energy.event.EnergyTileUnloadEvent;
|
||||
import ic2.api.energy.tile.IEnergySink;
|
||||
import mffs.ConversionHelper;
|
||||
import mffs.tileentity.TileEntityCoercionDeriver;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.core.electricity.ElectricityNetworkHelper;
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
@Optional.Interface(modid = "IC2", iface = "ic2.api.energy.tile.IEnergySink")
|
||||
public abstract class TileEntityUniversalEnergy
|
||||
extends TileEntityModuleAcceptor implements IUniversalEnergyTile {
|
||||
extends TileEntityModuleAcceptor implements IUniversalEnergyTile, IEnergyReceiver, IEnergySink {
|
||||
public double prevWatts;
|
||||
public double wattsReceived;
|
||||
|
||||
public TileEntityUniversalEnergy() { this.wattsReceived = 0.0; }
|
||||
|
||||
@Override
|
||||
public void initiate() {
|
||||
super.initiate();
|
||||
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
|
||||
super.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
|
@ -61,4 +86,75 @@ public abstract class TileEntityUniversalEnergy
|
|||
|
||||
return remaining;
|
||||
}
|
||||
|
||||
public int produceRF(int amount) {
|
||||
int available = amount;
|
||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
||||
TileEntity te = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj);
|
||||
if (te instanceof IEnergyReceiver) {
|
||||
IEnergyReceiver receiver = (IEnergyReceiver) te;
|
||||
if (!receiver.canConnectEnergy(dir.getOpposite())) continue;
|
||||
available -= receiver.receiveEnergy(dir.getOpposite(), (available), false);
|
||||
}
|
||||
}
|
||||
return amount - available;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectEnergy(ForgeDirection side) {
|
||||
return canConnect(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(ForgeDirection side, int energy, boolean simulate) {
|
||||
if (!canConnect(side)) return 0;
|
||||
double toReceive = ConversionHelper.fromRF(energy);
|
||||
double free = getWattBuffer() - wattsReceived;
|
||||
double toInject = Math.min(toReceive, free);
|
||||
if (!simulate) {
|
||||
wattsReceived += toInject;
|
||||
}
|
||||
return (int) Math.ceil(toInject / UniversalElectricity.UE_RF_RATIO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyStored(ForgeDirection var1) {
|
||||
return ConversionHelper.toRF(getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored(ForgeDirection var1) {
|
||||
return ConversionHelper.toRF(getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) {
|
||||
return getConsumingSides().contains(direction);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public double getDemandedEnergy() {
|
||||
return ConversionHelper.toEU(this.getRequest().getWatts());
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public int getSinkTier() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public double injectEnergy(ForgeDirection direction, double i, double voltage) {
|
||||
double givenElectricity = ConversionHelper.fromEU(i);
|
||||
double rejects = 0.0;
|
||||
if (givenElectricity > this.getWattBuffer()) {
|
||||
rejects = givenElectricity - this.getRequest().getWatts();
|
||||
}
|
||||
this.onReceive(new ElectricityPack(givenElectricity / this.getVoltage(), this.getVoltage()));
|
||||
return ConversionHelper.toEU(rejects);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -53,9 +53,9 @@ public class GuiCoercionDeriver extends GuiBase {
|
|||
}
|
||||
}
|
||||
this.fontRendererObj.drawString(
|
||||
1000.0 * UniversalElectricity.TO_BC_RATIO + " MJ/s", 85, 30, 4210752);
|
||||
1000.0 * UniversalElectricity.UE_RF_RATIO + " RF/s", 85, 30, 4210752);
|
||||
this.fontRendererObj.drawString(
|
||||
1000.0 * UniversalElectricity.TO_IC2_RATIO + " EU/s", 85, 40, 4210752);
|
||||
1000.0 * UniversalElectricity.UE_IC2_RATIO + " EU/s", 85, 40, 4210752);
|
||||
this.fontRendererObj.drawString(
|
||||
ElectricityDisplay.getDisplayShort(
|
||||
1000.0, ElectricityDisplay.ElectricUnit.WATT),
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package mffs.tileentity;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import ic2.api.energy.tile.IEnergySource;
|
||||
import mffs.ConversionHelper;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.Settings;
|
||||
import mffs.api.modules.IModule;
|
||||
|
@ -13,13 +16,16 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||
import net.minecraft.network.NetworkManager;
|
||||
import net.minecraft.network.Packet;
|
||||
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
import universalelectricity.core.item.ElectricItemHelper;
|
||||
import universalelectricity.core.item.IItemElectric;
|
||||
import universalelectricity.core.item.IItemElectricityStorage;
|
||||
|
||||
public class TileEntityCoercionDeriver extends TileEntityUniversalEnergy {
|
||||
@Optional.Interface(modid = "IC2", iface = "ic2.api.energy.tile.IEnergySource")
|
||||
public class TileEntityCoercionDeriver extends TileEntityUniversalEnergy implements IEnergySource {
|
||||
public static final int WATTAGE = 1000;
|
||||
public static final int REQUIRED_TIME = 200;
|
||||
public static final int MULTIPLE_PRODUCTION = 4;
|
||||
|
@ -52,8 +58,12 @@ public class TileEntityCoercionDeriver extends TileEntityUniversalEnergy {
|
|||
this.getStackInSlot(1), remainder.getWatts(),
|
||||
this.getVoltage());
|
||||
}
|
||||
double convertedToRF = 0.0;
|
||||
if ((remainder.getWatts() - electricItemGiven) > 0.0) {
|
||||
convertedToRF = ConversionHelper.fromRF(this.produceRF(ConversionHelper.toRF(remainder.getWatts() - electricItemGiven)));
|
||||
}
|
||||
this.requestFortron(
|
||||
(int)((watts - (remainder.getWatts() - electricItemGiven)) / FORTRON_UE_RATIO),
|
||||
(int)Math.ceil((watts - (remainder.getWatts() - (electricItemGiven + convertedToRF))) / FORTRON_UE_RATIO),
|
||||
true);
|
||||
} else {
|
||||
super.wattsReceived += ElectricItemHelper.dechargeItem(
|
||||
|
@ -197,4 +207,35 @@ public class TileEntityCoercionDeriver extends TileEntityUniversalEnergy {
|
|||
public boolean canConnect(final ForgeDirection direction) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction) {
|
||||
return canConnect(direction) && this.getStackInSlot(1) != null;
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public double getOfferedEnergy() {
|
||||
ItemStack battery = this.getStackInSlot(1);
|
||||
if (battery == null || !(battery.getItem() instanceof IItemElectricityStorage) || !this.isInversed) return 0;
|
||||
IItemElectricityStorage impl = (IItemElectricityStorage) battery.getItem();
|
||||
double joules = impl.getJoules(battery);
|
||||
return Math.min(ConversionHelper.toEU(joules), 32);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public void drawEnergy(double amount) {
|
||||
ItemStack battery = this.getStackInSlot(1);
|
||||
if (battery == null || !(battery.getItem() instanceof IItemElectricityStorage)) return;
|
||||
IItemElectricityStorage impl = (IItemElectricityStorage) battery.getItem();
|
||||
impl.setJoules(impl.getJoules(battery)- ConversionHelper.fromEU(amount), battery);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public int getSourceTier() {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue