Commit c6092c8fbb8ca596ab9d0fe9c02e81266f9269da

Authored by Mumfrey
1 parent 3fba94f0

Pass key to container when fetching mod descriptions

java/common/com/mumfrey/liteloader/core/Mod.java
1 -package com.mumfrey.liteloader.core;  
2 -  
3 -import com.mumfrey.liteloader.LiteMod;  
4 -import com.mumfrey.liteloader.interfaces.LoadableMod;  
5 -  
6 -/**  
7 - * ModInfo for an active mod instance  
8 - *  
9 - * @author Adam Mummery-Smith  
10 - */  
11 -class Mod extends ModInfo<LoadableMod<?>>  
12 -{  
13 - /**  
14 - * Mod class  
15 - */  
16 - private final Class<? extends LiteMod> modClass;  
17 -  
18 - /**  
19 - * Mod's key identifier, usually the class simplename  
20 - */  
21 - private final String key;  
22 -  
23 - /**  
24 - * Mod's identifier (from metadata)  
25 - */  
26 - private final String identifier;  
27 -  
28 - /**  
29 - * Mod instance  
30 - */  
31 - private LiteMod instance;  
32 -  
33 - /**  
34 - * Mod display name, initially read from metadata then replaced with real name once instanced  
35 - */  
36 - private String name;  
37 -  
38 - /**  
39 - * Mod display name, initially read from version then replaced with real version once instanced  
40 - */  
41 - private String version;  
42 -  
43 - /**  
44 - * @param container  
45 - * @param modClass  
46 - */  
47 - public Mod(LoadableMod<?> container, Class<? extends LiteMod> modClass)  
48 - {  
49 - this(container, modClass, container != null ? container.getIdentifier() : LiteLoaderEnumerator.getModClassName(modClass));  
50 - }  
51 -  
52 - /**  
53 - * @param container  
54 - * @param modClass  
55 - * @param identifier  
56 - */  
57 - public Mod(LoadableMod<?> container, Class<? extends LiteMod> modClass, String identifier)  
58 - {  
59 - super(container != null ? container : LoadableMod.NONE, true);  
60 -  
61 - this.modClass = modClass;  
62 - this.key = modClass.getSimpleName();  
63 - this.identifier = identifier.toLowerCase();  
64 - this.name = this.container.getDisplayName();  
65 - this.version = this.container.getVersion();  
66 - }  
67 -  
68 - /**  
69 - * Called by the mod manager to instance the mod  
70 - *  
71 - * @throws InstantiationException  
72 - * @throws IllegalAccessException  
73 - */  
74 - LiteMod newInstance() throws InstantiationException, IllegalAccessException  
75 - {  
76 - if (this.instance != null)  
77 - {  
78 - throw new InstantiationException("Attempted to create an instance of " + this.key + " but the instance was already created");  
79 - }  
80 -  
81 - this.instance = this.modClass.newInstance();  
82 -  
83 - String name = this.instance.getName();  
84 - if (name != null) this.name = name;  
85 -  
86 - String version = this.instance.getVersion();  
87 - if (version != null) this.version = version;  
88 -  
89 - return this.instance;  
90 - }  
91 -  
92 - /* (non-Javadoc)  
93 - * @see com.mumfrey.liteloader.core.ModInfo#isToggleable()  
94 - */  
95 - @Override  
96 - public boolean isToggleable()  
97 - {  
98 - return true;  
99 - }  
100 -  
101 - /* (non-Javadoc)  
102 - * @see com.mumfrey.liteloader.core.ModInfo#getMod()  
103 - */  
104 - @Override  
105 - public LiteMod getMod()  
106 - {  
107 - return this.instance;  
108 - }  
109 -  
110 - /* (non-Javadoc)  
111 - * @see com.mumfrey.liteloader.core.ModInfo#getModClass()  
112 - */  
113 - @Override  
114 - public Class<? extends LiteMod> getModClass()  
115 - {  
116 - return this.modClass;  
117 - }  
118 -  
119 - /* (non-Javadoc)  
120 - * @see com.mumfrey.liteloader.core.ModInfo#getDisplayName()  
121 - */  
122 - @Override  
123 - public String getDisplayName()  
124 - {  
125 - return this.name;  
126 - }  
127 -  
128 - /* (non-Javadoc)  
129 - * @see com.mumfrey.liteloader.core.ModInfo#getVersion()  
130 - */  
131 - @Override  
132 - public String getVersion()  
133 - {  
134 - return this.version;  
135 - }  
136 -  
137 - /* (non-Javadoc)  
138 - * @see com.mumfrey.liteloader.core.ModInfo#getModClassName()  
139 - */  
140 - @Override  
141 - public String getModClassName()  
142 - {  
143 - return this.modClass.getName();  
144 - }  
145 -  
146 - /* (non-Javadoc)  
147 - * @see com.mumfrey.liteloader.core.ModInfo#getModClassSimpleName()  
148 - */  
149 - @Override  
150 - public String getModClassSimpleName()  
151 - {  
152 - return this.key;  
153 - }  
154 -  
155 - /* (non-Javadoc)  
156 - * @see com.mumfrey.liteloader.core.ModInfo#getIdentifier()  
157 - */  
158 - @Override  
159 - public String getIdentifier()  
160 - {  
161 - return this.identifier;  
162 - }  
163 -  
164 - /**  
165 - * Get whether any of the valid identifiers match the supplied name  
166 - *  
167 - * @param name  
168 - */  
169 - public boolean matchesName(String name)  
170 - {  
171 - return (name.equalsIgnoreCase(this.instance.getName()) || name.equalsIgnoreCase(this.identifier) || name.equalsIgnoreCase(this.key));  
172 - }  
173 -  
174 - /**  
175 - * Get whether ths mod identifier matches the supplied identifier  
176 - *  
177 - * @param identifier  
178 - */  
179 - public boolean matchesIdentifier(String identifier)  
180 - {  
181 - return identifier.equalsIgnoreCase(this.identifier);  
182 - }  
183 -  
184 - /* (non-Javadoc)  
185 - * @see java.lang.Object#equals(java.lang.Object)  
186 - */  
187 - @Override  
188 - public boolean equals(Object other)  
189 - {  
190 - if (other == null) return false;  
191 - if (!(other instanceof Mod)) return false;  
192 - return ((Mod)other).key.equals(this.key);  
193 - }  
194 -  
195 - /* (non-Javadoc)  
196 - * @see java.lang.Object#hashCode()  
197 - */  
198 - @Override  
199 - public int hashCode()  
200 - {  
201 - return this.key.hashCode();  
202 - }  
203 -} 1 +package com.mumfrey.liteloader.core;
  2 +
  3 +import com.mumfrey.liteloader.LiteMod;
  4 +import com.mumfrey.liteloader.interfaces.LoadableMod;
  5 +
  6 +/**
  7 + * ModInfo for an active mod instance
  8 + *
  9 + * @author Adam Mummery-Smith
  10 + */
  11 +class Mod extends ModInfo<LoadableMod<?>>
  12 +{
  13 + /**
  14 + * Mod class
  15 + */
  16 + private final Class<? extends LiteMod> modClass;
  17 +
  18 + /**
  19 + * Mod's key identifier, usually the class simplename
  20 + */
  21 + private final String key;
  22 +
  23 + /**
  24 + * Mod's identifier (from metadata)
  25 + */
  26 + private final String identifier;
  27 +
  28 + /**
  29 + * Mod instance
  30 + */
  31 + private LiteMod instance;
  32 +
  33 + /**
  34 + * Mod display name, initially read from metadata then replaced with real name once instanced
  35 + */
  36 + private String name;
  37 +
  38 + /**
  39 + * Mod display name, initially read from version then replaced with real version once instanced
  40 + */
  41 + private String version;
  42 +
  43 + /**
  44 + * @param container
  45 + * @param modClass
  46 + */
  47 + public Mod(LoadableMod<?> container, Class<? extends LiteMod> modClass)
  48 + {
  49 + this(container, modClass, container != null ? container.getIdentifier() : LiteLoaderEnumerator.getModClassName(modClass));
  50 + }
  51 +
  52 + /**
  53 + * @param container
  54 + * @param modClass
  55 + * @param identifier
  56 + */
  57 + public Mod(LoadableMod<?> container, Class<? extends LiteMod> modClass, String identifier)
  58 + {
  59 + super(container != null ? container : LoadableMod.NONE, true);
  60 +
  61 + this.modClass = modClass;
  62 + this.key = modClass.getSimpleName();
  63 + this.identifier = identifier.toLowerCase();
  64 + this.name = this.container.getDisplayName();
  65 + this.version = this.container.getVersion();
  66 + }
  67 +
  68 + /**
  69 + * Called by the mod manager to instance the mod
  70 + *
  71 + * @throws InstantiationException
  72 + * @throws IllegalAccessException
  73 + */
  74 + LiteMod newInstance() throws InstantiationException, IllegalAccessException
  75 + {
  76 + if (this.instance != null)
  77 + {
  78 + throw new InstantiationException("Attempted to create an instance of " + this.key + " but the instance was already created");
  79 + }
  80 +
  81 + this.instance = this.modClass.newInstance();
  82 +
  83 + String name = this.instance.getName();
  84 + if (name != null) this.name = name;
  85 +
  86 + String version = this.instance.getVersion();
  87 + if (version != null) this.version = version;
  88 +
  89 + return this.instance;
  90 + }
  91 +
  92 + /* (non-Javadoc)
  93 + * @see com.mumfrey.liteloader.core.ModInfo#isToggleable()
  94 + */
  95 + @Override
  96 + public boolean isToggleable()
  97 + {
  98 + return true;
  99 + }
  100 +
  101 + /* (non-Javadoc)
  102 + * @see com.mumfrey.liteloader.core.ModInfo#getMod()
  103 + */
  104 + @Override
  105 + public LiteMod getMod()
  106 + {
  107 + return this.instance;
  108 + }
  109 +
  110 + /* (non-Javadoc)
  111 + * @see com.mumfrey.liteloader.core.ModInfo#getModClass()
  112 + */
  113 + @Override
  114 + public Class<? extends LiteMod> getModClass()
  115 + {
  116 + return this.modClass;
  117 + }
  118 +
  119 + /* (non-Javadoc)
  120 + * @see com.mumfrey.liteloader.core.ModInfo#getDisplayName()
  121 + */
  122 + @Override
  123 + public String getDisplayName()
  124 + {
  125 + return this.name;
  126 + }
  127 +
  128 + /**
  129 + * Get the mod description
  130 + */
  131 + @Override
  132 + public String getDescription()
  133 + {
  134 + return this.container.getDescription(this.key);
  135 + }
  136 +
  137 + /* (non-Javadoc)
  138 + * @see com.mumfrey.liteloader.core.ModInfo#getVersion()
  139 + */
  140 + @Override
  141 + public String getVersion()
  142 + {
  143 + return this.version;
  144 + }
  145 +
  146 + /* (non-Javadoc)
  147 + * @see com.mumfrey.liteloader.core.ModInfo#getModClassName()
  148 + */
  149 + @Override
  150 + public String getModClassName()
  151 + {
  152 + return this.modClass.getName();
  153 + }
  154 +
  155 + /* (non-Javadoc)
  156 + * @see com.mumfrey.liteloader.core.ModInfo#getModClassSimpleName()
  157 + */
  158 + @Override
  159 + public String getModClassSimpleName()
  160 + {
  161 + return this.key;
  162 + }
  163 +
  164 + /* (non-Javadoc)
  165 + * @see com.mumfrey.liteloader.core.ModInfo#getIdentifier()
  166 + */
  167 + @Override
  168 + public String getIdentifier()
  169 + {
  170 + return this.identifier;
  171 + }
  172 +
  173 + /**
  174 + * Get whether any of the valid identifiers match the supplied name
  175 + *
  176 + * @param name
  177 + */
  178 + public boolean matchesName(String name)
  179 + {
  180 + return (name.equalsIgnoreCase(this.instance.getName()) || name.equalsIgnoreCase(this.identifier) || name.equalsIgnoreCase(this.key));
  181 + }
  182 +
  183 + /**
  184 + * Get whether ths mod identifier matches the supplied identifier
  185 + *
  186 + * @param identifier
  187 + */
  188 + public boolean matchesIdentifier(String identifier)
  189 + {
  190 + return identifier.equalsIgnoreCase(this.identifier);
  191 + }
  192 +
  193 + /* (non-Javadoc)
  194 + * @see java.lang.Object#equals(java.lang.Object)
  195 + */
  196 + @Override
  197 + public boolean equals(Object other)
  198 + {
  199 + if (other == null) return false;
  200 + if (!(other instanceof Mod)) return false;
  201 + return ((Mod)other).key.equals(this.key);
  202 + }
  203 +
  204 + /* (non-Javadoc)
  205 + * @see java.lang.Object#hashCode()
  206 + */
  207 + @Override
  208 + public int hashCode()
  209 + {
  210 + return this.key.hashCode();
  211 + }
  212 +}