Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
# Conflicts:
#	server/src/main/kotlin/com/undefined/stellar/Main.kt
  • Loading branch information
StillLutto committed Dec 21, 2024
2 parents 05dc7b7 + ed62328 commit 8e340cd
Show file tree
Hide file tree
Showing 17 changed files with 261 additions and 228 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ open class ArgumentHandler {
fun addGameProfileArgument(name: String): GameProfileArgument =
addArgument { GameProfileArgument(base, name) }

fun addLocationArgument(name: String, type: LocationType = LocationType.LOCATION3D): LocationArgument =
fun addLocationArgument(name: String, type: LocationType = LocationType.LOCATION_3D): LocationArgument =
addArgument { LocationArgument(base, name, type) }

fun addBlockDataArgument(name: String): BlockDataArgument =
Expand Down Expand Up @@ -165,11 +165,8 @@ open class ArgumentHandler {
fun addDisplaySlotArgument(name: String): DisplaySlotArgument =
addArgument { DisplaySlotArgument(base, name) }

fun addScoreHolderArgument(name: String): ScoreHoldersArgument =
addArgument { ScoreHoldersArgument(base, name) }

fun addScoreHoldersArgument(name: String): ScoreHoldersArgument =
addArgument { ScoreHoldersArgument(base, name) }
fun addScoreHolderArgument(name: String, type: ScoreHolderType = ScoreHolderType.SINGLE): ScoreHolderArgument =
addArgument { ScoreHolderArgument(base, name, type) }

fun addAxisArgument(name: String): AxisArgument =
addArgument { AxisArgument(base, name) }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
@file:Suppress("UNCHECKED_CAST")

package com.undefined.stellar.argument.types.scoreboard

import com.undefined.stellar.AbstractStellarCommand
import com.undefined.stellar.argument.AbstractStellarArgument

class ScoreHoldersArgument(parent: AbstractStellarCommand<*>, name: String) : AbstractStellarArgument<ScoreHoldersArgument>(parent, name)
class ScoreHolderArgument(parent: AbstractStellarCommand<*>, name: String, val type: ScoreHolderType) : AbstractStellarArgument<ScoreHolderArgument>(parent, name)

class ScoreHolderArgument(parent: AbstractStellarCommand<*>, name: String) : AbstractStellarArgument<ScoreHolderArgument>(parent, name)
enum class ScoreHolderType {
SINGLE,
MULTIPLE;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import com.undefined.stellar.argument.AbstractStellarArgument
class LocationArgument(parent: AbstractStellarCommand<*>, name: String, val type: LocationType) : AbstractStellarArgument<LocationArgument>(parent, name)

enum class LocationType {
LOCATION3D,
LOCATION2D,
DOUBLE_LOCATION_3D,
DOUBLE_LOCATION_2D
}
LOCATION_3D,
LOCATION_2D,
PRECISE_LOCATION_3D,
PRECISE_LOCATION_2D
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.undefined.stellar.exception

class UnsupportedArgumentException : RuntimeException("This Argument is unsupported by Stellar! This is totally unintentional behaviour.")
import com.undefined.stellar.argument.AbstractStellarArgument

class UnsupportedArgumentException(val argument: AbstractStellarArgument<*>) : RuntimeException("${argument::class.simpleName} is unsupported by Stellar! This is totally unintentional behaviour.")
14 changes: 8 additions & 6 deletions server/src/main/kotlin/com/undefined/stellar/Main.kt
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
package com.undefined.stellar

import net.kyori.adventure.text.format.Style
import org.bukkit.Color
import org.bukkit.Bukkit
import org.bukkit.Material
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
import org.bukkit.plugin.java.JavaPlugin
import java.util.function.Predicate

class Main : JavaPlugin() {

override fun onEnable() {
StellarCommand("test")
.addColorArgument(name = "item")
if (Bukkit.getScoreboardManager()!!.mainScoreboard.getObjective("test") == null)
Bukkit.getScoreboardManager()!!.mainScoreboard.registerNewObjective("test", Criteria.HEALTH, "test")
StellarCommand("objective")
.addScoreHolderArgument(name = "holder")
.addExecution<Player> {
sender.sendMessage(getArgument<Style>("item").toString())
val holder = getArgument<String>("holder")
val item = ItemStack(Material.DIAMOND)
Bukkit.getPlayer(holder)?.inventory?.addItem(item)
}
.register(this)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import com.undefined.stellar.argument.types.player.GameModeArgument
import com.undefined.stellar.argument.types.primitive.*
import com.undefined.stellar.argument.types.registry.*
import com.undefined.stellar.argument.types.scoreboard.DisplaySlotArgument
import com.undefined.stellar.argument.types.scoreboard.ScoreHoldersArgument
import com.undefined.stellar.argument.types.scoreboard.ScoreHolderType
import com.undefined.stellar.argument.types.structure.MirrorArgument
import com.undefined.stellar.argument.types.structure.StructureRotationArgument
import com.undefined.stellar.argument.types.world.*
Expand Down Expand Up @@ -113,19 +113,15 @@ object ArgumentHelper {
is com.undefined.stellar.argument.types.entity.EntityArgument -> brigadier(argument.type)
is com.undefined.stellar.argument.types.player.GameProfileArgument -> GameProfileArgument.gameProfile()
is LocationArgument -> when (argument.type) {
LocationType.LOCATION3D -> BlockPosArgument.blockPos()
LocationType.LOCATION2D -> ColumnPosArgument.columnPos()
LocationType.DOUBLE_LOCATION_3D -> Vec3Argument.vec3()
LocationType.DOUBLE_LOCATION_2D -> Vec2Argument.vec2()
LocationType.LOCATION_3D -> BlockPosArgument.blockPos()
LocationType.LOCATION_2D -> ColumnPosArgument.columnPos()
LocationType.PRECISE_LOCATION_3D -> Vec3Argument.vec3()
LocationType.PRECISE_LOCATION_2D -> Vec2Argument.vec2()
}
is BlockDataArgument -> BlockStateArgument.block(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.block.BlockPredicateArgument -> BlockPredicateArgument.blockPredicate(
COMMAND_BUILD_CONTEXT
)
is com.undefined.stellar.argument.types.block.BlockPredicateArgument -> BlockPredicateArgument.blockPredicate(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.item.ItemArgument -> ItemArgument.item(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.item.ItemPredicateArgument -> ItemPredicateArgument.itemPredicate(
COMMAND_BUILD_CONTEXT
)
is com.undefined.stellar.argument.types.item.ItemPredicateArgument -> ItemPredicateArgument.itemPredicate(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.text.ColorArgument -> ColorArgument.color()
is com.undefined.stellar.argument.types.text.ComponentArgument -> ComponentArgument.textComponent()
is com.undefined.stellar.argument.types.text.StyleArgument -> throwArgumentVersionException(argument)
Expand All @@ -137,8 +133,10 @@ object ArgumentHelper {
is com.undefined.stellar.argument.types.math.AngleArgument -> AngleArgument.angle()
is com.undefined.stellar.argument.types.math.RotationArgument -> RotationArgument.rotation()
is DisplaySlotArgument -> ScoreboardSlotArgument.displaySlot()
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> ScoreHolderArgument.scoreHolder()
is ScoreHoldersArgument -> ScoreHolderArgument.scoreHolders()
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> when (argument.type) {
ScoreHolderType.SINGLE -> ScoreHolderArgument.scoreHolder()
ScoreHolderType.MULTIPLE -> ScoreHolderArgument.scoreHolders()
}
is AxisArgument -> SwizzleArgument.swizzle()
is com.undefined.stellar.argument.types.scoreboard.TeamArgument -> TeamArgument.team()
is ItemSlotArgument -> SlotArgument.slot()
Expand Down Expand Up @@ -180,7 +178,7 @@ object ArgumentHelper {
is EntityTypeArgument -> ResourceKeyArgument.key(Registry.ENTITY_TYPE.key())
is PotionArgument -> throwArgumentVersionException(argument)
is MemoryKeyArgument -> ResourceKeyArgument.key(Registry.MEMORY_MODULE_TYPE.key())
else -> throw UnsupportedArgumentException()
else -> throw UnsupportedArgumentException(argument)
}

fun <T : AbstractStellarArgument<*>> getParsedArgument(context: CommandContext<CommandSourceStack>, argument: T): Any? {
Expand Down Expand Up @@ -227,8 +225,10 @@ object ArgumentHelper {
Location(context.source.bukkitWorld, rotation.x, rotation.y, rotation.z)
}
is DisplaySlotArgument -> getBukkitDisplaySlot(ScoreboardSlotArgument.getDisplaySlot(context, argument.name))
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> ScoreHolderArgument.getName(context, argument.name)
is ScoreHoldersArgument -> ScoreHolderArgument.getNames(context, argument.name)
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> when (argument.type) {
ScoreHolderType.SINGLE -> ScoreHolderArgument.getName(context, argument.name)
ScoreHolderType.MULTIPLE -> ScoreHolderArgument.getNames(context, argument.name)
}
is AxisArgument -> getBukkitAxis(SwizzleArgument.getSwizzle(context, argument.name))
is com.undefined.stellar.argument.types.scoreboard.TeamArgument -> Bukkit.getScoreboardManager().mainScoreboard.getTeam(TeamArgument.getTeam(context, argument.name).name)
is ItemSlotArgument -> SlotArgument.getSlot(context, argument.name)
Expand Down Expand Up @@ -273,7 +273,7 @@ object ArgumentHelper {
is EntityTypeArgument -> org.bukkit.Registry.ENTITY_TYPE.get(getId(context, argument.name, Registry.ENTITY_TYPE_REGISTRY))
is PotionArgument -> throwArgumentVersionException(argument)
is MemoryKeyArgument -> org.bukkit.Registry.MEMORY_MODULE_TYPE.get(getId(context, argument.name, Registry.MEMORY_MODULE_TYPE_REGISTRY))
else -> throw UnsupportedArgumentException()
else -> throw UnsupportedArgumentException(argument)
}
}

Expand Down Expand Up @@ -466,10 +466,10 @@ object ArgumentHelper {
private fun getLocation(context: CommandContext<CommandSourceStack>, command: LocationArgument): Location {
val world = context.source.bukkitWorld
return when (command.type) {
LocationType.LOCATION3D -> context.getArgument(command.name, Coordinates::class.java).getBlockPos(context.source).toLocation(world);
LocationType.LOCATION2D -> ColumnPosArgument.getColumnPos(context, command.name).toLocation(world)
LocationType.DOUBLE_LOCATION_3D -> Vec3Argument.getVec3(context, command.name).toLocation(world)
LocationType.DOUBLE_LOCATION_2D -> Vec2Argument.getVec2(context, command.name).toLocation(world)
LocationType.LOCATION_3D -> context.getArgument(command.name, Coordinates::class.java).getBlockPos(context.source).toLocation(world);
LocationType.LOCATION_2D -> ColumnPosArgument.getColumnPos(context, command.name).toLocation(world)
LocationType.PRECISE_LOCATION_3D -> Vec3Argument.getVec3(context, command.name).toLocation(world)
LocationType.PRECISE_LOCATION_2D -> Vec2Argument.getVec2(context, command.name).toLocation(world)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import com.undefined.stellar.argument.types.misc.UUIDArgument
import com.undefined.stellar.argument.types.primitive.*
import com.undefined.stellar.argument.types.registry.*
import com.undefined.stellar.argument.types.scoreboard.DisplaySlotArgument
import com.undefined.stellar.argument.types.scoreboard.ScoreHoldersArgument
import com.undefined.stellar.argument.types.scoreboard.ScoreHolderType
import com.undefined.stellar.argument.types.structure.MirrorArgument
import com.undefined.stellar.argument.types.structure.StructureRotationArgument
import com.undefined.stellar.argument.types.world.*
Expand Down Expand Up @@ -113,19 +113,15 @@ object ArgumentHelper {
is com.undefined.stellar.argument.types.entity.EntityArgument -> brigadier(argument.type)
is com.undefined.stellar.argument.types.player.GameProfileArgument -> GameProfileArgument.gameProfile()
is LocationArgument -> when (argument.type) {
LocationType.LOCATION3D -> BlockPosArgument.blockPos()
LocationType.LOCATION2D -> ColumnPosArgument.columnPos()
LocationType.DOUBLE_LOCATION_3D -> Vec3Argument.vec3()
LocationType.DOUBLE_LOCATION_2D -> Vec2Argument.vec2()
LocationType.LOCATION_3D -> BlockPosArgument.blockPos()
LocationType.LOCATION_2D -> ColumnPosArgument.columnPos()
LocationType.PRECISE_LOCATION_3D -> Vec3Argument.vec3()
LocationType.PRECISE_LOCATION_2D -> Vec2Argument.vec2()
}
is BlockDataArgument -> BlockStateArgument.block(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.block.BlockPredicateArgument -> BlockPredicateArgument.blockPredicate(
COMMAND_BUILD_CONTEXT
)
is com.undefined.stellar.argument.types.block.BlockPredicateArgument -> BlockPredicateArgument.blockPredicate(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.item.ItemArgument -> ItemArgument.item(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.item.ItemPredicateArgument -> ItemPredicateArgument.itemPredicate(
COMMAND_BUILD_CONTEXT
)
is com.undefined.stellar.argument.types.item.ItemPredicateArgument -> ItemPredicateArgument.itemPredicate(COMMAND_BUILD_CONTEXT)
is com.undefined.stellar.argument.types.text.ColorArgument -> ColorArgument.color()
is com.undefined.stellar.argument.types.text.ComponentArgument -> ComponentArgument.textComponent()
is com.undefined.stellar.argument.types.text.StyleArgument -> throwArgumentVersionException(argument)
Expand All @@ -139,8 +135,10 @@ object ArgumentHelper {
is com.undefined.stellar.argument.types.math.AngleArgument -> AngleArgument.angle()
is com.undefined.stellar.argument.types.math.RotationArgument -> RotationArgument.rotation()
is DisplaySlotArgument -> ScoreboardSlotArgument.displaySlot()
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> ScoreHolderArgument.scoreHolder()
is ScoreHoldersArgument -> ScoreHolderArgument.scoreHolders()
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> when (argument.type) {
ScoreHolderType.SINGLE -> ScoreHolderArgument.scoreHolder()
ScoreHolderType.MULTIPLE -> ScoreHolderArgument.scoreHolders()
}
is AxisArgument -> SwizzleArgument.swizzle()
is com.undefined.stellar.argument.types.scoreboard.TeamArgument -> TeamArgument.team()
is ItemSlotArgument -> SlotArgument.slot()
Expand Down Expand Up @@ -182,7 +180,7 @@ object ArgumentHelper {
is EntityTypeArgument -> ResourceKeyArgument.key(Registries.ENTITY_TYPE)
is PotionArgument -> throwArgumentVersionException(argument)
is MemoryKeyArgument -> ResourceKeyArgument.key(Registries.MEMORY_MODULE_TYPE)
else -> throw UnsupportedArgumentException()
else -> throw UnsupportedArgumentException(argument)
}

fun <T : AbstractStellarArgument<*>> getParsedArgument(context: CommandContext<CommandSourceStack>, argument: T): Any? {
Expand Down Expand Up @@ -229,8 +227,10 @@ object ArgumentHelper {
Location(context.source.bukkitWorld, rotation.x, rotation.y, rotation.z)
}
is DisplaySlotArgument -> getBukkitDisplaySlot(ScoreboardSlotArgument.getDisplaySlot(context, argument.name))
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> ScoreHolderArgument.getName(context, argument.name)
is ScoreHoldersArgument -> ScoreHolderArgument.getNames(context, argument.name)
is com.undefined.stellar.argument.types.scoreboard.ScoreHolderArgument -> when (argument.type) {
ScoreHolderType.SINGLE -> ScoreHolderArgument.getName(context, argument.name)
ScoreHolderType.MULTIPLE -> ScoreHolderArgument.getNames(context, argument.name)
}
is AxisArgument -> getBukkitAxis(SwizzleArgument.getSwizzle(context, argument.name))
is com.undefined.stellar.argument.types.scoreboard.TeamArgument -> Bukkit.getScoreboardManager().mainScoreboard.getTeam(TeamArgument.getTeam(context, argument.name).name)
is ItemSlotArgument -> SlotArgument.getSlot(context, argument.name)
Expand Down Expand Up @@ -275,7 +275,7 @@ object ArgumentHelper {
is EntityTypeArgument -> org.bukkit.Registry.ENTITY_TYPE.get(getId(context, argument.name, Registries.ENTITY_TYPE))
is PotionArgument -> throwArgumentVersionException(argument)
is MemoryKeyArgument -> org.bukkit.Registry.MEMORY_MODULE_TYPE.get(getId(context, argument.name, Registries.MEMORY_MODULE_TYPE))
else -> throw UnsupportedArgumentException()
else -> throw UnsupportedArgumentException(argument)
}
}

Expand Down Expand Up @@ -451,10 +451,10 @@ object ArgumentHelper {
private fun getLocation(context: CommandContext<CommandSourceStack>, command: LocationArgument): Location {
val world = context.source.bukkitWorld
return when (command.type) {
LocationType.LOCATION3D -> context.getArgument(command.name, Coordinates::class.java).getBlockPos(context.source).toLocation(world);
LocationType.LOCATION2D -> ColumnPosArgument.getColumnPos(context, command.name).toLocation(world)
LocationType.DOUBLE_LOCATION_3D -> Vec3Argument.getVec3(context, command.name).toLocation(world)
LocationType.DOUBLE_LOCATION_2D -> Vec2Argument.getVec2(context, command.name).toLocation(world)
LocationType.LOCATION_3D -> context.getArgument(command.name, Coordinates::class.java).getBlockPos(context.source).toLocation(world);
LocationType.LOCATION_2D -> ColumnPosArgument.getColumnPos(context, command.name).toLocation(world)
LocationType.PRECISE_LOCATION_3D -> Vec3Argument.getVec3(context, command.name).toLocation(world)
LocationType.PRECISE_LOCATION_2D -> Vec2Argument.getVec2(context, command.name).toLocation(world)
}
}

Expand Down
Loading

0 comments on commit 8e340cd

Please sign in to comment.