fix NPE when adding color in Tinker Table with no item selected
This commit is contained in:
parent
9ace6b46fa
commit
0d88ca125a
|
@ -33,9 +33,8 @@ public class ClickableKeybinding extends ClickableButton{
|
||||||
|
|
||||||
public ClickableKeybinding(KeyBinding keybind, MusePoint2D position, boolean free, Boolean displayOnHUD) {
|
public ClickableKeybinding(KeyBinding keybind, MusePoint2D position, boolean free, Boolean displayOnHUD) {
|
||||||
super(ClickableKeybinding.parseName(keybind), position, true);
|
super(ClickableKeybinding.parseName(keybind), position, true);
|
||||||
this.keybind = keybind;
|
|
||||||
this.displayOnHUD = (displayOnHUD!= null) ? displayOnHUD : false;
|
this.displayOnHUD = (displayOnHUD!= null) ? displayOnHUD : false;
|
||||||
|
this.keybind = keybind;
|
||||||
}
|
}
|
||||||
|
|
||||||
static String parseName(KeyBinding keybind) {
|
static String parseName(KeyBinding keybind) {
|
||||||
|
|
|
@ -52,5 +52,4 @@ public class ClickableLabel implements IClickable {
|
||||||
public MusePoint2D getPosition() {
|
public MusePoint2D getPosition() {
|
||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ public class ClickableModule extends Clickable {
|
||||||
MuseRenderer.drawString(string, getPosition().x() + 3, getPosition().y() + 1);
|
MuseRenderer.drawString(string, getPosition().x() + 3, getPosition().y() + 1);
|
||||||
}
|
}
|
||||||
else if (installed) {
|
else if (installed) {
|
||||||
new GuiIcons.Checkmark(this.getPosition().x() - 8 + 1, this.getPosition().y() - 8 + 1, this.checkmarkcolour, null, null, null,null);
|
new GuiIcons.Checkmark(getPosition().x() - 8 + 1, getPosition().y() - 8 + 1, checkmarkcolour, null, null, null, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,6 @@ public class ClickableSlider extends Clickable {
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw() {
|
public void draw() {
|
||||||
MuseRenderer.drawCenteredString(name, position.x(), position.y());
|
MuseRenderer.drawCenteredString(name, position.x(), position.y());
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class ColourPickerFrame implements IGuiFrame {
|
||||||
if (item instanceof ItemPowerArmor) {
|
if (item instanceof ItemPowerArmor) {
|
||||||
ItemPowerArmor itemPowerArmor = (ItemPowerArmor)item;
|
ItemPowerArmor itemPowerArmor = (ItemPowerArmor)item;
|
||||||
int[] intArray = { itemPowerArmor.getColorFromItemStack(this.itemSelector.getSelectedItem().getItem()).getInt(),
|
int[] intArray = { itemPowerArmor.getColorFromItemStack(this.itemSelector.getSelectedItem().getItem()).getInt(),
|
||||||
itemPowerArmor.getGlowFromItemStack(this.itemSelector.getSelectedItem().getItem()).getInt() };
|
itemPowerArmor.getGlowFromItemStack(this.itemSelector.getSelectedItem().getItem()).getInt() };
|
||||||
renderSpec.setIntArray("colours", intArray);
|
renderSpec.setIntArray("colours", intArray);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -77,7 +77,7 @@ public class ColourPickerFrame implements IGuiFrame {
|
||||||
}
|
}
|
||||||
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||||
if (player.worldObj.isRemote) {
|
if (player.worldObj.isRemote) {
|
||||||
PacketSender.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector.getSelectedItem().inventorySlot, this.colours()));
|
PacketSender.sendToServer(new MusePacketColourInfo(player, this.itemSelector.getSelectedItem().inventorySlot, this.colours()));
|
||||||
}
|
}
|
||||||
return (NBTTagIntArray) renderSpec.getTag("colours");
|
return (NBTTagIntArray) renderSpec.getTag("colours");
|
||||||
}
|
}
|
||||||
|
@ -88,25 +88,25 @@ public class ColourPickerFrame implements IGuiFrame {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector.getSelectedItem().getItem());
|
NBTTagCompound renderSpec = MuseItemUtils.getMuseRenderTag(this.itemSelector.getSelectedItem().getItem());
|
||||||
renderSpec.setTag("colours", (NBTBase)new NBTTagIntArray(newarray));
|
renderSpec.setTag("colours", new NBTTagIntArray(newarray));
|
||||||
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||||
if (player.worldObj.isRemote) {
|
if (player.worldObj.isRemote) {
|
||||||
PacketSender.sendToServer(new MusePacketColourInfo((EntityPlayer)player, this.itemSelector.getSelectedItem().inventorySlot, this.colours()));
|
PacketSender.sendToServer(new MusePacketColourInfo(player, this.itemSelector.getSelectedItem().inventorySlot, this.colours()));
|
||||||
}
|
}
|
||||||
return (NBTTagIntArray) renderSpec.getTag("colours");
|
return (NBTTagIntArray) renderSpec.getTag("colours");
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Integer> importColours() {
|
public ArrayList<Integer> importColours() {
|
||||||
return new ArrayList<Integer>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshColours() {
|
public void refreshColours() {
|
||||||
// getOrCreateColourTag.map(coloursTag => {
|
// getOrCreateColourTag.map(coloursTag => {
|
||||||
// val colourints: Array[Int] = coloursTag.intArray
|
// val colourints: Array[Int] = coloursTag.intArray
|
||||||
// val colourset: HashSet[Int] = HashSet.empty ++ colours ++ colourints
|
// val colourset: HashSet[Int] = HashSet.empty ++ colours ++ colourints
|
||||||
// val colourarray = colourset.toArray
|
// val colourarray = colourset.toArray
|
||||||
// coloursTag.intArray = colourarray
|
// coloursTag.intArray = colourarray
|
||||||
// })
|
// })
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -174,7 +174,10 @@ public class ColourPickerFrame implements IGuiFrame {
|
||||||
this.onSelectColour(colourCol);
|
this.onSelectColour(colourCol);
|
||||||
} else if (colourCol == this.colours().length) {
|
} else if (colourCol == this.colours().length) {
|
||||||
MuseLogger.logDebug("Adding");
|
MuseLogger.logDebug("Adding");
|
||||||
setColourTagMaybe(ArrayUtils.add(getIntArray(getOrCreateColourTag()), Colour.WHITE.getInt()));
|
|
||||||
|
NBTTagIntArray nbtTagIntArray = getOrCreateColourTag();
|
||||||
|
int[] intArray = getIntArray(nbtTagIntArray);
|
||||||
|
setColourTagMaybe(ArrayUtils.add(intArray, Colour.WHITE.getInt()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +186,7 @@ public class ColourPickerFrame implements IGuiFrame {
|
||||||
NBTTagIntArray nbtTagIntArray = getOrCreateColourTag();
|
NBTTagIntArray nbtTagIntArray = getOrCreateColourTag();
|
||||||
|
|
||||||
int[] intArray = getIntArray(nbtTagIntArray);
|
int[] intArray = getIntArray(nbtTagIntArray);
|
||||||
if (intArray.length > 1) {
|
if (intArray != null && intArray.length > 1) {
|
||||||
/* TODO - for 1.10.2 and above, simplyfy with Java 8 collections and streams. Seriously, all this to remove an element fron an int array*/
|
/* TODO - for 1.10.2 and above, simplyfy with Java 8 collections and streams. Seriously, all this to remove an element fron an int array*/
|
||||||
List<Integer> integerArray = new ArrayList<>();
|
List<Integer> integerArray = new ArrayList<>();
|
||||||
int intToRemove = intArray[selectedColour];
|
int intToRemove = intArray[selectedColour];
|
||||||
|
@ -212,6 +215,8 @@ public class ColourPickerFrame implements IGuiFrame {
|
||||||
}
|
}
|
||||||
|
|
||||||
public int[] getIntArray(NBTTagIntArray e) {
|
public int[] getIntArray(NBTTagIntArray e) {
|
||||||
|
if (e == null) // null when no armor item selected
|
||||||
|
return new int[0];
|
||||||
return e.func_150302_c();
|
return e.func_150302_c();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -27,19 +27,17 @@ import java.util.List;
|
||||||
public class ItemModelViewFrame implements IGuiFrame {
|
public class ItemModelViewFrame implements IGuiFrame {
|
||||||
ItemSelectionFrame itemSelector;
|
ItemSelectionFrame itemSelector;
|
||||||
DrawableMuseRect border;
|
DrawableMuseRect border;
|
||||||
|
|
||||||
double anchorx = 0;
|
double anchorx = 0;
|
||||||
double anchory = 0;
|
double anchory = 0;
|
||||||
int dragging = -1;
|
int dragging = -1;
|
||||||
double lastdWheel = 0;
|
double lastdWheel = 0;
|
||||||
|
|
||||||
double rotx = 0;
|
double rotx = 0;
|
||||||
double roty = 0;
|
double roty = 0;
|
||||||
double offsetx = 0;
|
double offsetx = 0;
|
||||||
double offsety = 0;
|
double offsety = 0;
|
||||||
double zoom = 64;
|
double zoom = 64;
|
||||||
|
|
||||||
public ItemModelViewFrame(ItemSelectionFrame itemSelector, MusePoint2D topleft, MusePoint2D bottomright, Colour borderColour, Colour insideColour) {
|
public ItemModelViewFrame(ItemSelectionFrame itemSelector, MusePoint2D topleft, MusePoint2D bottomright, Colour borderColour, Colour insideColour) {
|
||||||
this.itemSelector = itemSelector;
|
this.itemSelector = itemSelector;
|
||||||
this.border = new DrawableMuseRect(topleft, bottomright, borderColour, insideColour);
|
this.border = new DrawableMuseRect(topleft, bottomright, borderColour, insideColour);
|
||||||
}
|
}
|
||||||
|
@ -81,15 +79,15 @@ public class ItemModelViewFrame implements IGuiFrame {
|
||||||
double dy = mousey - anchory;
|
double dy = mousey - anchory;
|
||||||
switch(dragging) {
|
switch(dragging) {
|
||||||
case 0: {
|
case 0: {
|
||||||
rotx = MuseMathUtils.clampDouble((rotx + dy), -90, 90);
|
rotx = MuseMathUtils.clampDouble(rotx + dy, -90, 90);
|
||||||
roty = (roty - dx);
|
roty = roty - dx;
|
||||||
anchorx = mousex;
|
anchorx = mousex;
|
||||||
anchory = mousey;
|
anchory = mousey;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 1: {
|
case 1: {
|
||||||
offsetx = (offsetx + dx);
|
offsetx = offsetx + dx;
|
||||||
offsety = (offsety + dy);
|
offsety = offsety + dy;
|
||||||
anchorx = mousex;
|
anchorx = mousex;
|
||||||
anchory = mousey;
|
anchory = mousey;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -63,7 +63,6 @@ public class ModuleTweakFrame extends ScrollableFrame {
|
||||||
if (selectedSlider != null) {
|
if (selectedSlider != null) {
|
||||||
selectedSlider.moveSlider(mousex, mousey);
|
selectedSlider.moveSlider(mousex, mousey);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -111,7 +110,6 @@ public class ModuleTweakFrame extends ScrollableFrame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
propertyStrings.put(property.getKey(), currValue);
|
propertyStrings.put(property.getKey(), currValue);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sliders = new LinkedList();
|
sliders = new LinkedList();
|
||||||
|
|
|
@ -55,7 +55,6 @@ public class PartManipSubFrame {
|
||||||
var specs: Array[ModelPartSpec] = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray
|
var specs: Array[ModelPartSpec] = model.apply.values.filter(spec => isValidArmor(getSelectedItem, spec.slot)).toArray
|
||||||
model.apply().values().filter(Function1<ModelPartSpec, Object> p) */
|
model.apply().values().filter(Function1<ModelPartSpec, Object> p) */
|
||||||
this.specs = getSpecs();
|
this.specs = getSpecs();
|
||||||
|
|
||||||
this.open = true;
|
this.open = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,4 +271,4 @@ public class PartManipSubFrame {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||||
import net.machinemuse.api.IPowerModule;
|
import net.machinemuse.api.IPowerModule;
|
||||||
import net.machinemuse.api.ModuleManager;
|
import net.machinemuse.api.ModuleManager;
|
||||||
import net.machinemuse.api.IModularItem;
|
import net.machinemuse.api.IModularItem;
|
||||||
import net.machinemuse.numina.basemod.Numina;
|
import net.machinemuse.numina.common.Numina;
|
||||||
import net.machinemuse.numina.general.MuseLogger;
|
import net.machinemuse.numina.general.MuseLogger;
|
||||||
import net.machinemuse.powersuits.common.proxy.CommonProxy;
|
import net.machinemuse.powersuits.common.proxy.CommonProxy;
|
||||||
import net.machinemuse.powersuits.powermodule.armor.*;
|
import net.machinemuse.powersuits.powermodule.armor.*;
|
||||||
|
|
|
@ -5,7 +5,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import net.machinemuse.api.ModuleManager;
|
import net.machinemuse.api.ModuleManager;
|
||||||
import net.machinemuse.general.sound.SoundDictionary;
|
import net.machinemuse.general.sound.SoundDictionary;
|
||||||
import net.machinemuse.numina.basemod.NuminaConfig;
|
import net.machinemuse.numina.common.NuminaConfig;
|
||||||
import net.machinemuse.numina.sound.Musique;
|
import net.machinemuse.numina.sound.Musique;
|
||||||
import net.machinemuse.powersuits.item.ItemPowerArmor;
|
import net.machinemuse.powersuits.item.ItemPowerArmor;
|
||||||
import net.machinemuse.powersuits.powermodule.movement.JumpAssistModule;
|
import net.machinemuse.powersuits.powermodule.movement.JumpAssistModule;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
import net.machinemuse.api.ModuleManager;
|
import net.machinemuse.api.ModuleManager;
|
||||||
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
||||||
import net.machinemuse.general.sound.SoundDictionary;
|
import net.machinemuse.general.sound.SoundDictionary;
|
||||||
import net.machinemuse.numina.basemod.NuminaConfig;
|
import net.machinemuse.numina.common.NuminaConfig;
|
||||||
import net.machinemuse.numina.general.MuseMathUtils;
|
import net.machinemuse.numina.general.MuseMathUtils;
|
||||||
import net.machinemuse.numina.sound.Musique;
|
import net.machinemuse.numina.sound.Musique;
|
||||||
import net.machinemuse.powersuits.common.Config;
|
import net.machinemuse.powersuits.common.Config;
|
||||||
|
|
|
@ -71,4 +71,4 @@ public class ItemPowerArmorHelmet extends ItemPowerArmor implements
|
||||||
public boolean canBreathe(ItemStack itemStack, EntityPlayer entityPlayer, EnumGearType enumGearType) {
|
public boolean canBreathe(ItemStack itemStack, EntityPlayer entityPlayer, EnumGearType enumGearType) {
|
||||||
return ModuleManager.itemHasActiveModule(itemStack, AirtightSealModule.AIRTIGHT_SEAL_MODULE);
|
return ModuleManager.itemHasActiveModule(itemStack, AirtightSealModule.AIRTIGHT_SEAL_MODULE);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -7,7 +7,7 @@ import net.machinemuse.api.ModuleManager;
|
||||||
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
||||||
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
||||||
import net.machinemuse.general.sound.SoundDictionary;
|
import net.machinemuse.general.sound.SoundDictionary;
|
||||||
import net.machinemuse.numina.basemod.NuminaConfig;
|
import net.machinemuse.numina.common.NuminaConfig;
|
||||||
import net.machinemuse.numina.sound.Musique;
|
import net.machinemuse.numina.sound.Musique;
|
||||||
import net.machinemuse.powersuits.item.ItemComponent;
|
import net.machinemuse.powersuits.item.ItemComponent;
|
||||||
import net.machinemuse.powersuits.powermodule.PowerModuleBase;
|
import net.machinemuse.powersuits.powermodule.PowerModuleBase;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import net.machinemuse.api.ModuleManager;
|
||||||
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
||||||
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
||||||
import net.machinemuse.general.sound.SoundDictionary;
|
import net.machinemuse.general.sound.SoundDictionary;
|
||||||
import net.machinemuse.numina.basemod.NuminaConfig;
|
import net.machinemuse.numina.common.NuminaConfig;
|
||||||
import net.machinemuse.numina.sound.Musique;
|
import net.machinemuse.numina.sound.Musique;
|
||||||
import net.machinemuse.powersuits.control.PlayerInputMap;
|
import net.machinemuse.powersuits.control.PlayerInputMap;
|
||||||
import net.machinemuse.powersuits.item.ItemComponent;
|
import net.machinemuse.powersuits.item.ItemComponent;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import net.machinemuse.api.ModuleManager;
|
||||||
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
||||||
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
||||||
import net.machinemuse.general.sound.SoundDictionary;
|
import net.machinemuse.general.sound.SoundDictionary;
|
||||||
import net.machinemuse.numina.basemod.NuminaConfig;
|
import net.machinemuse.numina.common.NuminaConfig;
|
||||||
import net.machinemuse.numina.sound.Musique;
|
import net.machinemuse.numina.sound.Musique;
|
||||||
import net.machinemuse.powersuits.control.PlayerInputMap;
|
import net.machinemuse.powersuits.control.PlayerInputMap;
|
||||||
import net.machinemuse.powersuits.item.ItemComponent;
|
import net.machinemuse.powersuits.item.ItemComponent;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import net.machinemuse.api.ModuleManager;
|
||||||
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
import net.machinemuse.api.moduletrigger.IPlayerTickModule;
|
||||||
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
import net.machinemuse.api.moduletrigger.IToggleableModule;
|
||||||
import net.machinemuse.general.sound.SoundDictionary;
|
import net.machinemuse.general.sound.SoundDictionary;
|
||||||
import net.machinemuse.numina.basemod.NuminaConfig;
|
import net.machinemuse.numina.common.NuminaConfig;
|
||||||
import net.machinemuse.numina.sound.Musique;
|
import net.machinemuse.numina.sound.Musique;
|
||||||
import net.machinemuse.powersuits.control.PlayerInputMap;
|
import net.machinemuse.powersuits.control.PlayerInputMap;
|
||||||
import net.machinemuse.powersuits.item.ItemComponent;
|
import net.machinemuse.powersuits.item.ItemComponent;
|
||||||
|
|
Loading…
Reference in a new issue