├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── project.properties └── src └── main ├── resources ├── META-INF │ ├── MANIFEST.MF │ └── numina_at.cfg ├── assets │ └── powersuits │ │ ├── fonts │ │ └── cra.ttf │ │ ├── lang │ │ ├── de_DE.lang │ │ ├── en_US.lang │ │ ├── fr_FR.lang │ │ ├── he_IL.lang │ │ ├── pt_BR.lang │ │ ├── pt_PT.lang │ │ ├── ru_RU.lang │ │ └── zh_CN.lang │ │ ├── models │ │ ├── armor2.mtl │ │ ├── armor2.obj │ │ ├── armor2.xml │ │ ├── jetpack.mtl │ │ ├── jetpack.obj │ │ ├── lightBase.mtl │ │ ├── lightBase.obj │ │ ├── lightCore.mtl │ │ ├── lightCore.obj │ │ ├── modelspec.xml │ │ ├── mps_arms.mtl │ │ ├── mps_arms.obj │ │ ├── mps_boots.mtl │ │ ├── mps_boots.obj │ │ ├── mps_chest.mtl │ │ ├── mps_chest.obj │ │ ├── mps_helm.mtl │ │ ├── mps_helm.obj │ │ ├── mps_pantaloons.mtl │ │ └── mps_pantaloons.obj │ │ ├── recipes │ │ ├── GregTech.recipes │ │ ├── IndustrialCraft2.recipes │ │ ├── ThermalExpansion.recipes │ │ └── vanilla.recipes │ │ ├── shaders │ │ ├── depthapplicator.frag │ │ ├── depthapplicator.vert │ │ ├── depthocclusion.frag │ │ ├── depthocclusion.vert │ │ ├── gaussianblur.frag │ │ └── gaussianblur.vert │ │ ├── sounds.json │ │ ├── sounds │ │ ├── GUIInstall.ogg │ │ ├── GUISelect.ogg │ │ ├── Glider.ogg │ │ ├── JetBoots.ogg │ │ ├── Jetpack.ogg │ │ ├── JumpAssist.ogg │ │ ├── MMMPSboop.wav │ │ ├── SwimAssist.ogg │ │ └── WaterElectrolyzer.ogg │ │ └── textures │ │ ├── blocks │ │ ├── bluelight.png │ │ └── heatresistantplating.png │ │ ├── gui │ │ ├── armordisplayselect.png │ │ ├── checkmark.png │ │ ├── colourclicker.png │ │ ├── glass.png │ │ ├── glowarmor.png │ │ ├── hexfield.png │ │ ├── lightning-medium.png │ │ ├── minussign.png │ │ ├── normalarmor.png │ │ ├── plussign.png │ │ └── transparentarmor.png │ │ ├── items │ │ ├── Clock.png │ │ ├── FlightControlY.png │ │ ├── InvisibleAnim.png │ │ ├── NightVisionAnim1.png │ │ ├── NightVisionAnim2.png │ │ ├── advancedplating1.png │ │ ├── advancedplating2.png │ │ ├── alien.png │ │ ├── aquaaffinity.png │ │ ├── arcreactor.png │ │ ├── armorfeet.png │ │ ├── armorhead.png │ │ ├── armorlegs.png │ │ ├── armortorso.png │ │ ├── artificialmuscle.png │ │ ├── basicplating1.png │ │ ├── basicplating2.png │ │ ├── binoculars.png │ │ ├── bluedrone.png │ │ ├── bluelight.png │ │ ├── bluephaser.png │ │ ├── blueplate.png │ │ ├── bluestar.png │ │ ├── clawclosed.png │ │ ├── clawlaser.png │ │ ├── clawopen.png │ │ ├── climbassist.png │ │ ├── controlcircuit.png │ │ ├── coolingsystem.png │ │ ├── crystalbubble.png │ │ ├── crystalcapacitor.png │ │ ├── crystalsphere.png │ │ ├── diamondupgrade.png │ │ ├── diamondupgrade1.png │ │ ├── diamondupgrade2.png │ │ ├── electricweapon.png │ │ ├── energymeter.png │ │ ├── energyshield.png │ │ ├── fieldemitter.png │ │ ├── fieldteleporter.png │ │ ├── fireweapon.png │ │ ├── glasspane.png │ │ ├── glider.png │ │ ├── gliderwing.png │ │ ├── grafter.png │ │ ├── gravitydrive.png │ │ ├── gravityweapon.png │ │ ├── greendrone.png │ │ ├── greenfield.png │ │ ├── greenlight.png │ │ ├── greenphaser.png │ │ ├── greenplate.png │ │ ├── greenstar.png │ │ ├── handitem.png │ │ ├── heart.png │ │ ├── heatresistantplating.png │ │ ├── heatresistantplating2.png │ │ ├── hologramemitter.png │ │ ├── hvcapacitor.png │ │ ├── ionthruster.png │ │ ├── jetboots.png │ │ ├── jetpack.png │ │ ├── jumpassist.png │ │ ├── lantern.png │ │ ├── laser.png │ │ ├── lvbattery.png │ │ ├── lvcapacitor.png │ │ ├── microbattery.png │ │ ├── mvbattery.png │ │ ├── mvcapacitor.png │ │ ├── myofiber.png │ │ ├── netherstar.png │ │ ├── nexuscrystal.png │ │ ├── nightvision.png │ │ ├── omniwrench.png │ │ ├── parachute.png │ │ ├── parachuteitem.png │ │ ├── paste.png │ │ ├── reddrone.png │ │ ├── redfield.png │ │ ├── redlight.png │ │ ├── redphaser.png │ │ ├── redplate.png │ │ ├── redstar.png │ │ ├── servo.png │ │ ├── shockabsorber.png │ │ ├── silkWisp.png │ │ ├── solenoid.png │ │ ├── soundweapon.png │ │ ├── spinningblade.png │ │ ├── sprintassist.png │ │ ├── swimboost.png │ │ ├── thermometer.png │ │ ├── toolaxe.png │ │ ├── toolfist.png │ │ ├── toolfisty.png │ │ ├── toolpick.png │ │ ├── toolpinch.png │ │ ├── toolpointer.png │ │ ├── toolshears.png │ │ ├── toolshovel.png │ │ ├── toolshovels.png │ │ ├── transparentarmor.png │ │ ├── waterelectrolyzer.png │ │ └── wiring.png │ │ ├── mmmpsicon.png │ │ ├── mmmpslogo_64.png │ │ ├── models │ │ ├── armor2diffuse.png │ │ ├── blankarmor.png │ │ ├── diffuse.png │ │ ├── jetpack.png │ │ ├── joearmor.png │ │ ├── joearmorpants.png │ │ ├── sebkarmor.png │ │ ├── sebkarmorpants.png │ │ ├── thusters_uvw_2.png │ │ ├── tinkertable_tx.png │ │ └── tool.png │ │ └── sebkicons │ │ ├── 0,0.png │ │ ├── 0,1.png │ │ ├── 0,2.png │ │ ├── 0,3.png │ │ ├── 0,4.png │ │ ├── 0,5.png │ │ ├── 0,6.png │ │ ├── 0,7.png │ │ ├── 0,8.png │ │ ├── 1,0.png │ │ ├── 1,1.png │ │ ├── 1,2.png │ │ ├── 1,3.png │ │ ├── 1,4.png │ │ └── 1,5.png ├── dependencies.info ├── mcmod.info ├── numina_at.cfg └── pack.mcmeta └── scala └── net └── machinemuse ├── api ├── IModularItem.java ├── IPowerModule.java ├── IPropertyModifier.java ├── ModuleManager.java ├── MuseItemTag.scala ├── OmniWrench.scala ├── electricity │ ├── ElectricAdapter.scala │ ├── ElectricConversions.scala │ └── MuseElectricItem.scala └── moduletrigger │ ├── IBlockBreakingModule.java │ ├── IPlayerTickModule.java │ ├── IRightClickModule.java │ └── IToggleableModule.java ├── general ├── NBTTagAccessor.java ├── gui │ ├── CosmeticGui.scala │ ├── EnergyMeter.java │ ├── GuiFieldTinker.java │ ├── GuiTinkerTable.java │ ├── HeatMeter.java │ ├── KeyConfigGui.java │ ├── MuseGui.java │ ├── MuseIcon.java │ ├── RenderPlayerAPIRequiredDisplayException.scala │ ├── clickable │ │ ├── Clickable.java │ │ ├── ClickableButton.java │ │ ├── ClickableItem.java │ │ ├── ClickableKeybinding.java │ │ ├── ClickableLabel.java │ │ ├── ClickableModule.scala │ │ ├── ClickableSlider.scala │ │ ├── ClickableTinkerSlider.java │ │ └── IClickable.java │ └── frame │ │ ├── ColourPickerFrame.scala │ │ ├── IGuiFrame.java │ │ ├── InstallSalvageFrame.java │ │ ├── ItemInfoFrame.java │ │ ├── ItemModelViewFrame.scala │ │ ├── ItemSelectionFrame.java │ │ ├── KeybindConfigFrame.java │ │ ├── ModuleSelectionFrame.java │ │ ├── ModuleSelectionSubFrame.java │ │ ├── ModuleTweakFrame.java │ │ ├── PartManipContainer.scala │ │ ├── PartManipSubFrame.scala │ │ ├── ScrollableFrame.java │ │ ├── StatsFrame.java │ │ └── TabSelectFrame.scala └── sound │ └── SoundLoader.java ├── powersuits ├── block │ ├── BlockLuxCapacitor.java │ ├── BlockTinkerTable.scala │ ├── TileEntityLuxCapacitor.java │ └── TileEntityTinkerTable.scala ├── client │ └── render │ │ ├── block │ │ ├── RenderLuxCapacitorTESR.java │ │ ├── TinkerTableModel.java │ │ └── TinkerTableRenderer.java │ │ ├── entity │ │ ├── MuseRender.java │ │ ├── RenderLuxCapacitorEntity.java │ │ ├── RenderPlasmaBolt.java │ │ └── RenderSpinningBlade.java │ │ ├── item │ │ ├── ArmorModel.scala │ │ ├── ArmorModelInstance.java │ │ ├── SMovingArmorModel.scala │ │ ├── ToolModel.java │ │ ├── ToolRenderer.java │ │ └── VanillaArmorModel.scala │ │ └── modelspec │ │ ├── ArmorMorphTarget.scala │ │ ├── DefaultModelSpec.scala │ │ ├── ModelRegistry.scala │ │ ├── ModelSpecXMLReader.scala │ │ ├── ModelSpecXMLWriter.scala │ │ └── RenderPart.scala ├── common │ ├── CommonProxy.scala │ ├── Config.scala │ ├── MPSCreativeTab.scala │ ├── MPSGuiHandler.scala │ ├── MPSItems.scala │ ├── MPSRecipeManager.java │ ├── ModCompatability.java │ └── ModularPowersuits.scala ├── control │ ├── IBindableControl.java │ ├── KeybindKeyHandler.java │ ├── KeybindManager.java │ ├── OpenGuiControl.java │ ├── PlayerInputMap.java │ └── ToggleControl.java ├── entity │ ├── EntityLuxCapacitor.java │ ├── EntityPlasmaBolt.java │ └── EntitySpinningBlade.java ├── event │ ├── ClientTickHandler.scala │ ├── HarvestEventHandler.java │ ├── MovementManager.java │ ├── PlayerLoginHandlerThingy.scala │ ├── PlayerUpdateHandler.scala │ └── RenderEventHandler.java ├── item │ ├── CustomRenderArmorBase.scala │ ├── ItemComponent.java │ ├── ItemElectricArmor.scala │ ├── ItemElectricTool.scala │ ├── ItemPowerArmor.scala │ ├── ItemPowerArmorBoots.scala │ ├── ItemPowerArmorChestplate.scala │ ├── ItemPowerArmorHelmet.scala │ ├── ItemPowerArmorLeggings.scala │ ├── ItemPowerFist.scala │ ├── ModeChangingModularItem.scala │ └── ModularItemBase.scala ├── network │ └── packets │ │ ├── MPSPacketList.scala │ │ ├── MusePacketColourInfo.scala │ │ ├── MusePacketCosmeticInfo.scala │ │ ├── MusePacketInstallModuleRequest.scala │ │ ├── MusePacketInventoryRefresh.scala │ │ ├── MusePacketPlasmaBolt.scala │ │ ├── MusePacketPlayerUpdate.scala │ │ ├── MusePacketPropertyModifierConfig.scala │ │ ├── MusePacketSalvageModuleRequest.scala │ │ ├── MusePacketToggleRequest.scala │ │ └── MusePacketTweakRequest.scala └── powermodule │ ├── PowerModule.java │ ├── PowerModuleBase.java │ ├── PropertyModifierFlatAdditive.java │ ├── PropertyModifierLinearAdditive.java │ ├── RightClickPowerModule.java │ ├── ToggleablePowerModule.java │ ├── armor │ ├── ApiaristArmorModule.java │ ├── BasicPlatingModule.java │ ├── DiamondPlatingModule.java │ ├── EnergyShieldModule.java │ ├── HazmatModule.java │ └── HeatSinkModule.java │ ├── energy │ ├── AdvancedBatteryModule.java │ ├── BasicBatteryModule.java │ └── EliteBatteryModule.java │ ├── misc │ ├── AirtightSealModule.java │ ├── BinocularsModule.scala │ ├── CitizenJoeStyle.java │ ├── CoolingSystemModule.java │ ├── CosmeticGlowModule.java │ ├── InvisibilityModule.java │ ├── NightVisionModule.java │ ├── ThaumGogglesModule.java │ ├── TintModule.java │ ├── TransparentArmorModule.java │ └── WaterElectrolyzerModule.java │ ├── movement │ ├── AttributeModifier.scala │ ├── BlinkDriveModule.java │ ├── ClimbAssistModule.java │ ├── FlightControlModule.java │ ├── GliderModule.java │ ├── JetBootsModule.java │ ├── JetPackModule.java │ ├── JumpAssistModule.java │ ├── ParachuteModule.java │ ├── ShockAbsorberModule.java │ ├── SprintAssistModule.scala │ └── SwimAssistModule.java │ ├── tool │ ├── AquaAffinityModule.java │ ├── AxeModule.java │ ├── DiamondPickUpgradeModule.java │ ├── FieldTinkerModule.scala │ ├── GrafterModule.java │ ├── HoeModule.java │ ├── LuxCapacitor.java │ ├── MFFSFieldTeleporterModule.java │ ├── MultimeterModule.java │ ├── OmniWrenchModule.java │ ├── PickaxeModule.java │ ├── RedstoneLaser.scala │ ├── ShearsModule.java │ └── ShovelModule.java │ └── weapon │ ├── BladeLauncherModule.java │ ├── MeleeAssistModule.java │ ├── PlasmaCannonModule.java │ ├── RailgunModule.java │ └── SonicWeaponModule.java └── utils ├── ElectricItemUtils.scala ├── MuseBlockUtils.java ├── MuseCommonStrings.java ├── MuseFileUtils.scala ├── MuseHeatUtils.java ├── MuseItemUtils.java ├── MusePlayerUtils.java ├── MuseStringUtils.java ├── ScalaNBT.scala └── render ├── BufferMapper.scala ├── DepthBuffer.scala ├── GlowBuffer.scala ├── GuiIcons.scala ├── MuseRenderer.java ├── MuseShaders.scala ├── MuseStencilManager.scala ├── MuseTexture.scala ├── RMonad.scala ├── ShaderProgram.scala ├── SlickFont.scala └── TextureBuffer.scala /.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 | # ForgeGradle 2 | /.gradle 3 | /build 4 | /run 5 | /libs 6 | 7 | # Eclipse 8 | .classpath 9 | .project 10 | /.settings 11 | /bin 12 | 13 | # IntelliJ 14 | /.idea 15 | *.iml 16 | *.ipr 17 | *.iws 18 | /out 19 | 20 | # Mac Stuff 21 | .DS_Store 22 | *.command 23 | 24 | # Use already pushed README.md 25 | /README.md 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, 2015: MachineMuse (Claire Semple) & QuantuMatriX Technologies 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | Neither the name(s) of the author(s) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | MachineMusePowersuits 2 | ===================== 3 | 4 | 1.7 should be mostly working; please do not post issue reports for 1.6.4 anymore. :) 5 | 6 | >Current stable builds: https://github.com/QMXTech/MachineMusePowersuits/releases 7 | 8 | >Please file new bug reports at [https://bugzilla.qmxtech.com/](https://bugzilla.qmxtech.com/) 9 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Sep 08 10:14:08 MDT 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-all.zip 7 | -------------------------------------------------------------------------------- /project.properties: -------------------------------------------------------------------------------- 1 | forge_version=10.13.2.1236 2 | mod_version=0.11.0 3 | minecraft_version=1.7.10 4 | group_id=net.machinemuse 5 | mod_id=ModularPowersuits 6 | libs_dir=libs/ 7 | #apisource_url=http://machinemuse.minecraftforge.net/ 8 | apisource_url=http://files.qmxtech.com/mc-dev/ 9 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/numina_at.cfg: -------------------------------------------------------------------------------- 1 | public net.minecraft.network.NetHandlerPlayServer field_147365_f #floatingtickCount 2 | public net.minecraft.client.settings.KeyBinding field_74514_b #hash 3 | public net.minecraft.client.settings.KeyBinding field_74516_a #keybindArray -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/fonts/cra.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/fonts/cra.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/armor2.mtl: -------------------------------------------------------------------------------- 1 | newmtl initialShadingGroup 2 | illum 4 3 | Kd 0.00 0.00 0.00 4 | Ka 0.00 0.00 0.00 5 | Tf 1.00 1.00 1.00 6 | map_Kd diffuseplain.png 7 | Ni 1.00 8 | newmtl lambert3SG 9 | illum 4 10 | Kd 0.50 0.50 0.50 11 | Ka 0.00 0.00 0.00 12 | Tf 1.00 1.00 1.00 13 | Ni 1.00 14 | newmtl lambert4SG 15 | illum 4 16 | Kd 0.50 0.50 0.50 17 | Ka 0.00 0.00 0.00 18 | Tf 1.00 1.00 1.00 19 | Ni 1.00 20 | newmtl lambert7SG 21 | illum 4 22 | Kd 1.00 1.00 1.00 23 | Ka 0.00 0.00 0.00 24 | Tf 1.00 1.00 1.00 25 | Ni 1.00 26 | newmtl lambert11SG 27 | illum 4 28 | Kd 0.00 0.00 0.00 29 | Ka 0.00 0.00 0.00 30 | Tf 1.00 1.00 1.00 31 | map_Kd diffuse3.psd 32 | Ni 1.00 33 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/jetpack.mtl: -------------------------------------------------------------------------------- 1 | newmtl initialShadingGroup 2 | illum 4 3 | Kd 0.00 0.00 0.00 4 | Ka 0.00 0.00 0.00 5 | Tf 1.00 1.00 1.00 6 | map_Kd diffuse.psd 7 | Ni 1.00 8 | newmtl lambert3SG 9 | illum 4 10 | Kd 0.50 0.50 0.50 11 | Ka 0.00 0.00 0.00 12 | Tf 1.00 1.00 1.00 13 | Ni 1.00 14 | newmtl lambert7SG 15 | illum 4 16 | Kd 1.00 1.00 1.00 17 | Ka 0.00 0.00 0.00 18 | Tf 1.00 1.00 1.00 19 | Ni 1.00 20 | newmtl lambert11SG 21 | illum 4 22 | Kd 0.00 0.00 0.00 23 | Ka 0.00 0.00 0.00 24 | Tf 1.00 1.00 1.00 25 | map_Kd diffuse3.psd 26 | Ni 1.00 27 | newmtl lambert13SG 28 | illum 4 29 | Kd 0.00 0.00 0.00 30 | Ka 0.00 0.00 0.00 31 | Tf 1.00 1.00 1.00 32 | map_Kd jetpack.psd 33 | Ni 1.00 34 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/lightBase.mtl: -------------------------------------------------------------------------------- 1 | # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware 2 | # File Created: 29.03.2013 17:41:56 3 | 4 | newmtl Material__3 5 | Ns 10.0000 6 | Ni 1.5000 7 | d 1.0000 8 | Tr 0.0000 9 | Tf 1.0000 1.0000 1.0000 10 | illum 2 11 | Ka 0.5880 0.5880 0.5880 12 | Kd 0.5880 0.5880 0.5880 13 | Ks 0.0000 0.0000 0.0000 14 | Ke 0.0000 0.0000 0.0000 15 | map_Ka C:\Users\Cheap Shot\Dropbox\Technic\3Dstuff\thusters_uvw_2.png 16 | map_Kd C:\Users\Cheap Shot\Dropbox\Technic\3Dstuff\thusters_uvw_2.png 17 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/lightCore.mtl: -------------------------------------------------------------------------------- 1 | # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware 2 | # File Created: 29.03.2013 17:42:54 3 | 4 | newmtl Material__3 5 | Ns 10.0000 6 | Ni 1.5000 7 | d 1.0000 8 | Tr 0.0000 9 | Tf 1.0000 1.0000 1.0000 10 | illum 2 11 | Ka 0.5880 0.5880 0.5880 12 | Kd 0.5880 0.5880 0.5880 13 | Ks 0.0000 0.0000 0.0000 14 | Ke 0.0000 0.0000 0.0000 15 | map_Ka C:\Users\Cheap Shot\Dropbox\Technic\3Dstuff\thusters_uvw_2.png 16 | map_Kd C:\Users\Cheap Shot\Dropbox\Technic\3Dstuff\thusters_uvw_2.png 17 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/lightCore.obj: -------------------------------------------------------------------------------- 1 | # 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware 2 | # File Created: 29.03.2013 17:42:54 3 | 4 | mtllib lightCore.mtl 5 | 6 | # 7 | # object poplight001 8 | # 9 | 10 | v -3.4331 2.3703 3.4331 11 | v 3.4331 2.3703 3.4331 12 | v 3.4331 2.3703 -3.4331 13 | v -3.4331 2.3703 -3.4331 14 | # 4 vertices 15 | 16 | vn 0.0000 1.0000 -0.0000 17 | # 1 vertex normals 18 | 19 | vt 0.1400 0.7594 0.0000 20 | vt 0.2980 0.7594 0.0000 21 | vt 0.2980 0.9174 0.0000 22 | vt 0.1400 0.9174 0.0000 23 | # 4 texture coords 24 | 25 | g poplight001 26 | usemtl Material__3 27 | s off 28 | f 1/1/1 2/2/1 3/3/1 4/4/1 29 | # 1 polygons 30 | 31 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/mps_arms.mtl: -------------------------------------------------------------------------------- 1 | newmtl initialShadingGroup 2 | illum 4 3 | Kd 0.00 0.00 0.00 4 | Ka 0.00 0.00 0.00 5 | Tf 1.00 1.00 1.00 6 | map_Kd diffuse3.psd 7 | Ni 1.00 8 | newmtl jetpack1:wire_000214253 9 | illum 4 10 | Kd 0.00 0.84 0.99 11 | Ka 0.00 0.84 0.99 12 | Tf 1.00 1.00 1.00 13 | Ni 1.00 14 | Ks 0.35 0.35 0.35 15 | Ns 32.00 16 | newmtl jetpack1:wire_002002002 17 | illum 4 18 | Kd 0.01 0.01 0.01 19 | Ka 0.01 0.01 0.01 20 | Tf 1.00 1.00 1.00 21 | Ni 1.00 22 | Ks 0.35 0.35 0.35 23 | Ns 32.00 24 | newmtl jetpack1:wire_013013013 25 | illum 4 26 | Kd 0.05 0.05 0.05 27 | Ka 0.05 0.05 0.05 28 | Tf 1.00 1.00 1.00 29 | Ni 1.00 30 | Ks 0.35 0.35 0.35 31 | Ns 32.00 32 | newmtl jetpack1:wire_035035035 33 | illum 4 34 | Kd 0.14 0.14 0.14 35 | Ka 0.14 0.14 0.14 36 | Tf 1.00 1.00 1.00 37 | Ni 1.00 38 | Ks 0.35 0.35 0.35 39 | Ns 32.00 40 | newmtl jetpack1:wire_086086086 41 | illum 4 42 | Kd 0.34 0.34 0.34 43 | Ka 0.34 0.34 0.34 44 | Tf 1.00 1.00 1.00 45 | Ni 1.00 46 | Ks 0.35 0.35 0.35 47 | Ns 32.00 48 | newmtl jetpack1:wire_115115115 49 | illum 4 50 | Kd 0.45 0.45 0.45 51 | Ka 0.45 0.45 0.45 52 | Tf 1.00 1.00 1.00 53 | Ni 1.00 54 | Ks 0.35 0.35 0.35 55 | Ns 32.00 56 | newmtl lambert3SG 57 | illum 4 58 | Kd 0.50 0.50 0.50 59 | Ka 0.00 0.00 0.00 60 | Tf 1.00 1.00 1.00 61 | Ni 1.00 62 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/mps_boots.mtl: -------------------------------------------------------------------------------- 1 | newmtl initialShadingGroup 2 | illum 4 3 | Kd 0.00 0.00 0.00 4 | Ka 0.00 0.00 0.00 5 | Tf 1.00 1.00 1.00 6 | map_Kd diffuse3.psd 7 | Ni 1.00 8 | newmtl jetpack1:wire_000214253 9 | illum 4 10 | Kd 0.00 0.84 0.99 11 | Ka 0.00 0.84 0.99 12 | Tf 1.00 1.00 1.00 13 | Ni 1.00 14 | Ks 0.35 0.35 0.35 15 | Ns 32.00 16 | newmtl jetpack1:wire_002002002 17 | illum 4 18 | Kd 0.01 0.01 0.01 19 | Ka 0.01 0.01 0.01 20 | Tf 1.00 1.00 1.00 21 | Ni 1.00 22 | Ks 0.35 0.35 0.35 23 | Ns 32.00 24 | newmtl jetpack1:wire_013013013 25 | illum 4 26 | Kd 0.05 0.05 0.05 27 | Ka 0.05 0.05 0.05 28 | Tf 1.00 1.00 1.00 29 | Ni 1.00 30 | Ks 0.35 0.35 0.35 31 | Ns 32.00 32 | newmtl jetpack1:wire_035035035 33 | illum 4 34 | Kd 0.14 0.14 0.14 35 | Ka 0.14 0.14 0.14 36 | Tf 1.00 1.00 1.00 37 | Ni 1.00 38 | Ks 0.35 0.35 0.35 39 | Ns 32.00 40 | newmtl jetpack1:wire_086086086 41 | illum 4 42 | Kd 0.34 0.34 0.34 43 | Ka 0.34 0.34 0.34 44 | Tf 1.00 1.00 1.00 45 | Ni 1.00 46 | Ks 0.35 0.35 0.35 47 | Ns 32.00 48 | newmtl jetpack1:wire_115115115 49 | illum 4 50 | Kd 0.45 0.45 0.45 51 | Ka 0.45 0.45 0.45 52 | Tf 1.00 1.00 1.00 53 | Ni 1.00 54 | Ks 0.35 0.35 0.35 55 | Ns 32.00 56 | newmtl lambert3SG 57 | illum 4 58 | Kd 0.50 0.50 0.50 59 | Ka 0.00 0.00 0.00 60 | Tf 1.00 1.00 1.00 61 | Ni 1.00 62 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/mps_chest.mtl: -------------------------------------------------------------------------------- 1 | newmtl initialShadingGroup 2 | illum 4 3 | Kd 0.00 0.00 0.00 4 | Ka 0.00 0.00 0.00 5 | Tf 1.00 1.00 1.00 6 | map_Kd diffuse3.psd 7 | Ni 1.00 8 | newmtl jetpack1:wire_000214253 9 | illum 4 10 | Kd 0.00 0.84 0.99 11 | Ka 0.00 0.84 0.99 12 | Tf 1.00 1.00 1.00 13 | Ni 1.00 14 | Ks 0.35 0.35 0.35 15 | Ns 32.00 16 | newmtl jetpack1:wire_002002002 17 | illum 4 18 | Kd 0.01 0.01 0.01 19 | Ka 0.01 0.01 0.01 20 | Tf 1.00 1.00 1.00 21 | Ni 1.00 22 | Ks 0.35 0.35 0.35 23 | Ns 32.00 24 | newmtl jetpack1:wire_013013013 25 | illum 4 26 | Kd 0.05 0.05 0.05 27 | Ka 0.05 0.05 0.05 28 | Tf 1.00 1.00 1.00 29 | Ni 1.00 30 | Ks 0.35 0.35 0.35 31 | Ns 32.00 32 | newmtl jetpack1:wire_035035035 33 | illum 4 34 | Kd 0.14 0.14 0.14 35 | Ka 0.14 0.14 0.14 36 | Tf 1.00 1.00 1.00 37 | Ni 1.00 38 | Ks 0.35 0.35 0.35 39 | Ns 32.00 40 | newmtl jetpack1:wire_086086086 41 | illum 4 42 | Kd 0.34 0.34 0.34 43 | Ka 0.34 0.34 0.34 44 | Tf 1.00 1.00 1.00 45 | Ni 1.00 46 | Ks 0.35 0.35 0.35 47 | Ns 32.00 48 | newmtl jetpack1:wire_115115115 49 | illum 4 50 | Kd 0.45 0.45 0.45 51 | Ka 0.45 0.45 0.45 52 | Tf 1.00 1.00 1.00 53 | Ni 1.00 54 | Ks 0.35 0.35 0.35 55 | Ns 32.00 56 | newmtl lambert3SG 57 | illum 4 58 | Kd 0.50 0.50 0.50 59 | Ka 0.00 0.00 0.00 60 | Tf 1.00 1.00 1.00 61 | Ni 1.00 62 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/mps_helm.mtl: -------------------------------------------------------------------------------- 1 | newmtl initialShadingGroup 2 | illum 4 3 | Kd 0.00 0.00 0.00 4 | Ka 0.00 0.00 0.00 5 | Tf 1.00 1.00 1.00 6 | map_Kd diffuse3.psd 7 | Ni 1.00 8 | newmtl jetpack1:wire_000214253 9 | illum 4 10 | Kd 0.00 0.84 0.99 11 | Ka 0.00 0.84 0.99 12 | Tf 1.00 1.00 1.00 13 | Ni 1.00 14 | Ks 0.35 0.35 0.35 15 | Ns 32.00 16 | newmtl jetpack1:wire_002002002 17 | illum 4 18 | Kd 0.01 0.01 0.01 19 | Ka 0.01 0.01 0.01 20 | Tf 1.00 1.00 1.00 21 | Ni 1.00 22 | Ks 0.35 0.35 0.35 23 | Ns 32.00 24 | newmtl jetpack1:wire_013013013 25 | illum 4 26 | Kd 0.05 0.05 0.05 27 | Ka 0.05 0.05 0.05 28 | Tf 1.00 1.00 1.00 29 | Ni 1.00 30 | Ks 0.35 0.35 0.35 31 | Ns 32.00 32 | newmtl jetpack1:wire_035035035 33 | illum 4 34 | Kd 0.14 0.14 0.14 35 | Ka 0.14 0.14 0.14 36 | Tf 1.00 1.00 1.00 37 | Ni 1.00 38 | Ks 0.35 0.35 0.35 39 | Ns 32.00 40 | newmtl jetpack1:wire_086086086 41 | illum 4 42 | Kd 0.34 0.34 0.34 43 | Ka 0.34 0.34 0.34 44 | Tf 1.00 1.00 1.00 45 | Ni 1.00 46 | Ks 0.35 0.35 0.35 47 | Ns 32.00 48 | newmtl jetpack1:wire_115115115 49 | illum 4 50 | Kd 0.45 0.45 0.45 51 | Ka 0.45 0.45 0.45 52 | Tf 1.00 1.00 1.00 53 | Ni 1.00 54 | Ks 0.35 0.35 0.35 55 | Ns 32.00 56 | newmtl lambert3SG 57 | illum 4 58 | Kd 0.50 0.50 0.50 59 | Ka 0.00 0.00 0.00 60 | Tf 1.00 1.00 1.00 61 | Ni 1.00 62 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/models/mps_pantaloons.mtl: -------------------------------------------------------------------------------- 1 | newmtl initialShadingGroup 2 | illum 4 3 | Kd 0.00 0.00 0.00 4 | Ka 0.00 0.00 0.00 5 | Tf 1.00 1.00 1.00 6 | map_Kd diffuse3.psd 7 | Ni 1.00 8 | newmtl jetpack1:wire_000214253 9 | illum 4 10 | Kd 0.00 0.84 0.99 11 | Ka 0.00 0.84 0.99 12 | Tf 1.00 1.00 1.00 13 | Ni 1.00 14 | Ks 0.35 0.35 0.35 15 | Ns 32.00 16 | newmtl jetpack1:wire_002002002 17 | illum 4 18 | Kd 0.01 0.01 0.01 19 | Ka 0.01 0.01 0.01 20 | Tf 1.00 1.00 1.00 21 | Ni 1.00 22 | Ks 0.35 0.35 0.35 23 | Ns 32.00 24 | newmtl jetpack1:wire_013013013 25 | illum 4 26 | Kd 0.05 0.05 0.05 27 | Ka 0.05 0.05 0.05 28 | Tf 1.00 1.00 1.00 29 | Ni 1.00 30 | Ks 0.35 0.35 0.35 31 | Ns 32.00 32 | newmtl jetpack1:wire_035035035 33 | illum 4 34 | Kd 0.14 0.14 0.14 35 | Ka 0.14 0.14 0.14 36 | Tf 1.00 1.00 1.00 37 | Ni 1.00 38 | Ks 0.35 0.35 0.35 39 | Ns 32.00 40 | newmtl jetpack1:wire_086086086 41 | illum 4 42 | Kd 0.34 0.34 0.34 43 | Ka 0.34 0.34 0.34 44 | Tf 1.00 1.00 1.00 45 | Ni 1.00 46 | Ks 0.35 0.35 0.35 47 | Ns 32.00 48 | newmtl jetpack1:wire_115115115 49 | illum 4 50 | Kd 0.45 0.45 0.45 51 | Ka 0.45 0.45 0.45 52 | Tf 1.00 1.00 1.00 53 | Ni 1.00 54 | Ks 0.35 0.35 0.35 55 | Ns 32.00 56 | newmtl lambert3SG 57 | illum 4 58 | Kd 0.50 0.50 0.50 59 | Ka 0.00 0.00 0.00 60 | Tf 1.00 1.00 1.00 61 | Ni 1.00 62 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/shaders/depthapplicator.frag: -------------------------------------------------------------------------------- 1 | #version 330 2 | 3 | uniform sampler2D u_Depth; 4 | in vec2 texcoord; 5 | 6 | void main() { 7 | gl_FragDepth = texture2D(u_Depth, texcoord).r; 8 | gl_FragColor = vec4(0.0); 9 | } -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/shaders/depthapplicator.vert: -------------------------------------------------------------------------------- 1 | #version 330 2 | uniform mat4 u_ModelViewProjectionMatrix; 3 | layout(location = 0) in vec4 v_Vertex; 4 | layout(location = 1) in vec4 v_TexCoord; 5 | out vec2 texcoord; 6 | 7 | void main() { 8 | gl_Position = u_ModelViewProjectionMatrix * v_Vertex; 9 | texcoord = vec2(v_TexCoord.x, v_TexCoord.y); 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/shaders/depthocclusion.frag: -------------------------------------------------------------------------------- 1 | #version 330 2 | uniform sampler2D u_Occlusion; 3 | uniform sampler2D u_Texture; 4 | uniform sampler2D u_Depth; 5 | in vec2 texcoord; 6 | 7 | void main() { 8 | float occlusion = texture2D(u_Occlusion, texcoord).r; 9 | float depth = texture2D(u_Depth, texcoord).r - 0.001; 10 | vec4 color = vec4(0.0); 11 | float writedepth = occlusion; 12 | if(depth <= occlusion) { 13 | color = texture2D(u_Texture, texcoord); 14 | // color = vec4(1.0); 15 | writedepth = depth; 16 | } 17 | // color = vec4(vec3(occlusion - depth),1); 18 | gl_FragDepth = writedepth; 19 | gl_FragColor = color; 20 | } -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/shaders/depthocclusion.vert: -------------------------------------------------------------------------------- 1 | #version 330 2 | uniform mat4 u_ModelViewProjectionMatrix; 3 | layout(location = 0) in vec4 v_Vertex; 4 | layout(location = 1) in vec4 v_TexCoord; 5 | out vec2 texcoord; 6 | 7 | void main() { 8 | gl_Position = u_ModelViewProjectionMatrix * v_Vertex; 9 | texcoord = vec2(v_TexCoord.x, v_TexCoord.y); 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/shaders/gaussianblur.frag: -------------------------------------------------------------------------------- 1 | #version 330 2 | uniform vec2 u_Scale; 3 | uniform sampler2D u_Texture; 4 | in vec2 texcoord; 5 | 6 | uniform float gaussFilter[50] = float[50]( 7 | -12.0, 1.0/16777216.0, 8 | -11.0, 24.0/16777216.0, 9 | -10.0, 276.0/16777216.0, 10 | -9.0, 2024.0/16777216.0, 11 | -8.0, 10626.0/16777216.0, 12 | -7.0, 42504.0/16777216.0, 13 | -6.0, 134596.0/16777216.0, 14 | -5.0, 346104.0/16777216.0, 15 | -4.0, 735471.0/16777216.0, 16 | -3.0, 1307504.0/16777216.0, 17 | -2.0, 1961256.0/16777216.0, 18 | -1.0, 2496144.0/16777216.0, 19 | 0.0, 2704156.0/16777216.0, 20 | 1.0, 2496144.0/16777216.0, 21 | 2.0, 1961256.0/16777216.0, 22 | 3.0, 1307504.0/16777216.0, 23 | 4.0, 735471.0/16777216.0, 24 | 5.0, 346104.0/16777216.0, 25 | 6.0, 134596.0/16777216.0, 26 | 7.0, 42504.0/16777216.0, 27 | 8.0, 10626.0/16777216.0, 28 | 9.0, 2024.0/16777216.0, 29 | 10.0, 276.0/16777216.0, 30 | 11.0, 24.0/16777216.0, 31 | 12.0, 1.0/16777216.0 32 | ); 33 | 34 | void main() { 35 | vec4 color = vec4(0.0); 36 | float k = 0.0; 37 | float wt = 0.0; 38 | for( int i = 0; i < 25; i++ ) 39 | { 40 | vec4 pix = texture2D( u_Texture, 41 | vec2(texcoord.x+gaussFilter[i*2]*u_Scale.x, texcoord.y+gaussFilter[i*2]*u_Scale.y ) 42 | ); 43 | wt = gaussFilter[i*2+1] * pix.w * 1.5; 44 | color += wt * pix; 45 | k += wt; 46 | } 47 | gl_FragColor = color; 48 | } -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/shaders/gaussianblur.vert: -------------------------------------------------------------------------------- 1 | #version 330 2 | uniform mat4 u_ModelViewProjectionMatrix; 3 | layout(location = 0) in vec4 v_Vertex; 4 | layout(location = 1) in vec4 v_TexCoord; 5 | out vec2 texcoord; 6 | 7 | void main() { 8 | gl_Position = u_ModelViewProjectionMatrix * v_Vertex; 9 | texcoord = vec2(v_TexCoord.x, v_TexCoord.y); 10 | } -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds.json: -------------------------------------------------------------------------------- 1 | { 2 | "Glider": {"catagory": "master","sounds": [{"name": "Glider","stream": false}]}, 3 | "GUIInstall": {"catagory": "master","sounds": [{"name": "GUIInstall","stream": false}]}, 4 | "GUISelect": {"catagory": "master","sounds": [{"name": "GUISelect","stream": false}]}, 5 | "JetBoots": {"catagory": "master","sounds": [{"name": "JetBoots","stream": false}]}, 6 | "Jetpack": {"catagory": "master","sounds": [{"name": "Jetpack","stream": false}]}, 7 | "JumpAssist": {"catagory": "master","sounds": [{"name": "JumpAssist","stream": false}]}, 8 | "SwimAssist": {"catagory": "master","sounds": [{"name": "SwimAssist","stream": false}]}, 9 | "WaterElectrolyzer": {"catagory": "master","sounds": [{"name": "WaterElectrolyzer","stream": false}]} 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/GUIInstall.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/GUIInstall.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/GUISelect.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/GUISelect.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/Glider.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/Glider.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/JetBoots.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/JetBoots.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/Jetpack.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/Jetpack.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/JumpAssist.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/JumpAssist.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/MMMPSboop.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/MMMPSboop.wav -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/SwimAssist.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/SwimAssist.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/sounds/WaterElectrolyzer.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/sounds/WaterElectrolyzer.ogg -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/blocks/bluelight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/blocks/bluelight.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/blocks/heatresistantplating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/blocks/heatresistantplating.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/armordisplayselect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/armordisplayselect.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/checkmark.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/colourclicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/colourclicker.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/glass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/glass.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/glowarmor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/glowarmor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/hexfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/hexfield.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/lightning-medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/lightning-medium.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/minussign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/minussign.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/normalarmor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/normalarmor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/plussign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/plussign.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/gui/transparentarmor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/gui/transparentarmor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/Clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/Clock.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/FlightControlY.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/FlightControlY.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/InvisibleAnim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/InvisibleAnim.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/NightVisionAnim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/NightVisionAnim1.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/NightVisionAnim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/NightVisionAnim2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/advancedplating1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/advancedplating1.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/advancedplating2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/advancedplating2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/alien.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/alien.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/aquaaffinity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/aquaaffinity.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/arcreactor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/arcreactor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/armorfeet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/armorfeet.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/armorhead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/armorhead.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/armorlegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/armorlegs.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/armortorso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/armortorso.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/artificialmuscle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/artificialmuscle.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/basicplating1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/basicplating1.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/basicplating2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/basicplating2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/binoculars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/binoculars.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/bluedrone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/bluedrone.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/bluelight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/bluelight.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/bluephaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/bluephaser.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/blueplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/blueplate.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/bluestar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/bluestar.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/clawclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/clawclosed.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/clawlaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/clawlaser.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/clawopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/clawopen.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/climbassist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/climbassist.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/controlcircuit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/controlcircuit.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/coolingsystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/coolingsystem.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/crystalbubble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/crystalbubble.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/crystalcapacitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/crystalcapacitor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/crystalsphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/crystalsphere.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/diamondupgrade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/diamondupgrade.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/diamondupgrade1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/diamondupgrade1.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/diamondupgrade2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/diamondupgrade2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/electricweapon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/electricweapon.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/energymeter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/energymeter.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/energyshield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/energyshield.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/fieldemitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/fieldemitter.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/fieldteleporter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/fieldteleporter.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/fireweapon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/fireweapon.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/glasspane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/glasspane.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/glider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/glider.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/gliderwing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/gliderwing.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/grafter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/grafter.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/gravitydrive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/gravitydrive.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/gravityweapon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/gravityweapon.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/greendrone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/greendrone.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/greenfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/greenfield.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/greenlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/greenlight.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/greenphaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/greenphaser.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/greenplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/greenplate.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/greenstar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/greenstar.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/handitem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/handitem.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/heart.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/heatresistantplating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/heatresistantplating.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/heatresistantplating2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/heatresistantplating2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/hologramemitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/hologramemitter.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/hvcapacitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/hvcapacitor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/ionthruster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/ionthruster.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/jetboots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/jetboots.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/jetpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/jetpack.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/jumpassist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/jumpassist.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/lantern.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/lantern.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/laser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/laser.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/lvbattery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/lvbattery.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/lvcapacitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/lvcapacitor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/microbattery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/microbattery.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/mvbattery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/mvbattery.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/mvcapacitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/mvcapacitor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/myofiber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/myofiber.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/netherstar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/netherstar.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/nexuscrystal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/nexuscrystal.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/nightvision.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/nightvision.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/omniwrench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/omniwrench.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/parachute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/parachute.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/parachuteitem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/parachuteitem.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/paste.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/reddrone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/reddrone.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/redfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/redfield.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/redlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/redlight.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/redphaser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/redphaser.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/redplate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/redplate.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/redstar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/redstar.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/servo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/servo.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/shockabsorber.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/shockabsorber.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/silkWisp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/silkWisp.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/solenoid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/solenoid.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/soundweapon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/soundweapon.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/spinningblade.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/spinningblade.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/sprintassist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/sprintassist.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/swimboost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/swimboost.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/thermometer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/thermometer.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolaxe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolaxe.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolfist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolfist.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolfisty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolfisty.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolpick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolpick.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolpinch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolpinch.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolpointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolpointer.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolshears.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolshears.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolshovel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolshovel.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/toolshovels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/toolshovels.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/transparentarmor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/transparentarmor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/waterelectrolyzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/waterelectrolyzer.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/items/wiring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/items/wiring.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/mmmpsicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/mmmpsicon.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/mmmpslogo_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/mmmpslogo_64.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/armor2diffuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/armor2diffuse.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/blankarmor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/blankarmor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/diffuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/diffuse.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/jetpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/jetpack.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/joearmor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/joearmor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/joearmorpants.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/joearmorpants.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/sebkarmor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/sebkarmor.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/sebkarmorpants.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/sebkarmorpants.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/thusters_uvw_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/thusters_uvw_2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/tinkertable_tx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/tinkertable_tx.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/models/tool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/models/tool.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,0.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,1.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,3.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,4.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,5.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,6.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,7.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/0,8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/0,8.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/1,0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/1,0.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/1,1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/1,1.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/1,2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/1,2.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/1,3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/1,3.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/1,4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/1,4.png -------------------------------------------------------------------------------- /src/main/resources/assets/powersuits/textures/sebkicons/1,5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/QMXTech/MachineMusePowersuits/e4c54a8bcb4e08514402123d76ccfcc86d297578/src/main/resources/assets/powersuits/textures/sebkicons/1,5.png -------------------------------------------------------------------------------- /src/main/resources/dependencies.info: -------------------------------------------------------------------------------- 1 | { 2 | "repo": "http://files.qmxtech.com/libs", 3 | "file": "slick-util-0.0b9db0b2.jar", 4 | "class": "org.newdawn.slick.TrueTypeFont", 5 | "coreLib": "true" 6 | } -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [{ 2 | "modid": "powersuits", 3 | "name": "MachineMuse's Modular Powersuits", 4 | "description": "A mod which adds modular power armor, power tool, and a tinker table to configure them. Uses ThermalExpansion or IC2 for energy.", 5 | "version": "${version}", 6 | "mcversion": "${mcversion}", 7 | "url": "http://machinemuse.net/", 8 | "updateUrl": "", 9 | "authors": [ "MachineMuse" ], 10 | "credits": "Code by MachineMuse, Icons by WaterCandle, Modeling by SebK. Rewrites, continued bugfixes and new features by Korynkai (Matt Schultz) of QMXTech.", 11 | "logoFile": "/mods/mmmPowersuits/textures/mmmpslogo_64.png", 12 | "screenshots": [ ], 13 | "parent": "", 14 | "requiredMods": [ "Forge", "Numina" ], 15 | "dependencies": [ ] 16 | }] -------------------------------------------------------------------------------- /src/main/resources/numina_at.cfg: -------------------------------------------------------------------------------- 1 | public net.minecraft.network.NetHandlerPlayServer field_147365_f #floatingtickCount 2 | public net.minecraft.client.settings.KeyBinding field_74514_b #hash 3 | public net.minecraft.client.settings.KeyBinding field_74516_a #keybindArray -------------------------------------------------------------------------------- /src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "pack_format": 1, 4 | "description": "Resources used for Modular Powersuits" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/IModularItem.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api; 2 | 3 | import java.util.List; 4 | 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.item.ItemStack; 7 | 8 | /** 9 | * Interface for ItemPowerArmor and ItemPowerTool to share. 10 | * 11 | * @author MachineMuse 12 | */ 13 | public interface IModularItem 14 | { 15 | 16 | /** 17 | * Gets the item's extended summary for displaying in the gui. 18 | * 19 | * @param stack 20 | * @return 21 | */ 22 | public List getLongInfo(EntityPlayer player, ItemStack stack); 23 | 24 | /** 25 | * Returns the amount of energy contained in the player's inventory. 26 | * 27 | * @param player 28 | * @return 29 | */ 30 | public double getPlayerEnergy(EntityPlayer player); 31 | 32 | /** 33 | * Drains the amount of energy from the player's inventory. 34 | * 35 | * @param player 36 | * @return 37 | */ 38 | public void drainPlayerEnergy(EntityPlayer player, double drainAmount); 39 | 40 | /** 41 | * Adds the amount of energy to the player's inventory. 42 | * 43 | * @param player 44 | * @return 45 | */ 46 | public void givePlayerEnergy(EntityPlayer player, double joulesToGive); 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/IPowerModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api; 2 | 3 | import net.minecraft.client.renderer.texture.IIconRegister; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.nbt.NBTTagCompound; 6 | import net.minecraft.util.IIcon; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | public interface IPowerModule { 12 | public abstract List getInstallCost(); 13 | 14 | public abstract IIcon getIcon(ItemStack item); 15 | 16 | public abstract String getStitchedTexture(ItemStack item); 17 | 18 | public abstract void registerIcon(IIconRegister registry); 19 | 20 | public abstract String getCategory(); 21 | 22 | public abstract boolean isValidForItem(ItemStack stack); 23 | 24 | public abstract String getDataName(); 25 | 26 | public abstract String getLocalizedName(); 27 | 28 | public abstract double applyPropertyModifiers(NBTTagCompound itemTag, String propertyName, double propertyValue); 29 | 30 | public abstract NBTTagCompound getNewTag(); 31 | 32 | public abstract String getDescription(); 33 | 34 | public abstract Map> getPropertyModifiers(); 35 | 36 | public abstract boolean isAllowed(); 37 | 38 | public abstract boolean isCreativeOnly(); 39 | } 40 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/IPropertyModifier.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api; 2 | 3 | import net.minecraft.nbt.NBTTagCompound; 4 | 5 | public interface IPropertyModifier { 6 | public double applyModifier(NBTTagCompound moduleTag, double value); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/MuseItemTag.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api 2 | 3 | import net.minecraft.nbt.NBTTagCompound 4 | import net.minecraft.item.ItemStack 5 | import java.lang.String 6 | import net.machinemuse.numina.scala.OptionCast 7 | import net.machinemuse.numina.item.ModeChangingItem 8 | import net.minecraft.entity.player.EntityPlayer 9 | 10 | /** 11 | * Author: MachineMuse (Claire Semple) 12 | * Created: 6:58 PM, 8/6/13 13 | */ 14 | object MuseItemTag { 15 | final val NBTPREFIX: String = "mmmpsmod" 16 | 17 | /** 18 | * Gets or creates stack.getTagCompound().getTag(NBTPREFIX) 19 | * 20 | * @param stack 21 | * @return an NBTTagCompound, may be newly created. If stack is null, 22 | * returns null. 23 | */ 24 | def getMuseItemTag(stack: ItemStack): NBTTagCompound = { 25 | if (stack == null) { 26 | return null 27 | } 28 | val stackTag: NBTTagCompound = if (stack.hasTagCompound) stack.getTagCompound else new NBTTagCompound 29 | stack.setTagCompound(stackTag) 30 | val properties: NBTTagCompound = if (stackTag.hasKey(NBTPREFIX)) stackTag.getCompoundTag(NBTPREFIX) else new NBTTagCompound 31 | stackTag.setTag(NBTPREFIX, properties) 32 | 33 | properties 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/electricity/ElectricConversions.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api.electricity 2 | 3 | import net.minecraft.item.ItemStack 4 | import net.machinemuse.powersuits.common.ModCompatability 5 | import net.machinemuse.api.ModuleManager 6 | 7 | /** 8 | * Author: MachineMuse (Claire Semple) 9 | * Created: 4:51 AM, 4/28/13 10 | */ 11 | object ElectricConversions { 12 | // IC2 13 | final val IC2_TIER: String = "IC2 Tier" 14 | 15 | def getTier(stack: ItemStack): Int = ModuleManager.computeModularProperty(stack, IC2_TIER).toInt 16 | 17 | def museEnergyToEU(museEnergy: Double): Double = museEnergy / ModCompatability.getIC2Ratio 18 | 19 | def museEnergyFromEU(eu: Double): Double = eu * ModCompatability.getIC2Ratio 20 | 21 | // TE 22 | def museEnergyToRF(museEnergy: Double): Int = Math.ceil(museEnergy / ModCompatability.getRFRatio).toInt 23 | 24 | def museEnergyFromRF(rf: Int): Double = rf * ModCompatability.getRFRatio 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/moduletrigger/IBlockBreakingModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api.moduletrigger; 2 | 3 | import net.machinemuse.api.IPowerModule; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.entity.player.EntityPlayer; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraft.world.World; 8 | import net.minecraftforge.event.entity.player.PlayerEvent; 9 | 10 | public interface IBlockBreakingModule extends IPowerModule { 11 | /** 12 | * Return true if using the tool allows the block to drop as an item (e.g. diamond pickaxe on obsidian) 13 | * 14 | * @param stack IC2ItemTest being used as a tool 15 | * @param block Block being checked for breakability 16 | * @param meta Metadata of the block being checked 17 | * @param player Player doing the breaking 18 | * @return True if the player can harvest the block, false if not 19 | */ 20 | boolean canHarvestBlock(ItemStack stack, Block block, int meta, EntityPlayer player); 21 | 22 | public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityPlayer player); 23 | 24 | public void handleBreakSpeed(PlayerEvent.BreakSpeed event); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/moduletrigger/IPlayerTickModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api.moduletrigger; 2 | 3 | import net.machinemuse.api.IPowerModule; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.item.ItemStack; 6 | 7 | public interface IPlayerTickModule extends IPowerModule { 8 | public void onPlayerTickActive(EntityPlayer player, ItemStack item); 9 | 10 | public void onPlayerTickInactive(EntityPlayer player, ItemStack item); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/moduletrigger/IRightClickModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api.moduletrigger; 2 | 3 | import net.machinemuse.api.IPowerModule; 4 | import net.minecraft.entity.player.EntityPlayer; 5 | import net.minecraft.item.ItemStack; 6 | import net.minecraft.world.World; 7 | 8 | public interface IRightClickModule extends IPowerModule { 9 | public void onRightClick(EntityPlayer playerClicking, World world, ItemStack item); 10 | 11 | public void onItemUse( 12 | ItemStack itemStack, EntityPlayer player, World world, 13 | int x, int y, int z, 14 | int side, float hitX, float hitY, float hitZ); 15 | 16 | public boolean onItemUseFirst( 17 | ItemStack itemStack, EntityPlayer player, World world, 18 | int x, int y, int z, 19 | int side, float hitX, float hitY, float hitZ); 20 | 21 | public void onPlayerStoppedUsing(ItemStack itemStack, World world, EntityPlayer player, int par4); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/api/moduletrigger/IToggleableModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.api.moduletrigger; 2 | 3 | import net.machinemuse.api.IPowerModule; 4 | 5 | public interface IToggleableModule extends IPowerModule { 6 | 7 | } 8 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/EnergyMeter.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui; 2 | 3 | import net.machinemuse.numina.geometry.Colour; 4 | import net.machinemuse.numina.render.MuseTextureUtils; 5 | import net.machinemuse.numina.render.RenderState; 6 | import net.machinemuse.utils.render.MuseRenderer; 7 | import net.minecraft.block.Block; 8 | import net.minecraft.init.Blocks; 9 | import net.minecraft.util.IIcon; 10 | import org.lwjgl.opengl.GL11; 11 | 12 | public class EnergyMeter extends HeatMeter { 13 | public void draw(double xpos, double ypos, double value) { 14 | MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT()); 15 | IIcon icon = Blocks.water.getIcon(0, 0); 16 | GL11.glLineWidth(0.5f); 17 | RenderState.on2D(); 18 | RenderState.blendingOn(); 19 | if (value < 0.0001) { 20 | Colour.RED.doGL(); 21 | } else if (Math.random() / value < 1) { 22 | RenderState.texturelessOn(); 23 | MuseRenderer.drawMPDLightning(xpos + xsize * (Math.random() / 2 + 0.25), ypos + ysize * (1 - value), 1, xpos + xsize 24 | * (Math.random() / 2 + 0.25), ypos + ysize, 1, Colour.WHITE, 4, 1); 25 | RenderState.texturelessOff(); 26 | } 27 | drawFluid(xpos, ypos, value, icon); 28 | drawGlass(xpos, ypos); 29 | RenderState.blendingOff(); 30 | RenderState.off2D(); 31 | MuseTextureUtils.popTexture(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/HeatMeter.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui; 2 | 3 | import net.machinemuse.numina.geometry.Colour; 4 | import net.machinemuse.numina.render.MuseIconUtils; 5 | import net.machinemuse.numina.render.MuseTextureUtils; 6 | import net.machinemuse.numina.render.RenderState; 7 | import net.machinemuse.powersuits.common.Config; 8 | import net.minecraft.block.Block; 9 | import net.minecraft.init.Blocks; 10 | import net.minecraft.util.IIcon; 11 | import org.lwjgl.opengl.GL11; 12 | 13 | public class HeatMeter { 14 | int xsize = 8; 15 | int ysize = 32; 16 | 17 | public void draw(double xpos, double ypos, double value) { 18 | MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT()); 19 | RenderState.blendingOn(); 20 | RenderState.on2D(); 21 | IIcon icon = Blocks.lava.getIcon(0, 0); 22 | drawFluid(xpos, ypos, value, icon); 23 | drawGlass(xpos, ypos); 24 | RenderState.off2D(); 25 | RenderState.blendingOff(); 26 | MuseTextureUtils.popTexture(); 27 | } 28 | 29 | public void drawFluid(double xpos, double ypos, double value, IIcon icon) { 30 | 31 | double bottomY = (ypos + ysize); 32 | double topY = (ypos + ysize * (1 - value)); 33 | GL11.glPushMatrix(); 34 | GL11.glScaled(0.5, 0.5, 0.5); 35 | while (bottomY - 8 > topY) { 36 | MuseIconUtils.drawIconAt(xpos * 2, (bottomY - 8) * 2, icon, Colour.WHITE); 37 | bottomY -= 8; 38 | } 39 | MuseIconUtils.drawIconPartial(xpos * 2, (bottomY - 8) * 2, icon, Colour.WHITE, 0, (topY - bottomY + 8) * 2, 16, 16); 40 | GL11.glPopMatrix(); 41 | } 42 | 43 | public void drawGlass(double xpos, double ypos) { 44 | MuseTextureUtils.pushTexture(Config.GLASS_TEXTURE()); 45 | GL11.glBegin(GL11.GL_QUADS); 46 | GL11.glTexCoord2d(0, 0); 47 | GL11.glVertex2d(xpos, ypos); 48 | GL11.glTexCoord2d(0, 1); 49 | GL11.glVertex2d(xpos, ypos + ysize); 50 | GL11.glTexCoord2d(1, 1); 51 | GL11.glVertex2d(xpos + xsize, ypos + ysize); 52 | GL11.glTexCoord2d(1, 0); 53 | GL11.glVertex2d(xpos + xsize, ypos); 54 | GL11.glEnd(); 55 | MuseTextureUtils.popTexture(); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/KeyConfigGui.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui; 2 | 3 | import net.machinemuse.general.gui.frame.TabSelectFrame; 4 | import net.machinemuse.numina.geometry.MusePoint2D; 5 | import net.machinemuse.general.gui.frame.KeybindConfigFrame; 6 | import net.machinemuse.powersuits.control.KeybindManager; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | 9 | public class KeyConfigGui extends MuseGui { 10 | private EntityPlayer player; 11 | protected KeybindConfigFrame frame; 12 | protected int worldx; 13 | protected int worldy; 14 | protected int worldz; 15 | 16 | public KeyConfigGui(EntityPlayer player, int x, int y, int z) { 17 | super(); 18 | KeybindManager.readInKeybinds(); 19 | this.player = player; 20 | this.xSize = 256; 21 | this.ySize = 226; 22 | this.worldx = x; 23 | this.worldy = y; 24 | this.worldz = z; 25 | } 26 | 27 | /** 28 | * Add the buttons (and other controls) to the screen. 29 | */ 30 | @Override 31 | public void initGui() { 32 | super.initGui(); 33 | frame = new KeybindConfigFrame(this, 34 | new MusePoint2D(absX(-0.95), absY(-0.95)), 35 | new MusePoint2D(absX(0.95), absY(0.95)), player); 36 | frames.add(frame); 37 | 38 | TabSelectFrame tabFrame = new TabSelectFrame(player, new MusePoint2D(absX(-0.95F), absY(-1.05f)),new MusePoint2D(absX(0.95F), absY(-0.95f)), worldx, worldy, worldz); 39 | frames.add(tabFrame); 40 | } 41 | 42 | @Override 43 | public void handleKeyboardInput() { 44 | super.handleKeyboardInput(); 45 | frame.handleKeyboard(); 46 | } 47 | 48 | @Override 49 | public void onGuiClosed() { 50 | super.onGuiClosed(); 51 | KeybindManager.writeOutKeybinds(); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/RenderPlayerAPIRequiredDisplayException.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui 2 | 3 | import net.minecraft.client.gui.{GuiErrorScreen, FontRenderer} 4 | import net.minecraft.util.StatCollector 5 | import cpw.mods.fml.client.CustomModLoadingErrorDisplayException 6 | 7 | class RenderPlayerAPIRequiredDisplayException extends CustomModLoadingErrorDisplayException { 8 | override def initGui(errorScreen: GuiErrorScreen, fontRenderer: FontRenderer) { 9 | } 10 | 11 | override def drawScreen(errorScreen: GuiErrorScreen, fontRenderer: FontRenderer, mouseRelX: Int, mouseRelY: Int, tickTime: Float) { 12 | errorScreen.drawDefaultBackground 13 | var offset: Int = 75 14 | errorScreen.drawCenteredString(fontRenderer, StatCollector.translateToLocal("powersuits.exceptionRenderPlayerAPI.lineone"), 15 | errorScreen.width / 2, offset, 0xFFFFFF) 16 | offset += 25 17 | errorScreen.drawCenteredString(fontRenderer, StatCollector.translateToLocal("powersuits.exceptionRenderPlayerAPI.linetwo"), 18 | errorScreen.width / 2, offset, 0xEEEEEE) 19 | offset += 15 20 | errorScreen.drawCenteredString(fontRenderer, StatCollector.translateToLocal("powersuits.exceptionRenderPlayerAPI.linethree"), 21 | errorScreen.width / 2, offset, 0xEEEEEE) 22 | offset += 15 23 | errorScreen.drawCenteredString(fontRenderer, StatCollector.translateToLocal("powersuits.exceptionRenderPlayerAPI.linefour"), 24 | errorScreen.width / 2, offset, 0xEEEEEE) 25 | offset += 25 26 | errorScreen.drawCenteredString(fontRenderer, StatCollector.translateToLocal("powersuits.exceptionRenderPlayerAPI.linefive"), 27 | errorScreen.width / 2, offset, 0xFFFFFF) 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/clickable/Clickable.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.clickable; 2 | 3 | import net.machinemuse.numina.geometry.MusePoint2D; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * Defines a generic clickable item for a MuseGui. 9 | * 10 | * @author MachineMuse 11 | */ 12 | public abstract class Clickable implements IClickable { 13 | protected MusePoint2D position; 14 | 15 | public Clickable() { 16 | position = new MusePoint2D(0, 0); 17 | } 18 | 19 | public Clickable(MusePoint2D point) { 20 | position = point; 21 | } 22 | 23 | @Override 24 | public MusePoint2D getPosition() { 25 | return position; 26 | } 27 | 28 | public void setPosition(MusePoint2D position) { 29 | this.position = position; 30 | } 31 | 32 | @Override 33 | public void move(double x, double y) { 34 | this.position.setX(x); 35 | this.position.setY(y); 36 | } 37 | 38 | @Override 39 | public List getToolTip() { 40 | return null; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/clickable/ClickableItem.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.clickable; 2 | 3 | import net.machinemuse.numina.geometry.Colour; 4 | import net.machinemuse.numina.geometry.MusePoint2D; 5 | import net.machinemuse.utils.render.MuseRenderer; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.client.renderer.entity.RenderItem; 8 | import net.minecraft.item.ItemStack; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * Extends the Clickable class to add a clickable IC2ItemTest - note that this 14 | * will be a button that looks like the item, not a container slot. 15 | * 16 | * @author MachineMuse 17 | */ 18 | public class ClickableItem extends Clickable { 19 | public static final int offsetx = 8; 20 | public static final int offsety = 8; 21 | public static RenderItem itemRenderer; 22 | public int inventorySlot; 23 | protected ItemStack item; 24 | 25 | public ClickableItem(ItemStack item, MusePoint2D pos, int inventorySlot) { 26 | super(pos); 27 | this.inventorySlot = inventorySlot; 28 | this.item = item; 29 | } 30 | 31 | public ItemStack getItem() { 32 | return item; 33 | } 34 | 35 | @Override 36 | public boolean hitBox(double x, double y) { 37 | boolean hitx = Math.abs(x - getPosition().x()) < offsetx; 38 | boolean hity = Math.abs(y - getPosition().y()) < offsety; 39 | return hitx && hity; 40 | } 41 | 42 | @Override 43 | public List getToolTip() { 44 | return item.getTooltip(Minecraft.getMinecraft().thePlayer, false); 45 | } 46 | 47 | /** 48 | * Draws the specified itemstack at the *relative* coordinates x,y. Used 49 | * mainly in clickables. 50 | */ 51 | @Override 52 | public void draw() { 53 | MuseRenderer.drawItemAt( 54 | getPosition().x() - offsetx, 55 | getPosition().y() - offsety, item); 56 | if (inventorySlot > 35 || Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem() == item) { 57 | MuseRenderer.drawString("e", getPosition().x() + 3, getPosition().y() + 1, Colour.DARKGREEN); 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/clickable/ClickableLabel.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.clickable; 2 | 3 | import net.machinemuse.numina.geometry.MusePoint2D; 4 | import net.machinemuse.utils.render.MuseRenderer; 5 | 6 | import java.util.List; 7 | 8 | public class ClickableLabel implements IClickable { 9 | protected String label; 10 | protected MusePoint2D position; 11 | 12 | public ClickableLabel(String label, MusePoint2D position) { 13 | this.label = label; 14 | this.position = position; 15 | } 16 | 17 | /* 18 | * (non-Javadoc) 19 | * 20 | * @see 21 | * machinemuse.powersuits.gui.Clickable#draw(net.minecraft.client.renderer 22 | * .RenderEngine, machinemuse.powersuits.gui.MuseGui) 23 | */ 24 | @Override 25 | public void draw() { 26 | MuseRenderer.drawCenteredString(this.label, position.x(), 27 | position.y() - 4); 28 | } 29 | 30 | @Override 31 | public boolean hitBox(double x, double y) { 32 | return false; 33 | } 34 | 35 | /* 36 | * (non-Javadoc) 37 | * 38 | * @see machinemuse.powersuits.gui.Clickable#getToolTip() 39 | */ 40 | @Override 41 | public List getToolTip() { 42 | return null; 43 | } 44 | 45 | @Override 46 | public void move(double x, double y) { 47 | this.position.setX(x); 48 | this.position.setY(y); 49 | } 50 | 51 | @Override 52 | public MusePoint2D getPosition() { 53 | return position; 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/clickable/ClickableSlider.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.clickable 2 | 3 | import java.lang.String 4 | import net.machinemuse.numina.general.MuseMathUtils 5 | import net.machinemuse.utils.render.MuseRenderer 6 | import net.machinemuse.numina.geometry.{Colour, DrawableMuseRect, MusePoint2D} 7 | 8 | /** 9 | * Author: MachineMuse (Claire Semple) 10 | * Created: 7:08 AM, 06/05/13 11 | */ 12 | class ClickableSlider(val pos: MusePoint2D, val width: Double, val name: String) extends Clickable { 13 | this.position = pos 14 | val cornersize: Int = 3 15 | val insideRect = new DrawableMuseRect(position.x - width / 2.0 - cornersize, position.y + 8, 0, position.y + 16, Colour.LIGHTBLUE, Colour.ORANGE) 16 | val outsideRect = new DrawableMuseRect(position.x - width / 2.0 - cornersize, position.y + 8, position.x + width / 2.0 + cornersize, position.y + 16, Colour.LIGHTBLUE, Colour.DARKBLUE) 17 | 18 | override def draw() { 19 | MuseRenderer.drawCenteredString(name, position.x, position.y) 20 | this.insideRect.setRight(position.x + width * (value - 0.5) + cornersize) 21 | this.outsideRect.draw() 22 | this.insideRect.draw() 23 | } 24 | 25 | def hitBox(x: Double, y: Double): Boolean = { 26 | Math.abs(position.x - x) < width / 2 && 27 | Math.abs(position.y + 12 - y) < 4 28 | } 29 | 30 | var value: Double = 0 31 | 32 | def setValueByX(x: Double) { 33 | val v = (x - pos.x) / width + 0.5 34 | value = MuseMathUtils.clampDouble(v, 0, 1) 35 | } 36 | 37 | def setValue(v: Double) { 38 | value = v 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/clickable/ClickableTinkerSlider.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.clickable; 2 | 3 | import net.machinemuse.numina.geometry.MusePoint2D; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | public class ClickableTinkerSlider extends ClickableSlider { 7 | public NBTTagCompound moduleTag; 8 | 9 | public ClickableTinkerSlider(MusePoint2D topmiddle, double width, NBTTagCompound moduleTag, String name) { 10 | super(topmiddle, width, name); 11 | this.moduleTag = moduleTag; 12 | } 13 | 14 | 15 | @Override 16 | public double value() { 17 | double val = 0; 18 | if (moduleTag.hasKey(name())) { 19 | val = moduleTag.getDouble(name()); 20 | } 21 | return val; 22 | } 23 | 24 | public void moveSlider(double x, double y) { 25 | double xval = position.x() - x; 26 | double xratio = 0.5 - (xval / width()); 27 | xratio = Math.max(Math.min(xratio, 1.0), 0.0); // Clamp 28 | moduleTag.setDouble(name(), xratio); 29 | 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/clickable/IClickable.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.clickable; 2 | 3 | import java.util.List; 4 | 5 | import net.machinemuse.numina.geometry.MusePoint2D; 6 | 7 | public interface IClickable { 8 | 9 | public abstract void draw(); 10 | 11 | public abstract void move(double x, double y); 12 | 13 | public abstract MusePoint2D getPosition(); 14 | 15 | public abstract boolean hitBox(double x, double y); 16 | 17 | public abstract List getToolTip(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/frame/IGuiFrame.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.frame; 2 | 3 | import java.util.List; 4 | 5 | public interface IGuiFrame { 6 | 7 | public abstract void onMouseDown(double x, double y, int button); 8 | 9 | public abstract void onMouseUp(double x, double y, int button); 10 | 11 | public abstract void update(double mousex, double mousey); 12 | 13 | public abstract void draw(); 14 | 15 | public abstract List getToolTip(int x, int y); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/frame/ModuleSelectionSubFrame.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.frame; 2 | 3 | import net.machinemuse.api.IPowerModule; 4 | import net.machinemuse.numina.geometry.MusePoint2D; 5 | import net.machinemuse.numina.geometry.MuseRect; 6 | import net.machinemuse.numina.geometry.MuseRelativeRect; 7 | import net.machinemuse.general.gui.clickable.ClickableModule; 8 | import net.machinemuse.utils.render.MuseRenderer; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | public class ModuleSelectionSubFrame { 14 | protected List moduleButtons; 15 | protected MuseRelativeRect border; 16 | protected String category; 17 | 18 | public ModuleSelectionSubFrame(String category, MuseRelativeRect border) { 19 | this.category = category; 20 | this.border = border; 21 | this.moduleButtons = new ArrayList(); 22 | } 23 | 24 | // public void draw() { 25 | // MuseRenderer.drawString(this.category, border.left(), border.top()); 26 | // for (ClickableModule clickie : moduleButtons) { 27 | // clickie.draw(); 28 | // } 29 | // } 30 | 31 | public ClickableModule addModule(IPowerModule module) { 32 | ClickableModule clickie = new ClickableModule(module, new MusePoint2D(0, 0)); 33 | this.moduleButtons.add(clickie); 34 | refreshButtonPositions(); 35 | return clickie; 36 | } 37 | 38 | public void drawPartial(int min, int max) { 39 | refreshButtonPositions(); 40 | double top = border.top(); 41 | MuseRenderer.drawString(this.category, border.left(), top); 42 | for (ClickableModule clickie : moduleButtons) { 43 | clickie.drawPartial(border.left(), min, border.right(), max); 44 | } 45 | } 46 | 47 | public void refreshButtonPositions() { 48 | int i = 0, j = 0; 49 | for (ClickableModule clickie : moduleButtons) { 50 | if (i > 4) { 51 | i = 0; 52 | j++; 53 | } 54 | double x = border.left() + 8 + 16 * i; 55 | double y = border.top() + 16 + 16 * j; 56 | clickie.move(x, y); 57 | i++; 58 | } 59 | border.setHeight(28 + 16 * j); 60 | } 61 | 62 | public MuseRect getBorder() { 63 | return border; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/frame/StatsFrame.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.frame; 2 | 3 | import net.machinemuse.general.NBTTagAccessor; 4 | import net.machinemuse.numina.geometry.Colour; 5 | import net.machinemuse.numina.geometry.MusePoint2D; 6 | import net.machinemuse.utils.MuseItemUtils; 7 | import net.machinemuse.utils.render.MuseRenderer; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraft.nbt.NBTTagCompound; 10 | import org.lwjgl.opengl.GL11; 11 | 12 | import java.util.List; 13 | import java.util.Set; 14 | 15 | public class StatsFrame extends ScrollableFrame { 16 | protected NBTTagCompound properties; 17 | protected ItemStack stack; 18 | protected Set propertiesToList; 19 | 20 | public StatsFrame(MusePoint2D topleft, MusePoint2D bottomright, 21 | Colour borderColour, Colour insideColour, ItemStack stack) { 22 | super(topleft, bottomright, borderColour, insideColour); 23 | this.stack = stack; 24 | this.properties = MuseItemUtils.getMuseItemTag(stack); 25 | this.propertiesToList = NBTTagAccessor.getMap(properties).keySet(); 26 | } 27 | 28 | @Override 29 | public void draw() { 30 | GL11.glPushMatrix(); 31 | super.draw(); 32 | int xoffset = 8; 33 | int yoffset = 8; 34 | int i = 0; 35 | for (String propName : propertiesToList) { 36 | double propValue = MuseItemUtils.getDoubleOrZero(properties, propName); 37 | String propValueString = String.format("%.2f", propValue); 38 | double strlen = MuseRenderer.getStringWidth(propValueString); 39 | MuseRenderer.drawString(propName, border.left() + xoffset, border.top() + yoffset + i * 10); 40 | MuseRenderer.drawString(propValueString, border.bottom() - xoffset - strlen - 40, border.top() + yoffset + i * 10); 41 | i++; 42 | } 43 | GL11.glPopMatrix(); 44 | 45 | } 46 | 47 | @Override 48 | public void onMouseDown(double x, double y, int button) { 49 | // TODO Auto-generated method stub 50 | 51 | } 52 | 53 | @Override 54 | public void onMouseUp(double x, double y, int button) { 55 | // TODO Auto-generated method stub 56 | 57 | } 58 | 59 | @Override 60 | public List getToolTip(int x, int y) { 61 | // TODO Auto-generated method stub 62 | return null; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/gui/frame/TabSelectFrame.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.gui.frame 2 | 3 | import net.machinemuse.numina.geometry.MusePoint2D 4 | import java.util 5 | import net.machinemuse.powersuits.common.ModularPowersuits 6 | import net.machinemuse.general.gui.clickable.ClickableButton 7 | import net.minecraft.entity.player.EntityPlayer 8 | import net.minecraft.util.StatCollector 9 | 10 | /** 11 | * @author MachineMuse 12 | */ 13 | class TabSelectFrame(p: EntityPlayer, topleft: MusePoint2D, bottomright: MusePoint2D, 14 | worldx: Int, worldy: Int, worldz: Int) 15 | extends IGuiFrame { 16 | val buttons = Array( 17 | (new ClickableButton(StatCollector.translateToLocal("tile.tinkerTable.ui.tinker"), topleft.midpoint(bottomright).minus(100, 0), worldy < 256 && worldy > 0), 0), 18 | (new ClickableButton(StatCollector.translateToLocal("tile.tinkerTable.ui.keybinds"), topleft.midpoint(bottomright), true), 1), 19 | (new ClickableButton(StatCollector.translateToLocal("tile.tinkerTable.ui.visual"), topleft.midpoint(bottomright).plus(100, 0), true), 3) 20 | ) 21 | 22 | def onMouseDown(x: Double, y: Double, button: Int): Unit = { 23 | for (b <- buttons) { 24 | if (b._1.isEnabled && b._1.hitBox(x, y)) { 25 | p.openGui(ModularPowersuits, b._2, p.worldObj, worldx, worldy, worldz) 26 | } 27 | } 28 | } 29 | 30 | def onMouseUp(x: Double, y: Double, button: Int): Unit = {} 31 | 32 | def update(mousex: Double, mousey: Double): Unit = {} 33 | 34 | def draw(): Unit = for (b <- buttons) { 35 | b._1.draw() 36 | } 37 | 38 | val toolTip = new util.ArrayList[String]() 39 | 40 | def getToolTip(x: Int, y: Int): util.List[String] = null 41 | } 42 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/general/sound/SoundLoader.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.general.sound; 2 | 3 | public final class SoundLoader { 4 | /** 5 | * Sound resource identifiers. 6 | */ 7 | private static final String SOUND_PREFIX = "powersuits:"; 8 | public static final String SOUND_GLIDER = SOUND_PREFIX + "Glider"; 9 | public static final String SOUND_GUI_INSTALL = SOUND_PREFIX + "GUIInstall"; 10 | public static final String SOUND_GUI_SELECT = SOUND_PREFIX + "GUISelect"; 11 | public static final String SOUND_JETBOOTS = SOUND_PREFIX + "JetBoots"; 12 | public static final String SOUND_JETPACK = SOUND_PREFIX + "Jetpack"; 13 | public static final String SOUND_JUMP_ASSIST = SOUND_PREFIX + "JumpAssist"; 14 | public static final String SOUND_SWIMASSIST = SOUND_PREFIX + "SwimAssist"; 15 | public static final String SOUND_ELECTROLYZER = SOUND_PREFIX + "WaterElectrolyzer"; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/block/TileEntityLuxCapacitor.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.block; 2 | 3 | import net.machinemuse.numina.general.MuseLogger; 4 | import net.machinemuse.numina.tileentity.MuseTileEntity; 5 | import net.minecraft.nbt.NBTTagCompound; 6 | import net.minecraftforge.common.util.ForgeDirection; 7 | 8 | public class TileEntityLuxCapacitor extends MuseTileEntity { 9 | public double red; 10 | public double green; 11 | public double blue; 12 | 13 | public TileEntityLuxCapacitor() { 14 | side = ForgeDirection.DOWN; 15 | red = 0; 16 | green = 0.2; 17 | blue = 0.9; 18 | } 19 | 20 | public TileEntityLuxCapacitor(ForgeDirection side, double red, double green, double blue) { 21 | this.side = side; 22 | this.red = red; 23 | this.green = green; 24 | this.blue = blue; 25 | } 26 | 27 | @Override 28 | public void writeToNBT(NBTTagCompound nbt) { 29 | super.writeToNBT(nbt); 30 | nbt.setInteger("s", side.ordinal()); 31 | nbt.setDouble("r", red); 32 | nbt.setDouble("g", green); 33 | nbt.setDouble("b", blue); 34 | 35 | } 36 | 37 | @Override 38 | public void readFromNBT(NBTTagCompound nbt) { 39 | super.readFromNBT(nbt); 40 | if (nbt.hasKey("s")) { 41 | side = ForgeDirection.values()[nbt.getInteger("s")]; 42 | } else { 43 | MuseLogger.logDebug("No NBT found! D:"); 44 | } 45 | if (nbt.hasKey("r")) { 46 | red = nbt.getDouble("r"); 47 | } else { 48 | MuseLogger.logDebug("No NBT found! D:"); 49 | } 50 | if (nbt.hasKey("g")) { 51 | green = nbt.getDouble("g"); 52 | } else { 53 | MuseLogger.logDebug("No NBT found! D:"); 54 | } 55 | if (nbt.hasKey("b")) { 56 | blue = nbt.getDouble("b"); 57 | } else { 58 | MuseLogger.logDebug("No NBT found! D:"); 59 | } 60 | } 61 | 62 | public ForgeDirection side; 63 | 64 | @Override 65 | public boolean canUpdate() { 66 | return false; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/block/TileEntityTinkerTable.scala: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package net.machinemuse.powersuits.block 5 | 6 | import net.minecraft.tileentity.TileEntity 7 | 8 | /** 9 | * @author MachineMuse 10 | * 11 | */ 12 | class TileEntityTinkerTable extends TileEntity { 13 | override def canUpdate = false 14 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/entity/MuseRender.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.entity; 2 | 3 | import net.minecraft.client.renderer.entity.Render; 4 | import net.minecraft.entity.Entity; 5 | import net.minecraft.util.ResourceLocation; 6 | 7 | /** 8 | * Author: MachineMuse (Claire Semple) 9 | * Created: 4:31 PM, 8/3/13 10 | */ 11 | public abstract class MuseRender extends Render { 12 | 13 | @Override 14 | protected ResourceLocation getEntityTexture(Entity entity) { 15 | return null; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/entity/RenderLuxCapacitorEntity.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.entity; 2 | 3 | import net.machinemuse.numina.geometry.Colour; 4 | import net.machinemuse.numina.render.MuseTextureUtils; 5 | import net.machinemuse.numina.render.RenderState; 6 | import net.machinemuse.powersuits.common.Config; 7 | import net.machinemuse.powersuits.entity.EntityLuxCapacitor; 8 | import net.minecraft.entity.Entity; 9 | import net.minecraft.util.ResourceLocation; 10 | import net.minecraftforge.client.model.AdvancedModelLoader; 11 | import net.minecraftforge.client.model.obj.WavefrontObject; 12 | 13 | import static org.lwjgl.opengl.GL11.*; 14 | 15 | public class RenderLuxCapacitorEntity extends MuseRender { 16 | protected static WavefrontObject lightmodel; 17 | protected static WavefrontObject framemodel; 18 | 19 | public static WavefrontObject getLightModel() { 20 | if (lightmodel == null) { 21 | lightmodel = (WavefrontObject) AdvancedModelLoader.loadModel(new ResourceLocation(Config.RESOURCE_PREFIX() + "models/lightCore.obj")); 22 | } 23 | return lightmodel; 24 | } 25 | 26 | public static WavefrontObject getFrameModel() { 27 | if (framemodel == null) { 28 | framemodel = (WavefrontObject) AdvancedModelLoader.loadModel(new ResourceLocation(Config.RESOURCE_PREFIX() + "models/lightBase.obj")); 29 | } 30 | return framemodel; 31 | } 32 | 33 | @Override 34 | public void doRender(Entity undifferentiatedentity, double x, double y, double z, float yaw, float partialTickTime) { 35 | EntityLuxCapacitor entity = (EntityLuxCapacitor) undifferentiatedentity; 36 | MuseTextureUtils.pushTexture(Config.TEXTURE_PREFIX() + "models/thusters_uvw_2.png"); 37 | glPushMatrix(); 38 | glTranslated(x, y, z); 39 | double scale = 0.0625; 40 | glScaled(scale, scale, scale); 41 | getFrameModel().renderAll(); 42 | RenderState.glowOn(); 43 | new Colour(entity.red, entity.green, entity.blue, 1.0).doGL(); 44 | getLightModel().renderAll(); 45 | RenderState.glowOff(); 46 | glPopMatrix(); 47 | MuseTextureUtils.popTexture(); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/entity/RenderSpinningBlade.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.entity; 2 | 3 | import net.machinemuse.numina.render.MuseTextureUtils; 4 | import net.machinemuse.powersuits.common.Config; 5 | import net.minecraft.entity.Entity; 6 | 7 | import static org.lwjgl.opengl.GL11.*; 8 | 9 | public class RenderSpinningBlade extends MuseRender { 10 | 11 | @Override 12 | public void doRender(Entity entity, double x, double y, double z, float yaw, float partialticktime) { 13 | 14 | glPushMatrix(); 15 | glPushAttrib(GL_ENABLE_BIT); 16 | glDisable(GL_CULL_FACE); 17 | MuseTextureUtils.pushTexture(Config.TEXTURE_PREFIX() + "items/spinningblade.png"); 18 | glTranslated(x, y, z); 19 | double motionscale = Math.sqrt(entity.motionZ * entity.motionZ + entity.motionX * entity.motionX); 20 | glRotatef(90, 1, 0, 0); 21 | glRotatef(-entity.rotationPitch, (float) (entity.motionZ / 22 | motionscale), 0.0f, (float) (-entity.motionX / motionscale)); 23 | int time = (int) System.currentTimeMillis() % 360; 24 | glRotatef(time / 2, 0, 0, 1); 25 | double scale = 0.5; 26 | glScaled(scale, scale, scale); 27 | glBegin(GL_QUADS); 28 | glTexCoord2d(0, 0); 29 | glVertex3d(-1, -1, 0); 30 | glTexCoord2d(0, 1); 31 | glVertex3d(-1, 1, 0); 32 | glTexCoord2d(1, 1); 33 | glVertex3d(1, 1, 0); 34 | glTexCoord2d(1, 0); 35 | glVertex3d(1, -1, 0); 36 | 37 | glEnd(); 38 | MuseTextureUtils.popTexture(); 39 | glPopAttrib(); 40 | glPopMatrix(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/item/ArmorModel.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.item 2 | 3 | import net.minecraft.nbt.NBTTagCompound 4 | 5 | object ArmorModel { 6 | def instance: ArmorModel = ArmorModelInstance.getInstance() 7 | } 8 | 9 | trait ArmorModel { 10 | var renderSpec: NBTTagCompound = null 11 | var visibleSection: Int = 0 12 | } 13 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/item/ArmorModelInstance.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.item; 2 | 3 | import net.machinemuse.powersuits.common.ModCompatability; 4 | import net.machinemuse.numina.general.MuseLogger; 5 | 6 | /** 7 | * Author: MachineMuse (Claire Semple) 8 | * Created: 10:01 PM, 11/07/13 9 | */ 10 | public class ArmorModelInstance { 11 | private static ArmorModel instance = null; 12 | 13 | public static ArmorModel getInstance() { 14 | if (instance == null) { 15 | if (ModCompatability.isSmartMovingLoaded() && ModCompatability.isRenderPlayerAPILoaded()) { 16 | try { 17 | MuseLogger.logInfo("Attempting to load SmartMoving armor model."); 18 | instance = new SMovingArmorModel(); 19 | MuseLogger.logInfo("SmartMoving armor model loaded successfully!"); 20 | } catch (Throwable e) { 21 | e.printStackTrace(); 22 | MuseLogger.logError("SmartMoving armor model did not load successfully. Either SmartMoving and RenderPlayerAPI were not installed correctly, or there was another problem."); 23 | MuseLogger.logError("Please ensure SmartMoving and RenderPlayerAPI are installed correctly and are the correct version for this version of Minecraft."); 24 | MuseLogger.logError("This problem is usually caught on client initialization and is fatal under normal circumstances, however somehow the client still considers RenderPlayerAPI to be loaded."); 25 | MuseLogger.logError(" -- WARNING -- Falling back to broken Vanilla model. Modular Powersuits armor model -WILL NOT- rotate. You have been warned. -- WARNING -- "); 26 | instance = new VanillaArmorModel(); 27 | } 28 | } else { 29 | instance = new VanillaArmorModel(); 30 | } 31 | } 32 | return instance; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/modelspec/ArmorMorphTarget.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.modelspec 2 | 3 | import net.minecraft.client.model.{ModelBiped, ModelRenderer} 4 | import org.lwjgl.opengl.GL11._ 5 | 6 | /** 7 | * Author: MachineMuse (Claire Semple) 8 | * Created: 2:09 AM, 29/04/13 9 | */ 10 | 11 | sealed trait MorphTarget { 12 | val name: String 13 | val degrad = 180F / Math.PI.asInstanceOf[Float] 14 | 15 | def apply(m: ModelBiped): ModelRenderer 16 | } 17 | 18 | case object Cloak extends MorphTarget { 19 | val name = "Cloak" 20 | 21 | def apply(m: ModelBiped) = m.bipedCloak 22 | } 23 | 24 | case object Head extends MorphTarget { 25 | val name = "Head" 26 | 27 | def apply(m: ModelBiped) = m.bipedHead 28 | } 29 | 30 | case object Body extends MorphTarget { 31 | val name = "Body" 32 | 33 | def apply(m: ModelBiped) = m.bipedBody 34 | } 35 | 36 | case object RightArm extends MorphTarget { 37 | val name = "RightArm" 38 | 39 | def apply(m: ModelBiped) = m.bipedRightArm 40 | } 41 | 42 | case object LeftArm extends MorphTarget { 43 | val name = "LeftArm" 44 | 45 | def apply(m: ModelBiped) = m.bipedLeftArm 46 | } 47 | 48 | case object RightLeg extends MorphTarget { 49 | val name = "RightLeg" 50 | 51 | def apply(m: ModelBiped) = m.bipedRightLeg 52 | } 53 | 54 | case object LeftLeg extends MorphTarget { 55 | val name = "LeftLeg" 56 | 57 | def apply(m: ModelBiped) = m.bipedLeftLeg 58 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/modelspec/ModelSpecXMLWriter.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.modelspec 2 | 3 | import com.google.gson.Gson 4 | import java.io.{File, PrintWriter, FileOutputStream} 5 | 6 | 7 | /** 8 | * Author: MachineMuse (Claire Semple) 9 | * Created: 9:10 AM, 29/04/13 10 | */ 11 | object ModelSpecXMLWriter { 12 | def writeRegistry(file: String) { 13 | val xmlwrite = 14 | 15 | {for ((modelname, modelspec) <- ModelRegistry.apply) yield 16 | 17 | {for ((partname, partspec) <- modelspec.apply) yield 18 | 19 | 20 | } 21 | } 22 | 23 | 24 | scala.xml.XML.save(file, xmlwrite) 25 | } 26 | 27 | def concatList(list: Seq[String]): String = list mkString "," 28 | } 29 | 30 | object ModelSpecJSONWriter { 31 | def writeRegistry(file: String) { 32 | val gson = new Gson() 33 | import scala.collection.JavaConverters._ 34 | val registry = ModelRegistry.apply.asJava 35 | val jsonwrite = gson.toJson(registry) 36 | val w = new PrintWriter(new FileOutputStream(new File(file))) 37 | w.print(jsonwrite) 38 | w.close() 39 | } 40 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/client/render/modelspec/RenderPart.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.client.render.modelspec 2 | 3 | import net.machinemuse.powersuits.client.render.item.ArmorModel 4 | import net.machinemuse.utils.render.Render 5 | import net.minecraft.client.model.{ModelBase, ModelRenderer, ModelBiped} 6 | import net.machinemuse.general.NBTTagAccessor 7 | import org.lwjgl.opengl.GL11._ 8 | import net.minecraft.nbt.NBTTagCompound 9 | import net.machinemuse.numina.geometry.Colour 10 | import net.machinemuse.numina.render.MuseTextureUtils 11 | 12 | /** 13 | * Author: MachineMuse (Claire Semple) 14 | * Created: 4:16 AM, 29/04/13 15 | */ 16 | 17 | class RenderPart(base: ModelBase, val parent: ModelRenderer) extends ModelRenderer(base) { 18 | override def render(scale: Float) { 19 | val renderSpec = ArmorModel.instance.renderSpec 20 | import scala.collection.JavaConverters._ 21 | val colours = renderSpec.getIntArray("colours") 22 | 23 | for { 24 | nbt <- NBTTagAccessor.getValues(renderSpec).asScala 25 | part <- ModelRegistry.getPart(nbt) 26 | if part.slot == ArmorModel.instance.visibleSection 27 | if part.morph.apply(ArmorModel.instance.asInstanceOf[ModelBiped]) == parent 28 | } { 29 | withMaybeGlow(part, nbt) { 30 | Render.withPushedMatrix { 31 | Render { 32 | glScaled(scale, scale, scale) 33 | MuseTextureUtils.bindTexture(part.getTexture(nbt)) 34 | applyTransform 35 | val ix = part.getColourIndex(nbt) 36 | if (ix < colours.size && ix >= 0) { 37 | Colour.doGLByInt(colours(ix)) 38 | } 39 | part.modelSpec.applyOffsetAndRotation // not yet implemented 40 | part.modelSpec.model.renderPart(part.partName) 41 | Colour.WHITE.doGL() 42 | } 43 | } 44 | }.run() 45 | 46 | } 47 | } 48 | 49 | val degrad = 180F / Math.PI.asInstanceOf[Float] 50 | 51 | def withMaybeGlow[A](part: ModelPartSpec, nbt: NBTTagCompound)(r: Render[A]): Render[A] = { 52 | if (part.getGlow(nbt)) { 53 | Render withGlow r 54 | } else { 55 | r 56 | } 57 | } 58 | 59 | def applyTransform { 60 | // glTranslatef(rotationPointX, rotationPointY, rotationPointZ) 61 | // glRotatef(rotateAngleZ * degrad, 0.0F, 0.0F, 1.0F) 62 | // glRotatef(rotateAngleY * degrad, 0.0F, 1.0F, 0.0F) 63 | // glRotatef(rotateAngleX * degrad, 1.0F, 0.0F, 0.0F) 64 | glRotatef(180, 1.0F, 0.0F, 0.0F) 65 | 66 | glTranslated(offsetX, offsetY - 26, offsetZ) 67 | 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/common/MPSCreativeTab.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.common 2 | 3 | import net.minecraft.creativetab.CreativeTabs 4 | import net.minecraft.item.Item 5 | import net.minecraft.item.ItemStack 6 | import cpw.mods.fml.common.registry.LanguageRegistry 7 | 8 | object MPSCreativeTab extends CreativeTabs(CreativeTabs.getNextID, "powersuits") { 9 | def getTabIconItem = MPSItems.powerArmorHead 10 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/common/MPSGuiHandler.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.common 2 | 3 | import cpw.mods.fml.common.network.IGuiHandler 4 | import net.machinemuse.general.gui.CosmeticGui 5 | import net.machinemuse.general.gui.GuiFieldTinker 6 | import net.machinemuse.general.gui.GuiTinkerTable 7 | import net.machinemuse.general.gui.KeyConfigGui 8 | import net.minecraft.client.Minecraft 9 | import net.minecraft.client.entity.EntityClientPlayerMP 10 | import net.minecraft.entity.player.EntityPlayer 11 | import net.minecraft.stats.AchievementList 12 | import net.minecraft.world.World 13 | import net.machinemuse.numina.scala.OptionCast 14 | import cpw.mods.fml.relauncher.{Side, SideOnly} 15 | 16 | /** 17 | * Gui handler for this mod. Mainly just takes an ID according to what was 18 | * passed to player.OpenGUI, and opens the corresponding GUI. 19 | * 20 | * @author MachineMuse 21 | */ 22 | object MPSGuiHandler extends IGuiHandler { 23 | override def getServerGuiElement(ID: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int): AnyRef = { 24 | ID match { 25 | case _ => null 26 | } 27 | } 28 | 29 | @SideOnly(Side.CLIENT) 30 | override def getClientGuiElement(ID: Int, player: EntityPlayer, world: World, x: Int, y: Int, z: Int): AnyRef = { 31 | Minecraft.getMinecraft.thePlayer.addStat(AchievementList.openInventory, 1) 32 | OptionCast[EntityClientPlayerMP](player) map (p => 33 | ID match { 34 | case 0 => new GuiTinkerTable(p, x, y, z) 35 | case 1 => new KeyConfigGui(p, x, y, z) 36 | case 2 => new GuiFieldTinker(p) 37 | case 3 => new CosmeticGui(p, x, y, z) 38 | case _ => None 39 | }) getOrElse null 40 | } 41 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/common/MPSItems.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.common 2 | 3 | import cpw.mods.fml.common.registry.GameRegistry 4 | import net.machinemuse.powersuits.block.{BlockLuxCapacitor, BlockTinkerTable} 5 | import net.machinemuse.powersuits.item._ 6 | 7 | /** 8 | * Created by Claire Semple on 9/9/2014. 9 | */ 10 | object MPSItems { 11 | val powerArmorHead = new ItemPowerArmorHelmet 12 | GameRegistry.registerItem(powerArmorHead, powerArmorHead.getUnlocalizedName) 13 | val powerArmorTorso = new ItemPowerArmorChestplate 14 | GameRegistry.registerItem(powerArmorTorso, powerArmorTorso.getUnlocalizedName) 15 | val powerArmorLegs = new ItemPowerArmorLeggings 16 | GameRegistry.registerItem(powerArmorLegs, powerArmorLegs.getUnlocalizedName) 17 | val powerArmorFeet = new ItemPowerArmorBoots 18 | GameRegistry.registerItem(powerArmorFeet, powerArmorFeet.getUnlocalizedName) 19 | val powerTool = new ItemPowerFist 20 | GameRegistry.registerItem(powerTool, powerTool.getUnlocalizedName) 21 | val tinkerTable = BlockTinkerTable 22 | GameRegistry.registerBlock(tinkerTable, tinkerTable.getUnlocalizedName) 23 | val luxCapacitor = new BlockLuxCapacitor 24 | GameRegistry.registerBlock(luxCapacitor, luxCapacitor.getUnlocalizedName) 25 | val components = new ItemComponent 26 | components.populate() 27 | GameRegistry.registerItem(components, components.getUnlocalizedName) 28 | } 29 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/control/IBindableControl.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.control; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | 5 | public interface IBindableControl { 6 | public void onActivate(EntityPlayer player); 7 | 8 | public void onDeactivate(EntityPlayer player); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/control/OpenGuiControl.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.control; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | 5 | public class OpenGuiControl implements IBindableControl { 6 | 7 | @Override 8 | public void onActivate(EntityPlayer player) { 9 | // TODO Auto-generated method stub 10 | 11 | } 12 | 13 | @Override 14 | public void onDeactivate(EntityPlayer player) { 15 | // TODO Auto-generated method stub 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/control/ToggleControl.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.control; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | 5 | public class ToggleControl implements IBindableControl { 6 | 7 | @Override 8 | public void onActivate(EntityPlayer player) { 9 | // TODO Auto-generated method stub 10 | 11 | } 12 | 13 | @Override 14 | public void onDeactivate(EntityPlayer player) { 15 | // TODO Auto-generated method stub 16 | 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/event/HarvestEventHandler.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.event; 2 | 3 | import cpw.mods.fml.common.eventhandler.SubscribeEvent; 4 | import net.machinemuse.api.IModularItem; 5 | import net.machinemuse.api.ModuleManager; 6 | import net.machinemuse.api.moduletrigger.IBlockBreakingModule; 7 | import net.machinemuse.powersuits.item.ItemPowerFist; 8 | import net.minecraft.block.Block; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | import net.minecraft.item.ItemStack; 11 | import net.minecraftforge.event.entity.player.PlayerEvent; 12 | 13 | public class HarvestEventHandler { 14 | @SubscribeEvent 15 | public void handleHarvestCheck(PlayerEvent.HarvestCheck event) { 16 | EntityPlayer player = event.entityPlayer; 17 | Block block = event.block; 18 | ItemStack stack = player.inventory.getCurrentItem(); 19 | if (stack != null && stack.getItem() instanceof ItemPowerFist && ((ItemPowerFist) stack.getItem()).canHarvestBlock(stack, block, 0, player)) { 20 | event.success = true; 21 | } 22 | } 23 | 24 | @SubscribeEvent 25 | public void handleBreakSpeed(PlayerEvent.BreakSpeed event) { 26 | Block block = event.block; 27 | EntityPlayer player = event.entityPlayer; 28 | int meta = event.metadata; 29 | event.newSpeed = event.originalSpeed; 30 | ItemStack stack = player.getCurrentEquippedItem(); 31 | if (stack != null && stack.getItem() instanceof IModularItem) { 32 | for (IBlockBreakingModule module : ModuleManager.getBlockBreakingModules()) { 33 | if (ModuleManager.itemHasActiveModule(stack, module.getDataName()) && module.canHarvestBlock(stack, block, meta, player)) { 34 | if (event.newSpeed == 0) { 35 | event.newSpeed = 1; 36 | } 37 | module.handleBreakSpeed(event); 38 | } 39 | } 40 | } 41 | 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/event/PlayerLoginHandlerThingy.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.event 2 | 3 | import cpw.mods.fml.common.eventhandler.SubscribeEvent 4 | import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent 5 | import net.machinemuse.numina.network.PacketSender 6 | import net.machinemuse.powersuits.network.packets.MusePacketPropertyModifierConfig 7 | import net.minecraft.entity.player.{EntityPlayerMP, EntityPlayer} 8 | 9 | /** 10 | * Author: MachineMuse (Claire Semple) 11 | * Created: 8:01 PM, 12/05/13 12 | */ 13 | object PlayerLoginHandlerThingy { 14 | @SubscribeEvent 15 | def onPlayerLogin(e: PlayerLoggedInEvent) { 16 | val player = e.player 17 | PacketSender.sendTo( 18 | new MusePacketPropertyModifierConfig(player, null), 19 | player.asInstanceOf[EntityPlayerMP] 20 | ) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/item/CustomRenderArmorBase.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.item 2 | 3 | import net.minecraft.item.ItemArmor 4 | 5 | /** 6 | * Author: MachineMuse (Claire Semple) 7 | * Created: 8:09 PM, 4/23/13 8 | */ 9 | trait CustomRenderArmorBase extends ItemArmor with ModularItemBase { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.item 2 | 3 | import net.machinemuse.api.electricity._ 4 | import net.minecraft.item.ItemArmor 5 | 6 | abstract class ItemElectricArmor(material: ItemArmor.ArmorMaterial, index1: Int, index2: Int) 7 | extends ItemArmor(material, index1, index2) 8 | with ModularItemBase 9 | with MuseElectricItem { 10 | 11 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/item/ItemElectricTool.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.item 2 | 3 | import com.google.common.collect.Sets 4 | import net.machinemuse.api.electricity._ 5 | import net.minecraft.block.Block 6 | import net.minecraft.init.Blocks 7 | import net.minecraft.item.{Item, ItemTool} 8 | 9 | object ItemElectricTool { 10 | val blocksEffectiveOn = Sets.newHashSet(Array[Block](Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail)) 11 | } 12 | class ItemElectricTool(damageBonus : Float, material : Item.ToolMaterial) 13 | extends ItemTool(damageBonus, material, ItemElectricTool.blocksEffectiveOn) 14 | with ModularItemBase 15 | with MuseElectricItem { 16 | 17 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/item/ItemPowerArmorBoots.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.item 2 | 3 | import net.minecraft.client.renderer.texture.IIconRegister 4 | import cpw.mods.fml.relauncher.Side 5 | import cpw.mods.fml.relauncher.SideOnly 6 | import net.machinemuse.utils.render.MuseRenderer 7 | import net.minecraft.entity.player.EntityPlayer 8 | import net.minecraft.item.ItemStack 9 | import net.minecraft.world.World 10 | 11 | class ItemPowerArmorBoots extends ItemPowerArmor(0, 3) { 12 | val iconpath = MuseRenderer.ICON_PREFIX + "armorfeet" 13 | 14 | setUnlocalizedName("powerArmorBoots") 15 | 16 | @SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) { 17 | itemIcon = iconRegister.registerIcon(iconpath) 18 | } 19 | 20 | // For future functionality if necessary... 21 | /*override def onArmorPieceTick(world: World, player: EntityPlayer, itemStack: ItemStack) { 22 | } 23 | 24 | override def onFullArmorTick(world: World, player: EntityPlayer, itemStack: ItemStack) { 25 | }*/ 26 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/item/ItemPowerArmorChestplate.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.item 2 | 3 | import net.minecraft.client.renderer.texture.IIconRegister 4 | import cpw.mods.fml.relauncher.Side 5 | import cpw.mods.fml.relauncher.SideOnly 6 | import net.machinemuse.utils.render.MuseRenderer 7 | import net.minecraft.world.World 8 | import net.minecraft.entity.player.EntityPlayer 9 | import net.minecraft.item.ItemStack 10 | 11 | class ItemPowerArmorChestplate extends ItemPowerArmor(0, 1) { 12 | val iconpath = MuseRenderer.ICON_PREFIX + "armortorso" 13 | 14 | setUnlocalizedName("powerArmorChestplate") 15 | 16 | @SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) { 17 | itemIcon = iconRegister.registerIcon(iconpath) 18 | } 19 | 20 | // For future functionality if necessary... 21 | /*override def onArmorPieceTick(world: World, player: EntityPlayer, itemStack: ItemStack) { 22 | } 23 | 24 | override def onFullArmorTick(world: World, player: EntityPlayer, itemStack: ItemStack) { 25 | }*/ 26 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/item/ItemPowerArmorLeggings.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.item 2 | 3 | import net.minecraft.client.renderer.texture.IIconRegister 4 | import cpw.mods.fml.relauncher.Side 5 | import cpw.mods.fml.relauncher.SideOnly 6 | import net.machinemuse.utils.render.MuseRenderer 7 | import net.minecraft.entity.player.EntityPlayer 8 | import net.minecraft.item.ItemStack 9 | import net.minecraft.world.World 10 | 11 | class ItemPowerArmorLeggings extends ItemPowerArmor(0, 2) { 12 | val iconpath = MuseRenderer.ICON_PREFIX + "armorlegs" 13 | 14 | setUnlocalizedName("powerArmorLeggings") 15 | 16 | 17 | @SideOnly(Side.CLIENT) 18 | override def registerIcons(iconRegister: IIconRegister) { 19 | itemIcon = iconRegister.registerIcon(iconpath) 20 | } 21 | 22 | // For future functionality if necessary... 23 | /*override def onArmorPieceTick(world: World, player: EntityPlayer, itemStack: ItemStack) { 24 | } 25 | 26 | override def onFullArmorTick(world: World, player: EntityPlayer, itemStack: ItemStack) { 27 | }*/ 28 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.item 2 | 3 | import net.machinemuse.numina.item.{NuminaItemUtils, ModeChangingItem} 4 | import net.minecraft.item.ItemStack 5 | import net.minecraft.util.IIcon 6 | import net.machinemuse.api.ModuleManager 7 | import net.machinemuse.api.moduletrigger.IRightClickModule 8 | import net.minecraft.entity.player.EntityPlayer 9 | import net.machinemuse.numina.scala.OptionCast 10 | 11 | /** 12 | * Author: MachineMuse (Claire Semple) 13 | * Created: 4:52 PM, 9/5/13 14 | */ 15 | object ModeChangingModularItem { 16 | 17 | def cycleModeForItem(stack: ItemStack, player: EntityPlayer, dMode: Int) { 18 | for ( 19 | s <- Option(stack); 20 | i <- OptionCast[ModeChangingModularItem](stack.getItem) 21 | ) { 22 | i.cycleMode(stack, player, dMode) 23 | } 24 | } 25 | } 26 | 27 | trait ModeChangingModularItem extends ModeChangingItem { 28 | def getModeIcon(mode: String, stack: ItemStack, player: EntityPlayer): Option[IIcon] = Option(ModuleManager.getModule(mode)).map(m => m.getIcon(stack)) 29 | 30 | def getValidModes(stack: ItemStack, player: EntityPlayer): Seq[String] = { 31 | getValidModes(stack) 32 | } 33 | 34 | def getValidModes(stack: ItemStack): Seq[String] = { 35 | import scala.collection.JavaConversions._ 36 | for { 37 | module <- ModuleManager.getRightClickModules 38 | if module.isValidForItem(stack) 39 | if ModuleManager.itemHasModule(stack, module.getDataName) 40 | } yield { 41 | module.getDataName 42 | } 43 | } 44 | 45 | def getActiveMode(stack: ItemStack): String = { 46 | val modeFromNBT = NuminaItemUtils.getTagCompound(stack).getString("mode") 47 | if (!modeFromNBT.isEmpty) { 48 | modeFromNBT 49 | } else { 50 | val validModes = getValidModes(stack) 51 | if (!validModes.isEmpty) { 52 | validModes(0) 53 | } else { 54 | "" 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.network.packets 2 | 3 | import net.machinemuse.numina.network.{MusePacketModeChangeRequest, MusePacketHandler} 4 | 5 | /** 6 | * Author: MachineMuse (Claire Semple) 7 | * Created: 4:01 PM, 9/3/13 8 | */ 9 | object MPSPacketList { 10 | def registerPackets() { 11 | MusePacketHandler.packagers.put(1, MusePacketInventoryRefresh) 12 | MusePacketHandler.packagers.put(2, MusePacketInstallModuleRequest) 13 | MusePacketHandler.packagers.put(3, MusePacketSalvageModuleRequest) 14 | MusePacketHandler.packagers.put(4, MusePacketTweakRequest) 15 | MusePacketHandler.packagers.put(5, MusePacketCosmeticInfo) 16 | MusePacketHandler.packagers.put(6, MusePacketPlayerUpdate) 17 | MusePacketHandler.packagers.put(7, MusePacketToggleRequest) 18 | MusePacketHandler.packagers.put(8, MusePacketPlasmaBolt) 19 | MusePacketHandler.packagers.put(10, MusePacketColourInfo) 20 | MusePacketHandler.packagers.put(11, MusePacketPropertyModifierConfig) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketColourInfo.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.network.packets 2 | 3 | import java.io.DataInputStream 4 | 5 | import net.machinemuse.api.IModularItem 6 | import net.machinemuse.numina.network.{MusePackager, MusePacket} 7 | import net.machinemuse.utils.MuseItemUtils 8 | import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP} 9 | import net.minecraft.nbt.NBTTagCompound 10 | 11 | 12 | /** 13 | * Author: MachineMuse (Claire Semple) 14 | * Created: 12:28 PM, 5/6/13 15 | */ 16 | object MusePacketColourInfo extends MusePackager { 17 | def read(d: DataInputStream, p: EntityPlayer) = { 18 | val itemSlot = readInt(d) 19 | val tagData = readIntArray(d) 20 | new MusePacketColourInfo(p, itemSlot, tagData) 21 | } 22 | } 23 | 24 | class MusePacketColourInfo(player: EntityPlayer, itemSlot: Int, tagData: Array[Int]) extends MusePacket { 25 | val packager = MusePacketColourInfo 26 | 27 | def write { 28 | writeInt(itemSlot) 29 | writeIntArray(tagData) 30 | } 31 | 32 | override def handleServer(playerEntity: EntityPlayerMP) { 33 | val stack = playerEntity.inventory.getStackInSlot(itemSlot) 34 | if (stack != null && stack.getItem.isInstanceOf[IModularItem]) { 35 | val renderTag: NBTTagCompound = MuseItemUtils.getMuseRenderTag(stack) 36 | renderTag.setIntArray("colours", tagData) 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketCosmeticInfo.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.network.packets 2 | 3 | import java.io.DataInputStream 4 | 5 | import net.machinemuse.api.IModularItem 6 | import net.machinemuse.numina.general.MuseLogger 7 | import net.machinemuse.numina.network.{MusePackager, MusePacket} 8 | import net.machinemuse.utils.MuseItemUtils 9 | import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP} 10 | import net.minecraft.nbt.NBTTagCompound 11 | 12 | /** 13 | * Author: MachineMuse (Claire Semple) 14 | * Created: 10:16 AM, 01/05/13 15 | */ 16 | object MusePacketCosmeticInfo extends MusePackager { 17 | def read(d: DataInputStream, p: EntityPlayer) = { 18 | val itemSlot = readInt(d) 19 | val tagName = readString(d) 20 | val tagData = readNBTTagCompound(d) 21 | new MusePacketCosmeticInfo(p, itemSlot, tagName, tagData) 22 | } 23 | } 24 | 25 | class MusePacketCosmeticInfo(player: EntityPlayer, itemSlot: Int, tagName: String, tagData: NBTTagCompound) extends MusePacket { 26 | val packager = MusePacketCosmeticInfo 27 | 28 | def write { 29 | writeInt(itemSlot) 30 | writeString(tagName) 31 | writeNBTTagCompound(tagData) 32 | } 33 | 34 | override def handleServer(playerEntity: EntityPlayerMP) { 35 | val stack = playerEntity.inventory.getStackInSlot(itemSlot) 36 | if (tagName != null && stack != null && stack.getItem.isInstanceOf[IModularItem]) { 37 | val itemTag: NBTTagCompound = MuseItemUtils.getMuseItemTag(stack) 38 | var renderTag: NBTTagCompound = null 39 | if (!itemTag.hasKey("render")) { 40 | renderTag = new NBTTagCompound 41 | itemTag.setTag("render", renderTag) 42 | } else { 43 | renderTag = itemTag.getCompoundTag("render") 44 | } 45 | if (tagData.hasNoTags) { 46 | MuseLogger.logDebug("Removing tag " + tagName) 47 | renderTag.removeTag(tagName) 48 | } else { 49 | MuseLogger.logDebug("Adding tag " + tagName + " : " + tagData) 50 | renderTag.setTag(tagName, tagData) 51 | } 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketInventoryRefresh.scala: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package net.machinemuse.powersuits.network.packets 5 | 6 | import java.io.DataInputStream 7 | 8 | import cpw.mods.fml.relauncher.{Side, SideOnly} 9 | import net.machinemuse.general.gui.MuseGui 10 | import net.machinemuse.numina.network.{MusePackager, MusePacket} 11 | import net.machinemuse.numina.scala.OptionCast 12 | import net.minecraft.client.Minecraft 13 | import net.minecraft.client.entity.EntityClientPlayerMP 14 | import net.minecraft.entity.player.EntityPlayer 15 | import net.minecraft.inventory.IInventory 16 | import net.minecraft.item.ItemStack 17 | 18 | 19 | /** 20 | * Author: MachineMuse (Claire Semple) 21 | * Created: 12:28 PM, 5/6/13 22 | */ 23 | object MusePacketInventoryRefresh extends MusePackager { 24 | def read(d: DataInputStream, p: EntityPlayer) = { 25 | val itemSlot = readInt(d) 26 | val stack = readItemStack(d) 27 | new MusePacketInventoryRefresh(p, itemSlot, stack) 28 | } 29 | } 30 | 31 | class MusePacketInventoryRefresh(player: EntityPlayer, slot: Int, stack: ItemStack) extends MusePacket { 32 | val packager = MusePacketInventoryRefresh 33 | 34 | def write { 35 | writeInt(slot) 36 | writeItemStack(stack) 37 | } 38 | 39 | @SideOnly(Side.CLIENT) 40 | override def handleClient(player: EntityClientPlayerMP) { 41 | val inventory: IInventory = player.inventory 42 | inventory.setInventorySlotContents(slot, stack) 43 | OptionCast[MuseGui](Minecraft.getMinecraft.currentScreen) map (s => s.refresh()) 44 | } 45 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketPlasmaBolt.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.network.packets 2 | 3 | import java.io.DataInputStream 4 | 5 | import cpw.mods.fml.relauncher.{Side, SideOnly} 6 | import net.machinemuse.numina.network.{MusePackager, MusePacket} 7 | import net.machinemuse.powersuits.entity.EntityPlasmaBolt 8 | import net.minecraft.client.Minecraft 9 | import net.minecraft.client.entity.EntityClientPlayerMP 10 | import net.minecraft.entity.player.EntityPlayer 11 | 12 | /** 13 | * Author: MachineMuse (Claire Semple) 14 | * Created: 12:28 PM, 5/6/13 15 | */ 16 | object MusePacketPlasmaBolt extends MusePackager { 17 | def read(d: DataInputStream, p: EntityPlayer) = { 18 | val entityID = readInt(d) 19 | val size = readDouble(d) 20 | new MusePacketPlasmaBolt(p, entityID, size) 21 | } 22 | } 23 | 24 | class MusePacketPlasmaBolt(player: EntityPlayer, entityID: Int, size: Double) extends MusePacket { 25 | val packager = MusePacketPlasmaBolt 26 | 27 | def write { 28 | writeInt(entityID) 29 | writeDouble(size) 30 | } 31 | 32 | @SideOnly(Side.CLIENT) 33 | override def handleClient(player: EntityClientPlayerMP) { 34 | try { 35 | val entity: EntityPlasmaBolt = Minecraft.getMinecraft.theWorld.getEntityByID(entityID).asInstanceOf[EntityPlasmaBolt] 36 | entity.size = this.size 37 | } 38 | catch { 39 | case e: Exception => { 40 | return 41 | } 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketPlayerUpdate.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.network.packets 2 | 3 | import java.io.DataInputStream 4 | 5 | import net.machinemuse.numina.network.{PacketSender, MusePackager, MusePacket} 6 | import net.machinemuse.powersuits.control.PlayerInputMap 7 | import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP} 8 | 9 | 10 | /** 11 | * Author: MachineMuse (Claire Semple) 12 | * Created: 12:28 PM, 5/6/13 13 | */ 14 | object MusePacketPlayerUpdate extends MusePackager { 15 | def read(d: DataInputStream, p: EntityPlayer) = { 16 | val username = readString(d) 17 | val inputMap: PlayerInputMap = PlayerInputMap.getInputMapFor(username) 18 | inputMap.readFromStream(d) 19 | new MusePacketPlayerUpdate(p, inputMap) 20 | } 21 | } 22 | 23 | class MusePacketPlayerUpdate(player: EntityPlayer, inputMap: PlayerInputMap) extends MusePacket { 24 | val packager = MusePacketPlayerUpdate 25 | 26 | def write { 27 | writeString(player.getCommandSenderName) 28 | inputMap.writeToStream(dataout) 29 | } 30 | 31 | override def handleServer(player: EntityPlayerMP) { 32 | val updatePacket: MusePacketPlayerUpdate = new MusePacketPlayerUpdate(player, inputMap) 33 | player.motionX = inputMap.motionX 34 | player.motionY = inputMap.motionY 35 | player.motionZ = inputMap.motionZ 36 | PacketSender.sendToAllAround(updatePacket, player, 128) 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketSalvageModuleRequest.scala: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package net.machinemuse.powersuits.network.packets 5 | 6 | import java.io.DataInputStream 7 | import java.util.{HashSet, List} 8 | 9 | import net.machinemuse.api.{IPowerModule, ModuleManager} 10 | import net.machinemuse.numina.network.{PacketSender, MusePackager, MusePacket} 11 | import net.machinemuse.powersuits.common.Config 12 | import net.machinemuse.utils.MuseItemUtils 13 | import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP, InventoryPlayer} 14 | import net.minecraft.item.ItemStack 15 | 16 | /** 17 | * Packet for requesting to purchase an upgrade. Player-to-server. Server 18 | * decides whether it is a valid upgrade or not and replies with an associated 19 | * inventoryrefresh packet. 20 | * 21 | * Author: MachineMuse (Claire Semple) 22 | * Created: 12:28 PM, 5/6/13 23 | */ 24 | object MusePacketSalvageModuleRequest extends MusePackager { 25 | def read(d: DataInputStream, p: EntityPlayer) = { 26 | 27 | val itemSlot = readInt(d) 28 | val moduleName = readString(d) 29 | new MusePacketSalvageModuleRequest(p, itemSlot, moduleName) 30 | } 31 | } 32 | 33 | class MusePacketSalvageModuleRequest(player: EntityPlayer, itemSlot: Int, moduleName: String) extends MusePacket { 34 | val packager = MusePacketSalvageModuleRequest 35 | 36 | def write { 37 | writeInt(itemSlot) 38 | writeString(moduleName) 39 | } 40 | 41 | override def handleServer(playerEntity: EntityPlayerMP) { 42 | if (moduleName != null) { 43 | val inventory: InventoryPlayer = playerEntity.inventory 44 | val stack = playerEntity.inventory.getStackInSlot(itemSlot) 45 | val moduleType: IPowerModule = ModuleManager.getModule(moduleName) 46 | val refund: List[ItemStack] = moduleType.getInstallCost 47 | if (ModuleManager.itemHasModule(stack, moduleName)) { 48 | val slots: java.util.Set[Integer] = new HashSet[Integer] 49 | ModuleManager.removeModule(stack, moduleName) 50 | import scala.collection.JavaConversions._ 51 | for (refundItem <- refund) { 52 | slots.addAll(MuseItemUtils.giveOrDropItemWithChance(refundItem.copy, playerEntity, Config.getSalvageChance)) 53 | } 54 | slots.add(itemSlot) 55 | for (slotiter <- slots) { 56 | val reply: MusePacket = new MusePacketInventoryRefresh(player, slotiter, inventory.getStackInSlot(slotiter)) 57 | PacketSender.sendTo(reply, playerEntity) 58 | } 59 | } 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketToggleRequest.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.network.packets 2 | 3 | import java.io.DataInputStream 4 | 5 | import net.machinemuse.numina.network.{MusePackager, MusePacket} 6 | import net.machinemuse.utils.MuseItemUtils 7 | import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP} 8 | 9 | 10 | /** 11 | * Author: MachineMuse (Claire Semple) 12 | * Created: 12:28 PM, 5/6/13 13 | */ 14 | object MusePacketToggleRequest extends MusePackager { 15 | def read(d: DataInputStream, p: EntityPlayer) = { 16 | 17 | val module = readString(d) 18 | val value = readBoolean(d) 19 | new MusePacketToggleRequest(p, module, value) 20 | } 21 | } 22 | 23 | class MusePacketToggleRequest(player: EntityPlayer, module: String, active: Boolean) extends MusePacket { 24 | val packager = MusePacketToggleRequest 25 | 26 | def write() { 27 | writeString(module) 28 | writeBoolean(active) 29 | } 30 | 31 | override def handleServer(player: EntityPlayerMP) { 32 | MuseItemUtils.toggleModuleForPlayer(player, module, active) 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/network/packets/MusePacketTweakRequest.scala: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package net.machinemuse.powersuits.network.packets 5 | 6 | import java.io.DataInputStream 7 | 8 | import net.machinemuse.api.ModuleManager 9 | import net.machinemuse.numina.general.MuseMathUtils 10 | import net.machinemuse.numina.network.{MusePackager, MusePacket} 11 | import net.machinemuse.utils.MuseItemUtils 12 | import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP} 13 | import net.minecraft.nbt.NBTTagCompound 14 | 15 | /** 16 | * Packet for requesting to purchase an upgrade. Player-to-server. Server 17 | * decides whether it is a valid upgrade or not and replies with an associated 18 | * inventoryrefresh packet. 19 | * 20 | * Author: MachineMuse (Claire Semple) 21 | * Created: 12:28 PM, 5/6/13 22 | */ 23 | object MusePacketTweakRequest extends MusePackager { 24 | def read(d: DataInputStream, p: EntityPlayer) = { 25 | val itemSlot = readInt(d) 26 | val moduleName = readString(d) 27 | val tweakName = readString(d) 28 | val tweakValue = readDouble(d) 29 | new MusePacketTweakRequest(p, itemSlot, moduleName, tweakName, tweakValue) 30 | } 31 | } 32 | 33 | class MusePacketTweakRequest(player: EntityPlayer, itemSlot: Int, moduleName: String, tweakName: String, tweakValue: Double) extends MusePacket { 34 | val packager = MusePacketTweakRequest 35 | 36 | def write { 37 | writeInt(itemSlot) 38 | writeString(moduleName) 39 | writeString(tweakName) 40 | writeDouble(tweakValue) 41 | } 42 | 43 | override def handleServer(playerEntity: EntityPlayerMP) { 44 | if (moduleName != null && tweakName != null) { 45 | val stack = playerEntity.inventory.getStackInSlot(itemSlot) 46 | val itemTag: NBTTagCompound = MuseItemUtils.getMuseItemTag(stack) 47 | if (itemTag != null && ModuleManager.tagHasModule(itemTag, moduleName)) { 48 | val moduleTag: NBTTagCompound = itemTag.getCompoundTag(moduleName) 49 | moduleTag.setDouble(tweakName, MuseMathUtils.clampDouble(tweakValue, 0, 1)) 50 | } 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/PowerModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.utils.MuseCommonStrings; 5 | 6 | import java.util.List; 7 | 8 | public class PowerModule extends PowerModuleBase { 9 | protected String name; 10 | protected String description; 11 | protected String category; 12 | protected String textureFile; 13 | 14 | public PowerModule(String name, List validItems, String textureFile, String category) { 15 | super(name, validItems); 16 | this.name = name; 17 | this.category = category; 18 | this.textureFile = textureFile; 19 | } 20 | 21 | @Override 22 | public String getDataName() { 23 | return name; 24 | } 25 | 26 | @Override 27 | public String getLocalizedName() { 28 | return "This module did not correctly label it's name."; 29 | } 30 | 31 | 32 | @Override 33 | public String getDescription() { 34 | return description; 35 | } 36 | 37 | @Override 38 | public String getCategory() { 39 | return category; 40 | } 41 | 42 | public static String getUnit(String propertyName) { 43 | String unit = units.get(propertyName); 44 | return unit == null ? "" : unit; 45 | } 46 | 47 | public static String getPropertyLocalString(String propertyName) { 48 | return MuseCommonStrings.getPropertyLocalString(propertyName); 49 | } 50 | 51 | public PowerModule setDescription(String description) { 52 | this.description = description; 53 | return this; 54 | } 55 | 56 | public PowerModule setCategory(String category) { 57 | this.category = category; 58 | return this; 59 | } 60 | 61 | public PowerModule setDefaultString(String key, String value) { 62 | this.defaultTag.setString(key, value); 63 | return this; 64 | } 65 | 66 | public PowerModule setDefaultDouble(String key, double value) { 67 | this.defaultTag.setDouble(key, value); 68 | return this; 69 | } 70 | 71 | @Override 72 | public String getTextureFile() { 73 | return textureFile; 74 | } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/PropertyModifierFlatAdditive.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule; 2 | 3 | import net.machinemuse.api.IPropertyModifier; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | public class PropertyModifierFlatAdditive implements IPropertyModifier { 7 | public double valueAdded; 8 | 9 | public PropertyModifierFlatAdditive(double valueAdded) { 10 | this.valueAdded = valueAdded; 11 | } 12 | 13 | @Override 14 | public double applyModifier(NBTTagCompound moduleTag, double value) { 15 | return value + this.valueAdded; 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/PropertyModifierLinearAdditive.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule; 2 | 3 | import net.machinemuse.api.IPropertyModifier; 4 | import net.machinemuse.utils.MuseItemUtils; 5 | import net.minecraft.nbt.NBTTagCompound; 6 | 7 | public class PropertyModifierLinearAdditive implements IPropertyModifier { 8 | public double multiplier; 9 | public String tradeoffName; 10 | 11 | public PropertyModifierLinearAdditive(String tradeoffName, double multiplier) { 12 | this.multiplier = multiplier; 13 | this.tradeoffName = tradeoffName; 14 | } 15 | 16 | @Override 17 | public double applyModifier(NBTTagCompound moduleTag, double value) { 18 | return value + multiplier * MuseItemUtils.getDoubleOrZero(moduleTag, tradeoffName); 19 | } 20 | 21 | public String getTradeoffName() { 22 | return tradeoffName; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/RightClickPowerModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule; 2 | 3 | import java.util.List; 4 | 5 | import net.machinemuse.api.IModularItem; 6 | import net.machinemuse.api.moduletrigger.IRightClickModule; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraft.world.World; 10 | 11 | public class RightClickPowerModule extends PowerModule implements IRightClickModule { 12 | public RightClickPowerModule(String name, List validItems, String textureFile, String category) { 13 | super(name, validItems, textureFile, category); 14 | } 15 | 16 | @Override 17 | public void onRightClick(EntityPlayer playerClicking, World world, ItemStack item) { 18 | } 19 | 20 | @Override 21 | public void onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { 22 | 23 | } 24 | 25 | @Override 26 | public boolean onItemUseFirst(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, 27 | float hitZ) { 28 | return false; 29 | } 30 | 31 | @Override 32 | public void onPlayerStoppedUsing(ItemStack itemStack, World world, EntityPlayer player, int par4) { 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/ToggleablePowerModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule; 2 | 3 | import java.util.List; 4 | 5 | import net.machinemuse.api.IModularItem; 6 | import net.machinemuse.api.moduletrigger.IToggleableModule; 7 | 8 | public class ToggleablePowerModule extends PowerModule implements IToggleableModule { 9 | 10 | public ToggleablePowerModule(String name, List validItems, String textureFile, String category) { 11 | super(name, validItems, textureFile, category); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/armor/ApiaristArmorModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.armor; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.common.ModCompatability; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.util.StatCollector; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * Created by User: Andrew 14 | * Date: 4/21/13 15 | * Time: 2:03 PM 16 | */ 17 | public class ApiaristArmorModule extends PowerModuleBase { 18 | public static final String MODULE_APIARIST_ARMOR = "Apiarist Armor"; 19 | public static final String APIARIST_ARMOR_ENERGY_CONSUMPTION = "Apiarist Armor Energy Consumption"; 20 | 21 | public ApiaristArmorModule(List validItems) { 22 | super(validItems); 23 | // ItemStack stack = ModCompatability.getForestryItem("craftingMaterial", 6); 24 | // stack.setItemDamage(3); 25 | // addInstallCost(stack); 26 | addBaseProperty(APIARIST_ARMOR_ENERGY_CONSUMPTION, 10, "J"); 27 | addPropertyLocalString(APIARIST_ARMOR_ENERGY_CONSUMPTION, StatCollector.translateToLocal("module.apiaristArmor.energy")); 28 | } 29 | 30 | @Override 31 | public String getCategory() { 32 | return MuseCommonStrings.CATEGORY_ARMOR; 33 | } 34 | 35 | @Override 36 | public String getDataName() { 37 | return MODULE_APIARIST_ARMOR; 38 | } 39 | 40 | @Override 41 | public String getLocalizedName() { 42 | return StatCollector.translateToLocal("module.apiaristArmor.name"); 43 | } 44 | 45 | @Override 46 | public String getDescription() { 47 | return StatCollector.translateToLocal("module.apiaristArmor.desc"); 48 | } 49 | 50 | @Override 51 | public String getTextureFile() { 52 | return "silkWisp"; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/armor/BasicPlatingModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.armor; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.item.ItemComponent; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.machinemuse.utils.MuseItemUtils; 8 | import net.minecraft.util.StatCollector; 9 | 10 | import java.util.List; 11 | 12 | public class BasicPlatingModule extends PowerModuleBase { 13 | public static final String MODULE_BASIC_PLATING = "Iron Plating"; 14 | 15 | public BasicPlatingModule(List validItems) { 16 | super(validItems); 17 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.basicPlating, 1)); 18 | addTradeoffProperty("Plating Thickness", MuseCommonStrings.ARMOR_VALUE_PHYSICAL, 5, " Points"); 19 | addTradeoffProperty("Plating Thickness", MuseCommonStrings.WEIGHT, 10000, "g"); 20 | } 21 | 22 | @Override 23 | public String getTextureFile() { 24 | return "basicplating2"; 25 | } 26 | 27 | @Override 28 | public String getCategory() { 29 | return MuseCommonStrings.CATEGORY_ARMOR; 30 | } 31 | 32 | @Override 33 | public String getDataName() { 34 | return MODULE_BASIC_PLATING; 35 | } 36 | 37 | @Override 38 | public String getLocalizedName() { 39 | return StatCollector.translateToLocal("module.basicPlating.name"); 40 | } 41 | 42 | @Override 43 | public String getDescription() { 44 | return StatCollector.translateToLocal("module.basicPlating.desc"); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/armor/DiamondPlatingModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.armor; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.item.ItemComponent; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.machinemuse.utils.MuseItemUtils; 8 | import net.minecraft.util.StatCollector; 9 | 10 | import java.util.List; 11 | 12 | public class DiamondPlatingModule extends PowerModuleBase { 13 | public static final String MODULE_DIAMOND_PLATING = "Diamond Plating"; 14 | 15 | public DiamondPlatingModule(List validItems) { 16 | super(validItems); 17 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.advancedPlating, 1)); 18 | addTradeoffProperty("Plating Thickness", MuseCommonStrings.ARMOR_VALUE_PHYSICAL, 6, " Points"); 19 | addTradeoffProperty("Plating Thickness", MuseCommonStrings.WEIGHT, 6000, "g"); 20 | } 21 | 22 | @Override 23 | public String getTextureFile() { 24 | return "advancedplating2"; 25 | } 26 | 27 | @Override 28 | public String getCategory() { 29 | return MuseCommonStrings.CATEGORY_ARMOR; 30 | } 31 | 32 | @Override 33 | public String getDataName() { 34 | return MODULE_DIAMOND_PLATING; 35 | } 36 | 37 | @Override 38 | public String getLocalizedName() { 39 | return StatCollector.translateToLocal("module.diamondPlating.name"); 40 | } 41 | 42 | @Override 43 | public String getDescription() { 44 | return StatCollector.translateToLocal("module.diamondPlating.desc"); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/armor/EnergyShieldModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.armor; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.item.ItemComponent; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.machinemuse.utils.MuseItemUtils; 8 | import net.minecraft.util.StatCollector; 9 | 10 | import java.util.List; 11 | 12 | public class EnergyShieldModule extends PowerModuleBase { 13 | public static final String MODULE_ENERGY_SHIELD = "Energy Shield"; 14 | protected static final String FIELD_STRENGTH="Field Strength"; 15 | 16 | public EnergyShieldModule(List validItems) { 17 | super(validItems); 18 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.fieldEmitter, 2)); 19 | addTradeoffProperty(FIELD_STRENGTH, MuseCommonStrings.ARMOR_VALUE_ENERGY, 6, " Points"); 20 | addTradeoffProperty(FIELD_STRENGTH, MuseCommonStrings.ARMOR_ENERGY_CONSUMPTION, 500, "J"); 21 | addPropertyLocalString(FIELD_STRENGTH, StatCollector.translateToLocal("module.energyShield.strength")); 22 | } 23 | 24 | @Override 25 | public String getTextureFile() { 26 | return "energyshield"; 27 | } 28 | 29 | @Override 30 | public String getCategory() { 31 | return MuseCommonStrings.CATEGORY_ARMOR; 32 | } 33 | 34 | @Override 35 | public String getDataName() { 36 | return MODULE_ENERGY_SHIELD; 37 | } 38 | 39 | @Override 40 | public String getLocalizedName() { 41 | return StatCollector.translateToLocal("module.energyShield.name"); 42 | } 43 | 44 | @Override 45 | public String getDescription() { 46 | return StatCollector.translateToLocal("module.energyShield.desc"); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/armor/HazmatModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.armor; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.item.ItemComponent; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.machinemuse.utils.MuseItemUtils; 8 | import net.minecraft.util.StatCollector; 9 | 10 | import java.util.List; 11 | 12 | public class HazmatModule extends PowerModuleBase { 13 | public static final String MODULE_HAZMAT = "Radiation Shielding"; 14 | 15 | public HazmatModule(List validItems) { 16 | super(validItems); 17 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.basicPlating, 3)).addBaseProperty(MuseCommonStrings.WEIGHT, 0.5); 18 | } 19 | 20 | @Override 21 | public String getCategory() { 22 | return MuseCommonStrings.CATEGORY_ENVIRONMENTAL; 23 | } 24 | 25 | @Override 26 | public String getDataName() { 27 | return MODULE_HAZMAT; 28 | } 29 | 30 | @Override 31 | public String getLocalizedName() { 32 | return StatCollector.translateToLocal("module.hazmat.name"); 33 | } 34 | 35 | @Override 36 | public String getDescription() { 37 | return StatCollector.translateToLocal("module.hazmat.desc"); 38 | } 39 | 40 | @Override 41 | public String getTextureFile() { 42 | return "greenstar"; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/armor/HeatSinkModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.armor; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.item.ItemComponent; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.machinemuse.utils.MuseHeatUtils; 8 | import net.machinemuse.utils.MuseItemUtils; 9 | import net.minecraft.util.StatCollector; 10 | 11 | import java.util.List; 12 | 13 | public class HeatSinkModule extends PowerModuleBase { 14 | public static final String MODULE_HEAT_SINK = "Heat Sink"; 15 | public static final String THICKNESS = "Thickness"; 16 | 17 | public HeatSinkModule(List validItems) { 18 | super(validItems); 19 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.basicPlating, 1)); 20 | addTradeoffProperty(THICKNESS, MuseCommonStrings.WEIGHT, 5000, "g"); 21 | addTradeoffProperty(THICKNESS, MuseHeatUtils.MAXIMUM_HEAT, 150, ""); 22 | addPropertyLocalString(THICKNESS, StatCollector.translateToLocal("module.heatSink.thickness")); 23 | } 24 | 25 | @Override 26 | public String getCategory() { 27 | return MuseCommonStrings.CATEGORY_ARMOR; 28 | } 29 | 30 | @Override 31 | public String getDataName() { 32 | return MODULE_HEAT_SINK; 33 | } 34 | 35 | @Override 36 | public String getLocalizedName() { 37 | return StatCollector.translateToLocal("module.heatSink.name"); 38 | } 39 | 40 | @Override 41 | public String getDescription() { 42 | return StatCollector.translateToLocal("module.heatSink.desc"); 43 | } 44 | 45 | @Override 46 | public String getTextureFile() { 47 | return "heatresistantplating2"; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/energy/AdvancedBatteryModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.energy; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.electricity.ElectricConversions; 5 | import net.machinemuse.powersuits.item.ItemComponent; 6 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 7 | import net.machinemuse.utils.ElectricItemUtils; 8 | import net.machinemuse.utils.MuseCommonStrings; 9 | import net.machinemuse.utils.MuseItemUtils; 10 | import net.minecraft.util.StatCollector; 11 | 12 | import java.util.List; 13 | 14 | public class AdvancedBatteryModule extends PowerModuleBase { 15 | public static final String MODULE_BATTERY_ADVANCED = "Advanced Battery"; 16 | 17 | public AdvancedBatteryModule(List validItems) { 18 | super(validItems); 19 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.mvcapacitor, 1)); 20 | addBaseProperty(ElectricItemUtils.MAXIMUM_ENERGY(), 100000, "J"); 21 | addBaseProperty(MuseCommonStrings.WEIGHT, 2000, "g"); 22 | addTradeoffProperty("Battery Size", ElectricItemUtils.MAXIMUM_ENERGY(), 400000); 23 | addTradeoffProperty("Battery Size", MuseCommonStrings.WEIGHT, 8000); 24 | addBaseProperty(ElectricConversions.IC2_TIER(), 1); 25 | addTradeoffProperty("IC2 Tier", ElectricConversions.IC2_TIER(), 2); 26 | } 27 | 28 | @Override 29 | public String getTextureFile() { 30 | return "mvbattery"; 31 | } 32 | 33 | @Override 34 | public String getCategory() { 35 | return MuseCommonStrings.CATEGORY_ENERGY; 36 | } 37 | 38 | @Override 39 | public String getDataName() { 40 | return MODULE_BATTERY_ADVANCED; 41 | } 42 | 43 | @Override 44 | public String getLocalizedName() { 45 | return StatCollector.translateToLocal("module.advancedBattery.name"); 46 | } 47 | 48 | @Override 49 | public String getDescription() { 50 | return StatCollector.translateToLocal("module.advancedBattery.desc"); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/energy/BasicBatteryModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.energy; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.electricity.ElectricConversions; 5 | import net.machinemuse.powersuits.item.ItemComponent; 6 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 7 | import net.machinemuse.utils.ElectricItemUtils; 8 | import net.machinemuse.utils.MuseCommonStrings; 9 | import net.machinemuse.utils.MuseItemUtils; 10 | import net.minecraft.util.StatCollector; 11 | 12 | import java.util.List; 13 | 14 | public class BasicBatteryModule extends PowerModuleBase { 15 | public static final String MODULE_BATTERY_BASIC = "Basic Battery"; 16 | 17 | public BasicBatteryModule(List validItems) { 18 | super(validItems); 19 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.lvcapacitor, 1)); 20 | addBaseProperty(ElectricItemUtils.MAXIMUM_ENERGY(), 20000, "J"); 21 | addBaseProperty(MuseCommonStrings.WEIGHT, 2000, "g"); 22 | addTradeoffProperty("Battery Size", ElectricItemUtils.MAXIMUM_ENERGY(), 80000); 23 | addTradeoffProperty("Battery Size", MuseCommonStrings.WEIGHT, 8000); 24 | addBaseProperty(ElectricConversions.IC2_TIER(), 1); 25 | addTradeoffProperty("IC2 Tier", ElectricConversions.IC2_TIER(), 2); 26 | } 27 | 28 | @Override 29 | public String getTextureFile() { 30 | return "lvbattery"; 31 | } 32 | 33 | @Override 34 | public String getCategory() { 35 | return MuseCommonStrings.CATEGORY_ENERGY; 36 | } 37 | 38 | @Override 39 | public String getDataName() { 40 | return MODULE_BATTERY_BASIC; 41 | } 42 | 43 | @Override 44 | public String getLocalizedName() { 45 | return StatCollector.translateToLocal("module.basicBattery.name"); 46 | } 47 | 48 | @Override 49 | public String getDescription() { 50 | return StatCollector.translateToLocal("module.basicBattery.desc"); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/energy/EliteBatteryModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.energy; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.electricity.ElectricConversions; 5 | import net.machinemuse.powersuits.item.ItemComponent; 6 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 7 | import net.machinemuse.utils.ElectricItemUtils; 8 | import net.machinemuse.utils.MuseCommonStrings; 9 | import net.machinemuse.utils.MuseItemUtils; 10 | import net.minecraft.util.StatCollector; 11 | 12 | import java.util.List; 13 | 14 | public class EliteBatteryModule extends PowerModuleBase { 15 | public static final String MODULE_BATTERY_ELITE = "Elite Battery"; 16 | 17 | public EliteBatteryModule(List validItems) { 18 | super(validItems); 19 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.hvcapacitor, 1)); 20 | addBaseProperty(ElectricItemUtils.MAXIMUM_ENERGY(), 750000, "J"); 21 | addBaseProperty(MuseCommonStrings.WEIGHT, 2000, "g"); 22 | addTradeoffProperty("Battery Size", ElectricItemUtils.MAXIMUM_ENERGY(), 4250000); 23 | addTradeoffProperty("Battery Size", MuseCommonStrings.WEIGHT, 8000); 24 | addBaseProperty(ElectricConversions.IC2_TIER(), 1); 25 | addTradeoffProperty("IC2 Tier", ElectricConversions.IC2_TIER(), 2); 26 | } 27 | 28 | @Override 29 | public String getTextureFile() { 30 | return "crystalcapacitor"; 31 | } 32 | 33 | @Override 34 | public String getCategory() { 35 | return MuseCommonStrings.CATEGORY_ENERGY; 36 | } 37 | 38 | @Override 39 | public String getDataName() { 40 | return MODULE_BATTERY_ELITE; 41 | } 42 | 43 | @Override 44 | public String getLocalizedName() { 45 | return StatCollector.translateToLocal("module.eliteBattery.name"); 46 | } 47 | 48 | @Override 49 | public String getDescription() { 50 | return StatCollector.translateToLocal("module.eliteBattery.desc"); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/misc/AirtightSealModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.misc; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 5 | import net.machinemuse.utils.MuseCommonStrings; 6 | import net.minecraft.init.Blocks; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraft.util.StatCollector; 9 | 10 | import java.util.List; 11 | 12 | public class AirtightSealModule extends PowerModuleBase { 13 | public static final String AIRTIGHT_SEAL_MODULE = "Airtight Seal"; 14 | 15 | public AirtightSealModule(List validItems) { 16 | super(validItems); 17 | addInstallCost(new ItemStack(Blocks.glass)); 18 | } 19 | 20 | @Override 21 | public String getCategory() { 22 | return MuseCommonStrings.CATEGORY_ENVIRONMENTAL; 23 | } 24 | 25 | @Override 26 | public String getDataName() { 27 | return AIRTIGHT_SEAL_MODULE; 28 | } 29 | 30 | @Override 31 | public String getLocalizedName() { 32 | return StatCollector.translateToLocal("module.airtightSeal.name"); 33 | } 34 | 35 | @Override 36 | public String getDescription() { 37 | return StatCollector.translateToLocal("module.airtightSeal.desc"); 38 | } 39 | 40 | @Override 41 | public String getTextureFile() { 42 | return "glasspane"; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/misc/BinocularsModule.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.misc 2 | 3 | import net.machinemuse.powersuits.powermodule.PowerModuleBase 4 | import net.machinemuse.utils.{MusePlayerUtils, MuseItemUtils, MuseCommonStrings} 5 | import net.machinemuse.powersuits.item.ItemComponent 6 | import net.minecraft.item.ItemStack 7 | import net.minecraft.entity.player.EntityPlayer 8 | import net.machinemuse.powersuits.control.KeybindKeyHandler 9 | import cpw.mods.fml.common.FMLCommonHandler 10 | import net.machinemuse.api.{ModuleManager, IModularItem} 11 | import net.machinemuse.api.moduletrigger.IPlayerTickModule 12 | import net.minecraft.util.StatCollector 13 | 14 | /** 15 | * Author: MachineMuse (Claire Semple) 16 | * Created: 1:08 AM, 4/24/13 17 | */ 18 | class BinocularsModule(list: java.util.List[IModularItem]) extends PowerModuleBase(list) with IPlayerTickModule { 19 | val FOV_MULTIPLIER = "Field of View" 20 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.laserHologram, 1)) 21 | addBaseProperty(FOV_MULTIPLIER, 0.5) 22 | addTradeoffProperty("FOV multiplier", FOV_MULTIPLIER, 9.5, "%") 23 | addPropertyLocalString(FOV_MULTIPLIER, StatCollector.translateToLocal("module.binoculars.view")) 24 | addPropertyLocalString("FOV multiplier", StatCollector.translateToLocal("module.binoculars.multiplier")) 25 | 26 | override def getCategory: String = MuseCommonStrings.CATEGORY_VISION 27 | 28 | override def getDataName: String = "Binoculars" 29 | 30 | override def getLocalizedName: String = StatCollector.translateToLocal("module.binoculars.name") 31 | 32 | override def getDescription: String = StatCollector.translateToLocal("module.binoculars.desc") 33 | 34 | override def getTextureFile: String = "binoculars" 35 | 36 | override def onPlayerTickActive(player: EntityPlayer, item: ItemStack) { 37 | if (FMLCommonHandler.instance().getEffectiveSide.isClient) { 38 | val fov = KeybindKeyHandler.zoom.getIsKeyPressed match { 39 | case true => ModuleManager.computeModularProperty(item, FOV_MULTIPLIER).toFloat 40 | case false => 0.1f 41 | } 42 | MusePlayerUtils.setFOVMult(player, fov) 43 | } 44 | 45 | } 46 | 47 | override def onPlayerTickInactive(player: EntityPlayer, item: ItemStack) { 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/misc/CitizenJoeStyle.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.misc; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 5 | import net.machinemuse.utils.MuseCommonStrings; 6 | import net.minecraft.util.StatCollector; 7 | 8 | import java.util.List; 9 | 10 | public class CitizenJoeStyle extends PowerModuleBase { 11 | public static final String CITIZEN_JOE_STYLE = "Citizen Joe Style"; 12 | 13 | public CitizenJoeStyle(List validItems) { 14 | super(validItems); 15 | } 16 | 17 | @Override 18 | public String getTextureFile() { 19 | return "greendrone"; 20 | } 21 | 22 | @Override 23 | public String getCategory() { 24 | return MuseCommonStrings.CATEGORY_COSMETIC; 25 | } 26 | 27 | @Override 28 | public String getDataName() { 29 | return CITIZEN_JOE_STYLE; 30 | } 31 | 32 | @Override 33 | public String getLocalizedName() { 34 | return StatCollector.translateToLocal("module.citizenJoe.name"); 35 | } 36 | 37 | @Override 38 | public String getDescription() { 39 | return StatCollector.translateToLocal("module.citizenJoe.desc"); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/misc/CosmeticGlowModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.misc; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 5 | import net.machinemuse.utils.MuseCommonStrings; 6 | import net.minecraft.util.StatCollector; 7 | 8 | import java.util.List; 9 | 10 | public class CosmeticGlowModule extends PowerModuleBase { 11 | public static final String MODULE_GLOW = "Glow Module"; 12 | public static final String RED_GLOW = "Red Glow"; 13 | public static final String GREEN_GLOW = "Green Glow"; 14 | public static final String BLUE_GLOW = "Blue Glow"; 15 | 16 | public CosmeticGlowModule(List validItems) { 17 | super(validItems); 18 | addTradeoffProperty(RED_GLOW, RED_GLOW, 1, "%"); 19 | addTradeoffProperty(GREEN_GLOW, GREEN_GLOW, 1, "%"); 20 | addTradeoffProperty(BLUE_GLOW, BLUE_GLOW, 1, "%"); 21 | addPropertyLocalString(RED_GLOW, StatCollector.translateToLocal("module.cosmeticGlow.red")); 22 | addPropertyLocalString(GREEN_GLOW, StatCollector.translateToLocal("module.cosmeticGlow.green")); 23 | addPropertyLocalString(BLUE_GLOW, StatCollector.translateToLocal("module.cosmeticGlow.blue")); 24 | } 25 | 26 | @Override 27 | public boolean isAllowed() { 28 | return false; 29 | } 30 | 31 | @Override 32 | public String getCategory() { 33 | return MuseCommonStrings.CATEGORY_COSMETIC; 34 | } 35 | 36 | @Override 37 | public String getDataName() { 38 | return MODULE_GLOW; 39 | } 40 | 41 | @Override 42 | public String getLocalizedName() { 43 | return StatCollector.translateToLocal("module.cosmeticGlow.name"); 44 | } 45 | 46 | @Override 47 | public String getDescription() { 48 | return StatCollector.translateToLocal("module.cosmeticGlow.desc"); 49 | } 50 | 51 | @Override 52 | public String getTextureFile() { 53 | return "netherstar"; 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/misc/ThaumGogglesModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.misc; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.moduletrigger.IToggleableModule; 5 | import net.machinemuse.powersuits.item.ItemComponent; 6 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 7 | import net.machinemuse.utils.MuseCommonStrings; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraft.util.StatCollector; 10 | 11 | import java.lang.reflect.Method; 12 | import java.util.List; 13 | 14 | public class ThaumGogglesModule extends PowerModuleBase implements IToggleableModule { 15 | public static final String MODULE_THAUM_GOGGLES = "Aurameter"; 16 | ItemStack gogglesStack = null; 17 | 18 | public ThaumGogglesModule(List validItems) { 19 | super(validItems); 20 | try { 21 | Class tcItems = Class.forName("thaumcraft.api.ItemApi"); 22 | Method getItem = tcItems.getDeclaredMethod("getItem", String.class, int.class); 23 | gogglesStack = (ItemStack) getItem.invoke(null, "itemGoggles", 0); 24 | addInstallCost(ItemComponent.laserHologram.copy()).addInstallCost(gogglesStack); 25 | } catch (Exception e) { 26 | e.printStackTrace(); 27 | this.setIsAllowed(false); 28 | } 29 | } 30 | 31 | @Override 32 | public String getCategory() { 33 | return MuseCommonStrings.CATEGORY_SPECIAL; 34 | } 35 | 36 | @Override 37 | public String getDataName() { 38 | return MODULE_THAUM_GOGGLES; 39 | } 40 | 41 | @Override 42 | public String getLocalizedName() { 43 | return StatCollector.translateToLocal("module.aurameter.name"); 44 | } 45 | 46 | @Override 47 | public String getDescription() { 48 | return StatCollector.translateToLocal("module.aurameter.desc"); 49 | } 50 | 51 | @Override 52 | public String getTextureFile() { 53 | return "bluestar"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/misc/TintModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.misc; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 5 | import net.machinemuse.utils.MuseCommonStrings; 6 | import net.minecraft.util.StatCollector; 7 | 8 | import java.util.List; 9 | 10 | public class TintModule extends PowerModuleBase { 11 | public static String MODULE_TINT = "Custom Colour Module"; 12 | public static final String RED_TINT = "Red Tint"; 13 | public static final String GREEN_TINT = "Green Tint"; 14 | public static final String BLUE_TINT = "Blue Tint"; 15 | 16 | public TintModule(List validItems) { 17 | super(validItems); 18 | addTradeoffProperty("Red Intensity", RED_TINT, 1, "%"); 19 | addTradeoffProperty("Green Intensity", GREEN_TINT, 1, "%"); 20 | addTradeoffProperty("Blue Intensity", BLUE_TINT, 1, "%"); 21 | addPropertyLocalString("Red Tint", StatCollector.translateToLocal("module.tint.red")); 22 | addPropertyLocalString("Green Tint", StatCollector.translateToLocal("module.tint.green")); 23 | addPropertyLocalString("Blue Tint", StatCollector.translateToLocal("module.tint.blue")); 24 | addPropertyLocalString("Red Intensity", StatCollector.translateToLocal("module.tint.intensity.red")); 25 | addPropertyLocalString("Green Intensity", StatCollector.translateToLocal("module.tint.intensity.green")); 26 | addPropertyLocalString("Blue Intensity", StatCollector.translateToLocal("module.tint.intensity.blue")); 27 | } 28 | 29 | @Override 30 | public String getTextureFile() { 31 | return "netherstar"; 32 | } 33 | 34 | @Override 35 | public boolean isAllowed() { 36 | return false; 37 | } 38 | 39 | @Override 40 | public String getCategory() { 41 | return MuseCommonStrings.CATEGORY_COSMETIC; 42 | } 43 | 44 | @Override 45 | public String getDataName() { 46 | return MODULE_TINT; 47 | } 48 | 49 | @Override 50 | public String getLocalizedName() { 51 | return StatCollector.translateToLocal("module.tint.name"); 52 | } 53 | 54 | @Override 55 | public String getDescription() { 56 | return StatCollector.translateToLocal("module.tint.desc"); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/misc/TransparentArmorModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.misc; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.item.ItemComponent; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.machinemuse.utils.MuseItemUtils; 8 | import net.minecraft.util.StatCollector; 9 | 10 | import java.util.List; 11 | 12 | public class TransparentArmorModule extends PowerModuleBase { 13 | public static final String MODULE_TRANSPARENT_ARMOR = "Transparent Armor"; 14 | 15 | public TransparentArmorModule(List validItems) { 16 | super(validItems); 17 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.laserHologram, 1)); 18 | } 19 | 20 | @Override 21 | public boolean isAllowed() { 22 | return false; 23 | } 24 | @Override 25 | public String getTextureFile() { 26 | return "transparentarmor"; 27 | } 28 | 29 | @Override 30 | public String getCategory() { 31 | return MuseCommonStrings.CATEGORY_COSMETIC; 32 | } 33 | 34 | @Override 35 | public String getDataName() { 36 | return MODULE_TRANSPARENT_ARMOR; 37 | } 38 | 39 | @Override 40 | public String getLocalizedName() { 41 | return StatCollector.translateToLocal("module.transparentArmor.name"); 42 | } 43 | 44 | @Override 45 | public String getDescription() { 46 | return StatCollector.translateToLocal("module.transparentArmor.desc"); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/movement/AttributeModifier.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.movement 2 | 3 | import net.minecraft.nbt.NBTTagCompound 4 | 5 | /** 6 | * Author: MachineMuse (Claire Semple) 7 | * Created: 10:10 AM, 8/7/13 8 | */ 9 | case class AttributeModifier(operation: Int, uuid: UUID, amount: Double, attributeName: String, name: String) { 10 | def this(nbt: NBTTagCompound) = this( 11 | nbt.getInteger("Operation"), 12 | new UUID(nbt), 13 | nbt.getDouble("Amount"), 14 | nbt.getString("AttributeName"), 15 | nbt.getString("Name") 16 | ) 17 | 18 | def toNBT:NBTTagCompound = toNBT(new NBTTagCompound) 19 | 20 | def toNBT(nbt: NBTTagCompound) = { 21 | nbt.setInteger("Operation", operation) 22 | uuid.toNBT(nbt) 23 | nbt.setDouble("Amount", amount) 24 | nbt.setString("AttributeName", attributeName) 25 | nbt.setString("Name", name) 26 | nbt 27 | } 28 | } 29 | 30 | case class UUID(least:Long,most:Long) { 31 | def this(nbt: NBTTagCompound) = this( 32 | nbt.getLong("UUIDLeast"), 33 | nbt.getLong("UUIDMost") 34 | ) 35 | 36 | def toNBT(nbt: NBTTagCompound) = { 37 | nbt.setLong("UUIDLeast", least) 38 | nbt.setLong("UUIDMost", most) 39 | } 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/movement/ClimbAssistModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.movement; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.moduletrigger.IPlayerTickModule; 5 | import net.machinemuse.api.moduletrigger.IToggleableModule; 6 | import net.machinemuse.powersuits.item.ItemComponent; 7 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 8 | import net.machinemuse.utils.MuseCommonStrings; 9 | import net.machinemuse.utils.MuseItemUtils; 10 | import net.minecraft.entity.player.EntityPlayer; 11 | import net.minecraft.item.ItemStack; 12 | import net.minecraft.util.StatCollector; 13 | 14 | import java.util.List; 15 | 16 | public class ClimbAssistModule extends PowerModuleBase implements IToggleableModule, IPlayerTickModule { 17 | public static final String MODULE_CLIMB_ASSIST = "Uphill Step Assist"; 18 | 19 | public ClimbAssistModule(List validItems) { 20 | super(validItems); 21 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.servoMotor, 2)); 22 | } 23 | 24 | @Override 25 | public String getCategory() { 26 | return MuseCommonStrings.CATEGORY_MOVEMENT; 27 | } 28 | 29 | @Override 30 | public String getDataName() { 31 | return MODULE_CLIMB_ASSIST; 32 | } 33 | 34 | @Override 35 | public String getLocalizedName() { 36 | return StatCollector.translateToLocal("module.climbAssist.name"); 37 | } 38 | 39 | @Override 40 | public String getDescription() { 41 | return StatCollector.translateToLocal("module.climbAssist.desc"); 42 | } 43 | 44 | @Override 45 | public void onPlayerTickActive(EntityPlayer player, ItemStack item) { 46 | player.stepHeight = 1.001F; 47 | } 48 | 49 | @Override 50 | public void onPlayerTickInactive(EntityPlayer player, ItemStack item) { 51 | if (player.stepHeight == 1.001F) { 52 | player.stepHeight = 0.5001F; 53 | } 54 | } 55 | 56 | @Override 57 | public String getTextureFile() { 58 | // TODO Auto-generated method stub 59 | return "climbassist"; 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/movement/FlightControlModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.movement; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.moduletrigger.IToggleableModule; 5 | import net.machinemuse.powersuits.item.ItemComponent; 6 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 7 | import net.machinemuse.utils.MuseCommonStrings; 8 | import net.machinemuse.utils.MuseItemUtils; 9 | import net.minecraft.util.StatCollector; 10 | 11 | import java.util.List; 12 | 13 | public class FlightControlModule extends PowerModuleBase implements IToggleableModule { 14 | public static final String MODULE_FLIGHT_CONTROL = "Flight Control"; 15 | public static final String FLIGHT_VERTICALITY = "Y-look ratio"; 16 | 17 | public FlightControlModule(List validItems) { 18 | super(validItems); 19 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.controlCircuit, 1)); 20 | addTradeoffProperty("Verticality", FLIGHT_VERTICALITY, 1.0, "%"); 21 | addPropertyLocalString("Verticality", StatCollector.translateToLocal("module.flightControl.verticality")); 22 | addPropertyLocalString(FLIGHT_VERTICALITY, StatCollector.translateToLocal("module.flightControl.ratio")); 23 | } 24 | 25 | @Override 26 | public String getCategory() { 27 | return MuseCommonStrings.CATEGORY_SPECIAL; 28 | } 29 | 30 | @Override 31 | public String getTextureFile() { 32 | return "FlightControlY"; 33 | } 34 | 35 | @Override 36 | public String getDataName() { 37 | return MODULE_FLIGHT_CONTROL; 38 | } 39 | 40 | @Override 41 | public String getLocalizedName() { 42 | return StatCollector.translateToLocal("module.flightControl.name"); 43 | } 44 | 45 | @Override 46 | public String getDescription() { 47 | return StatCollector.translateToLocal("module.flightControl.desc"); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/movement/ShockAbsorberModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.movement; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.moduletrigger.IToggleableModule; 5 | import net.machinemuse.powersuits.item.ItemComponent; 6 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 7 | import net.machinemuse.utils.MuseCommonStrings; 8 | import net.machinemuse.utils.MuseItemUtils; 9 | import net.minecraft.block.Block; 10 | import net.minecraft.init.Blocks; 11 | import net.minecraft.item.ItemStack; 12 | import net.minecraft.util.StatCollector; 13 | 14 | import java.util.List; 15 | 16 | public class ShockAbsorberModule extends PowerModuleBase implements IToggleableModule { 17 | public static final String MODULE_SHOCK_ABSORBER = "Shock Absorber"; 18 | public static final String SHOCK_ABSORB_MULTIPLIER = "Distance Reduction"; 19 | public static final String SHOCK_ABSORB_ENERGY_CONSUMPTION = "Impact Energy consumption"; 20 | 21 | public ShockAbsorberModule(List validItems) { 22 | super(validItems); 23 | addSimpleTradeoff(this, "Power", SHOCK_ABSORB_ENERGY_CONSUMPTION, "J/m", 0, 10, SHOCK_ABSORB_MULTIPLIER, "%", 0, 1); 24 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.servoMotor, 2)); 25 | addInstallCost(new ItemStack(Blocks.wool, 2)); 26 | addPropertyLocalString(SHOCK_ABSORB_MULTIPLIER, StatCollector.translateToLocal("module.shockAbsorber.absorb")); 27 | addPropertyLocalString(SHOCK_ABSORB_ENERGY_CONSUMPTION, StatCollector.translateToLocal("module.shockAbsorber.energy")); 28 | } 29 | 30 | @Override 31 | public String getCategory() { 32 | return MuseCommonStrings.CATEGORY_MOVEMENT; 33 | } 34 | 35 | @Override 36 | public String getDataName() { 37 | return MODULE_SHOCK_ABSORBER; 38 | } 39 | 40 | @Override 41 | public String getLocalizedName() { 42 | return StatCollector.translateToLocal("module.shockAbsorber.name"); 43 | } 44 | 45 | @Override 46 | public String getDescription() { 47 | return StatCollector.translateToLocal("module.shockAbsorber.desc"); 48 | } 49 | 50 | @Override 51 | public String getTextureFile() { 52 | return "shockabsorber"; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/tool/FieldTinkerModule.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.tool 2 | 3 | import net.machinemuse.api.IModularItem 4 | import net.machinemuse.powersuits.powermodule.PowerModuleBase 5 | import net.machinemuse.utils.{MuseItemUtils, MuseCommonStrings} 6 | import net.machinemuse.api.moduletrigger.IRightClickModule 7 | import net.minecraft.entity.player.EntityPlayer 8 | import net.minecraft.world.World 9 | import net.minecraft.item.ItemStack 10 | import net.machinemuse.powersuits.common.ModularPowersuits 11 | import net.machinemuse.powersuits.item.ItemComponent 12 | import net.minecraft.util.StatCollector 13 | 14 | /** 15 | * Created with IntelliJ IDEA. 16 | * User: Claire2 17 | * Date: 4/30/13 18 | * Time: 3:14 PM 19 | * To change this template use File | Settings | File Templates. 20 | */ 21 | class FieldTinkerModule(list: java.util.List[IModularItem]) extends PowerModuleBase(list) with IRightClickModule { 22 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.controlCircuit, 1)) 23 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.servoMotor, 2)) 24 | def getCategory: String = MuseCommonStrings.CATEGORY_SPECIAL 25 | 26 | def getDataName: String = "Field Tinker Module" 27 | 28 | def getLocalizedName: String = StatCollector.translateToLocal("module.fieldTinkerer.name") 29 | 30 | // If lang fails to encode trademark symbol, it's "\u2122" 31 | def getDescription: String = StatCollector.translateToLocal("module.fieldTinkerer.desc") 32 | 33 | def getTextureFile: String = "transparentarmor" 34 | 35 | def onItemUse(itemStack: ItemStack, player: EntityPlayer, world: World, x: Int, y: Int, z: Int, side: Int, hitX: Float, hitY: Float, hitZ: Float) {} 36 | 37 | def onItemUseFirst(itemStack: ItemStack, player: EntityPlayer, world: World, x: Int, y: Int, z: Int, side: Int, hitX: Float, hitY: Float, hitZ: Float): Boolean = {false} 38 | 39 | def onPlayerStoppedUsing(itemStack: ItemStack, world: World, player: EntityPlayer, par4: Int) {} 40 | 41 | def onRightClick(player: EntityPlayer, world: World, item: ItemStack) { 42 | player.openGui(ModularPowersuits, 2, world, player.posX.toInt, player.posY.toInt, player.posZ.toInt) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/tool/GrafterModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.tool; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.common.ModCompatability; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.minecraft.util.StatCollector; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * Created by User: Andrew 13 | * Date: 4/21/13 14 | * Time: 2:02 PM 15 | */ 16 | public class GrafterModule extends PowerModuleBase { 17 | public static final String MODULE_GRAFTER = "Grafter"; 18 | public static final String GRAFTER_ENERGY_CONSUMPTION = "Grafter Energy Consumption"; 19 | public static final String GRAFTER_HEAT_GENERATION = "Grafter Heat Generation"; 20 | 21 | public GrafterModule(List validItems) { 22 | super(validItems); 23 | // addInstallCost(ModCompatability.getForestryItem("grafter", 1)); 24 | addBaseProperty(GRAFTER_ENERGY_CONSUMPTION, 1000, "J"); 25 | addBaseProperty(GRAFTER_HEAT_GENERATION, 20); 26 | addPropertyLocalString(GRAFTER_ENERGY_CONSUMPTION, StatCollector.translateToLocal("module.grafter.energy")); 27 | addPropertyLocalString(GRAFTER_HEAT_GENERATION, StatCollector.translateToLocal("module.grafter.heat")); 28 | } 29 | 30 | @Override 31 | public String getCategory() { 32 | return MuseCommonStrings.CATEGORY_TOOL; 33 | } 34 | 35 | @Override 36 | public String getDataName() { 37 | return MODULE_GRAFTER; 38 | } 39 | 40 | @Override 41 | public String getLocalizedName() { 42 | return StatCollector.translateToLocal("module.grafter.name"); 43 | } 44 | 45 | @Override 46 | public String getDescription() { 47 | return StatCollector.translateToLocal("module.grafter.desc"); 48 | } 49 | 50 | @Override 51 | public String getTextureFile() { 52 | return "grafter"; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/tool/MFFSFieldTeleporterModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.tool; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.powersuits.common.ModCompatability; 5 | import net.machinemuse.powersuits.item.ItemComponent; 6 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 7 | import net.machinemuse.utils.MuseCommonStrings; 8 | import net.machinemuse.utils.MuseItemUtils; 9 | import net.minecraft.item.ItemStack; 10 | import net.minecraft.util.StatCollector; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * Created by User: Andrew2448 16 | * 7:21 PM 4/25/13 17 | */ 18 | public class MFFSFieldTeleporterModule extends PowerModuleBase { 19 | public static final String MODULE_FIELD_TELEPORTER = "MFFS Field Teleporter"; 20 | public static final String FIELD_TELEPORTER_ENERGY_CONSUMPTION = "Field Teleporter Energy Consumption"; 21 | 22 | public MFFSFieldTeleporterModule(List validItems) throws IllegalAccessException, NoSuchFieldException, ClassNotFoundException { 23 | super(validItems); 24 | addBaseProperty(FIELD_TELEPORTER_ENERGY_CONSUMPTION, 20000, "J"); 25 | addPropertyLocalString(FIELD_TELEPORTER_ENERGY_CONSUMPTION, StatCollector.translateToLocal("module.mffsFieldTeleporter.energy")); 26 | ItemStack stack = ModCompatability.getMFFSItem("MFFSitemForcePowerCrystal", 1); 27 | if (stack == null) { 28 | throw new IllegalAccessException("Failed to get MFFS forcefield teleporter"); 29 | } 30 | addInstallCost(stack); 31 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.controlCircuit, 1)); 32 | } 33 | 34 | @Override 35 | public String getCategory() { 36 | return MuseCommonStrings.CATEGORY_TOOL; 37 | } 38 | 39 | @Override 40 | public String getDataName() { 41 | return MODULE_FIELD_TELEPORTER; 42 | } 43 | 44 | @Override 45 | public String getLocalizedName() { 46 | return StatCollector.translateToLocal("module.mffsFieldTeleporter.name"); 47 | } 48 | 49 | @Override 50 | public String getDescription() { 51 | return StatCollector.translateToLocal("module.mffsFieldTeleporter.desc"); 52 | } 53 | 54 | @Override 55 | public String getTextureFile() { 56 | return "fieldteleporter"; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/tool/RedstoneLaser.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.tool 2 | 3 | import net.machinemuse.api.IModularItem 4 | import net.machinemuse.api.moduletrigger.IRightClickModule 5 | import net.machinemuse.powersuits.common.ModularPowersuits 6 | import net.machinemuse.powersuits.item.ItemComponent 7 | import net.machinemuse.powersuits.powermodule.PowerModuleBase 8 | import net.machinemuse.utils.{MuseCommonStrings, MuseItemUtils} 9 | import net.minecraft.entity.player.EntityPlayer 10 | import net.minecraft.item.ItemStack 11 | import net.minecraft.util.StatCollector 12 | import net.minecraft.world.World 13 | import net.minecraftforge.common.util.ForgeDirection 14 | 15 | /** 16 | * Author: MachineMuse (Claire Semple) 17 | * Created: 2:27 PM, 5/8/13 18 | */ 19 | class RedstoneLaser(list: java.util.List[IModularItem]) extends PowerModuleBase(list) with IRightClickModule { 20 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.controlCircuit, 1)) 21 | addInstallCost(MuseItemUtils.copyAndResize(ItemComponent.servoMotor, 2)) 22 | 23 | def getCategory: String = MuseCommonStrings.CATEGORY_SPECIAL 24 | 25 | def getDataName: String = "Redstone Laser" 26 | 27 | def getLocalizedName: String = StatCollector.translateToLocal("module.redstoneLaser.name") 28 | 29 | def getDescription: String = StatCollector.translateToLocal("module.redstoneLaser.desc") 30 | 31 | def getTextureFile: String = "laser" 32 | 33 | def onItemUse(itemStack: ItemStack, player: EntityPlayer, world: World, x: Int, y: Int, z: Int, side: Int, hitX: Float, hitY: Float, hitZ: Float) { 34 | 35 | 36 | } 37 | 38 | def onItemUseFirst(itemStack: ItemStack, player: EntityPlayer, world: World, x: Int, y: Int, z: Int, sideIndex: Int, hitX: Float, hitY: Float, hitZ: Float): Boolean = { 39 | // val side: ForgeDirection = ForgeDirection.getOrientation(sideIndex) 40 | // val xo = x + side.offsetX 41 | // val yo = y + side.offsetY 42 | // val zo = z + side.offsetZ 43 | // val redlaserid = RedstoneLaser 44 | // world.getBlock(xo, yo, zo) match { 45 | // case 0 => world.setBlock(xo, yo, zo, redlaserid) 46 | // case `redlaserid` => world.setBlockMetadataWithNotify(xo, yo, zo, redlaserid, world.getBlockMetadata(xo, yo, zo) + 1) 47 | // case _ => 48 | // } 49 | true 50 | } 51 | 52 | def onPlayerStoppedUsing(itemStack: ItemStack, world: World, player: EntityPlayer, par4: Int) {} 53 | 54 | def onRightClick(player: EntityPlayer, world: World, item: ItemStack) { 55 | player.openGui(ModularPowersuits, 2, world, player.posX.toInt, player.posY.toInt, player.posZ.toInt) 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/powersuits/powermodule/weapon/SonicWeaponModule.java: -------------------------------------------------------------------------------- 1 | package net.machinemuse.powersuits.powermodule.weapon; 2 | 3 | import net.machinemuse.api.IModularItem; 4 | import net.machinemuse.api.moduletrigger.IRightClickModule; 5 | import net.machinemuse.powersuits.powermodule.PowerModuleBase; 6 | import net.machinemuse.utils.MuseCommonStrings; 7 | import net.minecraft.entity.player.EntityPlayer; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraft.util.StatCollector; 10 | import net.minecraft.world.World; 11 | 12 | import java.util.List; 13 | 14 | public class SonicWeaponModule extends PowerModuleBase implements IRightClickModule { 15 | 16 | public static final String MODULE_SONIC_WEAPON = "Sonic Weapon"; 17 | 18 | public SonicWeaponModule(List validItems) { 19 | super(validItems); 20 | } 21 | 22 | @Override 23 | public String getCategory() { 24 | return MuseCommonStrings.CATEGORY_WEAPON; 25 | } 26 | 27 | @Override 28 | public String getDataName() { 29 | return MODULE_SONIC_WEAPON; 30 | } 31 | 32 | @Override 33 | public String getLocalizedName() { 34 | return StatCollector.translateToLocal("module.sonicWeapon.name"); 35 | } 36 | 37 | @Override 38 | public String getDescription() { 39 | return StatCollector.translateToLocal("module.sonicWeapon.desc"); 40 | } 41 | 42 | @Override 43 | public String getTextureFile() { 44 | return "soundweapon"; 45 | } 46 | 47 | @Override 48 | public void onRightClick(EntityPlayer playerClicking, World world, ItemStack item) { 49 | 50 | } 51 | 52 | @Override 53 | public void onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { 54 | 55 | } 56 | 57 | @Override 58 | public boolean onItemUseFirst(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) { 59 | return false; 60 | } 61 | 62 | @Override 63 | public void onPlayerStoppedUsing(ItemStack itemStack, World world, EntityPlayer player, int par4) { 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/ElectricItemUtils.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils 2 | 3 | import net.machinemuse.api.electricity.ElectricAdapter 4 | import net.machinemuse.powersuits.item.ItemComponent 5 | import net.minecraft.entity.player.EntityPlayer 6 | import net.minecraft.item.ItemStack 7 | import scala.collection.JavaConverters._ 8 | import scala.collection.mutable.ListBuffer 9 | 10 | object ElectricItemUtils { 11 | final val MAXIMUM_ENERGY: String = "Maximum Energy" 12 | final val CURRENT_ENERGY: String = "Current Energy" 13 | 14 | def electricItemsEquipped(player: EntityPlayer): Seq[ElectricAdapter] = { 15 | val electrics = new ListBuffer[ElectricAdapter]() 16 | for (i <- 0 until player.inventory.getSizeInventory) { 17 | val adapter: ElectricAdapter = ElectricAdapter.wrap(player.inventory.getStackInSlot(i)) 18 | if (adapter != null) { 19 | electrics.prepend(adapter) 20 | } 21 | } 22 | electrics 23 | } 24 | 25 | def getPlayerEnergy(player: EntityPlayer): Double = { 26 | (0.0 /: electricItemsEquipped(player)) { 27 | case (avail, adapter) => avail + adapter.getCurrentEnergy 28 | } 29 | } 30 | 31 | def getMaxEnergy(player: EntityPlayer): Double = { 32 | (0.0 /: electricItemsEquipped(player)) { 33 | case (avail, adapter) => avail + adapter.getMaxEnergy 34 | } 35 | } 36 | 37 | def drainPlayerEnergy(player: EntityPlayer, drainAmount: Double) { 38 | (drainAmount /: electricItemsEquipped(player)) { 39 | case (drainleft, adapter) => drainleft - adapter.drainEnergy(drainleft) 40 | } 41 | } 42 | 43 | def givePlayerEnergy(player: EntityPlayer, joulesToGive: Double) { 44 | (joulesToGive /: electricItemsEquipped(player)) { 45 | case (joulesleft, adapter) => joulesleft - adapter.giveEnergy(joulesleft) 46 | } 47 | } 48 | 49 | def jouleValueOfComponent(stackInCost: ItemStack): Double = { 50 | stackInCost.getItem match { 51 | case i: ItemComponent => (stackInCost.getItemDamage - ItemComponent.lvcapacitor.getItemDamage) match { 52 | case 0 => 20000 * stackInCost.stackSize 53 | case 1 => 100000 * stackInCost.stackSize 54 | case 2 => 750000 * stackInCost.stackSize 55 | case _ => 0 56 | } 57 | case _ => 0 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/MuseFileUtils.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils 2 | 3 | import java.io.{FileInputStream, FileOutputStream, File} 4 | import net.machinemuse.numina.general.MuseLogger 5 | 6 | /** 7 | * Author: MachineMuse (Claire Semple) 8 | * Created: 11:07 PM, 6/28/13 9 | */ 10 | object MuseFileUtils { 11 | def copyFile(oldFile: File, newFile: File) { 12 | if (!newFile.exists) { 13 | newFile.createNewFile() 14 | } 15 | new FileOutputStream(newFile).getChannel transferFrom(new FileInputStream(oldFile).getChannel, 0, Long.MaxValue) 16 | MuseLogger.logDebug("Successfully moved MPS config to new location. :D") 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/ScalaNBT.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils 2 | 3 | import net.minecraft.nbt.NBTTagCompound 4 | 5 | /** 6 | * Author: MachineMuse (Claire Semple) 7 | * Created: 5:47 AM, 29/04/13 8 | */ 9 | class ScalaNBT(val nbt: NBTTagCompound) extends NBTTagCompound { 10 | implicit def wrap(nbt: NBTTagCompound) = new ScalaNBT(nbt) 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/render/BufferMapper.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils.render 2 | 3 | /** 4 | * Author: MachineMuse (Claire Semple) 5 | * Created: 6:36 PM, 5/15/13 6 | */ 7 | object BufferMapper { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/render/DepthBuffer.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils.render 2 | 3 | import java.nio.ByteBuffer 4 | import org.lwjgl.opengl.GL11._ 5 | 6 | /** 7 | * Author: MachineMuse (Claire Semple) 8 | * Created: 3:29 AM, 5/16/13 9 | */ 10 | class DepthBuffer(val texDimension: Int) { 11 | 12 | // Allocate IDs for a depth buffer 13 | val textureID = glGenTextures() 14 | 15 | // Bind each of the new buvfer IDs 16 | glBindTexture(GL_TEXTURE_2D, textureID) 17 | 18 | // Set up texture parameters 19 | glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) 20 | 21 | // Allocate space in gpu for the depth buffer 22 | glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, texDimension, texDimension, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, null: ByteBuffer) 23 | glBindTexture(GL_TEXTURE_2D, 0) 24 | 25 | def bindRead() { 26 | glPushAttrib(GL_TEXTURE_BIT) 27 | glBindTexture(GL_TEXTURE_2D, textureID) 28 | } 29 | 30 | def unbindRead() { 31 | glPopAttrib() 32 | } 33 | 34 | def copyWrite() { 35 | glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, texDimension, texDimension) 36 | } 37 | 38 | def clear() { 39 | glClear(GL_DEPTH_BUFFER_BIT) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/render/MuseShaders.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils.render 2 | 3 | import net.machinemuse.powersuits.common.Config 4 | 5 | /** 6 | * Author: MachineMuse (Claire Semple) 7 | * Created: 8:57 PM, 5/15/13 8 | */ 9 | object MuseShaders { 10 | //val gaussianVertices = new MuseVertexShader(Config.RESOURCE_PREFIX + "shaders/gaussianblur.frag") 11 | val blurVertex = Config.RESOURCE_PREFIX + "shaders/gaussianblur.vert" 12 | val blurFragment = Config.RESOURCE_PREFIX + "shaders/gaussianblur.frag" 13 | val hBlurProgram = new ShaderProgram(blurVertex, blurFragment) 14 | val vBlurProgram = new ShaderProgram(blurVertex, blurFragment) 15 | 16 | val depthOcclusionVertex = Config.RESOURCE_PREFIX + "shaders/depthocclusion.vert" 17 | val depthOcclusionFragment = Config.RESOURCE_PREFIX + "shaders/depthocclusion.frag" 18 | val depthOcclusionProgram = new ShaderProgram(depthOcclusionVertex, depthOcclusionFragment) 19 | 20 | val depthApplicatorVertex = Config.RESOURCE_PREFIX + "shaders/depthapplicator.vert" 21 | val depthApplicatorFragment = Config.RESOURCE_PREFIX + "shaders/depthapplicator.frag" 22 | val depthApplicatorProgram = new ShaderProgram(depthApplicatorVertex, depthApplicatorFragment) 23 | } 24 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/render/MuseStencilManager.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils.render 2 | 3 | import org.lwjgl.opengl.GL11._ 4 | 5 | /** 6 | * Author: MachineMuse (Claire Semple) 7 | * Created: 5:00 PM, 5/15/13 8 | */ 9 | object MuseStencilManager { 10 | val stencilMask = 0x10 11 | 12 | def stencilOn() { 13 | glStencilMask(stencilMask) 14 | glEnable(GL_STENCIL) 15 | } 16 | 17 | def stencilOff() { 18 | 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/scala/net/machinemuse/utils/render/MuseTexture.scala: -------------------------------------------------------------------------------- 1 | package net.machinemuse.utils.render 2 | 3 | /** 4 | * Author: MachineMuse (Claire Semple) 5 | * Created: 6:28 PM, 5/15/13 6 | */ 7 | class MuseTexture { 8 | 9 | } 10 | --------------------------------------------------------------------------------