Make glass destroyable by guns
This commit is contained in:
parent
ce133148f7
commit
983e4b32a5
4 changed files with 29 additions and 8 deletions
|
@ -15,7 +15,6 @@ repositories {
|
||||||
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
|
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
|
||||||
maven("https://oss.sonatype.org/content/repositories/snapshots")
|
maven("https://oss.sonatype.org/content/repositories/snapshots")
|
||||||
maven("https://oss.sonatype.org/content/repositories/central")
|
maven("https://oss.sonatype.org/content/repositories/central")
|
||||||
maven("https://repo.dmulloy2.net/nexus/repository/public/")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
@ -39,9 +38,6 @@ tasks.withType<ShadowJar> {
|
||||||
}
|
}
|
||||||
|
|
||||||
archiveFileName.set("TTT.jar")
|
archiveFileName.set("TTT.jar")
|
||||||
dependencies {
|
|
||||||
exclude(dependency("org.spigotmc:spigot-api"))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
|
|
|
@ -12,6 +12,8 @@ import de.moritzruth.spigot_ttt.game.players.Role
|
||||||
import de.moritzruth.spigot_ttt.plugin
|
import de.moritzruth.spigot_ttt.plugin
|
||||||
import de.moritzruth.spigot_ttt.utils.call
|
import de.moritzruth.spigot_ttt.utils.call
|
||||||
import org.bukkit.GameRule
|
import org.bukkit.GameRule
|
||||||
|
import org.bukkit.Location
|
||||||
|
import org.bukkit.Material
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
object GameManager {
|
object GameManager {
|
||||||
|
@ -23,6 +25,8 @@ object GameManager {
|
||||||
|
|
||||||
val world = plugin.server.getWorld("world")!!
|
val world = plugin.server.getWorld("world")!!
|
||||||
|
|
||||||
|
val destroyedBlocks = mutableMapOf<Location, Material>()
|
||||||
|
|
||||||
fun initialize() {
|
fun initialize() {
|
||||||
adjustWorld()
|
adjustWorld()
|
||||||
|
|
||||||
|
@ -79,6 +83,11 @@ object GameManager {
|
||||||
CorpseManager.destroyAll()
|
CorpseManager.destroyAll()
|
||||||
ItemManager.reset()
|
ItemManager.reset()
|
||||||
|
|
||||||
|
destroyedBlocks.forEach { (location, material) ->
|
||||||
|
world.getBlockAt(location).type = material
|
||||||
|
}
|
||||||
|
destroyedBlocks.clear()
|
||||||
|
|
||||||
world.run {
|
world.run {
|
||||||
setStorm(false)
|
setStorm(false)
|
||||||
time = 0
|
time = 0
|
||||||
|
|
|
@ -5,8 +5,8 @@ import de.moritzruth.spigot_ttt.TTTItemListener
|
||||||
import de.moritzruth.spigot_ttt.game.GameEndEvent
|
import de.moritzruth.spigot_ttt.game.GameEndEvent
|
||||||
import de.moritzruth.spigot_ttt.game.GameManager
|
import de.moritzruth.spigot_ttt.game.GameManager
|
||||||
import de.moritzruth.spigot_ttt.game.GamePhase
|
import de.moritzruth.spigot_ttt.game.GamePhase
|
||||||
import de.moritzruth.spigot_ttt.game.players.*
|
|
||||||
import de.moritzruth.spigot_ttt.game.items.*
|
import de.moritzruth.spigot_ttt.game.items.*
|
||||||
|
import de.moritzruth.spigot_ttt.game.players.*
|
||||||
import de.moritzruth.spigot_ttt.utils.applyMeta
|
import de.moritzruth.spigot_ttt.utils.applyMeta
|
||||||
import de.moritzruth.spigot_ttt.utils.nextTick
|
import de.moritzruth.spigot_ttt.utils.nextTick
|
||||||
import de.moritzruth.spigot_ttt.utils.startItemDamageProgress
|
import de.moritzruth.spigot_ttt.utils.startItemDamageProgress
|
||||||
|
@ -88,6 +88,22 @@ abstract class Gun(
|
||||||
) { it !== tttPlayer.player }
|
) { it !== tttPlayer.player }
|
||||||
|
|
||||||
if (rayTraceResult !== null) {
|
if (rayTraceResult !== null) {
|
||||||
|
val hitBlock = rayTraceResult.hitBlock
|
||||||
|
|
||||||
|
if (hitBlock != null) {
|
||||||
|
if (hitBlock.type.toString().contains("glass", true)) {
|
||||||
|
GameManager.destroyedBlocks[hitBlock.location] = hitBlock.type
|
||||||
|
hitBlock.type = Material.AIR
|
||||||
|
GameManager.world.playSound(
|
||||||
|
hitBlock.location,
|
||||||
|
Sound.BLOCK_GLASS_BREAK,
|
||||||
|
SoundCategory.BLOCKS,
|
||||||
|
1F,
|
||||||
|
1F
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
val entity = rayTraceResult.hitEntity
|
val entity = rayTraceResult.hitEntity
|
||||||
|
|
||||||
if (entity is Player) {
|
if (entity is Player) {
|
||||||
|
|
|
@ -2,9 +2,9 @@ package de.moritzruth.spigot_ttt.game.items.impl.weapons.guns
|
||||||
|
|
||||||
import de.moritzruth.spigot_ttt.Resourcepack
|
import de.moritzruth.spigot_ttt.Resourcepack
|
||||||
import de.moritzruth.spigot_ttt.game.GameManager
|
import de.moritzruth.spigot_ttt.game.GameManager
|
||||||
import de.moritzruth.spigot_ttt.game.players.TTTPlayer
|
|
||||||
import de.moritzruth.spigot_ttt.game.items.Spawning
|
import de.moritzruth.spigot_ttt.game.items.Spawning
|
||||||
import de.moritzruth.spigot_ttt.game.items.TTTItem
|
import de.moritzruth.spigot_ttt.game.items.TTTItem
|
||||||
|
import de.moritzruth.spigot_ttt.game.players.TTTPlayer
|
||||||
import de.moritzruth.spigot_ttt.plugin
|
import de.moritzruth.spigot_ttt.plugin
|
||||||
import de.moritzruth.spigot_ttt.utils.heartsToHealth
|
import de.moritzruth.spigot_ttt.utils.heartsToHealth
|
||||||
import de.moritzruth.spigot_ttt.utils.secondsToTicks
|
import de.moritzruth.spigot_ttt.utils.secondsToTicks
|
||||||
|
@ -38,8 +38,8 @@ object Shotgun: Gun(
|
||||||
val distance = tttPlayer.player.location.distance(receiver.location)
|
val distance = tttPlayer.player.location.distance(receiver.location)
|
||||||
|
|
||||||
return when {
|
return when {
|
||||||
distance <= 1 -> heartsToHealth(8.0)
|
distance <= 1 -> heartsToHealth(10.0)
|
||||||
distance >= 14 -> 0.0
|
distance >= 14 -> 0.5
|
||||||
distance > 8 -> heartsToHealth(1.5)
|
distance > 8 -> heartsToHealth(1.5)
|
||||||
else -> heartsToHealth(damage)
|
else -> heartsToHealth(damage)
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue