feat: red power

closes #1
This commit is contained in:
LordMZTE 2023-06-18 15:13:23 +02:00
parent f991b3cdce
commit 86fb544d3a
Signed by untrusted user: LordMZTE
GPG Key ID: B64802DC33A64FF6
13 changed files with 222 additions and 15 deletions

View File

@ -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")

View File

@ -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<IModProxy> 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());
}
}

View File

@ -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;
}
}
}

View File

@ -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);
}
}

View File

@ -53,7 +53,7 @@ public class AppliedEnergisticsProxy implements IModProxy {
Optional<ItemStack> 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")

View File

@ -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() {}
}

View File

@ -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<TileBatteryBox> {
private int btLastTick;
public TileEntityRedPowerConsumer() {
super(RedPowerProxy.powerSystem, 0, TileBatteryBox.class);
}
@Override
public void updateEntity() {
super.updateEntity();
btLastTick = 0;
for (Entry<ForgeDirection, TileBatteryBox> 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;
}
}

View File

@ -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<TileBatteryBox> {
public TileEntityRedPowerProducer() {
super(RedPowerProxy.powerSystem, 0, TileBatteryBox.class);
}
@Override
public double produceEnergy(double energy) {
for (Entry<ForgeDirection, TileBatteryBox> 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;
}
}

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 907 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 B