still porting project from Scala to Java.
This commit is contained in:
parent
ffcf71939d
commit
f13f528661
|
@ -10,7 +10,7 @@ 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());
|
||||
MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT);
|
||||
IIcon icon = Blocks.water.getIcon(0, 0);
|
||||
GL11.glLineWidth(0.5f);
|
||||
RenderState.on2D();
|
||||
|
|
|
@ -14,7 +14,7 @@ public class HeatMeter {
|
|||
final int ysize = 32;
|
||||
|
||||
public void draw(double xpos, double ypos, double value) {
|
||||
MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT());
|
||||
MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT);
|
||||
RenderState.blendingOn();
|
||||
RenderState.on2D();
|
||||
IIcon icon = Blocks.lava.getIcon(0, 0);
|
||||
|
|
|
@ -12,7 +12,7 @@ import net.minecraft.util.IIcon;
|
|||
*/
|
||||
public class WaterMeter extends HeatMeter {
|
||||
public void draw(double xpos, double ypos, double value) {
|
||||
MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT());
|
||||
MuseTextureUtils.pushTexture(MuseTextureUtils.BLOCK_TEXTURE_QUILT);
|
||||
RenderState.blendingOn();
|
||||
RenderState.on2D();
|
||||
IIcon icon = Blocks.water.getIcon(0, 0);
|
||||
|
|
|
@ -230,7 +230,7 @@ public class KeybindConfigFrame implements IGuiFrame {
|
|||
}
|
||||
newKeybindButton.draw();
|
||||
trashKeybindButton.draw();
|
||||
MuseTextureUtils.pushTexture(MuseTextureUtils.ITEM_TEXTURE_QUILT());
|
||||
MuseTextureUtils.pushTexture(MuseTextureUtils.ITEM_TEXTURE_QUILT);
|
||||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindInstructions1"), center.x(), center.y() + 40);
|
||||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindInstructions2"), center.x(), center.y() + 50);
|
||||
MuseRenderer.drawCenteredString(StatCollector.translateToLocal("gui.keybindInstructions3"), center.x(), center.y() + 60);
|
||||
|
|
|
@ -41,7 +41,6 @@ public class BlockTinkerTable extends Block {
|
|||
|
||||
public static void setRenderType(int id) {
|
||||
renderType = id;
|
||||
return;// this;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,253 @@
|
|||
package net.machinemuse.powersuits.event;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent;
|
||||
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.general.gui.WaterMeter;
|
||||
import net.machinemuse.general.gui.clickable.ClickableKeybinding;
|
||||
import net.machinemuse.numina.network.MusePacket;
|
||||
import net.machinemuse.numina.network.PacketSender;
|
||||
import net.machinemuse.powersuits.block.BlockTinkerTable;
|
||||
import net.machinemuse.powersuits.common.Config;
|
||||
import net.machinemuse.powersuits.control.KeybindManager;
|
||||
import net.machinemuse.powersuits.control.PlayerInputMap;
|
||||
import net.machinemuse.powersuits.item.ItemPowerArmorChestplate;
|
||||
import net.machinemuse.powersuits.item.ItemPowerArmorHelmet;
|
||||
import net.machinemuse.powersuits.item.ItemPowerFist;
|
||||
import net.machinemuse.powersuits.network.packets.MusePacketPlayerUpdate;
|
||||
import net.machinemuse.powersuits.powermodule.armor.WaterTankModule;
|
||||
import net.machinemuse.powersuits.powermodule.misc.AutoFeederModule;
|
||||
import net.machinemuse.powersuits.powermodule.misc.ClockModule;
|
||||
import net.machinemuse.powersuits.powermodule.misc.CompassModule;
|
||||
import net.machinemuse.utils.*;
|
||||
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 net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Ported to Java by lehjr on 10/24/16.
|
||||
*/
|
||||
public class ClientTickHandler {
|
||||
/**
|
||||
* This handler is called before/after the game processes input events and
|
||||
* updates the gui state mainly. *independent of rendering, so don't do rendering here
|
||||
* -is also the parent class of KeyBindingHandleryBaseIcon
|
||||
*
|
||||
* @author MachineMuse
|
||||
*/
|
||||
|
||||
public ArrayList<String> modules;
|
||||
private boolean drawWaterMeter = false;
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPreClientTick(TickEvent.ClientTickEvent event) {
|
||||
if (event.phase == TickEvent.Phase.START) {
|
||||
for (ClickableKeybinding kb : KeybindManager.getKeybindings()) {
|
||||
kb.doToggleTick();
|
||||
}
|
||||
} else {
|
||||
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
if (player != null && MuseItemUtils.getModularItemsInInventory(player).size() > 0) {
|
||||
PlayerInputMap inputmap = PlayerInputMap.getInputMapFor(player.getCommandSenderName());
|
||||
inputmap.forwardKey = Math.signum(player.movementInput.moveForward);
|
||||
inputmap.strafeKey = Math.signum(player.movementInput.moveStrafe);
|
||||
inputmap.jumpKey = player.movementInput.jump;
|
||||
inputmap.sneakKey = player.movementInput.sneak;
|
||||
inputmap.motionX = player.motionX;
|
||||
inputmap.motionY = player.motionY;
|
||||
inputmap.motionZ = player.motionZ;
|
||||
if (inputmap.hasChanged()) {
|
||||
inputmap.refresh();
|
||||
MusePacket inputPacket = new MusePacketPlayerUpdate(player, inputmap);
|
||||
PacketSender.sendToServer(inputPacket);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void findInstalledModules(EntityPlayer player) {
|
||||
if (player != null) {
|
||||
ItemStack tool = player.getCurrentEquippedItem();
|
||||
if (tool != null && tool.getItem() instanceof ItemPowerFist) {
|
||||
}
|
||||
ItemStack helmet = player.getCurrentArmor(3);
|
||||
if (helmet != null && helmet.getItem() instanceof ItemPowerArmorHelmet) {
|
||||
if (ModuleManager.itemHasActiveModule(helmet, AutoFeederModule.MODULE_AUTO_FEEDER)) {
|
||||
modules.add(AutoFeederModule.MODULE_AUTO_FEEDER);
|
||||
}
|
||||
if (ModuleManager.itemHasActiveModule(helmet, ClockModule.MODULE_CLOCK)) {
|
||||
modules.add(ClockModule.MODULE_CLOCK);
|
||||
}
|
||||
if (ModuleManager.itemHasActiveModule(helmet, CompassModule.MODULE_COMPASS)) {
|
||||
modules.add(CompassModule.MODULE_COMPASS);
|
||||
}
|
||||
}
|
||||
ItemStack chest = player.getCurrentArmor(2);
|
||||
if (chest != null && chest.getItem() instanceof ItemPowerArmorChestplate) {
|
||||
if (ModuleManager.itemHasActiveModule(chest, WaterTankModule.MODULE_WATER_TANK)) {
|
||||
modules.add(WaterTankModule.MODULE_WATER_TANK);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT) // MPSA - is this needed or not?
|
||||
@SubscribeEvent
|
||||
public void onRenderTickEvent(TickEvent.RenderTickEvent event) {
|
||||
ItemStack food = new ItemStack(Items.cooked_beef);
|
||||
ItemStack clock = new ItemStack(Items.clock);
|
||||
ItemStack compass = new ItemStack(Items.compass);
|
||||
|
||||
int yOffsetString = 18;
|
||||
double yOffsetIcon = 16.0;
|
||||
String ampm = "";
|
||||
|
||||
double yBaseIcon;
|
||||
int yBaseString;
|
||||
if (Config.useGraphicalMeters()) {
|
||||
yBaseIcon = 150.0;
|
||||
yBaseString = 155;
|
||||
} else {
|
||||
yBaseIcon = 26.0;
|
||||
yBaseString = 32;
|
||||
}
|
||||
|
||||
if (event.phase == TickEvent.Phase.END) {
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
modules = new ArrayList<String>();
|
||||
findInstalledModules(player);
|
||||
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);
|
||||
for (int i = 0; i < modules.size(); i++) {
|
||||
if (modules.get(i) == AutoFeederModule.MODULE_AUTO_FEEDER) {
|
||||
int foodLevel = (int) MuseItemUtils.getFoodLevel(player.getCurrentArmor(3));
|
||||
String num = MuseStringUtils.formatNumberShort(foodLevel);
|
||||
if (i == 0) {
|
||||
MuseRenderer.drawString(num, 17, yBaseString);
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon, food);
|
||||
} else {
|
||||
MuseRenderer.drawString(num, 17, yBaseString + (yOffsetString * i));
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon + (yOffsetIcon * i), food);
|
||||
}
|
||||
} else if (modules.get(i) == ClockModule.MODULE_CLOCK) {
|
||||
long time = player.worldObj.provider.getWorldTime();
|
||||
long hour = ((time % 24000) / 1000);
|
||||
if (Config.use24hClock()) {
|
||||
if (hour < 19) {
|
||||
hour += 6;
|
||||
} else {
|
||||
hour -= 18;
|
||||
}
|
||||
ampm = "h";
|
||||
} else {
|
||||
if (hour < 6) {
|
||||
hour += 6;
|
||||
ampm = " AM";
|
||||
} else if (hour == 6) {
|
||||
hour = 12;
|
||||
ampm = " PM";
|
||||
} else if (hour > 6 && hour < 18) {
|
||||
hour -= 6;
|
||||
ampm = " PM";
|
||||
} else if (hour == 18) {
|
||||
hour = 12;
|
||||
ampm = " AM";
|
||||
} else {
|
||||
hour -= 18;
|
||||
ampm = " AM";
|
||||
}
|
||||
}
|
||||
if (i == 0) {
|
||||
MuseRenderer.drawString(hour + ampm, 17, yBaseString);
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon, clock);
|
||||
} else {
|
||||
MuseRenderer.drawString(hour + ampm, 17, yBaseString + (yOffsetString * i));
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon + (yOffsetIcon * i), clock);
|
||||
}
|
||||
} else if (modules.get(i) == CompassModule.MODULE_COMPASS) {
|
||||
if (i == 0) {
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon, compass);
|
||||
} else {
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon + (yOffsetIcon * i), compass);
|
||||
}
|
||||
} else if (modules.get(i) == WaterTankModule.MODULE_WATER_TANK) {
|
||||
drawWaterMeter = true;
|
||||
}
|
||||
}
|
||||
drawMeters(player, screen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected HeatMeter heat = null;
|
||||
protected HeatMeter energy = null;
|
||||
protected WaterMeter water = null;
|
||||
private void drawMeters(EntityPlayer player, ScaledResolution screen) {
|
||||
double left = screen.getScaledWidth() - 30;
|
||||
double top = (double)screen.getScaledHeight() / 2.0 - (double)16;
|
||||
|
||||
/* Heat Meter ---------------------------------------------------------*/
|
||||
double currHeat = MuseHeatUtils.getPlayerHeat(player);
|
||||
double maxHeat = MuseHeatUtils.getMaxHeat(player);
|
||||
String currHeatStr = MuseStringUtils.formatNumberShort(currHeat);
|
||||
String maxHeatStr = MuseStringUtils.formatNumberShort(maxHeat);
|
||||
|
||||
if (Config.useGraphicalMeters()) {
|
||||
if (heat == null) {
|
||||
heat = new HeatMeter();
|
||||
}
|
||||
heat.draw(left + (double)8, top, currHeat / maxHeat);
|
||||
MuseRenderer.drawRightAlignedString(currHeatStr, left - (double)2, top + (double)20);
|
||||
} else {
|
||||
MuseRenderer.drawString(currHeatStr + '/' + maxHeatStr + " C", 1, 10);
|
||||
}
|
||||
|
||||
/* Energy Meter ------------------------------------------------------*/
|
||||
double currWater = AddonWaterUtils.getPlayerWater(player);
|
||||
double maxWater = AddonWaterUtils.getMaxWater(player);
|
||||
double currEnergy = ElectricItemUtils.getPlayerEnergy(player);
|
||||
double maxEnergy = ElectricItemUtils.getMaxEnergy(player);
|
||||
if (maxEnergy > 0 && BlockTinkerTable.energyIcon != null) {
|
||||
String currEnergyStr = MuseStringUtils.formatNumberShort(currEnergy);
|
||||
String maxEnergyStr = MuseStringUtils.formatNumberShort(maxEnergy);
|
||||
|
||||
if (Config.useGraphicalMeters()) {
|
||||
if (energy == null) {
|
||||
energy = new EnergyMeter();
|
||||
}
|
||||
energy.draw(left, top, currEnergy / maxEnergy);
|
||||
MuseRenderer.drawRightAlignedString(currEnergyStr, left - 2, top + 10);
|
||||
}
|
||||
else {
|
||||
MuseRenderer.drawString(currEnergyStr + '/' + maxEnergyStr + " \u1D60", 1, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Water Meter --------------------------------------------------------*/
|
||||
if (maxWater > 0 && drawWaterMeter ) {
|
||||
String currWaterStr = MuseStringUtils.formatNumberShort(currWater);
|
||||
String maxWaterStr = MuseStringUtils.formatNumberShort(maxWater);
|
||||
if (Config.useGraphicalMeters()) {
|
||||
if (water == null) {
|
||||
water = new WaterMeter();
|
||||
}
|
||||
water.draw(left + 16, top, currWater / maxWater);
|
||||
MuseRenderer.drawRightAlignedString(currWaterStr, left - 2, top + 30);
|
||||
}
|
||||
else {
|
||||
MuseRenderer.drawString(currWaterStr + '/' + maxWaterStr + " buckets", 1, 19);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package net.machinemuse.powersuits.event;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.PlayerEvent;
|
||||
import net.machinemuse.numina.network.PacketSender;
|
||||
import net.machinemuse.powersuits.network.packets.MusePacketPropertyModifierConfig;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
|
||||
/**
|
||||
* Author: MachineMuse (Claire Semple)
|
||||
* Created: 8:01 PM, 12/05/13
|
||||
*
|
||||
* Ported to Java by lehjr on 10/24/16.
|
||||
*/
|
||||
public class PlayerLoginHandlerThingy {
|
||||
@SubscribeEvent
|
||||
public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent e) {
|
||||
EntityPlayer player = e.player;
|
||||
PacketSender.sendTo(new MusePacketPropertyModifierConfig(player, null), (EntityPlayerMP)player);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
package net.machinemuse.powersuits.event;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import net.machinemuse.api.ModuleManager;
|
||||
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
||||
import net.machinemuse.general.sound.SoundDictionary;
|
||||
import net.machinemuse.numina.basemod.NuminaConfig;
|
||||
import net.machinemuse.numina.general.MuseMathUtils;
|
||||
import net.machinemuse.numina.sound.Musique;
|
||||
import net.machinemuse.powersuits.common.Config;
|
||||
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.minecraftforge.event.entity.living.LivingEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Claire Semple on 9/8/2014.
|
||||
*
|
||||
* Ported to Java by lehjr on 10/24/16.
|
||||
*/
|
||||
public class PlayerUpdateHandler {
|
||||
@SubscribeEvent
|
||||
public void onPlayerUpdate(LivingEvent.LivingUpdateEvent e){
|
||||
if (e.entity instanceof EntityPlayer){
|
||||
EntityPlayer player = (EntityPlayer) e.entity;
|
||||
|
||||
List<ItemStack> modularItemsEquipped = MuseItemUtils.modularItemsEquipped(player);
|
||||
double totalWeight = MuseItemUtils.getPlayerWeight(player);
|
||||
double weightCapacity = Config.getWeightCapacity();
|
||||
for (ItemStack stack :modularItemsEquipped) {
|
||||
if (stack.getTagCompound().hasKey("ench")) {
|
||||
stack.getTagCompound().removeTag("ench");
|
||||
}
|
||||
}
|
||||
|
||||
boolean foundItemWithModule = false;
|
||||
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));
|
||||
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, (float) (Math.sqrt(currHeat - maxHeat)/* was (int) */ / 4));
|
||||
player.setFire(1);
|
||||
}
|
||||
else {
|
||||
player.extinguish();
|
||||
}
|
||||
double velsq2 = MuseMathUtils.sumsq(player.motionX, player.motionY, player.motionZ) - 0.5;
|
||||
if ((FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) && NuminaConfig.useSounds()) {
|
||||
if (player.isAirBorne && velsq2 > 0) {
|
||||
Musique.playerSound(player, SoundDictionary.SOUND_GLIDER, (float)(velsq2 / 3), 1.0f, true);
|
||||
}
|
||||
else {
|
||||
Musique.stopPlayerSound(player, SoundDictionary.SOUND_GLIDER);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
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.clickable.ClickableKeybinding;
|
||||
import net.machinemuse.general.gui.clickable.ClickableModule;
|
||||
import net.machinemuse.numina.geometry.Colour;
|
||||
import net.machinemuse.numina.geometry.DrawableMuseRect;
|
||||
import net.machinemuse.numina.render.MuseIconUtils;
|
||||
import net.machinemuse.numina.render.MuseTextureUtils;
|
||||
import net.machinemuse.powersuits.common.Config;
|
||||
import net.machinemuse.powersuits.control.KeybindManager;
|
||||
import net.machinemuse.powersuits.powermodule.misc.BinocularsModule;
|
||||
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.MuseItemUtils;
|
||||
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 net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.event.*;
|
||||
|
||||
/**
|
||||
* Ported to Java by lehjr on 10/24/16.
|
||||
*/
|
||||
public class RenderEventHandler {
|
||||
private static boolean ownFly;
|
||||
private final DrawableMuseRect frame = new DrawableMuseRect(Config.keybindHUDx(), Config.keybindHUDy(), Config.keybindHUDx() + (double)16, Config.keybindHUDy() + (double)16, true, Colour.DARKGREEN.withAlpha(0.2), Colour.GREEN.withAlpha(0.2));
|
||||
|
||||
public RenderEventHandler() {
|
||||
this.ownFly = false;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onTextureStitch(TextureStitchEvent.Post event) {
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void renderLast(RenderWorldLastEvent event) {
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
ScaledResolution screen = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPreRenderPlayer(RenderPlayerEvent.Pre event) {
|
||||
if (!event.entityPlayer.capabilities.isFlying && !event.entityPlayer.onGround && this.playerHasFlightOn(event.entityPlayer)) {
|
||||
event.entityPlayer.capabilities.isFlying = true;
|
||||
RenderEventHandler.ownFly =true;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean playerHasFlightOn(EntityPlayer player) {
|
||||
return ModuleManager.itemHasActiveModule(player.getCurrentArmor(2), JetPackModule.MODULE_JETPACK) || ModuleManager.itemHasActiveModule(player.getCurrentArmor(2), GliderModule.MODULE_GLIDER) || ModuleManager.itemHasActiveModule(player.getCurrentArmor(0), JetBootsModule.MODULE_JETBOOTS) || ModuleManager.itemHasActiveModule(player.getCurrentArmor(3), FlightControlModule.MODULE_FLIGHT_CONTROL);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPostRenderPlayer(RenderPlayerEvent.Post event) {
|
||||
if (RenderEventHandler.ownFly) {
|
||||
RenderEventHandler.ownFly = false;
|
||||
event.entityPlayer.capabilities.isFlying = false;
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onFOVUpdate(FOVUpdateEvent e) {
|
||||
ItemStack helmet = e.entity.getCurrentArmor(3);
|
||||
if (ModuleManager.itemHasActiveModule(helmet, "Binoculars")) {
|
||||
e.newfov /= (float)ModuleManager.computeModularProperty(helmet, BinocularsModule.FOV_MULTIPLIER);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onPostRenderGameOverlayEvent(RenderGameOverlayEvent.Post e) {
|
||||
RenderGameOverlayEvent.ElementType elementType = e.type;
|
||||
if (RenderGameOverlayEvent.ElementType.HOTBAR.equals((Object)elementType)) {
|
||||
this.drawKeybindToggles();
|
||||
}
|
||||
}
|
||||
|
||||
public void drawKeybindToggles() {
|
||||
if (Config.keybindHUDon()) {
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
EntityClientPlayerMP player = mc.thePlayer;
|
||||
ScaledResolution screen = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
|
||||
frame.setLeft(Config.keybindHUDx());
|
||||
frame.setTop(Config.keybindHUDy());
|
||||
frame.setBottom(frame.top() + 16);
|
||||
|
||||
for (ClickableKeybinding kb: KeybindManager.getKeybindings()) {
|
||||
if (kb.displayOnHUD) {
|
||||
double stringwidth = net.machinemuse.utils.render.MuseRenderer.getStringWidth(kb.getLabel());
|
||||
frame.setWidth(stringwidth + kb.getBoundModules().size() * 16);
|
||||
frame.draw();
|
||||
MuseRenderer.drawString(kb.getLabel(), frame.left() + 1, frame.top() + 3, (kb.toggleval) ? Colour.RED : Colour.GREEN);
|
||||
double x = frame.left() + stringwidth;
|
||||
|
||||
for (ClickableModule module: kb.getBoundModules()) {
|
||||
MuseTextureUtils.pushTexture(module.getModule().getStitchedTexture(null));
|
||||
boolean active = false;
|
||||
|
||||
for (ItemStack stack : MuseItemUtils.modularItemsEquipped(player)) {
|
||||
if (ModuleManager.itemHasActiveModule(stack, module.getModule().getDataName()))
|
||||
active = true;
|
||||
}
|
||||
|
||||
MuseIconUtils.drawIconAt(x, frame.top(), module.getModule().getIcon(null), (active) ? Colour.WHITE : Colour.DARKGREY.withAlpha(0.5));
|
||||
MuseTextureUtils.popTexture();
|
||||
x += 16;
|
||||
}
|
||||
frame.setTop(frame.top() + 16);
|
||||
frame.setBottom(frame.top() + 16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package net.machinemuse.powersuits.item;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import ic2.api.item.IMetalArmor;
|
||||
import net.machinemuse.utils.render.MuseRenderer;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
* Ported to Java by lehjr on 10/26/16.
|
||||
*/
|
||||
@Optional.InterfaceList({ @Optional.Interface(iface = "ic2.api.item.IMetalArmor", modid = "IC2", striprefs = true) })
|
||||
public class ItemPowerArmorBoots extends ItemPowerArmor implements IMetalArmor
|
||||
{
|
||||
private final String iconpath = MuseRenderer.ICON_PREFIX + "armorfeet";
|
||||
public ItemPowerArmorBoots() {
|
||||
super(0, 3);
|
||||
this.setUnlocalizedName("powerArmorBoots");
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(final IIconRegister iconRegister) {
|
||||
this.itemIcon = iconRegister.registerIcon(this.iconpath);
|
||||
}
|
||||
|
||||
public boolean isMetalArmor(final ItemStack itemStack, final EntityPlayer entityPlayer) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package net.machinemuse.powersuits.item;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.machinemuse.utils.render.MuseRenderer;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
|
||||
/**
|
||||
* Ported to Java by lehjr on 10/26/16.
|
||||
*/
|
||||
public class ItemPowerArmorChestplate extends ItemPowerArmor
|
||||
{
|
||||
private final String iconpath = MuseRenderer.ICON_PREFIX + "armortorso";
|
||||
|
||||
public ItemPowerArmorChestplate() {
|
||||
super(0, 1);
|
||||
this.setUnlocalizedName("powerArmorChestplate");
|
||||
}
|
||||
|
||||
public String iconpath() {
|
||||
return this.iconpath;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(final IIconRegister iconRegister) {
|
||||
this.itemIcon = iconRegister.registerIcon(this.iconpath());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
package net.machinemuse.powersuits.item;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import forestry.api.core.IArmorNaturalist;
|
||||
import micdoodle8.mods.galacticraft.api.item.IBreathableArmor;
|
||||
import net.machinemuse.api.ModuleManager;
|
||||
import net.machinemuse.powersuits.powermodule.armor.ApiaristArmorModule;
|
||||
import net.machinemuse.powersuits.powermodule.misc.AirtightSealModule;
|
||||
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 net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import thaumcraft.api.IGoggles;
|
||||
import thaumcraft.api.nodes.IRevealer;
|
||||
|
||||
/**
|
||||
* Ported to Java by lehjr on 10/26/16.
|
||||
*/
|
||||
@Optional.InterfaceList({
|
||||
@Optional.Interface(iface = "forestry.api.core.IArmorNaturalist", modid = "Forestry", striprefs = true),
|
||||
@Optional.Interface(iface = "thaumcraft.api.IGoggles", modid = "Thaumcraft", striprefs = true),
|
||||
@Optional.Interface(iface = "thaumcraft.api.nodes.IRevealer", modid = "Thaumcraft", striprefs = true),
|
||||
@Optional.Interface(iface = "micdoodle8.mods.galacticraft.api.item.IBreathableArmor", modid = "GalacticraftCore", striprefs = true) })
|
||||
public class ItemPowerArmorHelmet extends ItemPowerArmor implements IArmorNaturalist, IBreathableArmor, IGoggles, IRevealer
|
||||
{
|
||||
private final String iconpath;
|
||||
public ItemPowerArmorHelmet() {
|
||||
super(0, 0);
|
||||
this.iconpath = MuseRenderer.ICON_PREFIX + "armorhead";
|
||||
this.setUnlocalizedName("powerArmorHelmet");
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(final IIconRegister iconRegister) {
|
||||
this.itemIcon = iconRegister.registerIcon(this.iconpath);
|
||||
}
|
||||
|
||||
public boolean showIngamePopups(final ItemStack itemstack, final EntityLivingBase player) {
|
||||
return ModuleManager.itemHasActiveModule(itemstack, ThaumGogglesModule.MODULE_THAUM_GOGGLES);
|
||||
}
|
||||
|
||||
public boolean showNodes(final ItemStack itemstack, final EntityLivingBase player) {
|
||||
return ModuleManager.itemHasActiveModule(itemstack, ThaumGogglesModule.MODULE_THAUM_GOGGLES);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "Forestry")
|
||||
public boolean canSeePollination(final EntityPlayer player, final ItemStack helm, final boolean doSee) {
|
||||
return ModuleManager.itemHasActiveModule(helm, ApiaristArmorModule.MODULE_APIARIST_ARMOR);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "GalacticraftCore")
|
||||
public boolean handleGearType(final IBreathableArmor.EnumGearType geartype) {
|
||||
return geartype == EnumGearType.HELMET;
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "GalacticraftCore")
|
||||
public boolean canBreathe(final ItemStack helm, final EntityPlayer player, final IBreathableArmor.EnumGearType geartype) {
|
||||
return ModuleManager.itemHasActiveModule(helm, AirtightSealModule.AIRTIGHT_SEAL_MODULE);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package net.machinemuse.powersuits.item;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.machinemuse.utils.render.MuseRenderer;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
|
||||
/**
|
||||
* Ported to Java by lehjr on 10/26/16.
|
||||
*/
|
||||
public class ItemPowerArmorLeggings extends ItemPowerArmor {
|
||||
private final String iconpath = MuseRenderer.ICON_PREFIX + "armorlegs";
|
||||
|
||||
public ItemPowerArmorLeggings() {
|
||||
super(0, 2);
|
||||
this.setUnlocalizedName("powerArmorLeggings");
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(final IIconRegister iconRegister) {
|
||||
this.itemIcon = iconRegister.registerIcon(this.iconpath);
|
||||
}
|
||||
}
|
|
@ -156,7 +156,7 @@ public abstract class PowerModuleBase implements ILocalizeableModule {
|
|||
|
||||
@Override
|
||||
public String getStitchedTexture(ItemStack item) {
|
||||
return MuseTextureUtils.ITEM_TEXTURE_QUILT();
|
||||
return MuseTextureUtils.ITEM_TEXTURE_QUILT;
|
||||
// alternatively
|
||||
// return "/terrain.png";
|
||||
}
|
||||
|
|
|
@ -403,8 +403,7 @@ public class MuseItemUtils {
|
|||
public static double getFoodLevel(ItemStack stack) {
|
||||
if (stack != null && stack.getItem() instanceof IModularItem) {
|
||||
NBTTagCompound itemTag = MuseItemUtils.getMuseItemTag(stack);
|
||||
Double foodLevel = itemTag.getDouble("Food");
|
||||
return foodLevel;
|
||||
return itemTag.getDouble("Food");
|
||||
}
|
||||
return 0.0;
|
||||
}
|
||||
|
|
|
@ -1,737 +0,0 @@
|
|||
//package net.machinemuse.general.gui.frame;
|
||||
//
|
||||
//import net.machinemuse.general.gui.clickable.ClickableSlider;
|
||||
//import net.machinemuse.numina.general.MuseLogger;
|
||||
//import net.machinemuse.numina.geometry.Colour;
|
||||
//import net.machinemuse.numina.geometry.DrawableMuseRect;
|
||||
//import net.machinemuse.numina.geometry.MusePoint2D;
|
||||
//import net.machinemuse.numina.geometry.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 net.minecraft.client.Minecraft;
|
||||
//import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
//import net.minecraft.item.Item;
|
||||
//import net.minecraft.nbt.NBTTagCompound;
|
||||
//import net.minecraft.nbt.NBTTagIntArray;
|
||||
//import net.minecraft.util.StatCollector;
|
||||
//import org.apache.commons.lang3.ArrayUtils;
|
||||
//
|
||||
//import java.util.Arrays;
|
||||
//import java.util.List;
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
// * Created: 4:19 AM, 03/05/13
|
||||
// *
|
||||
// * Ported to Java by lehjr on 10/20/16.
|
||||
// */
|
||||
//public class ColourPickerFrame implements IGuiFrame {
|
||||
// private final MuseRect borderRef;
|
||||
// private final Colour insideColour;
|
||||
// private final Colour borderColour;
|
||||
// private final ItemSelectionFrame itemSelector;
|
||||
// private final DrawableMuseRect border;
|
||||
// private final ClickableSlider rslider;
|
||||
// private final ClickableSlider gslider;
|
||||
// private final ClickableSlider bslider;
|
||||
// // private Option<ClickableSlider> selectedSlider;
|
||||
// private ClickableSlider selectedSlider;
|
||||
// private int selectedColour;
|
||||
// private int decrAbove;
|
||||
//
|
||||
//
|
||||
// public ColourPickerFrame(final MuseRect borderRef, final Colour insideColour, final Colour borderColour, final ItemSelectionFrame itemSelector) {
|
||||
// this.borderRef = borderRef;
|
||||
// this.insideColour = insideColour;
|
||||
// this.borderColour = borderColour;
|
||||
// this.itemSelector = itemSelector;
|
||||
// this.border = new DrawableMuseRect(borderRef, insideColour, borderColour);
|
||||
// this.rslider = new ClickableSlider(new MusePoint2D(this.border.centerx(), this.border.top() + (double)8), this.border.width() - (double)10, StatCollector.translateToLocal((String)"gui.red"));
|
||||
// this.gslider = new ClickableSlider(new MusePoint2D(this.border.centerx(), this.border.top() + (double)24), this.border.width() - (double)10, StatCollector.translateToLocal((String)"gui.green"));
|
||||
// this.bslider = new ClickableSlider(new MusePoint2D(this.border.centerx(), this.border.top() + (double)40), this.border.width() - (double)10, StatCollector.translateToLocal((String)"gui.blue"));
|
||||
// this.selectedSlider = null;
|
||||
// this.selectedColour = 0;
|
||||
// this.decrAbove = -1;
|
||||
// }
|
||||
//
|
||||
// int[] colours() {
|
||||
// int[] ret = getOrCreateColourTag().func_150302_c();
|
||||
// return (ret != null) ? ret : new int[0];
|
||||
// }
|
||||
//
|
||||
//// public int[] colours() {
|
||||
//// return (int[])this.getOrCreateColourTag().map((Function1)new scala.Serializable(this){
|
||||
////
|
||||
//// public final int[] apply(NBTTagIntArray e) {
|
||||
//// return e.func_150302_c();
|
||||
//// }
|
||||
//// }).getOrElse((Function0)new scala.Serializable(this){
|
||||
////
|
||||
//// public final int[] apply() {
|
||||
//// return new int[0];
|
||||
//// }
|
||||
//// });
|
||||
//// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseDown(double x, double y, int button) {
|
||||
// if (rslider.hitBox(x, y)) {
|
||||
// selectedSlider = rslider;
|
||||
// } else if (gslider.hitBox(x, y)) {
|
||||
// selectedSlider = gslider;
|
||||
// } else if (bslider.hitBox(x, y)) {
|
||||
// selectedSlider = bslider;
|
||||
// } else {
|
||||
// selectedSlider = null;
|
||||
// }
|
||||
// // add
|
||||
// if (y > border.bottom() - 16 && y < border.bottom() - 8) {
|
||||
// int colourCol = ((int)(x - border.left() - 8.0)) / 8;
|
||||
// if (colourCol >= 0 && colourCol < colours().length) {
|
||||
// onSelectColour(colourCol);
|
||||
// } else if (colourCol == colours().length) {
|
||||
// // append White
|
||||
// MuseLogger.logDebug("Adding");
|
||||
// int[] intArray = ArrayUtils.addAll(getIntArray(getOrCreateColourTag()), new int[]{Colour.WHITE.getInt()});
|
||||
// }
|
||||
// // remove
|
||||
// if (y > border.bottom() - 24 && y < border.bottom() - 16 && x > border.left() + 8 + selectedColour * 8 && x < border.left() + 16 + selectedColour * 8) {
|
||||
//
|
||||
//
|
||||
// NBTTagIntArray nbtTagIntArray = getOrCreateColourTag();
|
||||
//
|
||||
// b.
|
||||
//
|
||||
//
|
||||
// for (NBTTagCompound tag: ) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// .foreach(e => {
|
||||
// if (getIntArray(e).size > 1) {
|
||||
// setColourTagMaybe( getIntArray(e) diff Array(getIntArray(e)(selectedColour)))
|
||||
// decrAbove = selectedColour
|
||||
// if (selectedColour == getIntArray(e).size) {
|
||||
// selectedColour = selectedColour - 1
|
||||
// }
|
||||
// val player = Minecraft.getMinecraft.thePlayer
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem.inventorySlot, e.func_150302_c))
|
||||
// }
|
||||
// })
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseDown(double x, double y, int button) {
|
||||
//// BoxedUnit boxedUnit;
|
||||
// if (this.rslider.hitBox(x, y)) {
|
||||
// this.selectedSlider = this.rslider;
|
||||
// }
|
||||
// else if (this.gslider.hitBox(x, y)) {
|
||||
// this.selectedSlider = this.gslider;
|
||||
// }
|
||||
// else if (this.bslider.hitBox(x, y)) {
|
||||
// this.selectedSlider = this.bslider;
|
||||
// }
|
||||
// else {
|
||||
// this.selectedSlider = null;
|
||||
// }
|
||||
// if (y > this.border.bottom() - (double)16 && y < this.border.bottom() - (double)8) {
|
||||
// int colourCol = (int)(x - this.border.left() - 8.0) / 8;
|
||||
// if (colourCol >= 0 && colourCol < Predef..MODULE$.intArrayOps(this.colours()).size()) {
|
||||
// this.onSelectColour(colourCol);
|
||||
// boxedUnit = BoxedUnit.UNIT;
|
||||
// } else if (colourCol == Predef..MODULE$.intArrayOps(this.colours()).size()) {
|
||||
// MuseLogger.logDebug("Adding");
|
||||
// boxedUnit = this.getOrCreateColourTag().map((Function1)new scala.Serializable(this){
|
||||
// private final /* synthetic */ ColourPickerFrame $outer;
|
||||
//
|
||||
// public final Option<NBTTagIntArray> apply(NBTTagIntArray e) {
|
||||
// return this.$outer.setColourTagMaybe((int[])Predef..MODULE$.intArrayOps(this.$outer.getIntArray(e)).$colon$plus((Object)scala.runtime.BoxesRunTime.boxToInteger((int)Colour.WHITE.getInt()), ClassTag..MODULE$.Int()));
|
||||
// }
|
||||
// });
|
||||
// } else {
|
||||
// boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// } else {
|
||||
// boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// if (y > this.border().bottom() - (double)24 && y < this.border().bottom() - (double)16 && x > this.border().left() + (double)8 + (double)(this.selectedColour() * 8) && x < this.border().left() + (double)16 + (double)(this.selectedColour() * 8)) {
|
||||
// this.getOrCreateColourTag().foreach((Function1)new scala.Serializable(this){
|
||||
// private final /* synthetic */ ColourPickerFrame $outer;
|
||||
//
|
||||
// public final void apply(NBTTagIntArray e) {
|
||||
// if (Predef..MODULE$.intArrayOps(this.$outer.getIntArray(e)).size() > 1) {
|
||||
// this.$outer.setColourTagMaybe((int[])Predef..MODULE$.intArrayOps(this.$outer.getIntArray(e)).diff((scala.collection.GenSeq)Predef..MODULE$.wrapIntArray(new int[]{this.$outer.getIntArray(e)[this.$outer.selectedColour()]})));
|
||||
// this.$outer.decrAbove_$eq(this.$outer.selectedColour());
|
||||
// if (this.$outer.selectedColour() == Predef..MODULE$.intArrayOps(this.$outer.getIntArray(e)).size()) {
|
||||
// this.$outer.selectedColour_$eq(this.$outer.selectedColour() - 1);
|
||||
// }
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender$.MODULE$.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.$outer.itemSelector().getSelectedItem().inventorySlot, e.func_150302_c()));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseDown(final double x, final double y, final int button) {
|
||||
// if (this.rslider.hitBox(x, y)) {
|
||||
// this.selectedSlider = this.rslider;
|
||||
// }
|
||||
// else if (this.gslider.hitBox(x, y)) {
|
||||
// this.selectedSlider = this.gslider;
|
||||
// }
|
||||
// else if (this.bslider.hitBox(x, y)) {
|
||||
// this.selectedSlider = this.bslider;
|
||||
// }
|
||||
// else {
|
||||
// this.selectedSlider = null;
|
||||
// }
|
||||
// if (y > this.border.bottom() - 16 && y < this.border.bottom() - 8) {
|
||||
// final int colourCol = (int)(x - this.border.left() - 8.0) / 8;
|
||||
// if (colourCol >= 0 && colourCol < Predef$.MODULE$.intArrayOps(this.colours()).size()) {
|
||||
// this.onSelectColour(colourCol);
|
||||
// final BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// else if (colourCol == Predef$.MODULE$.intArrayOps(this.colours()).size()) {
|
||||
// MuseLogger.logDebug("Adding");
|
||||
// this.getOrCreateColourTag().map((Function1)new ColourPickerFrame$$anonfun$onMouseDown.ColourPickerFrame$$anonfun$onMouseDown$1(this));
|
||||
// }
|
||||
// else {
|
||||
// final BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// }
|
||||
// else {
|
||||
// final BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// if (y > this.border.bottom() - 24 && y < this.border.bottom() - 16 && x > this.border.left() + 8 + this.selectedColour * 8 && x < this.border.left() + 16 + this.selectedColour * 8) {
|
||||
// this.getOrCreateColourTag().foreach((Function1)new ColourPickerFrame$$anonfun$onMouseDown.ColourPickerFrame$$anonfun$onMouseDown$2(this));
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseUp(double x, double y, int button) {
|
||||
// selectedSlider = null;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void update(double mousex, double mousey) {
|
||||
//
|
||||
// selectedSlider.map(s => {
|
||||
// s.setValueByX(mousex);
|
||||
// if (colours().length > selectedColour) {
|
||||
// colours(selectedColour) = Colour.getInt(rslider.value(), gslider.value(), bslider.value(), 1.0);
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem().inventorySlot, colours()));
|
||||
// }
|
||||
// })
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void draw() {
|
||||
// border.draw();
|
||||
// rslider.draw();
|
||||
// gslider.draw();
|
||||
// bslider.draw();
|
||||
// for (int i = 0; i < colours().length; i++) {
|
||||
// new GuiIcons.ArmourColourPatch(border.left() + 8 + i * 8, border.bottom() - 16, new Colour(colours(i)), null, null, null, null);
|
||||
// }
|
||||
// new GuiIcons.ArmourColourPatch(border.left() + 8 + colours().length * 8, border.bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.SelectedArmorOverlay(border.left() + 8 + selectedColour * 8, border.bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.MinusSign(border.left() + 8 + selectedColour * 8, border.bottom() - 24, Colour.RED, null, null, null, null);
|
||||
// new GuiIcons.PlusSign(border.left() + 8 + colours().length * 8, border.bottom() - 16, Colour.GREEN, null, null, null, null);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<String> getToolTip(int x, int y) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// NBTTagIntArray getOrCreateColourTag() {
|
||||
// if (itemSelector.getSelectedItem() == null)
|
||||
// return null;
|
||||
// NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem().getItem());
|
||||
// if (renderSpec.hasKey("colours") && renderSpec.getTag("colours") instanceof NBTTagIntArray)
|
||||
// return (NBTTagIntArray)renderSpec.getTag("colours");
|
||||
// else {
|
||||
// Item itembase = itemSelector.getSelectedItem().getItem().getItem();
|
||||
//
|
||||
//
|
||||
// if (itembase instanceof ItemPowerArmor) {
|
||||
// int[] intArray = {
|
||||
// ((ItemPowerArmor) itembase).getColorFromItemStack(itemSelector.getSelectedItem().getItem()).getInt(),
|
||||
// ((ItemPowerArmor) itembase).getGlowFromItemStack(itemSelector.getSelectedItem().getItem()).getInt()};
|
||||
//
|
||||
// renderSpec.setIntArray("colours", intArray);
|
||||
// } else {
|
||||
// int[] intArray = new int[0];
|
||||
// renderSpec.setIntArray("colours", intArray);
|
||||
// }
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem().inventorySlot, colours()));
|
||||
// return (NBTTagIntArray)renderSpec.getTag("colours");
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// NBTTagIntArray setColourTagMaybe(int[] newarray) {
|
||||
// if (itemSelector.getSelectedItem() == null)
|
||||
// return null;
|
||||
// NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(itemSelector.getSelectedItem().getItem());
|
||||
// renderSpec.setTag("colours", new NBTTagIntArray(newarray));
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote)
|
||||
// PacketSender.sendToServer(new MusePacketColourInfo(player, itemSelector.getSelectedItem().inventorySlot, colours()));
|
||||
// return (NBTTagIntArray)renderSpec.getTag("colours");
|
||||
// }
|
||||
//
|
||||
//// public Option<NBTTagIntArray> setColourTagMaybe(final int[] newarray) {
|
||||
// public NBTTagIntArray setColourTagMaybe(final int[] newarray) {
|
||||
// if (this.itemSelector().getSelectedItem() == null) {
|
||||
// return (NBTTagIntArray)None$.MODULE$;
|
||||
// }
|
||||
// final NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector().getSelectedItem().getItem());
|
||||
// renderSpec.setTag("colours", (NBTBase)new NBTTagIntArray(newarray));
|
||||
// final EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender$.MODULE$.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector().getSelectedItem().inventorySlot, this.colours()));
|
||||
// }
|
||||
// return (Option<NBTTagIntArray>)new Some((Object)renderSpec.getTag("colours"));
|
||||
// }
|
||||
//
|
||||
// public Buffer<Object> importColours() {
|
||||
// final Buffer colours = (Buffer)Buffer$.MODULE$.empty();
|
||||
// return (Buffer<Object>)colours;
|
||||
// }
|
||||
//
|
||||
//// int[] importColours () {
|
||||
//// return new int[0];
|
||||
////// colours = mutable.Buffer.empty[Int]
|
||||
////// return colours;
|
||||
//// }
|
||||
//
|
||||
// public void refreshColours() {
|
||||
// // getOrCreateColourTag.map(coloursTag => {
|
||||
// // val colourints: Array[Int] = coloursTag.intArray
|
||||
// // val colourset: HashSet[Int] = HashSet.empty ++ colours ++ colourints
|
||||
// // val colourarray = colourset.toArray
|
||||
// // coloursTag.intArray = colourarray
|
||||
// // })
|
||||
// }
|
||||
//
|
||||
// public void onSelectColour(final int i) {
|
||||
// final Colour c = new Colour(this.colours()[i]);
|
||||
// this.rslider().setValue(c.r);
|
||||
// this.gslider().setValue(c.g);
|
||||
// this.bslider().setValue(c.b);
|
||||
// this.selectedColour =i;
|
||||
// }
|
||||
//
|
||||
// public int[] getIntArray(final NBTTagIntArray e) {
|
||||
// return e.func_150302_c();
|
||||
// }
|
||||
//}
|
||||
//public class ColourPickerFrame implements IGuiFrame
|
||||
//{
|
||||
// private final MuseRect borderRef;
|
||||
// private final Colour insideColour;
|
||||
// private final Colour borderColour;
|
||||
// private final ItemSelectionFrame itemSelector;
|
||||
// private final DrawableMuseRect border;
|
||||
// private final ClickableSlider rslider;
|
||||
// private final ClickableSlider gslider;
|
||||
// private final ClickableSlider bslider;
|
||||
// private Option<ClickableSlider> selectedSlider;
|
||||
// private int selectedColour;
|
||||
// private int decrAbove;
|
||||
//
|
||||
// public MuseRect borderRef() {
|
||||
// return this.borderRef;
|
||||
// }
|
||||
//
|
||||
// public Colour insideColour() {
|
||||
// return this.insideColour;
|
||||
// }
|
||||
//
|
||||
// public Colour borderColour() {
|
||||
// return this.borderColour;
|
||||
// }
|
||||
//
|
||||
// public ItemSelectionFrame itemSelector() {
|
||||
// return this.itemSelector;
|
||||
// }
|
||||
//
|
||||
// public DrawableMuseRect border() {
|
||||
// return this.border;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider rslider() {
|
||||
// return this.rslider;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider gslider() {
|
||||
// return this.gslider;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider bslider() {
|
||||
// return this.bslider;
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// public Option<ClickableSlider> selectedSlider() {
|
||||
// return this.selectedSlider;
|
||||
// }
|
||||
//
|
||||
// public void selectedSlider_$eq(final Option<ClickableSlider> x$1) {
|
||||
// this.selectedSlider = x$1;
|
||||
// }
|
||||
//
|
||||
// public int selectedColour() {
|
||||
// return this.selectedColour;
|
||||
// }
|
||||
//
|
||||
// public void selectedColour_$eq(final int x$1) {
|
||||
// this.selectedColour = x$1;
|
||||
// }
|
||||
//
|
||||
// public int decrAbove() {
|
||||
// return this.decrAbove;
|
||||
// }
|
||||
//
|
||||
// public void decrAbove_$eq(final int x$1) {
|
||||
// this.decrAbove = x$1;
|
||||
// }
|
||||
//
|
||||
// public Option<NBTTagIntArray> getOrCreateColourTag() {
|
||||
// if (this.itemSelector().getSelectedItem() == null) {
|
||||
// return (Option<NBTTagIntArray>)None$.MODULE$;
|
||||
// }
|
||||
// final NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector().getSelectedItem().getItem());
|
||||
// Some some;
|
||||
// if (renderSpec.hasKey("colours") && renderSpec.getTag("colours") instanceof NBTTagIntArray) {
|
||||
// some = new Some((Object)renderSpec.getTag("colours"));
|
||||
// }
|
||||
// else {
|
||||
// final Item item = this.itemSelector().getSelectedItem().getItem().getItem();
|
||||
// if (item instanceof ItemPowerArmor) {
|
||||
// final ItemPowerArmor itemPowerArmor = (ItemPowerArmor)item;
|
||||
// final int[] intArray = { itemPowerArmor.getColorFromItemStack(this.itemSelector().getSelectedItem().getItem()).getInt(), itemPowerArmor.getGlowFromItemStack(this.itemSelector().getSelectedItem().getItem()).getInt() };
|
||||
// renderSpec.setIntArray("colours", intArray);
|
||||
// final BoxedUnit unit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// else {
|
||||
// final int[] intArray2 = (int[])Array$.MODULE$.empty(ClassTag$.MODULE$.Int());
|
||||
// renderSpec.setIntArray("colours", intArray2);
|
||||
// final BoxedUnit unit2 = BoxedUnit.UNIT;
|
||||
// }
|
||||
// final EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender$.MODULE$.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector().getSelectedItem().inventorySlot, this.colours()));
|
||||
// }
|
||||
// some = new Some((Object)renderSpec.getTag("colours"));
|
||||
// }
|
||||
// return (Option<NBTTagIntArray>)some;
|
||||
// }
|
||||
//
|
||||
// public Option<NBTTagIntArray> setColourTagMaybe(final int[] newarray) {
|
||||
// if (this.itemSelector().getSelectedItem() == null) {
|
||||
// return (Option<NBTTagIntArray>)None$.MODULE$;
|
||||
// }
|
||||
// final NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector().getSelectedItem().getItem());
|
||||
// renderSpec.setTag("colours", (NBTBase)new NBTTagIntArray(newarray));
|
||||
// final EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender$.MODULE$.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector().getSelectedItem().inventorySlot, this.colours()));
|
||||
// }
|
||||
// return (Option<NBTTagIntArray>)new Some((Object)renderSpec.getTag("colours"));
|
||||
// }
|
||||
//
|
||||
// public Buffer<Object> importColours() {
|
||||
// final Buffer colours = (Buffer)Buffer$.MODULE$.empty();
|
||||
// return (Buffer<Object>)colours;
|
||||
// }
|
||||
//
|
||||
// public void refreshColours() {
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseUp(final double x, final double y, final int button) {
|
||||
// this.selectedSlider_$eq((Option<ClickableSlider>)None$.MODULE$);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void update(final double mousex, final double mousey) {
|
||||
// this.selectedSlider().foreach((Function1)new ColourPickerFrame$$anonfun$update.ColourPickerFrame$$anonfun$update$1(this, mousex));
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void draw() {
|
||||
// this.border().draw();
|
||||
// this.rslider().draw();
|
||||
// this.gslider().draw();
|
||||
// this.bslider().draw();
|
||||
// Predef$.MODULE$.intArrayOps(this.colours()).indices().foreach((Function1)new ColourPickerFrame$$anonfun$draw.ColourPickerFrame$$anonfun$draw$1(this));
|
||||
// new GuiIcons.ArmourColourPatch(this.border().left() + 8 + Predef$.MODULE$.intArrayOps(this.colours()).size() * 8, this.border().bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.SelectedArmorOverlay(this.border().left() + 8 + this.selectedColour() * 8, this.border().bottom() - 16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.MinusSign(this.border().left() + 8 + this.selectedColour() * 8, this.border().bottom() - 24, Colour.RED, null, null, null, null);
|
||||
// new GuiIcons.PlusSign(this.border().left() + 8 + Predef$.MODULE$.intArrayOps(this.colours()).size() * 8, this.border().bottom() - 16, Colour.GREEN, null, null, null, null);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<String> getToolTip(final int x, final int y) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// public void onSelectColour(final int i) {
|
||||
// final Colour c = new Colour(this.colours()[i]);
|
||||
// this.rslider().setValue(c.r);
|
||||
// this.gslider().setValue(c.g);
|
||||
// this.bslider().setValue(c.b);
|
||||
// this.selectedColour_$eq(i);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public int[] getIntArray(final NBTTagIntArray e) {
|
||||
// return e.func_150302_c();
|
||||
// }
|
||||
//
|
||||
//
|
||||
//}
|
||||
//
|
||||
//public class ColourPickerFrame
|
||||
//
|
||||
//
|
||||
// public MuseRect borderRef() {
|
||||
// return this.borderRef;
|
||||
// }
|
||||
//
|
||||
// public Colour insideColour() {
|
||||
// return this.insideColour;
|
||||
// }
|
||||
//
|
||||
// public Colour borderColour() {
|
||||
// return this.borderColour;
|
||||
// }
|
||||
//
|
||||
// public ItemSelectionFrame itemSelector() {
|
||||
// return this.itemSelector;
|
||||
// }
|
||||
//
|
||||
// public DrawableMuseRect border() {
|
||||
// return this.border;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider rslider() {
|
||||
// return this.rslider;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider gslider() {
|
||||
// return this.gslider;
|
||||
// }
|
||||
//
|
||||
// public ClickableSlider bslider() {
|
||||
// return this.bslider;
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// public Option<ClickableSlider> selectedSlider() {
|
||||
// return this.selectedSlider;
|
||||
// }
|
||||
//
|
||||
// public void selectedSlider_$eq(Option<ClickableSlider> x$1) {
|
||||
// this.selectedSlider = x$1;
|
||||
// }
|
||||
//
|
||||
// public int selectedColour() {
|
||||
// return this.selectedColour;
|
||||
// }
|
||||
//
|
||||
// public void selectedColour_$eq(int x$1) {
|
||||
// this.selectedColour = x$1;
|
||||
// }
|
||||
//
|
||||
// public int decrAbove() {
|
||||
// return this.decrAbove;
|
||||
// }
|
||||
//
|
||||
// public void decrAbove_$eq(int x$1) {
|
||||
// this.decrAbove = x$1;
|
||||
// }
|
||||
//
|
||||
// public Option<NBTTagIntArray> getOrCreateColourTag() {
|
||||
// Some some;
|
||||
// if (this.itemSelector().getSelectedItem() == null) {
|
||||
// return None..MODULE$;
|
||||
// }
|
||||
// NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector().getSelectedItem().getItem());
|
||||
// if (renderSpec.hasKey("colours") && renderSpec.getTag("colours") instanceof NBTTagIntArray) {
|
||||
// some = new Some((Object)((NBTTagIntArray)renderSpec.getTag("colours")));
|
||||
// } else {
|
||||
// Item item = this.itemSelector().getSelectedItem().getItem().getItem();
|
||||
// if (item instanceof ItemPowerArmor) {
|
||||
// ItemPowerArmor itemPowerArmor = (ItemPowerArmor)item;
|
||||
// int[] intArray = new int[]{itemPowerArmor.getColorFromItemStack(this.itemSelector().getSelectedItem().getItem()).getInt(), itemPowerArmor.getGlowFromItemStack(this.itemSelector().getSelectedItem().getItem()).getInt()};
|
||||
// renderSpec.setIntArray("colours", intArray);
|
||||
// BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// } else {
|
||||
// int[] intArray = (int[])Array..MODULE$.empty(ClassTag..MODULE$.Int());
|
||||
// renderSpec.setIntArray("colours", intArray);
|
||||
// BoxedUnit boxedUnit = BoxedUnit.UNIT;
|
||||
// }
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender$.MODULE$.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector().getSelectedItem().inventorySlot, this.colours()));
|
||||
// }
|
||||
// some = new Some((Object)((NBTTagIntArray)renderSpec.getTag("colours")));
|
||||
// }
|
||||
// return some;
|
||||
// }
|
||||
//
|
||||
// public Option<NBTTagIntArray> setColourTagMaybe(int[] newarray) {
|
||||
// if (this.itemSelector().getSelectedItem() == null) {
|
||||
// return None..MODULE$;
|
||||
// }
|
||||
// NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector().getSelectedItem().getItem());
|
||||
// renderSpec.setTag("colours", (NBTBase)new NBTTagIntArray(newarray));
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender$.MODULE$.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector().getSelectedItem().inventorySlot, this.colours()));
|
||||
// }
|
||||
// return new Some((Object)((NBTTagIntArray)renderSpec.getTag("colours")));
|
||||
// }
|
||||
//
|
||||
// public Buffer<Object> importColours() {
|
||||
// Buffer colours2 = (Buffer)Buffer..MODULE$.empty();
|
||||
// return colours2;
|
||||
// }
|
||||
//
|
||||
// public void refreshColours() {
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onMouseUp(double x, double y, int button) {
|
||||
// this.selectedSlider_$eq((Option<ClickableSlider>)None..MODULE$);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void update(double mousex, double mousey) {
|
||||
// this.selectedSlider().foreach((Function1)new scala.Serializable(this, mousex){
|
||||
// private final /* synthetic */ ColourPickerFrame $outer;
|
||||
// private final double mousex$1;
|
||||
//
|
||||
// public final void apply(ClickableSlider s) {
|
||||
// s.setValueByX(this.mousex$1);
|
||||
// if (Predef..MODULE$.intArrayOps(this.$outer.colours()).size() > this.$outer.selectedColour()) {
|
||||
// this.$outer.colours()[this.$outer.selectedColour()] = Colour.getInt(this.$outer.rslider().value(), this.$outer.gslider().value(), this.$outer.bslider().value(), 1.0);
|
||||
// EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
// if (player.worldObj.isRemote) {
|
||||
// PacketSender$.MODULE$.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.$outer.itemSelector().getSelectedItem().inventorySlot, this.$outer.colours()));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void draw() {
|
||||
// this.border().draw();
|
||||
// this.rslider().draw();
|
||||
// this.gslider().draw();
|
||||
// this.bslider().draw();
|
||||
// Predef..MODULE$.intArrayOps(this.colours()).indices().foreach((Function1)new scala.Serializable(this){
|
||||
// private final /* synthetic */ ColourPickerFrame $outer;
|
||||
//
|
||||
// public final GuiIcons.ArmourColourPatch apply(int i) {
|
||||
// return new GuiIcons.ArmourColourPatch(this.$outer.border().left() + (double)8 + (double)(i * 8), this.$outer.border().bottom() - (double)16, new Colour(this.$outer.colours()[i]), null, null, null, null);
|
||||
// }
|
||||
// });
|
||||
// new GuiIcons.ArmourColourPatch(this.border().left() + (double)8 + (double)(Predef..MODULE$.intArrayOps(this.colours()).size() * 8), this.border().bottom() - (double)16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.SelectedArmorOverlay(this.border().left() + (double)8 + (double)(this.selectedColour() * 8), this.border().bottom() - (double)16, Colour.WHITE, null, null, null, null);
|
||||
// new GuiIcons.MinusSign(this.border().left() + (double)8 + (double)(this.selectedColour() * 8), this.border().bottom() - (double)24, Colour.RED, null, null, null, null);
|
||||
// new GuiIcons.PlusSign(this.border().left() + (double)8 + (double)(Predef..MODULE$.intArrayOps(this.colours()).size() * 8), this.border().bottom() - (double)16, Colour.GREEN, null, null, null, null);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<String> getToolTip(int x, int y) {
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// public void onSelectColour(int i) {
|
||||
// Colour c = new Colour(this.colours()[i]);
|
||||
// this.rslider().setValue(c.r);
|
||||
// this.gslider().setValue(c.g);
|
||||
// this.bslider().setValue(c.b);
|
||||
// this.selectedColour_$eq(i);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// public int[] getIntArray(NBTTagIntArray e) {
|
||||
// return e.func_150302_c();
|
||||
// }
|
||||
//
|
||||
//
|
||||
//}
|
|
@ -17,9 +17,9 @@ import net.minecraft.util.StatCollector
|
|||
import scala.collection.mutable
|
||||
|
||||
/**
|
||||
* Author: MachineMuse (Claire Semple)
|
||||
* Created: 4:19 AM, 03/05/13
|
||||
*/
|
||||
* Author: MachineMuse (Claire Semple)
|
||||
* Created: 4:19 AM, 03/05/13
|
||||
*/
|
||||
class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val borderColour: Colour, val itemSelector: ItemSelectionFrame) extends IGuiFrame {
|
||||
val border = new DrawableMuseRect(borderRef, insideColour, borderColour)
|
||||
val rslider: ClickableSlider = new ClickableSlider(new MusePoint2D(border.centerx, border.top + 8), border.width - 10, StatCollector.translateToLocal("gui.red"))
|
||||
|
@ -153,7 +153,6 @@ class ColourPickerFrame(val borderRef: MuseRect, val insideColour: Colour, val b
|
|||
})
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
def getIntArray(e:NBTTagIntArray) = e.func_150302_c()
|
||||
}
|
||||
|
|
|
@ -3,8 +3,8 @@ package net.machinemuse.powersuits.client.render.item
|
|||
import net.machinemuse.numina.general.MuseLogger
|
||||
import net.machinemuse.powersuits.client.render.modelspec._
|
||||
import net.minecraft.client.model.{ModelBiped, ModelRenderer}
|
||||
import net.minecraft.entity.{Entity, EntityLivingBase}
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraft.entity.{Entity, EntityLivingBase}
|
||||
import net.minecraft.item.{EnumAction, ItemStack}
|
||||
import net.minecraft.nbt.NBTTagCompound
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
//package net.machinemuse.powersuits.client.render.modelspec;
|
||||
//
|
||||
//import net.machinemuse.numina.scala.MuseRegistry;
|
||||
//import net.minecraft.util.Vec3;
|
||||
//import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
//
|
||||
///**
|
||||
// * Author: MachineMuse (Claire Semple)
|
||||
// * Created: 7:44 AM, 4/28/13
|
||||
// *
|
||||
// * Ported to Java by lehjr on 10/23/16.
|
||||
// */
|
||||
//public class ModelSpec extends MuseRegistry<ModelPartSpec> {
|
||||
// private final WavefrontObject model;
|
||||
// private final String[] textures;
|
||||
// private final Vec3 offset;
|
||||
// private final Vec3 rotation;
|
||||
// private final String filename;
|
||||
//
|
||||
// public ModelSpec(final WavefrontObject model, final String[] textures, final Vec3 offset, final Vec3 rotation, final String filename) {
|
||||
// this.model = model;
|
||||
// this.textures = textures;
|
||||
// this.offset = offset;
|
||||
// this.rotation = rotation;
|
||||
// this.filename = filename;
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//// class ModelSpec(val model: WavefrontObject,
|
||||
//// val textures: Array[String],
|
||||
//// val offset: Option[Vec3],
|
||||
//// val rotation: Option[Vec3],
|
||||
//// val filename: String
|
||||
//// ) extends MuseRegistry[ModelPartSpec] {
|
||||
//// def applyOffsetAndRotation() = {
|
||||
//// // TODO: Implement
|
||||
//// }
|
||||
////
|
||||
//// def getOwnName = {
|
||||
//// ModelRegistry.getName(this).getOrElse("")
|
||||
//// }
|
||||
//// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
//
|
||||
// public WavefrontObject model() {
|
||||
// return this.model;
|
||||
// }
|
||||
//
|
||||
// public String[] textures() {
|
||||
// return this.textures;
|
||||
// }
|
||||
//
|
||||
// public Vec3 offset() {
|
||||
// return this.offset;
|
||||
// }
|
||||
//
|
||||
// public Vec3 rotation() {
|
||||
// return this.rotation;
|
||||
// }
|
||||
//
|
||||
// public String filename() {
|
||||
// return this.filename;
|
||||
// }
|
||||
//
|
||||
// public void applyOffsetAndRotation() {
|
||||
// }
|
||||
//
|
||||
// public String getOwnName() {
|
||||
// return (ModelRegistry.getName(this.) != null) ? ModelRegistry.getName(this) : ("");
|
||||
//
|
||||
//
|
||||
// return (String)((MuseBiMap<Object, T>)ModelRegistry$.MODULE$).getName((T)this).getOrElse((Function0)new ModelSpec$$anonfun$getOwnName.ModelSpec$$anonfun$getOwnName$1(this));
|
||||
// }
|
||||
//
|
||||
//
|
||||
//}
|
||||
//
|
|
@ -21,6 +21,10 @@ class RenderPart(base: ModelBase, val parent: ModelRenderer) extends ModelRender
|
|||
val colours = renderSpec.getIntArray("colours")
|
||||
|
||||
for {
|
||||
/* rember null checks when porting this section to Java */
|
||||
|
||||
|
||||
|
||||
nbt <- NBTTagAccessor.getValues(renderSpec).asScala
|
||||
part <- ModelRegistry.getPart(nbt)
|
||||
if part.slot == ArmorModel.instance.visibleSection
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.net.URL
|
|||
import cpw.mods.fml.client.registry.{ClientRegistry, RenderingRegistry}
|
||||
import cpw.mods.fml.common.FMLCommonHandler
|
||||
import net.machinemuse.general.sound.SoundDictionary
|
||||
import net.machinemuse.numina.network.{MusePacket, MusePacketHandler, MusePacketModeChangeRequest, PacketSender}
|
||||
import net.machinemuse.numina.network.{MusePacket, MusePacketModeChangeRequest, PacketSender}
|
||||
import net.machinemuse.numina.render.RenderGameOverlayEventHandler
|
||||
import net.machinemuse.powersuits.block.{BlockTinkerTable, TileEntityLuxCapacitor, TileEntityTinkerTable}
|
||||
import net.machinemuse.powersuits.client.render.block.{RenderLuxCapacitorTESR, TinkerTableRenderer}
|
||||
|
@ -79,7 +79,7 @@ class ClientProxy extends CommonProxy {
|
|||
FMLCommonHandler.instance.bus.register(new KeybindKeyHandler)
|
||||
MinecraftForge.EVENT_BUS.register(new PlayerUpdateHandler)
|
||||
FMLCommonHandler.instance.bus.register(new ClientTickHandler)
|
||||
val packetHandler: MusePacketHandler.type = MusePacketHandler
|
||||
// val packetHandler: MusePacketHandler.type = MusePacketHandler
|
||||
}
|
||||
|
||||
override def postInit() {
|
||||
|
@ -97,7 +97,7 @@ class ClientProxy extends CommonProxy {
|
|||
|
||||
class ServerProxy extends CommonProxy {
|
||||
override def registerEvents {
|
||||
FMLCommonHandler.instance().bus().register(PlayerLoginHandlerThingy)
|
||||
FMLCommonHandler.instance().bus().register(new PlayerLoginHandlerThingy)
|
||||
}
|
||||
|
||||
override def registerHandlers() {
|
||||
|
|
|
@ -1,250 +0,0 @@
|
|||
package net.machinemuse.powersuits.event
|
||||
|
||||
import java.util
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent
|
||||
import cpw.mods.fml.common.gameevent.TickEvent
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.{ClientTickEvent, RenderTickEvent}
|
||||
import net.machinemuse.api.ModuleManager
|
||||
import net.machinemuse.general.gui.{EnergyMeter, HeatMeter, WaterMeter}
|
||||
import net.machinemuse.numina.network.{MusePacket, PacketSender}
|
||||
import net.machinemuse.powersuits.block.BlockTinkerTable
|
||||
import net.machinemuse.powersuits.common.Config
|
||||
import net.machinemuse.powersuits.control.{KeybindManager, PlayerInputMap}
|
||||
import net.machinemuse.powersuits.item.{ItemPowerArmorChestplate, ItemPowerArmorHelmet, ItemPowerFist}
|
||||
import net.machinemuse.powersuits.network.packets.MusePacketPlayerUpdate
|
||||
import net.machinemuse.powersuits.powermodule.armor.WaterTankModule
|
||||
import net.machinemuse.powersuits.powermodule.misc.{AutoFeederModule, ClockModule, CompassModule}
|
||||
import net.machinemuse.utils.render.MuseRenderer
|
||||
import net.machinemuse.utils._
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP
|
||||
import net.minecraft.client.gui.ScaledResolution
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraft.init.Items
|
||||
import net.minecraft.item.ItemStack
|
||||
|
||||
|
||||
class ClientTickHandler {
|
||||
/**
|
||||
* This handler is called before/after the game processes input events and
|
||||
* updates the gui state mainly. *independent of rendering, so don't do rendering here
|
||||
* -is also the parent class of KeyBindingHandler
|
||||
*
|
||||
* @author MachineMuse
|
||||
*/
|
||||
@SubscribeEvent def onPreClientTick(event: ClientTickEvent) {
|
||||
if (event.phase == TickEvent.Phase.START) {
|
||||
import scala.collection.JavaConversions._
|
||||
for (kb <- KeybindManager.getKeybindings) {
|
||||
kb.doToggleTick()
|
||||
}
|
||||
}
|
||||
else {
|
||||
val player: EntityClientPlayerMP = Minecraft.getMinecraft.thePlayer
|
||||
if (player != null && MuseItemUtils.getModularItemsInInventory(player).size > 0) {
|
||||
val inputmap: PlayerInputMap = PlayerInputMap.getInputMapFor(player.getCommandSenderName)
|
||||
inputmap.forwardKey = Math.signum(player.movementInput.moveForward)
|
||||
inputmap.strafeKey = Math.signum(player.movementInput.moveStrafe)
|
||||
inputmap.jumpKey = player.movementInput.jump
|
||||
inputmap.sneakKey = player.movementInput.sneak
|
||||
inputmap.motionX = player.motionX
|
||||
inputmap.motionY = player.motionY
|
||||
inputmap.motionZ = player.motionZ
|
||||
if (inputmap.hasChanged) {
|
||||
inputmap.refresh()
|
||||
val inputPacket: MusePacket = new MusePacketPlayerUpdate(player, inputmap)
|
||||
PacketSender.sendToServer(inputPacket)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var modules: util.ArrayList[String] = _
|
||||
|
||||
def findInstalledModules(player: EntityPlayer) {
|
||||
if (player != null) {
|
||||
val tool = player.getCurrentEquippedItem
|
||||
if (tool != null && tool.getItem.isInstanceOf[ItemPowerFist]) {
|
||||
}
|
||||
val helmet = player.getCurrentArmor(3)
|
||||
if (helmet != null && helmet.getItem.isInstanceOf[ItemPowerArmorHelmet]) {
|
||||
if (ModuleManager.itemHasActiveModule(helmet, AutoFeederModule.MODULE_AUTO_FEEDER)) {
|
||||
modules.add(AutoFeederModule.MODULE_AUTO_FEEDER)
|
||||
}
|
||||
if (ModuleManager.itemHasActiveModule(helmet, ClockModule.MODULE_CLOCK)) {
|
||||
modules.add(ClockModule.MODULE_CLOCK)
|
||||
}
|
||||
if (ModuleManager.itemHasActiveModule(helmet, CompassModule.MODULE_COMPASS)) {
|
||||
modules.add(CompassModule.MODULE_COMPASS)
|
||||
}
|
||||
}
|
||||
val chest = player.getCurrentArmor(2)
|
||||
if (chest != null &&
|
||||
chest.getItem.isInstanceOf[ItemPowerArmorChestplate]) {
|
||||
if (ModuleManager.itemHasActiveModule(chest, WaterTankModule.MODULE_WATER_TANK)) {
|
||||
modules.add(WaterTankModule.MODULE_WATER_TANK)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var yBaseIcon: Double = _
|
||||
var yBaseString: Int = _
|
||||
if (Config.useGraphicalMeters) {
|
||||
yBaseIcon = 150.0
|
||||
yBaseString = 155
|
||||
} else {
|
||||
yBaseIcon = 26.0
|
||||
yBaseString = 32
|
||||
}
|
||||
|
||||
var food: ItemStack = new ItemStack(Items.cooked_beef)
|
||||
var clock: ItemStack = new ItemStack(Items.clock)
|
||||
var compass: ItemStack = new ItemStack(Items.compass)
|
||||
var yOffsetIcon: Double = 16.0
|
||||
var yOffsetString: Int = 18
|
||||
var ampm: String = ""
|
||||
var drawWaterMeter: Boolean = false
|
||||
|
||||
//@SideOnly(Side.CLIENT) // MPSA - is this needed or not?
|
||||
@SubscribeEvent def onRenderTickEvent(event: RenderTickEvent) {
|
||||
if (event.phase == TickEvent.Phase.END) {
|
||||
val player: EntityPlayer = Minecraft.getMinecraft.thePlayer
|
||||
modules = new util.ArrayList[String]()
|
||||
findInstalledModules(player)
|
||||
if (player != null && MuseItemUtils.modularItemsEquipped(player).size > 0 && Minecraft.getMinecraft.currentScreen == null) {
|
||||
val mc: Minecraft = Minecraft.getMinecraft
|
||||
val screen: ScaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight)
|
||||
for (i <- 0 until modules.size) {
|
||||
if (modules.get(i) == AutoFeederModule.MODULE_AUTO_FEEDER) {
|
||||
val foodLevel = MuseItemUtils.getFoodLevel(player.getCurrentArmor(3)).toInt
|
||||
val num = MuseStringUtils.formatNumberShort(foodLevel)
|
||||
if (i == 0) {
|
||||
MuseRenderer.drawString(num, 17, yBaseString)
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon, food)
|
||||
} else {
|
||||
MuseRenderer.drawString(num, 17, yBaseString + (yOffsetString * i))
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon + (yOffsetIcon * i), food)
|
||||
}
|
||||
} else if (modules.get(i) == ClockModule.MODULE_CLOCK) {
|
||||
val time = player.worldObj.provider.getWorldTime
|
||||
var hour = ((time % 24000) / 1000).toInt
|
||||
if (Config.use24hClock) {
|
||||
if (hour < 19) {
|
||||
hour += 6
|
||||
} else {
|
||||
hour -= 18
|
||||
}
|
||||
ampm = "h"
|
||||
} else {
|
||||
if (hour < 6) {
|
||||
hour += 6
|
||||
ampm = " AM"
|
||||
} else if (hour == 6) {
|
||||
hour = 12
|
||||
ampm = " PM"
|
||||
} else if (hour > 6 && hour < 18) {
|
||||
hour -= 6
|
||||
ampm = " PM"
|
||||
} else if (hour == 18) {
|
||||
hour = 12
|
||||
ampm = " AM"
|
||||
} else {
|
||||
hour -= 18
|
||||
ampm = " AM"
|
||||
}
|
||||
}
|
||||
if (i == 0) {
|
||||
MuseRenderer.drawString(hour + ampm, 17, yBaseString)
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon, clock)
|
||||
} else {
|
||||
MuseRenderer.drawString(hour + ampm, 17, yBaseString + (yOffsetString * i))
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon + (yOffsetIcon * i), clock)
|
||||
}
|
||||
} else if (modules.get(i) == CompassModule.MODULE_COMPASS) {
|
||||
if (i == 0) {
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon, compass)
|
||||
} else {
|
||||
MuseRenderer.drawItemAt(-1.0, yBaseIcon + (yOffsetIcon * i), compass)
|
||||
}
|
||||
} else if (modules.get(i) == WaterTankModule.MODULE_WATER_TANK) {
|
||||
drawWaterMeter = true
|
||||
}
|
||||
}
|
||||
drawMeters(player, screen)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected var heat: HeatMeter = null
|
||||
protected var energy: HeatMeter = null
|
||||
protected var water : WaterMeter = null
|
||||
private var lightningCounter: Int = 0
|
||||
|
||||
private def drawMeters(player: EntityPlayer, screen: ScaledResolution) {
|
||||
val currEnergy: Double = ElectricItemUtils.getPlayerEnergy(player)
|
||||
val maxEnergy: Double = ElectricItemUtils.getMaxEnergy(player)
|
||||
val currHeat: Double = MuseHeatUtils.getPlayerHeat(player)
|
||||
val maxHeat: Double = MuseHeatUtils.getMaxHeat(player)
|
||||
val currWater = AddonWaterUtils.getPlayerWater(player)
|
||||
val maxWater = AddonWaterUtils.getMaxWater(player)
|
||||
val left: Double = screen.getScaledWidth - 30
|
||||
val top: Double = screen.getScaledHeight / 2.0 - 16
|
||||
|
||||
// Heat Meter
|
||||
val currHeatStr: String = MuseStringUtils.formatNumberShort(currHeat)
|
||||
val maxHeatStr: String = MuseStringUtils.formatNumberShort(maxHeat)
|
||||
|
||||
if (Config.useGraphicalMeters) {
|
||||
if (heat == null) {
|
||||
heat = new HeatMeter
|
||||
}
|
||||
heat.draw(left + 8, top, currHeat / maxHeat)
|
||||
MuseRenderer.drawRightAlignedString(currHeatStr, left - 2, top + 20)
|
||||
}
|
||||
else {
|
||||
MuseRenderer.drawString(currHeatStr + '/' + maxHeatStr + " C", 1, 10)
|
||||
}
|
||||
|
||||
// Energy Meter
|
||||
if (maxEnergy > 0 && BlockTinkerTable.energyIcon != null) {
|
||||
val currEnergyStr: String = MuseStringUtils.formatNumberShort(currEnergy)
|
||||
val maxEnergyStr: String = MuseStringUtils.formatNumberShort(maxEnergy)
|
||||
|
||||
if (Config.useGraphicalMeters) {
|
||||
if (energy == null) {
|
||||
energy = new EnergyMeter
|
||||
}
|
||||
energy.draw(left, top, currEnergy / maxEnergy)
|
||||
MuseRenderer.drawRightAlignedString(currEnergyStr, left - 2, top + 10)
|
||||
}
|
||||
else {
|
||||
MuseRenderer.drawString(currEnergyStr + '/' + maxEnergyStr + " \u1D60", 1, 1)
|
||||
}
|
||||
}
|
||||
|
||||
// Water Meter
|
||||
if (maxWater > 0 && drawWaterMeter ) {
|
||||
val currWaterStr: String = MuseStringUtils.formatNumberShort(currWater)
|
||||
val maxWaterStr: String = MuseStringUtils.formatNumberShort(maxWater)
|
||||
|
||||
if (Config.useGraphicalMeters) {
|
||||
if (water == null) {
|
||||
water = new WaterMeter()
|
||||
}
|
||||
|
||||
val left: Double = screen.getScaledWidth - 30
|
||||
val top: Double = screen.getScaledHeight / 2.0 - 16
|
||||
|
||||
water.draw(left + 16, top, currWater / maxWater)
|
||||
|
||||
MuseRenderer.drawRightAlignedString(currWaterStr, left - 2, top + 30)
|
||||
}
|
||||
else {
|
||||
MuseRenderer.drawString(currWaterStr + '/' + maxWaterStr + " buckets", 1, 19)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
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
|
||||
|
||||
/**
|
||||
* 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]
|
||||
)
|
||||
}
|
||||
}
|
|
@ -1,93 +0,0 @@
|
|||
package net.machinemuse.powersuits.event
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent
|
||||
import cpw.mods.fml.relauncher.Side
|
||||
import net.machinemuse.api.ModuleManager
|
||||
import net.machinemuse.general.sound.SoundDictionary
|
||||
import net.machinemuse.numina.basemod.NuminaConfig
|
||||
import net.machinemuse.numina.general.MuseMathUtils
|
||||
import net.machinemuse.numina.sound.Musique
|
||||
import net.machinemuse.powersuits.common.Config
|
||||
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.
|
||||
*/
|
||||
class PlayerUpdateHandler {
|
||||
@SubscribeEvent
|
||||
def onPlayerUpdate(e: LivingUpdateEvent) = {
|
||||
e.entity match {
|
||||
case player: EntityPlayer => {
|
||||
|
||||
val modularItemsEquipped = MuseItemUtils.modularItemsEquipped(player)
|
||||
val totalWeight: Double = MuseItemUtils.getPlayerWeight(player)
|
||||
val weightCapacity: Double = Config.getWeightCapacity
|
||||
|
||||
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 ((FMLCommonHandler.instance.getEffectiveSide == Side.CLIENT) && NuminaConfig.useSounds) {
|
||||
if (player.isAirBorne && velsq2 > 0) {
|
||||
Musique.playerSound(player, SoundDictionary.SOUND_GLIDER, (velsq2 / 3).asInstanceOf[Float], 1.0f, true)
|
||||
}
|
||||
else {
|
||||
Musique.stopPlayerSound(player, SoundDictionary.SOUND_GLIDER)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,118 +0,0 @@
|
|||
package net.machinemuse.powersuits.event
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import net.machinemuse.api.ModuleManager
|
||||
import net.machinemuse.general.gui.clickable.{ClickableKeybinding, ClickableModule}
|
||||
import net.machinemuse.numina.geometry.{Colour, DrawableMuseRect}
|
||||
import net.machinemuse.numina.render.{MuseIconUtils, MuseTextureUtils}
|
||||
import net.machinemuse.powersuits.common.Config
|
||||
import net.machinemuse.powersuits.control.KeybindManager
|
||||
import net.machinemuse.powersuits.powermodule.misc.BinocularsModule
|
||||
import net.machinemuse.powersuits.powermodule.movement.{FlightControlModule, GliderModule, JetBootsModule, JetPackModule}
|
||||
import net.machinemuse.utils.MuseItemUtils
|
||||
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.ElementType
|
||||
import net.minecraftforge.client.event._
|
||||
|
||||
object RenderEventHandler {
|
||||
private[event] var ownFly: Boolean = false
|
||||
}
|
||||
|
||||
class RenderEventHandler {
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent def renderLast(event: RenderWorldLastEvent) {
|
||||
val mc: Minecraft = Minecraft.getMinecraft
|
||||
val screen: ScaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight)
|
||||
}
|
||||
|
||||
@SubscribeEvent def onTextureStitch(event: TextureStitchEvent.Post) {
|
||||
}
|
||||
|
||||
@SubscribeEvent def onPreRenderPlayer(event: RenderPlayerEvent.Pre) {
|
||||
if (!event.entityPlayer.capabilities.isFlying && !event.entityPlayer.onGround && playerHasFlightOn(event.entityPlayer)) {
|
||||
event.entityPlayer.capabilities.isFlying = true
|
||||
RenderEventHandler.ownFly = true
|
||||
}
|
||||
}
|
||||
|
||||
private def playerHasFlightOn(player: EntityPlayer): Boolean = {
|
||||
return ModuleManager.itemHasActiveModule(player.getCurrentArmor(2), JetPackModule.MODULE_JETPACK) || ModuleManager.itemHasActiveModule(player.getCurrentArmor(2), GliderModule.MODULE_GLIDER) || ModuleManager.itemHasActiveModule(player.getCurrentArmor(0), JetBootsModule.MODULE_JETBOOTS) || ModuleManager.itemHasActiveModule(player.getCurrentArmor(3), FlightControlModule.MODULE_FLIGHT_CONTROL)
|
||||
}
|
||||
|
||||
@SubscribeEvent def onPostRenderPlayer(event: RenderPlayerEvent.Post) {
|
||||
if (RenderEventHandler.ownFly) {
|
||||
RenderEventHandler.ownFly = false
|
||||
event.entityPlayer.capabilities.isFlying = false
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent def onFOVUpdate(e: FOVUpdateEvent) {
|
||||
val helmet = e.entity.getCurrentArmor(3)
|
||||
if (ModuleManager.itemHasActiveModule(helmet, "Binoculars")) {
|
||||
e.newfov = e.newfov / ModuleManager.computeModularProperty(helmet, BinocularsModule.FOV_MULTIPLIER).toFloat
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@SubscribeEvent def onPostRenderGameOverlayEvent(e: RenderGameOverlayEvent.Post) {
|
||||
e.`type` match {
|
||||
// case ElementType.ALL =>
|
||||
// case ElementType.HELMET =>
|
||||
// case ElementType.PORTAL =>
|
||||
// case ElementType.CROSSHAIRS =>
|
||||
// case ElementType.BOSSHEALTH =>
|
||||
// case ElementType.ARMOR =>
|
||||
// case ElementType.HEALTH =>
|
||||
// case ElementType.FOOD =>
|
||||
// case ElementType.AIR =>
|
||||
case ElementType.HOTBAR => drawKeybindToggles()
|
||||
// case ElementType.EXPERIENCE =>
|
||||
// case ElementType.TEXT =>
|
||||
// case ElementType.HEALTHMOUNT =>
|
||||
// case ElementType.JUMPBAR =>
|
||||
case _ =>
|
||||
}
|
||||
}
|
||||
|
||||
val frame = new DrawableMuseRect(Config.keybindHUDx, Config.keybindHUDy, Config.keybindHUDx + 16, Config.keybindHUDy + 16, true, Colour.DARKGREEN.withAlpha(0.2), Colour.GREEN.withAlpha(0.2))
|
||||
|
||||
def drawKeybindToggles(): Unit = {
|
||||
if(Config.keybindHUDon)
|
||||
for {
|
||||
mc <- Option(Minecraft.getMinecraft)
|
||||
player <- Option(mc.thePlayer)
|
||||
} {
|
||||
val screen = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight)
|
||||
frame.setLeft(Config.keybindHUDx)
|
||||
frame.setTop(Config.keybindHUDy)
|
||||
frame.setBottom(frame.top() + 16)
|
||||
import scala.collection.JavaConverters._
|
||||
for (kb: ClickableKeybinding <- KeybindManager.getKeybindings.asScala) {
|
||||
if (kb.displayOnHUD) {
|
||||
val stringwidth = MuseRenderer.getStringWidth(kb.getLabel)
|
||||
frame.setWidth(stringwidth + kb.getBoundModules.size() * 16)
|
||||
frame.draw()
|
||||
MuseRenderer.drawString(kb.getLabel, frame.left()+1, frame.top()+3, if (kb.toggleval) Colour.RED else Colour.GREEN)
|
||||
var x = frame.left() + stringwidth
|
||||
for (module: ClickableModule <- kb.getBoundModules.asScala) {
|
||||
|
||||
MuseTextureUtils.pushTexture(module.getModule.getStitchedTexture(null))
|
||||
var active = false
|
||||
for (stack <- MuseItemUtils.modularItemsEquipped(player).asScala)
|
||||
if (ModuleManager.itemHasActiveModule(stack, module.getModule.getDataName))
|
||||
active = true
|
||||
MuseIconUtils.drawIconAt(x, frame.top, module.getModule.getIcon(null), if (active) Colour.WHITE else Colour.DARKGREY.withAlpha(0.5))
|
||||
MuseTextureUtils.popTexture()
|
||||
x += 16
|
||||
}
|
||||
frame.setTop(frame.top() + 16)
|
||||
frame.setBottom(frame.top() + 16)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
package net.machinemuse.powersuits.item
|
||||
|
||||
import cpw.mods.fml.common.Optional
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import ic2.api.item.IMetalArmor
|
||||
import net.machinemuse.utils.render.MuseRenderer
|
||||
import net.minecraft.client.renderer.texture.IIconRegister
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraft.item.ItemStack
|
||||
|
||||
@Optional.InterfaceList (Array(
|
||||
new Optional.Interface (iface = "ic2.api.item.IMetalArmor", modid = "IC2", striprefs = true)
|
||||
) )
|
||||
class ItemPowerArmorBoots extends ItemPowerArmor(0, 3) with IMetalArmor{
|
||||
val iconpath = MuseRenderer.ICON_PREFIX + "armorfeet"
|
||||
|
||||
setUnlocalizedName("powerArmorBoots")
|
||||
|
||||
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) {
|
||||
itemIcon = iconRegister.registerIcon(iconpath)
|
||||
}
|
||||
|
||||
override def isMetalArmor(itemStack: ItemStack, entityPlayer: EntityPlayer): Boolean = true
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
package net.machinemuse.powersuits.item
|
||||
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import net.machinemuse.utils.render.MuseRenderer
|
||||
import net.minecraft.client.renderer.texture.IIconRegister
|
||||
|
||||
class ItemPowerArmorChestplate extends ItemPowerArmor(0, 1) {
|
||||
val iconpath = MuseRenderer.ICON_PREFIX + "armortorso"
|
||||
|
||||
setUnlocalizedName("powerArmorChestplate")
|
||||
|
||||
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) {
|
||||
itemIcon = iconRegister.registerIcon(iconpath)
|
||||
}
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
package net.machinemuse.powersuits.item
|
||||
|
||||
import cpw.mods.fml.common.Optional
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import forestry.api.core.IArmorNaturalist
|
||||
import micdoodle8.mods.galacticraft.api.item.IBreathableArmor
|
||||
import micdoodle8.mods.galacticraft.api.item.IBreathableArmor.EnumGearType
|
||||
import net.machinemuse.api.ModuleManager
|
||||
import net.machinemuse.powersuits.powermodule.armor.ApiaristArmorModule
|
||||
import net.machinemuse.powersuits.powermodule.misc.{AirtightSealModule, ThaumGogglesModule}
|
||||
import net.machinemuse.utils.render.MuseRenderer
|
||||
import net.minecraft.client.renderer.texture.IIconRegister
|
||||
import net.minecraft.entity.EntityLivingBase
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraft.item.ItemStack
|
||||
import thaumcraft.api.IGoggles
|
||||
import thaumcraft.api.nodes.IRevealer
|
||||
|
||||
@Optional.InterfaceList (Array(
|
||||
new Optional.Interface (iface = "forestry.api.core.IArmorNaturalist", modid = "Forestry", striprefs = true),
|
||||
new Optional.Interface (iface = "thaumcraft.api.IGoggles", modid = "Thaumcraft", striprefs = true),
|
||||
new Optional.Interface (iface = "thaumcraft.api.nodes.IRevealer", modid = "Thaumcraft", striprefs = true),
|
||||
new Optional.Interface (iface = "micdoodle8.mods.galacticraft.api.item.IBreathableArmor", modid = "GalacticraftCore", striprefs = true)
|
||||
))
|
||||
class ItemPowerArmorHelmet extends ItemPowerArmor(0, 0)
|
||||
with IArmorNaturalist
|
||||
with IBreathableArmor
|
||||
with IGoggles
|
||||
with IRevealer {
|
||||
val iconpath = MuseRenderer.ICON_PREFIX + "armorhead"
|
||||
|
||||
setUnlocalizedName("powerArmorHelmet")
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
override def registerIcons(iconRegister: IIconRegister) {
|
||||
itemIcon = iconRegister.registerIcon(iconpath)
|
||||
}
|
||||
|
||||
override def showIngamePopups(itemstack: ItemStack, player: EntityLivingBase): Boolean =
|
||||
ModuleManager.itemHasActiveModule(itemstack, ThaumGogglesModule.MODULE_THAUM_GOGGLES)
|
||||
|
||||
override def showNodes(itemstack: ItemStack, player: EntityLivingBase): Boolean =
|
||||
ModuleManager.itemHasActiveModule(itemstack, ThaumGogglesModule.MODULE_THAUM_GOGGLES)
|
||||
|
||||
@Optional.Method(modid = "Forestry")
|
||||
override def canSeePollination(player: EntityPlayer, helm: ItemStack, doSee: Boolean): Boolean = {
|
||||
ModuleManager.itemHasActiveModule(helm, ApiaristArmorModule.MODULE_APIARIST_ARMOR)
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "GalacticraftCore")
|
||||
override def handleGearType(geartype: EnumGearType): Boolean = {
|
||||
geartype == EnumGearType.HELMET
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "GalacticraftCore")
|
||||
override def canBreathe(helm: ItemStack, player: EntityPlayer, geartype: EnumGearType): Boolean =
|
||||
ModuleManager.itemHasActiveModule(helm, AirtightSealModule.AIRTIGHT_SEAL_MODULE)
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
package net.machinemuse.powersuits.item
|
||||
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import net.machinemuse.utils.render.MuseRenderer
|
||||
import net.minecraft.client.renderer.texture.IIconRegister
|
||||
|
||||
class ItemPowerArmorLeggings extends ItemPowerArmor(0, 2) {
|
||||
val iconpath = MuseRenderer.ICON_PREFIX + "armorlegs"
|
||||
|
||||
setUnlocalizedName("powerArmorLeggings")
|
||||
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
override def registerIcons(iconRegister: IIconRegister) {
|
||||
itemIcon = iconRegister.registerIcon(iconpath)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,430 @@
|
|||
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 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;
|
||||
|
||||
/**
|
||||
* Describes the modular power tool.
|
||||
*
|
||||
* @author MachineMuse
|
||||
*
|
||||
* Ported to Java by lehjr on 10/26/16.
|
||||
*/
|
||||
|
||||
@Optional.InterfaceList({
|
||||
@Optional.Interface(iface = "mekanism.api.IMekWrench", modid = "Mekanism", striprefs = true),
|
||||
@Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIO", striprefs = true),
|
||||
@Optional.Interface(iface = "mrtjp.projectred.api.IScrewdriver", modid = "ProjRed|Core", striprefs = true),
|
||||
@Optional.Interface(iface = "com.bluepowermod.api.misc.IScrewdriver", modid = "bluepower", striprefs = true),
|
||||
@Optional.Interface(iface = "forestry.api.arboriculture.IToolGrafter", modid = "Forestry", striprefs = true),
|
||||
@Optional.Interface(iface = "mods.railcraft.api.core.items.IToolCrowbar", modid = "Railcraft", striprefs = true),
|
||||
@Optional.Interface(iface = "powercrystals.minefactoryreloaded.api.IMFRHammer", modid = "MineFactoryReloaded", striprefs = true),
|
||||
@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
|
||||
{
|
||||
private final String iconpath = MuseIcon.ICON_PREFIX + "handitem";
|
||||
public ItemPowerFist() {
|
||||
super(0.0f, Item.ToolMaterial.EMERALD);
|
||||
// ModeChangingItem$class.$init$(this);
|
||||
// ModeChangingModularItem$class.$init$(this);
|
||||
this.setMaxStackSize(1);
|
||||
this.setMaxDamage(0);
|
||||
this.setCreativeTab(Config.getCreativeTab());
|
||||
this.setUnlocalizedName("powerFist");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the strength of the stack against a given block. 1.0F base,
|
||||
* (Quality+1)*2 if correct blocktype, 1.5F if sword
|
||||
*/
|
||||
public float getStrVsBlock( ItemStack stack, Block block) {
|
||||
return this.getStrVsBlock(stack, block, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* FORGE: Overridden to allow custom tool effectiveness
|
||||
*/
|
||||
public float getStrVsBlock(ItemStack stack, Block block, int meta) {
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IIconRegister iconRegister) {
|
||||
this.itemIcon = iconRegister.registerIcon(this.iconpath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Current implementations of this method in child classes do not use the
|
||||
* entry argument beside stack. They just raise the damage on the stack.
|
||||
*/
|
||||
@Override
|
||||
public boolean hitEntity(ItemStack stack, EntityLivingBase entityBeingHit, EntityLivingBase entityDoingHitting) {
|
||||
if (ModuleManager.itemHasActiveModule(stack, OmniWrenchModule.MODULE_OMNI_WRENCH)) {
|
||||
entityBeingHit.rotationYaw += 90.0f;
|
||||
entityBeingHit.rotationYaw %= 360.0f;
|
||||
}
|
||||
if (entityDoingHitting instanceof EntityPlayer && ModuleManager.itemHasActiveModule(stack, MeleeAssistModule.MODULE_MELEE_ASSIST)) {
|
||||
EntityPlayer player = (EntityPlayer)entityDoingHitting;
|
||||
double drain = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_ENERGY);
|
||||
if (ElectricItemUtils.getPlayerEnergy(player) > drain) {
|
||||
ElectricItemUtils.drainPlayerEnergy(player, drain);
|
||||
double damage = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_DAMAGE);
|
||||
double knockback = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_KNOCKBACK);
|
||||
DamageSource damageSource = DamageSource.causePlayerDamage(player);
|
||||
if (entityBeingHit.attackEntityFrom(damageSource, (float)(int)damage)) {
|
||||
Vec3 lookVec = player.getLookVec();
|
||||
entityBeingHit.addVelocity(lookVec.xCoord * knockback, Math.abs(lookVec.yCoord + 0.2f) * knockback, lookVec.zCoord * knockback);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a block is destroyed using this tool.
|
||||
* <p/>
|
||||
* Returns: Whether to increment player use stats with this item
|
||||
*/
|
||||
@Override
|
||||
public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
|
||||
if (entity instanceof EntityPlayer) {
|
||||
for (IBlockBreakingModule module : ModuleManager.getBlockBreakingModules()) {
|
||||
if (ModuleManager.itemHasActiveModule(stack, module.getDataName())) {
|
||||
if (module.onBlockDestroyed(stack, world, block, x, y, z, (EntityPlayer) entity)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* An itemstack sensitive version of getDamageVsEntity - allows items to
|
||||
* handle damage based on
|
||||
* itemstack data, like tags. Falls back to getDamageVsEntity.
|
||||
*
|
||||
* @param par1Entity The entity being attacked (or the attacking mob, if it's a mob
|
||||
* - vanilla bug?)
|
||||
* @param itemStack The itemstack
|
||||
* @return the damage
|
||||
*/
|
||||
public float getDamageVsEntity(Entity par1Entity, ItemStack itemStack) {
|
||||
return (float)ModuleManager.computeModularProperty(itemStack, MeleeAssistModule.PUNCH_DAMAGE);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isFull3D() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the enchantability factor of the item. In this case, 0. Might add
|
||||
* an enchantability module later :P
|
||||
*/
|
||||
public int getItemEnchantability() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the name for this tool's material.
|
||||
*/
|
||||
@Override
|
||||
public String getToolMaterialName() {
|
||||
return this.toolMaterial.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether this item is repairable in an anvil.
|
||||
*/
|
||||
@Override
|
||||
public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* How long it takes to use or consume an item
|
||||
*/
|
||||
@Override
|
||||
public int getMaxItemUseDuration(ItemStack par1ItemStack) {
|
||||
return 72000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the right click button is pressed
|
||||
*/
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
|
||||
for (IRightClickModule module : ModuleManager.getRightClickModules()) {
|
||||
if (module.isValidForItem(itemStack) && ModuleManager.itemHasActiveModule(itemStack, module.getDataName())) {
|
||||
module.onRightClick(player, world, itemStack);
|
||||
}
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the action that specifies what animation to play when the items
|
||||
* is being used
|
||||
*/
|
||||
@Override
|
||||
public EnumAction getItemUseAction(ItemStack stack) {
|
||||
return EnumAction.bow;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the right click button is released
|
||||
*/
|
||||
@Override
|
||||
public void onPlayerStoppedUsing(ItemStack itemStack, World world, EntityPlayer player, int par4) {
|
||||
String mode = this.getActiveMode(itemStack, player);
|
||||
IPowerModule module = ModuleManager.getModule(mode);
|
||||
if (module != null)
|
||||
((IRightClickModule)module).onPlayerStoppedUsing(itemStack, world, player, par4);
|
||||
}
|
||||
|
||||
public boolean shouldPassSneakingClickToBlock(World world, int x, int y, int z) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUseFirst( ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
|
||||
String mode = this.getActiveMode(itemStack, player);
|
||||
IPowerModule module = ModuleManager.getModule(mode);
|
||||
return module instanceof IRightClickModule && ((IRightClickModule)module).onItemUseFirst(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse( ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
|
||||
String mode = this.getActiveMode(itemStack, player);
|
||||
IPowerModule module2;
|
||||
IPowerModule module = module2 = ModuleManager.getModule(mode);
|
||||
boolean b;
|
||||
if (module2 instanceof IRightClickModule) {
|
||||
((IRightClickModule)module2).onItemUse(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ);
|
||||
b = false;
|
||||
}
|
||||
else {
|
||||
b = false;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "Forestry")
|
||||
public float getSaplingModifier(ItemStack stack, World world, EntityPlayer player, int x, int y, int z) {
|
||||
float n;
|
||||
if (ModuleManager.itemHasActiveModule(stack, GrafterModule.MODULE_GRAFTER)) {
|
||||
ElectricItemUtils.drainPlayerEnergy(player, ModuleManager.computeModularProperty(stack, GrafterModule.GRAFTER_ENERGY_CONSUMPTION));
|
||||
MuseHeatUtils.heatPlayer(player, ModuleManager.computeModularProperty(stack, GrafterModule.GRAFTER_HEAT_GENERATION));
|
||||
n = 100.0f;
|
||||
}
|
||||
else {
|
||||
n = 0.0f;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
public boolean canHarvestBlock(ItemStack stack, Block block, int meta, EntityPlayer player) {
|
||||
Object o = new Object();
|
||||
if (block.getMaterial().isToolNotRequired())
|
||||
return true;
|
||||
|
||||
for (IBlockBreakingModule module : ModuleManager.getBlockBreakingModules()) {
|
||||
if (ModuleManager.itemHasActiveModule(stack, module.getDataName()) && module.canHarvestBlock(stack, block, meta, player)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* TE Crescent Hammer */
|
||||
@Override
|
||||
public boolean isUsable(ItemStack itemStack, EntityLivingBase entityLivingBase, int i, int i1, int i2) {
|
||||
return entityLivingBase instanceof EntityPlayer && this.getActiveMode(itemStack, (EntityPlayer)entityLivingBase).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* TE Crescent Hammer */
|
||||
@Override
|
||||
public void toolUsed(ItemStack itemStack, EntityLivingBase entityLivingBase, int i, int i1, int i2) {
|
||||
}
|
||||
|
||||
/* Railcraft Crowbar */
|
||||
@Override
|
||||
public boolean canWhack(EntityPlayer player, ItemStack itemStack, int i, int i1, int i2) {
|
||||
return this.getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* Railcraft Crowbar */
|
||||
@Override
|
||||
public boolean canLink(EntityPlayer player, ItemStack itemStack, EntityMinecart entityMinecart) {
|
||||
return this.getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* Railcraft Crowbar */
|
||||
@Override
|
||||
public boolean canBoost(EntityPlayer player, ItemStack itemStack, EntityMinecart entityMinecart) {
|
||||
return this.getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* Railcraft Crowbar */
|
||||
@Override
|
||||
public void onLink(EntityPlayer player, ItemStack itemStack, EntityMinecart entityMinecart) {
|
||||
}
|
||||
|
||||
/* Railcraft Crowbar */
|
||||
@Override
|
||||
public void onWhack(EntityPlayer player, ItemStack itemStack, int i, int i1, int i2) {
|
||||
}
|
||||
|
||||
/* Railcraft Crowbar */
|
||||
@Override
|
||||
public void onBoost(EntityPlayer player, ItemStack itemStack, EntityMinecart entityMinecart) {
|
||||
}
|
||||
|
||||
/* AE wrench */
|
||||
@Override
|
||||
public boolean canWrench(ItemStack itemStack, EntityPlayer player, int i, int i1, int i2) {
|
||||
return this.getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* Buildcraft Wrench */
|
||||
@Override
|
||||
public void wrenchUsed(EntityPlayer player, int i, int i1, int i2) {
|
||||
}
|
||||
|
||||
/* Buildcraft Wrench */
|
||||
@Override
|
||||
public boolean canWrench(EntityPlayer player, int i, int i1, int i2) {
|
||||
return this.getActiveMode(player.getHeldItem(), player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* Bluepower Screwdriver */
|
||||
@Override
|
||||
public boolean damage(ItemStack itemStack, int i, EntityPlayer entityPlayer, boolean b) {
|
||||
return this.getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* ProjectRed Screwdriver */
|
||||
@Override
|
||||
public void damageScrewdriver(EntityPlayer entityPlayer, ItemStack itemStack) {
|
||||
}
|
||||
|
||||
/* ProjectRed Screwdriver */
|
||||
@Override
|
||||
public boolean canUse(EntityPlayer entityPlayer, ItemStack itemStack) {
|
||||
return this.getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* EnderIO Tool */
|
||||
@Override
|
||||
public void used(ItemStack itemStack, EntityPlayer entityPlayer, int i, int i1, int i2) {
|
||||
}
|
||||
|
||||
/* EnderIO Tool */
|
||||
@Override
|
||||
public boolean canUse(ItemStack itemStack, EntityPlayer entityPlayer, int i, int i1, int i2) {
|
||||
return this.getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* EnderIO Tool */
|
||||
@Override
|
||||
public boolean shouldHideFacades(ItemStack itemStack, EntityPlayer entityPlayer) {
|
||||
return this.getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH);
|
||||
}
|
||||
|
||||
/* Mekanism Wrench */
|
||||
@Override
|
||||
public boolean canUseWrench(EntityPlayer entityPlayer, int i, int i1, int i2) {
|
||||
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<IIcon> getModeIcon(String mode, ItemStack stack, EntityPlayer player) {
|
||||
return (Option<IIcon>)ModeChangingModularItem$class.getModeIcon(this, mode, stack, player);
|
||||
}
|
||||
|
||||
public Seq<String> getValidModes(ItemStack stack, EntityPlayer player) {
|
||||
return (Seq<String>)ModeChangingModularItem$class.getValidModes(this, stack, player);
|
||||
}
|
||||
|
||||
public Seq<String> getValidModes(ItemStack stack) {
|
||||
return (Seq<String>)ModeChangingModularItem$class.getValidModes(this, stack);
|
||||
}
|
||||
|
||||
public String getActiveMode(ItemStack stack) {
|
||||
return ModeChangingModularItem$class.getActiveMode(this, stack);
|
||||
}
|
||||
|
||||
public void setActiveMode(ItemStack stack, String newMode) {
|
||||
ModeChangingItem$class.setActiveMode(this, stack, newMode);
|
||||
}
|
||||
|
||||
public String getActiveMode(ItemStack stack, EntityPlayer player) {
|
||||
return ModeChangingItem$class.getActiveMode(this, stack, player);
|
||||
}
|
||||
|
||||
public void cycleMode(ItemStack stack, EntityPlayer player, int dMode) {
|
||||
ModeChangingItem$class.cycleMode(this, stack, player, dMode);
|
||||
}
|
||||
|
||||
public String nextMode(ItemStack stack, EntityPlayer player) {
|
||||
return ModeChangingItem$class.nextMode(this, stack, player);
|
||||
}
|
||||
|
||||
public String prevMode(ItemStack stack, EntityPlayer player) {
|
||||
return ModeChangingItem$class.prevMode(this, stack, player);
|
||||
}
|
||||
}
|
|
@ -1,325 +1,325 @@
|
|||
package net.machinemuse.powersuits.item
|
||||
|
||||
import appeng.api.implementations.items.IAEWrench
|
||||
import buildcraft.api.tools.IToolWrench
|
||||
import cofh.api.item.IToolHammer
|
||||
import cpw.mods.fml.common.Optional
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import crazypants.enderio.api.tool.ITool
|
||||
import forestry.api.arboriculture.IToolGrafter
|
||||
import mekanism.api.IMekWrench
|
||||
import mods.railcraft.api.core.items.IToolCrowbar
|
||||
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.{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.IIconRegister
|
||||
import net.minecraft.entity.item.EntityMinecart
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
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 powercrystals.minefactoryreloaded.api.IMFRHammer
|
||||
|
||||
/**
|
||||
* Describes the modular power tool.
|
||||
*
|
||||
* @author MachineMuse
|
||||
*/
|
||||
@Optional.InterfaceList(Array(
|
||||
new Optional.Interface(iface = "mekanism.api.IMekWrench", modid = "Mekanism", striprefs = true),
|
||||
new Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIO", striprefs = true),
|
||||
new Optional.Interface(iface = "mrtjp.projectred.api.IScrewdriver", modid = "ProjRed|Core", striprefs = true),
|
||||
new Optional.Interface(iface = "com.bluepowermod.api.misc.IScrewdriver", modid = "bluepower", striprefs = true),
|
||||
new Optional.Interface(iface = "forestry.api.arboriculture.IToolGrafter", modid = "Forestry", striprefs = true),
|
||||
new Optional.Interface(iface = "mods.railcraft.api.core.items.IToolCrowbar", modid = "Railcraft", striprefs = true),
|
||||
new Optional.Interface(iface = "powercrystals.minefactoryreloaded.api.IMFRHammer", modid = "MineFactoryReloaded", striprefs = true),
|
||||
new Optional.Interface(iface = "cofh.api.item.IToolHammer", modid = "CoFHCore", striprefs = true),
|
||||
new Optional.Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraft|Core", striprefs = true),
|
||||
new Optional.Interface(iface = "appeng.api.implementations.items.IAEWrench", modid = "appliedenergistics2", striprefs = true)
|
||||
))
|
||||
class ItemPowerFist extends ItemElectricTool(0, ToolMaterial.EMERALD)
|
||||
with IModularItem
|
||||
with IToolGrafter
|
||||
with IToolHammer
|
||||
with IMFRHammer
|
||||
with IToolCrowbar
|
||||
with IAEWrench
|
||||
with IToolWrench
|
||||
with com.bluepowermod.api.misc.IScrewdriver
|
||||
with mrtjp.projectred.api.IScrewdriver
|
||||
with ITool
|
||||
with IMekWrench
|
||||
with ModeChangingModularItem {
|
||||
val iconpath: String = MuseIcon.ICON_PREFIX + "handitem"
|
||||
setMaxStackSize(1)
|
||||
setMaxDamage(0)
|
||||
setCreativeTab(Config.getCreativeTab)
|
||||
setUnlocalizedName("powerFist")
|
||||
|
||||
|
||||
/**
|
||||
* Returns the strength of the stack against a given block. 1.0F base,
|
||||
* (Quality+1)*2 if correct blocktype, 1.5F if sword
|
||||
*/
|
||||
def getStrVsBlock(stack: ItemStack, block: Block): Float = getStrVsBlock(stack, block, 0)
|
||||
|
||||
/**
|
||||
* FORGE: Overridden to allow custom tool effectiveness
|
||||
*/
|
||||
def getStrVsBlock(stack: ItemStack, block: Block, meta: Int): Float = 1
|
||||
|
||||
@SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) {
|
||||
itemIcon = iconRegister.registerIcon(iconpath)
|
||||
}
|
||||
|
||||
/**
|
||||
* Current implementations of this method in child classes do not use the
|
||||
* entry argument beside stack. They just raise the damage on the stack.
|
||||
*/
|
||||
override def hitEntity(stack: ItemStack, entityBeingHit: EntityLivingBase, entityDoingHitting: EntityLivingBase): Boolean = {
|
||||
if (ModuleManager.itemHasActiveModule(stack, OmniWrenchModule.MODULE_OMNI_WRENCH)) {
|
||||
entityBeingHit.rotationYaw += 90.0F;
|
||||
entityBeingHit.rotationYaw %= 360.0F;
|
||||
}
|
||||
if (entityDoingHitting.isInstanceOf[EntityPlayer] && ModuleManager.itemHasActiveModule(stack, MeleeAssistModule.MODULE_MELEE_ASSIST)) {
|
||||
val player: EntityPlayer = entityDoingHitting.asInstanceOf[EntityPlayer]
|
||||
val drain: Double = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_ENERGY)
|
||||
if (ElectricItemUtils.getPlayerEnergy(player) > drain) {
|
||||
ElectricItemUtils.drainPlayerEnergy(player, drain)
|
||||
val damage: Double = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_DAMAGE)
|
||||
val knockback: Double = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_KNOCKBACK)
|
||||
val damageSource: DamageSource = DamageSource.causePlayerDamage(player)
|
||||
if (entityBeingHit.attackEntityFrom(damageSource, damage.asInstanceOf[Int])) {
|
||||
val lookVec: Vec3 = player.getLookVec
|
||||
entityBeingHit.addVelocity(lookVec.xCoord * knockback, Math.abs(lookVec.yCoord + 0.2f) * knockback, lookVec.zCoord * knockback)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a block is destroyed using this tool.
|
||||
* <p/>
|
||||
* Returns: Whether to increment player use stats with this item
|
||||
*/
|
||||
override def onBlockDestroyed(stack: ItemStack, world: World, block: Block, x: Int, y: Int, z: Int, entity: EntityLivingBase): Boolean = {
|
||||
entity match {
|
||||
case player: EntityPlayer =>
|
||||
import scala.collection.JavaConversions._
|
||||
for (module <- ModuleManager.getBlockBreakingModules) {
|
||||
if (ModuleManager.itemHasActiveModule(stack, module.getDataName)) {
|
||||
if (module.onBlockDestroyed(stack, world, block, x, y, z, player)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
case _ =>
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
/**
|
||||
* An itemstack sensitive version of getDamageVsEntity - allows items to
|
||||
* handle damage based on
|
||||
* itemstack data, like tags. Falls back to getDamageVsEntity.
|
||||
*
|
||||
* @param par1Entity The entity being attacked (or the attacking mob, if it's a mob
|
||||
* - vanilla bug?)
|
||||
* @param itemStack The itemstack
|
||||
* @return the damage
|
||||
*/
|
||||
def getDamageVsEntity(par1Entity: Entity, itemStack: ItemStack): Float = {
|
||||
ModuleManager.computeModularProperty(itemStack, MeleeAssistModule.PUNCH_DAMAGE).toFloat
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT) override def isFull3D: Boolean = {
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the enchantability factor of the item. In this case, 0. Might add
|
||||
* an enchantability module later :P
|
||||
*/
|
||||
override def getItemEnchantability = 0
|
||||
|
||||
/**
|
||||
* Return the name for this tool's material.
|
||||
*/
|
||||
override def getToolMaterialName = this.toolMaterial.toString
|
||||
|
||||
|
||||
/**
|
||||
* Return whether this item is repairable in an anvil.
|
||||
*/
|
||||
override def getIsRepairable(par1ItemStack: ItemStack, par2ItemStack: ItemStack) = false
|
||||
|
||||
/**
|
||||
* How long it takes to use or consume an item
|
||||
*/
|
||||
override def getMaxItemUseDuration(par1ItemStack: ItemStack): Int = 72000
|
||||
|
||||
|
||||
/**
|
||||
* Called when the right click button is pressed
|
||||
*/
|
||||
override def onItemRightClick(itemStack: ItemStack, world: World, player: EntityPlayer): ItemStack = {
|
||||
import scala.collection.JavaConversions._
|
||||
for (module <- ModuleManager.getRightClickModules) {
|
||||
if (module.isValidForItem(itemStack) && ModuleManager.itemHasActiveModule(itemStack, module.getDataName)) {
|
||||
module.onRightClick(player, world, itemStack)
|
||||
}
|
||||
}
|
||||
return itemStack
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the action that specifies what animation to play when the items
|
||||
* is being used
|
||||
*/
|
||||
override def getItemUseAction(stack: ItemStack): EnumAction = {
|
||||
return EnumAction.bow
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the right click button is released
|
||||
*/
|
||||
override def onPlayerStoppedUsing(itemStack: ItemStack, world: World, player: EntityPlayer, par4: Int) {
|
||||
val mode: String = getActiveMode(itemStack, player)
|
||||
val module: IPowerModule = ModuleManager.getModule(mode)
|
||||
OptionCast[IRightClickModule](module) foreach {
|
||||
m => m.onPlayerStoppedUsing(itemStack, world, player, par4)
|
||||
}
|
||||
}
|
||||
|
||||
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 _ => false
|
||||
}
|
||||
}
|
||||
|
||||
override def onItemUse(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.onItemUse(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ); false
|
||||
case _ => false
|
||||
}
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "Forestry")
|
||||
def getSaplingModifier(stack: ItemStack, world: World, player: EntityPlayer, x: Int, y: Int, z: Int): Float = {
|
||||
if (ModuleManager.itemHasActiveModule(stack, GrafterModule.MODULE_GRAFTER)) {
|
||||
ElectricItemUtils.drainPlayerEnergy(player, ModuleManager.computeModularProperty(stack, GrafterModule.GRAFTER_ENERGY_CONSUMPTION))
|
||||
MuseHeatUtils.heatPlayer(player, ModuleManager.computeModularProperty(stack, GrafterModule.GRAFTER_HEAT_GENERATION))
|
||||
100F
|
||||
} else {
|
||||
0F
|
||||
}
|
||||
}
|
||||
|
||||
def canHarvestBlock(stack: ItemStack, block: Block, meta: Int, player: EntityPlayer): Boolean = {
|
||||
if (block.getMaterial.isToolNotRequired) {
|
||||
return true
|
||||
}
|
||||
import scala.collection.JavaConversions._
|
||||
for (module <- ModuleManager.getBlockBreakingModules) {
|
||||
if (ModuleManager.itemHasActiveModule(stack, module.getDataName) && module.canHarvestBlock(stack, block, meta, player)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// TE Crescent Hammer
|
||||
override def isUsable(itemStack: ItemStack, entityLivingBase: EntityLivingBase, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
entityLivingBase match {
|
||||
case player: EntityPlayer => getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
case _ => false
|
||||
}
|
||||
}
|
||||
|
||||
// TE Crescent Hammer
|
||||
override def toolUsed(itemStack: ItemStack, entityLivingBase: EntityLivingBase, i: Int, i1: Int, i2: Int): Unit = {}
|
||||
|
||||
// Railcraft Crowbar
|
||||
override def canWhack(player: EntityPlayer, itemStack: ItemStack, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// Railcraft Crowbar
|
||||
override def canLink(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Boolean = {
|
||||
getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// Railcraft Crowbar
|
||||
override def canBoost(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Boolean = {
|
||||
getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// Railcraft Crowbar
|
||||
override def onLink(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Unit = {}
|
||||
|
||||
// Railcraft Crowbar
|
||||
override def onWhack(player: EntityPlayer, itemStack: ItemStack, i: Int, i1: Int, i2: Int): Unit = {}
|
||||
|
||||
// Railcraft Crowbar
|
||||
override def onBoost(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Unit = {}
|
||||
|
||||
// AE wrench
|
||||
override def canWrench(itemStack: ItemStack, player: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// Buildcraft Wrench
|
||||
override def wrenchUsed(player: EntityPlayer, i: Int, i1: Int, i2: Int): Unit = { }
|
||||
|
||||
// Buildcraft Wrench
|
||||
override def canWrench(player: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
getActiveMode(player.getHeldItem, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// Bluepower Screwdriver
|
||||
override def damage(itemStack: ItemStack, i: Int, entityPlayer: EntityPlayer, b: Boolean): Boolean = {
|
||||
getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// ProjectRed Screwdriver
|
||||
override def damageScrewdriver(entityPlayer: EntityPlayer, itemStack: ItemStack): Unit = {}
|
||||
|
||||
// ProjectRed Screwdriver
|
||||
override def canUse(entityPlayer: EntityPlayer, itemStack: ItemStack): Boolean = {
|
||||
getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// EnderIO Tool
|
||||
override def used(itemStack: ItemStack, entityPlayer: EntityPlayer, i: Int, i1: Int, i2: Int): Unit = {}
|
||||
|
||||
// EnderIO Tool
|
||||
override def canUse(itemStack: ItemStack, entityPlayer: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// EnderIO Tool
|
||||
override def shouldHideFacades(itemStack: ItemStack, entityPlayer: EntityPlayer): Boolean = {
|
||||
getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
|
||||
// Mekanism Wrench
|
||||
override def canUseWrench(entityPlayer: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
getActiveMode(entityPlayer.getHeldItem, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
}
|
||||
}
|
||||
//package net.machinemuse.powersuits.item
|
||||
//
|
||||
//import appeng.api.implementations.items.IAEWrench
|
||||
//import buildcraft.api.tools.IToolWrench
|
||||
//import cofh.api.item.IToolHammer
|
||||
//import cpw.mods.fml.common.Optional
|
||||
//import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
//import crazypants.enderio.api.tool.ITool
|
||||
//import forestry.api.arboriculture.IToolGrafter
|
||||
//import mekanism.api.IMekWrench
|
||||
//import mods.railcraft.api.core.items.IToolCrowbar
|
||||
//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.{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.IIconRegister
|
||||
//import net.minecraft.entity.item.EntityMinecart
|
||||
//import net.minecraft.entity.player.EntityPlayer
|
||||
//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 powercrystals.minefactoryreloaded.api.IMFRHammer
|
||||
//
|
||||
///**
|
||||
// * Describes the modular power tool.
|
||||
// *
|
||||
// * @author MachineMuse
|
||||
// */
|
||||
//@Optional.InterfaceList(Array(
|
||||
// new Optional.Interface(iface = "mekanism.api.IMekWrench", modid = "Mekanism", striprefs = true),
|
||||
// new Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIO", striprefs = true),
|
||||
// new Optional.Interface(iface = "mrtjp.projectred.api.IScrewdriver", modid = "ProjRed|Core", striprefs = true),
|
||||
// new Optional.Interface(iface = "com.bluepowermod.api.misc.IScrewdriver", modid = "bluepower", striprefs = true),
|
||||
// new Optional.Interface(iface = "forestry.api.arboriculture.IToolGrafter", modid = "Forestry", striprefs = true),
|
||||
// new Optional.Interface(iface = "mods.railcraft.api.core.items.IToolCrowbar", modid = "Railcraft", striprefs = true),
|
||||
// new Optional.Interface(iface = "powercrystals.minefactoryreloaded.api.IMFRHammer", modid = "MineFactoryReloaded", striprefs = true),
|
||||
// new Optional.Interface(iface = "cofh.api.item.IToolHammer", modid = "CoFHCore", striprefs = true),
|
||||
// new Optional.Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraft|Core", striprefs = true),
|
||||
// new Optional.Interface(iface = "appeng.api.implementations.items.IAEWrench", modid = "appliedenergistics2", striprefs = true)
|
||||
//))
|
||||
//class ItemPowerFist extends ItemElectricTool(0, ToolMaterial.EMERALD)
|
||||
//with IModularItem
|
||||
//with IToolGrafter
|
||||
//with IToolHammer
|
||||
//with IMFRHammer
|
||||
//with IToolCrowbar
|
||||
//with IAEWrench
|
||||
//with IToolWrench
|
||||
//with com.bluepowermod.api.misc.IScrewdriver
|
||||
//with mrtjp.projectred.api.IScrewdriver
|
||||
//with ITool
|
||||
//with IMekWrench
|
||||
//with ModeChangingModularItem {
|
||||
// val iconpath: String = MuseIcon.ICON_PREFIX + "handitem"
|
||||
// setMaxStackSize(1)
|
||||
// setMaxDamage(0)
|
||||
// setCreativeTab(Config.getCreativeTab)
|
||||
// setUnlocalizedName("powerFist")
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Returns the strength of the stack against a given block. 1.0F base,
|
||||
// * (Quality+1)*2 if correct blocktype, 1.5F if sword
|
||||
// */
|
||||
// def getStrVsBlock(stack: ItemStack, block: Block): Float = getStrVsBlock(stack, block, 0)
|
||||
//
|
||||
// /**
|
||||
// * FORGE: Overridden to allow custom tool effectiveness
|
||||
// */
|
||||
// def getStrVsBlock(stack: ItemStack, block: Block, meta: Int): Float = 1
|
||||
//
|
||||
// @SideOnly(Side.CLIENT) override def registerIcons(iconRegister: IIconRegister) {
|
||||
// itemIcon = iconRegister.registerIcon(iconpath)
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Current implementations of this method in child classes do not use the
|
||||
// * entry argument beside stack. They just raise the damage on the stack.
|
||||
// */
|
||||
// override def hitEntity(stack: ItemStack, entityBeingHit: EntityLivingBase, entityDoingHitting: EntityLivingBase): Boolean = {
|
||||
// if (ModuleManager.itemHasActiveModule(stack, OmniWrenchModule.MODULE_OMNI_WRENCH)) {
|
||||
// entityBeingHit.rotationYaw += 90.0F;
|
||||
// entityBeingHit.rotationYaw %= 360.0F;
|
||||
// }
|
||||
// if (entityDoingHitting.isInstanceOf[EntityPlayer] && ModuleManager.itemHasActiveModule(stack, MeleeAssistModule.MODULE_MELEE_ASSIST)) {
|
||||
// val player: EntityPlayer = entityDoingHitting.asInstanceOf[EntityPlayer]
|
||||
// val drain: Double = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_ENERGY)
|
||||
// if (ElectricItemUtils.getPlayerEnergy(player) > drain) {
|
||||
// ElectricItemUtils.drainPlayerEnergy(player, drain)
|
||||
// val damage: Double = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_DAMAGE)
|
||||
// val knockback: Double = ModuleManager.computeModularProperty(stack, MeleeAssistModule.PUNCH_KNOCKBACK)
|
||||
// val damageSource: DamageSource = DamageSource.causePlayerDamage(player)
|
||||
// if (entityBeingHit.attackEntityFrom(damageSource, damage.asInstanceOf[Int])) {
|
||||
// val lookVec: Vec3 = player.getLookVec
|
||||
// entityBeingHit.addVelocity(lookVec.xCoord * knockback, Math.abs(lookVec.yCoord + 0.2f) * knockback, lookVec.zCoord * knockback)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return true
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Called when a block is destroyed using this tool.
|
||||
// * <p/>
|
||||
// * Returns: Whether to increment player use stats with this item
|
||||
// */
|
||||
// override def onBlockDestroyed(stack: ItemStack, world: World, block: Block, x: Int, y: Int, z: Int, entity: EntityLivingBase): Boolean = {
|
||||
// entity match {
|
||||
// case player: EntityPlayer =>
|
||||
// import scala.collection.JavaConversions._
|
||||
// for (module <- ModuleManager.getBlockBreakingModules) {
|
||||
// if (ModuleManager.itemHasActiveModule(stack, module.getDataName)) {
|
||||
// if (module.onBlockDestroyed(stack, world, block, x, y, z, player)) {
|
||||
// return true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// case _ =>
|
||||
// }
|
||||
// true
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * An itemstack sensitive version of getDamageVsEntity - allows items to
|
||||
// * handle damage based on
|
||||
// * itemstack data, like tags. Falls back to getDamageVsEntity.
|
||||
// *
|
||||
// * @param par1Entity The entity being attacked (or the attacking mob, if it's a mob
|
||||
// * - vanilla bug?)
|
||||
// * @param itemStack The itemstack
|
||||
// * @return the damage
|
||||
// */
|
||||
// def getDamageVsEntity(par1Entity: Entity, itemStack: ItemStack): Float = {
|
||||
// ModuleManager.computeModularProperty(itemStack, MeleeAssistModule.PUNCH_DAMAGE).toFloat
|
||||
// }
|
||||
//
|
||||
// @SideOnly(Side.CLIENT) override def isFull3D: Boolean = {
|
||||
// return true
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Return the enchantability factor of the item. In this case, 0. Might add
|
||||
// * an enchantability module later :P
|
||||
// */
|
||||
// override def getItemEnchantability = 0
|
||||
//
|
||||
// /**
|
||||
// * Return the name for this tool's material.
|
||||
// */
|
||||
// override def getToolMaterialName = this.toolMaterial.toString
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Return whether this item is repairable in an anvil.
|
||||
// */
|
||||
// override def getIsRepairable(par1ItemStack: ItemStack, par2ItemStack: ItemStack) = false
|
||||
//
|
||||
// /**
|
||||
// * How long it takes to use or consume an item
|
||||
// */
|
||||
// override def getMaxItemUseDuration(par1ItemStack: ItemStack): Int = 72000
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Called when the right click button is pressed
|
||||
// */
|
||||
// override def onItemRightClick(itemStack: ItemStack, world: World, player: EntityPlayer): ItemStack = {
|
||||
// import scala.collection.JavaConversions._
|
||||
// for (module <- ModuleManager.getRightClickModules) {
|
||||
// if (module.isValidForItem(itemStack) && ModuleManager.itemHasActiveModule(itemStack, module.getDataName)) {
|
||||
// module.onRightClick(player, world, itemStack)
|
||||
// }
|
||||
// }
|
||||
// return itemStack
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * returns the action that specifies what animation to play when the items
|
||||
// * is being used
|
||||
// */
|
||||
// override def getItemUseAction(stack: ItemStack): EnumAction = {
|
||||
// return EnumAction.bow
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Called when the right click button is released
|
||||
// */
|
||||
// override def onPlayerStoppedUsing(itemStack: ItemStack, world: World, player: EntityPlayer, par4: Int) {
|
||||
// val mode: String = getActiveMode(itemStack, player)
|
||||
// val module: IPowerModule = ModuleManager.getModule(mode)
|
||||
// OptionCast[IRightClickModule](module) foreach {
|
||||
// m => m.onPlayerStoppedUsing(itemStack, world, player, par4)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// 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 _ => false
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// override def onItemUse(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.onItemUse(itemStack, player, world, x, y, z, side, hitX, hitY, hitZ); false
|
||||
// case _ => false
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Optional.Method(modid = "Forestry")
|
||||
// def getSaplingModifier(stack: ItemStack, world: World, player: EntityPlayer, x: Int, y: Int, z: Int): Float = {
|
||||
// if (ModuleManager.itemHasActiveModule(stack, GrafterModule.MODULE_GRAFTER)) {
|
||||
// ElectricItemUtils.drainPlayerEnergy(player, ModuleManager.computeModularProperty(stack, GrafterModule.GRAFTER_ENERGY_CONSUMPTION))
|
||||
// MuseHeatUtils.heatPlayer(player, ModuleManager.computeModularProperty(stack, GrafterModule.GRAFTER_HEAT_GENERATION))
|
||||
// 100F
|
||||
// } else {
|
||||
// 0F
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// def canHarvestBlock(stack: ItemStack, block: Block, meta: Int, player: EntityPlayer): Boolean = {
|
||||
// if (block.getMaterial.isToolNotRequired) {
|
||||
// return true
|
||||
// }
|
||||
// import scala.collection.JavaConversions._
|
||||
// for (module <- ModuleManager.getBlockBreakingModules) {
|
||||
// if (ModuleManager.itemHasActiveModule(stack, module.getDataName) && module.canHarvestBlock(stack, block, meta, player)) {
|
||||
// return true
|
||||
// }
|
||||
// }
|
||||
// return false
|
||||
// }
|
||||
//
|
||||
// // TE Crescent Hammer
|
||||
// override def isUsable(itemStack: ItemStack, entityLivingBase: EntityLivingBase, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
// entityLivingBase match {
|
||||
// case player: EntityPlayer => getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// case _ => false
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // TE Crescent Hammer
|
||||
// override def toolUsed(itemStack: ItemStack, entityLivingBase: EntityLivingBase, i: Int, i1: Int, i2: Int): Unit = {}
|
||||
//
|
||||
// // Railcraft Crowbar
|
||||
// override def canWhack(player: EntityPlayer, itemStack: ItemStack, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
// getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // Railcraft Crowbar
|
||||
// override def canLink(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Boolean = {
|
||||
// getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // Railcraft Crowbar
|
||||
// override def canBoost(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Boolean = {
|
||||
// getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // Railcraft Crowbar
|
||||
// override def onLink(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Unit = {}
|
||||
//
|
||||
// // Railcraft Crowbar
|
||||
// override def onWhack(player: EntityPlayer, itemStack: ItemStack, i: Int, i1: Int, i2: Int): Unit = {}
|
||||
//
|
||||
// // Railcraft Crowbar
|
||||
// override def onBoost(player: EntityPlayer, itemStack: ItemStack, entityMinecart: EntityMinecart): Unit = {}
|
||||
//
|
||||
// // AE wrench
|
||||
// override def canWrench(itemStack: ItemStack, player: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
// getActiveMode(itemStack, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // Buildcraft Wrench
|
||||
// override def wrenchUsed(player: EntityPlayer, i: Int, i1: Int, i2: Int): Unit = { }
|
||||
//
|
||||
// // Buildcraft Wrench
|
||||
// override def canWrench(player: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
// getActiveMode(player.getHeldItem, player).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // Bluepower Screwdriver
|
||||
// override def damage(itemStack: ItemStack, i: Int, entityPlayer: EntityPlayer, b: Boolean): Boolean = {
|
||||
// getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // ProjectRed Screwdriver
|
||||
// override def damageScrewdriver(entityPlayer: EntityPlayer, itemStack: ItemStack): Unit = {}
|
||||
//
|
||||
// // ProjectRed Screwdriver
|
||||
// override def canUse(entityPlayer: EntityPlayer, itemStack: ItemStack): Boolean = {
|
||||
// getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // EnderIO Tool
|
||||
// override def used(itemStack: ItemStack, entityPlayer: EntityPlayer, i: Int, i1: Int, i2: Int): Unit = {}
|
||||
//
|
||||
// // EnderIO Tool
|
||||
// override def canUse(itemStack: ItemStack, entityPlayer: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
// getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // EnderIO Tool
|
||||
// override def shouldHideFacades(itemStack: ItemStack, entityPlayer: EntityPlayer): Boolean = {
|
||||
// getActiveMode(itemStack, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//
|
||||
// // Mekanism Wrench
|
||||
// override def canUseWrench(entityPlayer: EntityPlayer, i: Int, i1: Int, i2: Int): Boolean = {
|
||||
// getActiveMode(entityPlayer.getHeldItem, entityPlayer).equals(OmniWrenchModule.MODULE_OMNI_WRENCH)
|
||||
// }
|
||||
//}
|
||||
|
|
|
@ -47,7 +47,7 @@ trait ModeChangingModularItem extends ModeChangingItem {
|
|||
modeFromNBT
|
||||
} else {
|
||||
val validModes = getValidModes(stack)
|
||||
if (!validModes.isEmpty) {
|
||||
if (validModes.nonEmpty) {
|
||||
validModes(0)
|
||||
} else {
|
||||
""
|
||||
|
|
|
@ -3,7 +3,6 @@ package net.machinemuse.powersuits.item
|
|||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import net.machinemuse.api.electricity.MuseElectricItem
|
||||
import net.machinemuse.api.{IModularItem, ModuleManager}
|
||||
import net.machinemuse.numina.general.MuseMathUtils
|
||||
import net.machinemuse.numina.general.MuseMathUtils._
|
||||
import net.machinemuse.numina.geometry.Colour
|
||||
import net.machinemuse.powersuits.powermodule.misc.{CosmeticGlowModule, TintModule}
|
||||
|
|
Loading…
Reference in a new issue