├── .gitattributes ├── .gitignore ├── Changelog.md ├── README.md ├── build.gradle ├── build.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs └── gregtech_1.7.10-5.08.05-api.jar ├── src ├── api │ └── java │ │ ├── cofh │ │ └── api │ │ │ ├── CoFHAPIProps.java │ │ │ ├── energy │ │ │ ├── EnergyStorage.java │ │ │ ├── IEnergyConnection.java │ │ │ ├── IEnergyContainerItem.java │ │ │ ├── IEnergyHandler.java │ │ │ ├── IEnergyProvider.java │ │ │ ├── IEnergyReceiver.java │ │ │ ├── IEnergyStorage.java │ │ │ ├── ItemEnergyContainer.java │ │ │ ├── TileEnergyHandler.java │ │ │ └── package-info.java │ │ │ └── package-info.java │ │ └── factorization │ │ └── api │ │ ├── Charge.java │ │ ├── Coord.java │ │ ├── IChargeConductor.java │ │ ├── ICoord.java │ │ └── IMeterInfo.java └── main │ ├── java │ └── powercrystals │ │ └── powerconverters │ │ ├── PowerConverterCore.java │ │ ├── common │ │ ├── BlockPowerConverterCommon.java │ │ ├── BridgeSideData.java │ │ ├── IChargeHandler.java │ │ ├── ItemBlockPowerConverterCommon.java │ │ ├── TileEntityCharger.java │ │ └── TileEntityEnergyBridge.java │ │ ├── crafting │ │ ├── RecipeProvider.java │ │ └── mods │ │ │ ├── RecipeBuildCraft.java │ │ │ ├── RecipeEnderIO.java │ │ │ ├── RecipeFactorization.java │ │ │ ├── RecipeForestry.java │ │ │ ├── RecipeGregTech5.java │ │ │ ├── RecipeIndustrialCraft.java │ │ │ ├── RecipeMFFS.java │ │ │ ├── RecipeRailcraft.java │ │ │ ├── RecipeThermalExpansion.java │ │ │ └── RecipeVanilla.java │ │ ├── gui │ │ ├── ContainerEnergyBridge.java │ │ ├── GuiEnergyBridge.java │ │ ├── PCCreativeTab.java │ │ └── PCGUIHandler.java │ │ ├── mods │ │ └── reference │ │ │ ├── InterfaceReference.java │ │ │ └── ModIDReference.java │ │ ├── network │ │ ├── GenericHandler.java │ │ └── PacketClientSync.java │ │ ├── position │ │ ├── BlockPosition.java │ │ └── INeighboorUpdateTile.java │ │ ├── power │ │ ├── PowerSystem.java │ │ ├── PowerSystemManager.java │ │ ├── base │ │ │ ├── BlockPowerConverter.java │ │ │ ├── TileEntityBridgeComponent.java │ │ │ ├── TileEntityEnergyConsumer.java │ │ │ └── TileEntityEnergyProducer.java │ │ ├── systems │ │ │ ├── PowerFactorization.java │ │ │ ├── PowerFortron.java │ │ │ ├── PowerGregTech5.java │ │ │ ├── PowerIndustrialcraft.java │ │ │ ├── PowerRedstoneFlux.java │ │ │ ├── PowerSteam.java │ │ │ ├── Rotarycraft.java │ │ │ ├── factorization │ │ │ │ ├── BlockFactorization.java │ │ │ │ ├── ItemBlockFactorization.java │ │ │ │ ├── TileEntityFactorizationConsumer.java │ │ │ │ └── TileEntityFactorizationProducer.java │ │ │ ├── fortron │ │ │ │ ├── BlockFortron.java │ │ │ │ ├── ItemBlockFortron.java │ │ │ │ ├── TileEntityFortronConsumer.java │ │ │ │ └── TileEntityFortronProducer.java │ │ │ ├── gt5 │ │ │ │ ├── BaseGTConsumerTileEntity.java │ │ │ │ ├── BaseGTProducerTileEntity.java │ │ │ │ ├── BlockGregTechConsumer.java │ │ │ │ ├── BlockGregTechProducer.java │ │ │ │ ├── ItemBlockGregTechConsumer.java │ │ │ │ ├── ItemBlockGregTechProducer.java │ │ │ │ ├── TileEntityGregTechConsumer.java │ │ │ │ └── TileEntityGregTechProducer.java │ │ │ ├── ic2 │ │ │ │ ├── BlockIndustrialCraft.java │ │ │ │ ├── ChargeHandlerIndustrialCraft.java │ │ │ │ ├── ItemBlockIndustrialCraft.java │ │ │ │ ├── TileEntityIndustrialCraftConsumer.java │ │ │ │ └── TileEntityIndustrialCraftProducer.java │ │ │ ├── rf │ │ │ │ ├── BlockRF.java │ │ │ │ ├── ChargeHandlerRF.java │ │ │ │ ├── ItemBlockRF.java │ │ │ │ ├── TileEntityRFConsumer.java │ │ │ │ └── TileEntityRFProducer.java │ │ │ └── steam │ │ │ │ ├── BlockSteam.java │ │ │ │ ├── ItemBlockSteam.java │ │ │ │ ├── TileEntitySteamConsumer.java │ │ │ │ └── TileEntitySteamProducer.java │ │ └── util │ │ │ └── ICustomHandler.java │ │ └── renderer │ │ ├── ExposedGuiContainer.java │ │ └── RenderUtility.java │ └── resources │ ├── assets │ └── powerconverters │ │ ├── lang │ │ ├── de_DE.lang │ │ ├── en_US.lang │ │ ├── pt_BR.lang │ │ ├── ru_RU.lang │ │ ├── zh_CN.lang │ │ └── zh_TW.lang │ │ └── textures │ │ ├── blocks │ │ ├── bc │ │ │ ├── consumer_off.png │ │ │ ├── consumer_on.png │ │ │ ├── producer_off.png │ │ │ └── producer_on.png │ │ ├── common │ │ │ ├── bridge.png │ │ │ ├── charger_off.png │ │ │ └── charger_on.png │ │ ├── factorization │ │ │ ├── consumer_off.png │ │ │ ├── consumer_on.png │ │ │ ├── producer_off.png │ │ │ └── producer_on.png │ │ ├── gt │ │ │ ├── ev │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── hv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── iv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── luv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── lv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── mv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── ulv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── uv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ └── zpmv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ ├── ic2 │ │ │ ├── ev │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── hv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── lv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ ├── mv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ │ └── uv │ │ │ │ ├── consumer_off.png │ │ │ │ ├── consumer_on.png │ │ │ │ ├── producer_off.png │ │ │ │ └── producer_on.png │ │ ├── mffs │ │ │ ├── consumer_off.png │ │ │ ├── consumer_on.png │ │ │ ├── producer_off.png │ │ │ └── producer_on.png │ │ ├── steam │ │ │ ├── consumer_off.png │ │ │ ├── consumer_on.png │ │ │ ├── producer_off.png │ │ │ └── producer_on.png │ │ └── te │ │ │ ├── consumer_off.png │ │ │ ├── consumer_on.png │ │ │ ├── producer_off.png │ │ │ └── producer_on.png │ │ ├── gui │ │ ├── .directory │ │ └── energybridge.png │ │ └── items │ │ └── 000_JetpackFueller.png │ ├── mcmod.info │ ├── pack.mcmeta │ └── version.properties └── work ├── asset_gt-block.psd └── asset_mffs-block.psd /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | [Dd]ebug/ 46 | [Rr]elease/ 47 | *_i.c 48 | *_p.c 49 | *.ilk 50 | *.meta 51 | *.obj 52 | *.pch 53 | *.pdb 54 | *.pgc 55 | *.pgd 56 | *.rsp 57 | *.sbr 58 | *.tlb 59 | *.tli 60 | *.tlh 61 | *.tmp 62 | *.vspscc 63 | .builds 64 | *.dotCover 65 | 66 | # Visual Studio profiler 67 | *.psess 68 | *.vsp 69 | 70 | # Backup & report files from converting an old project file to a newer 71 | # Visual Studio version. Backup files are not needed, because we have git ;-) 72 | _UpgradeReport_Files/ 73 | Backup*/ 74 | UpgradeLog*.XML 75 | 76 | ############ 77 | ## Intellij IDEA 78 | ############ 79 | 80 | .intellj 81 | *.iml 82 | *.ipr 83 | *.iws 84 | 85 | ############ 86 | ## OS Specific 87 | ############ 88 | 89 | # Windows image file caches 90 | Thumbs.db 91 | 92 | # Folder config file 93 | Desktop.ini 94 | 95 | # Mac crap 96 | .DS_Store 97 | 98 | # Linux files 99 | .directory 100 | 101 | ########### 102 | 103 | eclipse/** 104 | out/** 105 | run/** 106 | -------------------------------------------------------------------------------- /Changelog.md: -------------------------------------------------------------------------------- 1 | Changelog 2 | ========= 3 | 4 | 3.3.0 5 | ----- 6 | Changes: 7 | * Split gregtech producers and consumers into 2 block IDs. THIS WILL GET RID OFF ALL GREGTECH PRODUCERS AND CONSUMERS 8 | Fixes: 9 | * Fix ratios for RF, ic2steam and ic2superheated steam. 10 | * Fix display of steam amount. 11 | 12 | To use new ratios, please delete the powerconverters/common.cfg config file. 13 | 14 | 3.2.1 15 | ----- 16 | Changes: 17 | * Change how redstone detection works. Hopefully it makes it work better. 18 | Fixes: 19 | * Fix IC2 consumers not working. 20 | 21 | 3.2.0 22 | ----- 23 | Fixes: 24 | * Fix crashes on opening GUI in SMP. 25 | Changes: 26 | * Re-add gregtech back in for Gregtech 5 port. 27 | * Energy bridge '% chg' tooltip shows the type of steam stored. 28 | * Producers and consumers will not transfer any energy when provided with a redstone signal. 29 | 30 | 3.1.1 31 | ----- 32 | Fixes: 33 | * Steam consumers and producers actually work. 34 | 35 | 3.1.0 36 | ------ 37 | Changes: 38 | * Steam consumer can take multiple types of steam (steam, ic2steam, ic2superheatedsteam) if they are registered. 39 | * Steam producer can be crafted to output different types of steam. 40 | * Sync power values to client on login to server. Should make tooltips more accurate. 41 | Fixes: 42 | * Bugs that may have been caused by client-server desync. 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | PowerConverters (maintained by portablejim) 2 | =================== 3 | Build status: ![](http://jamesmckay.id.au:8080/job/Power%20Converters/badge/icon) 4 | 5 | Information 6 | -- 7 | [Minecraft Forum Topic](http://www.minecraftforum.net/topic/2407074-164-powerconverters-originally-by-powercrystals) 8 | 9 | Other topics: 10 | * [Origial topic by PowerCrystals (support for minecraft 1.5)](http://www.minecraftforum.net/topic/1629898-0) 11 | * [samrg472's topic](http://www.minecraftforum.net/topic/1695968-). Seems to be dead (at time of writing) 12 | 13 | Installation 14 | -- 15 | 1. Make sure you have MinecraftForge installed 16 | * [MinecraftForge Download](http://files.minecraftforge.net/ "Download MinecraftForge") 17 | 2. Download a PowerConverters build as provided in the download link 18 | * [Power Converters Download](http://jamesmckay.id.au:8080/job/Power%20Converters/lastStableBuild/ "Download Power Converters") 19 | 3. Place the zip file you downloaded in your mods folder 20 | 21 | Credits 22 | -- 23 | 24 | This mod was originally created by Powercrystals, updated by samrg472 and portablejim 25 | -------------------------------------------------------------------------------- /build.properties: -------------------------------------------------------------------------------- 1 | minecraft_version=1.7.10 2 | forge_version=10.13.4.1492-1.7.10 3 | compatible_versions=1.7.10 4 | # 5 | # 6 | # 7 | # 8 | mod_version=3.3.0 9 | # 10 | # 11 | # 12 | # 13 | ic2_version=2.2.767-experimental 14 | buildcraft_version=7.0.21 15 | resonantengine_version=3.3.0.394 16 | waila_version=1.5.10_1.7.10 17 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jul 02 15:54:47 CDT 2014 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip 7 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /libs/gregtech_1.7.10-5.08.05-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/libs/gregtech_1.7.10-5.08.05-api.jar -------------------------------------------------------------------------------- /src/api/java/cofh/api/CoFHAPIProps.java: -------------------------------------------------------------------------------- 1 | package cofh.api; 2 | 3 | public class CoFHAPIProps { 4 | 5 | private CoFHAPIProps() { 6 | 7 | } 8 | 9 | public static final String VERSION = "1.7.10R1.0.3"; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/EnergyStorage.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | 5 | /** 6 | * Reference implementation of {@link IEnergyStorage}. Use/extend this or implement your own. 7 | * 8 | * @author King Lemming 9 | * 10 | */ 11 | public class EnergyStorage implements IEnergyStorage { 12 | 13 | protected int energy; 14 | protected int capacity; 15 | protected int maxReceive; 16 | protected int maxExtract; 17 | 18 | public EnergyStorage(int capacity) { 19 | 20 | this(capacity, capacity, capacity); 21 | } 22 | 23 | public EnergyStorage(int capacity, int maxTransfer) { 24 | 25 | this(capacity, maxTransfer, maxTransfer); 26 | } 27 | 28 | public EnergyStorage(int capacity, int maxReceive, int maxExtract) { 29 | 30 | this.capacity = capacity; 31 | this.maxReceive = maxReceive; 32 | this.maxExtract = maxExtract; 33 | } 34 | 35 | public EnergyStorage readFromNBT(NBTTagCompound nbt) { 36 | 37 | this.energy = nbt.getInteger("Energy"); 38 | 39 | if (energy > capacity) { 40 | energy = capacity; 41 | } 42 | return this; 43 | } 44 | 45 | public NBTTagCompound writeToNBT(NBTTagCompound nbt) { 46 | 47 | if (energy < 0) { 48 | energy = 0; 49 | } 50 | nbt.setInteger("Energy", energy); 51 | return nbt; 52 | } 53 | 54 | public void setCapacity(int capacity) { 55 | 56 | this.capacity = capacity; 57 | 58 | if (energy > capacity) { 59 | energy = capacity; 60 | } 61 | } 62 | 63 | public void setMaxTransfer(int maxTransfer) { 64 | 65 | setMaxReceive(maxTransfer); 66 | setMaxExtract(maxTransfer); 67 | } 68 | 69 | public void setMaxReceive(int maxReceive) { 70 | 71 | this.maxReceive = maxReceive; 72 | } 73 | 74 | public void setMaxExtract(int maxExtract) { 75 | 76 | this.maxExtract = maxExtract; 77 | } 78 | 79 | public int getMaxReceive() { 80 | 81 | return maxReceive; 82 | } 83 | 84 | public int getMaxExtract() { 85 | 86 | return maxExtract; 87 | } 88 | 89 | /** 90 | * This function is included to allow for server -> client sync. Do not call this externally to the containing Tile Entity, as not all IEnergyHandlers 91 | * are guaranteed to have it. 92 | * 93 | * @param energy 94 | */ 95 | public void setEnergyStored(int energy) { 96 | 97 | this.energy = energy; 98 | 99 | if (this.energy > capacity) { 100 | this.energy = capacity; 101 | } else if (this.energy < 0) { 102 | this.energy = 0; 103 | } 104 | } 105 | 106 | /** 107 | * This function is included to allow the containing tile to directly and efficiently modify the energy contained in the EnergyStorage. Do not rely on this 108 | * externally, as not all IEnergyHandlers are guaranteed to have it. 109 | * 110 | * @param energy 111 | */ 112 | public void modifyEnergyStored(int energy) { 113 | 114 | this.energy += energy; 115 | 116 | if (this.energy > capacity) { 117 | this.energy = capacity; 118 | } else if (this.energy < 0) { 119 | this.energy = 0; 120 | } 121 | } 122 | 123 | /* IEnergyStorage */ 124 | @Override 125 | public int receiveEnergy(int maxReceive, boolean simulate) { 126 | 127 | int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive)); 128 | 129 | if (!simulate) { 130 | energy += energyReceived; 131 | } 132 | return energyReceived; 133 | } 134 | 135 | @Override 136 | public int extractEnergy(int maxExtract, boolean simulate) { 137 | 138 | int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract)); 139 | 140 | if (!simulate) { 141 | energy -= energyExtracted; 142 | } 143 | return energyExtracted; 144 | } 145 | 146 | @Override 147 | public int getEnergyStored() { 148 | 149 | return energy; 150 | } 151 | 152 | @Override 153 | public int getMaxEnergyStored() { 154 | 155 | return capacity; 156 | } 157 | 158 | } 159 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyConnection.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | /** 6 | * Implement this interface on TileEntities which should connect to energy transportation blocks. This is intended for blocks which generate energy but do not 7 | * accept it; otherwise just use IEnergyHandler. 8 | *

9 | * Note that {@link IEnergyHandler} is an extension of this. 10 | * 11 | * @author King Lemming 12 | * 13 | */ 14 | public interface IEnergyConnection { 15 | 16 | /** 17 | * Returns TRUE if the TileEntity can connect on a given side. 18 | */ 19 | boolean canConnectEnergy(ForgeDirection from); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyContainerItem.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraft.item.ItemStack; 4 | 5 | /** 6 | * Implement this interface on Item classes that support external manipulation of their internal energy storages. 7 | *

8 | * A reference implementation is provided {@link ItemEnergyContainer}. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public interface IEnergyContainerItem { 14 | 15 | /** 16 | * Adds energy to a container item. Returns the quantity of energy that was accepted. This should always return 0 if the item cannot be externally charged. 17 | * 18 | * @param container 19 | * ItemStack to be charged. 20 | * @param maxReceive 21 | * Maximum amount of energy to be sent into the item. 22 | * @param simulate 23 | * If TRUE, the charge will only be simulated. 24 | * @return Amount of energy that was (or would have been, if simulated) received by the item. 25 | */ 26 | int receiveEnergy(ItemStack container, int maxReceive, boolean simulate); 27 | 28 | /** 29 | * Removes energy from a container item. Returns the quantity of energy that was removed. This should always return 0 if the item cannot be externally 30 | * discharged. 31 | * 32 | * @param container 33 | * ItemStack to be discharged. 34 | * @param maxExtract 35 | * Maximum amount of energy to be extracted from the item. 36 | * @param simulate 37 | * If TRUE, the discharge will only be simulated. 38 | * @return Amount of energy that was (or would have been, if simulated) extracted from the item. 39 | */ 40 | int extractEnergy(ItemStack container, int maxExtract, boolean simulate); 41 | 42 | /** 43 | * Get the amount of energy currently stored in the container item. 44 | */ 45 | int getEnergyStored(ItemStack container); 46 | 47 | /** 48 | * Get the max amount of energy that can be stored in the container item. 49 | */ 50 | int getMaxEnergyStored(ItemStack container); 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyHandler.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | /** 6 | * Implement this interface on Tile Entities which should handle energy, generally storing it in one or more internal {@link IEnergyStorage} objects. 7 | *

8 | * A reference implementation is provided {@link TileEnergyHandler}. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public interface IEnergyHandler extends IEnergyProvider, IEnergyReceiver { 14 | 15 | // merely a convenience interface (remove these methods in 1.8; provided here for back-compat via compiler doing things) 16 | 17 | /** 18 | * Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver. 19 | * 20 | * @param from 21 | * Orientation the energy is received from. 22 | * @param maxReceive 23 | * Maximum amount of energy to receive. 24 | * @param simulate 25 | * If TRUE, the charge will only be simulated. 26 | * @return Amount of energy that was (or would have been, if simulated) received. 27 | */ 28 | @Override 29 | int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate); 30 | 31 | /** 32 | * Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider. 33 | * 34 | * @param from 35 | * Orientation the energy is extracted from. 36 | * @param maxExtract 37 | * Maximum amount of energy to extract. 38 | * @param simulate 39 | * If TRUE, the extraction will only be simulated. 40 | * @return Amount of energy that was (or would have been, if simulated) extracted. 41 | */ 42 | @Override 43 | int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate); 44 | 45 | 46 | /** 47 | * Returns the amount of energy currently stored. 48 | */ 49 | @Override 50 | int getEnergyStored(ForgeDirection from); 51 | 52 | /** 53 | * Returns the maximum amount of energy that can be stored. 54 | */ 55 | @Override 56 | int getMaxEnergyStored(ForgeDirection from); 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyProvider.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | /** 6 | * Implement this interface on Tile Entities which should provide energy, generally storing it in one or more internal {@link IEnergyStorage} objects. 7 | *

8 | * A reference implementation is provided {@link TileEnergyHandler}. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public interface IEnergyProvider extends IEnergyConnection { 14 | 15 | /** 16 | * Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider. 17 | * 18 | * @param from 19 | * Orientation the energy is extracted from. 20 | * @param maxExtract 21 | * Maximum amount of energy to extract. 22 | * @param simulate 23 | * If TRUE, the extraction will only be simulated. 24 | * @return Amount of energy that was (or would have been, if simulated) extracted. 25 | */ 26 | int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate); 27 | 28 | /** 29 | * Returns the amount of energy currently stored. 30 | */ 31 | int getEnergyStored(ForgeDirection from); 32 | 33 | /** 34 | * Returns the maximum amount of energy that can be stored. 35 | */ 36 | int getMaxEnergyStored(ForgeDirection from); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyReceiver.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | 5 | /** 6 | * Implement this interface on Tile Entities which should receive energy, generally storing it in one or more internal {@link IEnergyStorage} objects. 7 | *

8 | * A reference implementation is provided {@link TileEnergyHandler}. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public interface IEnergyReceiver extends IEnergyConnection { 14 | 15 | /** 16 | * Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver. 17 | * 18 | * @param from 19 | * Orientation the energy is received from. 20 | * @param maxReceive 21 | * Maximum amount of energy to receive. 22 | * @param simulate 23 | * If TRUE, the charge will only be simulated. 24 | * @return Amount of energy that was (or would have been, if simulated) received. 25 | */ 26 | int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate); 27 | 28 | /** 29 | * Returns the amount of energy currently stored. 30 | */ 31 | int getEnergyStored(ForgeDirection from); 32 | 33 | /** 34 | * Returns the maximum amount of energy that can be stored. 35 | */ 36 | int getMaxEnergyStored(ForgeDirection from); 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/IEnergyStorage.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | /** 4 | * An energy storage is the unit of interaction with Energy inventories.
5 | * This is not to be implemented on TileEntities. This is for internal use only. 6 | *

7 | * A reference implementation can be found at {@link EnergyStorage}. 8 | * 9 | * @author King Lemming 10 | * 11 | */ 12 | public interface IEnergyStorage { 13 | 14 | /** 15 | * Adds energy to the storage. Returns quantity of energy that was accepted. 16 | * 17 | * @param maxReceive 18 | * Maximum amount of energy to be inserted. 19 | * @param simulate 20 | * If TRUE, the insertion will only be simulated. 21 | * @return Amount of energy that was (or would have been, if simulated) accepted by the storage. 22 | */ 23 | int receiveEnergy(int maxReceive, boolean simulate); 24 | 25 | /** 26 | * Removes energy from the storage. Returns quantity of energy that was removed. 27 | * 28 | * @param maxExtract 29 | * Maximum amount of energy to be extracted. 30 | * @param simulate 31 | * If TRUE, the extraction will only be simulated. 32 | * @return Amount of energy that was (or would have been, if simulated) extracted from the storage. 33 | */ 34 | int extractEnergy(int maxExtract, boolean simulate); 35 | 36 | /** 37 | * Returns the amount of energy currently stored. 38 | */ 39 | int getEnergyStored(); 40 | 41 | /** 42 | * Returns the maximum amount of energy that can be stored. 43 | */ 44 | int getMaxEnergyStored(); 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/ItemEnergyContainer.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraft.item.Item; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.nbt.NBTTagCompound; 6 | 7 | /** 8 | * Reference implementation of {@link IEnergyContainerItem}. Use/extend this or implement your own. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public class ItemEnergyContainer extends Item implements IEnergyContainerItem { 14 | 15 | protected int capacity; 16 | protected int maxReceive; 17 | protected int maxExtract; 18 | 19 | public ItemEnergyContainer() { 20 | 21 | } 22 | 23 | public ItemEnergyContainer(int capacity) { 24 | 25 | this(capacity, capacity, capacity); 26 | } 27 | 28 | public ItemEnergyContainer(int capacity, int maxTransfer) { 29 | 30 | this(capacity, maxTransfer, maxTransfer); 31 | } 32 | 33 | public ItemEnergyContainer(int capacity, int maxReceive, int maxExtract) { 34 | 35 | this.capacity = capacity; 36 | this.maxReceive = maxReceive; 37 | this.maxExtract = maxExtract; 38 | } 39 | 40 | public ItemEnergyContainer setCapacity(int capacity) { 41 | 42 | this.capacity = capacity; 43 | return this; 44 | } 45 | 46 | public void setMaxTransfer(int maxTransfer) { 47 | 48 | setMaxReceive(maxTransfer); 49 | setMaxExtract(maxTransfer); 50 | } 51 | 52 | public void setMaxReceive(int maxReceive) { 53 | 54 | this.maxReceive = maxReceive; 55 | } 56 | 57 | public void setMaxExtract(int maxExtract) { 58 | 59 | this.maxExtract = maxExtract; 60 | } 61 | 62 | /* IEnergyContainerItem */ 63 | @Override 64 | public int receiveEnergy(ItemStack container, int maxReceive, boolean simulate) { 65 | 66 | if (container.stackTagCompound == null) { 67 | container.stackTagCompound = new NBTTagCompound(); 68 | } 69 | int energy = container.stackTagCompound.getInteger("Energy"); 70 | int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive)); 71 | 72 | if (!simulate) { 73 | energy += energyReceived; 74 | container.stackTagCompound.setInteger("Energy", energy); 75 | } 76 | return energyReceived; 77 | } 78 | 79 | @Override 80 | public int extractEnergy(ItemStack container, int maxExtract, boolean simulate) { 81 | 82 | if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Energy")) { 83 | return 0; 84 | } 85 | int energy = container.stackTagCompound.getInteger("Energy"); 86 | int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract)); 87 | 88 | if (!simulate) { 89 | energy -= energyExtracted; 90 | container.stackTagCompound.setInteger("Energy", energy); 91 | } 92 | return energyExtracted; 93 | } 94 | 95 | @Override 96 | public int getEnergyStored(ItemStack container) { 97 | 98 | if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Energy")) { 99 | return 0; 100 | } 101 | return container.stackTagCompound.getInteger("Energy"); 102 | } 103 | 104 | @Override 105 | public int getMaxEnergyStored(ItemStack container) { 106 | 107 | return capacity; 108 | } 109 | 110 | } 111 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/TileEnergyHandler.java: -------------------------------------------------------------------------------- 1 | package cofh.api.energy; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | import net.minecraft.tileentity.TileEntity; 5 | import net.minecraftforge.common.util.ForgeDirection; 6 | 7 | /** 8 | * Reference implementation of {@link IEnergyHandler}. Use/extend this or implement your own. 9 | * 10 | * @author King Lemming 11 | * 12 | */ 13 | public class TileEnergyHandler extends TileEntity implements IEnergyHandler { 14 | 15 | protected EnergyStorage storage = new EnergyStorage(32000); 16 | 17 | @Override 18 | public void readFromNBT(NBTTagCompound nbt) { 19 | 20 | super.readFromNBT(nbt); 21 | storage.readFromNBT(nbt); 22 | } 23 | 24 | @Override 25 | public void writeToNBT(NBTTagCompound nbt) { 26 | 27 | super.writeToNBT(nbt); 28 | storage.writeToNBT(nbt); 29 | } 30 | 31 | /* IEnergyConnection */ 32 | @Override 33 | public boolean canConnectEnergy(ForgeDirection from) { 34 | 35 | return true; 36 | } 37 | 38 | /* IEnergyReceiver */ 39 | @Override 40 | public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { 41 | 42 | return storage.receiveEnergy(maxReceive, simulate); 43 | } 44 | 45 | /* IEnergyProvider */ 46 | @Override 47 | public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { 48 | 49 | return storage.extractEnergy(maxExtract, simulate); 50 | } 51 | 52 | /* IEnergyReceiver and IEnergyProvider */ 53 | @Override 54 | public int getEnergyStored(ForgeDirection from) { 55 | 56 | return storage.getEnergyStored(); 57 | } 58 | 59 | @Override 60 | public int getMaxEnergyStored(ForgeDirection from) { 61 | 62 | return storage.getMaxEnergyStored(); 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/energy/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * (C) 2014 Team CoFH / CoFH / Cult of the Full Hub 3 | * http://www.teamcofh.com 4 | */ 5 | @API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHAPI", provides = "CoFHAPI|energy") 6 | package cofh.api.energy; 7 | 8 | import cofh.api.CoFHAPIProps; 9 | import cpw.mods.fml.common.API; 10 | 11 | -------------------------------------------------------------------------------- /src/api/java/cofh/api/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * (C) 2014 Team CoFH / CoFH / Cult of the Full Hub 3 | * http://www.teamcofh.com 4 | */ 5 | @API(apiVersion = "1.7.2R1.0.0", owner = "CoFHLib", provides = "CoFHAPI") 6 | package cofh.api; 7 | 8 | import cpw.mods.fml.common.API; 9 | 10 | -------------------------------------------------------------------------------- /src/api/java/factorization/api/Charge.java: -------------------------------------------------------------------------------- 1 | package factorization.api; 2 | 3 | public class Charge { 4 | public Charge(IChargeConductor par1) { } 5 | 6 | public int getValue() { 7 | return 0; 8 | } 9 | 10 | public void update() { } 11 | 12 | public int tryTake(int value) { 13 | return 0; 14 | } 15 | 16 | public int addValue(int store) { 17 | return store; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/api/java/factorization/api/Coord.java: -------------------------------------------------------------------------------- 1 | package factorization.api; 2 | 3 | import net.minecraft.tileentity.TileEntity; 4 | 5 | public class Coord { 6 | @SuppressWarnings("UnusedParameters") 7 | public Coord(TileEntity par1) {} 8 | } 9 | -------------------------------------------------------------------------------- /src/api/java/factorization/api/IChargeConductor.java: -------------------------------------------------------------------------------- 1 | package factorization.api; 2 | 3 | public interface IChargeConductor extends ICoord, IMeterInfo{ 4 | public Charge getCharge(); 5 | } 6 | -------------------------------------------------------------------------------- /src/api/java/factorization/api/ICoord.java: -------------------------------------------------------------------------------- 1 | package factorization.api; 2 | 3 | public interface ICoord { 4 | @SuppressWarnings("UnusedDeclaration") 5 | public Coord getCoord(); 6 | } 7 | -------------------------------------------------------------------------------- /src/api/java/factorization/api/IMeterInfo.java: -------------------------------------------------------------------------------- 1 | package factorization.api; 2 | 3 | public interface IMeterInfo { 4 | public String getInfo(); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/common/BridgeSideData.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.common; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | import powercrystals.powerconverters.power.PowerSystem; 5 | 6 | public class BridgeSideData { 7 | public ForgeDirection side; 8 | public PowerSystem powerSystem; 9 | public boolean isConsumer; 10 | public boolean isProducer; 11 | public boolean isConnected; 12 | public int voltageNameIndex; 13 | public int subtype; 14 | public double outputRate; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/common/IChargeHandler.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.common; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import powercrystals.powerconverters.power.PowerSystem; 5 | 6 | public interface IChargeHandler { 7 | 8 | /** 9 | * @return power system 10 | */ 11 | public PowerSystem getPowerSystem(); 12 | 13 | /** 14 | * @param stack stack to check before calling charge/discharge methods 15 | * @return whether the stack is applicable to receive/give energy 16 | */ 17 | boolean canHandle(ItemStack stack); 18 | 19 | /** 20 | * @param stack applicable stack 21 | * @param energyInput energy to give 22 | * @return energy remaining after charge 23 | */ 24 | int charge(ItemStack stack, int energyInput); 25 | 26 | // TODO: implement a discharger 27 | int discharge(ItemStack stack, int energyRequest); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/common/ItemBlockPowerConverterCommon.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.common; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.creativetab.CreativeTabs; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemBlock; 7 | import net.minecraft.item.ItemStack; 8 | 9 | import java.util.List; 10 | 11 | public class ItemBlockPowerConverterCommon extends ItemBlock { 12 | public ItemBlockPowerConverterCommon(Block block) { 13 | super(block); 14 | setHasSubtypes(true); 15 | setMaxDamage(0); 16 | } 17 | 18 | @Override 19 | public int getMetadata(int i) { 20 | return i; 21 | } 22 | 23 | @Override 24 | public String getUnlocalizedName(ItemStack itemstack) { 25 | int md = itemstack.getItemDamage(); 26 | if (md == 0) return "powerconverters.common.bridge"; 27 | if (md == 2) return "powerconverters.common.charger"; 28 | return "unknown"; 29 | } 30 | 31 | @SuppressWarnings({"unchecked", "rawtypes"}) 32 | @Override 33 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 34 | subTypes.add(new ItemStack(item, 1, 0)); 35 | subTypes.add(new ItemStack(item, 1, 2)); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/common/TileEntityCharger.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.common; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.inventory.IInventory; 5 | import net.minecraft.item.ItemStack; 6 | import powercrystals.powerconverters.power.PowerSystemManager; 7 | import powercrystals.powerconverters.power.base.TileEntityEnergyProducer; 8 | import powercrystals.powerconverters.power.systems.PowerIndustrialcraft; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | public class TileEntityCharger extends TileEntityEnergyProducer { 14 | private static List _chargeHandlers = new ArrayList(); 15 | private EntityPlayer _player; 16 | 17 | public static void registerChargeHandler(IChargeHandler handler) { 18 | _chargeHandlers.add(handler); 19 | } 20 | 21 | public TileEntityCharger() { 22 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerIndustrialcraft.id), 0, IInventory.class); 23 | } 24 | 25 | @Override 26 | public void updateEntity() { 27 | super.updateEntity(); 28 | if (_player != null) { 29 | int pX = (int) Math.floor(_player.posX); 30 | int pY = (int) Math.floor(_player.posY - _player.getYOffset()); 31 | int pZ = (int) Math.floor(_player.posZ); 32 | if (pX != xCoord || pY - 1 != yCoord || pZ != zCoord) { 33 | setPlayer(null); 34 | } 35 | } 36 | } 37 | 38 | @Override 39 | public double produceEnergy(double energy) { 40 | if (energy == 0) 41 | return 0; 42 | int energyRemaining = (int) energy; 43 | 44 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 45 | if(!powered) { 46 | if (_player != null) 47 | energyRemaining = chargeInventory(_player.inventory, energyRemaining); 48 | 49 | for (IInventory inv : getTiles().values()) 50 | energyRemaining = chargeInventory(inv, energyRemaining); 51 | } 52 | 53 | return energyRemaining; 54 | } 55 | 56 | private int chargeInventory(IInventory inventory, int energy) { 57 | int energyRemaining = energy; 58 | 59 | for (int i = 0; i < inventory.getSizeInventory(); i++) { 60 | for (IChargeHandler chargeHandler : _chargeHandlers) { 61 | ItemStack s = inventory.getStackInSlot(i); 62 | if (s == null) 63 | continue; 64 | 65 | if (chargeHandler.canHandle(s)) { 66 | energyRemaining = chargeHandler.charge(s, energyRemaining); 67 | if (energyRemaining < energy) { 68 | _powerSystem = chargeHandler.getPowerSystem(); 69 | energy = energyRemaining; 70 | } 71 | } 72 | } 73 | } 74 | return energyRemaining; 75 | } 76 | 77 | public void setPlayer(EntityPlayer player) { 78 | if (_player != player) { 79 | worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); 80 | _player = player; 81 | } 82 | } 83 | 84 | @Override 85 | public boolean isConnected() { 86 | return super.isConnected() || _player != null; 87 | } 88 | 89 | @Override 90 | public boolean isSideConnected(int side) { 91 | return side == 1 && _player != null || super.isSideConnected(side); 92 | } 93 | 94 | @Override 95 | public boolean isSideConnectedClient(int side) { 96 | return side == 1 && _player != null || super.isSideConnectedClient(side); 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/RecipeProvider.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting; 2 | 3 | import net.minecraftforge.common.config.Configuration; 4 | 5 | /** 6 | * Basic class to manage mods that add recipe additions by mods. 7 | */ 8 | public abstract class RecipeProvider { 9 | public static final String RECIPE_CATEGORY = "recipes"; 10 | 11 | public abstract void registerRecipes(); 12 | public abstract void loadConfig(Configuration c); 13 | public abstract void saveConfig(Configuration c); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeEnderIO.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraftforge.common.config.Configuration; 8 | import powercrystals.powerconverters.crafting.RecipeProvider; 9 | import powercrystals.powerconverters.power.PowerSystem; 10 | import powercrystals.powerconverters.power.PowerSystemManager; 11 | import powercrystals.powerconverters.power.systems.PowerRedstoneFlux; 12 | 13 | /** 14 | * Add recipes for EnderIO 15 | */ 16 | public class RecipeEnderIO extends RecipeProvider{ 17 | @Override 18 | public void registerRecipes() { 19 | //To change body of implemented methods use File | Settings | File Templates. 20 | PowerSystem rf = PowerSystemManager.getInstance().getPowerSystemByName(PowerRedstoneFlux.id); 21 | if(rf != null) { 22 | Block converterBlock = rf.block; 23 | 24 | // 25 | // Support both, new and old Capacitor bank 26 | // (where the new is the most prefered one) 27 | // 28 | Item capBank = GameRegistry.findItem("EnderIO", "blockCapBank"); 29 | ItemStack stackCapacitorBank; 30 | if(capBank != null) { 31 | // New Style Capacitor Bank 32 | stackCapacitorBank = new ItemStack(capBank, 1, 2); // Basic -> :1, Normal -> :2, Vibrant -> :3 33 | 34 | } else { 35 | // Old Capacitor Bank 36 | stackCapacitorBank = GameRegistry.findItemStack("EnderIO", "blockCapacitorBank", 1); 37 | 38 | } 39 | 40 | 41 | GameRegistry.addRecipe(new ItemStack(converterBlock, 1, 0), 42 | "G G", 43 | " T ", 44 | "G G", 45 | 'G', GameRegistry.findItem("minecraft", "gold_ingot"), 46 | 'T', stackCapacitorBank 47 | ); 48 | } 49 | } 50 | 51 | @Override 52 | public void loadConfig(Configuration c) { 53 | } 54 | 55 | @Override 56 | public void saveConfig(Configuration c) { 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeFactorization.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraftforge.common.config.Configuration; 7 | import powercrystals.powerconverters.crafting.RecipeProvider; 8 | import powercrystals.powerconverters.power.PowerSystem; 9 | import powercrystals.powerconverters.power.PowerSystemManager; 10 | 11 | /** 12 | * Add recipes for Factorization. 13 | */ 14 | public class RecipeFactorization extends RecipeProvider { 15 | @Override 16 | public void registerRecipes() { 17 | try { 18 | PowerSystem factorization = PowerSystemManager.getInstance().getPowerSystemByName("FZ"); 19 | if(factorization != null) { 20 | Block converterBlock = factorization.block; 21 | Object fzRegistry = Class.forName("factorization.shared.Core").getField("registry").get(null); 22 | GameRegistry.addRecipe(new ItemStack(converterBlock, 1, 0), 23 | "I I", 24 | " B ", 25 | "I I", 26 | 'I', GameRegistry.findItem("minecraft", "gold_ingot"), 27 | 'B', (Class.forName("factorization.common.Registry").getField("solarboiler_item").get(fzRegistry))); 28 | } 29 | } catch (Throwable t) { 30 | t.printStackTrace(System.err); 31 | } 32 | } 33 | 34 | @Override 35 | public void loadConfig(Configuration c) { 36 | } 37 | 38 | @Override 39 | public void saveConfig(Configuration c) { 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeForestry.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.init.Blocks; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraftforge.common.config.Configuration; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.crafting.RecipeProvider; 10 | import powercrystals.powerconverters.power.PowerSystem; 11 | import powercrystals.powerconverters.power.PowerSystemManager; 12 | import powercrystals.powerconverters.power.systems.PowerRedstoneFlux; 13 | 14 | /** 15 | * Add recipes for Forestry 16 | */ 17 | public class RecipeForestry extends RecipeProvider { 18 | private boolean enableRecipes = true; 19 | public static final String RECIPE_FORESTRY_CATEGORY = RECIPE_CATEGORY + ".forestry"; 20 | 21 | @Override 22 | public void registerRecipes() { 23 | ItemStack bronzeGear = new ItemStack(GameRegistry.findItem("Forestry", "gearBronze"), 1, 0); 24 | ItemStack circuitBoard = new ItemStack(GameRegistry.findItem("Forestry", "chipsets"), 1, 3); 25 | ItemStack engine = new ItemStack(GameRegistry.findItem("Forestry", "engine"), 1, 2); 26 | ItemStack tubes = new ItemStack(GameRegistry.findItem("Forestry", "thermonicTubes"), 1, 5); 27 | ItemStack chest = new ItemStack(Blocks.chest, 1, 0); 28 | 29 | PowerSystem rf = PowerSystemManager.getInstance().getPowerSystemByName(PowerRedstoneFlux.id); 30 | if(rf != null) { 31 | Block converterBlock = rf.block; 32 | GameRegistry.addRecipe(new ItemStack(converterBlock, 1, 0), 33 | "TGT", 34 | "EBE", 35 | "TGT", 36 | 'G', bronzeGear, 37 | 'B', circuitBoard, 38 | 'E', engine, 39 | 'T', tubes); 40 | } 41 | 42 | if (enableRecipes) { 43 | GameRegistry.addRecipe(new ItemStack(PowerConverterCore.converterBlockCommon, 1, 0), 44 | "TBT", 45 | "BBB", 46 | "TBT", 47 | 'T', tubes, 48 | 'B', circuitBoard 49 | ); 50 | GameRegistry.addRecipe(new ItemStack(PowerConverterCore.converterBlockCommon, 1, 2), 51 | "TBT", 52 | "BCB", 53 | "TBT", 54 | 'T', tubes, 55 | 'B', circuitBoard, 56 | 'C', chest 57 | ); 58 | } 59 | } 60 | 61 | @Override 62 | public void loadConfig(Configuration c) { 63 | enableRecipes = c.get(RECIPE_FORESTRY_CATEGORY, "enableRecipes", true).getBoolean(true); 64 | } 65 | 66 | @Override 67 | public void saveConfig(Configuration c) { 68 | c.getCategory(RECIPE_FORESTRY_CATEGORY).get("enableRecipes").set(enableRecipes); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeGregTech5.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import gregtech.api.enums.ItemList; 5 | import net.minecraft.block.Block; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraftforge.common.config.Configuration; 8 | import net.minecraftforge.oredict.ShapedOreRecipe; 9 | import powercrystals.powerconverters.crafting.RecipeProvider; 10 | import powercrystals.powerconverters.power.PowerSystem; 11 | import powercrystals.powerconverters.power.PowerSystemManager; 12 | import powercrystals.powerconverters.power.systems.PowerGregTech5; 13 | 14 | /** 15 | * Add recipes for GregTech 16 | */ 17 | public class RecipeGregTech5 extends RecipeProvider { 18 | private boolean enableRecipes = true; 19 | public static final String RECIPE_GREGTECH_CATEGORY = RECIPE_CATEGORY + ".gt"; 20 | 21 | @Override 22 | public void registerRecipes() { 23 | 24 | PowerSystem gt = PowerSystemManager.getInstance().getPowerSystemByName(PowerGregTech5.id); 25 | if(gt != null) { 26 | Block converterBlock = gt.block; 27 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 0), true, new Object[]{ // ULV 28 | "CPC", 29 | "PBP", 30 | "CPC", 31 | 'C', "cableGt01Lead", 32 | 'P', "plateLead", 33 | 'B', ItemList.Battery_Buffer_1by1_ULV.get(1).copy() 34 | })); 35 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 1), true, new Object[]{ // LV 36 | "CPC", 37 | "PBP", 38 | "CPC", 39 | 'C', "cableGt01Tin", 40 | 'P', "plateTin", 41 | 'B', ItemList.Battery_Buffer_1by1_LV.get(1).copy() 42 | })); 43 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 2), true, new Object[]{ // MV 44 | "CPC", 45 | "PBP", 46 | "CPC", 47 | 'C', "cableGt01Copper", 48 | 'P', "plateCopper", 49 | 'B', ItemList.Battery_Buffer_1by1_MV.get(1).copy() 50 | })); 51 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 3), true, new Object[]{ // HV 52 | "CPC", 53 | "PBP", 54 | "CPC", 55 | 'C', "cableGt01Gold", 56 | 'P', "plateGold", 57 | 'B', ItemList.Battery_Buffer_1by1_HV.get(1).copy() 58 | })); 59 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 4), true, new Object[]{ // EV 60 | "CPC", 61 | "PBP", 62 | "CPC", 63 | 'C', "cableGt01Aluminium", 64 | 'P', "plateAluminium", 65 | 'B', ItemList.Battery_Buffer_1by1_EV.get(1).copy() 66 | })); 67 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 5), true, new Object[]{ // IV 68 | "CPC", 69 | "PBP", 70 | "CPC", 71 | 'C', "cableGt02Steel", 72 | 'P', "plateSteel", 73 | 'B', ItemList.Battery_Buffer_1by1_IV.get(1).copy() 74 | })); 75 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 6), true, new Object[]{ // LuV 76 | "CPC", 77 | "PBP", 78 | "CPC", 79 | 'C', "cableGt04Tungsten", 80 | 'P', "plateTungsten", 81 | 'B', ItemList.Battery_Buffer_1by1_LuV.get(1).copy() 82 | })); 83 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 7), true, new Object[]{ // ZPM 84 | "CPC", 85 | "PBP", 86 | "CPC", 87 | 'C', "cableGt04Osmium", 88 | 'P', "plateOsmium", 89 | 'B', ItemList.Battery_Buffer_1by1_ZPM.get(1).copy() 90 | })); 91 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 8), true, new Object[]{ // UV 92 | "CPC", 93 | "PBP", 94 | "CPC", 95 | 'C', "wireGt16Osmium", 96 | 'P', "plateOsmium", 97 | 'B', ItemList.Battery_Buffer_1by1_UV.get(1).copy() 98 | })); 99 | 100 | 101 | 102 | 103 | 104 | } 105 | } 106 | 107 | @Override 108 | public void loadConfig(Configuration c) { 109 | enableRecipes = c.get(RECIPE_GREGTECH_CATEGORY, "enableRecipes", true).getBoolean(true); 110 | } 111 | 112 | @Override 113 | public void saveConfig(Configuration c) { 114 | c.getCategory(RECIPE_GREGTECH_CATEGORY).get("enableRecipes").set(enableRecipes); 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeMFFS.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraftforge.common.config.Configuration; 7 | import net.minecraftforge.oredict.ShapedOreRecipe; 8 | import powercrystals.powerconverters.crafting.RecipeProvider; 9 | import powercrystals.powerconverters.power.PowerSystem; 10 | import powercrystals.powerconverters.power.PowerSystemManager; 11 | import powercrystals.powerconverters.power.systems.PowerFortron; 12 | 13 | /** 14 | * Add recipes for MFFS/Fortron 15 | */ 16 | public class RecipeMFFS extends RecipeProvider { 17 | private boolean enableRecipes = true; 18 | public static final String RECIPE_FORTRON_CATEGORY = RECIPE_CATEGORY + ".mffs"; 19 | 20 | @Override 21 | public void registerRecipes() { 22 | 23 | PowerSystem fortron = PowerSystemManager.getInstance().getPowerSystemByName(PowerFortron.id); 24 | if(fortron != null) { 25 | Block converterBlock = fortron.block; 26 | 27 | ItemStack stackGold = new ItemStack(GameRegistry.findItem("minecraft", "gold_ingot")); 28 | ItemStack stackDeriver = new ItemStack(GameRegistry.findItem("MFFS", "coercionDeriver")); 29 | 30 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 0), true, new Object[]{ // Consumer 31 | "G G", 32 | " D ", 33 | "G G", 34 | 'G', stackGold, 35 | 'D', stackDeriver 36 | })); 37 | 38 | } 39 | } 40 | 41 | @Override 42 | public void loadConfig(Configuration c) { 43 | enableRecipes = c.get(RECIPE_FORTRON_CATEGORY, "enableRecipes", true).getBoolean(true); 44 | } 45 | 46 | @Override 47 | public void saveConfig(Configuration c) { 48 | c.getCategory(RECIPE_FORTRON_CATEGORY).get("enableRecipes").set(enableRecipes); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeRailcraft.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraftforge.common.config.Configuration; 7 | import net.minecraftforge.oredict.ShapedOreRecipe; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.crafting.RecipeProvider; 10 | import powercrystals.powerconverters.power.PowerSystem; 11 | import powercrystals.powerconverters.power.PowerSystemManager; 12 | import powercrystals.powerconverters.power.systems.PowerSteam; 13 | 14 | /** 15 | * Add recipes for Railcraft. 16 | */ 17 | public class RecipeRailcraft extends RecipeProvider { 18 | @Override 19 | public void registerRecipes() { 20 | ItemStack stackGold = new ItemStack(GameRegistry.findItem("minecraft", "gold_ingot")); 21 | Object entryGold = PowerConverterCore.tryOreDict("ingotGold", stackGold); 22 | 23 | ItemStack stackIndustrialEngine = GameRegistry.findItemStack("Railcraft", "machine.beta.engine.steam.low", 1); 24 | 25 | 26 | PowerSystem steam = PowerSystemManager.getInstance().getPowerSystemByName(PowerSteam.id); 27 | if(steam != null) { 28 | if(entryGold == null || stackIndustrialEngine == null) { 29 | PowerConverterCore.instance.logger.error("Railcraft recipe is missing items, not adding Power Converters recipe."); 30 | return; 31 | } 32 | Block converterBlockSteam = steam.block; 33 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlockSteam, 1, 0), true, 34 | // Steam consumer 35 | "G G", 36 | " E ", 37 | "G G", 38 | 'G', entryGold, 39 | 'E', stackIndustrialEngine)); 40 | } 41 | } 42 | 43 | @Override 44 | public void loadConfig(Configuration c) { 45 | } 46 | 47 | @Override 48 | public void saveConfig(Configuration c) { 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeThermalExpansion.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraftforge.oredict.ShapedOreRecipe; 7 | import net.minecraftforge.common.config.Configuration; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.crafting.RecipeProvider; 10 | import powercrystals.powerconverters.power.PowerSystem; 11 | import powercrystals.powerconverters.power.PowerSystemManager; 12 | import powercrystals.powerconverters.power.systems.PowerRedstoneFlux; 13 | import powercrystals.powerconverters.power.systems.PowerSteam; 14 | 15 | /** 16 | * Add recipes for Thermal Expansion. 17 | */ 18 | public class RecipeThermalExpansion extends RecipeProvider { 19 | private boolean enableRecipes = true; 20 | public static final String RECIPE_THERMALEXPANSION_CATEGORY = RECIPE_CATEGORY + ".thermalExpansion"; 21 | 22 | @Override 23 | public void registerRecipes() { 24 | ItemStack receptionCoil = new ItemStack(GameRegistry.findItem("ThermalExpansion", "material"), 1, 1); 25 | ItemStack transmissionCoil = new ItemStack(GameRegistry.findItem("ThermalExpansion", "material"), 1, 2); 26 | ItemStack basicFrame = new ItemStack(GameRegistry.findItem("ThermalExpansion", "Frame"), 1, 0); 27 | ItemStack steamDynamo = new ItemStack(GameRegistry.findItem("ThermalExpansion", "Dynamo"), 1, 0); 28 | ItemStack energyCell = new ItemStack(GameRegistry.findItem("ThermalExpansion", "Cell"), 1, 1); 29 | ItemStack multiMeter = new ItemStack(GameRegistry.findItem("ThermalExpansion", "meter"), 1, 0); 30 | ItemStack strongbox = new ItemStack(GameRegistry.findItem("ThermalExpansion", "Strongbox"), 1, 1); 31 | ItemStack energisticInfuser = new ItemStack(GameRegistry.findItem("ThermalExpansion", "Machine"), 1, 10); 32 | ItemStack conductanceCoil = new ItemStack(GameRegistry.findItem("ThermalExpansion", "material"), 1, 3); 33 | ItemStack servo = new ItemStack(GameRegistry.findItem("ThermalExpansion", "material"), 1, 0); 34 | ItemStack tank = new ItemStack(GameRegistry.findItem("ThermalExpansion", "Tank"), 1, 1); 35 | 36 | PowerSystem rf = PowerSystemManager.getInstance().getPowerSystemByName(PowerRedstoneFlux.id); 37 | if(rf != null) { 38 | Block converterBlock = rf.block; 39 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(converterBlock, 1, 0), true, new Object[]{ 40 | "CRC", 41 | "DFD", 42 | "TAT", 43 | 'C', "gearCopper", 44 | 'R', receptionCoil, 45 | 'D', steamDynamo, 46 | 'F', basicFrame, 47 | 'T', "gearTin", 48 | 'A', transmissionCoil 49 | })); 50 | } 51 | 52 | if (enableRecipes) { 53 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(PowerConverterCore.converterBlockCommon, 1, 0), true, new Object[]{ 54 | "CMT", 55 | "REA", 56 | "TFC", 57 | 'C', "gearCopper", 58 | 'M', multiMeter, 59 | 'T', "gearTin", 60 | 'R', receptionCoil, 61 | 'E', energyCell, 62 | 'A', transmissionCoil, 63 | 'F', basicFrame 64 | })); 65 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(PowerConverterCore.converterBlockCommon, 1, 2), true, new Object[]{ 66 | "GSG", 67 | "SES", 68 | "GRG", 69 | 'G', "gearSilver", 70 | 'S', strongbox, 71 | 'E', energisticInfuser, 72 | 'R', receptionCoil 73 | })); 74 | PowerSystem steam = PowerSystemManager.getInstance().getPowerSystemByName(PowerSteam.id); 75 | if (steam != null) { 76 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(steam.block, 1, 0), true, new Object[]{ 77 | "CNT", 78 | "PAP", 79 | "CFT", 80 | 'C', "gearCopper", 81 | 'N', conductanceCoil, 82 | 'T', "gearTin", 83 | 'P', servo, 84 | 'A', tank, 85 | 'F', basicFrame 86 | })); 87 | } 88 | } 89 | } 90 | 91 | @Override 92 | public void loadConfig(Configuration c) { 93 | enableRecipes = c.get(RECIPE_THERMALEXPANSION_CATEGORY, "enableRecipes", true).getBoolean(true); 94 | } 95 | 96 | @Override 97 | public void saveConfig(Configuration c) { 98 | c.getCategory(RECIPE_THERMALEXPANSION_CATEGORY).get("enableRecipes").set(enableRecipes); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/crafting/mods/RecipeVanilla.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.crafting.mods; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.init.Blocks; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraftforge.common.config.Configuration; 7 | import net.minecraftforge.oredict.ShapedOreRecipe; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.crafting.RecipeProvider; 10 | 11 | /** 12 | * Add Vanilla recipes. 13 | */ 14 | public class RecipeVanilla extends RecipeProvider { 15 | private boolean enableRecipes = true; 16 | public static final String RECIPE_VANILLA_CATEGORY = RECIPE_CATEGORY + ".vanilla"; 17 | 18 | @Override 19 | public void registerRecipes() { 20 | //To change body of implemented methods use File | Settings | File Templates. 21 | if(enableRecipes) { 22 | ItemStack stackGold = new ItemStack(GameRegistry.findItem("minecraft", "gold_ingot")); 23 | ItemStack stackRedstone = new ItemStack(GameRegistry.findItem("minecraft", "redstone")); 24 | ItemStack stackIron = new ItemStack(GameRegistry.findItem("minecraft", "iron_ingot")); 25 | ItemStack stackGlass = new ItemStack(GameRegistry.findBlock("minecraft", "glass")); 26 | ItemStack stackDiamond = new ItemStack(GameRegistry.findItem("minecraft", "diamond")); 27 | 28 | Object entryGold = PowerConverterCore.tryOreDict("ingotGold", stackGold); 29 | Object entryRedstone = PowerConverterCore.tryOreDict("dustRedstone", stackRedstone); 30 | Object entryIron = PowerConverterCore.tryOreDict("ingotIron", stackIron); 31 | Object entryGlass = PowerConverterCore.tryOreDict("blockGlass", stackGlass); 32 | Object entryDiamond = PowerConverterCore.tryOreDict("gemDiamond", stackDiamond); 33 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(PowerConverterCore.converterBlockCommon, 1, 0), true, new Object[]{ 34 | // Energy Bridge 35 | "GRG", 36 | "LDL", 37 | "GRG", 38 | 'R', entryRedstone, 39 | 'G', entryGold, 40 | 'L', entryGlass, 41 | 'D', entryDiamond 42 | })); 43 | GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(PowerConverterCore.converterBlockCommon, 1, 2), true, new Object[]{ 44 | // Universal charger 45 | "GRG", 46 | "ICI", 47 | "GRG", 48 | 'R', entryRedstone, 49 | 'G', entryGold, 50 | 'I', entryIron, 51 | 'C', Blocks.chest 52 | })); 53 | } 54 | } 55 | 56 | @Override 57 | public void loadConfig(Configuration c) { 58 | enableRecipes = c.get(RECIPE_VANILLA_CATEGORY, "enableRecipes", true).getBoolean(true); 59 | } 60 | 61 | @Override 62 | public void saveConfig(Configuration c) { 63 | c.getCategory(RECIPE_VANILLA_CATEGORY).get("enableRecipes").set(enableRecipes); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/gui/PCCreativeTab.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.gui; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.creativetab.CreativeTabs; 5 | import net.minecraft.item.Item; 6 | 7 | public class PCCreativeTab extends CreativeTabs { 8 | public static final PCCreativeTab tab = new PCCreativeTab(); 9 | 10 | public PCCreativeTab() { 11 | super("Power Converters"); 12 | } 13 | 14 | @Override 15 | public Item getTabIconItem() { 16 | return GameRegistry.findItem("PowerConverters", "converter.common"); 17 | } 18 | 19 | @Override 20 | public String getTranslatedTabLabel() { 21 | return this.getTabLabel(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/gui/PCGUIHandler.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.gui; 2 | 3 | import cpw.mods.fml.common.network.IGuiHandler; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.tileentity.TileEntity; 6 | import net.minecraft.world.World; 7 | import powercrystals.powerconverters.common.TileEntityEnergyBridge; 8 | 9 | public class PCGUIHandler implements IGuiHandler { 10 | @Override 11 | public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { 12 | TileEntity te = world.getTileEntity(x, y, z); 13 | if (te != null && te instanceof TileEntityEnergyBridge) { 14 | return new ContainerEnergyBridge((TileEntityEnergyBridge) te, player.inventory); 15 | } 16 | return null; 17 | } 18 | 19 | @Override 20 | public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { 21 | TileEntity te = world.getTileEntity(x, y, z); 22 | if (te != null && te instanceof TileEntityEnergyBridge) { 23 | return new GuiEnergyBridge(new ContainerEnergyBridge((TileEntityEnergyBridge) te, player.inventory), (TileEntityEnergyBridge) te); 24 | } 25 | return null; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/mods/reference/InterfaceReference.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.mods.reference; 2 | 3 | /** 4 | * @author samrg472 5 | */ 6 | public final class InterfaceReference { 7 | 8 | public static final class BuildCraft { 9 | public static final String IPipeConnection = "buildcraft.api.transport.IPipeConnection"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/mods/reference/ModIDReference.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.mods.reference; 2 | 3 | /** 4 | * @author samrg472 5 | */ 6 | public class ModIDReference { 7 | 8 | public static final String BUILDCRAFT = "BuildCraft|Core"; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/network/GenericHandler.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.network; 2 | 3 | import cpw.mods.fml.common.network.simpleimpl.IMessage; 4 | import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; 5 | import cpw.mods.fml.common.network.simpleimpl.MessageContext; 6 | 7 | /** 8 | * Handler to redirect message processing. 9 | * Used to easily unify 1.7 and 1.8 code in a thread-safe way. 10 | */ 11 | public abstract class GenericHandler implements IMessageHandler { 12 | @Override 13 | public IMessage onMessage(REQ message, MessageContext ctx) { 14 | processMessage(message, ctx); 15 | return null; 16 | } 17 | 18 | public abstract void processMessage(REQ message, MessageContext context); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/network/PacketClientSync.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.network; 2 | 3 | import cpw.mods.fml.common.FMLLog; 4 | import cpw.mods.fml.common.network.ByteBufUtils; 5 | import cpw.mods.fml.common.network.simpleimpl.IMessage; 6 | import cpw.mods.fml.common.network.simpleimpl.MessageContext; 7 | import io.netty.buffer.ByteBuf; 8 | import net.minecraft.nbt.NBTTagCompound; 9 | import powercrystals.powerconverters.PowerConverterCore; 10 | import powercrystals.powerconverters.power.PowerSystemManager; 11 | 12 | /** 13 | * Send power system data to client on server connect. 14 | */ 15 | public class PacketClientSync implements IMessage { 16 | NBTTagCompound data; 17 | 18 | @SuppressWarnings("unused") 19 | public PacketClientSync() { 20 | data = new NBTTagCompound(); 21 | } 22 | 23 | public PacketClientSync(NBTTagCompound nbt) { 24 | data = nbt; 25 | } 26 | 27 | @Override 28 | public void fromBytes(ByteBuf buf) { 29 | data = ByteBufUtils.readTag(buf); 30 | } 31 | 32 | @Override 33 | public void toBytes(ByteBuf buf) { 34 | ByteBufUtils.writeTag(buf, data); 35 | } 36 | 37 | public static class Handler extends GenericHandler { 38 | 39 | @Override 40 | public void processMessage(PacketClientSync message, MessageContext context) { 41 | PowerConverterCore.instance.logger.debug("Got sync packet. Applying ..."); 42 | PowerSystemManager manager = PowerSystemManager.getInstance(); 43 | try { 44 | manager = PowerSystemManager.getInstance(); 45 | manager.readPowerData(message.data); 46 | PowerConverterCore.instance.logger.debug("Sync packet success."); 47 | return; 48 | } 49 | catch (Exception e) { 50 | FMLLog.severe("Error processing Powerconverter sync data from server. Using client data."); 51 | } 52 | manager.readPowerData(manager.writePowerData()); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/position/BlockPosition.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.position; 2 | 3 | import net.minecraft.tileentity.TileEntity; 4 | import net.minecraftforge.common.util.ForgeDirection; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | public class BlockPosition { 10 | public int x; 11 | public int y; 12 | public int z; 13 | public ForgeDirection orientation; 14 | 15 | public BlockPosition(int x, int y, int z) { 16 | this(x, y, z, ForgeDirection.UNKNOWN); 17 | } 18 | 19 | public BlockPosition(TileEntity tile) { 20 | this(tile.xCoord, tile.yCoord, tile.zCoord, ForgeDirection.UNKNOWN); 21 | } 22 | 23 | public BlockPosition(int x, int y, int z, ForgeDirection orientation) { 24 | this.x = x; 25 | this.y = y; 26 | this.z = z; 27 | this.orientation = orientation; 28 | } 29 | 30 | @SuppressWarnings("UnusedDeclaration") 31 | public void moveRight(int step) { 32 | switch (orientation) { 33 | case SOUTH: 34 | x -= step; 35 | break; 36 | case NORTH: 37 | x += step; 38 | break; 39 | case EAST: 40 | z += step; 41 | break; 42 | case WEST: 43 | z -= step; 44 | break; 45 | default: 46 | break; 47 | } 48 | } 49 | 50 | @SuppressWarnings("UnusedDeclaration") 51 | public void moveLeft(int step) { 52 | moveRight(-step); 53 | } 54 | 55 | @SuppressWarnings("UnusedDeclaration") 56 | public void moveForwards(int step) { 57 | switch (orientation) { 58 | case UP: 59 | y += step; 60 | break; 61 | case DOWN: 62 | y -= step; 63 | break; 64 | case SOUTH: 65 | z += step; 66 | break; 67 | case NORTH: 68 | z -= step; 69 | break; 70 | case EAST: 71 | x += step; 72 | break; 73 | case WEST: 74 | x -= step; 75 | break; 76 | default: 77 | } 78 | } 79 | 80 | @SuppressWarnings("UnusedDeclaration") 81 | public void moveBackwards(int step) { 82 | moveForwards(-step); 83 | } 84 | 85 | @SuppressWarnings("UnusedDeclaration") 86 | public void moveUp(int step) { 87 | switch (orientation) { 88 | case EAST: 89 | case WEST: 90 | case NORTH: 91 | case SOUTH: 92 | y += step; 93 | break; 94 | default: 95 | break; 96 | } 97 | 98 | } 99 | 100 | @SuppressWarnings("UnusedDeclaration") 101 | public void moveDown(int step) { 102 | moveUp(-step); 103 | } 104 | 105 | @Override 106 | public String toString() { 107 | if (orientation == null) { 108 | return "{" + x + ", " + y + ", " + z + "}"; 109 | } 110 | return "{" + x + ", " + y + ", " + z + ";" + orientation.toString() + "}"; 111 | } 112 | 113 | @Override 114 | public boolean equals(Object obj) { 115 | if (!(obj instanceof BlockPosition)) { 116 | return false; 117 | } 118 | BlockPosition bp = (BlockPosition) obj; 119 | return bp.x == x && bp.y == y && bp.z == z && bp.orientation == orientation; 120 | } 121 | 122 | @Override 123 | public int hashCode() { 124 | return (x & 0xFFF) | (y & 0xFF << 8) | (z & 0xFFF << 12); 125 | } 126 | 127 | public List getAdjacent(boolean includeVertical) { 128 | List a = new ArrayList(); 129 | a.add(new BlockPosition(x + 1, y, z, ForgeDirection.EAST)); 130 | a.add(new BlockPosition(x - 1, y, z, ForgeDirection.WEST)); 131 | a.add(new BlockPosition(x, y, z + 1, ForgeDirection.SOUTH)); 132 | a.add(new BlockPosition(x, y, z - 1, ForgeDirection.NORTH)); 133 | if (includeVertical) { 134 | a.add(new BlockPosition(x, y + 1, z, ForgeDirection.UP)); 135 | a.add(new BlockPosition(x, y - 1, z, ForgeDirection.DOWN)); 136 | } 137 | return a; 138 | } 139 | 140 | public static TileEntity getAdjacentTileEntity(TileEntity start, ForgeDirection direction) { 141 | BlockPosition p = new BlockPosition(start); 142 | p.orientation = direction; 143 | p.moveForwards(1); 144 | return start.getWorldObj().getTileEntity(p.x, p.y, p.z); 145 | } 146 | } -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/position/INeighboorUpdateTile.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.position; 2 | 3 | public interface INeighboorUpdateTile { 4 | public void onNeighboorChanged(); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/PowerSystem.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power; 2 | 3 | import net.minecraft.item.ItemBlock; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | import net.minecraftforge.common.config.Configuration; 6 | import powercrystals.powerconverters.common.BridgeSideData; 7 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 8 | import powercrystals.powerconverters.power.base.TileEntityBridgeComponent; 9 | 10 | public abstract class PowerSystem { 11 | protected String name; 12 | protected float _internalEnergyPerInput; 13 | protected float _internalEnergyPerOutput; 14 | protected float serverInternalEnergyPerInput; 15 | protected float serverInternalEnergyPerOutput; 16 | protected String _unit; 17 | protected String[] voltageNames; 18 | protected int[] voltageValues; 19 | 20 | public BlockPowerConverter block; 21 | public Class itemBlock; 22 | public Class consumer; 23 | public Class producer; 24 | 25 | public static final String POWERSYSTEM_CATEGORY = "powersystems"; 26 | 27 | public abstract String getId(); 28 | 29 | public abstract void registerBlocks(); 30 | public abstract void registerCommonRecipes(); 31 | public abstract void loadConfig(Configuration c); 32 | public abstract void saveConfig(Configuration c); 33 | 34 | public void readEnergyValues(NBTTagCompound nbt) { 35 | serverInternalEnergyPerInput = nbt.getFloat("Input"); 36 | serverInternalEnergyPerOutput = nbt.getFloat("Output"); 37 | } 38 | 39 | public NBTTagCompound writeEnergyValues() { 40 | NBTTagCompound nbt = new NBTTagCompound(); 41 | nbt.setFloat("Input", _internalEnergyPerInput); 42 | nbt.setFloat("Output", _internalEnergyPerOutput); 43 | return nbt; 44 | } 45 | 46 | public float getInternalEnergyPerInput(int meta) { 47 | return _internalEnergyPerInput; 48 | } 49 | 50 | public float getInternalEnergyPerOutput(int meta) { 51 | return _internalEnergyPerOutput; 52 | } 53 | 54 | public String getUnit() { 55 | return getUnit(-1); 56 | } 57 | 58 | @SuppressWarnings("UnusedParameters") 59 | public String getUnit(int subtype) { 60 | return _unit; 61 | } 62 | 63 | public String[] getVoltageNames() { 64 | return voltageNames; 65 | } 66 | 67 | 68 | /** 69 | * Formats the Rate String for Bridge GUI 70 | * 71 | * Will be only called if isConnected 72 | * 73 | */ 74 | public String getRateString(BridgeSideData data) { 75 | double rate = data.outputRate; 76 | 77 | if(rate > 1000000) { // mega 78 | double rateMillion = (rate / 1000000); 79 | return String.format("%.1f %s%s/t", rateMillion, "m", this.getUnit()); 80 | 81 | } else if (rate > 1000) { // kilo 82 | double rateThousand = (rate / 1000.0); 83 | return String.format("%.1f %s%s/t", rateThousand, "k", this.getUnit()); 84 | 85 | } 86 | 87 | return rate + " " + this.getUnit() + "/t"; 88 | } 89 | 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/PowerSystemManager.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | import net.minecraft.nbt.NBTTagList; 5 | import net.minecraft.nbt.NBTTagString; 6 | import net.minecraftforge.common.config.Configuration; 7 | import net.minecraftforge.common.util.Constants; 8 | 9 | import java.util.ArrayList; 10 | import java.util.HashMap; 11 | import java.util.List; 12 | import java.util.Map; 13 | 14 | /** 15 | * Class to manage the power systems. 16 | */ 17 | public class PowerSystemManager { 18 | private static PowerSystemManager instance; 19 | 20 | private Map powerSystems = new HashMap(); 21 | 22 | private List systemIds = new ArrayList(); 23 | private List serverSystemIds = new ArrayList(); 24 | 25 | public static PowerSystemManager getInstance() { 26 | if(instance == null) { 27 | instance = new PowerSystemManager(); 28 | } 29 | return instance; 30 | } 31 | 32 | public void setServerSystemIds() { 33 | serverSystemIds = systemIds; 34 | for(PowerSystem powerSystem : powerSystems.values()) { 35 | powerSystem.readEnergyValues(powerSystem.writeEnergyValues()); 36 | } 37 | } 38 | 39 | public void setServerSystemIds(ArrayList ids) { 40 | serverSystemIds = ids; 41 | for(PowerSystem powerSystem : powerSystems.values()) { 42 | powerSystem.readEnergyValues(powerSystem.writeEnergyValues()); 43 | } 44 | } 45 | 46 | public void readPowerData(NBTTagCompound nbt) { 47 | // Ensure system ids don't double up when reading. (i.e. multiple connects) 48 | serverSystemIds.clear(); 49 | NBTTagList ids = nbt.getTagList("systemIds", Constants.NBT.TAG_STRING); 50 | for(int i = 0; i < ids.tagCount(); i++) { 51 | serverSystemIds.add(ids.getStringTagAt(i)); 52 | } 53 | for(PowerSystem powerSystem : powerSystems.values()) { 54 | NBTTagCompound powerSystemNBT = nbt.getCompoundTag(powerSystem.getId()); 55 | powerSystem.readEnergyValues(powerSystemNBT); 56 | } 57 | } 58 | 59 | public NBTTagCompound writePowerData() { 60 | NBTTagCompound nbt = new NBTTagCompound(); 61 | NBTTagList ids = new NBTTagList(); 62 | for(String systemId : systemIds) { 63 | ids.appendTag(new NBTTagString(systemId)); 64 | } 65 | nbt.setTag("systemIds", ids); 66 | for(PowerSystem powerSystem : powerSystems.values()) { 67 | nbt.setTag(powerSystem.getId(), powerSystem.writeEnergyValues()); 68 | } 69 | 70 | return nbt; 71 | } 72 | 73 | public void registerPowerSystem(PowerSystem powerSystem) { 74 | registerPowerSystem(powerSystem.getId(), powerSystem); 75 | systemIds.add(powerSystem.getId()); 76 | } 77 | 78 | public void registerPowerSystem(String id, PowerSystem powerSystem) { 79 | powerSystems.put(id, powerSystem); 80 | } 81 | 82 | public PowerSystem getPowerSystemByName(String name) { 83 | return powerSystems.containsKey(name) ? powerSystems.get(name) : null; 84 | } 85 | 86 | public int getPowerSystemId(String name) { 87 | return serverSystemIds.lastIndexOf(name); 88 | } 89 | 90 | public PowerSystem getPowerSystemById(int id) { 91 | String name = serverSystemIds.get(id); 92 | return getPowerSystemByName(name); 93 | } 94 | 95 | public void registerBlocks() { 96 | for(PowerSystem powerSystem : powerSystems.values()) { 97 | powerSystem.registerBlocks(); 98 | } 99 | } 100 | 101 | public void registerCommonRecipes() { 102 | for(PowerSystem powerSystem : powerSystems.values()) { 103 | powerSystem.registerCommonRecipes(); 104 | } 105 | } 106 | 107 | public void loadConfigs(Configuration c) { 108 | for(PowerSystem powerSystem : powerSystems.values()) { 109 | powerSystem.loadConfig(c); 110 | } 111 | } 112 | 113 | public void saveConfigs(Configuration c) { 114 | for(PowerSystem powerSystem : powerSystems.values()) { 115 | powerSystem.saveConfig(c); 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/base/BlockPowerConverter.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.base; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.block.Block; 6 | import net.minecraft.block.BlockContainer; 7 | import net.minecraft.block.material.Material; 8 | import net.minecraft.entity.player.EntityPlayer; 9 | import net.minecraft.tileentity.TileEntity; 10 | import net.minecraft.util.IIcon; 11 | import net.minecraft.world.IBlockAccess; 12 | import net.minecraft.world.World; 13 | import powercrystals.powerconverters.PowerConverterCore; 14 | import powercrystals.powerconverters.common.TileEntityEnergyBridge; 15 | import powercrystals.powerconverters.position.INeighboorUpdateTile; 16 | 17 | public class BlockPowerConverter extends BlockContainer { 18 | protected IIcon[] _icons; 19 | 20 | public BlockPowerConverter(int metaCount) { 21 | super(Material.iron); 22 | setHardness(2.0F); 23 | _icons = new IIcon[metaCount * 2]; 24 | } 25 | 26 | @Override 27 | @SideOnly(Side.CLIENT) 28 | public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { 29 | int offset = ((TileEntityBridgeComponent) world.getTileEntity(x, y, z)).isSideConnectedClient(side) ? 1 : 0; 30 | return _icons[world.getBlockMetadata(x, y, z) * 2 + offset]; 31 | } 32 | 33 | @Override 34 | public IIcon getIcon(int side, int metadata) { 35 | return _icons[metadata * 2]; 36 | } 37 | 38 | @Override 39 | public TileEntity createNewTileEntity(World world, int meta) { 40 | return null; 41 | } 42 | 43 | @Override 44 | public boolean canProvidePower() { 45 | return true; 46 | } 47 | 48 | @Override 49 | public int damageDropped(int par1) { 50 | return par1; 51 | } 52 | 53 | @Override 54 | public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { 55 | TileEntity te = world.getTileEntity(x, y, z); 56 | if (te != null && te instanceof INeighboorUpdateTile) { 57 | ((INeighboorUpdateTile) te).onNeighboorChanged(); 58 | world.markBlockForUpdate(x, y, z); 59 | } 60 | } 61 | 62 | @Override 63 | public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { 64 | TileEntity te = world.getTileEntity(x, y, z); 65 | if (te != null && te instanceof TileEntityBridgeComponent) { 66 | TileEntityEnergyBridge bridge = ((TileEntityBridgeComponent) te).getFirstBridge(); 67 | if (bridge != null) { 68 | player.openGui(PowerConverterCore.instance, 0, world, bridge.xCoord, bridge.yCoord, bridge.zCoord); 69 | } 70 | } 71 | return true; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/base/TileEntityBridgeComponent.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.base; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | import net.minecraft.tileentity.TileEntity; 5 | import net.minecraftforge.common.util.ForgeDirection; 6 | import powercrystals.powerconverters.common.TileEntityEnergyBridge; 7 | import powercrystals.powerconverters.position.BlockPosition; 8 | import powercrystals.powerconverters.position.INeighboorUpdateTile; 9 | import powercrystals.powerconverters.power.PowerSystem; 10 | 11 | import java.util.HashMap; 12 | import java.util.Map; 13 | 14 | public class TileEntityBridgeComponent extends TileEntity implements INeighboorUpdateTile { 15 | private Map _adjacentBridges = new HashMap(); 16 | private Map _adjacentTiles = new HashMap(); 17 | 18 | private Class _adjacentClass; 19 | protected PowerSystem _powerSystem; 20 | protected int _voltageIndex; 21 | 22 | private boolean _initialized; 23 | 24 | protected TileEntityBridgeComponent(PowerSystem powersystem, int voltageNameIndex, Class adjacentClass) { 25 | _powerSystem = powersystem; 26 | _voltageIndex = voltageNameIndex; 27 | _adjacentClass = adjacentClass; 28 | } 29 | 30 | @Override 31 | public void updateEntity() { 32 | super.updateEntity(); 33 | 34 | if (!_initialized && !tileEntityInvalid) { 35 | onNeighboorChanged(); 36 | _initialized = true; 37 | } 38 | } 39 | 40 | @SuppressWarnings("unchecked") 41 | @Override 42 | public void onNeighboorChanged() { 43 | Map adjacentBridges = new HashMap(); 44 | Map adjacentTiles = new HashMap(); 45 | 46 | for (ForgeDirection d : ForgeDirection.VALID_DIRECTIONS) { 47 | TileEntity te = BlockPosition.getAdjacentTileEntity(this, d); 48 | if (te instanceof TileEntityEnergyBridge) { 49 | adjacentBridges.put(d, (TileEntityEnergyBridge) te); 50 | } else if (te != null && _adjacentClass.isAssignableFrom(te.getClass())) { 51 | adjacentTiles.put(d, (T) te); 52 | } 53 | } 54 | 55 | _adjacentBridges = adjacentBridges; 56 | _adjacentTiles = adjacentTiles; 57 | } 58 | 59 | public PowerSystem getPowerSystem() { 60 | return _powerSystem; 61 | } 62 | 63 | public boolean isConnected() { 64 | return _adjacentTiles.size() > 0; 65 | } 66 | 67 | public boolean isSideConnected(int side) { 68 | return _adjacentTiles.get(ForgeDirection.getOrientation(side)) != null; 69 | } 70 | 71 | public boolean isSideConnectedClient(int side) { 72 | TileEntity te = BlockPosition.getAdjacentTileEntity(this, ForgeDirection.getOrientation(side)); 73 | return te != null && _adjacentClass.isAssignableFrom(te.getClass()); 74 | } 75 | 76 | public int getVoltageIndex() { 77 | return _voltageIndex; 78 | } 79 | 80 | public int getSubtype() { 81 | return -1; 82 | } 83 | 84 | public TileEntityEnergyBridge getFirstBridge() { 85 | return _adjacentBridges.size() == 0 ? null : (TileEntityEnergyBridge) _adjacentBridges.values().toArray()[0]; 86 | } 87 | 88 | protected Map getBridges() { 89 | return _adjacentBridges; 90 | } 91 | 92 | protected Map getTiles() { 93 | return _adjacentTiles; 94 | } 95 | 96 | @Override 97 | public void onChunkUnload() { 98 | invalidate(); 99 | } 100 | 101 | @Override 102 | public void readFromNBT(NBTTagCompound tagCompound) { 103 | super.readFromNBT(tagCompound); 104 | if (_voltageIndex == 0) { 105 | _voltageIndex = tagCompound.getInteger("voltageIndex"); 106 | } 107 | } 108 | 109 | @Override 110 | public void writeToNBT(NBTTagCompound tagCompound) { 111 | super.writeToNBT(tagCompound); 112 | tagCompound.setInteger("voltageIndex", _voltageIndex); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/base/TileEntityEnergyConsumer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.base; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | import powercrystals.powerconverters.common.TileEntityEnergyBridge; 5 | import powercrystals.powerconverters.power.PowerSystem; 6 | 7 | import java.util.Map.Entry; 8 | 9 | public abstract class TileEntityEnergyConsumer extends TileEntityBridgeComponent { 10 | public TileEntityEnergyConsumer(PowerSystem powerSystem, int voltageNameIndex, Class adjacentClass) { 11 | super(powerSystem, voltageNameIndex, adjacentClass); 12 | } 13 | 14 | /** 15 | * @param energy amount of energy to store 16 | * @param simulate whether to actually store the energy 17 | * @return energy left over 18 | */ 19 | protected double storeEnergy(double energy, boolean simulate) { 20 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 21 | if(!powered) { 22 | for (Entry bridge : getBridges().entrySet()) { 23 | energy = bridge.getValue().storeEnergy(energy, simulate); 24 | if (energy <= 0) { 25 | return 0; 26 | } 27 | } 28 | } 29 | return energy; 30 | } 31 | 32 | protected int getTotalEnergyDemand() { 33 | int demand = 0; 34 | 35 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 36 | if(!powered) { 37 | for (Entry bridge : getBridges().entrySet()) { 38 | demand += (bridge.getValue().getEnergyStoredMax() - bridge.getValue().getEnergyStored()); 39 | } 40 | } 41 | 42 | return demand; 43 | } 44 | 45 | public abstract double getInputRate(); 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/base/TileEntityEnergyProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.base; 2 | 3 | import powercrystals.powerconverters.power.PowerSystem; 4 | 5 | public abstract class TileEntityEnergyProducer extends TileEntityBridgeComponent { 6 | public TileEntityEnergyProducer(PowerSystem powerSystem, int voltageNameIndex, Class adjacentClass) { 7 | super(powerSystem, voltageNameIndex, adjacentClass); 8 | } 9 | 10 | public abstract double produceEnergy(double energy); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/PowerFactorization.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraftforge.common.config.Configuration; 6 | import powercrystals.powerconverters.power.PowerSystem; 7 | import powercrystals.powerconverters.power.systems.factorization.BlockFactorization; 8 | import powercrystals.powerconverters.power.systems.factorization.ItemBlockFactorization; 9 | import powercrystals.powerconverters.power.systems.factorization.TileEntityFactorizationConsumer; 10 | import powercrystals.powerconverters.power.systems.factorization.TileEntityFactorizationProducer; 11 | 12 | /** 13 | * Factorization support. Adds producer and consumer. 14 | */ 15 | public class PowerFactorization extends PowerSystem { 16 | public static final String id = "FZ"; 17 | 18 | public static final float DEFAULT_ENERGY_PER_INPUT = 175; 19 | public static final float DEFAULT_ENERGY_PER_OUTPUT = 175; 20 | public static final String CATEGORY_FACTORIZATION = POWERSYSTEM_CATEGORY + ".fz"; 21 | 22 | public PowerFactorization() { 23 | name = "Factorization"; 24 | _internalEnergyPerInput = DEFAULT_ENERGY_PER_INPUT; 25 | _internalEnergyPerOutput = DEFAULT_ENERGY_PER_OUTPUT; 26 | _unit = "CG"; 27 | 28 | block = new BlockFactorization(); 29 | itemBlock = ItemBlockFactorization.class; 30 | consumer = TileEntityFactorizationConsumer.class; 31 | producer = TileEntityFactorizationProducer.class; 32 | } 33 | 34 | @Override 35 | public String getId() { 36 | return id; 37 | } 38 | 39 | public void registerBlocks() { 40 | GameRegistry.registerBlock(block, itemBlock, "converter.fz"); 41 | GameRegistry.registerTileEntity(consumer, "powerConverterFZConsumer"); 42 | GameRegistry.registerTileEntity(producer, "powerConverterFZProducer"); 43 | } 44 | 45 | @Override 46 | public void registerCommonRecipes() { 47 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 1), new ItemStack(block, 1, 0)); 48 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 0), new ItemStack(block, 1, 1)); 49 | } 50 | 51 | @Override 52 | public void loadConfig(Configuration c) { 53 | _internalEnergyPerInput = (float) c.get(CATEGORY_FACTORIZATION, "internalEnergyPerInput", DEFAULT_ENERGY_PER_INPUT).getDouble(DEFAULT_ENERGY_PER_INPUT); 54 | _internalEnergyPerOutput = (float) c.get(CATEGORY_FACTORIZATION, "internalEnergyPerOutput", DEFAULT_ENERGY_PER_OUTPUT).getDouble(DEFAULT_ENERGY_PER_OUTPUT); 55 | } 56 | 57 | @Override 58 | public void saveConfig(Configuration c) { 59 | c.getCategory(CATEGORY_FACTORIZATION).get("internalEnergyPerInput").set(_internalEnergyPerInput); 60 | c.getCategory(CATEGORY_FACTORIZATION).get("internalEnergyPerOutput").set(_internalEnergyPerOutput); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/PowerFortron.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraftforge.common.config.Configuration; 6 | import powercrystals.powerconverters.common.TileEntityCharger; 7 | import powercrystals.powerconverters.power.PowerSystem; 8 | 9 | import powercrystals.powerconverters.power.systems.fortron.BlockFortron; 10 | import powercrystals.powerconverters.power.systems.fortron.ItemBlockFortron; 11 | import powercrystals.powerconverters.power.systems.fortron.TileEntityFortronConsumer; 12 | import powercrystals.powerconverters.power.systems.fortron.TileEntityFortronProducer; 13 | 14 | /** 15 | * Fortron Energy (MFFS) support. 16 | */ 17 | public class PowerFortron extends PowerSystem { 18 | public static final String id = "Fortron"; 19 | 20 | // Maybe the Ratio should be discussed with calclavia, 21 | // i asume that 1rf = 1joule(@mffs-api@resonant-engine) 22 | // so 1kL/s -> 50L/t = 50rf/t 23 | 24 | public static final float DEFAULT_ENERGY_PER_INPUT = 1000; 25 | public static final float DEFAULT_ENERGY_PER_OUTPUT = 1000; 26 | public static final String CATEGORY_MFFS = POWERSYSTEM_CATEGORY + ".mffs"; 27 | 28 | public PowerFortron() { 29 | name = "Fortron"; 30 | _internalEnergyPerInput = DEFAULT_ENERGY_PER_INPUT; 31 | _internalEnergyPerOutput = DEFAULT_ENERGY_PER_OUTPUT; 32 | _unit = "L"; 33 | 34 | block = new BlockFortron(); 35 | itemBlock = ItemBlockFortron.class; 36 | consumer = TileEntityFortronConsumer.class; 37 | producer = TileEntityFortronProducer.class; 38 | 39 | } 40 | 41 | @Override 42 | public String getId() { 43 | return id; 44 | } 45 | 46 | public void registerBlocks() { 47 | GameRegistry.registerBlock(block, itemBlock, "converter.fotron"); 48 | GameRegistry.registerTileEntity(consumer, "powerConverterFortronConsumer"); 49 | GameRegistry.registerTileEntity(producer, "powerConverterFortronProducer"); 50 | } 51 | 52 | @Override 53 | public void registerCommonRecipes() { 54 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 1), new ItemStack(block, 1, 0)); 55 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 0), new ItemStack(block, 1, 1)); 56 | } 57 | 58 | @Override 59 | public void loadConfig(Configuration c) { 60 | _internalEnergyPerInput = (float) c.get(CATEGORY_MFFS, "internalEnergyPerInput", DEFAULT_ENERGY_PER_INPUT).getDouble(DEFAULT_ENERGY_PER_INPUT); 61 | _internalEnergyPerOutput = (float) c.get(CATEGORY_MFFS, "internalEnergyPerOutput", DEFAULT_ENERGY_PER_OUTPUT).getDouble(DEFAULT_ENERGY_PER_OUTPUT); 62 | } 63 | 64 | @Override 65 | public void saveConfig(Configuration c) { 66 | c.getCategory(CATEGORY_MFFS).get("internalEnergyPerInput").set(_internalEnergyPerInput); 67 | c.getCategory(CATEGORY_MFFS).get("internalEnergyPerOutput").set(_internalEnergyPerOutput); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/PowerIndustrialcraft.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraftforge.common.config.Configuration; 6 | import powercrystals.powerconverters.common.TileEntityCharger; 7 | import powercrystals.powerconverters.power.PowerSystem; 8 | import powercrystals.powerconverters.power.systems.ic2.BlockIndustrialCraft; 9 | import powercrystals.powerconverters.power.systems.ic2.ChargeHandlerIndustrialCraft; 10 | import powercrystals.powerconverters.power.systems.ic2.ItemBlockIndustrialCraft; 11 | import powercrystals.powerconverters.power.systems.ic2.TileEntityIndustrialCraftConsumer; 12 | import powercrystals.powerconverters.power.systems.ic2.TileEntityIndustrialCraftProducer; 13 | 14 | /** 15 | * Industrialcraft support. Adds producer and consumer. 16 | */ 17 | public class PowerIndustrialcraft extends PowerSystem { 18 | public static final String id = "IC2"; 19 | 20 | public static final float DEFAULT_ENERGY_PER_INPUT = 4000; 21 | public static final float DEFAULT_ENERGY_PER_OUTPUT = 4000; 22 | public static final String CATEGORY_FACTORIZATION = POWERSYSTEM_CATEGORY + ".ic2"; 23 | 24 | public static final String[] VOLTAGE_NAMES = new String[]{"LV", "MV", "HV", "EV", "UV"}; 25 | public static final int[] VOLTAGE_VALUES = new int[]{32, 128, 512, 2048, 8192}; 26 | 27 | public PowerIndustrialcraft() { 28 | name = "Industrialcraft"; 29 | _internalEnergyPerInput = DEFAULT_ENERGY_PER_INPUT; 30 | _internalEnergyPerOutput = DEFAULT_ENERGY_PER_OUTPUT; 31 | _unit = "EU"; 32 | voltageNames = VOLTAGE_NAMES; 33 | voltageValues = VOLTAGE_VALUES; 34 | 35 | block = new BlockIndustrialCraft(); 36 | itemBlock = ItemBlockIndustrialCraft.class; 37 | consumer = TileEntityIndustrialCraftConsumer.class; 38 | producer = TileEntityIndustrialCraftProducer.class; 39 | 40 | TileEntityCharger.registerChargeHandler(new ChargeHandlerIndustrialCraft()); 41 | } 42 | 43 | @Override 44 | public String getId() { 45 | return id; 46 | } 47 | 48 | public void registerBlocks() { 49 | GameRegistry.registerBlock(block, itemBlock, "converter.ic2"); 50 | GameRegistry.registerTileEntity(consumer, "powerConverterIC2Consumer"); 51 | GameRegistry.registerTileEntity(producer, "powerConverterIC2Producer"); 52 | } 53 | 54 | @Override 55 | public void registerCommonRecipes() { 56 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 1), new ItemStack(block, 1, 0)); 57 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 0), new ItemStack(block, 1, 1)); 58 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 3), new ItemStack(block, 1, 2)); 59 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 2), new ItemStack(block, 1, 3)); 60 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 5), new ItemStack(block, 1, 4)); 61 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 4), new ItemStack(block, 1, 5)); 62 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 7), new ItemStack(block, 1, 6)); 63 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 6), new ItemStack(block, 1, 7)); 64 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 9), new ItemStack(block, 1, 8)); 65 | } 66 | 67 | @Override 68 | public void loadConfig(Configuration c) { 69 | _internalEnergyPerInput = (float) c.get(CATEGORY_FACTORIZATION, "internalEnergyPerInput", DEFAULT_ENERGY_PER_INPUT).getDouble(DEFAULT_ENERGY_PER_INPUT); 70 | _internalEnergyPerOutput = (float) c.get(CATEGORY_FACTORIZATION, "internalEnergyPerOutput", DEFAULT_ENERGY_PER_OUTPUT).getDouble(DEFAULT_ENERGY_PER_OUTPUT); 71 | } 72 | 73 | @Override 74 | public void saveConfig(Configuration c) { 75 | c.getCategory(CATEGORY_FACTORIZATION).get("internalEnergyPerInput").set(_internalEnergyPerInput); 76 | c.getCategory(CATEGORY_FACTORIZATION).get("internalEnergyPerOutput").set(_internalEnergyPerOutput); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/PowerRedstoneFlux.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems; 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraftforge.common.config.Configuration; 6 | import powercrystals.powerconverters.common.TileEntityCharger; 7 | import powercrystals.powerconverters.power.PowerSystem; 8 | import powercrystals.powerconverters.power.systems.rf.BlockRF; 9 | import powercrystals.powerconverters.power.systems.rf.ChargeHandlerRF; 10 | import powercrystals.powerconverters.power.systems.rf.ItemBlockRF; 11 | import powercrystals.powerconverters.power.systems.rf.TileEntityRFConsumer; 12 | import powercrystals.powerconverters.power.systems.rf.TileEntityRFProducer; 13 | 14 | /** 15 | * RF support. Adds the producer and consumer. 16 | */ 17 | public class PowerRedstoneFlux extends PowerSystem { 18 | public static final String id = "RF"; 19 | 20 | public static final float DEFAULT_ENERGY_PER_INPUT = 1000; 21 | public static final float DEFAULT_ENERGY_PER_OUTPUT = 1000; 22 | public static final String CATEGORY_BUILDCRAFT = POWERSYSTEM_CATEGORY + ".rf"; 23 | 24 | public PowerRedstoneFlux() { 25 | name = "RedstoneFlux"; 26 | _internalEnergyPerInput = DEFAULT_ENERGY_PER_INPUT; 27 | _internalEnergyPerOutput = DEFAULT_ENERGY_PER_OUTPUT; 28 | _unit = "RF"; 29 | 30 | block = new BlockRF(); 31 | itemBlock = ItemBlockRF.class; 32 | consumer = TileEntityRFConsumer.class; 33 | producer = TileEntityRFProducer.class; 34 | 35 | TileEntityCharger.registerChargeHandler(new ChargeHandlerRF()); 36 | } 37 | 38 | @Override 39 | public String getId() { 40 | return id; 41 | } 42 | 43 | public void registerBlocks() { 44 | GameRegistry.registerBlock(block, itemBlock, "converter.rf"); 45 | GameRegistry.registerTileEntity(consumer, "powerConverterRFConsumer"); 46 | GameRegistry.registerTileEntity(producer, "powerConverterRFProducer"); 47 | } 48 | 49 | @Override 50 | public void registerCommonRecipes() { 51 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 1), new ItemStack(block, 1, 0)); 52 | GameRegistry.addShapelessRecipe(new ItemStack(block, 1, 0), new ItemStack(block, 1, 1)); 53 | } 54 | 55 | @Override 56 | public void loadConfig(Configuration c) { 57 | _internalEnergyPerInput = (float) c.get(CATEGORY_BUILDCRAFT, "internalEnergyPerInput", DEFAULT_ENERGY_PER_INPUT).getDouble(DEFAULT_ENERGY_PER_INPUT); 58 | _internalEnergyPerOutput = (float) c.get(CATEGORY_BUILDCRAFT, "internalEnergyPerOutput", DEFAULT_ENERGY_PER_OUTPUT).getDouble(DEFAULT_ENERGY_PER_OUTPUT); 59 | } 60 | 61 | @Override 62 | public void saveConfig(Configuration c) { 63 | c.getCategory(CATEGORY_BUILDCRAFT).get("internalEnergyPerInput").set(_internalEnergyPerInput); 64 | c.getCategory(CATEGORY_BUILDCRAFT).get("internalEnergyPerOutput").set(_internalEnergyPerOutput); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/Rotarycraft.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Reika (the rotarycraft dev) has explicitly disallowed Rotarycraft support in Powerconverters. 3 | * This is because of the damage that does to Rotarycraft's balance, design, realism, and interfacing. 4 | */ 5 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/factorization/BlockFactorization.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.factorization; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.renderer.texture.IIconRegister; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraft.world.World; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.gui.PCCreativeTab; 10 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 11 | 12 | /** 13 | * Block for Factorization consumer and producer. 14 | */ 15 | public class BlockFactorization extends BlockPowerConverter { 16 | public BlockFactorization() { 17 | super(2); 18 | setBlockName("powerconverters.factorization"); 19 | setCreativeTab(PCCreativeTab.tab); 20 | } 21 | 22 | @Override 23 | public TileEntity createTileEntity(World world, int metadata) { 24 | if (metadata == 0) return new TileEntityFactorizationConsumer(); 25 | else if (metadata == 1) return new TileEntityFactorizationProducer(); 26 | 27 | return createNewTileEntity(world, metadata); 28 | } 29 | 30 | @Override 31 | @SideOnly(Side.CLIENT) 32 | public void registerBlockIcons(IIconRegister ir) { 33 | String[] types = {"consumer", "producer"}; 34 | String[] states = {"off", "on"}; 35 | String folderName = getUnlocalizedName().substring("tile.powerconverters.".length()); 36 | 37 | int i = 0; 38 | for (String type : types) { 39 | for (String state : states) { 40 | _icons[i] = ir.registerIcon(String.format("%s:%s/%s_%s", PowerConverterCore.modId, folderName, type, state)); 41 | i++; 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/factorization/ItemBlockFactorization.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.factorization; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.creativetab.CreativeTabs; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemBlock; 7 | import net.minecraft.item.ItemStack; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * Item block for Factorization 13 | */ 14 | public class ItemBlockFactorization extends ItemBlock { 15 | public ItemBlockFactorization(Block block) { 16 | super(block); 17 | setHasSubtypes(true); 18 | setMaxDamage(0); 19 | } 20 | 21 | @Override 22 | public int getMetadata(int i) { 23 | return i; 24 | } 25 | 26 | @Override 27 | public String getUnlocalizedName(ItemStack itemstack) { 28 | int md = itemstack.getItemDamage(); 29 | if (md == 0) return "powerconverters.factorization.consumer"; 30 | if (md == 1) return "powerconverters.factorization.producer"; 31 | return "unknown"; 32 | } 33 | 34 | @SuppressWarnings({"unchecked", "rawtypes"}) 35 | @Override 36 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 37 | for (int i = 0; i <= 1; i++) { 38 | subTypes.add(new ItemStack(item, 1, i)); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/factorization/TileEntityFactorizationConsumer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.factorization; 2 | 3 | import factorization.api.Charge; 4 | import factorization.api.Coord; 5 | import factorization.api.IChargeConductor; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraft.util.MathHelper; 8 | import net.minecraftforge.common.util.ForgeDirection; 9 | import powercrystals.powerconverters.position.BlockPosition; 10 | import powercrystals.powerconverters.power.PowerSystemManager; 11 | import powercrystals.powerconverters.power.base.TileEntityEnergyConsumer; 12 | import powercrystals.powerconverters.power.systems.PowerFactorization; 13 | 14 | public class TileEntityFactorizationConsumer extends TileEntityEnergyConsumer implements IChargeConductor { 15 | private Charge _charge = new Charge(this); 16 | private int _chargeLastTick = 0; 17 | private static final int _maxCG = 1000; 18 | private boolean neighbourDirty = false; 19 | 20 | public TileEntityFactorizationConsumer() { 21 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerFactorization.id), 0, IChargeConductor.class); 22 | } 23 | 24 | @Override 25 | public void updateEntity() { 26 | super.updateEntity(); 27 | if (worldObj.isRemote) { 28 | return; 29 | } 30 | 31 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 32 | if(!powered) { 33 | if (this._charge.getValue() < _maxCG) { 34 | this._charge.update(); 35 | } 36 | 37 | if (this._charge.getValue() > 0) { 38 | int used = _charge.tryTake(_charge.getValue()); 39 | _chargeLastTick = MathHelper.floor_float(used); 40 | storeEnergy((used * getPowerSystem().getInternalEnergyPerInput(0)), false); 41 | } else { 42 | this._chargeLastTick = 0; 43 | } 44 | } 45 | } 46 | 47 | @Override 48 | public double getInputRate() { 49 | return this._chargeLastTick; 50 | } 51 | 52 | @Override 53 | public Charge getCharge() { 54 | return this._charge; 55 | } 56 | 57 | @Override 58 | public String getInfo() { 59 | return null; 60 | } 61 | 62 | @Override 63 | public Coord getCoord() { 64 | return new Coord(this); 65 | } 66 | 67 | @Override 68 | public void onNeighboorChanged() { 69 | super.onNeighboorChanged(); 70 | 71 | try { 72 | Class fzNullClass = Class.forName("factorization.shared.TileEntityFzNull"); 73 | for (ForgeDirection d : ForgeDirection.VALID_DIRECTIONS) { 74 | TileEntity te = BlockPosition.getAdjacentTileEntity(this, d); 75 | //noinspection unchecked 76 | if (te != null && fzNullClass.isAssignableFrom(te.getClass())) { 77 | neighbourDirty = true; 78 | } 79 | } 80 | } catch (ClassNotFoundException e) { 81 | e.printStackTrace(); 82 | } 83 | } 84 | 85 | @Override 86 | public boolean isConnected() { 87 | if (neighbourDirty) { 88 | onNeighboorChanged(); 89 | neighbourDirty = false; 90 | } 91 | return super.isConnected(); 92 | } 93 | } 94 | 95 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/factorization/TileEntityFactorizationProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.factorization; 2 | 3 | import factorization.api.Charge; 4 | import factorization.api.Coord; 5 | import factorization.api.IChargeConductor; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraftforge.common.util.ForgeDirection; 8 | import powercrystals.powerconverters.position.BlockPosition; 9 | import powercrystals.powerconverters.power.PowerSystemManager; 10 | import powercrystals.powerconverters.power.base.TileEntityEnergyProducer; 11 | import powercrystals.powerconverters.power.systems.PowerFactorization; 12 | 13 | import java.util.Map.Entry; 14 | 15 | public class TileEntityFactorizationProducer extends TileEntityEnergyProducer implements IChargeConductor { 16 | private Charge _charge = new Charge(this); 17 | private static final int _maxCG = 1000; 18 | private boolean neighbourDirty = false; 19 | 20 | public TileEntityFactorizationProducer() { 21 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerFactorization.id), 0, IChargeConductor.class); 22 | } 23 | 24 | @Override 25 | public double produceEnergy(double energy) { 26 | double CG = energy / getPowerSystem().getInternalEnergyPerOutput(0); 27 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 28 | if(!powered) { 29 | for (Entry output : this.getTiles().entrySet()) { 30 | IChargeConductor o = output.getValue(); 31 | if (o != null) { 32 | if (o.getCharge().getValue() < _maxCG) { 33 | int store = (int) Math.min(_maxCG - o.getCharge().getValue(), CG); 34 | o.getCharge().addValue(store); 35 | CG -= store; 36 | if (CG <= 0) { 37 | break; 38 | } 39 | } 40 | } 41 | } 42 | } 43 | return CG * getPowerSystem().getInternalEnergyPerOutput(0); 44 | } 45 | 46 | @Override 47 | public Charge getCharge() { 48 | return this._charge; 49 | } 50 | 51 | @Override 52 | public String getInfo() { 53 | return null; 54 | } 55 | 56 | @Override 57 | public Coord getCoord() { 58 | return new Coord(this); 59 | } 60 | 61 | @Override 62 | public void onNeighboorChanged() { 63 | super.onNeighboorChanged(); 64 | 65 | try { 66 | Class fzNullClass = Class.forName("factorization.shared.TileEntityFzNull"); 67 | for (ForgeDirection d : ForgeDirection.VALID_DIRECTIONS) { 68 | TileEntity te = BlockPosition.getAdjacentTileEntity(this, d); 69 | //noinspection unchecked 70 | if (te != null && fzNullClass != null && fzNullClass.isAssignableFrom(te.getClass())) { 71 | neighbourDirty = true; 72 | } 73 | } 74 | } catch (ClassNotFoundException e) { 75 | e.printStackTrace(); 76 | } 77 | } 78 | 79 | @Override 80 | public boolean isConnected() { 81 | if (neighbourDirty) { 82 | onNeighboorChanged(); 83 | neighbourDirty = false; 84 | } 85 | return super.isConnected(); 86 | } 87 | } 88 | 89 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/fortron/BlockFortron.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.fortron; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.renderer.texture.IIconRegister; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraft.world.World; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.gui.PCCreativeTab; 10 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 11 | 12 | 13 | public class BlockFortron extends BlockPowerConverter { 14 | 15 | public BlockFortron() { 16 | super(2); 17 | setBlockName("powerconverters.mffs"); 18 | setCreativeTab(PCCreativeTab.tab); 19 | } 20 | 21 | @Override 22 | public TileEntity createNewTileEntity(World world, int metadata) { 23 | if (metadata == 0) return new TileEntityFortronConsumer(); 24 | else if (metadata == 1) return new TileEntityFortronProducer(); 25 | 26 | return null; 27 | } 28 | 29 | @Override 30 | @SideOnly(Side.CLIENT) 31 | public void registerBlockIcons(IIconRegister ir) { 32 | String[] types = {"consumer", "producer"}; 33 | String[] states = {"off", "on"}; 34 | String folderName = getUnlocalizedName().substring("tile.powerconverters.".length()); 35 | 36 | int i = 0; 37 | for (String type : types) { 38 | for (String state : states) { 39 | _icons[i] = ir.registerIcon(String.format("%s:%s/%s_%s", PowerConverterCore.modId, folderName, type, state)); 40 | i++; 41 | } 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/fortron/ItemBlockFortron.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.fortron; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.creativetab.CreativeTabs; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemBlock; 7 | import net.minecraft.item.ItemStack; 8 | 9 | import java.util.List; 10 | 11 | 12 | public class ItemBlockFortron extends ItemBlock { 13 | 14 | public ItemBlockFortron(Block block) { 15 | super(block); 16 | setHasSubtypes(true); 17 | setMaxDamage(0); 18 | } 19 | 20 | @Override 21 | public int getMetadata(int i) { 22 | return i; 23 | } 24 | 25 | @Override 26 | public String getUnlocalizedName(ItemStack itemstack) { 27 | int md = itemstack.getItemDamage(); 28 | if (md == 0) return "powerconverters.mffs.consumer"; 29 | if (md == 1) return "powerconverters.mffs.producer"; 30 | return "unknown"; 31 | } 32 | 33 | @SuppressWarnings({"unchecked", "rawtypes"}) 34 | @Override 35 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 36 | for (int i = 0; i <= 1; i++) { 37 | subTypes.add(new ItemStack(item, 1, i)); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/fortron/TileEntityFortronConsumer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.fortron; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | import powercrystals.powerconverters.power.PowerSystemManager; 5 | import powercrystals.powerconverters.power.base.TileEntityEnergyConsumer; 6 | import powercrystals.powerconverters.power.systems.PowerFortron; 7 | 8 | import resonant.api.mffs.fortron.IFortronStorage; 9 | 10 | import java.util.Map.Entry; 11 | import java.lang.Math; 12 | 13 | public class TileEntityFortronConsumer extends TileEntityEnergyConsumer { 14 | 15 | private int lastReceivedFortron; 16 | 17 | public TileEntityFortronConsumer() { 18 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerFortron.id), 0, IFortronStorage.class); 19 | } 20 | 21 | @Override 22 | public void updateEntity() { 23 | super.updateEntity(); 24 | if(worldObj.isRemote) { 25 | return; 26 | } 27 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 28 | if(powered) { 29 | return; 30 | } 31 | 32 | // 33 | double perInput = getPowerSystem().getInternalEnergyPerInput(0); 34 | int demand = getTotalEnergyDemand(); 35 | 36 | if( (demand / perInput) < 1.0 ) { 37 | return; // we're not going to waste fortron energy we can't store. 38 | } 39 | 40 | // Demand internal units / perinput 41 | int totalFortronDemand = (int)Math.floor(demand / perInput); 42 | int fortronReceived; 43 | 44 | for (Entry it : this.getTiles().entrySet()) { 45 | IFortronStorage fs = it.getValue(); 46 | 47 | fortronReceived = fs.requestFortron(totalFortronDemand, true); 48 | 49 | storeEnergy( (fortronReceived * perInput), false); 50 | 51 | totalFortronDemand -= fortronReceived; 52 | 53 | // 54 | lastReceivedFortron += fortronReceived; 55 | 56 | if(totalFortronDemand <= 0) 57 | break; 58 | } 59 | 60 | 61 | 62 | } 63 | 64 | @Override 65 | public double getInputRate() { 66 | int last = lastReceivedFortron; 67 | lastReceivedFortron = 0; 68 | return last; 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/fortron/TileEntityFortronProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.fortron; 2 | 3 | import net.minecraftforge.common.util.ForgeDirection; 4 | import powercrystals.powerconverters.power.PowerSystemManager; 5 | import powercrystals.powerconverters.power.base.TileEntityEnergyProducer; 6 | import powercrystals.powerconverters.power.systems.PowerFortron; 7 | 8 | import resonant.api.mffs.fortron.IFortronStorage; 9 | 10 | import java.util.Map.Entry; 11 | 12 | 13 | 14 | public class TileEntityFortronProducer extends TileEntityEnergyProducer { 15 | 16 | public TileEntityFortronProducer() { 17 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerFortron.id), 0, IFortronStorage.class); 18 | } 19 | 20 | @Override 21 | public double produceEnergy(double energy) { 22 | final double energyToUse = energy / getPowerSystem().getInternalEnergyPerOutput(0); 23 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 24 | 25 | if (!powered && energyToUse > 0) { 26 | for (Entry it : this.getTiles().entrySet()) { 27 | 28 | IFortronStorage fs = it.getValue(); 29 | final double used = fs.provideFortron( (int)energyToUse, true ); 30 | 31 | energy -= (used * getPowerSystem().getInternalEnergyPerOutput(0) ); 32 | 33 | if(energy <= 0) 34 | break; 35 | 36 | } 37 | } 38 | 39 | return energy; 40 | } 41 | 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/gt5/BlockGregTechConsumer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.gt5; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.renderer.texture.IIconRegister; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraft.world.World; 8 | import net.minecraft.util.StatCollector; 9 | import net.minecraft.util.ChatComponentText; 10 | import net.minecraft.entity.player.EntityPlayer; 11 | import powercrystals.powerconverters.PowerConverterCore; 12 | import powercrystals.powerconverters.gui.PCCreativeTab; 13 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 14 | 15 | public class BlockGregTechConsumer extends BlockPowerConverter { 16 | public BlockGregTechConsumer() { 17 | super(18); 18 | setBlockName("powerconverters.gt.consumer"); 19 | setCreativeTab(PCCreativeTab.tab); 20 | } 21 | 22 | @Override 23 | public TileEntity createTileEntity(World world, int metadata) { 24 | return new TileEntityGregTechConsumer(metadata); 25 | } 26 | 27 | @Override 28 | @SideOnly(Side.CLIENT) 29 | public void registerBlockIcons(IIconRegister ir) { 30 | String[] voltages = {"ulv", "lv", "mv", "hv", "ev", "iv", "luv", "zpmv", "uv"}; 31 | String type = "consumer"; 32 | String[] states = {"off", "on"}; 33 | String folderName = getUnlocalizedName().substring("tile.powerconverters.".length()); 34 | folderName = folderName.substring(0, folderName.length() - type.length() - 1); // Strip out type 35 | 36 | int i = 0; 37 | for (String voltage : voltages) { 38 | for (String state : states) { 39 | _icons[i] = ir.registerIcon(String.format("%s:%s/%s/%s_%s", PowerConverterCore.modId, folderName, voltage, type, state)); 40 | i++; 41 | } 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/gt5/BlockGregTechProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.gt5; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.renderer.texture.IIconRegister; 6 | import net.minecraft.entity.player.EntityPlayer; 7 | import net.minecraft.tileentity.TileEntity; 8 | import net.minecraft.util.ChatComponentText; 9 | import net.minecraft.util.StatCollector; 10 | import net.minecraft.world.World; 11 | import powercrystals.powerconverters.PowerConverterCore; 12 | import powercrystals.powerconverters.gui.PCCreativeTab; 13 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 14 | 15 | public class BlockGregTechProducer extends BlockPowerConverter { 16 | public BlockGregTechProducer() { 17 | super(18); 18 | setBlockName("powerconverters.gt.producer"); 19 | setCreativeTab(PCCreativeTab.tab); 20 | } 21 | 22 | @Override 23 | public TileEntity createTileEntity(World world, int metadata) { 24 | return new TileEntityGregTechProducer(metadata); 25 | } 26 | 27 | @Override 28 | @SideOnly(Side.CLIENT) 29 | public void registerBlockIcons(IIconRegister ir) { 30 | String[] voltages = {"ulv", "lv", "mv", "hv", "ev", "iv", "luv", "zpmv", "uv"}; 31 | String type = "producer"; 32 | String[] states = {"off", "on"}; 33 | String folderName = getUnlocalizedName().substring("tile.powerconverters.".length()); 34 | folderName = folderName.substring(0, folderName.length() - type.length() - 1); // Strip out type 35 | 36 | int i = 0; 37 | for (String voltage : voltages) { 38 | for (String state : states) { 39 | _icons[i] = ir.registerIcon(String.format("%s:%s/%s/%s_%s", PowerConverterCore.modId, folderName, voltage, type, state)); 40 | i++; 41 | } 42 | } 43 | } 44 | 45 | @Override 46 | public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { 47 | TileEntity te = world.getTileEntity(x, y, z); 48 | 49 | if( !world.isRemote && te instanceof TileEntityGregTechProducer) { 50 | TileEntityGregTechProducer producer = (TileEntityGregTechProducer)te; 51 | 52 | if(player.isSneaking()){ 53 | long newAmperage = producer.incMaxAmperage(); 54 | player.addChatMessage( new ChatComponentText( StatCollector.translateToLocalFormatted("powerconverters.gt.producer.amperageChanged", newAmperage) )); 55 | 56 | } 57 | } else { 58 | return super.onBlockActivated(world, x, y, z, player, par6, par7, par8, par9); 59 | } 60 | 61 | return false; 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/gt5/ItemBlockGregTechConsumer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.gt5; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.block.Block; 6 | import net.minecraft.creativetab.CreativeTabs; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.item.Item; 9 | import net.minecraft.item.ItemBlock; 10 | import net.minecraft.item.ItemStack; 11 | import net.minecraft.util.EnumChatFormatting; 12 | import powercrystals.powerconverters.power.systems.PowerGregTech5; 13 | 14 | import java.util.List; 15 | 16 | public class ItemBlockGregTechConsumer extends ItemBlock { 17 | public ItemBlockGregTechConsumer(Block block) { 18 | super(block); 19 | setHasSubtypes(true); 20 | setMaxDamage(0); 21 | } 22 | 23 | @Override 24 | public int getMetadata(int i) { 25 | return i; 26 | } 27 | 28 | @SideOnly(Side.CLIENT) 29 | @Override 30 | public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { 31 | //noinspection unchecked 32 | par3List.add(EnumChatFormatting.BLUE + "Max EU in: " + PowerGregTech5.VOLTAGE_VALUES[par1ItemStack.getItemDamage()]); 33 | } 34 | 35 | @Override 36 | public String getUnlocalizedName(ItemStack itemstack) { 37 | int md = itemstack.getItemDamage(); 38 | if (md == 0) 39 | return "powerconverters.gt.ulv.consumer"; 40 | else if (md == 1) 41 | return "powerconverters.gt.lv.consumer"; 42 | else if (md == 2) 43 | return "powerconverters.gt.mv.consumer"; 44 | else if (md == 3) 45 | return "powerconverters.gt.hv.consumer"; 46 | else if (md == 4) 47 | return "powerconverters.gt.ev.consumer"; 48 | else if (md == 5) 49 | return "powerconverters.gt.iv.consumer"; 50 | else if (md == 6) 51 | return "powerconverters.gt.luv.consumer"; 52 | else if (md == 7) 53 | return "powerconverters.gt.zpmv.consumer"; 54 | else if (md == 8) 55 | return "powerconverters.gt.uv.consumer"; 56 | 57 | return "unknown"; 58 | } 59 | 60 | @SuppressWarnings({"unchecked", "rawtypes"}) 61 | @Override 62 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 63 | for (int i = 0; i < 9; i++) { 64 | subTypes.add(new ItemStack(item, 1, i)); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/gt5/ItemBlockGregTechProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.gt5; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.block.Block; 6 | import net.minecraft.creativetab.CreativeTabs; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.item.Item; 9 | import net.minecraft.item.ItemBlock; 10 | import net.minecraft.item.ItemStack; 11 | import net.minecraft.util.EnumChatFormatting; 12 | import powercrystals.powerconverters.power.systems.PowerGregTech5; 13 | 14 | import java.util.List; 15 | 16 | public class ItemBlockGregTechProducer extends ItemBlock { 17 | public ItemBlockGregTechProducer(Block block) { 18 | super(block); 19 | setHasSubtypes(true); 20 | setMaxDamage(0); 21 | } 22 | 23 | @Override 24 | public int getMetadata(int i) { 25 | return i; 26 | } 27 | 28 | @SideOnly(Side.CLIENT) 29 | @Override 30 | public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { 31 | //noinspection unchecked 32 | par3List.add(EnumChatFormatting.BLUE + "Max EU out: " + PowerGregTech5.VOLTAGE_VALUES[par1ItemStack.getItemDamage()]); 33 | } 34 | 35 | @Override 36 | public String getUnlocalizedName(ItemStack itemstack) { 37 | int md = itemstack.getItemDamage(); 38 | if (md == 0) 39 | return "powerconverters.gt.ulv.producer"; 40 | else if (md == 1) 41 | return "powerconverters.gt.lv.producer"; 42 | else if (md == 2) 43 | return "powerconverters.gt.mv.producer"; 44 | else if (md == 3) 45 | return "powerconverters.gt.hv.producer"; 46 | else if (md == 4) 47 | return "powerconverters.gt.ev.producer"; 48 | else if (md == 5) 49 | return "powerconverters.gt.iv.producer"; 50 | else if (md == 6) 51 | return "powerconverters.gt.luv.producer"; 52 | else if (md == 7) 53 | return "powerconverters.gt.zpmv.producer"; 54 | else if (md == 8) 55 | return "powerconverters.gt.uv.producer"; 56 | 57 | return "unknown"; 58 | } 59 | 60 | @SuppressWarnings({"unchecked", "rawtypes"}) 61 | @Override 62 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 63 | for (int i = 0; i < 9; i++) { 64 | subTypes.add(new ItemStack(item, 1, i)); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/ic2/BlockIndustrialCraft.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.ic2; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.renderer.texture.IIconRegister; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraft.world.World; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.gui.PCCreativeTab; 10 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 11 | 12 | public class BlockIndustrialCraft extends BlockPowerConverter { 13 | public BlockIndustrialCraft() { 14 | super(10); 15 | setBlockName("powerconverters.ic2"); 16 | setCreativeTab(PCCreativeTab.tab); 17 | } 18 | 19 | @Override 20 | public TileEntity createTileEntity(World world, int metadata) { 21 | if (metadata == 0) 22 | return new TileEntityIndustrialCraftConsumer(0); 23 | else if (metadata == 1) 24 | return new TileEntityIndustrialCraftProducer(0); 25 | else if (metadata == 2) 26 | return new TileEntityIndustrialCraftConsumer(1); 27 | else if (metadata == 3) 28 | return new TileEntityIndustrialCraftProducer(1); 29 | else if (metadata == 4) 30 | return new TileEntityIndustrialCraftConsumer(2); 31 | else if (metadata == 5) 32 | return new TileEntityIndustrialCraftProducer(2); 33 | else if (metadata == 6) 34 | return new TileEntityIndustrialCraftConsumer(3); 35 | else if (metadata == 7) 36 | return new TileEntityIndustrialCraftProducer(3); 37 | else if (metadata == 8) 38 | return new TileEntityIndustrialCraftConsumer(4); 39 | else if (metadata == 9) 40 | return new TileEntityIndustrialCraftProducer(4); 41 | 42 | return createNewTileEntity(world, metadata); 43 | } 44 | 45 | @Override 46 | @SideOnly(Side.CLIENT) 47 | public void registerBlockIcons(IIconRegister ir) { 48 | String[] voltages = {"lv", "mv", "hv", "ev", "uv"}; 49 | String[] types = {"consumer", "producer"}; 50 | String[] states = {"off", "on"}; 51 | String folderName = getUnlocalizedName().substring("tile.powerconverters.".length()); 52 | 53 | int i = 0; 54 | for (String voltage : voltages) { 55 | for (String type : types) { 56 | for (String state : states) { 57 | _icons[i] = ir.registerIcon(String.format("%s:%s/%s/%s_%s", PowerConverterCore.modId, folderName, voltage, type, state)); 58 | i++; 59 | } 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/ic2/ChargeHandlerIndustrialCraft.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.ic2; 2 | 3 | import ic2.api.item.ElectricItem; 4 | import ic2.api.item.IElectricItem; 5 | import net.minecraft.item.ItemStack; 6 | import powercrystals.powerconverters.common.IChargeHandler; 7 | import powercrystals.powerconverters.power.PowerSystem; 8 | import powercrystals.powerconverters.power.PowerSystemManager; 9 | import powercrystals.powerconverters.power.systems.PowerIndustrialcraft; 10 | 11 | public class ChargeHandlerIndustrialCraft implements IChargeHandler { 12 | @Override 13 | public PowerSystem getPowerSystem() { 14 | return PowerSystemManager.getInstance().getPowerSystemByName(PowerIndustrialcraft.id); 15 | } 16 | 17 | @Override 18 | public boolean canHandle(ItemStack stack) { 19 | return stack != null && stack.getItem() instanceof IElectricItem; 20 | } 21 | 22 | @Override 23 | public int charge(ItemStack stack, int energyInput) { 24 | if (stack != null && stack.getItem() instanceof IElectricItem) { 25 | IElectricItem electricItem = (IElectricItem) stack.getItem(); 26 | PowerIndustrialcraft ic2 = (PowerIndustrialcraft) getPowerSystem(); 27 | double eu = energyInput / ic2.getInternalEnergyPerOutput(0); 28 | eu -= ElectricItem.manager.charge(stack, eu, electricItem.getTier(stack), false, false); 29 | return (int) (eu * ic2.getInternalEnergyPerOutput(0)); 30 | } 31 | return 0; 32 | } 33 | 34 | @Override 35 | public int discharge(ItemStack stack, int energyRequest) { 36 | if (stack != null && stack.getItem() instanceof IElectricItem) { 37 | IElectricItem electricItem = (IElectricItem) stack.getItem(); 38 | PowerIndustrialcraft ic2 = (PowerIndustrialcraft) getPowerSystem(); 39 | double eu = energyRequest / ic2.getInternalEnergyPerOutput(0); 40 | eu = ElectricItem.manager.discharge(stack, eu, electricItem.getTier(stack), false, false, false); 41 | return (int) (eu * ic2.getInternalEnergyPerInput(0)); 42 | } 43 | return 0; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/ic2/ItemBlockIndustrialCraft.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.ic2; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.block.Block; 6 | import net.minecraft.creativetab.CreativeTabs; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.item.Item; 9 | import net.minecraft.item.ItemBlock; 10 | import net.minecraft.item.ItemStack; 11 | import net.minecraft.util.EnumChatFormatting; 12 | import powercrystals.powerconverters.power.systems.PowerIndustrialcraft; 13 | 14 | import java.util.List; 15 | 16 | public class ItemBlockIndustrialCraft extends ItemBlock { 17 | public ItemBlockIndustrialCraft(Block block) { 18 | super(block); 19 | setHasSubtypes(true); 20 | setMaxDamage(0); 21 | } 22 | 23 | @Override 24 | public int getMetadata(int i) { 25 | return i; 26 | } 27 | 28 | @SideOnly(Side.CLIENT) 29 | @Override 30 | public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { 31 | //noinspection unchecked 32 | par3List.add(EnumChatFormatting.BLUE + (par1ItemStack.getItemDamage() % 2 == 0 ? "Max EU in: " : "Max EU out: ") + PowerIndustrialcraft.VOLTAGE_VALUES[par1ItemStack.getItemDamage() / 2]); 33 | } 34 | 35 | @Override 36 | public String getUnlocalizedName(ItemStack itemstack) { 37 | int md = itemstack.getItemDamage(); 38 | if (md == 0) 39 | return "powerconverters.ic2.lv.consumer"; 40 | if (md == 1) 41 | return "powerconverters.ic2.lv.producer"; 42 | if (md == 2) 43 | return "powerconverters.ic2.mv.consumer"; 44 | if (md == 3) 45 | return "powerconverters.ic2.mv.producer"; 46 | if (md == 4) 47 | return "powerconverters.ic2.hv.consumer"; 48 | if (md == 5) 49 | return "powerconverters.ic2.hv.producer"; 50 | if (md == 6) 51 | return "powerconverters.ic2.ev.consumer"; 52 | if (md == 7) 53 | return "powerconverters.ic2.ev.producer"; 54 | if (md == 8) 55 | return "powerconverters.ic2.uv.consumer"; 56 | if (md == 9) 57 | return "powerconverters.ic2.uv.producer"; 58 | return "unknown"; 59 | } 60 | 61 | @SuppressWarnings({"unchecked", "rawtypes"}) 62 | @Override 63 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 64 | for (int i = 0; i <= 9; i++) { 65 | subTypes.add(new ItemStack(item, 1, i)); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/ic2/TileEntityIndustrialCraftConsumer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.ic2; 2 | 3 | import ic2.api.energy.event.EnergyTileLoadEvent; 4 | import ic2.api.energy.event.EnergyTileUnloadEvent; 5 | import ic2.api.energy.tile.IEnergyEmitter; 6 | import ic2.api.energy.tile.IEnergySink; 7 | import net.minecraft.tileentity.TileEntity; 8 | import net.minecraftforge.common.MinecraftForge; 9 | import net.minecraftforge.common.util.ForgeDirection; 10 | import powercrystals.powerconverters.power.PowerSystemManager; 11 | import powercrystals.powerconverters.power.base.TileEntityEnergyConsumer; 12 | import powercrystals.powerconverters.power.systems.PowerIndustrialcraft; 13 | 14 | public class TileEntityIndustrialCraftConsumer extends TileEntityEnergyConsumer implements IEnergySink { 15 | private boolean _isAddedToEnergyNet; 16 | private boolean _didFirstAddToNet; 17 | private double _euLastTick; 18 | private long _lastTickInjected; 19 | 20 | @SuppressWarnings("unused") 21 | public TileEntityIndustrialCraftConsumer() { 22 | this(0); 23 | } 24 | 25 | public TileEntityIndustrialCraftConsumer(int voltageIndex) { 26 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerIndustrialcraft.id), voltageIndex, IEnergyEmitter.class); 27 | } 28 | 29 | @Override 30 | public void updateEntity() { 31 | super.updateEntity(); 32 | if (!_didFirstAddToNet && !worldObj.isRemote) { 33 | MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); 34 | _didFirstAddToNet = true; 35 | _isAddedToEnergyNet = true; 36 | } 37 | 38 | if (worldObj.getTotalWorldTime() - _lastTickInjected > 2) { 39 | _euLastTick = 0; 40 | } 41 | } 42 | 43 | @Override 44 | public void validate() { 45 | super.validate(); 46 | if (!_isAddedToEnergyNet) { 47 | _didFirstAddToNet = false; 48 | } 49 | } 50 | 51 | @Override 52 | public void invalidate() { 53 | if (_isAddedToEnergyNet) { 54 | if (!worldObj.isRemote) { 55 | MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); 56 | } 57 | _isAddedToEnergyNet = false; 58 | } 59 | super.invalidate(); 60 | } 61 | 62 | @Override 63 | public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) { 64 | return true; 65 | } 66 | 67 | @Override 68 | public double getDemandedEnergy() { 69 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 70 | if(powered) { 71 | return 0; 72 | } 73 | else { 74 | return getTotalEnergyDemand() / getPowerSystem().getInternalEnergyPerInput(0); 75 | } 76 | } 77 | 78 | @Override 79 | public int getSinkTier() { 80 | return this._voltageIndex; 81 | } 82 | 83 | @Override 84 | public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage) { 85 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 86 | if(powered) { 87 | return amount; 88 | } 89 | 90 | double pcuNotStored = storeEnergy(amount * getPowerSystem().getInternalEnergyPerInput(0), false); 91 | double euNotStored = pcuNotStored / getPowerSystem().getInternalEnergyPerInput(0); 92 | 93 | double euThisInjection = (amount - euNotStored); 94 | 95 | if (_lastTickInjected == worldObj.getTotalWorldTime()) { 96 | _euLastTick += euThisInjection; 97 | } else { 98 | _euLastTick = euThisInjection; 99 | _lastTickInjected = worldObj.getTotalWorldTime(); 100 | } 101 | 102 | return euNotStored; 103 | } 104 | 105 | @Override 106 | public double getInputRate() { 107 | return _euLastTick; 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/ic2/TileEntityIndustrialCraftProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.ic2; 2 | 3 | import ic2.api.energy.event.EnergyTileLoadEvent; 4 | import ic2.api.energy.event.EnergyTileUnloadEvent; 5 | import ic2.api.energy.tile.IEnergyAcceptor; 6 | import ic2.api.energy.tile.IEnergySource; 7 | import net.minecraft.nbt.NBTTagCompound; 8 | import net.minecraft.tileentity.TileEntity; 9 | import net.minecraftforge.common.MinecraftForge; 10 | import net.minecraftforge.common.util.ForgeDirection; 11 | import powercrystals.powerconverters.common.TileEntityEnergyBridge; 12 | import powercrystals.powerconverters.power.PowerSystemManager; 13 | import powercrystals.powerconverters.power.systems.PowerIndustrialcraft; 14 | import powercrystals.powerconverters.power.util.ICustomHandler; 15 | import powercrystals.powerconverters.power.base.TileEntityEnergyProducer; 16 | 17 | import java.util.Map; 18 | 19 | public class TileEntityIndustrialCraftProducer extends TileEntityEnergyProducer implements IEnergySource, ICustomHandler { 20 | private double maxSendEnergy; 21 | private boolean _isAddedToEnergyNet; 22 | private boolean _didFirstAddToNet; 23 | 24 | private double lastSentEnergy; 25 | 26 | @SuppressWarnings("UnusedDeclaration") 27 | public TileEntityIndustrialCraftProducer() { 28 | this(0); 29 | } 30 | 31 | public TileEntityIndustrialCraftProducer(int voltageIndex) { 32 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerIndustrialcraft.id), voltageIndex, IEnergyAcceptor.class); 33 | setMaxSendEnergy(voltageIndex); 34 | } 35 | 36 | private void setMaxSendEnergy(int index) { 37 | if (index == 0) // lv 38 | maxSendEnergy = 32; 39 | else if (index == 1) // mv 40 | maxSendEnergy = 128; 41 | else if (index == 2) // hv 42 | maxSendEnergy = 512; 43 | else if (index == 3) // ev 44 | maxSendEnergy = 2048; 45 | else if (index == 4) // uv 46 | maxSendEnergy = 8192; 47 | else 48 | maxSendEnergy = 0; 49 | } 50 | 51 | @Override 52 | public void updateEntity() { 53 | super.updateEntity(); 54 | if (!_didFirstAddToNet && !worldObj.isRemote) { 55 | MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); 56 | _didFirstAddToNet = true; 57 | _isAddedToEnergyNet = true; 58 | } 59 | } 60 | 61 | @Override 62 | public void readFromNBT(NBTTagCompound tag) { 63 | super.readFromNBT(tag); 64 | setMaxSendEnergy(_voltageIndex); 65 | } 66 | 67 | @Override 68 | public void validate() { 69 | super.validate(); 70 | if (!_isAddedToEnergyNet) { 71 | _didFirstAddToNet = false; 72 | } 73 | } 74 | 75 | @Override 76 | public void invalidate() { 77 | if (_isAddedToEnergyNet) { 78 | if (!worldObj.isRemote) { 79 | MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this)); 80 | } 81 | _isAddedToEnergyNet = false; 82 | } 83 | super.invalidate(); 84 | } 85 | 86 | @Override 87 | public double produceEnergy(double energy) { 88 | return energy; 89 | } 90 | 91 | @Override 92 | public double getOfferedEnergy() { 93 | double eu = 0D; 94 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 95 | if(!powered) { 96 | for (TileEntityEnergyBridge bridge : getBridges().values()) 97 | eu += bridge.getEnergyStored(); 98 | } 99 | return Math.min(maxSendEnergy, eu / getPowerSystem().getInternalEnergyPerOutput(0)); 100 | } 101 | 102 | @Override 103 | public void drawEnergy(double amount) { 104 | double drawn = 0D; 105 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 106 | if(!powered) { 107 | for (Map.Entry bridge : getBridges().entrySet()) { 108 | drawn += bridge.getValue().useEnergy(amount * getPowerSystem().getInternalEnergyPerOutput(0), false) / getPowerSystem().getInternalEnergyPerOutput(0); 109 | if (drawn >= amount) 110 | break; 111 | } 112 | } 113 | lastSentEnergy = drawn; 114 | } 115 | 116 | @Override 117 | public int getSourceTier() { 118 | return _voltageIndex; 119 | } 120 | 121 | @Override 122 | public boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction) { 123 | return true; 124 | } 125 | 126 | @Override 127 | public boolean shouldHandle() { 128 | return true; 129 | } 130 | 131 | @Override 132 | public double getOutputRate() { 133 | double temp = lastSentEnergy; 134 | lastSentEnergy = 0; 135 | return temp; 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/rf/BlockRF.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.rf; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.renderer.texture.IIconRegister; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraft.world.World; 8 | import powercrystals.powerconverters.PowerConverterCore; 9 | import powercrystals.powerconverters.gui.PCCreativeTab; 10 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 11 | 12 | /** 13 | * @author samrg472 14 | */ 15 | public class BlockRF extends BlockPowerConverter { 16 | 17 | public BlockRF() { 18 | super(2); 19 | setBlockName("powerconverters.te"); 20 | setCreativeTab(PCCreativeTab.tab); 21 | } 22 | 23 | @Override 24 | public TileEntity createNewTileEntity(World world, int metadata) { 25 | if (metadata == 0) return new TileEntityRFConsumer(); 26 | else if (metadata == 1) return new TileEntityRFProducer(); 27 | 28 | return null; 29 | } 30 | 31 | @Override 32 | @SideOnly(Side.CLIENT) 33 | public void registerBlockIcons(IIconRegister ir) { 34 | String[] types = {"consumer", "producer"}; 35 | String[] states = {"off", "on"}; 36 | String folderName = getUnlocalizedName().substring("tile.powerconverters.".length()); 37 | 38 | int i = 0; 39 | for (String type : types) { 40 | for (String state : states) { 41 | _icons[i] = ir.registerIcon(String.format("%s:%s/%s_%s", PowerConverterCore.modId, folderName, type, state)); 42 | i++; 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/rf/ChargeHandlerRF.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.rf; 2 | 3 | import cofh.api.energy.IEnergyContainerItem; 4 | import net.minecraft.item.ItemStack; 5 | import powercrystals.powerconverters.common.IChargeHandler; 6 | import powercrystals.powerconverters.power.PowerSystem; 7 | import powercrystals.powerconverters.power.PowerSystemManager; 8 | import powercrystals.powerconverters.power.systems.PowerRedstoneFlux; 9 | 10 | /** 11 | * @author samrg472 12 | */ 13 | public class ChargeHandlerRF implements IChargeHandler { 14 | 15 | @Override 16 | public PowerSystem getPowerSystem() { 17 | return PowerSystemManager.getInstance().getPowerSystemByName(PowerRedstoneFlux.id); 18 | } 19 | 20 | @Override 21 | public boolean canHandle(ItemStack stack) { 22 | return stack.getItem() instanceof IEnergyContainerItem; 23 | } 24 | 25 | @Override 26 | public int charge(ItemStack stack, int energyInput) { 27 | final int energyToUse = (int) (energyInput / getPowerSystem().getInternalEnergyPerOutput(0)); 28 | final int energyUsed = ((IEnergyContainerItem) stack.getItem()).receiveEnergy(stack, energyToUse, false); 29 | return (int) ((energyToUse - energyUsed) * getPowerSystem().getInternalEnergyPerOutput(0)); 30 | } 31 | 32 | @Override 33 | public int discharge(ItemStack stack, int energyRequest) { 34 | IEnergyContainerItem cell = (IEnergyContainerItem) stack.getItem(); 35 | return (int) ((cell.extractEnergy(stack, (int) (energyRequest / getPowerSystem().getInternalEnergyPerOutput(0)), false)) * getPowerSystem().getInternalEnergyPerOutput(0)); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/rf/ItemBlockRF.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.rf; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.creativetab.CreativeTabs; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemBlock; 7 | import net.minecraft.item.ItemStack; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author samrg472 13 | */ 14 | public class ItemBlockRF extends ItemBlock { 15 | 16 | public ItemBlockRF(Block block) { 17 | super(block); 18 | setHasSubtypes(true); 19 | setMaxDamage(0); 20 | } 21 | 22 | @Override 23 | public int getMetadata(int i) { 24 | return i; 25 | } 26 | 27 | @Override 28 | public String getUnlocalizedName(ItemStack itemstack) { 29 | int md = itemstack.getItemDamage(); 30 | if (md == 0) return "powerconverters.te.consumer"; 31 | if (md == 1) return "powerconverters.te.producer"; 32 | return "unknown"; 33 | } 34 | 35 | @SuppressWarnings({"unchecked", "rawtypes"}) 36 | @Override 37 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 38 | for (int i = 0; i <= 1; i++) { 39 | subTypes.add(new ItemStack(item, 1, i)); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/rf/TileEntityRFConsumer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.rf; 2 | 3 | import cofh.api.energy.IEnergyConnection; 4 | import cofh.api.energy.IEnergyReceiver; 5 | import net.minecraftforge.common.util.ForgeDirection; 6 | import powercrystals.powerconverters.common.TileEntityEnergyBridge; 7 | import powercrystals.powerconverters.power.PowerSystemManager; 8 | import powercrystals.powerconverters.power.base.TileEntityEnergyConsumer; 9 | import powercrystals.powerconverters.power.systems.PowerRedstoneFlux; 10 | 11 | /** 12 | * @author samrg472 13 | */ 14 | public class TileEntityRFConsumer extends TileEntityEnergyConsumer implements IEnergyReceiver { 15 | 16 | private int lastReceivedRF; 17 | 18 | public TileEntityRFConsumer() { 19 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerRedstoneFlux.id), 0, IEnergyConnection.class); 20 | } 21 | 22 | @Override 23 | public void updateEntity() { 24 | super.updateEntity(); 25 | } 26 | 27 | @Override 28 | public double getInputRate() { 29 | int last = lastReceivedRF; 30 | lastReceivedRF = 0; 31 | return last; 32 | } 33 | 34 | @Override 35 | public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) { 36 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 37 | int received = 0; 38 | if(!powered) { 39 | TileEntityEnergyBridge bridge = getFirstBridge(); 40 | if (bridge == null) 41 | return 0; 42 | float energyToReceive = getPowerSystem().getInternalEnergyPerInput(0) * maxReceive; 43 | received = (int) (energyToReceive - storeEnergy(energyToReceive, simulate)); 44 | if (!simulate) { 45 | lastReceivedRF = (int) (received / getPowerSystem().getInternalEnergyPerInput(0)); 46 | return lastReceivedRF; 47 | } 48 | } 49 | return (int) (received / getPowerSystem().getInternalEnergyPerInput(0)); 50 | } 51 | 52 | @Override 53 | public boolean canConnectEnergy(ForgeDirection from) { 54 | return true; 55 | } 56 | 57 | @Override 58 | public int getEnergyStored(ForgeDirection from) { 59 | TileEntityEnergyBridge bridge = getFirstBridge(); 60 | if (bridge == null) 61 | return 0; 62 | return (int) (bridge.getEnergyStored() / getPowerSystem().getInternalEnergyPerInput(0)); 63 | } 64 | 65 | @Override 66 | public int getMaxEnergyStored(ForgeDirection from) { 67 | TileEntityEnergyBridge bridge = getFirstBridge(); 68 | if (bridge == null) 69 | return 0; 70 | return (int) (bridge.getEnergyStoredMax() / getPowerSystem().getInternalEnergyPerInput(0)); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/rf/TileEntityRFProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.rf; 2 | 3 | import cofh.api.energy.IEnergyConnection; 4 | import cofh.api.energy.IEnergyProvider; 5 | import cofh.api.energy.IEnergyReceiver; 6 | import cofh.api.energy.IEnergyHandler; 7 | import net.minecraft.tileentity.TileEntity; 8 | import net.minecraftforge.common.util.ForgeDirection; 9 | import powercrystals.powerconverters.common.TileEntityEnergyBridge; 10 | import powercrystals.powerconverters.position.BlockPosition; 11 | import powercrystals.powerconverters.power.PowerSystemManager; 12 | import powercrystals.powerconverters.power.base.TileEntityEnergyProducer; 13 | import powercrystals.powerconverters.power.systems.PowerRedstoneFlux; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * @author samrg472 19 | */ 20 | public class TileEntityRFProducer extends TileEntityEnergyProducer implements IEnergyProvider { 21 | 22 | public TileEntityRFProducer() { 23 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerRedstoneFlux.id), 0, IEnergyConnection.class); 24 | } 25 | 26 | @Override 27 | public double produceEnergy(double energy) { 28 | final double tmpEnergyPerOutput = getPowerSystem().getInternalEnergyPerOutput(0); 29 | final double energyToUse = energy / tmpEnergyPerOutput; 30 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 31 | 32 | if (!powered && energyToUse > 0) { 33 | List positions = new BlockPosition(xCoord, yCoord, zCoord).getAdjacent(true); 34 | 35 | for (BlockPosition p : positions) { 36 | TileEntity te = worldObj.getTileEntity(p.x, p.y, p.z); 37 | if(te instanceof TileEntityRFConsumer || te instanceof TileEntityEnergyBridge) 38 | continue; 39 | 40 | if(te instanceof IEnergyHandler) { 41 | IEnergyHandler eHandler = (IEnergyHandler) te; 42 | final double received = eHandler.receiveEnergy(p.orientation.getOpposite(), (int) (energyToUse), false); 43 | energy -= (received * tmpEnergyPerOutput); 44 | if (energy <= 0) 45 | break; 46 | 47 | }else if(te instanceof IEnergyReceiver){ 48 | IEnergyReceiver eReceiver = (IEnergyReceiver) te; 49 | final double received = eReceiver.receiveEnergy(p.orientation.getOpposite(), (int) (energyToUse), false); 50 | energy -= (received * tmpEnergyPerOutput); 51 | if (energy <= 0) 52 | break; 53 | 54 | } 55 | } 56 | } 57 | 58 | return energy; 59 | } 60 | 61 | @Override 62 | public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) { 63 | return 0; 64 | } 65 | 66 | @Override 67 | public boolean canConnectEnergy(ForgeDirection from) { 68 | return true; 69 | } 70 | 71 | @Override 72 | public int getEnergyStored(ForgeDirection from) { 73 | TileEntityEnergyBridge bridge = getFirstBridge(); 74 | if (bridge == null) 75 | return 0; 76 | return (int) (bridge.getEnergyStored() / getPowerSystem().getInternalEnergyPerInput(0)); 77 | } 78 | 79 | @Override 80 | public int getMaxEnergyStored(ForgeDirection from) { 81 | TileEntityEnergyBridge bridge = getFirstBridge(); 82 | if (bridge == null) 83 | return 0; 84 | return (int) (bridge.getEnergyStoredMax() / getPowerSystem().getInternalEnergyPerInput(0)); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/steam/BlockSteam.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.steam; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import net.minecraft.client.renderer.texture.IIconRegister; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraft.util.IIcon; 8 | import net.minecraft.world.IBlockAccess; 9 | import net.minecraft.world.World; 10 | import powercrystals.powerconverters.PowerConverterCore; 11 | import powercrystals.powerconverters.gui.PCCreativeTab; 12 | import powercrystals.powerconverters.power.PowerSystemManager; 13 | import powercrystals.powerconverters.power.base.BlockPowerConverter; 14 | import powercrystals.powerconverters.power.base.TileEntityBridgeComponent; 15 | import powercrystals.powerconverters.power.systems.PowerSteam; 16 | 17 | public class BlockSteam extends BlockPowerConverter { 18 | public BlockSteam() { 19 | super(2); 20 | setBlockName("powerconverters.steam"); 21 | setCreativeTab(PCCreativeTab.tab); 22 | } 23 | 24 | @Override 25 | @SideOnly(Side.CLIENT) 26 | public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { 27 | int offset = ((TileEntityBridgeComponent) world.getTileEntity(x, y, z)).isSideConnectedClient(side) ? 1 : 0; 28 | return _icons[(world.getBlockMetadata(x, y, z) == 0 ? 0 : 1) * 2 + offset]; 29 | } 30 | 31 | @Override 32 | public IIcon getIcon(int side, int metadata) { 33 | return _icons[(metadata == 0 ? 0 : 1) * 2]; 34 | } 35 | 36 | @Override 37 | public TileEntity createNewTileEntity(World world, int metadata) { 38 | PowerSteam steam = (PowerSteam) PowerSystemManager.getInstance().getPowerSystemByName(PowerSteam.id); 39 | if (metadata == 0) return new TileEntitySteamConsumer(); 40 | else return new TileEntitySteamProducer(metadata - 1); 41 | } 42 | 43 | @Override 44 | @SideOnly(Side.CLIENT) 45 | public void registerBlockIcons(IIconRegister ir) { 46 | String[] types = {"consumer", "producer"}; 47 | String[] states = {"off", "on"}; 48 | String folderName = getUnlocalizedName().substring("tile.powerconverters.".length()); 49 | 50 | int i = 0; 51 | for (String type : types) { 52 | for (String state : states) { 53 | _icons[i] = ir.registerIcon(String.format("%s:%s/%s_%s", PowerConverterCore.modId, folderName, type, state)); 54 | i++; 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/steam/ItemBlockSteam.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.steam; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.creativetab.CreativeTabs; 5 | import net.minecraft.item.Item; 6 | import net.minecraft.item.ItemBlock; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.util.StatCollector; 9 | import powercrystals.powerconverters.power.PowerSystemManager; 10 | import powercrystals.powerconverters.power.systems.PowerSteam; 11 | 12 | import java.util.List; 13 | 14 | public class ItemBlockSteam extends ItemBlock { 15 | PowerSteam powerSteam; 16 | public ItemBlockSteam(Block block) { 17 | super(block); 18 | setHasSubtypes(true); 19 | setMaxDamage(0); 20 | powerSteam = (PowerSteam) PowerSystemManager.getInstance().getPowerSystemByName(PowerSteam.id); 21 | } 22 | 23 | @Override 24 | public int getMetadata(int i) { 25 | return i; 26 | } 27 | 28 | @Override 29 | public String getUnlocalizedName(ItemStack itemstack) { 30 | int md = itemstack.getItemDamage(); 31 | if (md == 0) return "powerconverters.steam.consumer"; 32 | else return "powerconverters.steam.producer"; 33 | } 34 | 35 | @Override 36 | public String getItemStackDisplayName(ItemStack itemStack) { 37 | if(itemStack.getItemDamage() == 0) { 38 | return super.getItemStackDisplayName(itemStack); 39 | } 40 | else { 41 | PowerSteam.SteamType steamType = powerSteam.getSteamType(itemStack.getItemDamage() - 1); 42 | return StatCollector.translateToLocalFormatted(itemStack.getUnlocalizedName() + ".name", steamType.displayName); 43 | } 44 | } 45 | 46 | @SuppressWarnings({"unchecked", "rawtypes"}) 47 | @Override 48 | public void getSubItems(Item item, CreativeTabs creativeTab, List subTypes) { 49 | for (int i = 0; i <= powerSteam.getSteamTypeCount(); i++) { 50 | subTypes.add(new ItemStack(item, 1, i)); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/systems/steam/TileEntitySteamProducer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.systems.steam; 2 | 3 | import buildcraft.api.transport.IPipeConnection; 4 | import buildcraft.api.transport.IPipeTile; 5 | import cpw.mods.fml.common.Optional; 6 | import net.minecraft.tileentity.TileEntity; 7 | import net.minecraftforge.common.util.ForgeDirection; 8 | import net.minecraftforge.fluids.Fluid; 9 | import net.minecraftforge.fluids.FluidRegistry; 10 | import net.minecraftforge.fluids.FluidStack; 11 | import net.minecraftforge.fluids.FluidTankInfo; 12 | import net.minecraftforge.fluids.IFluidHandler; 13 | import powercrystals.powerconverters.mods.reference.InterfaceReference; 14 | import powercrystals.powerconverters.mods.reference.ModIDReference; 15 | import powercrystals.powerconverters.position.BlockPosition; 16 | import powercrystals.powerconverters.power.PowerSystemManager; 17 | import powercrystals.powerconverters.power.base.TileEntityEnergyProducer; 18 | import powercrystals.powerconverters.power.systems.PowerSteam; 19 | 20 | @Optional.Interface(modid = ModIDReference.BUILDCRAFT, iface = InterfaceReference.BuildCraft.IPipeConnection) 21 | public class TileEntitySteamProducer extends TileEntityEnergyProducer implements IFluidHandler, IPipeConnection { 22 | PowerSteam powerSteam; 23 | int steamId; 24 | 25 | public TileEntitySteamProducer() { 26 | this(0); 27 | } 28 | 29 | public TileEntitySteamProducer(int steamId) { 30 | super(PowerSystemManager.getInstance().getPowerSystemByName(PowerSteam.id), 0, IFluidHandler.class); 31 | powerSteam = (PowerSteam) PowerSystemManager.getInstance().getPowerSystemByName(PowerSteam.id); 32 | this.steamId = steamId; 33 | } 34 | 35 | @Override 36 | public double produceEnergy(double energy) { 37 | boolean powered = getWorldObj().getStrongestIndirectPower(xCoord, yCoord, zCoord) > 0; 38 | if (powered || steamId < 0 || powerSteam.getInternalEnergyPerOutput(steamId + 1) == 0) { 39 | return energy; 40 | } 41 | energy = energy / powerSteam.getInternalEnergyPerOutput(steamId + 1); 42 | for (int i = 0; i < 6; i++) { 43 | BlockPosition bp = new BlockPosition(this); 44 | bp.orientation = ForgeDirection.getOrientation(i); 45 | bp.moveForwards(1); 46 | TileEntity te = worldObj.getTileEntity(bp.x, bp.y, bp.z); 47 | 48 | if (te instanceof IFluidHandler) { 49 | final int steam = (int) Math.min(energy, powerSteam.getThrottleProducer()); 50 | PowerSteam.SteamType steamType = powerSteam.getSteamType(steamId); 51 | FluidStack stack = FluidRegistry.getFluidStack(steamType.name, steam); 52 | if (stack != null) { 53 | energy -= ((IFluidHandler) te).fill(bp.orientation.getOpposite(), stack, true); 54 | } 55 | } 56 | 57 | if (energy <= 0) 58 | return 0; 59 | } 60 | 61 | return energy * powerSteam.getInternalEnergyPerOutput(steamId + 1); 62 | } 63 | 64 | @Override 65 | public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { 66 | return 0; 67 | } 68 | 69 | @Override 70 | public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { 71 | return null; 72 | } 73 | 74 | @Override 75 | public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { 76 | return null; 77 | } 78 | 79 | @Override 80 | public boolean canFill(ForgeDirection from, Fluid fluid) { 81 | return false; 82 | } 83 | 84 | @Override 85 | public boolean canDrain(ForgeDirection from, Fluid fluid) { 86 | return true; 87 | } 88 | 89 | @Override 90 | public FluidTankInfo[] getTankInfo(ForgeDirection from) { 91 | return new FluidTankInfo[0]; 92 | } 93 | 94 | @Override 95 | public int getSubtype() { 96 | PowerSteam.SteamType type = powerSteam.getSteamType(steamId); 97 | return type != null ? powerSteam.getSteamSubtype(type) : -1; 98 | } 99 | 100 | @Override 101 | @Optional.Method(modid = ModIDReference.BUILDCRAFT) 102 | public ConnectOverride overridePipeConnection(IPipeTile.PipeType pipeType, ForgeDirection direction) { 103 | if (pipeType == IPipeTile.PipeType.FLUID) 104 | return ConnectOverride.CONNECT; 105 | return ConnectOverride.DISCONNECT; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/power/util/ICustomHandler.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.power.util; 2 | 3 | /** 4 | * Controls how the energy bridge should handle power production 5 | * 6 | * @author samrg472 7 | */ 8 | public interface ICustomHandler { 9 | 10 | /** 11 | * Controls whether the tile entity should handle power production itself 12 | * 13 | * @return whether to handle the tile entity or not 14 | */ 15 | public boolean shouldHandle(); 16 | 17 | /** 18 | * Only called if the tile entity is self handling 19 | * 20 | * @return output rate in converted units 21 | */ 22 | public double getOutputRate(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/renderer/ExposedGuiContainer.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.renderer; 2 | 3 | import net.minecraft.client.gui.FontRenderer; 4 | import net.minecraft.client.gui.inventory.GuiContainer; 5 | import net.minecraft.client.renderer.entity.RenderItem; 6 | import net.minecraft.inventory.Container; 7 | 8 | /** 9 | * A GuiContainer wrapper to expose some protected fields 10 | * 11 | * @author samrg472 12 | */ 13 | public abstract class ExposedGuiContainer extends GuiContainer { 14 | 15 | public ExposedGuiContainer(Container container) { 16 | super(container); 17 | } 18 | 19 | @Override 20 | public void drawGradientRect(int par1, int par2, int par3, int par4, int par5, int par6) { 21 | super.drawGradientRect(par1, par2, par3, par4, par5, par6); 22 | } 23 | 24 | public RenderItem getItemRenderer() { 25 | return itemRender; 26 | } 27 | 28 | public int getGuiTop() { 29 | return guiTop; 30 | } 31 | 32 | public void setZLevel(float zLevel) { 33 | this.zLevel = zLevel; 34 | } 35 | 36 | public FontRenderer getFontRenderer() { 37 | return fontRendererObj; 38 | } 39 | 40 | // Temporary. Maps function from old name.to srg name 41 | public boolean isPointInRegion(int p1, int p2, int p3, int p4, int p5, int p6) { 42 | return func_146978_c(p1, p2, p3, p4, p5, p6); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/powercrystals/powerconverters/renderer/RenderUtility.java: -------------------------------------------------------------------------------- 1 | package powercrystals.powerconverters.renderer; 2 | 3 | import cpw.mods.fml.relauncher.Side; 4 | import cpw.mods.fml.relauncher.SideOnly; 5 | import org.lwjgl.opengl.GL11; 6 | import org.lwjgl.opengl.GL12; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author samrg472 12 | */ 13 | @SideOnly(Side.CLIENT) 14 | public class RenderUtility { 15 | 16 | private ExposedGuiContainer container; 17 | 18 | public RenderUtility(ExposedGuiContainer container) { 19 | this.container = container; 20 | } 21 | 22 | public void drawTooltips(List lines, int x, int y) { 23 | GL11.glPushMatrix(); 24 | GL11.glDisable(GL11.GL_DEPTH_TEST); 25 | GL11.glDisable(GL12.GL_RESCALE_NORMAL); 26 | GL11.glDisable(GL11.GL_LIGHTING); 27 | 28 | int tooltipWidth = 0; 29 | int tempWidth; 30 | int xStart; 31 | int yStart; 32 | 33 | for (String line : lines) { 34 | tempWidth = container.getFontRenderer().getStringWidth(line); 35 | if (tempWidth > tooltipWidth) 36 | tooltipWidth = tempWidth; 37 | } 38 | 39 | xStart = x + 12; 40 | yStart = y - 12; 41 | int tooltipHeight = 8; 42 | 43 | if (lines.size() > 1) { 44 | tooltipHeight += 2 + (lines.size() - 1) * 10; 45 | } 46 | 47 | if (container.getGuiTop() + yStart + tooltipHeight + 6 > container.height) { 48 | yStart = container.height - tooltipHeight - container.getGuiTop() - 6; 49 | } 50 | 51 | container.setZLevel(300.0F); 52 | container.getItemRenderer().zLevel = 300.0F; 53 | int color1 = -267386864; 54 | container.drawGradientRect(xStart - 3, yStart - 4, xStart + tooltipWidth + 3, yStart - 3, color1, color1); 55 | container.drawGradientRect(xStart - 3, yStart + tooltipHeight + 3, xStart + tooltipWidth + 3, yStart + tooltipHeight + 4, color1, color1); 56 | container.drawGradientRect(xStart - 3, yStart - 3, xStart + tooltipWidth + 3, yStart + tooltipHeight + 3, color1, color1); 57 | container.drawGradientRect(xStart - 4, yStart - 3, xStart - 3, yStart + tooltipHeight + 3, color1, color1); 58 | container.drawGradientRect(xStart + tooltipWidth + 3, yStart - 3, xStart + tooltipWidth + 4, yStart + tooltipHeight + 3, color1, color1); 59 | int color2 = 1347420415; 60 | int color3 = (color2 & 16711422) >> 1 | color2 & -16777216; 61 | container.drawGradientRect(xStart - 3, yStart - 3 + 1, xStart - 3 + 1, yStart + tooltipHeight + 3 - 1, color2, color3); 62 | container.drawGradientRect(xStart + tooltipWidth + 2, yStart - 3 + 1, xStart + tooltipWidth + 3, yStart + tooltipHeight + 3 - 1, color2, color3); 63 | container.drawGradientRect(xStart - 3, yStart - 3, xStart + tooltipWidth + 3, yStart - 3 + 1, color2, color2); 64 | container.drawGradientRect(xStart - 3, yStart + tooltipHeight + 2, xStart + tooltipWidth + 3, yStart + tooltipHeight + 3, color3, color3); 65 | 66 | for (int stringIndex = 0; stringIndex < lines.size(); ++stringIndex) { 67 | String line = lines.get(stringIndex); 68 | 69 | if (stringIndex == 0) { 70 | line = "\u00a7" + Integer.toHexString(15) + line; 71 | } else { 72 | line = "\u00a77" + line; 73 | } 74 | 75 | container.getFontRenderer().drawStringWithShadow(line, xStart, yStart, -1); 76 | 77 | if (stringIndex == 0) 78 | yStart += 2; 79 | yStart += 10; 80 | } 81 | 82 | GL11.glPopMatrix(); 83 | GL11.glEnable(GL11.GL_DEPTH_TEST); 84 | 85 | container.setZLevel(0.0F); 86 | container.getItemRenderer().zLevel = 0.0F; 87 | } 88 | 89 | } 90 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/lang/de_DE.lang: -------------------------------------------------------------------------------- 1 | powerconverters.inputlimited=INPUT BEGRENZT 2 | powerconverters.outputlimited=OUTPUT BEGRENZT 3 | 4 | powerconverters.in=EIN 5 | powerconverters.out=AUS 6 | powerconverters.none= 7 | powerconverters.nolink=KEIN LINK 8 | powerconverters.percentfull=voll 9 | 10 | powerconverters.up=OBEN 11 | powerconverters.down=UNTEN 12 | powerconverters.south=SÜD 13 | powerconverters.north=NORD 14 | powerconverters.west=WEST 15 | powerconverters.east=OST 16 | 17 | powerconverters.common.bridge.name=Energiebrücke 18 | powerconverters.common.charger.name=Universalladegerät 19 | 20 | powerconverters.bc.consumer.name=MJ-Konsument 21 | powerconverters.bc.producer.name=MJ-Produzent 22 | 23 | powerconverters.steam.consumer.name=Dampfkonsument 24 | powerconverters.steam.producer.name=Dampfproduzent 25 | 26 | powerconverters.factorization.consumer.name=Factorization-Konsument 27 | powerconverters.factorization.producer.name=Factorization-Produzent 28 | 29 | powerconverters.te.consumer.name=RF-Konsument 30 | powerconverters.te.producer.name=RF-Produzent 31 | 32 | powerconverters.ic2.lv.consumer.name=EU NS-Konsument 33 | powerconverters.ic2.mv.consumer.name=EU MS-Konsument 34 | powerconverters.ic2.hv.consumer.name=EU HS-Konsument 35 | powerconverters.ic2.ev.consumer.name=EU ES-Konsument 36 | powerconverters.ic2.uv.consumer.name=EU US-Konsument 37 | 38 | powerconverters.ic2.lv.producer.name=EU NS-Produzent 39 | powerconverters.ic2.mv.producer.name=EU MS-Produzent 40 | powerconverters.ic2.hv.producer.name=EU HS-Produzent 41 | powerconverters.ic2.ev.producer.name=EU ES-Produzent 42 | powerconverters.ic2.uv.producer.name=EU US-Produzent 43 | 44 | powerconverters.mffs.producer.name=MFFS Fortron-Produzent 45 | powerconverters.mffs.consumer.name=MFFS Fortron-Konsument 46 | 47 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/lang/en_US.lang: -------------------------------------------------------------------------------- 1 | powerconverters.inputlimited=INPUT LIMITED 2 | powerconverters.outputlimited=OUTPUT LIMITED 3 | 4 | powerconverters.in=IN 5 | powerconverters.out=OUT 6 | powerconverters.none= 7 | powerconverters.nolink=NO LINK 8 | powerconverters.percentfull=full 9 | 10 | powerconverters.up=UP 11 | powerconverters.down=DOWN 12 | powerconverters.south=SOUTH 13 | powerconverters.north=NORTH 14 | powerconverters.west=WEST 15 | powerconverters.east=EAST 16 | 17 | powerconverters.common.bridge.name=Energy Bridge 18 | powerconverters.common.charger.name=Universal Charger 19 | 20 | powerconverters.bc.consumer.name=MJ Consumer 21 | powerconverters.bc.producer.name=MJ Producer 22 | 23 | powerconverters.steam.consumer.name=Steam Consumer 24 | powerconverters.steam.producer.name=Steam Producer (%s) 25 | 26 | powerconverters.factorization.consumer.name=Factorization Consumer 27 | powerconverters.factorization.producer.name=Factorization Producer 28 | 29 | powerconverters.te.consumer.name=RF Consumer 30 | powerconverters.te.producer.name=RF Producer 31 | 32 | powerconverters.ic2.lv.consumer.name=EU LV Consumer 33 | powerconverters.ic2.mv.consumer.name=EU MV Consumer 34 | powerconverters.ic2.hv.consumer.name=EU HV Consumer 35 | powerconverters.ic2.ev.consumer.name=EU EV Consumer 36 | powerconverters.ic2.uv.consumer.name=EU UV Consumer 37 | 38 | powerconverters.ic2.lv.producer.name=EU LV Producer 39 | powerconverters.ic2.mv.producer.name=EU MV Producer 40 | powerconverters.ic2.hv.producer.name=EU HV Producer 41 | powerconverters.ic2.ev.producer.name=EU EV Producer 42 | powerconverters.ic2.uv.producer.name=EU UV Producer 43 | 44 | powerconverters.gt.ulv.consumer.name=GT ULV Consumer 45 | powerconverters.gt.lv.consumer.name=GT LV Consumer 46 | powerconverters.gt.mv.consumer.name=GT MV Consumer 47 | powerconverters.gt.hv.consumer.name=GT HV Consumer 48 | powerconverters.gt.ev.consumer.name=GT EV Consumer 49 | powerconverters.gt.iv.consumer.name=GT IV Consumer 50 | powerconverters.gt.luv.consumer.name=GT LuV Consumer 51 | powerconverters.gt.zpmv.consumer.name=GT ZPM Consumer 52 | powerconverters.gt.uv.consumer.name=GT UV Consumer 53 | 54 | powerconverters.gt.ulv.producer.name=GT ULV Producer 55 | powerconverters.gt.lv.producer.name=GT LV Producer 56 | powerconverters.gt.mv.producer.name=GT MV Producer 57 | powerconverters.gt.hv.producer.name=GT HV Producer 58 | powerconverters.gt.ev.producer.name=GT EV Producer 59 | powerconverters.gt.iv.producer.name=GT IV Producer 60 | powerconverters.gt.luv.producer.name=GT LuV Producer 61 | powerconverters.gt.zpmv.producer.name=GT ZPM Producer 62 | powerconverters.gt.uv.producer.name=GT UV Producer 63 | powerconverters.gt.producer.amperageChanged=Output Amperage Changed to %1$s Ampere 64 | 65 | powerconverters.mffs.producer.name=MFFS Fortron Producer 66 | powerconverters.mffs.consumer.name=MFFS Fortron Consumer 67 | 68 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/lang/pt_BR.lang: -------------------------------------------------------------------------------- 1 | powerconverters.inputlimited=ENTRADA LIMITADA 2 | powerconverters.outputlimited=SAÍDA LIMITADA 3 | 4 | powerconverters.in=ENTRADA 5 | powerconverters.out=SAÍDA 6 | powerconverters.none= 7 | powerconverters.nolink=SEM CONEXÃO 8 | powerconverters.percentfull=completo 9 | 10 | powerconverters.up=ACIMA 11 | powerconverters.down=ABAIXO 12 | powerconverters.south=SUL 13 | powerconverters.north=NORTE 14 | powerconverters.west=OESTE 15 | powerconverters.east=LESTE 16 | 17 | powerconverters.common.bridge.name=Ponte de Energia 18 | powerconverters.common.charger.name=Carregador Universal 19 | 20 | powerconverters.bc.consumer.name=Consumidor de MJ 21 | powerconverters.bc.producer.name=Produtor de MJ 22 | 23 | powerconverters.steam.consumer.name=Consumidor de Vapor 24 | powerconverters.steam.producer.name=Produtor de Vapor 25 | 26 | powerconverters.factorization.consumer.name=Consumidor de Fatoração 27 | powerconverters.factorization.producer.name=Produtor de Fatoração 28 | 29 | powerconverters.te.consumer.name=Consumidor de RF 30 | powerconverters.te.producer.name=Produtor de RF 31 | 32 | powerconverters.ic2.lv.consumer.name=Consumidor de EU LV 33 | powerconverters.ic2.mv.consumer.name=Consumidor de EU MV 34 | powerconverters.ic2.hv.consumer.name=Consumidor de EU HV 35 | powerconverters.ic2.ev.consumer.name=Consumidor de EU EV 36 | powerconverters.ic2.uv.consumer.name=Consumidor de EU UV 37 | 38 | powerconverters.ic2.lv.producer.name=Produtor de EU LV 39 | powerconverters.ic2.mv.producer.name=Produtor de EU MV 40 | powerconverters.ic2.hv.producer.name=Produtor de EU HV 41 | powerconverters.ic2.ev.producer.name=Produtor de EU EV 42 | powerconverters.ic2.uv.producer.name=Produtor de EU UV 43 | 44 | powerconverters.gt.ulv.consumer.name=Consumidor de GT ULV 45 | powerconverters.gt.lv.consumer.name=Consumidor de GT LV 46 | powerconverters.gt.mv.consumer.name=Consumidor de GT MV 47 | powerconverters.gt.hv.consumer.name=Consumidor de GT HV 48 | powerconverters.gt.ev.consumer.name=Consumidor de GT EV 49 | powerconverters.gt.iv.consumer.name=Consumidor de GT IV 50 | powerconverters.gt.luv.consumer.name=Consumidor de GT LuV 51 | powerconverters.gt.zpmv.consumer.name=Consumidor de GT ZPM 52 | powerconverters.gt.uv.consumer.name=Consumidor de GT UV 53 | 54 | powerconverters.gt.ulv.producer.name=Produtor de GT ULV 55 | powerconverters.gt.lv.producer.name=Produtor de GT LV 56 | powerconverters.gt.mv.producer.name=Produtor de GT MV 57 | powerconverters.gt.hv.producer.name=Produtor de GT HV 58 | powerconverters.gt.ev.producer.name=Produtor de GT EV 59 | powerconverters.gt.iv.producer.name=Produtor de GT IV 60 | powerconverters.gt.luv.producer.name=Produtor de GT LuV 61 | powerconverters.gt.zpmv.producer.name=Produtor de GT ZPM 62 | powerconverters.gt.uv.producer.name=Produtor de GT UV 63 | powerconverters.gt.producer.amperageChanged=Amperagem de Saída Alterada para %1$s Ampère 64 | 65 | powerconverters.mffs.producer.name=Produtor de MFFS Fortron 66 | powerconverters.mffs.consumer.name=Consumidor de MFFS Fortron 67 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/lang/ru_RU.lang: -------------------------------------------------------------------------------- 1 | powerconverters.inputlimited=ВХОД ОГРАНИЧЕН 2 | powerconverters.outputlimited=ВЫХОД ОГРАНИЧЕН 3 | 4 | powerconverters.in=ВХОД 5 | powerconverters.out=ВЫХОД 6 | powerconverters.none=<НЕТ> 7 | powerconverters.nolink=НЕТ СОЕДИНЕНИЯ 8 | powerconverters.percentfull=полный 9 | 10 | powerconverters.up=ВВЕРХ 11 | powerconverters.down=ВНИЗ 12 | powerconverters.south=ЮГ 13 | powerconverters.north=СЕВЕР 14 | powerconverters.west=ЗАПАД 15 | powerconverters.east=ВОСТОК 16 | 17 | powerconverters.common.bridge.name=Энергетический мост 18 | powerconverters.common.charger.name=Универсальный зарядник 19 | 20 | powerconverters.bc.consumer.name=Потребитель MJ 21 | powerconverters.bc.producer.name=Производитель MJ 22 | 23 | powerconverters.steam.consumer.name=Потребитель пара 24 | powerconverters.steam.producer.name=Производитель пара (%s) 25 | 26 | powerconverters.factorization.consumer.name=Потребитель энергии Factorization 27 | powerconverters.factorization.producer.name=Производитель энергии Factorization 28 | 29 | powerconverters.te.consumer.name=Потребитель RF 30 | powerconverters.te.producer.name=Производитель RF 31 | 32 | powerconverters.ic2.lv.consumer.name=Потребитель EU НН 33 | powerconverters.ic2.mv.consumer.name=Потребитель EU СН 34 | powerconverters.ic2.hv.consumer.name=Потребитель EU ВН 35 | powerconverters.ic2.ev.consumer.name=Потребитель EU СВН 36 | powerconverters.ic2.uv.consumer.name=Потребитель EU УН 37 | 38 | powerconverters.ic2.lv.producer.name=Производитель EU НН 39 | powerconverters.ic2.mv.producer.name=Производитель EU СН 40 | powerconverters.ic2.hv.producer.name=Производитель EU ВН 41 | powerconverters.ic2.ev.producer.name=Производитель EU СВН 42 | powerconverters.ic2.uv.producer.name=Производитель EU УН 43 | 44 | powerconverters.gt.ulv.consumer.name=Потребитель GT ОНН 45 | powerconverters.gt.lv.consumer.name=Потребитель GT НН 46 | powerconverters.gt.mv.consumer.name=Потребитель GT СН 47 | powerconverters.gt.hv.consumer.name=Потребитель GT ВН 48 | powerconverters.gt.ev.consumer.name=Потребитель GT СВН 49 | powerconverters.gt.iv.consumer.name=Потребитель GT IV 50 | powerconverters.gt.luv.consumer.name=Потребитель GT LuV 51 | powerconverters.gt.zpmv.consumer.name=Потребитель GT ZPM 52 | powerconverters.gt.uv.consumer.name=Потребитель GT УН 53 | 54 | powerconverters.gt.ulv.producer.name=Производитель GT ОНН 55 | powerconverters.gt.lv.producer.name=Производитель GT НН 56 | powerconverters.gt.mv.producer.name=Производитель GT СН 57 | powerconverters.gt.hv.producer.name=Производитель GT ВН 58 | powerconverters.gt.ev.producer.name=Производитель GT СВН 59 | powerconverters.gt.iv.producer.name=Производитель GT IV 60 | powerconverters.gt.luv.producer.name=Производитель GT LuV 61 | powerconverters.gt.zpmv.producer.name=Производитель GT ZPM 62 | powerconverters.gt.uv.producer.name=Производитель GT УН 63 | powerconverters.gt.producer.amperageChanged=Выходная сила тока изменена на %1$s ампер 64 | 65 | powerconverters.mffs.producer.name=Производитель фортрона MFFS 66 | powerconverters.mffs.consumer.name=Потребитель фортрона MFFS 67 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/lang/zh_CN.lang: -------------------------------------------------------------------------------- 1 | powerconverters.inputlimited=输入限值 2 | powerconverters.outputlimited=输出限值 3 | 4 | powerconverters.in=输入 5 | powerconverters.out=输出 6 | powerconverters.none=<无> 7 | powerconverters.nolink=未连接 8 | powerconverters.percentfull=已满 9 | 10 | powerconverters.up=上 11 | powerconverters.down=下 12 | powerconverters.south=南 13 | powerconverters.north=北 14 | powerconverters.west=西 15 | powerconverters.east=东 16 | 17 | powerconverters.common.bridge.name=能量桥接器 18 | powerconverters.common.charger.name=通用充能台 19 | 20 | powerconverters.bc.consumer.name=MJ转入器 21 | powerconverters.bc.producer.name=MJ输出器 22 | 23 | powerconverters.steam.consumer.name=蒸汽能转入器 24 | powerconverters.steam.producer.name=蒸汽能输出器 25 | 26 | powerconverters.factorization.consumer.name=FZ能量转入器 27 | powerconverters.factorization.producer.name=FZ能量输出器 28 | 29 | powerconverters.te.consumer.name=RF转入器 30 | powerconverters.te.producer.name=RF输出器 31 | 32 | powerconverters.ic2.lv.consumer.name=EU-LV转入器 33 | powerconverters.ic2.mv.consumer.name=EU-MV转入器 34 | powerconverters.ic2.hv.consumer.name=EU-HV转入器 35 | powerconverters.ic2.ev.consumer.name=EU-EV转入器 36 | powerconverters.ic2.uv.consumer.name=EU-UV转入器 37 | 38 | powerconverters.ic2.lv.producer.name=EU-LV输出器 39 | powerconverters.ic2.mv.producer.name=EU-MV输出器 40 | powerconverters.ic2.hv.producer.name=EU-HV输出器 41 | powerconverters.ic2.ev.producer.name=EU-EV输出器 42 | powerconverters.ic2.uv.producer.name=EU-UV输出器 43 | 44 | powerconverters.gt.ulv.consumer.name=GT-ULV转入器 45 | powerconverters.gt.lv.consumer.name=GT-LV转入器 46 | powerconverters.gt.mv.consumer.name=GT-MV转入器 47 | powerconverters.gt.hv.consumer.name=GT-HV转入器 48 | powerconverters.gt.ev.consumer.name=GT-EV转入器 49 | powerconverters.gt.iv.consumer.name=GT-IV转入器 50 | powerconverters.gt.luv.consumer.name=GT-LuV转入器 51 | powerconverters.gt.zpmv.consumer.name=GT-ZPM转入器 52 | powerconverters.gt.uv.consumer.name=GT-UV转入器 53 | 54 | powerconverters.gt.ulv.producer.name=GT-ULV输出器 55 | powerconverters.gt.lv.producer.name=GT-LV输出器 56 | powerconverters.gt.mv.producer.name=GT-MV输出器 57 | powerconverters.gt.hv.producer.name=GT-HV输出器 58 | powerconverters.gt.ev.producer.name=GT-EV输出器 59 | powerconverters.gt.iv.producer.name=GT-IV输出器 60 | powerconverters.gt.luv.producer.name=GT-LuV输出器 61 | powerconverters.gt.zpmv.producer.name=GT-ZPM输出器 62 | powerconverters.gt.uv.producer.name=GT-UV输出器 63 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/lang/zh_TW.lang: -------------------------------------------------------------------------------- 1 | powerconverters.inputlimited=輸入限制 2 | powerconverters.outputlimited=輸出限制 3 | 4 | powerconverters.in=輸入 5 | powerconverters.out=輸出 6 | powerconverters.none=<無> 7 | powerconverters.nolink=未連接 8 | powerconverters.percentfull=已滿 9 | 10 | powerconverters.up=上 11 | powerconverters.down=下 12 | powerconverters.south=南 13 | powerconverters.north=北 14 | powerconverters.west=西 15 | powerconverters.east=東 16 | 17 | powerconverters.common.bridge.name=能量橋接器 18 | powerconverters.common.charger.name=通用充能台 19 | 20 | powerconverters.bc.consumer.name=MJ轉入器 21 | powerconverters.bc.producer.name=MJ産出器 22 | 23 | powerconverters.steam.consumer.name=蒸汽能轉入器 24 | powerconverters.steam.producer.name=蒸汽能産出器 25 | 26 | powerconverters.factorization.consumer.name=Fz能量轉入器 27 | powerconverters.factorization.producer.name=Fz能量産出器 28 | 29 | powerconverters.te.consumer.name=RF轉入器 30 | powerconverters.te.producer.name=RF産出器 31 | 32 | powerconverters.ic2.lv.consumer.name=EU-LV轉入器 33 | powerconverters.ic2.mv.consumer.name=EU-MV轉入器 34 | powerconverters.ic2.hv.consumer.name=EU-HV轉入器 35 | powerconverters.ic2.ev.consumer.name=EU-EV轉入器 36 | powerconverters.ic2.uv.consumer.name=EU-UV轉入器 37 | 38 | powerconverters.ic2.lv.producer.name=EU-LV産出器 39 | powerconverters.ic2.mv.producer.name=EU-MV産出器 40 | powerconverters.ic2.hv.producer.name=EU-HV産出器 41 | powerconverters.ic2.ev.producer.name=EU-EV産出器 42 | powerconverters.ic2.uv.producer.name=EU-UV産出器 43 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/bc/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/bc/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/bc/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/bc/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/bc/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/bc/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/bc/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/bc/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/common/bridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/common/bridge.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/common/charger_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/common/charger_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/common/charger_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/common/charger_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/factorization/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/factorization/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/factorization/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/factorization/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/factorization/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/factorization/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/factorization/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/factorization/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ev/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ev/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ev/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ev/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ev/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ev/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ev/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ev/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/hv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/hv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/hv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/hv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/hv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/hv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/hv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/hv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/iv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/iv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/iv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/iv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/iv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/iv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/iv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/iv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/luv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/luv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/luv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/luv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/luv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/luv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/luv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/luv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/lv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/lv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/lv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/lv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/lv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/lv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/lv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/lv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/mv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/mv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/mv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/mv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/mv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/mv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/mv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/mv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/ulv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/uv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/uv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/uv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/uv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/uv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/uv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/uv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/uv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/gt/zpmv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/ev/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/hv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/lv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/mv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/ic2/uv/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/mffs/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/mffs/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/mffs/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/mffs/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/mffs/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/mffs/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/mffs/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/mffs/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/steam/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/steam/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/steam/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/steam/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/steam/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/steam/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/steam/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/steam/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/te/consumer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/te/consumer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/te/consumer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/te/consumer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/te/producer_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/te/producer_off.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/blocks/te/producer_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/blocks/te/producer_on.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/gui/.directory: -------------------------------------------------------------------------------- 1 | [Dolphin] 2 | PreviewsShown=true 3 | Timestamp=2014,2,16,21,53,57 4 | Version=3 5 | -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/gui/energybridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/gui/energybridge.png -------------------------------------------------------------------------------- /src/main/resources/assets/powerconverters/textures/items/000_JetpackFueller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/src/main/resources/assets/powerconverters/textures/items/000_JetpackFueller.png -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid": "PowerConverters", 4 | "name": "Power Converters", 5 | "description": "Take control of your power", 6 | "version": "${version}", 7 | "mcversion": "${mcversion}", 8 | "url": "http://www.minecraftforum.net/topic/1695968-", 9 | "updateUrl": "", 10 | "authors": [ 11 | "PowerCrystals", 12 | "samrg472", 13 | "portablejim" 14 | ], 15 | "credits": "", 16 | "logoFile": "", 17 | "screenshots": [ 18 | ], 19 | "parent":"", 20 | "dependencies": [ 21 | ] 22 | } 23 | ] 24 | -------------------------------------------------------------------------------- /src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack":{ 3 | "pack_format":1, 4 | "description":"Powerconverters contents" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/version.properties: -------------------------------------------------------------------------------- 1 | version=${version} 2 | build_number=${buildnumber} -------------------------------------------------------------------------------- /work/asset_gt-block.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/work/asset_gt-block.psd -------------------------------------------------------------------------------- /work/asset_mffs-block.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/portablejim/PowerConverters/0d581a61cc444cc3c855d224c61765809c813b80/work/asset_mffs-block.psd --------------------------------------------------------------------------------