Skip to content

Commit 8f00625

Browse files
committed
Hotfix: loading disabled keybinds causing NPE
1 parent 245042f commit 8f00625

3 files changed

Lines changed: 42 additions & 28 deletions

File tree

src/main/java/net/evmodder/evmod/KeyCallbacks.java

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ private final void keybindCallback(IHotkey hotkey, Function<Screen, Boolean> all
6666
valueChangeCallback(Configs.Database.ADDRESS, ()->InitUtils.refreshRemoteServerSender(remoteSender));
6767
valueChangeCallback(Configs.Database.CLIENT_ID, ()->InitUtils.refreshRemoteServerSender(remoteSender));
6868
valueChangeCallback(Configs.Database.CLIENT_KEY, ()->InitUtils.refreshRemoteServerSender(remoteSender));
69-
valueChangeCallback(Configs.Database.BORROW_IGNORES, gameMessageFilter::recomputeIgnoreLists);
69+
if(gameMessageFilter != null) valueChangeCallback(Configs.Database.BORROW_IGNORES, gameMessageFilter::recomputeIgnoreLists);
7070
Configs.Database.EPEARL_OWNERS_BY_UUID.setValueChangeCallback(newValue -> {if(newValue.getBooleanValue()) epearlLookup.loadEpearlCacheUUID();});
7171
Configs.Database.EPEARL_OWNERS_BY_XZ.setValueChangeCallback(newValue -> {if(newValue.getBooleanValue()) epearlLookup.loadEpearlCacheXZ();});
7272

@@ -75,14 +75,20 @@ private final void keybindCallback(IHotkey hotkey, Function<Screen, Boolean> all
7575
valueChangeCallback(Configs.Generic.TEMP_BROADCAST_MSGS, ChatBroadcaster::refreshBroadcast);
7676
valueChangeCallback(Configs.Generic.SCROLL_ORDER, kbHbScroll::refreshColorLists);
7777

78-
valueChangeCallback(Configs.Hotkeys.INV_RESTOCK_BLACKLIST, kbInvRestock::refreshLists);
79-
valueChangeCallback(Configs.Hotkeys.INV_RESTOCK_WHITELIST, kbInvRestock::refreshLists);
80-
valueChangeCallback(Configs.Generic.INV_RESTOCK_AUTO_FOR_INV_ORGS, ()->kbInvRestock.refreshLayouts(kbInvOrgs));
81-
Configs.Hotkeys.INV_ORGANIZE_1.setValueChangeCallback(newValue -> kbInvOrgs[0].refreshLayout(newValue.getStrings()));
82-
Configs.Hotkeys.INV_ORGANIZE_2.setValueChangeCallback(newValue -> kbInvOrgs[1].refreshLayout(newValue.getStrings()));
83-
Configs.Hotkeys.INV_ORGANIZE_3.setValueChangeCallback(newValue -> kbInvOrgs[2].refreshLayout(newValue.getStrings()));
84-
valueChangeCallback(Configs.Generic.WHISPER_PLAY_SOUND, whisperPlaySound::recomputeSound);
85-
valueChangeCallback(Configs.Generic.WHISPER_PLAY_SOUND_UNFOCUSED, whisperPlaySound::recomputeSoundUnfocused);
78+
if(kbInvRestock != null){
79+
valueChangeCallback(Configs.Hotkeys.INV_RESTOCK_BLACKLIST, kbInvRestock::refreshLists);
80+
valueChangeCallback(Configs.Hotkeys.INV_RESTOCK_WHITELIST, kbInvRestock::refreshLists);
81+
valueChangeCallback(Configs.Generic.INV_RESTOCK_AUTO_FOR_INV_ORGS, ()->kbInvRestock.refreshLayouts(kbInvOrgs));
82+
}
83+
if(kbInvOrgs != null){
84+
Configs.Hotkeys.INV_ORGANIZE_1.setValueChangeCallback(newValue -> kbInvOrgs[0].refreshLayout(newValue.getStrings()));
85+
Configs.Hotkeys.INV_ORGANIZE_2.setValueChangeCallback(newValue -> kbInvOrgs[1].refreshLayout(newValue.getStrings()));
86+
Configs.Hotkeys.INV_ORGANIZE_3.setValueChangeCallback(newValue -> kbInvOrgs[2].refreshLayout(newValue.getStrings()));
87+
}
88+
if(whisperPlaySound != null){
89+
valueChangeCallback(Configs.Generic.WHISPER_PLAY_SOUND, whisperPlaySound::recomputeSound);
90+
valueChangeCallback(Configs.Generic.WHISPER_PLAY_SOUND_UNFOCUSED, whisperPlaySound::recomputeSoundUnfocused);
91+
}
8692

8793
// Keybind callbacks
8894
keybindCallback(Configs.Hotkeys.TOGGLE_CAPE, null, ()->InitUtils.toggleSkinLayer(PlayerModelPart.CAPE));
@@ -97,15 +103,19 @@ private final void keybindCallback(IHotkey hotkey, Function<Screen, Boolean> all
97103
// keybindCallback(Configs.Hotkeys.EBOUNCE_TRAVEL_HELPER, null, kbEbounce::toggle);
98104
Configs.Hotkeys.AIE_TRAVEL_HELPER.setValueChangeCallback(newValue->kbAIE.updateEnabled(newValue.getBooleanValue()));
99105
Configs.Hotkeys.EBOUNCE_TRAVEL_HELPER.setValueChangeCallback(newValue->kbEbounce.updateEnabled(newValue.getBooleanValue()));
100-
keybindCallback(Configs.Hotkeys.CRAFT_RESTOCK, null/*HandledScreen.class::isInstance*/, kbCraftRestock::restockInputSlots);
106+
if(kbCraftRestock != null) keybindCallback(Configs.Hotkeys.CRAFT_RESTOCK, null/*HandledScreen.class::isInstance*/, kbCraftRestock::restockInputSlots);
101107
keybindCallback(Configs.Hotkeys.EJECT_JUNK_ITEMS, s->s==null || s instanceof HandledScreen, kbej::ejectJunkItems);
102108
keybindCallback(Configs.Hotkeys.HOTBAR_TYPE_INCR, null, ()->kbHbScroll.scrollHotbarSlot(true));
103109
keybindCallback(Configs.Hotkeys.HOTBAR_TYPE_DECR, null, ()->kbHbScroll.scrollHotbarSlot(false));
104110

105-
keybindCallback(Configs.Hotkeys.TRIGGER_INV_ORGANIZE_1, null, ()->kbInvOrgs[0].organizeInventory(false, null));
106-
keybindCallback(Configs.Hotkeys.TRIGGER_INV_ORGANIZE_2, null, ()->kbInvOrgs[1].organizeInventory(false, null));
107-
keybindCallback(Configs.Hotkeys.TRIGGER_INV_ORGANIZE_3, null, ()->kbInvOrgs[2].organizeInventory(false, null));
108-
keybindCallback(Configs.Hotkeys.INV_RESTOCK, s->s instanceof HandledScreen && s instanceof InventoryScreen == false, kbInvRestock::doRestock);
111+
if(kbInvOrgs != null){
112+
keybindCallback(Configs.Hotkeys.TRIGGER_INV_ORGANIZE_1, null, ()->kbInvOrgs[0].organizeInventory(false, null));
113+
keybindCallback(Configs.Hotkeys.TRIGGER_INV_ORGANIZE_2, null, ()->kbInvOrgs[1].organizeInventory(false, null));
114+
keybindCallback(Configs.Hotkeys.TRIGGER_INV_ORGANIZE_3, null, ()->kbInvOrgs[2].organizeInventory(false, null));
115+
}
116+
if(kbInvRestock != null){
117+
keybindCallback(Configs.Hotkeys.INV_RESTOCK, s->s instanceof HandledScreen && s instanceof InventoryScreen == false, kbInvRestock::doRestock);
118+
}
109119

110120
keybindCallback(Configs.Hotkeys.CHAT_MSG_1, null, ()->InitUtils.sendChatMsg(Configs.Hotkeys.CHAT_MSG_1.getStringValue()));
111121
keybindCallback(Configs.Hotkeys.CHAT_MSG_2, null, ()->InitUtils.sendChatMsg(Configs.Hotkeys.CHAT_MSG_2.getStringValue()));

src/main/java/net/evmodder/evmod/Main.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
// gradle migrateMappings --mappings "1.21.4+build.8"
5050

5151
public class Main{
52+
// Ev PNG->NBT preset:
53+
//https://evmodder.net/PNG-to-NBT/?preset=RXYncyBQcmVzZXR8MSwxLDAsMCwxLDksMCw3LDAsMjYsMywxLDAsMTAsMTMsNCwzLDMsMywzLDMsMyw0LDgsMSwxMSwzLDExLDE4LDAsMSwwLDAsMSwxNSwwLDIsMCwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMSwwLDAsMCwwLDAsMCwwLDAsMSwwLDF8cmVzaW5fYmxvY2t8bm9uZXxzdXBwcmVzc19wYWlyc19ld3x8MQ
5254
// Splash potion harming, weakness (spider eyes, sugar, gunpowder, brewing stand)
5355
//TODO:
5456
// fix NULL map detection (bundle stow isn't sucking up unloaded maps rn)

src/main/java/net/evmodder/evmod/apis/MapIdsFromImg.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.awt.image.BufferedImage;
88
import java.io.File;
99
import java.io.IOException;
10-
import java.lang.reflect.Field;
1110
import java.nio.ByteBuffer;
1211
import java.util.ArrayDeque;
1312
import java.util.HashMap;
@@ -74,14 +73,16 @@ public static void calculateMapColors(){
7473
MAP_COLORS_REVERSE.put(0xff000000, (byte)0);
7574
}*/
7675

77-
private static MapColor[] MAP_COLORS;
76+
// private static MapColor[] MAP_COLORS;
7877
private static final HashMap<Integer, Byte> MAP_COLORS_REVERSE = new HashMap<>();
7978
static{
8079
try{
81-
Field f = MapColor.class.getDeclaredField("COLORS");
82-
f.setAccessible(true);
83-
MAP_COLORS = (MapColor[])f.get(null);
84-
for(MapColor mc : MAP_COLORS){
80+
// Field f = MapColor.class.getDeclaredField("COLORS");
81+
// f.setAccessible(true);
82+
// MAP_COLORS = (MapColor[])f.get(null);
83+
// for(MapColor mc : MAP_COLORS){
84+
for(int i=0; i<64; ++i){
85+
MapColor mc = MapColor.get(i);
8586
if(mc == null) continue;
8687
for(MapColor.Brightness brightness : MapColor.Brightness.values()){
8788
MAP_COLORS_REVERSE.put(mc.getRenderColor(brightness), mc.getRenderColorByte(brightness));
@@ -94,7 +95,7 @@ public static void calculateMapColors(){
9495
// MAP_COLORS_REVERSE.put(MAP_COLORS[0].getRenderColor(brightness), MAP_COLORS[0].getRenderColorByte(Brightness.LOW));
9596
// }
9697
}
97-
catch(NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e){
98+
catch(Exception e){
9899
e.printStackTrace();
99100
}
100101
}
@@ -109,22 +110,23 @@ public static void calculateMapColors(){
109110
assert colors.length == 128*128;
110111
for(int x=0; x<128; ++x) for(int y=0; y<128; ++y) img.setRGB(xo+x, yo+y, MAP_COLORS[((int)colors[x + y*128]) & 0xFF]);
111112
}*/
112-
private static byte[] colorsFromImg(final BufferedImage img, final int xo, final int yo){
113+
public static final byte[] colorsFromImg(final BufferedImage img, final int xo, final int yo){
113114
byte[] bs = new byte[128*128];
114-
for(int x=0; x<128; ++x) for(int y=0; y<128; ++y){
115-
int argb = img.getRGB(xo+x, yo+y);
115+
for(int h=0; h<128; ++h) for(int w=0; w<128; ++w){
116+
int argb = img.getRGB(xo+w, yo+h);
116117
Byte b = MAP_COLORS_REVERSE.get(argb);
117118
if(b == null){
118-
System.err.println("Unsupported color detected (not a valid map color) at "+(xo+x)+","+(yo+y)+": "+argb);
119+
System.err.println("Unsupported color detected (not a valid map color) at "+(xo+w)+","+(yo+h)+": "+argb);
119120
// System.err.println("Unsigned representation: "+Integer.toUnsignedString(argb));
120121
// int alpha = (argb >> 24) & 0xFF; // Shift right by 24 bits to get alpha, then mask with 0xFF
121122
// int red = (argb >> 16) & 0xFF; // Shift right by 16 bits to get red, then mask with 0xFF
122123
// int green = (argb >> 8) & 0xFF; // Shift right by 8 bits to get green, then mask with 0xFF
123124
// int blue = argb & 0xFF; // Mask with 0xFF to get blue
124125
// System.err.println("A: "+alpha+", R: "+red+", G: "+green+", B: "+blue);
125-
System.exit(1);
126+
return null;
127+
// System.exit(1);
126128
}
127-
bs[x + y*128] = b;
129+
bs[w + h*128] = b;
128130
// img.setRGB(xo+x, yo+y, MAP_COLORS[((int)colors[x + y*128]) & 0xFF]);
129131
}
130132
return bs;
@@ -161,7 +163,7 @@ public static HashSet<UUID> getIdsFromImg(BufferedImage img){
161163
return ids;
162164
}
163165

164-
public static BufferedImage getValidCompositeMapImg(String imgName){
166+
public static final BufferedImage getValidCompositeMapImg(String imgName){
165167
BufferedImage img;
166168
try{img = ImageIO.read(new File(imgName));}
167169
catch(IOException e){e.printStackTrace(); return null;}

0 commit comments

Comments
 (0)