diff --git a/build.gradle b/build.gradle index 2e1cf22..1252f01 100644 --- a/build.gradle +++ b/build.gradle @@ -11,14 +11,14 @@ buildscript { } } dependencies { - classpath ('com.anatawa12.forge:ForgeGradle:1.2-1.0.+') { + classpath ("com.anatawa12.forge:ForgeGradle:1.2-1.0.+") { changing = true } } } -apply plugin: 'forge' -apply plugin: 'maven-publish' +apply plugin: "forge" +apply plugin: "maven-publish" sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 @@ -38,38 +38,46 @@ repositories { url = "https://s3.tilera.xyz/cdn/minecraft/libs/" metadataSources { artifact() } } + maven { + name "central" + url "https://maven.thorfusion.com/artifactory/central/" + } } dependencies { - implementation "covers1624:PowerConverters:1.7.10-2.11:deobf" - implementation "cofh:CoFHCore:[1.7.10]3.1.4-329:dev" - implementation "universalelectricity:universalelectricity:5.2.2:deobf" - implementation "universalelectricity:basiccomponents:2.0.1:deobf" implementation "appeng:appliedenergistics2:rv3-beta-21:dev" + implementation "codechicken:CodeChickenCore:1.7.10-1.0.7.48:dev" + implementation "codechicken:CodeChickenLib:1.7.10-1.1.3.141:dev" + implementation "codechicken:NotEnoughItems:1.7.10-1.0.5.120:dev" + implementation "cofh:CoFHCore:[1.7.10]3.1.4-329:dev" + implementation "com.eloraam.redpower:redpower:2.0pr10-dirty:deobf" implementation "com.hbm:HBM-NTM:1.0.27_X4627:deobf" + implementation "covers1624:PowerConverters:1.7.10-2.11:deobf" + implementation "universalelectricity:basiccomponents:2.0.1:deobf" + implementation "universalelectricity:universalelectricity:5.2.2:deobf" } processResources { inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version - filesMatching('mcmod.info') { - expand 'version':project.version, 'mcversion':project.minecraft.version + filesMatching("mcmod.info") { + expand "version":project.version, "mcversion":project.minecraft.version } } task deobfJar(type: Jar) { from sourceSets.main.output - classifier = 'deobf' + classifier = "deobf" } task sourcesJar(type: Jar) { from sourceSets.main.allSource - classifier = 'sources' + classifier = "sources" } publishing { - tasks.publish.dependsOn 'build' + tasks.publish.dependsOn "build" publications { mavenJava(MavenPublication) { artifactId = project.archivesBaseName @@ -81,7 +89,7 @@ publishing { } repositories { - if (project.hasProperty('mvnURL')) { + if (project.hasProperty("mvnURL")) { maven { credentials { username findProperty("mvnUsername") diff --git a/src/main/java/net/anvilcraft/pccompat/PCCompat.java b/src/main/java/net/anvilcraft/pccompat/PCCompat.java index 629cf08..c3e2635 100644 --- a/src/main/java/net/anvilcraft/pccompat/PCCompat.java +++ b/src/main/java/net/anvilcraft/pccompat/PCCompat.java @@ -11,6 +11,7 @@ import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import net.anvilcraft.pccompat.mods.AppliedEnergisticsProxy; import net.anvilcraft.pccompat.mods.HBMProxy; +import net.anvilcraft.pccompat.mods.RedPowerProxy; import net.anvilcraft.pccompat.mods.UniversalElectricityProxy; @Mod( @@ -18,7 +19,7 @@ import net.anvilcraft.pccompat.mods.UniversalElectricityProxy; name = "PC Compat", version = "0.1.0", dependencies - = "required-after:PowerConverters3;after:basiccomponents;after:ae2;after:hbm" + = "required-after:PowerConverters3;after:basiccomponents;after:appliedenergistics2;after:hbm;after:RedPowerCore" ) public class PCCompat { public static HashSet mods = new HashSet<>(); @@ -55,5 +56,7 @@ public class PCCompat { mods.add(new AppliedEnergisticsProxy()); if (Loader.isModLoaded("hbm")) mods.add(new HBMProxy()); + if (Loader.isModLoaded("RedPowerCore")) + mods.add(new RedPowerProxy()); } } diff --git a/src/main/java/net/anvilcraft/pccompat/blocks/BlockPowerConverterRedPower.java b/src/main/java/net/anvilcraft/pccompat/blocks/BlockPowerConverterRedPower.java new file mode 100644 index 0000000..11994c1 --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/blocks/BlockPowerConverterRedPower.java @@ -0,0 +1,40 @@ +package net.anvilcraft.pccompat.blocks; + +import covers1624.powerconverters.block.BlockPowerConverter; +import covers1624.powerconverters.gui.PCCreativeTab; +import net.anvilcraft.pccompat.tiles.TileEntityRedPowerConsumer; +import net.anvilcraft.pccompat.tiles.TileEntityRedPowerProducer; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockPowerConverterRedPower extends BlockPowerConverter { + public BlockPowerConverterRedPower() { + super(2); // 1 Consumer, 1 Producer + this.setCreativeTab(PCCreativeTab.tab); + } + + @Override + public void registerBlockIcons(IIconRegister reg) { + for (int i = 0; i < 4; i++) { + String state = i % 2 == 0 ? "off" : "on"; + String type = i < 2 ? "consumer" : "producer"; + + this._icons[i] = reg.registerIcon("pccompat:rp_" + type + "_" + state); + } + } + + @Override + public TileEntity createNewTileEntity(World world, int metadata) { + switch (metadata) { + case 0: + return new TileEntityRedPowerConsumer(); + + case 1: + return new TileEntityRedPowerProducer(); + + default: + return null; + } + } +} diff --git a/src/main/java/net/anvilcraft/pccompat/items/ItemBlockPowerConverterRedPower.java b/src/main/java/net/anvilcraft/pccompat/items/ItemBlockPowerConverterRedPower.java new file mode 100644 index 0000000..08c638d --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/items/ItemBlockPowerConverterRedPower.java @@ -0,0 +1,38 @@ +package net.anvilcraft.pccompat.items; + +import java.util.List; +import java.util.stream.IntStream; + +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class ItemBlockPowerConverterRedPower extends ItemBlock { + public ItemBlockPowerConverterRedPower(Block block) { + super(block); + this.setHasSubtypes(true); + this.setMaxDamage(0); + } + + @Override + public int getMetadata(int meta) { + return meta; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + int meta = stack.getItemDamage(); + + return "pccompat:power_converter_rp_" + meta; + } + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void getSubItems(Item alec1, CreativeTabs alec2, List list) { + IntStream.range(0, 2) + .mapToObj((i) -> new ItemStack(this, 1, i)) + .forEach(list::add); + } +} diff --git a/src/main/java/net/anvilcraft/pccompat/mods/AppliedEnergisticsProxy.java b/src/main/java/net/anvilcraft/pccompat/mods/AppliedEnergisticsProxy.java index c13c73a..925a01d 100644 --- a/src/main/java/net/anvilcraft/pccompat/mods/AppliedEnergisticsProxy.java +++ b/src/main/java/net/anvilcraft/pccompat/mods/AppliedEnergisticsProxy.java @@ -53,7 +53,7 @@ public class AppliedEnergisticsProxy implements IModProxy { Optional cell = AEApi.instance().definitions().blocks().energyCell().maybeStack(1); if (acceptor.isPresent() || cell.isPresent()) { - ItemStack stack = acceptor.isPresent() ? acceptor.get() : cell.get(); + ItemStack stack = acceptor.or(cell::get); new RecipeBuilder(new ShapedOreRecipeAdapter()) .pattern("G G", " S ", "G G") .ingredient('G', "ingotGold") diff --git a/src/main/java/net/anvilcraft/pccompat/mods/RedPowerProxy.java b/src/main/java/net/anvilcraft/pccompat/mods/RedPowerProxy.java new file mode 100644 index 0000000..d5fee75 --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/mods/RedPowerProxy.java @@ -0,0 +1,45 @@ +package net.anvilcraft.pccompat.mods; + +import covers1624.powerconverters.api.registry.PowerSystemRegistry; +import covers1624.powerconverters.api.registry.PowerSystemRegistry.PowerSystem; +import cpw.mods.fml.common.registry.GameRegistry; +import net.anvilcraft.pccompat.IModProxy; +import net.anvilcraft.pccompat.blocks.BlockPowerConverterRedPower; +import net.anvilcraft.pccompat.items.ItemBlockPowerConverterRedPower; +import net.anvilcraft.pccompat.tiles.TileEntityRedPowerConsumer; +import net.anvilcraft.pccompat.tiles.TileEntityRedPowerProducer; +import net.minecraft.block.Block; + +public class RedPowerProxy implements IModProxy { + public static PowerSystem powerSystem; + public static Block blockPowerConverter; + + @Override + public void registerPowerSystem() { + PowerSystemRegistry.registerPowerSystem( + powerSystem = new PowerSystem("Bluetricity", "BT", 7000, "W") + ); + } + + @Override + public void registerBlocks() { + GameRegistry.registerBlock( + blockPowerConverter = new BlockPowerConverterRedPower(), + ItemBlockPowerConverterRedPower.class, + "power_converter_red_power" + ); + } + + @Override + public void registerTiles() { + GameRegistry.registerTileEntity( + TileEntityRedPowerConsumer.class, "red_power_consumer" + ); + GameRegistry.registerTileEntity( + TileEntityRedPowerProducer.class, "red_power_producer" + ); + } + + @Override + public void registerRecipes() {} +} diff --git a/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerConsumer.java b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerConsumer.java new file mode 100644 index 0000000..d659418 --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerConsumer.java @@ -0,0 +1,40 @@ +package net.anvilcraft.pccompat.tiles; + +import java.util.Map.Entry; + +import com.eloraam.redpower.machine.TileBatteryBox; +import covers1624.powerconverters.tile.main.TileEntityEnergyConsumer; +import net.anvilcraft.pccompat.mods.RedPowerProxy; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityRedPowerConsumer extends TileEntityEnergyConsumer { + private int btLastTick; + + public TileEntityRedPowerConsumer() { + super(RedPowerProxy.powerSystem, 0, TileBatteryBox.class); + } + + @Override + public void updateEntity() { + super.updateEntity(); + + btLastTick = 0; + for (Entry box : getTiles().entrySet()) { + double toStore = Math.min( + box.getValue().Storage, + getTotalEnergyDemand() / getPowerSystem().getScaleAmmount() + ); + box.getValue().Storage -= toStore; + this.storeEnergy(toStore * getPowerSystem().getScaleAmmount(), false); + box.getValue().getWorldObj().markBlockForUpdate( + box.getValue().xCoord, box.getValue().yCoord, box.getValue().zCoord + ); + btLastTick += toStore; + } + } + + @Override + public double getInputRate() { + return btLastTick; + } +} diff --git a/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerProducer.java b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerProducer.java new file mode 100644 index 0000000..6842fb0 --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerProducer.java @@ -0,0 +1,30 @@ +package net.anvilcraft.pccompat.tiles; + +import java.util.Map.Entry; + +import com.eloraam.redpower.machine.TileBatteryBox; +import covers1624.powerconverters.tile.main.TileEntityEnergyProducer; +import net.anvilcraft.pccompat.mods.RedPowerProxy; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityRedPowerProducer extends TileEntityEnergyProducer { + public TileEntityRedPowerProducer() { + super(RedPowerProxy.powerSystem, 0, TileBatteryBox.class); + } + + @Override + public double produceEnergy(double energy) { + for (Entry box : getTiles().entrySet()) { + double toStore = Math.min( + (box.getValue().getMaxStorage() - box.getValue().Storage), + energy / getPowerSystem().getScaleAmmount() + ); + box.getValue().Storage += toStore; + box.getValue().getWorldObj().markBlockForUpdate( + box.getValue().xCoord, box.getValue().yCoord, box.getValue().zCoord + ); + energy -= toStore * getPowerSystem().getScaleAmmount(); + } + return energy; + } +} diff --git a/src/main/resources/assets/pccompat/lang/en_US.lang b/src/main/resources/assets/pccompat/lang/en_US.lang index 7599284..e7ff12b 100644 --- a/src/main/resources/assets/pccompat/lang/en_US.lang +++ b/src/main/resources/assets/pccompat/lang/en_US.lang @@ -12,3 +12,6 @@ pccompat:power_converter_ae_1.name=AE Consumer pccompat:power_converter_hbm_0.name=HBM Producer pccompat:power_converter_hbm_1.name=HBM Consumer + +pccompat:power_converter_rp_0.name=Bluetricity Consumer +pccompat:power_converter_rp_1.name=Bluetricity Producer diff --git a/src/main/resources/assets/pccompat/textures/blocks/rp_consumer_off.png b/src/main/resources/assets/pccompat/textures/blocks/rp_consumer_off.png new file mode 100644 index 0000000..c5b482c Binary files /dev/null and b/src/main/resources/assets/pccompat/textures/blocks/rp_consumer_off.png differ diff --git a/src/main/resources/assets/pccompat/textures/blocks/rp_consumer_on.png b/src/main/resources/assets/pccompat/textures/blocks/rp_consumer_on.png new file mode 100644 index 0000000..d8a75da Binary files /dev/null and b/src/main/resources/assets/pccompat/textures/blocks/rp_consumer_on.png differ diff --git a/src/main/resources/assets/pccompat/textures/blocks/rp_producer_off.png b/src/main/resources/assets/pccompat/textures/blocks/rp_producer_off.png new file mode 100644 index 0000000..9e4e81a Binary files /dev/null and b/src/main/resources/assets/pccompat/textures/blocks/rp_producer_off.png differ diff --git a/src/main/resources/assets/pccompat/textures/blocks/rp_producer_on.png b/src/main/resources/assets/pccompat/textures/blocks/rp_producer_on.png new file mode 100644 index 0000000..1ef9718 Binary files /dev/null and b/src/main/resources/assets/pccompat/textures/blocks/rp_producer_on.png differ