From 86fb544d3ae771daff46f9478c5930d5133e52a8 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Sun, 18 Jun 2023 15:13:23 +0200 Subject: [PATCH] feat: red power closes #1 --- build.gradle | 34 ++++++++----- .../net/anvilcraft/pccompat/PCCompat.java | 5 +- .../blocks/BlockPowerConverterRedPower.java | 40 ++++++++++++++++ .../ItemBlockPowerConverterRedPower.java | 38 +++++++++++++++ .../mods/AppliedEnergisticsProxy.java | 2 +- .../pccompat/mods/RedPowerProxy.java | 45 ++++++++++++++++++ .../tiles/TileEntityRedPowerConsumer.java | 40 ++++++++++++++++ .../tiles/TileEntityRedPowerProducer.java | 30 ++++++++++++ .../resources/assets/pccompat/lang/en_US.lang | 3 ++ .../textures/blocks/rp_consumer_off.png | Bin 0 -> 907 bytes .../textures/blocks/rp_consumer_on.png | Bin 0 -> 913 bytes .../textures/blocks/rp_producer_off.png | Bin 0 -> 913 bytes .../textures/blocks/rp_producer_on.png | Bin 0 -> 919 bytes 13 files changed, 222 insertions(+), 15 deletions(-) create mode 100644 src/main/java/net/anvilcraft/pccompat/blocks/BlockPowerConverterRedPower.java create mode 100644 src/main/java/net/anvilcraft/pccompat/items/ItemBlockPowerConverterRedPower.java create mode 100644 src/main/java/net/anvilcraft/pccompat/mods/RedPowerProxy.java create mode 100644 src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerConsumer.java create mode 100644 src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRedPowerProducer.java create mode 100644 src/main/resources/assets/pccompat/textures/blocks/rp_consumer_off.png create mode 100644 src/main/resources/assets/pccompat/textures/blocks/rp_consumer_on.png create mode 100644 src/main/resources/assets/pccompat/textures/blocks/rp_producer_off.png create mode 100644 src/main/resources/assets/pccompat/textures/blocks/rp_producer_on.png 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 0000000000000000000000000000000000000000..c5b482cd1eba5ef099b834d646d23e2df07879e6 GIT binary patch literal 907 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoBDg#49GXulV|3LaB z14F3+1H-EX1_rAc3=HD=lj4uMF)%O&2l#}zMnpvT`ue)Kxa``s>*UFkn>KASFfa%U z3u|p{oi=USty{NNF)&PGU^sQ^l)t}!c6N4od3j}J<+W?qfTqVXFdR8@#Mai<+uQrl zp+mcO?{;-{y>jKs<;#~DG)x!_tbKfZqNAhZ;^NMoJ9p{QrL$+xGU(edSUAs}J9oo| z4VIRcJ9q9pfByWLGiQz;KYsM+(bK0-GiX~dXqio(JbC{7`3Dak+_!Jvo;`b3ty;B| zfuRHFKXn5JeM<%%O9o>n1`AgPBS!`kCkAV;c?=9~3=D@4A8uh_$ObAiv170X%Gxp5 z`7n6JFnC5XxJEFzM>aArT)1#y`SRscr%q*X4xTx4=8`2#+}+(nLqmgtf?{K1uV25u zW5g($V1_m-X1~NDWZQi^&I5^nL%PT1DQ#WqhxMt0o|NsAUF&iBQx`8pt+ufz$218B>ki%Kv5n0T@z%2~Ij105pNB{-d zOFVsD*`Kos@uVEu~y3bq<=DcgCBPah{`Eq9D zVSSP32j;|2==MIXy*m4~YI3r1!=JF5x9{D&d)wZ^W>f!Z#tp*8&*#mXs`WfnZRwYX zkBrt_UB510>*}KGD_VU!xR2bzopr0AwLp*Z=?k literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d8a75da7569111ef5832c1f0bc016bde1ca90d11 GIT binary patch literal 913 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