From acbf07b09d9d333479f28f069fb4d78992d75080 Mon Sep 17 00:00:00 2001 From: Leon Date: Wed, 2 Nov 2016 19:07:20 -0400 Subject: [PATCH] More Scala to Java porting. Not much left --- .../net/machinemuse/api/ModuleManager.java | 8 +- .../general/gui/frame/ModuleTweakFrame.java | 1 - .../powersuits/control/KeybindKeyHandler.java | 9 +- .../powersuits/item/ItemPowerFist.java | 146 ++-- .../general/gui/frame/ColourPickerFrame.scala | 3 +- .../general/gui/frame/ItemModelViewFrame.java | 270 ++++---- .../gui/frame/ItemModelViewFrame.scala | 97 --- .../gui/frame/PartManipContainer.scala | 5 - .../general/gui/frame/PartManipSubFrame.java | 638 +++++++++++++----- .../general/gui/frame/PartManipSubFrame.scala | 1 - .../item/IModeChangingModularItem.java | 21 + .../item/IModeChangingModularItem.scala | 57 ++ .../powersuits/item/ItemElectricArmor.java | 192 ++++++ .../powersuits/item/ItemElectricArmor.scala | 24 +- .../powersuits/item/ItemPowerFist.scala | 2 +- .../item/ModeChangingModularItem.java | 110 +++ .../item/ModeChangingModularItem.scala | 57 -- .../network/packets/MPSPacketList.java | 28 + .../network/packets/MPSPacketList.scala | 22 - 19 files changed, 1125 insertions(+), 566 deletions(-) rename src/main/{scala => java}/net/machinemuse/powersuits/item/ItemPowerFist.java (90%) delete mode 100644 src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.scala create mode 100644 src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.java create mode 100644 src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.scala create mode 100644 src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.java create mode 100644 src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.java delete mode 100644 src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.scala create mode 100644 src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.java delete mode 100644 src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.scala diff --git a/src/main/java/net/machinemuse/api/ModuleManager.java b/src/main/java/net/machinemuse/api/ModuleManager.java index f7d0129..e4835c7 100644 --- a/src/main/java/net/machinemuse/api/ModuleManager.java +++ b/src/main/java/net/machinemuse/api/ModuleManager.java @@ -4,11 +4,12 @@ import net.machinemuse.api.moduletrigger.IBlockBreakingModule; import net.machinemuse.api.moduletrigger.IPlayerTickModule; import net.machinemuse.api.moduletrigger.IRightClickModule; import net.machinemuse.api.moduletrigger.IToggleableModule; -import net.machinemuse.powersuits.item.ModeChangingModularItem; +import net.machinemuse.powersuits.item.IModeChangingModularItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import javax.annotation.Nullable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -34,6 +35,7 @@ public class ModuleManager { return playerTickModules; } + @Nullable public static IPowerModule getModule(String key) { return moduleMap.get(key); } @@ -140,10 +142,10 @@ public class ModuleManager { // playerEntity.sendChatToPlayer("Server has disallowed this module. Sorry!"); return false; } - if (module instanceof IRightClickModule && itemStack.getItem() instanceof ModeChangingModularItem) { + if (module instanceof IRightClickModule && itemStack.getItem() instanceof IModeChangingModularItem) { // MuseLogger.logDebug("Module: " + moduleName + " vs Mode: " + // MuseItemUtils.getActiveMode(itemStack)); - ModeChangingModularItem item = (ModeChangingModularItem) itemStack.getItem(); + IModeChangingModularItem item = (IModeChangingModularItem) itemStack.getItem(); return moduleName.equals(item.getActiveMode(itemStack)); } else { diff --git a/src/main/java/net/machinemuse/general/gui/frame/ModuleTweakFrame.java b/src/main/java/net/machinemuse/general/gui/frame/ModuleTweakFrame.java index 9325215..efed985 100644 --- a/src/main/java/net/machinemuse/general/gui/frame/ModuleTweakFrame.java +++ b/src/main/java/net/machinemuse/general/gui/frame/ModuleTweakFrame.java @@ -61,7 +61,6 @@ public class ModuleTweakFrame extends ScrollableFrame { propertyStrings = null; } if (selectedSlider != null) { - System.out.println("moving slider name: " + selectedSlider.name()); selectedSlider.moveSlider(mousex, mousey); } diff --git a/src/main/java/net/machinemuse/powersuits/control/KeybindKeyHandler.java b/src/main/java/net/machinemuse/powersuits/control/KeybindKeyHandler.java index 3b8da12..2ba0cf3 100644 --- a/src/main/java/net/machinemuse/powersuits/control/KeybindKeyHandler.java +++ b/src/main/java/net/machinemuse/powersuits/control/KeybindKeyHandler.java @@ -6,7 +6,8 @@ import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.machinemuse.powersuits.common.ModularPowersuits; -import net.machinemuse.powersuits.item.ModeChangingModularItem$; +import net.machinemuse.powersuits.item.IModeChangingModularItem; +import net.machinemuse.powersuits.item.ModeChangingModularItem; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.client.settings.KeyBinding; @@ -58,11 +59,12 @@ public class KeybindKeyHandler { } if (key == cycleToolBackward.getKeyCode()) { Minecraft.getMinecraft().playerController.updateController(); - ModeChangingModularItem$.MODULE$.cycleModeForItem(player.inventory.getStackInSlot(player.inventory.currentItem), player, 1); + ModeChangingModularItem.cycleModeForItem(player.inventory.getStackInSlot(player.inventory.currentItem), player, 1); + } if (key == cycleToolForward.getKeyCode()) { Minecraft.getMinecraft().playerController.updateController(); - ModeChangingModularItem$.MODULE$.cycleModeForItem(player.inventory.getStackInSlot(player.inventory.currentItem), player, -1); + ModeChangingModularItem.cycleModeForItem(player.inventory.getStackInSlot(player.inventory.currentItem), player, -1); } } else { if (Minecraft.getMinecraft().thePlayer != null && key == goDownKey.getKeyCode()) { @@ -70,5 +72,4 @@ public class KeybindKeyHandler { } } } - } diff --git a/src/main/scala/net/machinemuse/powersuits/item/ItemPowerFist.java b/src/main/java/net/machinemuse/powersuits/item/ItemPowerFist.java similarity index 90% rename from src/main/scala/net/machinemuse/powersuits/item/ItemPowerFist.java rename to src/main/java/net/machinemuse/powersuits/item/ItemPowerFist.java index 0087ff0..d6b738f 100644 --- a/src/main/scala/net/machinemuse/powersuits/item/ItemPowerFist.java +++ b/src/main/java/net/machinemuse/powersuits/item/ItemPowerFist.java @@ -1,56 +1,46 @@ package net.machinemuse.powersuits.item; -import net.machinemuse.api.moduletrigger.IBlockBreakingModule; -import net.machinemuse.powersuits.common.Config; -import net.machinemuse.powersuits.common.Config$; -import net.machinemuse.general.gui.MuseIcon; -import scala.collection.mutable.StringBuilder; -import net.minecraft.item.Item; -import net.minecraft.entity.item.EntityMinecart; -import net.machinemuse.utils.MuseHeatUtils; -import net.machinemuse.powersuits.powermodule.tool.GrafterModule; -import net.machinemuse.api.IPowerModule; -import scala.reflect.Manifest; -import net.machinemuse.api.moduletrigger.IRightClickModule; -import scala.reflect.ManifestFactory$; -import net.machinemuse.numina.scala.OptionCast$; -import net.minecraft.item.EnumAction; -import net.minecraft.entity.Entity; -import scala.runtime.NonLocalReturnControl; -import scala.runtime.BoxedUnit; -import scala.Function1; -import java.util.List; -import scala.collection.JavaConversions$; -import net.minecraft.world.World; -import net.minecraft.util.Vec3; -import net.minecraft.util.DamageSource; -import net.machinemuse.utils.ElectricItemUtils; -import net.machinemuse.powersuits.powermodule.weapon.MeleeAssistModule; -import net.machinemuse.api.ModuleManager; -import net.machinemuse.powersuits.powermodule.tool.OmniWrenchModule; -import net.minecraft.entity.EntityLivingBase; +import appeng.api.implementations.items.IAEWrench; +import buildcraft.api.tools.IToolWrench; +import cofh.api.item.IToolHammer; +import com.bluepowermod.api.misc.IScrewdriver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.block.Block; -import net.machinemuse.numina.item.ModeChangingItem; -import net.machinemuse.numina.item.ModeChangingItem$class; -import scala.collection.Seq; -import net.minecraft.util.IIcon; -import scala.Option; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import scala.reflect.ScalaSignature; -import cpw.mods.fml.common.Optional; -import mekanism.api.IMekWrench; import crazypants.enderio.api.tool.ITool; -import com.bluepowermod.api.misc.IScrewdriver; -import buildcraft.api.tools.IToolWrench; -import appeng.api.implementations.items.IAEWrench; -import mods.railcraft.api.core.items.IToolCrowbar; -import powercrystals.minefactoryreloaded.api.IMFRHammer; -import cofh.api.item.IToolHammer; import forestry.api.arboriculture.IToolGrafter; +import mekanism.api.IMekWrench; +import mods.railcraft.api.core.items.IToolCrowbar; +import net.machinemuse.api.IPowerModule; +import net.machinemuse.api.ModuleManager; +import net.machinemuse.api.moduletrigger.IBlockBreakingModule; +import net.machinemuse.api.moduletrigger.IRightClickModule; +import net.machinemuse.general.gui.MuseIcon; +import net.machinemuse.numina.item.ModeChangingItem; +import net.machinemuse.powersuits.common.Config; +import net.machinemuse.powersuits.powermodule.tool.GrafterModule; +import net.machinemuse.powersuits.powermodule.tool.OmniWrenchModule; +import net.machinemuse.powersuits.powermodule.weapon.MeleeAssistModule; +import net.machinemuse.utils.ElectricItemUtils; +import net.machinemuse.utils.MuseHeatUtils; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityMinecart; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.IIcon; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import powercrystals.minefactoryreloaded.api.IMFRHammer; + + +import javax.annotation.Nullable; +import java.util.List; /** * Describes the modular power tool. @@ -71,13 +61,13 @@ import forestry.api.arboriculture.IToolGrafter; @Optional.Interface(iface = "cofh.api.item.IToolHammer", modid = "CoFHCore", striprefs = true), @Optional.Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraft|Core", striprefs = true), @Optional.Interface(iface = "appeng.api.implementations.items.IAEWrench", modid = "appliedenergistics2", striprefs = true) }) -public class ItemPowerFist extends ItemElectricTool implements IToolGrafter, IToolHammer, IMFRHammer, IToolCrowbar, IAEWrench, IToolWrench, IScrewdriver, mrtjp.projectred.api.IScrewdriver, ITool, IMekWrench, ModeChangingModularItem +public class ItemPowerFist extends ItemElectricTool implements IToolGrafter, IToolHammer, IMFRHammer, IToolCrowbar, IAEWrench, IToolWrench, IScrewdriver, mrtjp.projectred.api.IScrewdriver, ITool, IMekWrench, IModeChangingModularItem { private final String iconpath = MuseIcon.ICON_PREFIX + "handitem"; public ItemPowerFist() { super(0.0f, Item.ToolMaterial.EMERALD); -// ModeChangingItem$class.$init$(this); -// ModeChangingModularItem$class.$init$(this); +// IModeChangingItem$class.$init$(this); +// IModeChangingModularItem$class.$init$(this); this.setMaxStackSize(1); this.setMaxDamage(0); this.setCreativeTab(Config.getCreativeTab()); @@ -389,42 +379,50 @@ public class ItemPowerFist extends ItemElectricTool implements IToolGrafter, ITo return this.getActiveMode(entityPlayer.getHeldItem(), entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH); } -/* A D D E D B Y D E C O M P I L E R ------------------------------------------------------------------------------ */ - - - public Option getModeIcon(String mode, ItemStack stack, EntityPlayer player) { - return (Option)ModeChangingModularItem$class.getModeIcon(this, mode, stack, player); - } - - public Seq getValidModes(ItemStack stack, EntityPlayer player) { - return (Seq)ModeChangingModularItem$class.getValidModes(this, stack, player); - } - - public Seq getValidModes(ItemStack stack) { - return (Seq)ModeChangingModularItem$class.getValidModes(this, stack); - } - - public String getActiveMode(ItemStack stack) { - return ModeChangingModularItem$class.getActiveMode(this, stack); - } - + /* A D D E D B Y D E C O M P I L E R ------------------------------------------------------------------------------ */ + @Override public void setActiveMode(ItemStack stack, String newMode) { - ModeChangingItem$class.setActiveMode(this, stack, newMode); + ModeChangingItem.getInstance().setActiveMode(stack, newMode); } + @Override public String getActiveMode(ItemStack stack, EntityPlayer player) { - return ModeChangingItem$class.getActiveMode(this, stack, player); + return ModeChangingItem.getInstance().getActiveMode(stack, player); } + @Override public void cycleMode(ItemStack stack, EntityPlayer player, int dMode) { - ModeChangingItem$class.cycleMode(this, stack, player, dMode); + ModeChangingItem.getInstance().cycleMode(stack, player, dMode); } + @Override public String nextMode(ItemStack stack, EntityPlayer player) { - return ModeChangingItem$class.nextMode(this, stack, player); + return ModeChangingItem.getInstance().nextMode(stack, player); } + @Override public String prevMode(ItemStack stack, EntityPlayer player) { - return ModeChangingItem$class.prevMode(this, stack, player); + return ModeChangingItem.getInstance().prevMode(stack, player); + } + + @Nullable + @Override + public IIcon getModeIcon(String mode, ItemStack stack, EntityPlayer player) { + return ModeChangingModularItem.getInstance().getModeIcon(mode, stack, player); + } + + @Override + public List getValidModes(ItemStack stack, EntityPlayer player) { + return ModeChangingModularItem.getInstance().getValidModes(stack, player); + } + + @Override + public List getValidModes(ItemStack stack) { + return ModeChangingModularItem.getInstance().getValidModes(stack); + } + + @Override + public String getActiveMode(ItemStack stack) { + return ModeChangingModularItem.getInstance().getActiveMode(stack); } } \ No newline at end of file diff --git a/src/main/scala/net/machinemuse/general/gui/frame/ColourPickerFrame.scala b/src/main/scala/net/machinemuse/general/gui/frame/ColourPickerFrame.scala index f671fdf..fdf0bc9 100644 --- a/src/main/scala/net/machinemuse/general/gui/frame/ColourPickerFrame.scala +++ b/src/main/scala/net/machinemuse/general/gui/frame/ColourPickerFrame.scala @@ -46,8 +46,9 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b renderSpec.setIntArray("colours", intArray) } val player = Minecraft.getMinecraft.thePlayer - if (player.worldObj.isRemote) + if (player.worldObj.isRemote) { PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, colours)) + } Some(renderSpec.getTag("colours").asInstanceOf[NBTTagIntArray]) } } diff --git a/src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.java b/src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.java index 41136f7..1a6292e 100644 --- a/src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.java +++ b/src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.java @@ -1,130 +1,140 @@ -//package net.machinemuse.general.gui.frame; -// -//import net.machinemuse.general.gui.clickable.ClickableItem; -//import net.machinemuse.numina.general.MuseMathUtils; -//import net.machinemuse.numina.geometry.Colour; -//import net.machinemuse.numina.geometry.DrawableMuseRect; -//import net.machinemuse.numina.geometry.MusePoint2D; -//import net.machinemuse.powersuits.item.ItemPowerArmor; -//import net.machinemuse.utils.MuseItemUtils; -//import net.minecraft.client.Minecraft; -//import net.minecraft.nbt.NBTTagCompound; -//import org.lwjgl.input.Mouse; -//import org.lwjgl.opengl.GL11; -//import net.machinemuse.powersuits.client.render.item.ArmorModel; -// -//import java.util.List; -// -///** -// * Author: MachineMuse (Claire Semple) -// * Created: 12:25 PM, 5/2/13 -// * -// * Ported to Java by lehjr on 10/21/16. -// */ -//public class ItemModelViewFrame implements IGuiFrame { -// DrawableMuseRect border; -// double anchorx = 0; -// double anchory = 0; -// int dragging = -1; -// double lastdWheel = 0; -// double rotx = 0; -// double roty = 0; -// double offsetx = 0; -// double offsety = 0; -// double zoom = 64; -// -// ItemSelectionFrame itemSelector; -// MusePoint2D topleft; -// MusePoint2D bottomright; -// Colour borderColour; -// Colour insideColour; -// -// public ItemModelViewFrame(ItemSelectionFrame itemSelector, MusePoint2D topleft, MusePoint2D bottomright, Colour borderColour, Colour insideColour) { -// this.itemSelector = itemSelector; -// this.topleft = topleft; -// this.bottomright = bottomright; -// this.borderColour = borderColour; -// this.insideColour = insideColour; -// border = new DrawableMuseRect(topleft, bottomright, borderColour, insideColour); -// } -// -// int getArmorSlot() { -// return ((ItemPowerArmor)getSelectedItem().getItem().getItem()).armorType; -// } -// -// ClickableItem getSelectedItem() { -// return itemSelector.getSelectedItem(); -// } -// -// NBTTagCompound getRenderTag() { -// return MuseItemUtils.getMuseRenderTag(getSelectedItem().getItem(), getArmorSlot()); -// } -// -// @Override -// public void onMouseDown(double x, double y, int button) { -// if (border.containsPoint(x, y)) { -// dragging = button; -// anchorx = x; -// anchory = y; -// } -// } -// -// @Override -// public void onMouseUp(double x, double y, int button) { -// dragging = -1; -// } -// -// @Override -// public void update(double mousex, double mousey) { -// if (border.containsPoint(mousex, mousey)) { -// double dscroll = (lastdWheel - Mouse.getDWheel()) / 120; -// zoom = zoom * Math.pow(1.1, dscroll); -// lastdWheel = Mouse.getDWheel(); -// } -// double dx = mousex - anchorx; -// double dy = mousey - anchory; -// switch(dragging) { -// case -1: -// break; -// case 0: -// rotx = MuseMathUtils.clampDouble((rotx + dy), -90, 90); -// roty = (roty - dx); -// anchorx = mousex; -// anchory = mousey; -// break; -// case 1: -// offsetx = (offsetx + dx); -// offsety = (offsety + dy); -// anchorx = mousex; -// anchory = mousey; -// break; -// default: -// break; -// } -// } -// -// @Override -// public void draw() { -// Minecraft mc = Minecraft.getMinecraft(); -// border.draw(); -// if (itemSelector.getSelectedItem().equals(null) || !(getSelectedItem().getItem().getItem() instanceof ItemPowerArmor)) -// return; -// GL11.glPushMatrix(); -// ArmorModel.instance.renderSpec = MuseItemUtils.getMuseRenderTag(getSelectedItem().getItem(), getArmorSlot()); -// ArmorModel.instance.visibleSection = getArmorSlot(); -// GL11.glTranslated(border.centerx() + offsetx, border.centery() + offsety, 0); -// GL11.glScaled(zoom, zoom, zoom); -// GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); -// GL11.glDisable(GL11.GL_CULL_FACE); -// GL11.glRotatef((float)rotx, 1, 0, 0); -// GL11.glRotatef((float)roty, 0, 1, 0); -// GL11.glTranslated(0, -getArmorSlot() / 2.0, 0); -// ArmorModel.instance.render(mc.thePlayer, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625f); -// GL11.glPopMatrix(); -// } -// -// @Override -// public List getToolTip(int x, int y) { -// return null; -// } -//} +package net.machinemuse.general.gui.frame; + +import net.machinemuse.general.gui.clickable.ClickableItem; +import net.machinemuse.numina.general.MuseMathUtils; +import net.machinemuse.numina.geometry.Colour; +import net.machinemuse.numina.geometry.DrawableMuseRect; +import net.machinemuse.numina.geometry.MusePoint2D; +import net.machinemuse.powersuits.client.render.item.ArmorModel$; +import net.machinemuse.powersuits.item.ItemPowerArmor; +import net.machinemuse.utils.MuseItemUtils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; +import scala.None$; + +import java.util.List; + +/** + * Author: MachineMuse (Claire Semple) + * Created: 12:25 PM, 5/2/13 + * + * Ported to Java by lehjr on 11/2/16. + */ +public class ItemModelViewFrame implements IGuiFrame +{ + private final ItemSelectionFrame itemSelector; + private final DrawableMuseRect border; + private double anchorx; + private double anchory; + private int dragging; + private double lastdWheel; + private double rotx; + private double roty; + private double offsetx; + private double offsety; + private double zoom; + + public ItemModelViewFrame(final ItemSelectionFrame itemSelector, final MusePoint2D topleft, final MusePoint2D bottomright, final Colour borderColour, final Colour insideColour) { + this.itemSelector = itemSelector; + this.border = new DrawableMuseRect(topleft, bottomright, borderColour, insideColour); + this.anchorx = 0.0; + this.anchory = 0.0; + this.dragging = -1; + this.lastdWheel = 0.0; + this.rotx = 0.0; + this.roty = 0.0; + this.offsetx = 0.0; + this.offsety = 0.0; + this.zoom = 64.0; + } + + public int getArmorSlot() { + return ((ItemPowerArmor)this.getSelectedItem().getItem().getItem()).armorType; + } + + public ClickableItem getSelectedItem() { + return this.itemSelector.getSelectedItem(); + } + + public NBTTagCompound getRenderTag() { + return MuseItemUtils.getMuseRenderTag(this.getSelectedItem().getItem(), this.getArmorSlot()); + } + + @Override + public void onMouseDown(final double x, final double y, final int button) { + if (this.border.containsPoint(x, y)) { + this.dragging = button; + this.anchorx = x; + this.anchory = y; + } + } + + @Override + public void onMouseUp(final double x, final double y, final int button) { + this.dragging = -1; + } + + @Override + public void update(final double mousex, final double mousey) { + if (this.border.containsPoint(mousex, mousey)) { + final double dscroll = (this.lastdWheel - Mouse.getDWheel()) / 120; + this.zoom = (this.zoom * Math.pow(1.1, dscroll)); + this.lastdWheel = Mouse.getDWheel(); + } + final double dx = mousex - this.anchorx; + final double dy = mousey - this.anchory; + switch (this.dragging) { + default: { + final None$ module$ = None$.MODULE$; + break; + } + case 1: { + this.offsetx = this.offsetx + dx; + this.offsety = this.offsety + dy; + this.anchorx = mousex; + this.anchory = mousey; + break; + } + case 0: { + this.rotx = MuseMathUtils.clampDouble(this.rotx + dy, -90.0, 90.0); + this.roty = this.roty - dx; + this.anchorx = mousex; + this.anchory = mousey; + break; + } + case -1: { + final None$ module$2 = None$.MODULE$; + break; + } + } + } + + @Override + public void draw() { + final Minecraft mc = Minecraft.getMinecraft(); + this.border.draw(); + if (this.itemSelector.getSelectedItem() != null && this.getSelectedItem().getItem().getItem() instanceof ItemPowerArmor) { + GL11.glPushMatrix(); + ArmorModel$.MODULE$.instance().renderSpec_$eq(MuseItemUtils.getMuseRenderTag(this.getSelectedItem().getItem(), this.getArmorSlot())); + ArmorModel$.MODULE$.instance().visibleSection_$eq(this.getArmorSlot()); + GL11.glTranslated(this.border.centerx() + this.offsetx, this.border.centery() + this.offsety, 0.0); + GL11.glScaled(this.zoom, this.zoom, this.zoom); + GL11.glClear(256); + GL11.glDisable(2884); + GL11.glRotatef((float)this.rotx, 1.0f, 0.0f, 0.0f); + GL11.glRotatef((float)this.roty, 0.0f, 1.0f, 0.0f); + GL11.glTranslated(0.0, -this.getArmorSlot() / 2.0, 0.0); + ((ModelBiped)ArmorModel$.MODULE$.instance()).render((Entity)mc.thePlayer, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0625f); + GL11.glPopMatrix(); + } + } + + @Override + public List getToolTip(final int x, final int y) { + return null; + } +} \ No newline at end of file diff --git a/src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.scala b/src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.scala deleted file mode 100644 index 8a92d3c..0000000 --- a/src/main/scala/net/machinemuse/general/gui/frame/ItemModelViewFrame.scala +++ /dev/null @@ -1,97 +0,0 @@ -package net.machinemuse.general.gui.frame - -import java.util - -import net.machinemuse.numina.general.MuseMathUtils -import net.machinemuse.numina.geometry.{Colour, DrawableMuseRect, MusePoint2D} -import net.machinemuse.powersuits.client.render.item.ArmorModel -import net.machinemuse.powersuits.item.ItemPowerArmor -import net.machinemuse.utils.MuseItemUtils -import net.minecraft.client.Minecraft -import net.minecraft.nbt.NBTTagCompound -import org.lwjgl.input.Mouse -import org.lwjgl.opengl.GL11._ - -/** - * Author: MachineMuse (Claire Semple) - * Created: 12:25 PM, 5/2/13 - */ -class ItemModelViewFrame(itemSelector: ItemSelectionFrame, topleft: MusePoint2D, bottomright: MusePoint2D, borderColour: Colour, insideColour: Colour) - extends IGuiFrame { - val border = new DrawableMuseRect(topleft, bottomright, borderColour, insideColour) - - var anchorx: Double = 0 - var anchory: Double = 0 - var dragging: Int = -1 - var lastdWheel: Double = 0 - - var rotx: Double = 0 - var roty: Double = 0 - var offsetx: Double = 0 - var offsety: Double = 0 - var zoom: Double = 64 - - def getArmorSlot = getSelectedItem.getItem.getItem.asInstanceOf[ItemPowerArmor].armorType - - def getSelectedItem = itemSelector.getSelectedItem - - def getRenderTag: NBTTagCompound = MuseItemUtils.getMuseRenderTag(getSelectedItem.getItem, getArmorSlot) - - def onMouseDown(x: Double, y: Double, button: Int) { - if (border.containsPoint(x, y)) { - dragging = button - anchorx = x - anchory = y - } - } - - def onMouseUp(x: Double, y: Double, button: Int) { - dragging = -1 - } - - def update(mousex: Double, mousey: Double) { - if (border.containsPoint(mousex, mousey)) { - val dscroll: Double = (lastdWheel - Mouse.getDWheel) / 120 - zoom = zoom * Math.pow(1.1, dscroll) - lastdWheel = Mouse.getDWheel - } - val dx = mousex - anchorx - val dy = mousey - anchory - dragging match { - case -1 => None - case 0 => { - rotx = MuseMathUtils.clampDouble((rotx + dy), -90, 90) - roty = (roty - dx) - anchorx = mousex - anchory = mousey - } - case 1 => { - offsetx = (offsetx + dx) - offsety = (offsety + dy) - anchorx = mousex - anchory = mousey - } - case _ => None - } - } - - def draw() { - val mc: Minecraft = Minecraft.getMinecraft - border.draw() - if (itemSelector.getSelectedItem == null || !getSelectedItem.getItem.getItem.isInstanceOf[ItemPowerArmor]) return - glPushMatrix() - ArmorModel.instance.renderSpec = MuseItemUtils.getMuseRenderTag(getSelectedItem.getItem, getArmorSlot) - ArmorModel.instance.visibleSection = getArmorSlot - glTranslated(border.centerx + offsetx, border.centery + offsety, 0) - glScaled(zoom, zoom, zoom) - glClear(GL_DEPTH_BUFFER_BIT) - glDisable(GL_CULL_FACE) - glRotatef(rotx.toFloat, 1, 0, 0) - glRotatef(roty.toFloat, 0, 1, 0) - glTranslated(0, -getArmorSlot / 2.0, 0) - ArmorModel.instance.render(mc.thePlayer, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625f) - glPopMatrix() - } - - def getToolTip(x: Int, y: Int): util.List[String] = null -} diff --git a/src/main/scala/net/machinemuse/general/gui/frame/PartManipContainer.scala b/src/main/scala/net/machinemuse/general/gui/frame/PartManipContainer.scala index 4b381e4..145180f 100644 --- a/src/main/scala/net/machinemuse/general/gui/frame/PartManipContainer.scala +++ b/src/main/scala/net/machinemuse/general/gui/frame/PartManipContainer.scala @@ -46,9 +46,6 @@ class PartManipContainer(val itemSelect: ItemSelectionFrame, val colourSelect: C } } - // - // override def onMouseUp(x: Double, y: Double, button: Int) {} - // override def update(mousex: Double, mousey: Double) { super.update(mousex, mousey) if (lastItemSlot != getItemSlot) { @@ -77,6 +74,4 @@ class PartManipContainer(val itemSelect: ItemSelectionFrame, val colourSelect: C glPopMatrix() super.postDraw() } - - // override def getToolTip(x: Int, y: Int): util.List[String] = ??? } diff --git a/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.java b/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.java index b13cee3..3be8cec 100644 --- a/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.java +++ b/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.java @@ -1,226 +1,546 @@ //package net.machinemuse.general.gui.frame; // //import net.machinemuse.general.gui.clickable.ClickableItem; +//import net.machinemuse.numina.general.MuseLogger; +//import net.machinemuse.numina.general.MuseMathUtils; +//import net.machinemuse.numina.geometry.Colour; +//import net.machinemuse.numina.geometry.MuseRect; //import net.machinemuse.numina.geometry.MuseRelativeRect; +//import net.machinemuse.numina.network.PacketSender; +//import net.machinemuse.numina.render.RenderState; //import net.machinemuse.powersuits.client.render.modelspec.ModelPartSpec; //import net.machinemuse.powersuits.client.render.modelspec.ModelRegistry; //import net.machinemuse.powersuits.client.render.modelspec.ModelSpec; +//import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo; //import net.machinemuse.utils.MuseItemUtils; +//import net.machinemuse.utils.render.GuiIcons; +//import net.machinemuse.utils.render.MuseRenderer; //import net.minecraft.client.Minecraft; +//import net.minecraft.client.entity.EntityClientPlayerMP; +//import net.minecraft.entity.Entity; +//import net.minecraft.entity.player.EntityPlayer; +//import net.minecraft.item.ItemArmor; +//import net.minecraft.nbt.NBTBase; //import net.minecraft.nbt.NBTTagCompound; +//import org.lwjgl.opengl.GL11; +//import scala.*; +//import scala.collection.TraversableOnce; +//import scala.reflect.ClassTag$; +// +//import java.io.Serializable; // ///** // * Author: MachineMuse (Claire Semple) // * Created: 1:46 AM, 30/04/13 // * -// * Ported to Java by lehjr on 10/21/16. +// * Ported to Java by lehjr on 11/2/16. // */ -// //public class PartManipSubFrame { -// ModelPartSpec[] specs; -// boolean open; -// double mousex; -// double mousey; +//// Array specs; +//// boolean open; +//// double mousex; +//// double mousey; +//// ModelSpec model; +//// ColourPickerFrame colourframe; +//// ItemSelectionFrame itemSelector; +//// MuseRelativeRect border; // -//// import net.machinemuse.general.gui.clickable.ClickableItem -//// import net.machinemuse.numina.general.{MuseLogger, MuseMathUtils} -//// 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.GuiIcon -//// 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._ +// private ModelSpec model; +// private ColourPickerFrame colourframe; +// private ItemSelectionFrame itemSelector; +// private MuseRelativeRect border; +// private ModelPartSpec[] specs; +// private boolean open; +// private double mousex; +// private double mousey; // // public PartManipSubFrame(ModelSpec model, ColourPickerFrame colourframe, ItemSelectionFrame itemSelector, MuseRelativeRect border) { -//// this.specs = model.apply().values().filter(spec = > isValidArmor(getSelectedItem, spec.slot)).toArray +// this.model = model; +// this.colourframe = colourframe; +// this.itemSelector = itemSelector; +// this.border = border; +// +// +// +// this.specs = (ModelPartSpec[])((TraversableOnce)model.apply().values().filter((Function1)new Serializable() { +// public boolean apply(ModelPartSpec spec) { +// return PartManipSubFrame.this.isValidArmor(PartManipSubFrame.this.getSelectedItem(), spec.slot()); +// } +// })).toArray(ClassTag$.MODULE$.apply((Class)ModelPartSpec.class)); +// +// +// +// // this.open = true; -// this.mousex = 0; -// this.mousey = 0; +// this.mousex = 0.0; +// this.mousey = 0.0; // } // -// int getArmorSlot(){ -// return getSelectedItem().getItem.getItem.asInstanceOf[ItemArmor].armorType +// public int getArmorSlot() { +// return ((ItemArmor)this.getSelectedItem().getItem().getItem()).armorType; // } // -// int getSelectedItem() { -// return itemSelector().getSelectedItem(); +// // def getSelectedItem = itemSelector.getSelectedItem +// public ClickableItem getSelectedItem() { +// return this.itemSelector().getSelectedItem(); // } // -// NBTTagCompound getRenderTag() { -// return MuseItemUtils.getMuseRenderTag(getSelectedItem().getItem(), getArmorSlot()); +// public NBTTagCompound getRenderTag() { +// return MuseItemUtils.getMuseRenderTag(this.getSelectedItem().getItem(), this.getArmorSlot()); // } // -// NBTTagCompound getItemTag() { -// return MuseItemUtils.getMuseItemTag(getSelectedItem().getItem()); +// public NBTTagCompound getItemTag() { +// return MuseItemUtils.getMuseItemTag(this.getSelectedItem().getItem()); // } // -// boolean isValidArmor(ClickableItem clickie, int slot) { -// return (clickie == null) ? false : clickie.getItem().getItem().isValidArmor(clickie.getItem(), slot, Minecraft.getMinecraft().thePlayer); +// public boolean isValidArmor(ClickableItem clickie, int slot) { +// return clickie != null && clickie.getItem().getItem().isValidArmor(clickie.getItem(), slot, (Entity) Minecraft.getMinecraft().thePlayer); // } // -// NBTTagCompound getSpecTag(ModelPartSpec spec) { -// return getRenderTag().getCompoundTag(ModelRegistry.makeName(spec)); +// public NBTTagCompound getSpecTag(ModelPartSpec spec) { +// return this.getRenderTag().getCompoundTag(ModelRegistry.makeName(spec)); // } // -// NBTTagCompound getOrDontGetSpecTag(ModelPartSpec spec) { +// +//// def getOrDontGetSpecTag(spec: ModelPartSpec): Option[NBTTagCompound] = { +//// val name = ModelRegistry.makeName(spec) +//// if (!getRenderTag.hasKey(name)) None +//// else Some(getRenderTag.getCompoundTag(name)) +//// } +// +// public Option getOrDontGetSpecTag(ModelPartSpec spec) { // String name = ModelRegistry.makeName(spec); -// return (!getRenderTag().hasKey(name)) ? null : getRenderTag().getCompoundTag(name); +// return (Option)(this.getRenderTag().hasKey(name) ? new Some((Object)this.getRenderTag().getCompoundTag(name)) : None$.MODULE$); // } // -// NBTTagCompound getOrMakeSpecTag(ModelPartSpec spec) { +// +// +// // def getOrMakeSpecTag(spec: ModelPartSpec): NBTTagCompound = { +//// val name = ModelRegistry.makeName(spec) +//// if (!getRenderTag.hasKey(name)) { +//// val k = new NBTTagCompound() +//// spec.multiSet(k, None, None, None) +//// getRenderTag.setTag(name, k) +//// k +//// } else { +//// getRenderTag.getCompoundTag(name) +//// } +//// } +// +// public NBTTagCompound getOrMakeSpecTag(ModelPartSpec spec) { // String name = ModelRegistry.makeName(spec); -// if (!getRenderTag().hasKey(name)) { +// NBTTagCompound compoundTag; +// if (this.getRenderTag().hasKey(name)) { +// compoundTag = this.getRenderTag().getCompoundTag(name); +// } +// else { // NBTTagCompound k = new NBTTagCompound(); -// spec.multiSet(k, null, null, null); -// getRenderTag().setTag(name, k); -// return k; -// } else { -// return getRenderTag().getCompoundTag(name); +// spec.multiSet(k, (Option)None$.MODULE$, (Option)None$.MODULE$, (Option)None$.MODULE$); +// this.getRenderTag().setTag(name, (NBTBase)k); +// compoundTag = k; // } +// return compoundTag; // } // -// def updateItems() { -// specs = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray -// border.setHeight(if (specs.size > 0) specs.size * 8 + 10 else 0) +//// def updateItems() { +//// specs = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray +//// border.setHeight(if (specs.size > 0) specs.size * 8 + 10 else 0) +//// } +// +// public void updateItems() { +// this.specs = ((ModelPartSpec[])((TraversableOnce)this.model().apply().values().filter((Function1)new PartManipSubFrame$$anonfun$updateItems.PartManipSubFrame$$anonfun$updateItems$1(this))).toArray(ClassTag$.MODULE$.apply((Class)ModelPartSpec.class))); +// this.border().setHeight((Predef$.MODULE$.refArrayOps((Object[])this.specs()).size() > 0) ? (Predef$.MODULE$.refArrayOps((Object[])this.specs()).size() * 8 + 10) : 0.0); // } // -// def drawPartial(min: Double, max: Double) { -// if (specs.size > 0) { -// ModelRegistry.getName(model).foreach(s => MuseRenderer.drawString(s, border.left + 8, border.top)) -// drawOpenArrow(min, max) -// if (open) { -// ((border.top + 8) /: specs) { -// case (y, spec) => { -// drawSpecPartial(border.left, y, spec, min, max) -// y + 8 -// } -// } +// +// // def drawPartial(min: Double, max: Double) { +//// if (specs.size > 0) { +//// ModelRegistry.getName(model).foreach(s => MuseRenderer.drawString(s, border.left + 8, border.top)) +//// drawOpenArrow(min, max) +//// if (open) { +//// ((border.top + 8) /: specs) { +//// case (y, spec) => { +//// drawSpecPartial(border.left, y, spec, min, max) +//// y + 8 +//// } +//// } +//// } +//// } +//// } +// +// public void drawPartial(double min, double max) { +// if (Predef$.MODULE$.refArrayOps((Object[])this.specs()).size() > 0) { +// ((MuseBiMap)ModelRegistry.getName((T)this.model()).foreach((Function1)new PartManipSubFrame$$anonfun$drawPartial.PartManipSubFrame$$anonfun$drawPartial$1(this)); +// this.drawOpenArrow(min, max); +// if (this.open()) { +// Predef$.MODULE$.refArrayOps((Object[])this.specs()).$div$colon((Object)BoxesRunTime.boxToDouble(this.border().top() + 8), (Function2)new PartManipSubFrame$$anonfun$drawPartial.PartManipSubFrame$$anonfun$drawPartial$2(this, min, max)); // } // } // } // -// def decrAbove(index: Int) { -// for (spec <- specs) { -// val tagname = ModelRegistry.makeName(spec) -// val player = Minecraft.getMinecraft.thePlayer -// val tagdata = getOrDontGetSpecTag(spec) -// tagdata.foreach(e => { -// val oldindex = spec.getColourIndex(e) -// if (oldindex >= index && oldindex > 0) { -// spec.setColourIndex(e, oldindex - 1) -// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, e).getPacket131) -// } -// }) +// // def decrAbove(index: Int) { +//// for (spec <- specs) { +//// val tagname = ModelRegistry.makeName(spec) +//// val player = Minecraft.getMinecraft.thePlayer +//// val tagdata = getOrDontGetSpecTag(spec) +//// tagdata.foreach(e => { +//// val oldindex = spec.getColourIndex(e) +//// if (oldindex >= index && oldindex > 0) { +//// spec.setColourIndex(e, oldindex - 1) +//// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, e).getPacket131) +//// } +//// }) +//// +//// } +//// } // -// } +// +// // +// public void decrAbove(int index) { +// Predef$.MODULE$.refArrayOps((Object[])this.specs()).foreach((Function1)new PartManipSubFrame$$anonfun$decrAbove.PartManipSubFrame$$anonfun$decrAbove$1(this, index)); // } // -// def drawSpecPartial(x: Double, y: Double, spec: ModelPartSpec, ymino: Double, ymaxo: Double) = { -// val tag = getSpecTag(spec) -// val selcomp = if (tag.hasNoTags) 0 else if (spec.getGlow(tag)) 2 else 1 -// val selcolour = spec.getColourIndex(tag) -// new GuiIcons.TransparentArmor(x, y, null, null, ymino, null, ymaxo); -// new GuiIcons.NormalArmor(x + 8, y, null, null, ymino, null, ymaxo); -// new GuiIcons.GlowArmor(x + 16, y, null, null, ymino, null, ymaxo); -// new GuiIcons.SelectedArmorOverlay(x + selcomp * 8, y, null, null, ymino, null, ymaxo); -// val textstartx = ((x + 28) /: colourframe.colours) { -// case (acc, colour) => -// new GuiIcons.ArmourColourPatch(acc, y, new Colour(colour), null, ymino, null, ymaxo); -// acc + 8 -// } +//// def drawSpecPartial(x: Double, y: Double, spec: ModelPartSpec, ymino: Double, ymaxo: Double) = { +//// val tag = getSpecTag(spec) +//// val selcomp = if (tag.hasNoTags) 0 else if (spec.getGlow(tag)) 2 else 1 +//// val selcolour = spec.getColourIndex(tag) +//// new GuiIcons.TransparentArmor(x, y, null, null, ymino, null, ymaxo) +//// new GuiIcons.NormalArmor(x + 8, y, null, null, ymino, null, ymaxo) +//// new GuiIcons.GlowArmor(x + 16, y, null, null, ymino, null, ymaxo) +//// new GuiIcons.SelectedArmorOverlay(x + selcomp * 8, y, null, null, ymino, null, ymaxo) +//// val textstartx = ((x + 28) /: colourframe.colours) { +//// case (acc, colour) => +//// new GuiIcons.ArmourColourPatch(acc, y, new Colour(colour), null, ymino, null, ymaxo) +//// acc + 8 +//// } +//// if (selcomp > 0) { +//// new GuiIcons.SelectedArmorOverlay(x + 28 + selcolour * 8, y, null, null, ymino, null, ymaxo) +//// } +//// MuseRenderer.drawString(spec.displayName, textstartx + 4, y) +//// } +// +// public void drawSpecPartial(double x, double y, ModelPartSpec spec, double ymino, double ymaxo) { +// NBTTagCompound tag = this.getSpecTag(spec); +// int selcomp = tag.hasNoTags() ? 0 : (spec.getGlow(tag) ? 2 : 1); +// int selcolour = spec.getColourIndex(tag); +// new GuiIcons.TransparentArmor(x, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo)); +// new GuiIcons.NormalArmor(x + 8, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo)); +// new GuiIcons.GlowArmor(x + 16, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo)); +// new GuiIcons.SelectedArmorOverlay(x + selcomp * 8, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo)); +// double textstartx = BoxesRunTime.unboxToDouble(Predef$.MODULE$.intArrayOps(this.colourframe().colours()).$div$colon((Object)BoxesRunTime.boxToDouble(x + 28), (Function2)new PartManipSubFrame$$anonfun.PartManipSubFrame$$anonfun$1(this, y, ymino, ymaxo))); // if (selcomp > 0) { -// new GuiIcons.SelectedArmorOverlay(x + 28 + selcolour * 8, y, null, null, ymino, null, ymaxo); +// new GuiIcons.SelectedArmorOverlay(x + 28 + selcolour * 8, y, null, null, Predef$.MODULE$.double2Double(ymino), null, Predef$.MODULE$.double2Double(ymaxo)); // } -// -// -// MuseRenderer.drawString(spec.displayName, textstartx + 4, y) -// } -// -// def drawOpenArrow(min: Double, max: Double) { -// RenderState.texturelessOn() -// Colour.LIGHTBLUE.doGL() -// glBegin(GL_TRIANGLES) -// 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)) -// glVertex2d(border.left + 7, clampDouble(border.top + 3, min, max)) -// } else { -// glVertex2d(border.left + 3, clampDouble(border.top + 3, min, max)) -// glVertex2d(border.left + 3, clampDouble(border.top + 7, min, max)) -// glVertex2d(border.left + 7, clampDouble(border.top + 5, min, max)) +// else { +// BoxedUnit unit = BoxedUnit.UNIT; // } -// glEnd() -// Colour.WHITE.doGL() -// RenderState.texturelessOff() +// MuseRenderer.drawString(spec.displayName(), textstartx + 4, y); // } // -// def getBorder: MuseRect = { -// if (open) border.setHeight(9 + 9 * specs.size) -// else border.setHeight(9) -// border +// +// +// +// +// public void drawOpenArrow(double min, double max) { +// RenderState.texturelessOn(); +// Colour.LIGHTBLUE.doGL(); +// GL11.glBegin(4); +// if (this.open) { +// GL11.glVertex2d(this.border.left() + 3, MuseMathUtils.clampDouble(this.border.top() + 3, min, max)); +// GL11.glVertex2d(this.border.left() + 5, MuseMathUtils.clampDouble(this.border.top() + 7, min, max)); +// GL11.glVertex2d(this.border.left() + 7, MuseMathUtils.clampDouble(this.border.top() + 3, min, max)); +// } +// else { +// GL11.glVertex2d(this.border.left() + 3, MuseMathUtils.clampDouble(this.border.top() + 3, min, max)); +// GL11.glVertex2d(this.border.left() + 3, MuseMathUtils.clampDouble(this.border.top() + 7, min, max)); +// GL11.glVertex2d(this.border.left() + 7, MuseMathUtils.clampDouble(this.border.top() + 5, min, max)); +// } +// GL11.glEnd(); +// Colour.WHITE.doGL(); +// RenderState.texturelessOff(); // } // -// def tryMouseClick(x: Double, y: Double): Boolean = { -// if (x < border.left || x > border.right || y < border.top || y > border.bottom) false -// else if (x > border.left + 2 && x < border.left + 8 && y > border.top + 2 && y < border.top + 8) { -// open = !open -// getBorder -// true -// } else if (x < border.left + 24 && y > border.top + 8) { -// val lineNumber = ((y - border.top - 8) / 8).toInt -// val columnNumber = ((x - border.left) / 8).toInt -// val spec = specs(lineNumber.min(specs.size - 1).max(0)) -// MuseLogger.logDebug("Line " + lineNumber + " Column " + columnNumber) -// columnNumber match { -// case 0 => { -// val renderTag = getRenderTag -// val tagname = ModelRegistry.makeName(spec) -// val player = Minecraft.getMinecraft.thePlayer -// renderTag.removeTag(ModelRegistry.makeName(spec)) -// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, new NBTTagCompound()).getPacket131) -// updateItems() -// true +//// def getBorder: MuseRect = { +//// if (open) border.setHeight(9 + 9 * specs.size) +//// else border.setHeight(9) +//// border +//// } +// +// public MuseRect getBorder() { +// if (this.open) { +// this.border.setHeight(9 + 9 * this.specs.length); +// } +// else { +// this.border.setHeight(9.0); +// } +// return this.border; +// } +// +// public boolean tryMouseClick(double x, double y) { +// boolean b; +// if (x < this.border.left() || x > this.border.right() || y < this.border.top() || y > this.border.bottom()) { +// b = false; +// } +// else if (x > this.border.left() + 2 && x < this.border.left() + 8 && y > this.border.top() + 2 && y < this.border.top() + 8) { +// this.open =(!this.open); +// this.getborder; +// b = true; +// } +// else if (x < this.border.left() + 24 && y > this.border.top() + 8) { +// int lineNumber = (int)((y - this.border.top() - 8) / 8); +// int columnNumber = (int)((x - this.border.left()) / 8); +// ModelPartSpec spec = this.specs[RichInt$.MODULE$.max$extension(Predef$.MODULE$.intWrapper(RichInt$.MODULE$.min$extension(Predef$.MODULE$.intWrapper(lineNumber), Predef$.MODULE$.refArrayOps((Object[])this.specs()).size() - 1)), 0)]; +// MuseLogger.logDebug(new StringBuilder().append((Object)"Line ").append((Object)BoxesRunTime.boxToInteger(lineNumber)).append((Object)" Column ").append((Object)BoxesRunTime.boxToInteger(columnNumber)).toString()); +// switch (columnNumber) { +// default: { +// b = false; +// break; // } -// case 1 => { -// val tagname = ModelRegistry.makeName(spec) -// val player = Minecraft.getMinecraft.thePlayer -// val tagdata = getOrMakeSpecTag(spec) -// spec.setGlow(tagdata, false) -// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131) -// updateItems() -// true +// case 2: { +// String tagname = ModelRegistry.makeName(spec); +// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; +// NBTTagCompound tagdata = this.getOrMakeSpecTag(spec); +// spec.setGlow(tagdata, true); +// if (player.worldObj.isRemote) { +// PacketSender.sendToServer(new MusePacketCosmeticInfo((EntityPlayer)player, this.getSelectedItem().inventorySlot, tagname, tagdata).getPacket131()); +// } +// this.updateItems(); +// b = true; +// break; // } -// case 2 => { -// val tagname = ModelRegistry.makeName(spec) -// val player = Minecraft.getMinecraft.thePlayer -// val tagdata = getOrMakeSpecTag(spec) -// spec.setGlow(tagdata, true) -// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131) -// updateItems() -// true +// case 1: { +// String tagname2 = ModelRegistry.makeName(spec); +// EntityClientPlayerMP player2 = Minecraft.getMinecraft().thePlayer; +// NBTTagCompound tagdata2 = this.getOrMakeSpecTag(spec); +// spec.setGlow(tagdata2, false); +// if (player2.worldObj.isRemote) { +// PacketSender.sendToServer(new MusePacketCosmeticInfo((EntityPlayer)player2, this.getSelectedItem().inventorySlot, tagname2, tagdata2).getPacket131()); +// } +// this.updateItems(); +// b = true; +// break; +// } +// case 0: { +// NBTTagCompound renderTag = this.getRenderTag(); +// String tagname3 = ModelRegistry.makeName(spec); +// EntityClientPlayerMP player3 = Minecraft.getMinecraft().thePlayer; +// renderTag.removeTag(ModelRegistry.makeName(spec)); +// if (player3.worldObj.isRemote) { +// PacketSender.sendToServer(new MusePacketCosmeticInfo((EntityPlayer)player3, this.getSelectedItem().inventorySlot, tagname3, new NBTTagCompound()).getPacket131()); +// } +// this.updateItems(); +// b = true; +// break; // } -// case _ => false // } -// } else if (x > border.left + 28 && x < border.left + 28 + colourframe.colours.size * 8) { -// val lineNumber = ((y - border.top - 8) / 8).toInt -// val columnNumber = ((x - border.left - 28) / 8).toInt -// val spec = specs(lineNumber.min(specs.size - 1).max(0)) -// val tagname = ModelRegistry.makeName(spec) -// val player = Minecraft.getMinecraft.thePlayer -// val tagdata = getOrMakeSpecTag(spec) -// spec.setColourIndex(tagdata, columnNumber) -// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131) -// true // } -// -// else false +// else if (x > this.border.left() + 28 && x < this.border.left() + 28 + Predef$.MODULE$.intArrayOps(this.colourframe.colours()).size() * 8) { +// int lineNumber2 = (int)((y - this.border.top() - 8) / 8); +// int columnNumber2 = (int)((x - this.border.left() - 28) / 8); +// ModelPartSpec spec2 = this.specs[RichInt$.MODULE$.max$extension(Predef$.MODULE$.intWrapper(RichInt$.MODULE$.min$extension(Predef$.MODULE$.intWrapper(lineNumber2), Predef$.MODULE$.refArrayOps((Object[])this.specs()).size() - 1)), 0)]; +// String tagname4 = ModelRegistry.makeName(spec2); +// EntityClientPlayerMP player4 = Minecraft.getMinecraft().thePlayer; +// NBTTagCompound tagdata3 = this.getOrMakeSpecTag(spec2); +// spec2.setColourIndex(tagdata3, columnNumber2); +// if (player4.worldObj.isRemote) { +// PacketSender.sendToServer(new MusePacketCosmeticInfo((EntityPlayer)player4, this.getSelectedItem().inventorySlot, tagname4, tagdata3).getPacket131()); +// } +// b = true; +// } +// else { +// b = false; +// } +// return b; // } // +// +// +//// class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame, val itemSelector: ItemSelectionFrame, val border: MuseRelativeRect) { +//// var specs: Array[ModelPartSpec] = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray +//// var open: Boolean = true +//// var mousex: Double = 0 +//// var mousey: Double = 0 +//// +// +//// +//// def tryMouseClick(x: Double, y: Double): Boolean = { +//// if (x < border.left || x > border.right || y < border.top || y > border.bottom) false +//// else if (x > border.left + 2 && x < border.left + 8 && y > border.top + 2 && y < border.top + 8) { +//// open = !open +//// getBorder +//// true +//// } else if (x < border.left + 24 && y > border.top + 8) { +//// val lineNumber = ((y - border.top - 8) / 8).toInt +//// val columnNumber = ((x - border.left) / 8).toInt +//// val spec = specs(lineNumber.min(specs.size - 1).max(0)) +//// MuseLogger.logDebug("Line " + lineNumber + " Column " + columnNumber) +//// columnNumber match { +//// case 0 => { +//// val renderTag = getRenderTag +//// val tagname = ModelRegistry.makeName(spec) +//// val player = Minecraft.getMinecraft.thePlayer +//// renderTag.removeTag(ModelRegistry.makeName(spec)) +//// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, new NBTTagCompound()).getPacket131) +//// updateItems() +//// true +//// } +//// case 1 => { +//// val tagname = ModelRegistry.makeName(spec) +//// val player = Minecraft.getMinecraft.thePlayer +//// val tagdata = getOrMakeSpecTag(spec) +//// spec.setGlow(tagdata, false) +//// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131) +//// updateItems() +//// true +//// } +//// case 2 => { +//// val tagname = ModelRegistry.makeName(spec) +//// val player = Minecraft.getMinecraft.thePlayer +//// val tagdata = getOrMakeSpecTag(spec) +//// spec.setGlow(tagdata, true) +//// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131) +//// updateItems() +//// true +//// } +//// case _ => false +//// } +//// } else if (x > border.left + 28 && x < border.left + 28 + colourframe.colours.size * 8) { +//// val lineNumber = ((y - border.top - 8) / 8).toInt +//// val columnNumber = ((x - border.left - 28) / 8).toInt +//// val spec = specs(lineNumber.min(specs.size - 1).max(0)) +//// val tagname = ModelRegistry.makeName(spec) +//// val player = Minecraft.getMinecraft.thePlayer +//// val tagdata = getOrMakeSpecTag(spec) +//// spec.setColourIndex(tagdata, columnNumber) +//// if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131) +//// true +//// } +//// else false +//// } +//// +//// } +// +// //} +// +// +// +// +// +// +// +// +//// +////// +////// Decompiled by Procyon v0.5.30 +////// +//// +////package net.machinemuse.general.gui.frame; +//// +//// import net.machinemuse.numina.scala.MuseBiMap; +//// import scala.runtime.AbstractFunction1; +//// import scala.Serializable; +//// import net.minecraft.client.entity.EntityClientPlayerMP; +//// import net.machinemuse.numina.network.PacketSender; +//// import net.minecraft.entity.player.EntityPlayer; +//// import net.machinemuse.powersuits.network.packets.MusePacketCosmeticInfo; +//// import net.machinemuse.numina.general.MuseLogger; +//// import scala.collection.mutable.StringBuilder; +//// import scala.runtime.RichInt$; +//// import net.machinemuse.numina.geometry.MuseRect; +//// import net.machinemuse.numina.general.MuseMathUtils; +//// import org.lwjgl.opengl.GL11; +//// import net.machinemuse.numina.render.RenderState; +//// import net.machinemuse.utils.render.MuseRenderer; +//// import scala.runtime.BoxedUnit; +//// import net.machinemuse.numina.geometry.Colour; +//// import net.machinemuse.utils.render.GuiIcons; +//// import scala.Function2; +//// import scala.runtime.BoxesRunTime; +//// import scala.Predef$; +//// import scala.reflect.ClassTag$; +//// import scala.Function1; +//// import scala.collection.TraversableOnce; +//// import net.minecraft.nbt.NBTBase; +//// import scala.None$; +//// import scala.Some; +//// import scala.Option; +//// import net.machinemuse.powersuits.client.render.modelspec.ModelRegistry$; +//// import net.minecraft.entity.Entity; +//// import net.minecraft.client.Minecraft; +//// import net.machinemuse.utils.MuseItemUtils; +//// import net.minecraft.nbt.NBTTagCompound; +//// import net.machinemuse.general.gui.clickable.ClickableItem; +//// import net.minecraft.item.ItemArmor; +//// import net.machinemuse.powersuits.client.render.modelspec.ModelPartSpec; +//// import net.machinemuse.numina.geometry.MuseRelativeRect; +//// import net.machinemuse.powersuits.client.render.modelspec.ModelSpec; +//// import scala.reflect.ScalaSignature; +//// +// public class PartManipSubFrame +////{ +// +//// +//// public ModelSpec model() { +//// return this.model; +//// } +//// +//// public ColourPickerFrame colourframe() { +//// return this.colourframe; +//// } +//// +//// public ItemSelectionFrame itemSelector() { +//// return this.itemSelector; +//// } +//// +//// public MuseRelativeRect border() { +//// return this.border; +//// } +//// +//// public ModelPartSpec[] specs() { +//// return this.specs; +//// } +//// +//// public void specs_$eq(ModelPartSpec[] x$1) { +//// this.specs = x$1; +//// } +//// +//// public boolean open() { +//// return this.open; +//// } +//// +//// public void open_$eq(boolean x$1) { +//// this.open = x$1; +//// } +//// +//// public double mousex() { +//// return this.mousex; +//// } +//// +//// public void mousex_$eq(double x$1) { +//// this.mousex = x$1; +//// } +//// +//// public double mousey() { +//// return this.mousey; +//// } +//// +//// public void mousey_$eq(double x$1) { +//// this.mousey = x$1; +//// } +//// +// +//// +// +//// +// +// +//// +// +//// +// +//// +// +//// +// +////} \ No newline at end of file diff --git a/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.scala b/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.scala index eda962d..a5b663c 100644 --- a/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.scala +++ b/src/main/scala/net/machinemuse/general/gui/frame/PartManipSubFrame.scala @@ -189,7 +189,6 @@ class PartManipSubFrame(val model: ModelSpec, val colourframe: ColourPickerFrame if (player.worldObj.isRemote) PacketSender.sendToServer(new MusePacketCosmeticInfo(player, getSelectedItem.inventorySlot, tagname, tagdata).getPacket131) true } - else false } diff --git a/src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.java b/src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.java new file mode 100644 index 0000000..98ddc71 --- /dev/null +++ b/src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.java @@ -0,0 +1,21 @@ +package net.machinemuse.powersuits.item; + +import net.machinemuse.numina.item.IModeChangingItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +/** + * Ported to Java by lehjr on 11/1/16. + */ +public interface IModeChangingModularItem extends IModeChangingItem{ + IIcon getModeIcon(String mode, ItemStack stack, EntityPlayer player); + + List getValidModes(ItemStack stack, EntityPlayer player); + + List getValidModes(ItemStack stack); + + String getActiveMode(ItemStack stack); +} \ No newline at end of file diff --git a/src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.scala b/src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.scala new file mode 100644 index 0000000..6c2d66e --- /dev/null +++ b/src/main/scala/net/machinemuse/powersuits/item/IModeChangingModularItem.scala @@ -0,0 +1,57 @@ +//package net.machinemuse.powersuits.item +// +//import net.machinemuse.api.ModuleManager +//import net.machinemuse.numina.item.{IModeChangingItem, ModeChangingItem, NuminaItemUtils} +//import net.machinemuse.numina.scala.OptionCast +//import net.minecraft.entity.player.EntityPlayer +//import net.minecraft.item.ItemStack +//import net.minecraft.util.IIcon +// +///** +// * Author: MachineMuse (Claire Semple) +// * Created: 4:52 PM, 9/5/13 +// */ +//object IModeChangingModularItem { +// +// def cycleModeForItem(stack: ItemStack, player: EntityPlayer, dMode: Int) { +// for ( +// s <- Option(stack); +// i <- OptionCast[IModeChangingModularItem](stack.getItem) +// ) { +// i.cycleMode(stack, player, dMode) +// } +// } +//} +// +//trait IModeChangingModularItem extends IModeChangingItem { +// 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) +// } +// +// def getValidModes(stack: ItemStack): Seq[String] = { +// import scala.collection.JavaConversions._ +// for { +// module <- ModuleManager.getRightClickModules +// if module.isValidForItem(stack) +// if ModuleManager.itemHasModule(stack, module.getDataName) +// } yield { +// module.getDataName +// } +// } +// +// def getActiveMode(stack: ItemStack): String = { +// val modeFromNBT = NuminaItemUtils.getTagCompound(stack).getString("mode") +// if (!modeFromNBT.isEmpty) { +// modeFromNBT +// } else { +// val validModes = getValidModes(stack) +// if (validModes.nonEmpty) { +// validModes(0) +// } else { +// "" +// } +// } +// } +//} diff --git a/src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.java b/src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.java new file mode 100644 index 0000000..a1f53a3 --- /dev/null +++ b/src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.java @@ -0,0 +1,192 @@ +package net.machinemuse.powersuits.item; + +import ic2.api.item.IElectricItemManager; +import appeng.api.config.AccessRestriction; +import net.minecraft.item.Item; +import net.minecraft.entity.EntityLivingBase; +import net.machinemuse.api.electricity.MuseElectricItem; +import net.machinemuse.api.electricity.MuseElectricItem$class; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; +import net.machinemuse.numina.geometry.Colour; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import scala.reflect.ScalaSignature; +import net.minecraft.item.ItemArmor; + +/** + * Ported to Java by lehjr on 10/26/16. + */ +public abstract class ItemElectricArmor extends ItemArmor implements ModularItemBase +{ + public ItemElectricArmor(final ItemArmor.ArmorMaterial material, final int index1, final int index2) { + super(material, index1, index2); +// MuseElectricItem$class.$init$(this); +// ModularItemBase$class.$init$(this); + } + + @Override + public String getToolTip(ItemStack itemStack) { + return null; + } + + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(final ItemStack stack, final int par2) { + return ModularItemBase$class.getColorFromItemStack(this, stack, par2); + } + + public Colour getGlowFromItemStack(final ItemStack stack) { + return ModularItemBase$class.getGlowFromItemStack(this, stack); + } + + public Colour getColorFromItemStack(final ItemStack stack) { + return ModularItemBase$class.getColorFromItemStack(this, stack); + } + + @SideOnly(Side.CLIENT) + public boolean requiresMultipleRenderPasses() { + return ModularItemBase$class.requiresMultipleRenderPasses(this); + } + +// @SideOnly(Side.CLIENT) +// public void addInformation(final ItemStack stack, final EntityPlayer player, final List currentTipList, final boolean advancedToolTips) { +// ModularItemBase$class.addInformation(this, stack, player, currentTipList, advancedToolTips); +// } + + public String formatInfo(final String string, final double value) { + return ModularItemBase$class.formatInfo(this, string, value); + } + + public List getLongInfo(final EntityPlayer player, final ItemStack stack) { + return (List)ModularItemBase$class.getLongInfo(this, player, stack); + } + + public double getArmorDouble(final EntityPlayer player, final ItemStack stack) { + return ModularItemBase$class.getArmorDouble(this, player, stack); + } + + public double getPlayerEnergy(final EntityPlayer player) { + return ModularItemBase$class.getPlayerEnergy(this, player); + } + + public void drainPlayerEnergy(final EntityPlayer player, final double drainEnergy) { + ModularItemBase$class.drainPlayerEnergy(this, player, drainEnergy); + } + + public void givePlayerEnergy(final EntityPlayer player, final double joulesToGive) { + ModularItemBase$class.givePlayerEnergy(this, player, joulesToGive); + } + + public double getCurrentEnergy(final ItemStack stack) { + return MuseElectricItem$class.getCurrentEnergy(this, stack); + } + + public double getMaxEnergy(final ItemStack stack) { + return MuseElectricItem$class.getMaxEnergy(this, stack); + } + + public void setCurrentEnergy(final ItemStack stack, final double energy) { + MuseElectricItem$class.setCurrentEnergy(this, stack, energy); + } + + public double drainEnergyFrom(final ItemStack stack, final double requested) { + return MuseElectricItem$class.drainEnergyFrom(this, stack, requested); + } + + public double giveEnergyTo(final ItemStack stack, final double provided) { + return MuseElectricItem$class.giveEnergyTo(this, stack, provided); + } + + public MuseElectricItem getManager(final ItemStack itemStack) { + return MuseElectricItem$class.getManager(this, itemStack); + } + + public void chargeFromArmor(final ItemStack itemStack, final EntityLivingBase entity) { + MuseElectricItem$class.chargeFromArmor(this, itemStack, entity); + } + + public boolean use(final ItemStack itemStack, final double amount, final EntityLivingBase entity) { + return MuseElectricItem$class.use(this, itemStack, amount, entity); + } + + public boolean canProvideEnergy(final ItemStack itemStack) { + return MuseElectricItem$class.canProvideEnergy(this, itemStack); + } + + public double getCharge(final ItemStack itemStack) { + return MuseElectricItem$class.getCharge(this, itemStack); + } + + public double getMaxCharge(final ItemStack itemStack) { + return MuseElectricItem$class.getMaxCharge(this, itemStack); + } + + public int getTier(final ItemStack itemStack) { + return MuseElectricItem$class.getTier(this, itemStack); + } + + public double getTransferLimit(final ItemStack itemStack) { + return MuseElectricItem$class.getTransferLimit(this, itemStack); + } + + public double charge(final ItemStack itemStack, final double amount, final int tier, final boolean ignoreTransferLimit, final boolean simulate) { + return MuseElectricItem$class.charge(this, itemStack, amount, tier, ignoreTransferLimit, simulate); + } + + public double discharge(final ItemStack itemStack, final double amount, final int tier, final boolean ignoreTransferLimit, final boolean externally, final boolean simulate) { + return MuseElectricItem$class.discharge(this, itemStack, amount, tier, ignoreTransferLimit, externally, simulate); + } + + public boolean canUse(final ItemStack itemStack, final double amount) { + return MuseElectricItem$class.canUse(this, itemStack, amount); + } + + public Item getChargedItem(final ItemStack itemStack) { + return MuseElectricItem$class.getChargedItem(this, itemStack); + } + + public Item getEmptyItem(final ItemStack itemStack) { + return MuseElectricItem$class.getEmptyItem(this, itemStack); + } + + public int receiveEnergy(final ItemStack stack, final int energy, final boolean simulate) { + return MuseElectricItem$class.receiveEnergy(this, stack, energy, simulate); + } + + public int extractEnergy(final ItemStack stack, final int energy, final boolean simulate) { + return MuseElectricItem$class.extractEnergy(this, stack, energy, simulate); + } + + public int getEnergyStored(final ItemStack theItem) { + return MuseElectricItem$class.getEnergyStored(this, theItem); + } + + public int getMaxEnergyStored(final ItemStack theItem) { + return MuseElectricItem$class.getMaxEnergyStored(this, theItem); + } + + public int getMaxDamage(final ItemStack itemStack) { + return MuseElectricItem$class.getMaxDamage(this, itemStack); + } + + public double injectAEPower(final ItemStack stack, final double ae) { + return MuseElectricItem$class.injectAEPower(this, stack, ae); + } + + public double extractAEPower(final ItemStack stack, final double ae) { + return MuseElectricItem$class.extractAEPower(this, stack, ae); + } + + public double getAEMaxPower(final ItemStack stack) { + return MuseElectricItem$class.getAEMaxPower(this, stack); + } + + public double getAECurrentPower(final ItemStack stack) { + return MuseElectricItem$class.getAECurrentPower(this, stack); + } + + public AccessRestriction getPowerFlow(final ItemStack stack) { + return MuseElectricItem$class.getPowerFlow(this, stack); + } +} \ No newline at end of file diff --git a/src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.scala b/src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.scala index 3dfc7c9..0e76e08 100644 --- a/src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.scala +++ b/src/main/scala/net/machinemuse/powersuits/item/ItemElectricArmor.scala @@ -1,11 +1,13 @@ -package net.machinemuse.powersuits.item - -import net.machinemuse.api.electricity._ -import net.minecraft.item.{ItemArmor, ItemStack} - -abstract class ItemElectricArmor(material: ItemArmor.ArmorMaterial, index1: Int, index2: Int) - extends ItemArmor(material, index1, index2) - with ModularItemBase - with MuseElectricItem { - override def getToolTip(stack: ItemStack): String = null -} \ No newline at end of file +//package net.machinemuse.powersuits.item +// +//import net.machinemuse.api.electricity._ +//import net.minecraft.item.{ItemArmor, ItemStack} +// +//abstract class ItemElectricArmor(material: ItemArmor.ArmorMaterial, index1: Int, index2: Int) +// extends ItemArmor(material, index1, index2) +// with ModularItemBase +// with MuseElectricItem { +// override def getToolTip(stack: ItemStack): String = null +//} +// +// diff --git a/src/main/scala/net/machinemuse/powersuits/item/ItemPowerFist.scala b/src/main/scala/net/machinemuse/powersuits/item/ItemPowerFist.scala index bdbdf46..404c5d8 100644 --- a/src/main/scala/net/machinemuse/powersuits/item/ItemPowerFist.scala +++ b/src/main/scala/net/machinemuse/powersuits/item/ItemPowerFist.scala @@ -57,7 +57,7 @@ //with mrtjp.projectred.api.IScrewdriver //with ITool //with IMekWrench -//with ModeChangingModularItem { +//with IModeChangingModularItem { // val iconpath: String = MuseIcon.ICON_PREFIX + "handitem" // setMaxStackSize(1) // setMaxDamage(0) diff --git a/src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.java b/src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.java new file mode 100644 index 0000000..fa75910 --- /dev/null +++ b/src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.java @@ -0,0 +1,110 @@ +package net.machinemuse.powersuits.item; + +import net.machinemuse.api.IPowerModule; +import net.machinemuse.api.ModuleManager; +import net.machinemuse.api.moduletrigger.IRightClickModule; +import net.machinemuse.numina.item.ModeChangingItem; +import net.machinemuse.numina.item.NuminaItemUtils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import scala.Option; + +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.List; + +/** + * Author: MachineMuse (Claire Semple) + * Created: 4:52 PM, 9/5/13 + * + * Ported to Java by lehjr on 11/1/16. + */ +public class ModeChangingModularItem implements IModeChangingModularItem { + private static ModeChangingModularItem INSTANCE; + + public static ModeChangingModularItem getInstance() { + if (INSTANCE == null) { + INSTANCE = new ModeChangingModularItem(); + } + return INSTANCE; + } + + @Nullable + @Override + public IIcon getModeIcon(String mode, ItemStack stack, EntityPlayer player) { + IPowerModule module = ModuleManager.getModule(mode); + if (module != null) + return module.getIcon(stack); + return null; + } + + @Override + public List getValidModes(ItemStack stack, EntityPlayer player) { + return getValidModes(stack); + } + + @Override + public List getValidModes(ItemStack stack) { + List modes = new ArrayList<>(); + for (IRightClickModule module : ModuleManager.getRightClickModules()) { + if (module.isValidForItem(stack)) + if (ModuleManager.itemHasModule(stack, module.getDataName())) + modes.add(module.getDataName()); + } + return modes; + } + + @Override + public String getActiveMode(ItemStack stack) { + List validModes; + + String modeFromNBT = NuminaItemUtils.getTagCompound(stack).getString("mode"); + if (!modeFromNBT.isEmpty()) + return modeFromNBT; + else { + validModes = getValidModes(stack); + if (!validModes.isEmpty()) + return validModes.get(0); + else + return ""; + } + } + + public static void cycleModeForItem(ItemStack stack, EntityPlayer player, int dMode) { + Item item; + if (stack != null) { + item = stack.getItem(); + if (item instanceof IModeChangingModularItem) + ((IModeChangingModularItem) item).cycleMode(stack, player, dMode); + } + } + + /* I M O D E C H A N G I N G I T E M ---------------------------------------------------------- */ + + @Override + public void setActiveMode(ItemStack stack, String newMode) { + ModeChangingItem.getInstance().setActiveMode(stack, newMode); + } + + @Override + public String getActiveMode(ItemStack stack, EntityPlayer player) { + return ModeChangingItem.getInstance().getActiveMode(stack, player); + } + + @Override + public void cycleMode(ItemStack stack, EntityPlayer player, int dMode) { + ModeChangingModularItem.getInstance().cycleMode(stack, player, dMode); + } + + @Override + public String nextMode(ItemStack stack, EntityPlayer player) { + return ModeChangingItem.getInstance().nextMode(stack, player); + } + + @Override + public String prevMode(ItemStack stack, EntityPlayer player) { + return ModeChangingItem.getInstance().prevMode(stack, player); + } +} \ No newline at end of file diff --git a/src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.scala b/src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.scala deleted file mode 100644 index 180c8bc..0000000 --- a/src/main/scala/net/machinemuse/powersuits/item/ModeChangingModularItem.scala +++ /dev/null @@ -1,57 +0,0 @@ -package net.machinemuse.powersuits.item - -import net.machinemuse.api.ModuleManager -import net.machinemuse.numina.item.{ModeChangingItem, NuminaItemUtils} -import net.machinemuse.numina.scala.OptionCast -import net.minecraft.entity.player.EntityPlayer -import net.minecraft.item.ItemStack -import net.minecraft.util.IIcon - -/** - * Author: MachineMuse (Claire Semple) - * Created: 4:52 PM, 9/5/13 - */ -object ModeChangingModularItem { - - def cycleModeForItem(stack: ItemStack, player: EntityPlayer, dMode: Int) { - for ( - s <- Option(stack); - i <- OptionCast[ModeChangingModularItem](stack.getItem) - ) { - i.cycleMode(stack, player, dMode) - } - } -} - -trait ModeChangingModularItem extends ModeChangingItem { - 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) - } - - def getValidModes(stack: ItemStack): Seq[String] = { - import scala.collection.JavaConversions._ - for { - module <- ModuleManager.getRightClickModules - if module.isValidForItem(stack) - if ModuleManager.itemHasModule(stack, module.getDataName) - } yield { - module.getDataName - } - } - - def getActiveMode(stack: ItemStack): String = { - val modeFromNBT = NuminaItemUtils.getTagCompound(stack).getString("mode") - if (!modeFromNBT.isEmpty) { - modeFromNBT - } else { - val validModes = getValidModes(stack) - if (validModes.nonEmpty) { - validModes(0) - } else { - "" - } - } - } -} diff --git a/src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.java b/src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.java new file mode 100644 index 0000000..d24d672 --- /dev/null +++ b/src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.java @@ -0,0 +1,28 @@ +package net.machinemuse.powersuits.network.packets; + +import net.machinemuse.numina.network.MusePacketHandler; + +/** + * Author: MachineMuse (Claire Semple) + * Created: 4:01 PM, 9/3/13 + * + * Ported to Java by lehjr on 10/28/16. + */ +public class MPSPacketList { + static { + new MPSPacketList(); + } + + public static void registerPackets() { + MusePacketHandler.packagers.put(1, MusePacketInventoryRefresh$.MODULE$); + MusePacketHandler.packagers.put(2, MusePacketInstallModuleRequest$.MODULE$); + MusePacketHandler.packagers.put(3, MusePacketSalvageModuleRequest$.MODULE$); + MusePacketHandler.packagers.put(4, MusePacketTweakRequest$.MODULE$); + MusePacketHandler.packagers.put(5, MusePacketCosmeticInfo$.MODULE$); + MusePacketHandler.packagers.put(6, MusePacketPlayerUpdate$.MODULE$); + MusePacketHandler.packagers.put(7, MusePacketToggleRequest$.MODULE$); + MusePacketHandler.packagers.put(8, MusePacketPlasmaBolt$.MODULE$); + MusePacketHandler.packagers.put(10, MusePacketColourInfo$.MODULE$); + MusePacketHandler.packagers.put(11, MusePacketPropertyModifierConfig$.MODULE$); + } +} diff --git a/src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.scala b/src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.scala deleted file mode 100644 index 91d8ec3..0000000 --- a/src/main/scala/net/machinemuse/powersuits/network/packets/MPSPacketList.scala +++ /dev/null @@ -1,22 +0,0 @@ -package net.machinemuse.powersuits.network.packets - -import net.machinemuse.numina.network.MusePacketHandler - -/** - * Author: MachineMuse (Claire Semple) - * Created: 4:01 PM, 9/3/13 - */ -object MPSPacketList { - def registerPackets() { - MusePacketHandler.packagers.put(1, MusePacketInventoryRefresh) - MusePacketHandler.packagers.put(2, MusePacketInstallModuleRequest) - MusePacketHandler.packagers.put(3, MusePacketSalvageModuleRequest) - MusePacketHandler.packagers.put(4, MusePacketTweakRequest) - MusePacketHandler.packagers.put(5, MusePacketCosmeticInfo) - MusePacketHandler.packagers.put(6, MusePacketPlayerUpdate) - MusePacketHandler.packagers.put(7, MusePacketToggleRequest) - MusePacketHandler.packagers.put(8, MusePacketPlasmaBolt) - MusePacketHandler.packagers.put(10, MusePacketColourInfo) - MusePacketHandler.packagers.put(11, MusePacketPropertyModifierConfig) - } -}