fix NPE when adding color in Tinker Table with no item selected

This commit is contained in:
Leon 2017-03-11 08:12:05 -05:00
parent 9ace6b46fa
commit 0d88ca125a
16 changed files with 34 additions and 37 deletions

View file

@ -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) {

View file

@ -52,5 +52,4 @@ public class ClickableLabel implements IClickable {
public MusePoint2D getPosition() { public MusePoint2D getPosition() {
return position; return position;
} }
} }

View file

@ -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);
} }
} }

View file

@ -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());

View file

@ -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();
} }
} }

View file

@ -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;

View file

@ -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();

View file

@ -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;
} }
} }

View file

@ -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.*;

View file

@ -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;

View file

@ -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;

View file

@ -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);
} }
} }

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;