many changes for 1.7. Much remains.

This commit is contained in:
MachineMuse 2014-09-08 16:30:10 -06:00
parent 91f75bc654
commit c278000679
70 changed files with 710 additions and 1415 deletions

385
build.xml
View file

@ -1,385 +0,0 @@
<project name="ModularPowersuits" default="install" basedir=".">
<property environment="env"/>
<!-- Versions -->
<property name="build.ver" value="0.10.0"/>
<property name="fullversion" value="${build.ver}-${env.BUILD_NUMBER}"/>
<property name="scala.version" value="2.10.1"/>
<property name="mcp.version" value="805"/>
<property name="minecraft.version" value="1.6.4"/>
<property name="forgemajor.version" value="9.11.1"/>
<property name="forgebuild" value="965"/>
<property name="forge.version" value="${minecraft.version}-${forgemajor.version}.${forgebuild}"/>
<property name="forgeant.version" value="${forgemajor.version}.${forgebuild}"/>
<property name="ic2api.version" value="1.118.401-lf"/>
<property name="icbmapi.version" value="1.3.2.216"/>
<property name="thermexapi.version" value="2.3.0b"/>
<property name="galacticraftapi.version" value="2"/>
<property name="mfrapi.version" value="2.5.2B2-642"/>
<property name="forestryapi.version" value="2.3.0.1"/>
<property name="thaumcraftapi.version" value="0.0.5-3.0.4b"/>
<!-- Directories -->
<property name="download.dir" value="downloads"/>
<property name="src.dir" value="src"/>
<property name="lib.dir" value="${src.dir}/lib"/>
<property name="build.dir" value="build/${minecraft.version}"/>
<property name="classes.dir" value="${build.dir}/packaging"/>
<property name="forge.dir" value="${build.dir}/forge"/>
<property name="dist.dir" value="dist"/>
<property name="mcp.dir" value="${forge.dir}/mcp"/>
<property name="mcplib.dir" value="${mcp.dir}/lib"/>
<property name="mcpsrc.dir" value="${mcp.dir}/src/minecraft"/>
<property name="resources.dir" value="assets/powersuits"/>
<!-- URLs -->
<property name="apisource.url" value="http://machinemuse.minecraftforge.net"/>
<!-- Name -->
<property name="package.meta-inf" value="META-INF"/>
<!-- Version Checking -->
<property file="${forge.dir}/forgeversion.properties"/>
<condition property="forge-already-installed">
<equals arg1="${forge.build.number}" arg2="${forgebuild}"/>
</condition>
<available property="forge-exists" file="${download.dir}/forge-${forge.version}-src.zip"/>
<!--<available property="already-compiled" file="${classes.dir}/net/machinemuse"/>-->
<mkdir dir="${download.dir}"/>
<mkdir dir="${dist.dir}"/>
<mkdir dir="build"/>
<mkdir dir="${build.dir}"/>
<condition property="should-download-ant-contrib">
<or>
<available file="${download.dir}/ant-contrib/ant-contrib-1.0b3.jar"/>
<available file="${download.dir}/forge-${forge.version}-src.zip"/>
</or>
</condition>
<macrodef name="get-api">
<attribute name="filename"/>
<attribute name="into"/>
<sequential>
<!--<if>-->
<!--<available file="${download.dir}/@{filename}"/>-->
<!--<then>-->
<echo message="Downloading @{filename}... "/>
<get src="${apisource.url}/@{filename}" dest="${download.dir}/@{filename}"/>
<!--</then>-->
<!--</if>-->
<echo message="Extracting @{filename}... "/>
<mkdir dir="@{into}"/>
<unzip src="${download.dir}/@{filename}" dest="@{into}"/>
</sequential>
</macrodef>
<!-- Dependencies -->
<target name="extract-apis" depends="setup-forge">
<get-api filename="industrialcraft-2-api_${ic2api.version}.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/ic2/api/energy/tile"/>
<move todir="${mcpsrc.dir}/ic2/api/">
<fileset dir="${download.dir}/ic2/api/recipe"/>
</move>
<move file="${download.dir}/ic2/api/item/ICustomElectricItem.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move file="${download.dir}/ic2/api/item/ISpecialElectricItem.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move file="${download.dir}/ic2/api/item/IElectricItemManager.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move file="${download.dir}/ic2/api/item/IElectricItem.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move file="${download.dir}/ic2/api/item/ElectricItem.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move file="${download.dir}/ic2/api/item/Items.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move file="${download.dir}/ic2/api/Direction.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move file="${download.dir}/ic2/api/tile/IWrenchable.java" todir="${mcpsrc.dir}/ic2/api/"/>
<move todir="${mcpsrc.dir}/ic2/api/energy/tile/">
<fileset dir="${download.dir}/ic2/api/energy/tile/"/>
</move>
<echo message="Downloading Atomic Science API... "/>
<get src="http://machinemuse.net/Atomic-Science-1.1.0.16-api.zip" dest="${download.dir}/Atomic-Science-1.1.0.16-api.zip"/>
<echo message="Extracting Atomic-Science-1.1.0.16-api.zip... "/>
<unzip src="${download.dir}/Atomic-Science-1.1.0.16-api.zip" dest="${download.dir}/"/>
<mkdir dir="${mcpsrc.dir}/atomicscience/api/poison"/>
<move file="${download.dir}/atomicscience/api/IAntiPoisonArmor.java"
todir="${mcpsrc.dir}/atomicscience/api"/>
<get-api filename="ThermalExpansion-API-${thermexapi.version}.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/thermalexpansion/api/core"/>
<move file="${download.dir}/thermalexpansion/api/item/ItemRegistry.java"
todir="${mcpsrc.dir}/thermalexpansion/api/item"/>
<get-api filename="CoFHCore-API.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/cofh/api/tileentity"/>
<move file="${download.dir}/cofh/api/tileentity/IReconfigurableFacing.java"
todir="${mcpsrc.dir}/cofh/api/tileentity"/>
<get-api filename="CoFHLib-pre1.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/cofh/api/energy"/>
<move file="${download.dir}/cofh/api/energy/IEnergyContainerItem.java"
todir="${mcpsrc.dir}/cofh/api/energy"/>
<get-api filename="galacticraft-src-${galacticraftapi.version}.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/micdoodle8/mods/galacticraft/api/item"/>
<move file="${download.dir}/micdoodle8/mods/galacticraft/api/item/IBreathableArmor.java"
todir="${mcpsrc.dir}/micdoodle8/mods/galacticraft/api/item"/>
<get-api filename="Railcraft_API_latest.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/mods/railcraft/api/core/items"/>
<mkdir dir="${mcpsrc.dir}/buildcraft/api/tools/"/>
<move file="${download.dir}/src/minecraft/mods/railcraft/api/core/items/IToolCrowbar.java"
todir="${mcpsrc.dir}/mods/railcraft/api/core/items"/>
<move file="${download.dir}/src/minecraft/buildcraft/api/tools/IToolWrench.java"
todir="${mcpsrc.dir}/buildcraft/api/tools"/>
<get-api filename="MFR-API-${mfrapi.version}.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/powercrystals/minefactoryreloaded/api"/>
<move file="${download.dir}/powercrystals/minefactoryreloaded/api/IToolHammerAdvanced.java"
todir="${mcpsrc.dir}/powercrystals/minefactoryreloaded/api"/>
<get-api filename="forestry-api-${forestryapi.version}.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/forestry/api/apiculture"/>
<mkdir dir="${mcpsrc.dir}/forestry/api/arboriculture"/>
<mkdir dir="${mcpsrc.dir}/forestry/api/core"/>
<move file="${download.dir}/forestry/api/apiculture/IArmorApiarist.java"
todir="${mcpsrc.dir}/forestry/api/apiculture"/>
<move file="${download.dir}/forestry/api/arboriculture/IToolGrafter.java"
todir="${mcpsrc.dir}/forestry/api/arboriculture"/>
<move file="${download.dir}/forestry/api/core/ItemInterface.java" todir="${mcpsrc.dir}/forestry/api/core"/>
<get-api filename="Thaumcraft4.0.5-API.zip" into="${download.dir}/thaumcraft" />
<mkdir dir="${mcpsrc.dir}/thaumcraft/api/nodes" />
<move file="${download.dir}/thaumcraft/api/IGoggles.java" todir="${mcpsrc.dir}/thaumcraft/api" />
<move file="${download.dir}/thaumcraft/api/nodes/IRevealer.java" todir="${mcpsrc.dir}/thaumcraft/api/nodes" />
<get-api filename="MFFS2_API.zip" into="${download.dir}"/>
<mkdir dir="${mcpsrc.dir}/mods/mffs/api"/>
<move file="${download.dir}/mods/mffs/api/IFieldTeleporter.java" todir="${mcpsrc.dir}/mods/mffs/api"/>
<move file="${download.dir}/mods/mffs/api/IMFFS_Wrench.java" todir="${mcpsrc.dir}/mods/mffs/api"/>
<get src="${apisource.url}/scalalib-${scala.version}.zip"
dest="${mcplib.dir}/scalalib-${scala.version}.zip"/>
<delete>
<fileset dir="${mcplib.dir}" includes="numina-*.jar"/>
</delete>
<move todir="${mcplib.dir}">
<fileset dir="${dist.dir}" includes="numina-*-deobf.jar"/>
</move>
<get src="${apisource.url}/slick-util.jar"
dest="${download.dir}/slick-util.jar"/>
<copy file="${download.dir}/slick-util.jar" todir="${mcp.dir}/lib"/>
</target>
<target name="update-names" depends="copy-source">
<get src="${apisource.url}/methods.csv" dest="${mcp.dir}/conf/methods.csv"/>
<get src="${apisource.url}/fields.csv" dest="${mcp.dir}/conf/fields.csv"/>
<exec dir="${mcp.dir}" executable="cmd" osfamily="windows" failonerror="true">
<arg line="/c updatenames.bat"/>
</exec>
<exec dir="${mcp.dir}" executable="bash" osfamily="unix" failonerror="true">
<arg value="-c"/>
<arg value="echo Yes | ./updatenames.sh"/>
</exec>
</target>
<target name="install" depends="build">
<delete>
<fileset dir="${dist.dir}">
<include name="ModularPowersuits-${minecraft.version}-*"/>
</fileset>
</delete>
<copy todir="${dist.dir}">
<fileset dir="${classes.dir}/assets/powersuits/recipes" />
</copy>
<copy file="${download.dir}/slick-util.jar" todir="${dist.dir}"/>
<!--<get src="http://files.minecraftforge.net/fmllibs/scala-library.jar"-->
<!--dest="${dist.dir}/scala-library.jar"/>-->
<jar destfile="${dist.dir}/ModularPowersuits-${minecraft.version}-${fullversion}.jar" basedir="${classes.dir}"/>
<delete dir="${classes.dir}"/>
</target>
<target name="rebuild" depends="clean,install">
</target>
<target name="forgeinstalled.check">
</target>
<target name="copy-source">
<delete dir="${mcpsrc.dir}/net/machinemuse"/>
<copy todir="${mcpsrc.dir}/net/machinemuse">
<fileset dir="${src.dir}/minecraft/net/machinemuse"/>
<filterset>
<filter token="MOD_VERSION" value="${fullversion}"/>
<filter token="MC_VERSION" value="${minecraft.version}"/>
<filter token="DEPENDENCIES"
value="*/ dependencies = &quot;required-after:Forge@[${forgeant.version},);after:IC2;required-after:numina;after:RenderPlayerAPI&quot;, /*"/>
</filterset>
</copy>
<copy todir="${mcpsrc.dir}/api/player/model" file="${src.dir}/minecraft/api/player/model/ModelPlayer.java"/>
</target>
<target name="build" depends="extract-apis,copy-source,update-names" unless="already-compiled">
<echo message="Applying Scala mcp patch..."/>
<get src="http://machinemuse.minecraftforge.net/scalapatch.sh" dest="${mcp.dir}/conf/scalapatch.sh"/>
<!--<unzip src="${download.dir}/scalapatch.zip" dest="${mcp.dir}"/>-->
<exec dir="${mcp.dir}/conf" executable="sh" osfamily="unix" failonerror="false">
<arg value="scalapatch.sh"/>
</exec>
<!-- Recompile -->
<exec dir="${mcp.dir}" executable="cmd" osfamily="windows" failonerror="true">
<arg line="/c recompile.bat"/>
</exec>
<exec dir="${mcp.dir}" executable="sh" osfamily="unix" failonerror="true">
<arg value="recompile.sh"/>
</exec>
<!-- Reobfuscation -->
<exec dir="${mcp.dir}" executable="cmd" osfamily="windows">
<arg line="/c reobfuscate_srg.bat"/>
</exec>
<exec dir="${mcp.dir}" executable="sh" osfamily="unix">
<arg value="reobfuscate_srg.sh"/>
</exec>
<copy todir="${classes.dir}">
<fileset dir="${mcp.dir}/reobf/minecraft"/>
</copy>
<mkdir dir="${classes.dir}/assets"/>
<copy todir="${classes.dir}/assets/powersuits">
<fileset dir="${resources.dir}"/>
</copy>
<copy todir="${classes.dir}" file="pack.mcmeta">
<filterset>
<filter token="MC_VERSION" value="${minecraft.version}"/>
<filter token="MOD_VERSION" value="${fullversion}"/>
</filterset>
</copy>
<copy todir="${classes.dir}" file="mcmod.info">
<filterset>
<filter token="MC_VERSION" value="${minecraft.version}"/>
<filter token="MOD_VERSION" value="${fullversion}"/>
</filterset>
</copy>
</target>
<target name="setup-forge" depends="download-forge" unless="forge-already-installed">
<unzip dest="${build.dir}">
<fileset dir="${download.dir}">
<include name="forge-${forge.version}-src.zip"/>
</fileset>
</unzip>
<!-- Change executables' permitions -->
<chmod file="${forge.dir}/install.sh" perm="+x"/>
<!-- if your building on OSX these 2 should be executable -->
<!-- Install forge -->
<delete dir="${mcp.dir}" failonerror="no"/>
<exec dir="${forge.dir}" executable="cmd" osfamily="windows" inputstring="Yes\n">
<arg line="/c install.cmd"/>
</exec>
<exec dir="${forge.dir}" executable="sh" osfamily="unix" inputstring="Yes\n">
<arg value="install.sh"/>
</exec>
<chmod file="${mcp.dir}/updatemd5.sh" perm="+x"/>
<chmod file="${mcp.dir}/recompile.sh" perm="+x"/>
<chmod file="${mcp.dir}/reobfuscate.sh" perm="+x"/>
<chmod file="${mcp.dir}/runtime/bin/astyle-osx" perm="+x"/>
<chmod file="${mcp.dir}/runtime/bin/jad-osx" perm="+x"/>
<mkdir dir="${mcpsrc.dir}/net/machinemuse"/>
<!-- Copy libraries
<copy todir="${mcp.dir}/lib">
<fileset dir="lib">
<patternset includes="*.jar" />
</fileset>
</copy> -->
</target>
<target name="download-forge" depends="download-ant-contrib" unless="forge-exists">
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${download.dir}/ant-contrib/ant-contrib-1.0b3.jar"/>
<fileset dir="${download.dir}/ant-contrib/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</taskdef>
<echo message="Downloading forge... "/>
<!--
<getMethod url="http://files.minecraftforge.net/minecraftforge-src-${forge.version}.zip"
responseDataFile="${download.dir}/minecraftforge-src-${forge.version}.zip">
<header name="User-Agent" value="Ant-${ant.version}/${ant.java.version}"/>
</getMethod>
-->
<get src="http://machinemuse.net/forge-${forge.version}-src.zip"
dest="${download.dir}/forge-${forge.version}-src.zip"/>
</target>
<target name="download-ant-contrib" unless="should-download-ant-contrib">
<echo message="Getting: ant-contrib"/>
<mkdir dir="${download.dir}/tmp"/>
<mkdir dir="${download.dir}/ant-contrib/lib"/>
<get src="http://sourceforge.net/projects/ant-contrib/files/ant-contrib/1.0b3/ant-contrib-1.0b3-bin.zip/download"
dest="${download.dir}/tmp/ant-contrib-1.0b3-bin.zip"/>
<get src="http://archive.apache.org/dist/commons/codec/binaries/commons-codec-1.6-bin.zip"
dest="${download.dir}/tmp/commons-codec-1.6-bin.zip"/>
<unzip src="${download.dir}/tmp/ant-contrib-1.0b3-bin.zip" dest="${download.dir}"/>
<unzip src="${download.dir}/tmp/commons-codec-1.6-bin.zip" dest="${download.dir}/tmp"/>
<move todir="${download.dir}/ant-contrib/lib">
<fileset file="${download.dir}/tmp/commons-codec-1.6/commons-codec-1.6.jar"/>
</move>
<!-- Delete useless files -->
<delete dir="${download.dir}/ant-contrib/docs"/>
<delete dir="${download.dir}/tmp"/>
</target>
<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${download.dir}"/>
</target>
</project>

View file

@ -1,39 +0,0 @@
package net.machinemuse.api
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.{ItemArmor, ItemStack}
import net.machinemuse.utils.ElectricItemUtils
import net.machinemuse.powersuits.powermodule.armor.{HazmatModule, ApiaristArmorModule}
import forestry.api.apiculture.IArmorApiarist
import net.minecraft.entity.EntityLivingBase
import atomicscience.api.IAntiPoisonArmor
/**
* Author: MachineMuse (Claire Semple)
* Created: 6:54 AM, 4/28/13
*/
trait ArmorTraits extends ItemArmor with IModularItem
with ApiaristArmor
with RadiationArmor {
}
trait ApiaristArmor extends IArmorApiarist {
def protectPlayer(player: EntityPlayer, armor: ItemStack, cause: String, doProtect: Boolean): Boolean = {
if (ModuleManager.itemHasActiveModule(armor, ApiaristArmorModule.MODULE_APIARIST_ARMOR)) {
ElectricItemUtils.drainPlayerEnergy(player, ModuleManager.computeModularProperty(armor, ApiaristArmorModule.APIARIST_ARMOR_ENERGY_CONSUMPTION))
true
} else false
}
}
trait RadiationArmor extends ItemArmor with IAntiPoisonArmor {
def isProtectedFromPoison(itemStack: ItemStack, EntityLivingBase: EntityLivingBase, poisontype: String): Boolean = {
ModuleManager.itemHasActiveModule(itemStack, HazmatModule.MODULE_HAZMAT)
}
def getArmorType:Int = this.armorType
def onProtectFromPoison(itemStack: ItemStack, EntityLivingBase: EntityLivingBase, poisontype: String) {}
}

View file

@ -1,9 +1,9 @@
package net.machinemuse.api;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import java.util.List;
import java.util.Map;
@ -11,11 +11,11 @@ import java.util.Map;
public interface IPowerModule {
public abstract List<ItemStack> getInstallCost();
public abstract Icon getIcon(ItemStack item);
public abstract IIcon getIcon(ItemStack item);
public abstract String getStitchedTexture(ItemStack item);
public abstract void registerIcon(IconRegister registry);
public abstract void registerIcon(IIconRegister registry);
public abstract String getCategory();

View file

@ -113,7 +113,7 @@ public class ModuleManager {
}
public static void tagAddModule(NBTTagCompound tag, IPowerModule module) {
tag.setCompoundTag(module.getDataName(), module.getNewTag());
tag.setTag(module.getDataName(), module.getNewTag());
}
public static void itemAddModule(ItemStack stack, IPowerModule moduleType) {

View file

@ -28,7 +28,7 @@ object MuseItemTag {
val stackTag: NBTTagCompound = if (stack.hasTagCompound) stack.getTagCompound else new NBTTagCompound
stack.setTagCompound(stackTag)
val properties: NBTTagCompound = if (stackTag.hasKey(NBTPREFIX)) stackTag.getCompoundTag(NBTPREFIX) else new NBTTagCompound
stackTag.setCompoundTag(NBTPREFIX, properties)
stackTag.setTag(NBTPREFIX, properties)
properties
}

View file

@ -1,92 +1,87 @@
package net.machinemuse.api
import mods.railcraft.api.core.items.IToolCrowbar
import net.machinemuse.utils.ElectricItemUtils
import net.machinemuse.powersuits.powermodule.tool.{MFFSFieldTeleporterModule, OmniWrenchModule}
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.entity.item.EntityMinecart
import buildcraft.api.tools.IToolWrench
import cpw.mods.fml.common.FMLCommonHandler
import mods.mffs.api.IFieldTeleporter
import powercrystals.minefactoryreloaded.api.IToolHammerAdvanced
import net.minecraft.util.ChatMessageComponent
/**
* Author: MachineMuse (Claire Semple)
* Created: 5:06 PM, 29/04/13
*/
trait OmniWrench
extends ModularWrench
with ModularCrowbar
with ModularHammer
with ForceFieldManipulator {
}
trait ModularCrowbar extends IToolCrowbar {
def canWhack(player: EntityPlayer, crowbar: ItemStack, x: Int, y: Int, z: Int): Boolean = {
return ModuleManager.itemHasActiveModule(crowbar, OmniWrenchModule.MODULE_OMNI_WRENCH)
}
def onWhack(player: EntityPlayer, crowbar: ItemStack, x: Int, y: Int, z: Int) {
player.swingItem
}
def canLink(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart): Boolean = {
return ModuleManager.itemHasActiveModule(crowbar, OmniWrenchModule.MODULE_OMNI_WRENCH)
}
def onLink(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart) {
player.swingItem
}
def canBoost(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart): Boolean = {
return ModuleManager.itemHasActiveModule(crowbar, OmniWrenchModule.MODULE_OMNI_WRENCH)
}
def onBoost(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart) {
player.swingItem
}
}
// Buildcraft wrench
trait ModularWrench
extends IToolWrench {
def canWrench(player: EntityPlayer, x: Int, y: Int, z: Int): Boolean = {
if (player.getCurrentEquippedItem != null && player.getCurrentEquippedItem.getItem.isInstanceOf[IModularItem]) {
return ModuleManager.itemHasActiveModule(player.getCurrentEquippedItem, OmniWrenchModule.MODULE_OMNI_WRENCH)
}
return false
}
def wrenchUsed(player: EntityPlayer, x: Int, y: Int, z: Int) {
}
}
// MFR wrench
trait ModularHammer extends IToolHammerAdvanced {
def isActive(stack: ItemStack): Boolean = ModuleManager.itemHasActiveModule(stack, OmniWrenchModule.MODULE_OMNI_WRENCH)
}
trait ForceFieldManipulator extends IFieldTeleporter {
def canFieldTeleport(player: EntityPlayer, stack: ItemStack, teleportCost: Int): Boolean = {
if (ModuleManager.itemHasModule(stack, MFFSFieldTeleporterModule.MODULE_FIELD_TELEPORTER)) {
if (ElectricItemUtils.getPlayerEnergy(player) > ModuleManager.computeModularProperty(stack, MFFSFieldTeleporterModule.FIELD_TELEPORTER_ENERGY_CONSUMPTION)) {
return true
}
else if (FMLCommonHandler.instance.getEffectiveSide.isServer) {
player.sendChatToPlayer(ChatMessageComponent.createFromText("[Field Security] Could not teleport through forcefield. 20,000J is required to teleport."))
}
}
return false
}
def onFieldTeleportSuccess(player: EntityPlayer, stack: ItemStack, teleportCost: Int) {
ElectricItemUtils.drainPlayerEnergy(player, ModuleManager.computeModularProperty(stack, MFFSFieldTeleporterModule.FIELD_TELEPORTER_ENERGY_CONSUMPTION))
}
def onFieldTeleportFailed(player: EntityPlayer, stack: ItemStack, teleportCost: Int) {
}
}
//package net.machinemuse.api
//
//import cpw.mods.fml.common.FMLCommonHandler
//import net.machinemuse.powersuits.powermodule.tool.{MFFSFieldTeleporterModule, OmniWrenchModule}
//import net.machinemuse.utils.ElectricItemUtils
//import net.minecraft.entity.item.EntityMinecart
//import net.minecraft.entity.player.EntityPlayer
//import net.minecraft.item.ItemStack
//
///**
// * Author: MachineMuse (Claire Semple)
// * Created: 5:06 PM, 29/04/13
// */
//trait OmniWrench
// extends ModularWrench
// with ModularCrowbar
// with ModularHammer
// with ForceFieldManipulator {
//
//}
//
//trait ModularCrowbar extends IToolCrowbar {
// def canWhack(player: EntityPlayer, crowbar: ItemStack, x: Int, y: Int, z: Int): Boolean = {
// return ModuleManager.itemHasActiveModule(crowbar, OmniWrenchModule.MODULE_OMNI_WRENCH)
// }
//
// def onWhack(player: EntityPlayer, crowbar: ItemStack, x: Int, y: Int, z: Int) {
// player.swingItem
// }
//
// def canLink(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart): Boolean = {
// return ModuleManager.itemHasActiveModule(crowbar, OmniWrenchModule.MODULE_OMNI_WRENCH)
// }
//
// def onLink(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart) {
// player.swingItem
// }
//
// def canBoost(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart): Boolean = {
// return ModuleManager.itemHasActiveModule(crowbar, OmniWrenchModule.MODULE_OMNI_WRENCH)
// }
//
// def onBoost(player: EntityPlayer, crowbar: ItemStack, cart: EntityMinecart) {
// player.swingItem
// }
//}
//
//// Buildcraft wrench
//trait ModularWrench
// extends IToolWrench {
//
// def canWrench(player: EntityPlayer, x: Int, y: Int, z: Int): Boolean = {
// if (player.getCurrentEquippedItem != null && player.getCurrentEquippedItem.getItem.isInstanceOf[IModularItem]) {
// return ModuleManager.itemHasActiveModule(player.getCurrentEquippedItem, OmniWrenchModule.MODULE_OMNI_WRENCH)
// }
// return false
// }
//
// def wrenchUsed(player: EntityPlayer, x: Int, y: Int, z: Int) {
// }
//}
//
//// MFR wrench
//trait ModularHammer extends IToolHammerAdvanced {
// def isActive(stack: ItemStack): Boolean = ModuleManager.itemHasActiveModule(stack, OmniWrenchModule.MODULE_OMNI_WRENCH)
//}
//
//trait ForceFieldManipulator extends IFieldTeleporter {
// def canFieldTeleport(player: EntityPlayer, stack: ItemStack, teleportCost: Int): Boolean = {
// if (ModuleManager.itemHasModule(stack, MFFSFieldTeleporterModule.MODULE_FIELD_TELEPORTER)) {
// if (ElectricItemUtils.getPlayerEnergy(player) > ModuleManager.computeModularProperty(stack, MFFSFieldTeleporterModule.FIELD_TELEPORTER_ENERGY_CONSUMPTION)) {
// return true
// }
// else if (FMLCommonHandler.instance.getEffectiveSide.isServer) {
// player.sendChatToPlayer(ChatMessageComponent.createFromText("[Field Security] Could not teleport through forcefield. 20,000J is required to teleport."))
// }
// }
// return false
// }
//
// def onFieldTeleportSuccess(player: EntityPlayer, stack: ItemStack, teleportCost: Int) {
// ElectricItemUtils.drainPlayerEnergy(player, ModuleManager.computeModularProperty(stack, MFFSFieldTeleporterModule.FIELD_TELEPORTER_ENERGY_CONSUMPTION))
// }
//
// def onFieldTeleportFailed(player: EntityPlayer, stack: ItemStack, teleportCost: Int) {
// }
//}

View file

@ -1,18 +1,14 @@
package net.machinemuse.api.electricity
import net.minecraft.item.ItemStack
import net.machinemuse.powersuits.common.ModCompatability
import ic2.api.item.{ElectricItem, IElectricItem}
import net.machinemuse.api.electricity.ElectricConversions._
import cofh.api.energy.IEnergyContainerItem
object ElectricAdapter {
def wrap(stack: ItemStack): ElectricAdapter = {
if (stack == null) return null
stack.getItem match {
case i: MuseElectricItem => new MuseElectricAdapter(stack)
case i: IEnergyContainerItem => if (ModCompatability.isCoFHCoreLoaded) new TEElectricAdapter(stack) else null
case i: IElectricItem => if (ModCompatability.isIndustrialCraftLoaded) new IC2ElectricAdapter(stack) else null
// case i: IEnergyContainerItem => if (ModCompatability.isCoFHCoreLoaded) new TEElectricAdapter(stack) else null
// case i: IElectricItem => if (ModCompatability.isIndustrialCraftLoaded) new IC2ElectricAdapter(stack) else null
case _ => null
}
}
@ -41,29 +37,30 @@ class MuseElectricAdapter(val stack: ItemStack) extends ElectricAdapter {
def giveEnergy(provided: Double) = item.giveEnergyTo(stack, provided)
}
class IC2ElectricAdapter(val stack: ItemStack) extends ElectricAdapter {
val item = stack.getItem.asInstanceOf[IElectricItem]
def getCurrentEnergy: Double = museEnergyFromEU(ElectricItem.discharge(stack, Integer.MAX_VALUE, getTier, true, true))
def getMaxEnergy: Double = museEnergyFromEU(item.getMaxCharge(stack))
def drainEnergy(requested: Double) = museEnergyFromEU(ElectricItem.discharge(stack, museEnergyToEU(requested).toInt, getTier, true, false))
def giveEnergy(provided: Double): Double = museEnergyFromEU(ElectricItem.charge(stack, museEnergyToEU(provided).toInt, getTier, true, false))
def getTier = item.getTier(stack)
}
class TEElectricAdapter(val stack: ItemStack) extends ElectricAdapter {
val item = stack.getItem.asInstanceOf[IEnergyContainerItem]
def getCurrentEnergy: Double = museEnergyFromRF(item.getEnergyStored(stack))
def getMaxEnergy: Double = museEnergyFromRF(item.getMaxEnergyStored(stack))
def drainEnergy(requested: Double): Double = museEnergyFromRF(item.extractEnergy(stack, museEnergyToRF(requested), false))
def giveEnergy(provided: Double): Double = museEnergyFromRF(item.receiveEnergy(stack, museEnergyToRF(provided), false))
}
//
//class IC2ElectricAdapter(val stack: ItemStack) extends ElectricAdapter {
// val item = stack.getItem.asInstanceOf[IElectricItem]
//
// def getCurrentEnergy: Double = museEnergyFromEU(ElectricItem.discharge(stack, Integer.MAX_VALUE, getTier, true, true))
//
// def getMaxEnergy: Double = museEnergyFromEU(item.getMaxCharge(stack))
//
// def drainEnergy(requested: Double) = museEnergyFromEU(ElectricItem.discharge(stack, museEnergyToEU(requested).toInt, getTier, true, false))
//
// def giveEnergy(provided: Double): Double = museEnergyFromEU(ElectricItem.charge(stack, museEnergyToEU(provided).toInt, getTier, true, false))
//
// def getTier = item.getTier(stack)
//}
//
//class TEElectricAdapter(val stack: ItemStack) extends ElectricAdapter {
// val item = stack.getItem.asInstanceOf[IEnergyContainerItem]
//
// def getCurrentEnergy: Double = museEnergyFromRF(item.getEnergyStored(stack))
//
// def getMaxEnergy: Double = museEnergyFromRF(item.getMaxEnergyStored(stack))
//
// def drainEnergy(requested: Double): Double = museEnergyFromRF(item.extractEnergy(stack, museEnergyToRF(requested), false))
//
// def giveEnergy(provided: Double): Double = museEnergyFromRF(item.receiveEnergy(stack, museEnergyToRF(provided), false))
//
//}

View file

@ -1,12 +1,10 @@
package net.machinemuse.api.electricity
import net.minecraft.item.ItemStack
import net.machinemuse.utils.{ElectricItemUtils, MuseItemUtils}
import ic2.api.item.ICustomElectricItem
import net.machinemuse.api.electricity.ElectricConversions._
import net.machinemuse.api.ModuleManager
import cofh.api.energy.IEnergyContainerItem
import cpw.mods.fml.common.Optional
import net.machinemuse.api.ModuleManager
import net.machinemuse.api.electricity.ElectricConversions._
import net.machinemuse.utils.{ElectricItemUtils, MuseItemUtils}
import net.minecraft.item.ItemStack
/**
* Author: MachineMuse (Claire Semple)
@ -15,8 +13,9 @@ import cpw.mods.fml.common.Optional
@Optional.Interface(iface = "ic2.api.item.ICustomElectricItem", modid = "IC2", striprefs = true)
@Optional.Interface(iface = "cofh.api.energy.IEnergyContainerItem", modid = "CoFHCore", striprefs = true)
trait MuseElectricItem
extends ICustomElectricItem // IC2
with IEnergyContainerItem {
// extends ICustomElectricItem // IC2
// with IEnergyContainerItem
{
// ICBM
/**
* Call to get the energy of an item
@ -85,10 +84,6 @@ trait MuseElectricItem
// IC2
def canProvideEnergy(itemStack: ItemStack): Boolean = true
def getChargedItemId(itemStack: ItemStack): Int = itemStack.itemID
def getEmptyItemId(itemStack: ItemStack): Int = itemStack.itemID
def getMaxCharge(itemStack: ItemStack): Int = museEnergyToEU(getCurrentEnergy(itemStack)).asInstanceOf[Int]
def getTier(itemStack: ItemStack): Int = ElectricConversions.getTier(itemStack)

View file

@ -77,7 +77,7 @@ class CosmeticGui(val player: EntityPlayer, val worldx:Int, val worldy:Int, val
}
super.drawScreen(x, y, z)
if (Config.canUseShaders) {
val screen: ScaledResolution = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight)
val screen: ScaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight)
GlowBuffer.drawFullScreen(screen)
}
}

View file

@ -5,13 +5,13 @@ import net.machinemuse.numina.render.MuseTextureUtils;
import net.machinemuse.numina.render.RenderState;
import net.machinemuse.utils.render.MuseRenderer;
import net.minecraft.block.Block;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import org.lwjgl.opengl.GL11;
public class EnergyMeter extends HeatMeter {
public void draw(double xpos, double ypos, double value) {
MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT());
Icon icon = Block.waterStill.getIcon(0, 0);
IIcon icon = Block.waterStill.getIcon(0, 0);
GL11.glLineWidth(0.5f);
RenderState.on2D();
RenderState.blendingOn();

View file

@ -6,7 +6,7 @@ import net.machinemuse.numina.render.MuseTextureUtils;
import net.machinemuse.numina.render.RenderState;
import net.machinemuse.powersuits.common.Config;
import net.minecraft.block.Block;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import org.lwjgl.opengl.GL11;
public class HeatMeter {
@ -17,7 +17,7 @@ public class HeatMeter {
MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT());
RenderState.blendingOn();
RenderState.on2D();
Icon icon = Block.lavaStill.getIcon(0, 0);
IIcon icon = Block.lavaStill.getIcon(0, 0);
drawFluid(xpos, ypos, value, icon);
drawGlass(xpos, ypos);
RenderState.off2D();
@ -25,7 +25,7 @@ public class HeatMeter {
MuseTextureUtils.popTexture();
}
public void drawFluid(double xpos, double ypos, double value, Icon icon) {
public void drawFluid(double xpos, double ypos, double value, IIcon icon) {
double bottomY = (ypos + ysize);
double topY = (ypos + ysize * (1 - value));

View file

@ -1,7 +1,7 @@
package net.machinemuse.general.gui;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.util.Icon;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
/**
* MuseIcon is just a helper class to make it more convenient to have multiple sprite sheets and to keep all the icon indices in one place.
@ -99,7 +99,7 @@ public class MuseIcon {
public static final MuseIcon PUNCHY = new MuseIcon("jetboots");
protected String texturename;
protected Icon icon;
protected IIcon icon;
public MuseIcon(String texturename) {
super();
@ -111,11 +111,11 @@ public class MuseIcon {
return texturename;
}
public Icon getIconRegistration() {
public IIcon getIconRegistration() {
return icon;
}
public void register(IconRegister iconRegister) {
public void register(IIconRegister iconRegister) {
icon = iconRegister.registerIcon(ICON_PREFIX + texturename);
}

View file

@ -1,17 +1,16 @@
package net.machinemuse.general.gui.clickable;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.Player;
import cpw.mods.fml.relauncher.Side;
import net.machinemuse.numina.geometry.Colour;
import net.machinemuse.numina.geometry.MusePoint2D;
import net.machinemuse.numina.network.PacketSender;
import net.machinemuse.powersuits.network.packets.MusePacketToggleRequest;
import net.machinemuse.utils.MuseItemUtils;
import net.machinemuse.utils.render.MuseRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.util.ChatMessageComponent;
import org.lwjgl.input.Keyboard;
import java.util.ArrayList;
@ -56,11 +55,11 @@ public class ClickableKeybinding extends ClickableButton {
for (ClickableModule module : boundModules) {
String valstring = toggleval ? " on" : " off";
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
player.sendChatToPlayer(ChatMessageComponent.createFromText("Toggled " + module.getModule().getDataName() + valstring));
player.sendChatMessage("Toggled " + module.getModule().getDataName() + valstring);
}
MuseItemUtils.toggleModuleForPlayer(player, module.getModule().getDataName(), toggleval);
MusePacketToggleRequest toggleRequest = new MusePacketToggleRequest((Player) player, module.getModule().getDataName(), toggleval);
player.sendQueue.addToSendQueue(toggleRequest.getPacket131());
MusePacketToggleRequest toggleRequest = new MusePacketToggleRequest(player, module.getModule().getDataName(), toggleval);
PacketSender.sendToServer(toggleRequest);
}
toggleval = !toggleval;
}

View file

@ -1,20 +1,20 @@
package net.machinemuse.general.gui.frame
import java.util
import net.machinemuse.general.gui.clickable.ClickableSlider
import net.machinemuse.numina.general.MuseLogger
import net.machinemuse.numina.geometry.{Colour, DrawableMuseRect, MusePoint2D, MuseRect}
import net.machinemuse.numina.network.PacketSender
import net.machinemuse.powersuits.item.ItemPowerArmor
import net.machinemuse.powersuits.network.packets.MusePacketColourInfo
import net.machinemuse.utils.MuseItemUtils
import net.machinemuse.utils.render.GuiIcons
import GuiIcons._
import scala.collection.mutable
import scala.Array
import net.machinemuse.powersuits.item.ItemPowerArmor
import net.minecraft.nbt.NBTTagIntArray
import net.machinemuse.powersuits.network.packets.MusePacketColourInfo
import cpw.mods.fml.common.network.Player
import net.machinemuse.utils.render.GuiIcons._
import net.minecraft.client.Minecraft
import scala.Some
import net.machinemuse.numina.general.MuseLogger
import net.machinemuse.numina.geometry.{DrawableMuseRect, MusePoint2D, Colour, MuseRect}
import net.minecraft.nbt.NBTTagIntArray
import scala.collection.mutable
/**
* Author: MachineMuse (Claire Semple)
@ -26,7 +26,7 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b
val gslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 22), border.width - 10, "Green")
val bslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 34), border.width - 10, "Blue")
def colours: Array[Int] = getOrCreateColourTag.map(e => e.intArray).getOrElse(Array.empty)
def colours: Array[Int] = getOrCreateColourTag.map(e => e.func_150302_c /*getIntArray()*/ ).getOrElse(Array.empty)
var selectedSlider: Option[ClickableSlider] = None
var selectedColour: Int = 0
@ -37,7 +37,6 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b
val renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem.getItem)
if (renderSpec.hasKey("colours") && renderSpec.getTag("colours").isInstanceOf[NBTTagIntArray]) Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
else {
val nbt = new NBTTagIntArray("colours")
itemSelector.getSelectedItem.getItem.getItem match {
case itembase: ItemPowerArmor =>
val intArray: Array[Int] = Array(itembase.getColorFromItemStack(itemSelector.getSelectedItem.getItem).getInt, itembase.getGlowFromItemStack(itemSelector.getSelectedItem.getItem).getInt)
@ -48,11 +47,21 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b
}
val player = Minecraft.getMinecraft.thePlayer
if (player.worldObj.isRemote)
player.sendQueue.addToSendQueue(new MusePacketColourInfo(player.asInstanceOf[Player], itemSelector.getSelectedItem.inventorySlot, colours).getPacket131)
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
}
}
def setColourTagMaybe(newarray: Array[Int]): Option[NBTTagIntArray] = {
if (itemSelector.getSelectedItem == null) return None
val renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem.getItem)
renderSpec.setTag("colours", new NBTTagIntArray(newarray))
val player = Minecraft.getMinecraft.thePlayer
if (player.worldObj.isRemote)
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray])
}
def importColours = {
val colours = mutable.Buffer.empty[Int]
colours
@ -78,7 +87,7 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b
colours(selectedColour) = Colour.getInt(rslider.value, gslider.value, bslider.value, 1.0)
val player = Minecraft.getMinecraft.thePlayer
if (player.worldObj.isRemote)
player.sendQueue.addToSendQueue(new MusePacketColourInfo(player.asInstanceOf[Player], itemSelector.getSelectedItem.inventorySlot, colours).getPacket131)
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours))
}
})
}
@ -125,10 +134,8 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b
} else if (colourCol == colours.size) {
MuseLogger.logDebug("Adding")
getOrCreateColourTag.map(e => {
e.intArray = (e.intArray :+ Colour.WHITE.getInt)
val player = Minecraft.getMinecraft.thePlayer
if (player.worldObj.isRemote)
player.sendQueue.addToSendQueue(new MusePacketColourInfo(player.asInstanceOf[Player], itemSelector.getSelectedItem.inventorySlot, e.intArray).getPacket131)
setColourTagMaybe(getIntArray(e) :+ Colour.WHITE.getInt) // append White
})
}
@ -136,19 +143,20 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b
// remove
if (y > border.bottom - 24 && y < border.bottom - 16 && x > border.left + 8 + selectedColour * 8 && x < border.left + 16 + selectedColour * 8) {
getOrCreateColourTag.map(e => {
if (e.intArray.size > 1) {
e.intArray = e.intArray diff Array(e.intArray(selectedColour))
if (getIntArray(e).size > 1) {
setColourTagMaybe( getIntArray(e) diff Array(getIntArray(e)(selectedColour)))
decrAbove = selectedColour
if (selectedColour == e.intArray.size) {
if (selectedColour == getIntArray(e).size) {
selectedColour = selectedColour - 1
}
val player = Minecraft.getMinecraft.thePlayer
if (player.worldObj.isRemote)
player.sendQueue.addToSendQueue(new MusePacketColourInfo(player.asInstanceOf[Player], itemSelector.getSelectedItem.inventorySlot, e.intArray).getPacket131)
PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, e.func_150302_c))
}
})
}
}
def getIntArray(e:NBTTagIntArray) = e.func_150302_c()
}

View file

@ -1,18 +1,18 @@
package net.machinemuse.general.gui.frame;
import cpw.mods.fml.common.network.Player;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.machinemuse.api.IPowerModule;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.numina.geometry.Colour;
import net.machinemuse.numina.geometry.MusePoint2D;
import net.machinemuse.general.gui.clickable.ClickableButton;
import net.machinemuse.general.gui.clickable.ClickableItem;
import net.machinemuse.general.gui.clickable.ClickableModule;
import net.machinemuse.numina.sound.Musique;
import net.machinemuse.general.sound.SoundLoader;
import net.machinemuse.numina.geometry.Colour;
import net.machinemuse.numina.geometry.MusePoint2D;
import net.machinemuse.numina.network.MusePacket;
import net.machinemuse.numina.network.PacketSender;
import net.machinemuse.numina.sound.Musique;
import net.machinemuse.powersuits.network.packets.MusePacketInstallModuleRequest;
import net.machinemuse.powersuits.network.packets.MusePacketSalvageModuleRequest;
import net.machinemuse.utils.MuseItemUtils;
@ -154,10 +154,10 @@ public class InstallSalvageFrame extends ScrollableFrame {
private void doSalvage() {
IPowerModule module = targetModule.getSelectedModule().getModule();
MusePacket newpacket = new MusePacketSalvageModuleRequest(
(Player) player,
player,
targetItem.getSelectedItem().inventorySlot,
module.getDataName());
player.sendQueue.addToSendQueue(newpacket.getPacket131());
PacketSender.sendToServer(newpacket.getPacket131());
}
/**
@ -171,10 +171,10 @@ public class InstallSalvageFrame extends ScrollableFrame {
Musique.playClientSound(SoundLoader.SOUND_GUI_INSTALL, 1);
// Now send request to server to make it legit
MusePacket newpacket = new MusePacketInstallModuleRequest(
(Player) player,
player,
targetItem.getSelectedItem().inventorySlot,
module.getDataName());
player.sendQueue.addToSendQueue(newpacket.getPacket131());
PacketSender.sendToServer(newpacket.getPacket131());
}
}
}

View file

@ -1,6 +1,5 @@
package net.machinemuse.general.gui.frame;
import cpw.mods.fml.common.network.Player;
import net.machinemuse.api.IPowerModule;
import net.machinemuse.api.IPropertyModifier;
import net.machinemuse.api.ModuleManager;
@ -9,6 +8,7 @@ import net.machinemuse.general.gui.clickable.ClickableTinkerSlider;
import net.machinemuse.numina.geometry.Colour;
import net.machinemuse.numina.geometry.MusePoint2D;
import net.machinemuse.numina.network.MusePacket;
import net.machinemuse.numina.network.PacketSender;
import net.machinemuse.powersuits.network.packets.MusePacketTweakRequest;
import net.machinemuse.powersuits.powermodule.PowerModule;
import net.machinemuse.powersuits.powermodule.PropertyModifierLinearAdditive;
@ -143,9 +143,9 @@ public class ModuleTweakFrame extends ScrollableFrame {
if (selectedSlider != null && itemTarget.getSelectedItem() != null && moduleTarget.getSelectedModule() != null) {
ClickableItem item = itemTarget.getSelectedItem();
IPowerModule module = moduleTarget.getSelectedModule().getModule();
MusePacket tweakRequest = new MusePacketTweakRequest((Player) player, item.inventorySlot, module.getDataName(), selectedSlider.name(),
MusePacket tweakRequest = new MusePacketTweakRequest(player, item.inventorySlot, module.getDataName(), selectedSlider.name(),
selectedSlider.value());
player.sendQueue.addToSendQueue(tweakRequest.getPacket131());
PacketSender.sendToServer(tweakRequest.getPacket131());
}
if (button == 0) {
selectedSlider = null;

View file

@ -1,18 +1,18 @@
package net.machinemuse.general.gui.frame
import net.machinemuse.powersuits.client.render.modelspec.{ModelRegistry, ModelPartSpec, ModelSpec}
import net.machinemuse.utils.MuseItemUtils
import org.lwjgl.opengl.GL11._
import net.machinemuse.general.gui.clickable.ClickableItem
import net.minecraft.nbt.NBTTagCompound
import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo
import net.minecraft.client.Minecraft
import cpw.mods.fml.common.network.Player
import net.minecraft.item.ItemArmor
import net.machinemuse.utils.render.{MuseRenderer, GuiIcons}
import net.machinemuse.numina.general.{MuseLogger, MuseMathUtils}
import net.machinemuse.numina.geometry.{MuseRect, Colour, MuseRelativeRect}
import net.machinemuse.numina.geometry.{Colour, MuseRect, MuseRelativeRect}
import net.machinemuse.numina.network.PacketSender
import net.machinemuse.numina.render.RenderState
import net.machinemuse.powersuits.client.render.modelspec.{ModelPartSpec, ModelRegistry, ModelSpec}
import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo
import net.machinemuse.utils.MuseItemUtils
import net.machinemuse.utils.render.{GuiIcons, MuseRenderer}
import net.minecraft.client.Minecraft
import net.minecraft.item.ItemArmor
import net.minecraft.nbt.NBTTagCompound
import org.lwjgl.opengl.GL11._
/**
* Author: MachineMuse (Claire Semple)
@ -48,7 +48,7 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame
if (!getRenderTag.hasKey(name)) {
val k = new NBTTagCompound()
spec.multiSet(k, None, None, None)
getRenderTag.setCompoundTag(name, k)
getRenderTag.setTag(name, k)
k
} else {
getRenderTag.getCompoundTag(name)
@ -84,7 +84,7 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame
val oldindex = spec.getColourIndex(e)
if (oldindex >= index && oldindex > 0) {
spec.setColourIndex(e, oldindex - 1)
if (player.worldObj.isRemote) player.sendQueue.addToSendQueue(new MusePacketCosmeticInfo(player.asInstanceOf[Player], getSelectedItem.inventorySlot, tagname, e).getPacket131)
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, e).getPacket131)
}
})
@ -117,7 +117,7 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame
RenderState.texturelessOn()
Colour.LIGHTBLUE.doGL()
glBegin(GL_TRIANGLES)
import MuseMathUtils._
import net.machinemuse.numina.general.MuseMathUtils._
if (open) {
glVertex2d(border.left + 3, clampDouble(border.top + 3, min, max))
glVertex2d(border.left + 5, clampDouble(border.top + 7, min, max))
@ -155,7 +155,7 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame
val tagname = ModelRegistry.makeName(spec)
val player = Minecraft.getMinecraft.thePlayer
renderTag.removeTag(ModelRegistry.makeName(spec))
if (player.worldObj.isRemote) player.sendQueue.addToSendQueue(new MusePacketCosmeticInfo(player.asInstanceOf[Player], getSelectedItem.inventorySlot, tagname, new NBTTagCompound()).getPacket131)
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, new NBTTagCompound()).getPacket131)
updateItems
true
}
@ -164,7 +164,7 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame
val player = Minecraft.getMinecraft.thePlayer
val tagdata = getOrMakeSpecTag(spec)
spec.setGlow(tagdata, false)
if (player.worldObj.isRemote) player.sendQueue.addToSendQueue(new MusePacketCosmeticInfo(player.asInstanceOf[Player], getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
updateItems
true
}
@ -173,7 +173,7 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame
val player = Minecraft.getMinecraft.thePlayer
val tagdata = getOrMakeSpecTag(spec)
spec.setGlow(tagdata, true)
if (player.worldObj.isRemote) player.sendQueue.addToSendQueue(new MusePacketCosmeticInfo(player.asInstanceOf[Player], getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
updateItems
true
}
@ -187,7 +187,7 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame
val player = Minecraft.getMinecraft.thePlayer
val tagdata = getOrMakeSpecTag(spec)
spec.setColourIndex(tagdata, columnNumber)
if (player.worldObj.isRemote) player.sendQueue.addToSendQueue(new MusePacketCosmeticInfo(player.asInstanceOf[Player], getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131)
true
}

View file

@ -2,7 +2,7 @@ package net.machinemuse.general.sound;
import net.machinemuse.numina.general.MuseLogger;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.SubscribeEvent;
public class SoundLoader {
/**
@ -32,7 +32,7 @@ public class SoundLoader {
public static final String SOUND_SWIMASSIST = SOUND_PREFIX + "SwimAssist";
public static final String SOUND_ELECTROLYZER = SOUND_PREFIX + "WaterElectrolyzer";
@ForgeSubscribe
@SubscribeEvent
public void onSoundLoad(SoundLoadEvent event) {
for (String soundFile : soundFiles) {
try {

View file

@ -7,13 +7,13 @@ import net.machinemuse.general.gui.MuseIcon;
import net.machinemuse.powersuits.common.Config;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection;
import java.util.Random;
@ -40,7 +40,7 @@ public class BlockLuxCapacitor extends Block {
setResistance(10.0F);
// Sound to play when player steps on the block
setStepSound(Block.soundMetalFootstep);
setStepSound(Block.soundTypeMetal);
// How much light is stopped by this block; 0 for air, 255 for fully
// opaque.
@ -84,9 +84,8 @@ public class BlockLuxCapacitor extends Block {
return AxisAlignedBB.getAABBPool().getAABB(x + x1, y + y1, z + z1, x + x2, y + y2, z + z2);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegister) {
public void registerIcons(IIconRegister iconRegister) {
this.blockIcon = iconRegister.registerIcon(MuseIcon.ICON_PREFIX + "bluelight");
}
@ -129,7 +128,7 @@ public class BlockLuxCapacitor extends Block {
* Returns the bounding box of the wired rectangular prism to render.
*/
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
TileEntity te = world.getBlockTileEntity(x, y, z);
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileEntityLuxCapacitor) {
ForgeDirection side = ((TileEntityLuxCapacitor) te).side;
return createAABBForSide(side, x, y, z);
@ -142,7 +141,7 @@ public class BlockLuxCapacitor extends Block {
* cleared to be reused)
*/
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
TileEntity te = world.getBlockTileEntity(x, y, z);
TileEntity te = world.getTileEntity(x, y, z);
if (te instanceof TileEntityLuxCapacitor) {
ForgeDirection side = ((TileEntityLuxCapacitor) te).side;
return createAABBForSide(side, x, y, z);
@ -151,7 +150,7 @@ public class BlockLuxCapacitor extends Block {
}
public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int x, int y, int z) {
TileEntity te = par1IBlockAccess.getBlockTileEntity(x, y, z);
TileEntity te = par1IBlockAccess.getTileEntity(x, y, z);
if (te instanceof TileEntityLuxCapacitor) {
ForgeDirection side = ((TileEntityLuxCapacitor) te).side;
float x1 = bbMin(side.offsetX);

View file

@ -8,10 +8,10 @@ import net.machinemuse.powersuits.common.Config;
import net.machinemuse.powersuits.common.ModularPowersuits;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
@ -26,7 +26,7 @@ import net.minecraftforge.common.MinecraftForge;
public class BlockTinkerTable extends Block {
protected int renderType;
public static int assignedBlockID;
public static Icon energyIcon;
public static IIcon energyIcon;
public BlockTinkerTable setRenderType(int id) {
this.renderType = id;
@ -90,7 +90,7 @@ public class BlockTinkerTable extends Block {
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegister) {
public void registerIcons(IIconRegister iconRegister) {
this.blockIcon = iconRegister.registerIcon(MuseIcon.ICON_PREFIX + "heatresistantplating");
energyIcon = blockIcon;
}

View file

@ -1,14 +1,11 @@
package net.machinemuse.powersuits.block;
import net.machinemuse.numina.general.MuseLogger;
import net.machinemuse.numina.tileentity.MuseTileEntity;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.Packet132TileEntityData;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityLuxCapacitor extends TileEntity {
public class TileEntityLuxCapacitor extends MuseTileEntity {
public double red;
public double green;
public double blue;
@ -62,20 +59,6 @@ public class TileEntityLuxCapacitor extends TileEntity {
}
}
@Override
public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt) {
readFromNBT(pkt.data);
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
@Override
public Packet getDescriptionPacket() {
NBTTagCompound tag = new NBTTagCompound();
writeToNBT(tag);
return new Packet132TileEntityData(xCoord, yCoord, zCoord, 0, tag);
}
public ForgeDirection side;
@Override

View file

@ -11,6 +11,7 @@ import net.machinemuse.numina.general.MuseLogger;
import net.machinemuse.numina.network.MusePacket;
import net.machinemuse.numina.network.MusePacketHandler;
import net.machinemuse.numina.network.MusePacketModeChangeRequest;
import net.machinemuse.numina.network.PacketSender;
import net.machinemuse.numina.render.RenderGameOverlayEventHandler;
import net.machinemuse.powersuits.block.TileEntityLuxCapacitor;
import net.machinemuse.powersuits.block.TileEntityTinkerTable;
@ -68,7 +69,7 @@ public class ClientProxy extends CommonProxy {
@Override
public void registerRenderers() {
toolRenderer = new ToolRenderer();
MinecraftForgeClient.registerItemRenderer(ModularPowersuits.powerTool.itemID, toolRenderer);
MinecraftForgeClient.registerItemRenderer(ModularPowersuits.powerTool, toolRenderer);
int tinkTableRenderID = RenderingRegistry.getNextAvailableRenderId();
TinkerTableRenderer tinkTableRenderer = new TinkerTableRenderer(tinkTableRenderID);
@ -117,7 +118,7 @@ public class ClientProxy extends CommonProxy {
KeyBindingRegistry.registerKeyBinding(keybindHandler);
playerTickHandler = new PlayerTickHandler();
TickRegistry.registerTickHandler(playerTickHandler, Side.CLIENT);
MinecraftForge.EVENT_BUS.register(playerTickHandler);
// TickRegistry.registerTickHandler(playerTickHandler, Side.SERVER);
renderTickHandler = new RenderTickHandler();
@ -137,9 +138,9 @@ public class ClientProxy extends CommonProxy {
@Override
public void sendModeChange(int dMode, String newMode) {
EntityClientPlayerMP player= Minecraft.getMinecraft().thePlayer;
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
RenderGameOverlayEventHandler.updateSwap((int) Math.signum(dMode));
MusePacket modeChangePacket = new MusePacketModeChangeRequest((Player) player, newMode, player.inventory.currentItem);
player.sendQueue.addToSendQueue(modeChangePacket.getPacket131());
MusePacket modeChangePacket = new MusePacketModeChangeRequest(player, newMode, player.inventory.currentItem);
PacketSender.sendToServer(modeChangePacket);
}
}

View file

@ -55,7 +55,7 @@ trait ArmorModel extends ModelBiped {
def prep(entity: Entity, par2: Float, par3: Float, par4: Float, par5: Float, par6: Float, scale: Float) {
try {
val entLive: EntityLivingBase = entity.asInstanceOf[EntityLivingBase]
val stack: ItemStack = entLive.getCurrentItemOrArmor(0)
val stack: ItemStack = entLive.getEquipmentInSlot(0)
this.heldItemRight = if (stack != null) 1 else 0
this.isSneak = entLive.isSneaking
this.aimedBow = entLive.asInstanceOf[EntityPlayer].getItemInUse != null

View file

@ -6,6 +6,7 @@ import net.machinemuse.utils.MuseStringUtils
import net.minecraft.nbt.NBTTagCompound
import net.machinemuse.numina.general.MuseLogger
import net.machinemuse.numina.geometry.Colour
import net.minecraft.util.ResourceLocation
/**
* Author: MachineMuse (Claire Semple)
@ -17,38 +18,38 @@ object DefaultModelSpec {
val tex = "/assets/powersuits/textures/models/diffuse.png"
def loadDefaultModel: Option[ModelSpec] = {
loadModel("/assets/powersuits/models/mps_helm.obj", tex.split(";")).map(model => {
loadModel(new ResourceLocation("powersuits:models/mps_helm.obj"), tex.split(";")).map(model => {
makeEntries(Head, 0, 0, false, "helm_main;helm_tube_entry1;helm_tubes;helm_tube_entry2".split(";"), model)
makeEntries(Head, 0, 1, true, "visor".split(";"), model)
model
})
loadModel("/assets/powersuits/models/mps_arms.obj", tex.split(";")).map(model => {
loadModel(new ResourceLocation("powersuits:models/mps_arms.obj"), tex.split(";")).map(model => {
makeEntries(RightArm, 1, 0, false, "arms3".split(";"), model)
makeEntries(RightArm, 1, 1, true, "crystal_shoulder_2".split(";"), model)
makeEntries(LeftArm, 1, 0, false, "arms2".split(";"), model)
makeEntries(LeftArm, 1, 1, true, "crystal_shoulder_1".split(";"), model)
model
})
loadModel("/assets/powersuits/models/mps_chest.obj", tex.split(";")).map(model => {
loadModel(new ResourceLocation("powersuits:models/mps_chest.obj"), tex.split(";")).map(model => {
makeEntries(Body, 1, 0, false, "belt;chest_main;polySurface36;backpack;chest_padding".split(";"), model)
makeEntries(Body, 1, 1, true, "crystal_belt".split(";"), model)
model
})
loadModel("/assets/powersuits/models/mps_pantaloons.obj", tex.split(";")).map(model => {
loadModel(new ResourceLocation("powersuits:models/mps_pantaloons.obj"), tex.split(";")).map(model => {
makeEntries(RightLeg, 2, 0, false, "leg1".split(";"), model)
makeEntries(LeftLeg, 2, 0, false, "leg2".split(";"), model)
model
})
loadModel("/assets/powersuits/models/mps_boots.obj", tex.split(";")).map(model => {
loadModel(new ResourceLocation("powersuits:models/mps_boots.obj"), tex.split(";")).map(model => {
makeEntries(RightLeg, 3, 0, false, "boots1".split(";"), model)
makeEntries(LeftLeg, 3, 0, false, "boots2".split(";"), model)
model
})
}
def loadModel(file: String, textures: Array[String]): Option[ModelSpec] = {
def loadModel(file: ResourceLocation, textures: Array[String]): Option[ModelSpec] = {
ModelRegistry.loadModel(file) match {
case Some(m) => Some(ModelRegistry.put(MuseStringUtils.extractName(file), new ModelSpec(m, textures, None, None, file)))
case Some(m) => Some(ModelRegistry.put(MuseStringUtils.extractName(file), new ModelSpec(m, textures, None, None, file.toString)))
case None => MuseLogger.logError("Model file " + file + " not found! D:")
}
}
@ -83,7 +84,7 @@ object DefaultModelSpec {
}
(new NBTTagCompound() /: list) {
case (taglist, elem) => taglist.setCompoundTag(elem.getString("model") + "." + elem.getString("part"), elem); taglist
case (taglist, elem) => taglist.setTag(elem.getString("model") + "." + elem.getString("part"), elem); taglist
}
}

View file

@ -3,7 +3,7 @@ package net.machinemuse.powersuits.client.render.modelspec
import net.minecraftforge.client.model.obj.WavefrontObject
import net.minecraftforge.client.model.AdvancedModelLoader
import net.machinemuse.utils.MuseStringUtils
import net.minecraft.util.Vec3
import net.minecraft.util.{ResourceLocation, Vec3}
import net.minecraft.nbt.NBTTagCompound
import net.machinemuse.numina.general.MuseLogger
import net.machinemuse.numina.scala.MuseRegistry
@ -13,7 +13,7 @@ import net.machinemuse.numina.scala.MuseRegistry
* Created: 7:44 AM, 4/28/13
*/
object ModelRegistry extends MuseRegistry[ModelSpec] {
def loadModel(resource: String): Option[WavefrontObject] = {
def loadModel(resource: ResourceLocation): Option[WavefrontObject] = {
val name = MuseStringUtils.extractName(resource)
get(name) match {
case Some(i) => Some(i.model)
@ -21,7 +21,7 @@ object ModelRegistry extends MuseRegistry[ModelSpec] {
}
}
def wrap(resource: String): Option[WavefrontObject] = {
def wrap(resource: ResourceLocation): Option[WavefrontObject] = {
MuseLogger.logDebug("Loading " + resource + " as " + MuseStringUtils.extractName(resource))
AdvancedModelLoader.loadModel(resource) match {
case m: WavefrontObject => Some(m)

View file

@ -1,7 +1,7 @@
package net.machinemuse.powersuits.client.render.modelspec
import scala.xml.{NodeSeq, XML}
import net.minecraft.util.Vec3
import net.minecraft.util.{ResourceLocation, Vec3}
import java.awt.Color
import net.machinemuse.utils.MuseStringUtils
import java.net.URL
@ -27,7 +27,7 @@ object ModelSpecXMLReader {
val offset = parseVector((modelnode \ "@offset").text)
val rotation = parseVector((modelnode \ "@rotation").text)
ModelRegistry.loadModel(file) match {
ModelRegistry.loadModel(new ResourceLocation(file)) match {
case Some(m) => {
val modelspec = new ModelSpec(m, textures, offset, rotation, file)
val existingspec = ModelRegistry.put(MuseStringUtils.extractName(file), modelspec)

View file

@ -1,7 +1,7 @@
package net.machinemuse.powersuits.common
import cpw.mods.fml.common.registry.GameRegistry
import net.machinemuse.powersuits.event.PlayerTracker
import cpw.mods.fml.common.FMLCommonHandler
import net.machinemuse.powersuits.event.PlayerLoginHandlerThingy
/**
* Author: MachineMuse (Claire Semple)
@ -9,7 +9,7 @@ import net.machinemuse.powersuits.event.PlayerTracker
*/
class ServerProxy extends CommonProxy {
override def registerEvents {
GameRegistry.registerPlayerTracker(new PlayerTracker)
FMLCommonHandler.instance().bus().register(PlayerLoginHandlerThingy)
}
}

View file

@ -1,5 +1,6 @@
package net.machinemuse.powersuits.event;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.machinemuse.api.IModularItem;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.api.moduletrigger.IBlockBreakingModule;
@ -7,11 +8,10 @@ import net.machinemuse.powersuits.item.ItemPowerFist;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.player.PlayerEvent;
public class HarvestEventHandler {
@ForgeSubscribe
@SubscribeEvent
public void handleHarvestCheck(PlayerEvent.HarvestCheck event) {
EntityPlayer player = event.entityPlayer;
Block block = event.block;
@ -21,7 +21,7 @@ public class HarvestEventHandler {
}
}
@ForgeSubscribe
@SubscribeEvent
public void handleBreakSpeed(PlayerEvent.BreakSpeed event) {
Block block = event.block;
EntityPlayer player = event.entityPlayer;

View file

@ -1,15 +1,15 @@
package net.machinemuse.powersuits.event;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.numina.sound.Musique;
import net.machinemuse.general.sound.SoundLoader;
import net.machinemuse.numina.sound.Musique;
import net.machinemuse.powersuits.item.ItemPowerArmor;
import net.machinemuse.powersuits.powermodule.movement.JumpAssistModule;
import net.machinemuse.powersuits.powermodule.movement.ShockAbsorberModule;
import net.machinemuse.utils.ElectricItemUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent;
import net.minecraftforge.event.entity.living.LivingFallEvent;
@ -21,18 +21,18 @@ public class MovementManager {
public static double getPlayerJumpMultiplier(EntityPlayer player) {
if (playerJumpMultipliers.containsKey(player.username)) {
return playerJumpMultipliers.get(player.username);
if (playerJumpMultipliers.containsKey(player.getCommandSenderName())) {
return playerJumpMultipliers.get(player.getCommandSenderName());
} else {
return 0;
}
}
public static void setPlayerJumpTicks(EntityPlayer player, double number) {
playerJumpMultipliers.put(player.username, number);
playerJumpMultipliers.put(player.getCommandSenderName(), number);
}
@ForgeSubscribe
@SubscribeEvent
public void handleLivingJumpEvent(LivingJumpEvent event) {
if (event.entityLiving instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.entityLiving;
@ -42,7 +42,7 @@ public class MovementManager {
double jumpAssist = ModuleManager.computeModularProperty(stack, JumpAssistModule.JUMP_MULTIPLIER) * 2;
double drain = ModuleManager.computeModularProperty(stack, JumpAssistModule.JUMP_ENERGY_CONSUMPTION);
double avail = ElectricItemUtils.getPlayerEnergy(player);
Musique.playerSound(player, SoundLoader.SOUND_JUMP_ASSIST, (float) (jumpAssist/8.0), 2, false);
Musique.playerSound(player, SoundLoader.SOUND_JUMP_ASSIST, (float) (jumpAssist / 8.0), 2, false);
if (drain < avail) {
ElectricItemUtils.drainPlayerEnergy(player, drain);
setPlayerJumpTicks(player, jumpAssist);
@ -59,7 +59,7 @@ public class MovementManager {
}
}
@ForgeSubscribe
@SubscribeEvent
public void handleFallEvent(LivingFallEvent event) {
if (event.entityLiving instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer) event.entityLiving;

View file

@ -0,0 +1,22 @@
package net.machinemuse.powersuits.event
import cpw.mods.fml.common.eventhandler.SubscribeEvent
import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent
import net.machinemuse.numina.network.PacketSender
import net.machinemuse.powersuits.network.packets.MusePacketPropertyModifierConfig
import net.minecraft.entity.player.{EntityPlayerMP, EntityPlayer}
/**
* Author: MachineMuse (Claire Semple)
* Created: 8:01 PM, 12/05/13
*/
object PlayerLoginHandlerThingy {
@SubscribeEvent
def onPlayerLogin(e: PlayerLoggedInEvent) {
val player = e.player
PacketSender.sendTo(
new MusePacketPropertyModifierConfig(player, null),
player.asInstanceOf[EntityPlayerMP]
)
}
}

View file

@ -1,25 +0,0 @@
package net.machinemuse.powersuits.event
import cpw.mods.fml.common.IPlayerTracker
import net.minecraft.entity.player.EntityPlayer
import net.machinemuse.powersuits.network.packets.MusePacketPropertyModifierConfig
import cpw.mods.fml.common.network.{Player, PacketDispatcher}
/**
* Author: MachineMuse (Claire Semple)
* Created: 8:01 PM, 12/05/13
*/
class PlayerTracker extends IPlayerTracker {
def onPlayerLogin(player: EntityPlayer) {
PacketDispatcher.sendPacketToPlayer(
new MusePacketPropertyModifierConfig(player.asInstanceOf[Player], null).getPacket131,
player.asInstanceOf[Player]
)
}
def onPlayerLogout(player: EntityPlayer) {}
def onPlayerChangedDimension(player: EntityPlayer) {}
def onPlayerRespawn(player: EntityPlayer) {}
}

View file

@ -0,0 +1,82 @@
package net.machinemuse.powersuits.event
import cpw.mods.fml.common.eventhandler.SubscribeEvent
import net.machinemuse.api.ModuleManager
import net.machinemuse.numina.general.MuseMathUtils
import net.machinemuse.numina.scala.OptionCast
import net.machinemuse.utils.{MuseHeatUtils, MuseItemUtils, MusePlayerUtils}
import net.minecraft.entity.player.EntityPlayer
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent
/**
* Created by Claire Semple on 9/8/2014.
*/
object PlayerUpdateHandler {
@SubscribeEvent
def onPlayerUpdate(e: LivingUpdateEvent) = {
val player = OptionCast[EntityPlayer](e.entity).map { player =>
val modularItemsEquipped = MuseItemUtils.modularItemsEquipped(player)
val totalWeight: Double = MuseItemUtils.getPlayerWeight(player)
val weightCapacity: Double = 25000
import scala.collection.JavaConversions._
for (stack <- modularItemsEquipped) {
if (stack.getTagCompound.hasKey("ench")) {
stack.getTagCompound.removeTag("ench")
}
}
var foundItemWithModule: Boolean = false
import scala.collection.JavaConversions._
for (module <- ModuleManager.getPlayerTickModules) {
foundItemWithModule = false
import scala.collection.JavaConversions._
for (itemStack <- modularItemsEquipped) {
if (module.isValidForItem(itemStack)) {
if (ModuleManager.itemHasActiveModule(itemStack, module.getDataName)) {
module.onPlayerTickActive(player, itemStack)
foundItemWithModule = true
}
}
}
if (!foundItemWithModule) {
import scala.collection.JavaConversions._
for (itemStack <- modularItemsEquipped) {
module.onPlayerTickInactive(player, itemStack)
}
}
}
val foundItem: Boolean = modularItemsEquipped.size > 0
if (foundItem) {
player.fallDistance = MovementManager.computeFallHeightFromVelocity(MuseMathUtils.clampDouble(player.motionY, -1000.0, 0.0)).asInstanceOf[Float]
if (totalWeight > weightCapacity) {
player.motionX *= weightCapacity / totalWeight
player.motionZ *= weightCapacity / totalWeight
}
MuseHeatUtils.coolPlayer(player, MusePlayerUtils.getPlayerCoolingBasedOnMaterial(player))
val maxHeat: Double = MuseHeatUtils.getMaxHeat(player)
val currHeat: Double = MuseHeatUtils.getPlayerHeat(player)
if (currHeat > maxHeat) {
player.attackEntityFrom(MuseHeatUtils.overheatDamage, Math.sqrt(currHeat - maxHeat).asInstanceOf[Int] / 4)
player.setFire(1)
}
else {
player.extinguish
}
val velsq2: Double = MuseMathUtils.sumsq(player.motionX, player.motionY, player.motionZ) - 0.5
if (player.isAirBorne && velsq2 > 0) {
// Musique.playerSound(player, SoundLoader.SOUND_GLIDER, (velsq2 / 3).asInstanceOf[Float], 1.0f, true)
}
else {
// Musique.stopPlayerSound(player, SoundLoader.SOUND_GLIDER)
}
}
}
}
}

View file

@ -1,42 +1,52 @@
package net.machinemuse.powersuits.event;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.general.gui.EnergyMeter;
import net.machinemuse.general.gui.HeatMeter;
import net.machinemuse.powersuits.block.BlockTinkerTable;
import net.machinemuse.powersuits.common.Config;
import net.machinemuse.powersuits.powermodule.movement.FlightControlModule;
import net.machinemuse.powersuits.powermodule.movement.GliderModule;
import net.machinemuse.powersuits.powermodule.movement.JetBootsModule;
import net.machinemuse.powersuits.powermodule.movement.JetPackModule;
import net.machinemuse.utils.ElectricItemUtils;
import net.machinemuse.utils.MuseHeatUtils;
import net.machinemuse.utils.MuseItemUtils;
import net.machinemuse.utils.MuseStringUtils;
import net.machinemuse.utils.render.GlowBuffer;
import net.machinemuse.utils.render.MuseRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.event.ForgeSubscribe;
public class RenderEventHandler {
@SideOnly(Side.CLIENT)
@ForgeSubscribe
@SubscribeEvent
public void renderLast(RenderWorldLastEvent event) {
Minecraft mc = Minecraft.getMinecraft();
ScaledResolution screen = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
ScaledResolution screen = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
if (Config.useShaders() && Config.canUseShaders && Minecraft.isFancyGraphicsEnabled()) {
GlowBuffer.drawFullScreen(screen);
GlowBuffer.clear();
}
}
@ForgeSubscribe
@SubscribeEvent
public void onTextureStitch(TextureStitchEvent.Post event) {
// MuseIcon.registerAllIcons(event.map);
}
static boolean ownFly = false;
@ForgeSubscribe
@SubscribeEvent
public void onPreRenderPlayer(RenderPlayerEvent.Pre event) {
if (!event.entityPlayer.capabilities.isFlying && !event.entityPlayer.onGround && playerHasFlightOn(event.entityPlayer)) {
event.entityPlayer.capabilities.isFlying = true;
@ -51,11 +61,61 @@ public class RenderEventHandler {
|| ModuleManager.itemHasActiveModule(player.getCurrentArmor(3), FlightControlModule.MODULE_FLIGHT_CONTROL);
}
@ForgeSubscribe
@SubscribeEvent
public void onPostRenderPlayer(RenderPlayerEvent.Post event) {
if (ownFly) {
ownFly = false;
event.entityPlayer.capabilities.isFlying = false;
}
}
@SubscribeEvent
public void onRenderGameOverlay(RenderGameOverlayEvent.Post event) {
switch(event.type) {
case EXPERIENCE:
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if (player != null && MuseItemUtils.modularItemsEquipped(player).size() > 0 && Minecraft.getMinecraft().currentScreen == null) {
Minecraft mc = Minecraft.getMinecraft();
ScaledResolution screen = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
drawMeters(player, screen);
}
break;
default:
}
}
protected static HeatMeter heat;
protected static HeatMeter energy;
private int lightningCounter = 0;
private void drawMeters(EntityPlayer player, ScaledResolution screen) {
double currEnergy = ElectricItemUtils.getPlayerEnergy(player);
double maxEnergy = ElectricItemUtils.getMaxEnergy(player);
double currHeat = MuseHeatUtils.getPlayerHeat(player);
double maxHeat = MuseHeatUtils.getMaxHeat(player);
if (maxEnergy > 0 && BlockTinkerTable.energyIcon != null) {
String currStr = MuseStringUtils.formatNumberShort(currEnergy);
String maxStr = MuseStringUtils.formatNumberShort(maxEnergy);
String currHeatStr = MuseStringUtils.formatNumberShort(currHeat);
String maxHeatStr = MuseStringUtils.formatNumberShort(maxHeat);
if (Config.useGraphicalMeters()) {
if (energy == null) {
energy = new EnergyMeter();
heat = new HeatMeter();
}
double left = screen.getScaledWidth() - 20;
double top = screen.getScaledHeight() / 2.0 - 16;
energy.draw(left, top, currEnergy / maxEnergy);
heat.draw(left + 8, top, currHeat / maxHeat);
MuseRenderer.drawRightAlignedString(currStr, left - 2, top + 10);
MuseRenderer.drawRightAlignedString(currHeatStr, left - 2, top + 20);
} else {
MuseRenderer.drawString(currStr + '/' + maxStr + " \u1D60", 1, 1);
MuseRenderer.drawString(currHeatStr + '/' + maxHeatStr + " C", 1, 10);
}
}
}
}

View file

@ -7,12 +7,12 @@ import net.machinemuse.api.ModuleManager;
import net.machinemuse.general.gui.MuseIcon;
import net.machinemuse.powersuits.common.Config;
import net.machinemuse.utils.MuseStringUtils;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraftforge.oredict.OreDictionary;
@ -22,7 +22,7 @@ import java.util.List;
public class ItemComponent extends Item {
public static int assignedItemID;
public static List<Icon> icons;
public static List<IIcon> icons;
public static List<String> iconNames;
public static List<String> names;
public static List<String> descriptions;
@ -51,7 +51,7 @@ public class ItemComponent extends Item {
this.setHasSubtypes(true);
this.setMaxDamage(0);
this.setCreativeTab(Config.getCreativeTab());
icons = new ArrayList<Icon>();
icons = new ArrayList<IIcon>();
iconNames = new ArrayList<String>();
names = new ArrayList<String>();
descriptions = new ArrayList<String>();
@ -119,13 +119,13 @@ public class ItemComponent extends Item {
* Gets an icon index based on an item's damage value
*/
@Override
public Icon getIconFromDamage(int index) {
public IIcon getIconFromDamage(int index) {
return icons.get(index);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister iconRegister) {
public void registerIcons(IIconRegister iconRegister) {
icons.clear();
for (String iconName : iconNames) {
icons.add(iconRegister.registerIcon(MuseIcon.ICON_PREFIX + iconName));

View file

@ -1,11 +1,10 @@
package net.machinemuse.powersuits.item
import net.minecraft.item.EnumArmorMaterial
import net.minecraft.item.ItemArmor
import net.machinemuse.api.electricity._
import net.minecraft.item.ItemArmor
abstract class ItemElectricArmor(id: Int, material: EnumArmorMaterial, index1: Int, index2: Int)
extends ItemArmor(id, material, index1, index2)
abstract class ItemElectricArmor(material: ItemArmor.ArmorMaterial, index1: Int, index2: Int)
extends ItemArmor(material, index1, index2)
with ModularItemBase
with MuseElectricItem {

View file

@ -1,12 +1,16 @@
package net.machinemuse.powersuits.item
import com.google.common.collect.Sets
import net.machinemuse.api.electricity._
import net.minecraft.block.Block
import net.minecraft.item.EnumToolMaterial
import net.minecraft.item.ItemTool
import net.minecraft.init.Blocks
import net.minecraft.item.{Item, ItemTool}
class ItemElectricTool(par1: Int, par2: Int, par3EnumToolMaterial: EnumToolMaterial, par4ArrayOfBlock: Array[Block])
extends ItemTool(par1, par2, par3EnumToolMaterial, par4ArrayOfBlock)
object ItemElectricTool {
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))
}
class ItemElectricTool(damageBonus : Float, material : Item.ToolMaterial)
extends ItemTool(damageBonus, material, ItemElectricTool.blocksEffectiveOn)
with ModularItemBase
with MuseElectricItem {

View file

@ -1,11 +0,0 @@
package net.machinemuse.powersuits.item
import net.minecraft.item.Item
/**
* Author: MachineMuse (Claire Semple)
* Created: 7:29 PM, 5/13/13
*/
class ItemMagic(id:Int) extends Item(id:Int) {
}

View file

@ -1,34 +1,29 @@
package net.machinemuse.powersuits.item
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.machinemuse.api.{IModularItem, ModuleManager}
import net.machinemuse.numina.geometry.Colour
import net.machinemuse.powersuits.client.render.item.ArmorModel
import net.machinemuse.powersuits.common.Config
import net.machinemuse.powersuits.powermodule.misc.{InvisibilityModule, TransparentArmorModule, TintModule}
import net.machinemuse.powersuits.powermodule.misc.{InvisibilityModule, TintModule, TransparentArmorModule}
import net.machinemuse.utils._
import net.minecraft.entity.{EntityLivingBase, Entity}
import net.minecraft.client.model.ModelBiped
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumArmorMaterial
import net.minecraft.item.ItemStack
import net.minecraft.entity.{Entity, EntityLivingBase}
import net.minecraft.item.{ItemArmor, ItemStack}
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.util.DamageSource
import net.minecraftforge.common.ISpecialArmor
import scala.Predef.String
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraft.client.model.ModelBiped
import net.machinemuse.powersuits.client.render.item.ArmorModel
import net.machinemuse.api.{ModuleManager, ArmorTraits, IModularItem}
import net.machinemuse.numina.geometry.Colour
import cpw.mods.fml.common.registry.GameRegistry
import cpw.mods.fml.common.Optional
/**
* Describes the 4 different modular armor pieces - head, torso, legs, feet.
*
* @author MachineMuse
*/
abstract class ItemPowerArmor(id: Int, renderIndex: Int, armorType: Int)
extends ItemElectricArmor(id, EnumArmorMaterial.IRON, renderIndex, armorType)
abstract class ItemPowerArmor(renderIndex: Int, armorType: Int)
extends ItemElectricArmor(ItemArmor.ArmorMaterial.IRON, renderIndex, armorType)
with ISpecialArmor
with IModularItem
with ArmorTraits {
with IModularItem {
setMaxStackSize(1)
setCreativeTab(Config.getCreativeTab)
@ -54,7 +49,7 @@ abstract class ItemPowerArmor(id: Int, renderIndex: Int, armorType: Int)
return new ISpecialArmor.ArmorProperties(priority, absorbRatio, absorbMax)
}
override def getArmorTexture(itemstack: ItemStack, entity: Entity, slot: Int, layer: Int): String = {
def getArmorTexture(itemstack: ItemStack, entity: Entity, slot: Int, layer: Int): String = {
Config.BLANK_ARMOR_MODEL_PATH
}

View file

@ -1,16 +1,16 @@
package net.machinemuse.powersuits.item
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.client.renderer.texture.IIconRegister
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import net.machinemuse.utils.render.MuseRenderer
class ItemPowerArmorBoots(id: Int) extends ItemPowerArmor(id, 0, 3) {
class ItemPowerArmorBoots(id: Int) extends ItemPowerArmor(0, 3) {
val iconpath = MuseRenderer.ICON_PREFIX + "armorfeet"
setUnlocalizedName("powerArmorBoots")
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IconRegister) {
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) {
itemIcon = iconRegister.registerIcon(iconpath)
}
}

View file

@ -1,16 +1,16 @@
package net.machinemuse.powersuits.item
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.client.renderer.texture.IIconRegister
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import net.machinemuse.utils.render.MuseRenderer
class ItemPowerArmorChestplate(id: Int) extends ItemPowerArmor(id, 0, 1) {
class ItemPowerArmorChestplate(id: Int) extends ItemPowerArmor(0, 1) {
val iconpath = MuseRenderer.ICON_PREFIX + "armortorso"
setUnlocalizedName("powerArmorChestplate")
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IconRegister) {
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) {
itemIcon = iconRegister.registerIcon(iconpath)
}
}

View file

@ -1,37 +1,32 @@
package net.machinemuse.powersuits.item
import thaumcraft.api.nodes.IRevealer
import micdoodle8.mods.galacticraft.api.item.IBreathableArmor.EnumGearType
import micdoodle8.mods.galacticraft.api.item.IBreathableArmor
import net.machinemuse.powersuits.powermodule.misc.{ThaumGogglesModule, AirtightSealModule}
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.machinemuse.api.ModuleManager
import net.machinemuse.powersuits.powermodule.misc.ThaumGogglesModule
import net.machinemuse.utils.render.MuseRenderer
import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.EntityLivingBase
import thaumcraft.api.IGoggles
import net.minecraft.item.ItemStack
class ItemPowerArmorHelmet(id: Int) extends ItemPowerArmor(id, 0, 0)
with IBreathableArmor
with IGoggles
with IRevealer {
class ItemPowerArmorHelmet(id: Int) extends ItemPowerArmor(0, 0)
//with IBreathableArmor
//with IGoggles
//with IRevealer
{
val iconpath = MuseRenderer.ICON_PREFIX + "armorhead"
setUnlocalizedName("powerArmorHelmet")
// IBreathableArmor
def handleGearType(gearType: EnumGearType): Boolean = gearType eq EnumGearType.HELMET
def canBreathe(helm: ItemStack, player: EntityPlayer, gearType: EnumGearType): Boolean =
ModuleManager.itemHasActiveModule(helm, AirtightSealModule.AIRTIGHT_SEAL_MODULE)
//
// // IBreathableArmor
// def handleGearType(gearType: EnumGearType): Boolean = gearType eq EnumGearType.HELMET
//
// def canBreathe(helm: ItemStack, player: EntityPlayer, gearType: EnumGearType): Boolean =
// ModuleManager.itemHasActiveModule(helm, AirtightSealModule.AIRTIGHT_SEAL_MODULE)
@SideOnly(Side.CLIENT)
override def registerIcons(iconRegister: IconRegister) {
override def registerIcons(iconRegister: IIconRegister) {
itemIcon = iconRegister.registerIcon(iconpath)
}

View file

@ -1,18 +1,18 @@
package net.machinemuse.powersuits.item
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.client.renderer.texture.IIconRegister
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import net.machinemuse.utils.render.MuseRenderer
class ItemPowerArmorLeggings(id: Int) extends ItemPowerArmor(id, 0, 2) {
class ItemPowerArmorLeggings(id: Int) extends ItemPowerArmor(0, 2) {
val iconpath = MuseRenderer.ICON_PREFIX + "armorlegs"
setUnlocalizedName("powerArmorLeggings")
@SideOnly(Side.CLIENT)
override def registerIcons(iconRegister: IconRegister) {
override def registerIcons(iconRegister: IIconRegister) {
itemIcon = iconRegister.registerIcon(iconpath)
}
}

View file

@ -1,41 +1,36 @@
package net.machinemuse.powersuits.item
import cpw.mods.fml.relauncher.Side
import cpw.mods.fml.relauncher.SideOnly
import forestry.api.arboriculture.IToolGrafter
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.machinemuse.api._
import net.machinemuse.api.moduletrigger.IRightClickModule
import net.machinemuse.general.gui.MuseIcon
import net.machinemuse.numina.scala.OptionCast
import net.machinemuse.powersuits.common.Config
import net.machinemuse.powersuits.powermodule.tool.{OmniWrenchModule, GrafterModule}
import net.machinemuse.powersuits.powermodule.tool.{GrafterModule, OmniWrenchModule}
import net.machinemuse.powersuits.powermodule.weapon.MeleeAssistModule
import net.machinemuse.utils.{ElectricItemUtils, MuseHeatUtils}
import net.minecraft.block.Block
import net.minecraft.client.renderer.texture.IconRegister
import net.minecraft.entity.{EntityLivingBase, Entity}
import net.minecraft.client.renderer.texture.IIconRegister
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.EnumAction
import net.minecraft.item.EnumToolMaterial
import net.minecraft.item.ItemStack
import net.minecraft.entity.{Entity, EntityLivingBase}
import net.minecraft.item.Item.ToolMaterial
import net.minecraft.item.{EnumAction, ItemStack}
import net.minecraft.util.{DamageSource, Vec3}
import net.minecraft.world.World
import net.machinemuse.numina.scala.OptionCast
import scala.Predef.String
/**
* Describes the modular power tool.
*
* @author MachineMuse
*/
class ItemPowerFist extends ItemElectricTool(Config.fistID, 0, EnumToolMaterial.EMERALD, new Array[Block](0))
class ItemPowerFist extends ItemElectricTool(0, ToolMaterial.EMERALD)
with IModularItem
with IToolGrafter
with OmniWrench
//with IToolGrafter
//with OmniWrench
with ModeChangingModularItem {
val iconpath: String = MuseIcon.ICON_PREFIX + "handitem"
setMaxStackSize(1)
setMaxDamage(0)
this.damageVsEntity = 1
setCreativeTab(Config.getCreativeTab)
setUnlocalizedName("powerFist")
@ -44,14 +39,14 @@ with ModeChangingModularItem {
* Returns the strength of the stack against a given block. 1.0F base,
* (Quality+1)*2 if correct blocktype, 1.5F if sword
*/
override def getStrVsBlock(stack: ItemStack, block: Block): Float = getStrVsBlock(stack, block, 0)
def getStrVsBlock(stack: ItemStack, block: Block): Float = getStrVsBlock(stack, block, 0)
/**
* FORGE: Overridden to allow custom tool effectiveness
*/
override def getStrVsBlock(stack: ItemStack, block: Block, meta: Int): Float = 1
def getStrVsBlock(stack: ItemStack, block: Block, meta: Int): Float = 1
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IconRegister) {
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) {
itemIcon = iconRegister.registerIcon(iconpath)
}
@ -86,7 +81,7 @@ with ModeChangingModularItem {
* <p/>
* Returns: Whether to increment player use stats with this item
*/
override def onBlockDestroyed(stack: ItemStack, world: World, blockID: Int, x: Int, y: Int, z: Int, entity: EntityLivingBase): Boolean = {
def onBlockDestroyed(stack: ItemStack, world: World, blockID: Int, x: Int, y: Int, z: Int, entity: EntityLivingBase): Boolean = {
entity match {
case player: EntityPlayer =>
import scala.collection.JavaConversions._
@ -112,7 +107,7 @@ with ModeChangingModularItem {
* @param itemStack The itemstack
* @return the damage
*/
override def getDamageVsEntity(par1Entity: Entity, itemStack: ItemStack): Float = {
def getDamageVsEntity(par1Entity: Entity, itemStack: ItemStack): Float = {
ModuleManager.computeModularProperty(itemStack, MeleeAssistModule.PUNCH_DAMAGE).toFloat
}
@ -175,13 +170,13 @@ with ModeChangingModularItem {
}
}
override def shouldPassSneakingClickToBlock(world: World, x: Int, y: Int, z: Int): Boolean = true
def shouldPassSneakingClickToBlock(world: World, x: Int, y: Int, z: Int): Boolean = true
override def onItemUseFirst(itemStack: ItemStack, player: EntityPlayer, world: World, x: Int, y: Int, z: Int, side: Int, hitX: Float, hitY: Float, hitZ: Float): Boolean = {
val mode: String = getActiveMode(itemStack, player)
val module: IPowerModule = ModuleManager.getModule(mode)
module match {
case m:IRightClickModule => m.onItemUseFirst(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ)
case m: IRightClickModule => m.onItemUseFirst(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ)
case _ => false
}
}
@ -190,7 +185,7 @@ with ModeChangingModularItem {
val mode: String = getActiveMode(itemStack, player)
val module: IPowerModule = ModuleManager.getModule(mode)
module match {
case m:IRightClickModule => m.onItemUse(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ); false
case m: IRightClickModule => m.onItemUse(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ); false
case _ => false
}
}
@ -206,7 +201,7 @@ with ModeChangingModularItem {
}
def canHarvestBlock(stack: ItemStack, block: Block, meta: Int, player: EntityPlayer): Boolean = {
if (block.blockMaterial.isToolNotRequired) {
if (block.getMaterial.isToolNotRequired) {
return true
}
import scala.collection.JavaConversions._

View file

@ -2,7 +2,7 @@ package net.machinemuse.powersuits.item
import net.machinemuse.numina.item.{NuminaItemUtils, ModeChangingItem}
import net.minecraft.item.ItemStack
import net.minecraft.util.Icon
import net.minecraft.util.IIcon
import net.machinemuse.api.ModuleManager
import net.machinemuse.api.moduletrigger.IRightClickModule
import net.minecraft.entity.player.EntityPlayer
@ -25,7 +25,7 @@ object ModeChangingModularItem {
}
trait ModeChangingModularItem extends ModeChangingItem {
def getModeIcon(mode: String, stack: ItemStack, player: EntityPlayer): Option[Icon] = Option(ModuleManager.getModule(mode)).map(m => m.getIcon(stack))
def getModeIcon(mode: String, stack: ItemStack, player: EntityPlayer): Option[IIcon] = Option(ModuleManager.getModule(mode)).map(m => m.getIcon(stack))
def getValidModes(stack: ItemStack, player: EntityPlayer): Seq[String] = {
getValidModes(stack)

View file

@ -1,12 +1,12 @@
package net.machinemuse.powersuits.network.packets
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.entity.player.EntityPlayerMP
import net.machinemuse.api.IModularItem
import net.machinemuse.utils.MuseItemUtils
import cpw.mods.fml.common.network.Player
import java.io.DataInputStream
import net.machinemuse.api.IModularItem
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP}
import net.minecraft.nbt.NBTTagCompound
/**
@ -14,14 +14,14 @@ import net.machinemuse.numina.network.{MusePackager, MusePacket}
* Created: 12:28 PM, 5/6/13
*/
object MusePacketColourInfo extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val itemSlot = readInt(d)
val tagData = readIntArray(d)
new MusePacketColourInfo(p, itemSlot, tagData)
}
}
class MusePacketColourInfo(player: Player, itemSlot: Int, tagData: Array[Int]) extends MusePacket(player) {
class MusePacketColourInfo(player: EntityPlayer, itemSlot: Int, tagData: Array[Int]) extends MusePacket {
val packager = MusePacketColourInfo
def write {

View file

@ -1,21 +1,20 @@
package net.machinemuse.powersuits.network.packets
import cpw.mods.fml.common.network.Player
import net.machinemuse.api.IModularItem
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.nbt.NBTTagCompound
import java.io.DataInputStream
import scala.Predef._
import net.machinemuse.api.IModularItem
import net.machinemuse.numina.general.MuseLogger
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP}
import net.minecraft.nbt.NBTTagCompound
/**
* Author: MachineMuse (Claire Semple)
* Created: 10:16 AM, 01/05/13
*/
object MusePacketCosmeticInfo extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val itemSlot = readInt(d)
val tagName = readString(d)
val tagData = readNBTTagCompound(d)
@ -23,7 +22,7 @@ object MusePacketCosmeticInfo extends MusePackager {
}
}
class MusePacketCosmeticInfo(player: Player, itemSlot: Int, tagName: String, tagData: NBTTagCompound) extends MusePacket(player) {
class MusePacketCosmeticInfo(player: EntityPlayer, itemSlot: Int, tagName: String, tagData: NBTTagCompound) extends MusePacket {
val packager = MusePacketCosmeticInfo
def write {
@ -39,7 +38,7 @@ class MusePacketCosmeticInfo(player: Player, itemSlot: Int, tagName: String, tag
var renderTag: NBTTagCompound = null
if (!itemTag.hasKey("render")) {
renderTag = new NBTTagCompound
itemTag.setCompoundTag("render", renderTag)
itemTag.setTag("render", renderTag)
} else {
renderTag = itemTag.getCompoundTag("render")
}
@ -48,7 +47,7 @@ class MusePacketCosmeticInfo(player: Player, itemSlot: Int, tagName: String, tag
renderTag.removeTag(tagName)
} else {
MuseLogger.logDebug("Adding tag " + tagName + " : " + tagData)
renderTag.setCompoundTag(tagName, tagData)
renderTag.setTag(tagName, tagData)
}
}
}

View file

@ -3,26 +3,15 @@
*/
package net.machinemuse.powersuits.network.packets
import cpw.mods.fml.common.FMLCommonHandler
import cpw.mods.fml.common.network.PacketDispatcher
import cpw.mods.fml.common.network.Player
import cpw.mods.fml.relauncher.Side
import net.machinemuse.api.{IModularItem, IPowerModule, ModuleManager}
import net.machinemuse.utils.ElectricItemUtils
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.client.entity.EntityClientPlayerMP
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.entity.player.InventoryPlayer
import net.minecraft.item.ItemStack
import java.io.DataInputStream
import java.io.IOException
import java.util.ArrayList
import java.util.List
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.util.ChatMessageComponent
import net.machinemuse.api.ModuleManager.{itemAddModule, itemHasModule}
import net.machinemuse.numina.general.MuseLogger
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import java.util.{ArrayList, List}
import net.machinemuse.api.{IPowerModule, ModuleManager}
import net.machinemuse.numina.network.{PacketSender, MusePackager, MusePacket}
import net.machinemuse.utils.{ElectricItemUtils, MuseItemUtils}
import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP, InventoryPlayer}
import net.minecraft.item.ItemStack
import net.minecraft.util.ChatComponentText
/**
* Packet for requesting to purchase an upgrade. Player-to-server. Server decides whether it is a valid upgrade or not and replies with an associated
@ -33,14 +22,14 @@ import net.machinemuse.numina.network.{MusePackager, MusePacket}
*/
object MusePacketInstallModuleRequest extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val itemSlot = readInt(d)
val moduleName = readString(d)
new MusePacketInstallModuleRequest(p, itemSlot, moduleName)
}
}
class MusePacketInstallModuleRequest(player: Player, itemSlot: Int, moduleName: String) extends MusePacket(player) {
class MusePacketInstallModuleRequest(player: EntityPlayer, itemSlot: Int, moduleName: String) extends MusePacket {
val packager = MusePacketInstallModuleRequest
def write {
@ -54,7 +43,7 @@ class MusePacketInstallModuleRequest(player: Player, itemSlot: Int, moduleName:
val inventory: InventoryPlayer = playerEntity.inventory
val moduleType: IPowerModule = ModuleManager.getModule(moduleName)
if (moduleType == null || !moduleType.isAllowed) {
playerEntity.sendChatToPlayer(ChatMessageComponent.createFromText("Server has disallowed this module. Sorry!"))
playerEntity.addChatComponentMessage(new ChatComponentText("Server has disallowed this module. Sorry!"))
return
}
val cost: List[ItemStack] = moduleType.getInstallCost
@ -71,8 +60,8 @@ class MusePacketInstallModuleRequest(player: Player, itemSlot: Int, moduleName:
slotsToUpdate.add(itemSlot)
import scala.collection.JavaConversions._
for (slotiter <- slotsToUpdate) {
val reply: MusePacket = new MusePacketInventoryRefresh(player, slotiter, inventory.getStackInSlot(slotiter))
PacketDispatcher.sendPacketToPlayer(reply.getPacket131, player)
val reply: MusePacket = new MusePacketInventoryRefresh(playerEntity, slotiter, inventory.getStackInSlot(slotiter))
PacketSender.sendTo(reply, playerEntity)
}
}
}

View file

@ -4,16 +4,16 @@
package net.machinemuse.powersuits.network.packets
import java.io.DataInputStream
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.machinemuse.general.gui.MuseGui
import net.minecraft.client.Minecraft
import net.minecraft.client.entity.EntityClientPlayerMP
import net.minecraft.client.gui.GuiScreen
import net.minecraft.inventory.IInventory
import net.minecraft.item.ItemStack
import cpw.mods.fml.common.network.Player
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.machinemuse.numina.scala.OptionCast
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraft.client.Minecraft
import net.minecraft.client.entity.EntityClientPlayerMP
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.inventory.IInventory
import net.minecraft.item.ItemStack
/**
@ -21,14 +21,14 @@ import cpw.mods.fml.relauncher.{Side, SideOnly}
* Created: 12:28 PM, 5/6/13
*/
object MusePacketInventoryRefresh extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val itemSlot = readInt(d)
val stack = readItemStack(d)
new MusePacketInventoryRefresh(p, itemSlot, stack)
}
}
class MusePacketInventoryRefresh(player: Player, slot: Int, stack: ItemStack) extends MusePacket(player) {
class MusePacketInventoryRefresh(player: EntityPlayer, slot: Int, stack: ItemStack) extends MusePacket {
val packager = MusePacketInventoryRefresh
def write {
@ -40,6 +40,6 @@ class MusePacketInventoryRefresh(player: Player, slot: Int, stack: ItemStack) ex
override def handleClient(player: EntityClientPlayerMP) {
val inventory: IInventory = player.inventory
inventory.setInventorySlotContents(slot, stack)
OptionCast[MuseGui](Minecraft.getMinecraft.currentScreen) map (s=>s.refresh())
OptionCast[MuseGui](Minecraft.getMinecraft.currentScreen) map (s => s.refresh())
}
}

View file

@ -1,26 +1,27 @@
package net.machinemuse.powersuits.network.packets
import java.io.DataInputStream
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.machinemuse.powersuits.entity.EntityPlasmaBolt
import net.minecraft.client.Minecraft
import net.minecraft.client.entity.EntityClientPlayerMP
import cpw.mods.fml.common.network.Player
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.minecraft.entity.player.EntityPlayer
/**
* Author: MachineMuse (Claire Semple)
* Created: 12:28 PM, 5/6/13
*/
object MusePacketPlasmaBolt extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val entityID = readInt(d)
val size = readDouble(d)
new MusePacketPlasmaBolt(p, entityID, size)
}
}
class MusePacketPlasmaBolt(player: Player, entityID: Int, size: Double) extends MusePacket(player) {
class MusePacketPlasmaBolt(player: EntityPlayer, entityID: Int, size: Double) extends MusePacket {
val packager = MusePacketPlasmaBolt
def write {

View file

@ -1,14 +1,10 @@
package net.machinemuse.powersuits.network.packets
import java.io.DataInputStream
import net.machinemuse.numina.network.{PacketSender, MusePackager, MusePacket}
import net.machinemuse.powersuits.control.PlayerInputMap
import net.minecraft.client.entity.EntityClientPlayerMP
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.player.EntityPlayerMP
import cpw.mods.fml.common.network.PacketDispatcher
import cpw.mods.fml.common.network.Player
import net.minecraft.item.ItemStack
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP}
/**
@ -16,27 +12,28 @@ import net.machinemuse.numina.network.{MusePackager, MusePacket}
* Created: 12:28 PM, 5/6/13
*/
object MusePacketPlayerUpdate extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val username = readString(d)
val inputMap:PlayerInputMap = PlayerInputMap.getInputMapFor(username)
val inputMap: PlayerInputMap = PlayerInputMap.getInputMapFor(username)
inputMap.readFromStream(d)
new MusePacketPlayerUpdate(p, inputMap)
}
}
class MusePacketPlayerUpdate(player: Player, inputMap: PlayerInputMap) extends MusePacket(player) {
class MusePacketPlayerUpdate(player: EntityPlayer, inputMap: PlayerInputMap) extends MusePacket {
val packager = MusePacketPlayerUpdate
def write {
writeString(player.asInstanceOf[EntityPlayer].username)
writeString(player.getCommandSenderName)
inputMap.writeToStream(dataout)
}
override def handleServer(player: EntityPlayerMP) {
val updatePacket: MusePacketPlayerUpdate = new MusePacketPlayerUpdate(player.asInstanceOf[Player], inputMap)
val updatePacket: MusePacketPlayerUpdate = new MusePacketPlayerUpdate(player, inputMap)
player.motionX = inputMap.motionX
player.motionY = inputMap.motionY
player.motionZ = inputMap.motionZ
PacketDispatcher.sendPacketToAllAround(player.posX, player.posY, player.posZ, 128, player.dimension, updatePacket.getPacket131)
PacketSender.sendToAllAround(updatePacket, player, 128)
}
}

View file

@ -1,25 +1,25 @@
package net.machinemuse.powersuits.network.packets
import java.io.DataInputStream
import cpw.mods.fml.common.network.Player
import net.machinemuse.api.ModuleManager
import net.machinemuse.powersuits.powermodule.{PowerModuleBase, PropertyModifierLinearAdditive, PropertyModifierFlatAdditive}
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.client.entity.EntityClientPlayerMP
import cpw.mods.fml.relauncher.{Side, SideOnly}
import net.machinemuse.api.ModuleManager
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.machinemuse.powersuits.powermodule.{PowerModuleBase, PropertyModifierFlatAdditive, PropertyModifierLinearAdditive}
import net.minecraft.client.entity.EntityClientPlayerMP
import net.minecraft.entity.player.EntityPlayer
/**
* Author: MachineMuse (Claire Semple)
* Created: 7:23 PM, 12/05/13
*/
object MusePacketPropertyModifierConfig extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
new MusePacketPropertyModifierConfig(p, d)
}
}
class MusePacketPropertyModifierConfig(player: Player, data: DataInputStream) extends MusePacket(player) {
class MusePacketPropertyModifierConfig(player: EntityPlayer, data: DataInputStream) extends MusePacket {
val packager = MusePacketPropertyModifierConfig
override def write {

View file

@ -3,22 +3,15 @@
*/
package net.machinemuse.powersuits.network.packets
import cpw.mods.fml.common.network.PacketDispatcher
import cpw.mods.fml.common.network.Player
import net.machinemuse.api.IPowerModule
import net.machinemuse.api.ModuleManager
import java.io.DataInputStream
import java.util.{HashSet, List}
import net.machinemuse.api.{IPowerModule, ModuleManager}
import net.machinemuse.numina.network.{PacketSender, MusePackager, MusePacket}
import net.machinemuse.powersuits.common.Config
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.entity.player.InventoryPlayer
import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP, InventoryPlayer}
import net.minecraft.item.ItemStack
import java.io.DataInputStream
import java.util.HashSet
import java.util.List
import java.util.Set
import scala.Predef._
import net.machinemuse.api.ModuleManager.{removeModule, itemHasModule}
import net.machinemuse.numina.network.{MusePackager, MusePacket}
/**
* Packet for requesting to purchase an upgrade. Player-to-server. Server
@ -29,7 +22,7 @@ import net.machinemuse.numina.network.{MusePackager, MusePacket}
* Created: 12:28 PM, 5/6/13
*/
object MusePacketSalvageModuleRequest extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val itemSlot = readInt(d)
val moduleName = readString(d)
@ -37,7 +30,7 @@ object MusePacketSalvageModuleRequest extends MusePackager {
}
}
class MusePacketSalvageModuleRequest(player: Player, itemSlot: Int, moduleName: String) extends MusePacket(player) {
class MusePacketSalvageModuleRequest(player: EntityPlayer, itemSlot: Int, moduleName: String) extends MusePacket {
val packager = MusePacketSalvageModuleRequest
def write {
@ -52,17 +45,16 @@ class MusePacketSalvageModuleRequest(player: Player, itemSlot: Int, moduleName:
val moduleType: IPowerModule = ModuleManager.getModule(moduleName)
val refund: List[ItemStack] = moduleType.getInstallCost
if (ModuleManager.itemHasModule(stack, moduleName)) {
val slots: Set[Integer] = new HashSet[Integer]
val slots: java.util.Set[Integer] = new HashSet[Integer]
ModuleManager.removeModule(stack, moduleName)
import scala.collection.JavaConversions._
for (refundItem <- refund) {
slots.addAll(MuseItemUtils.giveOrDropItemWithChance(refundItem.copy, playerEntity, Config.getSalvageChance))
}
slots.add(itemSlot)
import scala.collection.JavaConversions._
for (slotiter <- slots) {
val reply: MusePacket = new MusePacketInventoryRefresh(player, slotiter, inventory.getStackInSlot(slotiter))
PacketDispatcher.sendPacketToPlayer(reply.getPacket131, player)
PacketSender.sendTo(reply, playerEntity)
}
}
}

View file

@ -1,11 +1,10 @@
package net.machinemuse.powersuits.network.packets
import cpw.mods.fml.common.network.Player
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.entity.player.EntityPlayerMP
import java.io.DataInputStream
import scala.Predef._
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP}
/**
@ -13,7 +12,7 @@ import net.machinemuse.numina.network.{MusePackager, MusePacket}
* Created: 12:28 PM, 5/6/13
*/
object MusePacketToggleRequest extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val module = readString(d)
val value = readBoolean(d)
@ -21,7 +20,7 @@ object MusePacketToggleRequest extends MusePackager {
}
}
class MusePacketToggleRequest(player: Player, module: String, active: Boolean) extends MusePacket(player) {
class MusePacketToggleRequest(player: EntityPlayer, module: String, active: Boolean) extends MusePacket {
val packager = MusePacketToggleRequest
def write() {

View file

@ -3,16 +3,14 @@
*/
package net.machinemuse.powersuits.network.packets
import cpw.mods.fml.common.network.Player
import net.machinemuse.utils.{MuseItemUtils}
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraft.nbt.NBTTagCompound
import java.io.DataInputStream
import scala.Predef._
import net.machinemuse.api.ModuleManager.tagHasModule
import net.machinemuse.api.ModuleManager
import net.machinemuse.numina.general.MuseMathUtils
import net.machinemuse.numina.network.{MusePackager, MusePacket}
import net.machinemuse.utils.MuseItemUtils
import net.minecraft.entity.player.{EntityPlayer, EntityPlayerMP}
import net.minecraft.nbt.NBTTagCompound
/**
* Packet for requesting to purchase an upgrade. Player-to-server. Server
@ -23,7 +21,7 @@ import net.machinemuse.numina.network.{MusePackager, MusePacket}
* Created: 12:28 PM, 5/6/13
*/
object MusePacketTweakRequest extends MusePackager {
def read(d: DataInputStream, p: Player) = {
def read(d: DataInputStream, p: EntityPlayer) = {
val itemSlot = readInt(d)
val moduleName = readString(d)
val tweakName = readString(d)
@ -32,7 +30,7 @@ object MusePacketTweakRequest extends MusePackager {
}
}
class MusePacketTweakRequest(player: Player, itemSlot: Int, moduleName: String, tweakName: String, tweakValue: Double) extends MusePacket(player) {
class MusePacketTweakRequest(player: EntityPlayer, itemSlot: Int, moduleName: String, tweakName: String, tweakValue: Double) extends MusePacket {
val packager = MusePacketTweakRequest
def write {

View file

@ -7,11 +7,11 @@ import net.machinemuse.general.gui.MuseIcon;
import net.machinemuse.numina.render.MuseTextureUtils;
import net.machinemuse.powersuits.common.Config;
import net.machinemuse.utils.MuseItemUtils;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import java.util.*;
@ -22,7 +22,7 @@ public abstract class PowerModuleBase implements IPowerModule {
protected static Map<String, String> units = new HashMap<String, String>();
protected NBTTagCompound defaultTag;
protected boolean isAllowed;
protected Icon icon;
protected IIcon icon;
public PowerModuleBase(String name, List<IModularItem> validItems) {
this.validItems = validItems;
@ -43,12 +43,12 @@ public abstract class PowerModuleBase implements IPowerModule {
}
@Override
public Icon getIcon(ItemStack item) {
public IIcon getIcon(ItemStack item) {
return icon;
}
@Override
public void registerIcon(IconRegister register) {
public void registerIcon(IIconRegister register) {
if (getTextureFile() != null) {
this.icon = register.registerIcon(MuseIcon.ICON_PREFIX + getTextureFile());
}

View file

@ -33,7 +33,7 @@ class BinocularsModule(list: java.util.List[IModularItem]) extends PowerModuleBa
override def onPlayerTickActive(player: EntityPlayer, item: ItemStack) {
if (FMLCommonHandler.instance().getEffectiveSide.isClient) {
val fov = KeybindKeyHandler.zoom.pressed match {
val fov = KeybindKeyHandler.zoom.getIsKeyPressed match {
case true => ModuleManager.computeModularProperty(item, FOV_MULTIPLIER).toFloat
case false => 0.1f
}

View file

@ -4,8 +4,6 @@ import net.machinemuse.api.IModularItem;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
import net.machinemuse.api.moduletrigger.IToggleableModule;
import net.machinemuse.numina.sound.Musique;
import net.machinemuse.general.sound.SoundLoader;
import net.machinemuse.powersuits.item.ItemComponent;
import net.machinemuse.powersuits.powermodule.PowerModuleBase;
import net.machinemuse.utils.ElectricItemUtils;
@ -52,7 +50,7 @@ public class WaterElectrolyzerModule extends PowerModuleBase implements IPlayerT
double energy = ElectricItemUtils.getPlayerEnergy(player);
double energyConsumption = ModuleManager.computeModularProperty(item, WATERBREATHING_ENERGY_CONSUMPTION);
if (energy > energyConsumption && player.getAir() < 10) {
Musique.playClientSound(SoundLoader.SOUND_ELECTROLYZER, 1.0f);
// Musique.playClientSound(SoundLoader.SOUND_ELECTROLYZER, 1.0f);
ElectricItemUtils.drainPlayerEnergy(player, energyConsumption);
player.setAir(300);
}

View file

@ -72,17 +72,17 @@ public class JetPackModule extends PowerModuleBase implements IToggleableModule,
thrust *= MusePlayerUtils.getWeightPenaltyRatio(MuseItemUtils.getPlayerWeight(player), 25000);
if (hasFlightControl && thrust > 0) {
thrust = MusePlayerUtils.thrust(player, thrust, true);
Musique.playerSound(player, SoundLoader.SOUND_JETPACK, (float) (thrust*6.25), 1.0f, true);
// Musique.playerSound(player, SoundLoader.SOUND_JETPACK, (float) (thrust*6.25), 1.0f, true);
ElectricItemUtils.drainPlayerEnergy(player, thrust * jetEnergy);
} else if (jumpkey && player.motionY < 0.5) {
thrust = MusePlayerUtils.thrust(player, thrust, false);
Musique.playerSound(player, SoundLoader.SOUND_JETPACK,(float) (thrust*6.25), 1.0f, true);
// Musique.playerSound(player, SoundLoader.SOUND_JETPACK,(float) (thrust*6.25), 1.0f, true);
ElectricItemUtils.drainPlayerEnergy(player, thrust * jetEnergy);
} else {
Musique.stopPlayerSound(player, SoundLoader.SOUND_JETPACK);
// Musique.stopPlayerSound(player, SoundLoader.SOUND_JETPACK);
}
} else {
Musique.stopPlayerSound(player, SoundLoader.SOUND_JETPACK);
// Musique.stopPlayerSound(player, SoundLoader.SOUND_JETPACK);
}
}

View file

@ -73,11 +73,11 @@ class SprintAssistModule(validItems: List[IModularItem]) extends PowerModuleBase
}
def setMovementModifier(item: ItemStack, multiplier: Double) {
val modifiers: NBTTagList = item.getTagCompound.getTagList("AttributeModifiers")
val modifiers: NBTTagList = item.getTagCompound.getTagList("AttributeModifiers", 10.asInstanceOf[Byte]) // Type 10 for tag compound
item.getTagCompound.setTag("AttributeModifiers", modifiers)
val sprintModifiers =
for (i <- 0 until modifiers.tagCount()) yield {
val tag = modifiers.tagAt(i).asInstanceOf[NBTTagCompound]
val tag = modifiers.getCompoundTagAt(i).asInstanceOf[NBTTagCompound]
if (new AttributeModifier(tag).name == "Sprint Assist") {
Some(tag)
} else None
@ -93,9 +93,9 @@ class SprintAssistModule(validItems: List[IModularItem]) extends PowerModuleBase
def onPlayerTickInactive(player: EntityPlayer, item: ItemStack) {
if (item != null) {
val modifiers: NBTTagList = item.getTagCompound.getTagList("AttributeModifiers")
val modifiers: NBTTagList = item.getTagCompound.getTagList("AttributeModifiers", 10.asInstanceOf[Byte])
for (i <- 0 until modifiers.tagCount()) yield {
val tag = modifiers.tagAt(i).asInstanceOf[NBTTagCompound]
val tag = modifiers.getCompoundTagAt(i)
if (new AttributeModifier(tag).name == "Sprint Assist") {
Some(tag)
} else None

View file

@ -13,7 +13,7 @@ import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
@ -113,7 +113,7 @@ public class HoeModule extends PowerModuleBase implements IPowerModule, IRightCl
}
@Override
public Icon getIcon(ItemStack item) {
return Item.hoeGold.getIconFromDamage(0);
public IIcon getIcon(ItemStack item) {
return ((Item) Item.itemRegistry.getObject("golden_hoe")).getIconFromDamage(0);
}
}

View file

@ -1,30 +1,17 @@
package net.machinemuse.powersuits.powermodule.tool;
import cofh.api.tileentity.IReconfigurableFacing;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import ic2.api.energy.tile.IEnergySink;
import ic2.api.energy.tile.IEnergySource;
import ic2.api.tile.IWrenchable;
import mods.mffs.api.IMFFS_Wrench;
import net.machinemuse.api.IModularItem;
import net.machinemuse.api.moduletrigger.IRightClickModule;
import net.machinemuse.powersuits.common.ModCompatability;
import net.machinemuse.powersuits.item.ItemComponent;
import net.machinemuse.powersuits.powermodule.PowerModuleBase;
import net.machinemuse.utils.MuseBlockUtils;
import net.machinemuse.utils.MuseCommonStrings;
import net.machinemuse.utils.MuseItemUtils;
import net.minecraft.block.Block;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import java.util.List;
@ -81,77 +68,77 @@ public class OmniWrenchModule extends PowerModuleBase implements IRightClickModu
@Override
public boolean onItemUseFirst(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
int bId = world.getBlockId(x, y, z);
int bMeta = world.getBlockMetadata(x, y, z);
if (MuseBlockUtils.canRotate(bId)) {
if (player.isSneaking()) {
world.setBlockMetadataWithNotify(x, y, z, MuseBlockUtils.rotateVanillaBlockAlt(world, bId, bMeta, x, y, z), 3);
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
String soundName = Block.blocksList[bId].stepSound.getPlaceSound();
FMLClientHandler.instance().getClient().sndManager.playSoundFX(soundName, 1.0F, 0.6F);
}
} else {
world.setBlockMetadataWithNotify(x, y, z, MuseBlockUtils.rotateVanillaBlock(world, bId, bMeta, x, y, z), 3);
if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
String soundName = Block.blocksList[bId].stepSound.getPlaceSound();
FMLClientHandler.instance().getClient().sndManager.playSoundFX(soundName, 1.0F, 0.8F);
}
}
return !world.isRemote;
}
if ((Block.blocksList[bId] != null) && Block.blocksList[bId].rotateBlock(world, x, y, z, ForgeDirection.getOrientation(side))) {
return !world.isRemote;
}
TileEntity tile = world.getBlockTileEntity(x, y, z);
if ((tile instanceof IWrenchable)) {
IWrenchable wrenchTile = (IWrenchable) tile;
if (player.isSneaking()) {
side = OmniWrenchModule.SIDE_OPPOSITE[side];
}
if (((tile instanceof IMFFS_Wrench)) && (!((IMFFS_Wrench) tile).wrenchCanManipulate(player, side))) {
return false;
}
if ((side == wrenchTile.getFacing()) && (wrenchTile.wrenchCanRemove(player))) {
ItemStack dropBlock = wrenchTile.getWrenchDrop(player);
if (dropBlock != null) {
world.setBlock(x, y, z, 0);
if (!world.isRemote) {
float f = 0.7F;
double x2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D;
double y2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D;
double z2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D;
EntityItem entity = new EntityItem(world, x + x2, y + y2, z + z2, dropBlock);
entity.delayBeforeCanPickup = 10;
world.spawnEntityInWorld(entity);
}
}
return !world.isRemote;
}
if (!world.isRemote) {
if ((side == 0) || (side == 1)) {
if (((wrenchTile instanceof IEnergySource)) && ((wrenchTile instanceof IEnergySink))) {
wrenchTile.setFacing((short) side);
}
} else {
wrenchTile.setFacing((short) side);
}
}
return !world.isRemote;
}
if ((tile instanceof IReconfigurableFacing)) {
if ((!world.isRemote) && (!player.isSneaking())) {
return ((IReconfigurableFacing) tile).rotateBlock();
}
return false;
}
// int bId = world.getBlockId(x, y, z);
// int bMeta = world.getBlockMetadata(x, y, z);
//
// if (MuseBlockUtils.canRotate(bId)) {
// if (player.isSneaking()) {
// world.setBlockMetadataWithNotify(x, y, z, MuseBlockUtils.rotateVanillaBlockAlt(world, bId, bMeta, x, y, z), 3);
// if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
// String soundName = Block.blocksList[bId].stepSound.getPlaceSound();
// FMLClientHandler.instance().getClient().sndManager.playSoundFX(soundName, 1.0F, 0.6F);
// }
// } else {
// world.setBlockMetadataWithNotify(x, y, z, MuseBlockUtils.rotateVanillaBlock(world, bId, bMeta, x, y, z), 3);
// if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) {
// String soundName = Block.blocksList[bId].stepSound.getPlaceSound();
// FMLClientHandler.instance().getClient().sndManager.playSoundFX(soundName, 1.0F, 0.8F);
// }
// }
// return !world.isRemote;
// }
// if ((Block.blocksList[bId] != null) && Block.blocksList[bId].rotateBlock(world, x, y, z, ForgeDirection.getOrientation(side))) {
// return !world.isRemote;
// }
//
// TileEntity tile = world.getBlockTileEntity(x, y, z);
// if ((tile instanceof IWrenchable)) {
// IWrenchable wrenchTile = (IWrenchable) tile;
//
// if (player.isSneaking()) {
// side = OmniWrenchModule.SIDE_OPPOSITE[side];
// }
//
// if (((tile instanceof IMFFS_Wrench)) && (!((IMFFS_Wrench) tile).wrenchCanManipulate(player, side))) {
// return false;
// }
//
// if ((side == wrenchTile.getFacing()) && (wrenchTile.wrenchCanRemove(player))) {
// ItemStack dropBlock = wrenchTile.getWrenchDrop(player);
//
// if (dropBlock != null) {
// world.setBlock(x, y, z, 0);
// if (!world.isRemote) {
// float f = 0.7F;
// double x2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D;
// double y2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D;
// double z2 = world.rand.nextFloat() * f + (1.0F - f) * 0.5D;
// EntityItem entity = new EntityItem(world, x + x2, y + y2, z + z2, dropBlock);
// entity.delayBeforeCanPickup = 10;
// world.spawnEntityInWorld(entity);
// }
// }
//
// return !world.isRemote;
// }
//
// if (!world.isRemote) {
// if ((side == 0) || (side == 1)) {
// if (((wrenchTile instanceof IEnergySource)) && ((wrenchTile instanceof IEnergySink))) {
// wrenchTile.setFacing((short) side);
// }
// } else {
// wrenchTile.setFacing((short) side);
// }
// }
// return !world.isRemote;
// }
// if ((tile instanceof IReconfigurableFacing)) {
// if ((!world.isRemote) && (!player.isSneaking())) {
// return ((IReconfigurableFacing) tile).rotateBlock();
// }
// return false;
// }
return false;
}

View file

@ -1,16 +1,16 @@
package net.machinemuse.powersuits.powermodule.tool
import net.machinemuse.utils.{MuseCommonStrings, MuseItemUtils}
import net.machinemuse.powersuits.item.ItemComponent
import net.machinemuse.powersuits.powermodule.PowerModuleBase
import net.minecraft.item.ItemStack
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.world.World
import net.machinemuse.powersuits.common.ModularPowersuits
import net.minecraftforge.common.ForgeDirection
import net.machinemuse.api.IModularItem
import net.machinemuse.api.moduletrigger.IRightClickModule
import net.machinemuse.powersuits.common.ModularPowersuits
import net.machinemuse.powersuits.item.ItemComponent
import net.machinemuse.powersuits.powermodule.PowerModuleBase
import net.machinemuse.utils.{MuseCommonStrings, MuseItemUtils}
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.item.ItemStack
import net.minecraft.util.StatCollector
import net.minecraft.world.World
import net.minecraftforge.common.util.ForgeDirection
/**
* Author: MachineMuse (Claire Semple)
@ -36,16 +36,16 @@ class RedstoneLaser(list: java.util.List[IModularItem]) extends PowerModuleBase(
}
def onItemUseFirst(itemStack: ItemStack, player: EntityPlayer, world: World, x: Int, y: Int, z: Int, sideIndex: Int, hitX: Float, hitY: Float, hitZ: Float): Boolean = {
val side: ForgeDirection = ForgeDirection.getOrientation(sideIndex)
val xo = x + side.offsetX
val yo = y + side.offsetY
val zo = z + side.offsetZ
val redlaserid = 0
world.getBlockId(xo, yo, zo) match {
case 0 => world.setBlock(xo, yo, zo, redlaserid)
case `redlaserid` => world.setBlockMetadataWithNotify(xo,yo,zo,redlaserid,world.getBlockMetadata(xo,yo,zo)+1)
case _ =>
}
// val side: ForgeDirection = ForgeDirection.getOrientation(sideIndex)
// val xo = x + side.offsetX
// val yo = y + side.offsetY
// val zo = z + side.offsetZ
// val redlaserid = RedstoneLaser
// world.getBlock(xo, yo, zo) match {
// case 0 => world.setBlock(xo, yo, zo, redlaserid)
// case `redlaserid` => world.setBlockMetadataWithNotify(xo, yo, zo, redlaserid, world.getBlockMetadata(xo, yo, zo) + 1)
// case _ =>
// }
true
}

View file

@ -19,7 +19,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.StatList;
import net.minecraft.util.Icon;
import net.minecraft.util.IIcon;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
@ -159,7 +159,7 @@ public class ShearsModule extends PowerModuleBase implements IBlockBreakingModul
}
@Override
public Icon getIcon(ItemStack item) {
public IIcon getIcon(ItemStack item) {
return shears.getIconIndex();
}

View file

@ -1,11 +1,10 @@
package net.machinemuse.powersuits.powermodule.weapon;
import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.network.Player;
import net.machinemuse.api.IModularItem;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.api.moduletrigger.IRightClickModule;
import net.machinemuse.numina.general.MuseMathUtils;
import net.machinemuse.numina.network.PacketSender;
import net.machinemuse.powersuits.entity.EntityPlasmaBolt;
import net.machinemuse.powersuits.item.ItemComponent;
import net.machinemuse.powersuits.network.packets.MusePacketPlasmaBolt;
@ -97,8 +96,8 @@ public class PlasmaCannonModule extends PowerModuleBase implements IRightClickMo
EntityPlasmaBolt plasmaBolt = new EntityPlasmaBolt(world, player, explosiveness, damagingness, chargeTicks);
world.spawnEntityInWorld(plasmaBolt);
MusePacketPlasmaBolt packet = new MusePacketPlasmaBolt((Player) player, plasmaBolt.entityId, plasmaBolt.size);
PacketDispatcher.sendPacketToAllPlayers(packet.getPacket131());
MusePacketPlasmaBolt packet = new MusePacketPlasmaBolt(player, plasmaBolt.getEntityId(), plasmaBolt.size);
PacketSender.sendToAll(packet);
}
}
}

View file

@ -5,6 +5,7 @@ import cpw.mods.fml.common.TickType;
import cpw.mods.fml.common.network.Player;
import net.machinemuse.general.gui.clickable.ClickableKeybinding;
import net.machinemuse.numina.network.MusePacket;
import net.machinemuse.numina.network.PacketSender;
import net.machinemuse.powersuits.control.KeybindManager;
import net.machinemuse.powersuits.control.PlayerInputMap;
import net.machinemuse.powersuits.network.packets.MusePacketPlayerUpdate;
@ -44,8 +45,8 @@ public class ClientTickHandler implements ITickHandler {
if (inputmap.hasChanged()) {
inputmap.refresh();
MusePacket inputPacket = new MusePacketPlayerUpdate((Player) player, inputmap);
player.sendQueue.addToSendQueue(inputPacket.getPacket131());
MusePacket inputPacket = new MusePacketPlayerUpdate(player, inputmap);
PacketSender.sendToServer(inputPacket.getPacket131());
}
}
}

View file

@ -1,138 +0,0 @@
/**
*
*/
package net.machinemuse.powersuits.tick;
import cpw.mods.fml.common.ITickHandler;
import cpw.mods.fml.common.TickType;
import net.machinemuse.api.ModuleManager;
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
import net.machinemuse.general.sound.SoundLoader;
import net.machinemuse.numina.general.MuseLogger;
import net.machinemuse.numina.general.MuseMathUtils;
import net.machinemuse.numina.sound.Musique;
import net.machinemuse.powersuits.event.MovementManager;
import net.machinemuse.utils.MuseHeatUtils;
import net.machinemuse.utils.MuseItemUtils;
import net.machinemuse.utils.MusePlayerUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import java.util.EnumSet;
import java.util.List;
/**
* Tick handler for Player update step. tickStart() is queued before the entity
* is updated, and tickEnd() is queued afterwards.
* <p/>
* Player update step: "Called to update the entity's position/logic."
* <p/>
* tickData: EntityPlayer of the entity being updated.
*
* @author MachineMuse
*/
public class PlayerTickHandler implements ITickHandler {
@Override
public void tickStart(EnumSet<TickType> type, Object... tickData) {
EntityPlayer player = MusePlayerUtils.toPlayer(tickData[0]);
handle(player);
}
// int gliderTicker = 0, swimTicker = 0;
public void handle(EntityPlayer player) {
List<ItemStack> modularItemsEquipped = MuseItemUtils.modularItemsEquipped(player);
double totalWeight = MuseItemUtils.getPlayerWeight(player);
double weightCapacity = 25000;
// double totalEnergyDrain = 0;
for (ItemStack stack : modularItemsEquipped) {
if (stack.getTagCompound().hasKey("ench")) {
stack.getTagCompound().removeTag("ench");
}
}
boolean foundItemWithModule;
for (IPlayerTickModule module : ModuleManager.getPlayerTickModules()) {
foundItemWithModule = false;
for (ItemStack itemStack : modularItemsEquipped) {
if (module.isValidForItem(itemStack)) {
if (ModuleManager.itemHasActiveModule(itemStack, module.getDataName())) {
module.onPlayerTickActive(player, itemStack);
foundItemWithModule = true;
}
}
}
if (!foundItemWithModule) {
for (ItemStack itemStack : modularItemsEquipped) {
module.onPlayerTickInactive(player, itemStack);
}
}
}
boolean foundItem = modularItemsEquipped.size() > 0;
if (foundItem) {
player.fallDistance = (float) MovementManager.computeFallHeightFromVelocity(MuseMathUtils.clampDouble(player.motionY, -1000.0, 0.0));
// Weight movement penalty
if (totalWeight > weightCapacity) {
player.motionX *= weightCapacity / totalWeight;
player.motionZ *= weightCapacity / totalWeight;
}
MuseHeatUtils.coolPlayer(player, MusePlayerUtils.getPlayerCoolingBasedOnMaterial(player));
double maxHeat = MuseHeatUtils.getMaxHeat(player);
double currHeat = MuseHeatUtils.getPlayerHeat(player);
if (currHeat > maxHeat) {
player.attackEntityFrom(MuseHeatUtils.overheatDamage, (int) Math.sqrt(currHeat - maxHeat) / 4);
player.setFire(1);
} else {
player.extinguish();
}
double velsq2 = MuseMathUtils.sumsq(player.motionX, player.motionY, player.motionZ) - 0.5;
if (player.isAirBorne && velsq2 > 0) {
Musique.playerSound(player, SoundLoader.SOUND_GLIDER, (float) (velsq2 / 3), 1.0f, true);
} else {
Musique.stopPlayerSound(player, SoundLoader.SOUND_GLIDER);
}
}
}
@Override
public void tickEnd(EnumSet<TickType> type, Object... tickData) {
EntityPlayer player = MusePlayerUtils.toPlayer(tickData[0]);
List<ItemStack> stacks = MuseItemUtils.getModularItemsInInventory(player.inventory);
}
public static World toWorld(Object data) {
World world = null;
try {
world = (World) data;
} catch (ClassCastException e) {
MuseLogger.logError("MMMPS: Player tick handler received invalid World object");
e.printStackTrace();
}
return world;
}
/**
* Type of tick handled by this handler
*/
@Override
public EnumSet<TickType> ticks() {
return EnumSet.of(TickType.PLAYER);
}
/**
* Profiling label for this handler
*/
@Override
public String getLabel() {
return "MMMPS: Player Tick";
}
}

View file

@ -1,100 +0,0 @@
package net.machinemuse.powersuits.tick;
import cpw.mods.fml.common.ITickHandler;
import cpw.mods.fml.common.TickType;
import net.machinemuse.general.gui.EnergyMeter;
import net.machinemuse.general.gui.HeatMeter;
import net.machinemuse.powersuits.block.BlockTinkerTable;
import net.machinemuse.powersuits.common.Config;
import net.machinemuse.utils.ElectricItemUtils;
import net.machinemuse.utils.MuseHeatUtils;
import net.machinemuse.utils.MuseItemUtils;
import net.machinemuse.utils.MuseStringUtils;
import net.machinemuse.utils.render.GlowBuffer;
import net.machinemuse.utils.render.MuseRenderer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.entity.player.EntityPlayer;
import java.util.EnumSet;
/**
* Called before and after the 3D world is rendered (tickEnd is called BEFORE
* the 2D gui is drawn... I think?).
*
* @author MachineMuse
*/
public class RenderTickHandler implements ITickHandler {
protected static HeatMeter heat;
protected static HeatMeter energy;
private int lightningCounter = 0;
@Override
public void tickStart(EnumSet<TickType> type, Object... tickData) {
if (Config.canUseShaders) {
GlowBuffer.clear();
}
}
@Override
public void tickEnd(EnumSet<TickType> type, Object... tickData) {
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
if (player != null && MuseItemUtils.modularItemsEquipped(player).size() > 0 && Minecraft.getMinecraft().currentScreen == null) {
Minecraft mc = Minecraft.getMinecraft();
ScaledResolution screen = new ScaledResolution(mc.gameSettings, mc.displayWidth, mc.displayHeight);
drawMeters(player, screen);
// drawGogglesHUD(player, mc, ((Float) tickData[0]));
}
}
private void drawMeters(EntityPlayer player, ScaledResolution screen) {
double currEnergy = ElectricItemUtils.getPlayerEnergy(player);
double maxEnergy = ElectricItemUtils.getMaxEnergy(player);
double currHeat = MuseHeatUtils.getPlayerHeat(player);
double maxHeat = MuseHeatUtils.getMaxHeat(player);
if (maxEnergy > 0 && BlockTinkerTable.energyIcon != null) {
String currStr = MuseStringUtils.formatNumberShort(currEnergy);
String maxStr = MuseStringUtils.formatNumberShort(maxEnergy);
String currHeatStr = MuseStringUtils.formatNumberShort(currHeat);
String maxHeatStr = MuseStringUtils.formatNumberShort(maxHeat);
if (Config.useGraphicalMeters()) {
if (energy == null) {
energy = new EnergyMeter();
heat = new HeatMeter();
}
double left = screen.getScaledWidth() - 20;
double top = screen.getScaledHeight() / 2.0 - 16;
energy.draw(left, top, currEnergy / maxEnergy);
heat.draw(left + 8, top, currHeat / maxHeat);
MuseRenderer.drawRightAlignedString(currStr, left - 2, top + 10);
MuseRenderer.drawRightAlignedString(currHeatStr, left - 2, top + 20);
} else {
MuseRenderer.drawString(currStr + '/' + maxStr + " \u1D60", 1, 1);
MuseRenderer.drawString(currHeatStr + '/' + maxHeatStr + " C", 1, 10);
}
}
}
// private void drawGogglesHUD(EntityPlayer player, Minecraft mc, float partialTickTime) {
//
// if (ModCompatability.isThaumCraftLoaded() && ModCompatability.enableThaumGogglesModule() && player.getCurrentArmor(3) != null && player.getCurrentArmor(3).getItem() instanceof IModularItem && ModuleManager.itemHasActiveModule(player.getCurrentArmor(3), "Aurameter")) {
// ThaumRenderEventHandler.renderGogglesHUD(partialTickTime, player, mc.theWorld.getWorldTime());
// }
// }
@Override
public EnumSet<TickType> ticks() {
return EnumSet.of(TickType.RENDER);
}
@Override
public String getLabel() {
return "MMMPS: Render Tick";
}
}

View file

@ -1,105 +0,0 @@
package net.machinemuse.powersuits.tick;
import java.util.EnumSet;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import cpw.mods.fml.common.ITickHandler;
import cpw.mods.fml.common.TickType;
/**
* World tick handler for the mod. This is where you put code that should be
* executed once every world tick. ~Not yet used~
*
* @author MachineMuse
*
*/
public class WorldTickHandler implements ITickHandler {
/**
* Called at the "start" phase of a tick
*
* Multiple tick types may fire simultaneously- you will only be called once
* with all the firing ticks
*/
@Override
public void tickStart(EnumSet<TickType> type, Object... tickData) {
World world;
EntityPlayer player;
// if (type.contains(TickType.WORLD)) {
// world = (World) tickData[0];
// }
// TODO: Find a better way to handle this^
}
/**
* Called at the "end" phase of a tick
*
* Multiple ticks may fire simultaneously- you will only be called once with
* all the firing ticks
*/
@Override
public void tickEnd(EnumSet<TickType> type, Object... tickData) {
// TODO Auto-generated method stub
}
/**
* Returns the list of ticks this tick handler is interested in receiving at
* the minute
*/
@Override
public EnumSet<TickType> ticks() {
return EnumSet.of(
TickType.WORLD,
TickType.PLAYER);
// return EnumSet.of(TickType.WORLD);
}
/**
* A profiling label for this tick handler
*/
@Override
public String getLabel() {
return "MMMPS: World Tick";
}
/**
* Tick types:
*
* WORLD - server and client side - Fired during the world evaluation loop
*
* arg 0 : world object of the world that is ticking
*
*
* RENDER - client side Fired during the render processing phase
*
* arg 0 : float "partial render time"
*
* GUI - client side Fired during the render processing phase if a GUI is
* open
*
* arg 0 : float "partial render time"
*
* arg 1 : the open gui or null if no gui is open
*
*
* CLIENTGUI - client side - Fired during the client evaluation loop arg 0 :
* The open gui or null if no gui is open
*
* WORLDLOAD - server side - Fired once as the world loads from disk
*
* CLIENT - client side - Fired once per client tick loop.
*
* PLAYER - client and server side. - Fired whenever the player's update
* loop runs.
*
* arg 0 : the player
*
* arg 1 : the world the player is in
*
*
* SERVER - server side - This is the server game tick. Fired once per tick
* loop on the server.
*/
}

View file

@ -1,5 +1,7 @@
package net.machinemuse.utils;
import net.minecraft.util.ResourceLocation;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
@ -173,9 +175,15 @@ public abstract class MuseStringUtils {
return strlist;
}
public static String extractName(String resource) {
int ix = Math.max(resource.lastIndexOf('/'), resource.lastIndexOf('\\')) + 1;
return resource.substring(ix, resource.lastIndexOf('.'));
public static String extractName(ResourceLocation resource) {
String filename = resource.toString();
int ix = Math.max(filename.lastIndexOf('/'), Math.max(filename.lastIndexOf('\\'), filename.lastIndexOf(':'))) + 1;
return filename.substring(ix, filename.lastIndexOf('.'));
}
public static String extractName(String filename) {
int ix = Math.max(filename.lastIndexOf('/'), Math.max(filename.lastIndexOf('\\'), filename.lastIndexOf(':'))) + 1;
return filename.substring(ix, filename.lastIndexOf('.'));
}
/**

View file

@ -1,6 +1,6 @@
package net.machinemuse.utils.render
import net.minecraft.util.Icon
import net.minecraft.util.IIcon
import net.machinemuse.powersuits.common.Config
import org.lwjgl.opengl.GL11._
import net.machinemuse.numina.geometry.Colour
@ -69,7 +69,7 @@ object GuiIcons {
val filepath = Config.TEXTURE_PREFIX + "gui/plussign.png"
}
object GuiIconDrawer extends Icon {
object GuiIconDrawer extends IIcon {
def getOriginX: Int = 0
def getOriginY: Int = 0