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) {
super(ClickableKeybinding.parseName(keybind), position, true);
this.keybind = keybind;
this.displayOnHUD = (displayOnHUD!= null) ? displayOnHUD : false;
this.keybind = keybind;
}
static String parseName(KeyBinding keybind) {

View file

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

View file

@ -72,7 +72,7 @@ public class ClickableModule extends Clickable {
MuseRenderer.drawString(string, getPosition().x() + 3, getPosition().y() + 1);
}
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;
}
@Override
public void draw() {
MuseRenderer.drawCenteredString(name, position.x(), position.y());

View file

@ -68,7 +68,7 @@ public class ColourPickerFrame implements IGuiFrame {
if (item instanceof ItemPowerArmor) {
ItemPowerArmor itemPowerArmor = (ItemPowerArmor)item;
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);
}
else {
@ -77,7 +77,7 @@ public class ColourPickerFrame implements IGuiFrame {
}
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
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");
}
@ -88,25 +88,25 @@ public class ColourPickerFrame implements IGuiFrame {
return null;
}
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;
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");
}
public ArrayList<Integer> importColours() {
return new ArrayList<Integer>();
return new ArrayList<>();
}
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
// })
// getOrCreateColourTag.map(coloursTag => {
// val colourints: Array[Int] = coloursTag.intArray
// val colourset: HashSet[Int] = HashSet.empty ++ colours ++ colourints
// val colourarray = colourset.toArray
// coloursTag.intArray = colourarray
// })
}
@Override
@ -174,7 +174,10 @@ public class ColourPickerFrame implements IGuiFrame {
this.onSelectColour(colourCol);
} else if (colourCol == this.colours().length) {
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();
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*/
List<Integer> integerArray = new ArrayList<>();
int intToRemove = intArray[selectedColour];
@ -212,6 +215,8 @@ public class ColourPickerFrame implements IGuiFrame {
}
public int[] getIntArray(NBTTagIntArray e) {
if (e == null) // null when no armor item selected
return new int[0];
return e.func_150302_c();
}
}

View file

@ -27,19 +27,17 @@ import java.util.List;
public class ItemModelViewFrame implements IGuiFrame {
ItemSelectionFrame itemSelector;
DrawableMuseRect border;
double anchorx = 0;
double anchory = 0;
int dragging = -1;
double lastdWheel = 0;
double rotx = 0;
double roty = 0;
double offsetx = 0;
double offsety = 0;
double zoom = 64;
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.border = new DrawableMuseRect(topleft, bottomright, borderColour, insideColour);
}
@ -81,15 +79,15 @@ public class ItemModelViewFrame implements IGuiFrame {
double dy = mousey - anchory;
switch(dragging) {
case 0: {
rotx = MuseMathUtils.clampDouble((rotx + dy), -90, 90);
roty = (roty - dx);
rotx = MuseMathUtils.clampDouble(rotx + dy, -90, 90);
roty = roty - dx;
anchorx = mousex;
anchory = mousey;
break;
}
case 1: {
offsetx = (offsetx + dx);
offsety = (offsety + dy);
offsetx = offsetx + dx;
offsety = offsety + dy;
anchorx = mousex;
anchory = mousey;
break;

View file

@ -63,7 +63,6 @@ public class ModuleTweakFrame extends ScrollableFrame {
if (selectedSlider != null) {
selectedSlider.moveSlider(mousex, mousey);
}
}
@Override
@ -111,7 +110,6 @@ public class ModuleTweakFrame extends ScrollableFrame {
}
}
propertyStrings.put(property.getKey(), currValue);
}
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
model.apply().values().filter(Function1<ModelPartSpec, Object> p) */
this.specs = getSpecs();
this.open = true;
}
@ -272,4 +271,4 @@ public class PartManipSubFrame {
}
return false;
}
}
}

View file

@ -7,7 +7,7 @@ import cpw.mods.fml.relauncher.Side;
import net.machinemuse.api.IPowerModule;
import net.machinemuse.api.ModuleManager;
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.powersuits.common.proxy.CommonProxy;
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 net.machinemuse.api.ModuleManager;
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.powersuits.item.ItemPowerArmor;
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.moduletrigger.IPlayerTickModule;
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.sound.Musique;
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) {
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.IToggleableModule;
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.powersuits.item.ItemComponent;
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.IToggleableModule;
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.powersuits.control.PlayerInputMap;
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.IToggleableModule;
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.powersuits.control.PlayerInputMap;
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.IToggleableModule;
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.powersuits.control.PlayerInputMap;
import net.machinemuse.powersuits.item.ItemComponent;