Commit bd15e763be763d3c59fb2aa367752ed204c0fa32
1 parent
f69d71c7
add more caps to ModInfoDecorator, change mod status text when errored
Showing
4 changed files
with
65 additions
and
3 deletions
java/client/com/mumfrey/liteloader/client/api/LiteLoaderModInfoDecorator.java
@@ -54,4 +54,21 @@ public class LiteLoaderModInfoDecorator implements ModInfoDecorator | @@ -54,4 +54,21 @@ public class LiteLoaderModInfoDecorator implements ModInfoDecorator | ||
54 | }); | 54 | }); |
55 | } | 55 | } |
56 | } | 56 | } |
57 | + | ||
58 | + /* (non-Javadoc) | ||
59 | + * @see com.mumfrey.liteloader.api.ModInfoDecorator#modifyStatusText(com.mumfrey.liteloader.core.ModInfo, java.lang.String) | ||
60 | + */ | ||
61 | + @Override | ||
62 | + public String modifyStatusText(ModInfo<?> mod, String statusText) | ||
63 | + { | ||
64 | + return null; | ||
65 | + } | ||
66 | + | ||
67 | + /* (non-Javadoc) | ||
68 | + * @see com.mumfrey.liteloader.api.ModInfoDecorator#onDrawListEntry(int, int, float, int, int, int, int, boolean, com.mumfrey.liteloader.core.ModInfo, int, int, int) | ||
69 | + */ | ||
70 | + @Override | ||
71 | + public void onDrawListEntry(int mouseX, int mouseY, float partialTicks, int xPosition, int yPosition, int width, int height, boolean selected, ModInfo<?> mod, int gradientColour, int titleColour, int statusColour) | ||
72 | + { | ||
73 | + } | ||
57 | } | 74 | } |
java/client/com/mumfrey/liteloader/client/gui/GuiModListEntry.java
@@ -219,13 +219,28 @@ public class GuiModListEntry extends Gui | @@ -219,13 +219,28 @@ public class GuiModListEntry extends Gui | ||
219 | 219 | ||
220 | this.drawGradientRect(xPosition, yPosition, xPosition + width, yPosition + GuiModListEntry.PANEL_HEIGHT, gradientColour, GuiModListEntry.GRADIENT_COLOUR2); | 220 | this.drawGradientRect(xPosition, yPosition, xPosition + width, yPosition + GuiModListEntry.PANEL_HEIGHT, gradientColour, GuiModListEntry.GRADIENT_COLOUR2); |
221 | 221 | ||
222 | - this.fontRenderer.drawString(this.getTitleText(), xPosition + 5, yPosition + 2, titleColour); | ||
223 | - this.fontRenderer.drawString(this.getVersionText(), xPosition + 5, yPosition + 12, GuiModListEntry.VERSION_TEXT_COLOUR); | ||
224 | - this.fontRenderer.drawString(this.getStatusText(), xPosition + 5, yPosition + 22, statusColour); | 222 | + String titleText = this.getTitleText(); |
223 | + String versionText = this.getVersionText(); | ||
224 | + String statusText = this.getStatusText(); | ||
225 | + | ||
226 | + for (ModInfoDecorator decorator : this.decorators) | ||
227 | + { | ||
228 | + String newStatusText = decorator.modifyStatusText(this.modInfo, statusText); | ||
229 | + if (newStatusText != null) statusText = newStatusText; | ||
230 | + } | ||
231 | + | ||
232 | + this.fontRenderer.drawString(titleText, xPosition + 5, yPosition + 2, titleColour); | ||
233 | + this.fontRenderer.drawString(versionText, xPosition + 5, yPosition + 12, GuiModListEntry.VERSION_TEXT_COLOUR); | ||
234 | + this.fontRenderer.drawString(statusText, xPosition + 5, yPosition + 22, statusColour); | ||
225 | 235 | ||
226 | this.mouseOverListEntry = this.isMouseOver(mouseX, mouseY, xPosition, yPosition, width, PANEL_HEIGHT); | 236 | this.mouseOverListEntry = this.isMouseOver(mouseX, mouseY, xPosition, yPosition, width, PANEL_HEIGHT); |
227 | drawRect(xPosition, yPosition, xPosition + 1, yPosition + PANEL_HEIGHT, this.mouseOverListEntry ? GuiModListEntry.HANGER_COLOUR_MOUSEOVER : GuiModListEntry.HANGER_COLOUR); | 237 | drawRect(xPosition, yPosition, xPosition + 1, yPosition + PANEL_HEIGHT, this.mouseOverListEntry ? GuiModListEntry.HANGER_COLOUR_MOUSEOVER : GuiModListEntry.HANGER_COLOUR); |
228 | 238 | ||
239 | + for (ModInfoDecorator decorator : this.decorators) | ||
240 | + { | ||
241 | + decorator.onDrawListEntry(mouseX, mouseY, partialTicks, xPosition, yPosition, width, GuiModListEntry.PANEL_HEIGHT, selected, this.modInfo, gradientColour, titleColour, statusColour); | ||
242 | + } | ||
243 | + | ||
229 | return GuiModListEntry.PANEL_HEIGHT + GuiModListEntry.PANEL_SPACING; | 244 | return GuiModListEntry.PANEL_HEIGHT + GuiModListEntry.PANEL_SPACING; |
230 | } | 245 | } |
231 | 246 | ||
@@ -345,6 +360,10 @@ public class GuiModListEntry extends Gui | @@ -345,6 +360,10 @@ public class GuiModListEntry extends Gui | ||
345 | statusText = "\247e" + I18n.format("gui.status.missingdeps"); | 360 | statusText = "\247e" + I18n.format("gui.status.missingdeps"); |
346 | if (this.canBeToggled && !this.willBeEnabled) statusText = "\247c" + I18n.format("gui.status.pending.disabled"); | 361 | if (this.canBeToggled && !this.willBeEnabled) statusText = "\247c" + I18n.format("gui.status.pending.disabled"); |
347 | } | 362 | } |
363 | + else if (this.isErrored) | ||
364 | + { | ||
365 | + statusText = "\247c" + I18n.format("gui.status.startuperror"); | ||
366 | + } | ||
348 | else if (this.canBeToggled) | 367 | else if (this.canBeToggled) |
349 | { | 368 | { |
350 | if (!this.enabled && !this.willBeEnabled) statusText = "\2477" + I18n.format("gui.status.disabled"); | 369 | if (!this.enabled && !this.willBeEnabled) statusText = "\2477" + I18n.format("gui.status.disabled"); |
java/common/com/mumfrey/liteloader/api/ModInfoDecorator.java
@@ -21,4 +21,29 @@ public interface ModInfoDecorator extends CustomisationProvider | @@ -21,4 +21,29 @@ public interface ModInfoDecorator extends CustomisationProvider | ||
21 | * @param icons | 21 | * @param icons |
22 | */ | 22 | */ |
23 | public abstract void addIcons(ModInfo<?> mod, List<IconTextured> icons); | 23 | public abstract void addIcons(ModInfo<?> mod, List<IconTextured> icons); |
24 | + | ||
25 | + /** | ||
26 | + * Allows this decorator to modify the status text for the specified mod, return null if no modification required | ||
27 | + * | ||
28 | + * @param statusText | ||
29 | + * @return | ||
30 | + */ | ||
31 | + public abstract String modifyStatusText(ModInfo<?> mod, String statusText); | ||
32 | + | ||
33 | + /** | ||
34 | + * Allow decorators to draw custom content on the mod list entries | ||
35 | + * | ||
36 | + * @param mouseX Mouse X position | ||
37 | + * @param mouseY Mouse Y position | ||
38 | + * @param partialTicks | ||
39 | + * @param xPosition Panel X position | ||
40 | + * @param yPosition Panel Y position | ||
41 | + * @param width Panel width | ||
42 | + * @param selected Panel height | ||
43 | + * @param mod ModInfo | ||
44 | + * @param gradientColour | ||
45 | + * @param titleColour | ||
46 | + * @param statusColour | ||
47 | + */ | ||
48 | + public abstract void onDrawListEntry(int mouseX, int mouseY, float partialTicks, int xPosition, int yPosition, int width, int height, boolean selected, ModInfo<?> mod, int gradientColour, int titleColour, int statusColour); | ||
24 | } | 49 | } |
resources/assets/liteloader/lang/en_US.lang
@@ -31,6 +31,7 @@ gui.status.pending.enabled=Enabled on next startup | @@ -31,6 +31,7 @@ gui.status.pending.enabled=Enabled on next startup | ||
31 | gui.status.pending.disabled=Disabled on next startup | 31 | gui.status.pending.disabled=Disabled on next startup |
32 | gui.status.missingdeps=Missing dependencies | 32 | gui.status.missingdeps=Missing dependencies |
33 | gui.status.missingapis=Missing required APIs | 33 | gui.status.missingapis=Missing required APIs |
34 | +gui.status.startuperror=Startup errors detected | ||
34 | gui.description.missingdeps=Missing dependencies: %s | 35 | gui.description.missingdeps=Missing dependencies: %s |
35 | gui.description.missingapis=Missing APIs: %s | 36 | gui.description.missingapis=Missing APIs: %s |
36 | 37 |