From 983e4b32a5720c61a5aee2be9fb86f7037443b46 Mon Sep 17 00:00:00 2001 From: Moritz Ruth Date: Sat, 13 Jun 2020 14:39:22 +0200 Subject: [PATCH] Make glass destroyable by guns --- build.gradle.kts | 4 ---- .../moritzruth/spigot_ttt/game/GameManager.kt | 9 +++++++++ .../game/items/impl/weapons/guns/Gun.kt | 18 +++++++++++++++++- .../game/items/impl/weapons/guns/Shotgun.kt | 6 +++--- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3637b1d..9d8bafd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,7 +15,6 @@ repositories { maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") maven("https://oss.sonatype.org/content/repositories/snapshots") maven("https://oss.sonatype.org/content/repositories/central") - maven("https://repo.dmulloy2.net/nexus/repository/public/") } dependencies { @@ -39,9 +38,6 @@ tasks.withType { } archiveFileName.set("TTT.jar") - dependencies { - exclude(dependency("org.spigotmc:spigot-api")) - } } tasks { diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt index 2366ae8..1fa77b3 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/GameManager.kt @@ -12,6 +12,8 @@ import de.moritzruth.spigot_ttt.game.players.Role import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.utils.call import org.bukkit.GameRule +import org.bukkit.Location +import org.bukkit.Material import kotlin.random.Random object GameManager { @@ -23,6 +25,8 @@ object GameManager { val world = plugin.server.getWorld("world")!! + val destroyedBlocks = mutableMapOf() + fun initialize() { adjustWorld() @@ -79,6 +83,11 @@ object GameManager { CorpseManager.destroyAll() ItemManager.reset() + destroyedBlocks.forEach { (location, material) -> + world.getBlockAt(location).type = material + } + destroyedBlocks.clear() + world.run { setStorm(false) time = 0 diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt index 43b8a14..b0e9483 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Gun.kt @@ -5,8 +5,8 @@ import de.moritzruth.spigot_ttt.TTTItemListener import de.moritzruth.spigot_ttt.game.GameEndEvent import de.moritzruth.spigot_ttt.game.GameManager 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.players.* import de.moritzruth.spigot_ttt.utils.applyMeta import de.moritzruth.spigot_ttt.utils.nextTick import de.moritzruth.spigot_ttt.utils.startItemDamageProgress @@ -88,6 +88,22 @@ abstract class Gun( ) { it !== tttPlayer.player } 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 if (entity is Player) { diff --git a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt index 080093c..baa9d9d 100644 --- a/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt +++ b/src/main/kotlin/de/moritzruth/spigot_ttt/game/items/impl/weapons/guns/Shotgun.kt @@ -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.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.TTTItem +import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.utils.heartsToHealth import de.moritzruth.spigot_ttt.utils.secondsToTicks @@ -38,8 +38,8 @@ object Shotgun: Gun( val distance = tttPlayer.player.location.distance(receiver.location) return when { - distance <= 1 -> heartsToHealth(8.0) - distance >= 14 -> 0.0 + distance <= 1 -> heartsToHealth(10.0) + distance >= 14 -> 0.5 distance > 8 -> heartsToHealth(1.5) else -> heartsToHealth(damage) }