9
0
mirror of https://github.com/Auxilor/EcoSkills.git synced 2026-01-02 22:02:19 +00:00

Merge pull request #11

Remade how hologram spawner worked, added GHolo/CMI support
This commit is contained in:
Will FP
2021-10-24 14:53:12 +01:00
committed by GitHub
15 changed files with 114 additions and 18 deletions

View File

@@ -15,6 +15,14 @@ plugins {
id 'java'
}
publishing {
publications {
maven(MavenPublication) {
from(components.java)
}
}
}
dependencies {
implementation project(":eco-core").getSubprojects()
}
@@ -42,7 +50,7 @@ allprojects {
dependencies {
compileOnly 'com.willfp:eco:6.11.0'
compileOnly fileTree(dir: '../../lib', include: ['*.jar'])
compileOnly 'org.jetbrains:annotations:19.0.0'
compileOnly 'org.jetbrains.kotlin:kotlin-stdlib:1.5.21'
}
@@ -77,7 +85,7 @@ shadowJar {
}
jar {
archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + " " + "unshaded" + ".jar"
archiveFileName = findProperty("plugin-name") + " v" + findProperty("version") + ".jar"
}
group = 'com.willfp'

View File

@@ -18,6 +18,10 @@ import com.willfp.ecoskills.effects.Effects;
import com.willfp.ecoskills.integrations.EcoEnchantsEnchantingLeveller;
import com.willfp.ecoskills.integrations.afk.AFKHandlerKt;
import com.willfp.ecoskills.integrations.afk.impl.AFKIntegrationEssentials;
import com.willfp.ecoskills.integrations.hologram.HologramManager;
import com.willfp.ecoskills.integrations.hologram.wrappers.CMIWrapper;
import com.willfp.ecoskills.integrations.hologram.wrappers.GHoloWrapper;
import com.willfp.ecoskills.integrations.hologram.wrappers.HolographicDisplaysWrapper;
import com.willfp.ecoskills.skills.Skill;
import com.willfp.ecoskills.skills.SkillDisplayListener;
import com.willfp.ecoskills.skills.SkillLevellingListener;
@@ -117,7 +121,8 @@ public class EcoSkillsPlugin extends EcoPlugin {
new SkillDisplayListener(this),
new StatModifierListener(),
new DataListener(),
new PlayerBlockListener(this)
new PlayerBlockListener(this),
new DamageIndicatorListener(this)
);
}
@@ -132,7 +137,9 @@ public class EcoSkillsPlugin extends EcoPlugin {
@Override
protected List<IntegrationLoader> loadIntegrationLoaders() {
return Arrays.asList(
new IntegrationLoader("HolographicDisplays", () -> this.getEventManager().registerListener(new DamageIndicatorListener(this))),
new IntegrationLoader("HolographicDisplays", () -> HologramManager.Companion.register(new HolographicDisplaysWrapper())),
new IntegrationLoader("GHolo", () -> HologramManager.Companion.register(new GHoloWrapper())),
new IntegrationLoader("CMI", () -> HologramManager.Companion.register(new CMIWrapper())),
new IntegrationLoader("EcoEnchants", () -> this.getEventManager().registerListener(new EcoEnchantsEnchantingLeveller(this))),
new IntegrationLoader("Essentials", () -> AFKHandlerKt.registerIntegration(new AFKIntegrationEssentials()))
);

View File

@@ -12,7 +12,7 @@ import java.util.*
@Suppress("UNCHECKED_CAST")
class MySQLDataHandler(
private val plugin: EcoSkillsPlugin
plugin: EcoSkillsPlugin
) : DataHandler {
init {
Database.connect(

View File

@@ -6,7 +6,7 @@ import java.util.*
@Suppress("UNCHECKED_CAST")
class YamlDataHandler(
private val plugin: EcoSkillsPlugin
plugin: EcoSkillsPlugin
) : DataHandler {
private val dataYml = DataYml(plugin)

View File

@@ -0,0 +1,21 @@
package com.willfp.ecoskills.integrations.hologram
import org.bukkit.Location
class HologramManager {
companion object {
private var hologramWrappers: MutableList<HologramWrapper> = ArrayList()
fun register(wrapper: HologramWrapper) {
hologramWrappers.add(wrapper)
}
fun spawnHolo(loc: Location, contents: List<String>, removeAfter: Int) {
if (hologramWrappers.isEmpty()) return
hologramWrappers[0].spawnHolo(loc, contents, removeAfter)
}
}
}

View File

@@ -0,0 +1,7 @@
package com.willfp.ecoskills.integrations.hologram
import org.bukkit.Location
interface HologramWrapper {
fun spawnHolo(loc: Location, contents: List<String>, toRemove: Int)
}

View File

@@ -0,0 +1,23 @@
package com.willfp.ecoskills.integrations.hologram.wrappers
import com.Zrips.CMI.CMI
import com.willfp.ecoskills.integrations.hologram.HologramWrapper
import com.Zrips.CMI.Modules.Holograms.CMIHologram
import com.Zrips.CMI.Modules.Holograms.HologramManager
import java.util.UUID
import com.willfp.ecoskills.EcoSkillsPlugin
import net.Zrips.CMILib.Container.CMILocation
import org.bukkit.Location
class CMIWrapper : HologramWrapper {
override fun spawnHolo(loc: Location, contents: List<String>, toRemove: Int) {
val holo = CMIHologram(UUID.randomUUID().toString(), CMILocation(loc))
holo.enable()
holo.lines = contents
CMI.getInstance().hologramManager.addHologram(holo);
EcoSkillsPlugin.getInstance().scheduler.runLater(
{ CMI.getInstance().hologramManager.removeHolo(holo); },
30
)
}
}

View File

@@ -0,0 +1,19 @@
package com.willfp.ecoskills.integrations.hologram.wrappers
import com.willfp.ecoskills.integrations.hologram.HologramWrapper
import me.gholo.api.GHoloAPI
import com.willfp.ecoskills.EcoSkillsPlugin
import org.bukkit.Location
class GHoloWrapper : HologramWrapper {
var id = 0
override fun spawnHolo(loc: Location, contents: List<String>, toRemove: Int) {
val api = GHoloAPI()
val res = id++
api.insertHolo(res.toString(), loc, contents)
EcoSkillsPlugin.getInstance().scheduler.runLater(
{ api.removeHolo(res.toString()) },
30
)
}
}

View File

@@ -0,0 +1,17 @@
package com.willfp.ecoskills.integrations.hologram.wrappers
import com.willfp.ecoskills.integrations.hologram.HologramWrapper
import com.gmail.filoghost.holographicdisplays.api.Hologram
import com.gmail.filoghost.holographicdisplays.api.HologramsAPI
import com.willfp.ecoskills.EcoSkillsPlugin
import org.bukkit.Location
class HolographicDisplaysWrapper : HologramWrapper {
override fun spawnHolo(loc: Location, contents: List<String>, toRemove: Int) {
val hologram = HologramsAPI.createHologram(EcoSkillsPlugin.getInstance(), loc)
for (s in contents) {
hologram.appendTextLine(s)
}
EcoSkillsPlugin.getInstance().scheduler.runLater({ hologram.delete() }, 30)
}
}

View File

@@ -1,9 +1,9 @@
package com.willfp.ecoskills.stats
import com.gmail.filoghost.holographicdisplays.api.HologramsAPI
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.util.NumberUtils
import com.willfp.eco.util.StringUtils
import com.willfp.ecoskills.integrations.hologram.HologramManager
import com.willfp.ecoskills.isCrit
import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority
@@ -36,8 +36,6 @@ class DamageIndicatorListener(
NumberUtils.randFloat(-z, z)
)
val hologram = HologramsAPI.createHologram(plugin, location)
var text: String = if (event.isCrit) {
plugin.configYml.getString("damage-indicators.format.crit", false)
} else {
@@ -46,14 +44,8 @@ class DamageIndicatorListener(
text = text.replace("%damage%", NumberUtils.format(event.damage))
try {
text = StringUtils.format(text)
text = StringUtils.format(text)
hologram.appendTextLine(text)
plugin.scheduler.runLater({
hologram.delete()
}, 30)
} catch (ignored: Exception) {}
HologramManager.spawnHolo(location, listOf(text), 30);
}
}

View File

@@ -309,7 +309,7 @@ stats:
chance-per-level: 0.5
damage-indicators:
# Requires HolographicDisplays to be installed
# Requires HolographicDisplays/GHolo/CMI to be installed
enabled: true
format:
normal: "&7%damage%"

View File

@@ -11,6 +11,8 @@ depend:
softdepend:
- HolographicDisplays
- Essentials
- GHolo
- CMI
libraries:
- 'org.jetbrains.kotlin:kotlin-stdlib:1.5.21'
- 'org.jetbrains.exposed:exposed-core:0.34.1'

BIN
lib/CMIAPI8.7.8.2.jar Normal file

Binary file not shown.

BIN
lib/CMILib1.0.4.1.jar Normal file

Binary file not shown.

BIN
lib/GHolo.jar Normal file

Binary file not shown.