Skip to content

Commit 81c347d

Browse files
committed
Implement nullable delegate
Also, I changed my mind on the util class naming convention, I like it now
1 parent 4b4ad00 commit 81c347d

26 files changed

+134
-197
lines changed

src/main/kotlin/com/demonwav/mcdev/platform/bukkit/BukkitFileIconProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class BukkitFileIconProvider : FileIconProvider {
3030
val module = ModuleUtilCore.findModuleForFile(file, project) ?: return null
3131
val bukkitModule = MinecraftFacet.getInstance(module, BukkitModuleType, SpigotModuleType, PaperModuleType) ?: return null
3232

33-
if (file == bukkitModule.getPluginYml()) {
33+
if (file == bukkitModule.pluginYml) {
3434
return bukkitModule.icon
3535
}
3636
return null

src/main/kotlin/com/demonwav/mcdev/platform/bukkit/BukkitModule.kt

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,8 @@ import com.demonwav.mcdev.platform.bukkit.util.BukkitConstants
2222
import com.demonwav.mcdev.util.addImplements
2323
import com.demonwav.mcdev.util.extendsOrImplements
2424
import com.demonwav.mcdev.util.findContainingMethod
25-
import com.google.common.base.Objects
25+
import com.demonwav.mcdev.util.nullable
2626
import com.intellij.openapi.project.Project
27-
import com.intellij.openapi.vfs.VirtualFile
2827
import com.intellij.psi.JavaPsiFacade
2928
import com.intellij.psi.PsiClass
3029
import com.intellij.psi.PsiClassType
@@ -41,7 +40,8 @@ import java.util.Arrays
4140

4241
class BukkitModule<T : AbstractModuleType<*>> constructor(facet: MinecraftFacet, type: T) : AbstractModule(facet) {
4342

44-
private var pluginYml: VirtualFile? = null
43+
var pluginYml by nullable { facet.findFile("plugin.yml", SourceType.RESOURCE) }
44+
private set
4545

4646
override lateinit var type: PlatformType
4747
private set
@@ -52,20 +52,6 @@ class BukkitModule<T : AbstractModuleType<*>> constructor(facet: MinecraftFacet,
5252
init {
5353
this.moduleType = type
5454
this.type = type.platformType
55-
setup()
56-
}
57-
58-
private fun setup() {
59-
pluginYml = facet.findFile("plugin.yml", SourceType.RESOURCE)
60-
}
61-
62-
fun getPluginYml(): VirtualFile? {
63-
if (pluginYml == null) {
64-
// try and find the file again if it's not already present
65-
// when this object was first created it may not have been ready
66-
setup()
67-
}
68-
return pluginYml
6955
}
7056

7157
override fun isEventClassValid(eventClass: PsiClass, method: PsiMethod?) =
@@ -190,23 +176,6 @@ class BukkitModule<T : AbstractModuleType<*>> constructor(facet: MinecraftFacet,
190176
pluginYml = null
191177
}
192178

193-
override fun equals(other: Any?): Boolean {
194-
if (this === other) {
195-
return true
196-
}
197-
if (other == null || javaClass != other.javaClass) {
198-
return false
199-
}
200-
val that = other as BukkitModule<*>?
201-
return Objects.equal(pluginYml, that!!.pluginYml) &&
202-
type === that.type &&
203-
Objects.equal(moduleType, that.moduleType)
204-
}
205-
206-
override fun hashCode(): Int {
207-
return Objects.hashCode(pluginYml, type, moduleType)
208-
}
209-
210179
companion object {
211180
fun generateBukkitStyleEventListenerMethod(chosenClass: PsiClass,
212181
chosenName: String,

src/main/kotlin/com/demonwav/mcdev/platform/bungeecord/BungeeCordFileIconProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class BungeeCordFileIconProvider : FileIconProvider {
3131
val module = ModuleUtilCore.findModuleForFile(file, project) ?: return null
3232
val bungeecordModule = MinecraftFacet.getInstance(module, BungeeCordModuleType) ?: return null
3333

34-
if (file == bungeecordModule.getPluginYml()) {
34+
if (file == bungeecordModule.pluginYml) {
3535
return bungeecordModule.icon
3636
}
3737
return null

src/main/kotlin/com/demonwav/mcdev/platform/bungeecord/BungeeCordModule.kt

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import com.demonwav.mcdev.platform.bungeecord.generation.BungeeCordGenerationDat
2121
import com.demonwav.mcdev.platform.bungeecord.util.BungeeCordConstants
2222
import com.demonwav.mcdev.util.addImplements
2323
import com.demonwav.mcdev.util.extendsOrImplements
24-
import com.intellij.openapi.vfs.VirtualFile
24+
import com.demonwav.mcdev.util.nullable
2525
import com.intellij.psi.JavaPsiFacade
2626
import com.intellij.psi.PsiClass
2727
import com.intellij.psi.PsiElement
@@ -33,24 +33,8 @@ import org.jetbrains.annotations.Contract
3333

3434
class BungeeCordModule internal constructor(facet: MinecraftFacet) : AbstractModule(facet) {
3535

36-
private var pluginYml: VirtualFile? = null
37-
38-
init {
39-
setup()
40-
}
41-
42-
private fun setup() {
43-
pluginYml = facet.findFile("plugin.yml", SourceType.RESOURCE)
44-
}
45-
46-
fun getPluginYml(): VirtualFile? {
47-
if (pluginYml == null) {
48-
// try and find the file again if it's not already present
49-
// when this object was first created it may not have been ready
50-
setup()
51-
}
52-
return pluginYml
53-
}
36+
var pluginYml by nullable { facet.findFile("plugin.yml", SourceType.RESOURCE) }
37+
private set
5438

5539
override val moduleType = BungeeCordModuleType
5640
override val type = PlatformType.BUNGEECORD

src/main/kotlin/com/demonwav/mcdev/platform/canary/CanaryModule.kt

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import com.demonwav.mcdev.platform.AbstractModuleType
1818
import com.demonwav.mcdev.platform.PlatformType
1919
import com.demonwav.mcdev.platform.canary.generation.CanaryGenerationData
2020
import com.demonwav.mcdev.platform.canary.util.CanaryConstants
21+
import com.demonwav.mcdev.util.nullable
2122
import com.intellij.openapi.project.Project
22-
import com.intellij.openapi.vfs.VirtualFile
2323
import com.intellij.psi.JavaPsiFacade
2424
import com.intellij.psi.PsiAnnotationMemberValue
2525
import com.intellij.psi.PsiClass
@@ -31,21 +31,10 @@ import com.intellij.psi.search.GlobalSearchScope
3131
class CanaryModule<out T : AbstractModuleType<*>>(facet: MinecraftFacet, override val moduleType: T) : AbstractModule(facet) {
3232

3333
override val type: PlatformType = moduleType.platformType
34-
var canaryInf: VirtualFile? = null
35-
get() {
36-
if (field == null) {
37-
field = facet.findFile(CanaryConstants.CANARY_INF, SourceType.RESOURCE)
38-
}
39-
return field
40-
}
34+
35+
var canaryInf by nullable { facet.findFile(CanaryConstants.CANARY_INF, SourceType.RESOURCE) }
4136
private set
42-
var neptuneInf: VirtualFile? = null
43-
get() {
44-
if (field == null) {
45-
field = facet.findFile(CanaryConstants.NEPTUNE_INF, SourceType.RESOURCE)
46-
}
47-
return field
48-
}
37+
var neptuneInf by nullable { facet.findFile(CanaryConstants.NEPTUNE_INF, SourceType.RESOURCE) }
4938
private set
5039

5140
override fun isEventClassValid(eventClass: PsiClass, method: PsiMethod?) =

src/main/kotlin/com/demonwav/mcdev/platform/forge/ForgeFileIconProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class ForgeFileIconProvider : FileIconProvider {
3131
val module = ModuleUtilCore.findModuleForFile(file, project) ?: return null
3232
val forgeModule = MinecraftFacet.getInstance(module, ForgeModuleType) ?: return null
3333

34-
if (file == forgeModule.getMcmod()) {
34+
if (file == forgeModule.mcmod) {
3535
return forgeModule.icon
3636
}
3737
return null

src/main/kotlin/com/demonwav/mcdev/platform/forge/ForgeModule.kt

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import com.demonwav.mcdev.platform.AbstractModule
1818
import com.demonwav.mcdev.platform.PlatformType
1919
import com.demonwav.mcdev.platform.forge.util.ForgeConstants
2020
import com.demonwav.mcdev.util.extendsOrImplements
21-
import com.intellij.openapi.vfs.VirtualFile
21+
import com.demonwav.mcdev.util.nullable
2222
import com.intellij.psi.JavaPsiFacade
2323
import com.intellij.psi.PsiClass
2424
import com.intellij.psi.PsiClassType
@@ -32,15 +32,8 @@ import org.jetbrains.annotations.Contract
3232

3333
class ForgeModule internal constructor(facet: MinecraftFacet) : AbstractModule(facet) {
3434

35-
private var mcmod: VirtualFile? = null
36-
37-
init {
38-
setup()
39-
}
40-
41-
private fun setup() {
42-
mcmod = facet.findFile(ForgeConstants.MCMOD_INFO, SourceType.RESOURCE)
43-
}
35+
var mcmod by nullable { facet.findFile(ForgeConstants.MCMOD_INFO, SourceType.RESOURCE) }
36+
private set
4437

4538
override val moduleType = ForgeModuleType
4639
override val type = PlatformType.FORGE
@@ -87,15 +80,6 @@ class ForgeModule internal constructor(facet: MinecraftFacet) : AbstractModule(f
8780

8881
override fun isStaticListenerSupported(method: PsiMethod) = true
8982

90-
fun getMcmod(): VirtualFile? {
91-
if (mcmod == null) {
92-
// try and find the file again if it's not already present
93-
// when this object was first created it may not have been ready
94-
setup()
95-
}
96-
return mcmod
97-
}
98-
9983
override fun generateEventListenerMethod(containingClass: PsiClass,
10084
chosenClass: PsiClass,
10185
chosenName: String,

src/main/kotlin/com/demonwav/mcdev/platform/liteloader/LiteLoaderFileIconProvider.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class LiteLoaderFileIconProvider : FileIconProvider {
2929
val module = ModuleUtilCore.findModuleForFile(file, project) ?: return null
3030
val liteloaderModule = MinecraftFacet.getInstance(module, LiteLoaderModuleType) ?: return null
3131

32-
if (file == liteloaderModule.getLitemodJson()) {
32+
if (file == liteloaderModule.litemodJson) {
3333
return liteloaderModule.icon
3434
}
3535
return null

src/main/kotlin/com/demonwav/mcdev/platform/liteloader/LiteLoaderModule.kt

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,16 @@ import com.demonwav.mcdev.facet.MinecraftFacet
1616
import com.demonwav.mcdev.platform.AbstractModule
1717
import com.demonwav.mcdev.platform.PlatformType
1818
import com.demonwav.mcdev.platform.liteloader.util.LiteLoaderConstants
19-
import com.intellij.openapi.vfs.VirtualFile
19+
import com.demonwav.mcdev.util.nullable
2020
import com.intellij.psi.PsiClass
2121
import com.intellij.psi.PsiElement
2222
import com.intellij.psi.PsiIdentifier
2323
import com.intellij.psi.PsiMethod
2424

2525
class LiteLoaderModule internal constructor(facet: MinecraftFacet) : AbstractModule(facet) {
2626

27-
private var litemodJson: VirtualFile? = null
28-
29-
init {
30-
setup()
31-
}
32-
33-
private fun setup() {
34-
litemodJson = facet.findFile(LiteLoaderConstants.LITEMOD_JSON, SourceType.RESOURCE)
35-
}
36-
37-
fun getLitemodJson(): VirtualFile? {
38-
if (litemodJson == null) {
39-
setup()
40-
}
41-
return litemodJson
42-
}
27+
var litemodJson by nullable { facet.findFile(LiteLoaderConstants.LITEMOD_JSON, SourceType.RESOURCE) }
28+
private set
4329

4430
override val moduleType = LiteLoaderModuleType
4531
override val type = PlatformType.LITELOADER

src/main/kotlin/com/demonwav/mcdev/platform/mcp/McpModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class McpModule(facet: MinecraftFacet) : AbstractModule(facet) {
4040

4141
override fun writeErrorMessageForEventParameter(eventClass: PsiClass, method: PsiMethod) = ""
4242

43-
fun getSettings() = settings.state
43+
private fun getSettings() = settings.state
4444

4545
fun updateSettings(data: McpModuleSettings.State) {
4646
this.settings.loadState(data)

0 commit comments

Comments
 (0)