Skip to content

Commit

Permalink
refactor: some refactoring changes
Browse files Browse the repository at this point in the history
  • Loading branch information
StillLutto committed Dec 25, 2024
1 parent 44e6ecf commit 7a994db
Show file tree
Hide file tree
Showing 70 changed files with 224 additions and 406 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import com.undefined.stellar.data.events.StellarCommandRegisterEvent
import com.undefined.stellar.data.requirement.PermissionStellarRequirement
import com.undefined.stellar.exception.UnsupportedVersionException
import com.undefined.stellar.manager.CommandManager
import com.undefined.stellar.registrar.AbstractCommandRegistrar
import com.undefined.stellar.util.NMSVersion
import org.bukkit.Bukkit
import org.bukkit.command.CommandSender
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ abstract class AbstractStellarCommand<T>(val name: String, val description: Stri
return addPermissionRequirements(permissions)
}

fun addPermission(permission: String): T = addRequirement(permission)
fun addPermissions(vararg permission: String): T = addRequirements(*permission)

fun setRequirements(vararg permissions: StellarRequirement<*>): T {
this.requirements.clear()
return addRequirements(*permissions)
Expand Down Expand Up @@ -114,6 +117,21 @@ abstract class AbstractStellarCommand<T>(val name: String, val description: Stri
return this as T
}

fun addRequirement(permission: String): T {
permissionRequirements.add(PermissionStellarRequirement(1, permission))
return this as T
}

fun addRequirement(level: Int): T {
permissionRequirements.add(PermissionStellarRequirement(level))
return this as T
}

fun addRequirement(requirement: PermissionStellarRequirement): T {
permissionRequirements.add(requirement)
return this as T
}

inline fun <reified C : CommandSender> addRequirement(noinline requirement: C.() -> Boolean): T =
addRequirements(StellarRequirement(C::class, requirement))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,29 @@
package com.undefined.stellar.argument

import com.undefined.stellar.AbstractStellarCommand
import com.undefined.stellar.argument.types.block.*
import com.undefined.stellar.argument.types.block.BlockDataArgument
import com.undefined.stellar.argument.types.block.BlockPredicateArgument
import com.undefined.stellar.argument.types.custom.CustomArgument
import com.undefined.stellar.argument.types.custom.EnumArgument
import com.undefined.stellar.argument.types.custom.ListArgument
import com.undefined.stellar.argument.types.entity.*
import com.undefined.stellar.argument.types.item.*
import com.undefined.stellar.argument.types.entity.EntityAnchorArgument
import com.undefined.stellar.argument.types.entity.EntityArgument
import com.undefined.stellar.argument.types.entity.EntityDisplayType
import com.undefined.stellar.argument.types.item.ItemArgument
import com.undefined.stellar.argument.types.item.ItemPredicateArgument
import com.undefined.stellar.argument.types.item.ItemSlotArgument
import com.undefined.stellar.argument.types.item.ItemSlotsArgument
import com.undefined.stellar.argument.types.math.*
import com.undefined.stellar.argument.types.misc.NamespacedKeyArgument
import com.undefined.stellar.argument.types.misc.UUIDArgument
import com.undefined.stellar.argument.types.registry.BlockTypeArgument
import com.undefined.stellar.argument.types.registry.FluidArgument
import com.undefined.stellar.argument.types.player.GameModeArgument
import com.undefined.stellar.argument.types.player.GameProfileArgument
import com.undefined.stellar.argument.types.primitive.*
import com.undefined.stellar.argument.types.registry.*
import com.undefined.stellar.argument.types.scoreboard.*
import com.undefined.stellar.argument.types.registry.InstrumentArgument
import com.undefined.stellar.argument.types.registry.SoundArgument
import com.undefined.stellar.argument.types.structure.*
import com.undefined.stellar.argument.types.structure.LootTableArgument
import com.undefined.stellar.argument.types.structure.MirrorArgument
import com.undefined.stellar.argument.types.structure.StructureRotationArgument
import com.undefined.stellar.argument.types.text.ColorArgument
import com.undefined.stellar.argument.types.text.ComponentArgument
import com.undefined.stellar.argument.types.text.MessageArgument
Expand All @@ -34,7 +38,7 @@ import org.bukkit.entity.Player
import java.util.*

/**
* An open class that adds all the methods for adding arguments
* An open class that handles the addition of arguments
*
* @since 1.0
*/
Expand All @@ -43,13 +47,11 @@ open class ArgumentHandler {
open val base: AbstractStellarCommand<*> get() = throw IllegalStateException("Cannot access the getter from the property base when it hasn't been overridden!")
open val arguments: MutableList<AbstractStellarArgument<*>> = mutableListOf()

fun addArgument(argument: AbstractStellarArgument<*>): AbstractStellarArgument<*> {
arguments.add(argument)
return argument
}
fun addArgument(argument: AbstractStellarArgument<*>): AbstractStellarArgument<*> =
argument.also { arguments.add(it) }

fun addArgument(name: String): LiteralStellarArgument =
addArgument { LiteralStellarArgument(base, name) }
fun addArgument(name: String, vararg aliases: String): LiteralStellarArgument =
addArgument { LiteralStellarArgument(base, name).apply { this.aliases.addAll(aliases) } }

fun addLiteralArgument(name: String): LiteralStellarArgument =
addArgument { LiteralStellarArgument(base, name) }
Expand Down Expand Up @@ -86,13 +88,34 @@ open class ArgumentHandler {
fun addBooleanArgument(name: String): BooleanArgument =
addArgument { BooleanArgument(base, name) }

fun <T, U : AbstractStellarArgument<*>> addListArgument(
name: String,
list: List<T>,
stringifier: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(base, StringArgument(base, name, StringType.WORD), list, stringifier, parse) }

fun <T, U : AbstractStellarArgument<*>> addListArgument(
type: AbstractStellarArgument<*>,
list: List<T>,
stringifier: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(base, type, list, stringifier, parse) }

fun <T, U : AbstractStellarArgument<*>> addListArgument(
name: String,
list: () -> List<T>,
stringifier: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(base, StringArgument(base, name, StringType.WORD), list, stringifier, parse) }

fun <T, U : AbstractStellarArgument<*>> addListArgument(
type: AbstractStellarArgument<*>,
list: () -> List<T>,
stringifier: (T) -> Suggestion,
parse: (Any?) -> T
): ListArgument<T> = addArgument { ListArgument(base, type, list, stringifier, parse) }

fun addStringListArgument(name: String, list: List<String>, type: StringType = StringType.WORD): ListArgument<String> =
addArgument { ListArgument(base, StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, { it }) }

Expand All @@ -102,6 +125,15 @@ open class ArgumentHandler {
fun addUUIDListArgument(name: String, list: List<UUID>): ListArgument<UUID> =
addArgument { ListArgument(base, UUIDArgument(base, name), list, parse = { UUID.fromString(it.toString()) }) }

fun addStringListArgument(name: String, list: () -> List<String>, type: StringType = StringType.WORD): ListArgument<String> =
addArgument { ListArgument(base, StringArgument(base, name, type), list, { Suggestion.withText(it.toString()) }, { it }) }

fun addStringListArgument(name: String, vararg list: () -> List<String>): ListArgument<String> =
addArgument { ListArgument(base, StringArgument(base, name, StringType.WORD), list.toList(), { Suggestion.withText(it.toString()) }, { it }) }

fun addUUIDListArgument(name: String, list: () -> List<UUID>): ListArgument<UUID> =
addArgument { ListArgument(base, UUIDArgument(base, name), list, parse = { UUID.fromString(it.toString()) }) }

inline fun <reified T : Enum<T>> addEnumArgument(name: String): EnumArgument<T> =
addArgument { EnumArgument<T>(base, StringArgument(base, name, StringType.WORD), T::class) }

Expand All @@ -111,6 +143,15 @@ open class ArgumentHandler {
noinline parse: (Any?) -> Enum<T>?
): EnumArgument<T> = addArgument { EnumArgument(base, StringArgument(base, name, StringType.WORD), T::class, converter, parse) }

inline fun <reified T : Enum<T>> addEnumArgument(type: AbstractStellarArgument<*>): EnumArgument<T> =
addArgument { EnumArgument<T>(base, type, T::class) }

inline fun <reified T : Enum<T>> addEnumArgument(
type: AbstractStellarArgument<*>,
noinline converter: (Enum<*>?) -> Suggestion = { Suggestion.withText(it?.name ?: "") },
noinline parse: (Any?) -> Enum<T>?
): EnumArgument<T> = addArgument { EnumArgument(base, type, T::class, converter, parse) }

fun addEntityArgument(name: String, type: EntityDisplayType): EntityArgument =
addArgument { EntityArgument(base, name, type) }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,18 @@ import com.undefined.stellar.exception.UnsupportedArgumentException
import com.undefined.stellar.util.NMSVersion
import com.undefined.stellar.util.ReflectionUtil
import com.undefined.stellar.util.executePrivateMethod
import net.kyori.adventure.text.format.Style
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer
import net.minecraft.server.v1_13_R1.*
import org.bukkit.*
import org.bukkit.Particle
import org.bukkit.World
import org.bukkit.block.Block
import org.bukkit.block.data.BlockData
import org.bukkit.craftbukkit.v1_13_R1.block.data.CraftBlockData
import org.bukkit.craftbukkit.v1_13_R1.CraftParticle
import org.bukkit.craftbukkit.v1_13_R1.block.data.CraftBlockData
import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftItemStack
import org.bukkit.inventory.ItemStack
import org.bukkit.scoreboard.DisplaySlot
import java.time.Duration
import java.util.*
import java.util.function.Predicate

Expand Down Expand Up @@ -180,10 +177,10 @@ object ArgumentHelper {
is com.undefined.stellar.argument.types.item.ItemPredicateArgument -> Predicate<ItemStack> { item: ItemStack ->
ArgumentItemPredicate.a(context, argument.name).test(CraftItemStack.asNMSCopy(item))
}
is com.undefined.stellar.argument.types.text.ColorArgument -> ArgumentChatFormat.a(
is com.undefined.stellar.argument.types.text.ColorArgument -> ChatColor.getByChar(ArgumentChatFormat.a(
context,
argument.name
).executePrivateMethod<Int>("e").let { Style.style(TextColor.color(it)) }
).character)
is com.undefined.stellar.argument.types.text.ComponentArgument -> GsonComponentSerializer.gson()
.deserialize(IChatBaseComponent.ChatSerializer.a(
ArgumentChatComponent.a(context, argument.name)
Expand Down Expand Up @@ -238,7 +235,7 @@ object ArgumentHelper {
}
is com.undefined.stellar.argument.types.world.DimensionArgument -> throwArgumentVersionException(argument)
is GameModeArgument -> throwArgumentVersionException(argument)
is com.undefined.stellar.argument.types.math.TimeArgument -> Duration.ofSeconds(IntegerArgumentType.getInteger(context, argument.name).toLong() / 20)
is com.undefined.stellar.argument.types.math.TimeArgument -> IntegerArgumentType.getInteger(context, argument.name).toLong()
is MirrorArgument -> throwArgumentVersionException(argument)
is StructureRotationArgument -> throwArgumentVersionException(argument)
is HeightMapArgument -> throwArgumentVersionException(argument)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ object BrigadierCommandHelper {

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
override fun run() = execution()
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,21 +40,18 @@ import com.undefined.stellar.exception.UnsupportedArgumentException
import com.undefined.stellar.util.NMSVersion
import com.undefined.stellar.util.ReflectionUtil
import com.undefined.stellar.util.executePrivateMethod
import net.kyori.adventure.text.format.Style
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer
import net.minecraft.server.v1_13_R2.*
import org.bukkit.*
import org.bukkit.Particle
import org.bukkit.World
import org.bukkit.block.Block
import org.bukkit.block.data.BlockData
import org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData
import org.bukkit.craftbukkit.v1_13_R2.CraftParticle
import org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack
import org.bukkit.inventory.ItemStack
import org.bukkit.scoreboard.DisplaySlot
import java.time.Duration
import java.util.*
import java.util.function.Predicate

Expand Down Expand Up @@ -202,10 +199,10 @@ object ArgumentHelper {
is com.undefined.stellar.argument.types.item.ItemPredicateArgument -> Predicate<ItemStack> { item: ItemStack ->
ArgumentItemPredicate.a(context, argument.name).test(CraftItemStack.asNMSCopy(item))
}
is com.undefined.stellar.argument.types.text.ColorArgument -> ArgumentChatFormat.a(
is com.undefined.stellar.argument.types.text.ColorArgument -> ChatColor.getByChar(ArgumentChatFormat.a(
context,
argument.name
).executePrivateMethod<Int>("e").let { Style.style(TextColor.color(it)) }
).character)
is com.undefined.stellar.argument.types.text.ComponentArgument -> GsonComponentSerializer.gson()
.deserialize(IChatBaseComponent.ChatSerializer.a(
ArgumentChatComponent.a(context, argument.name)
Expand Down Expand Up @@ -260,7 +257,7 @@ object ArgumentHelper {
}
is com.undefined.stellar.argument.types.world.DimensionArgument -> World.Environment.getEnvironment(ArgumentDimension.a(context, argument.name).dimensionID)
is GameModeArgument -> throwArgumentVersionException(argument)
is com.undefined.stellar.argument.types.math.TimeArgument -> Duration.ofSeconds(IntegerArgumentType.getInteger(context, argument.name).toLong() / 20)
is com.undefined.stellar.argument.types.math.TimeArgument -> IntegerArgumentType.getInteger(context, argument.name).toLong()
is MirrorArgument -> throwArgumentVersionException(argument)
is StructureRotationArgument -> throwArgumentVersionException(argument)
is HeightMapArgument -> throwArgumentVersionException(argument)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ object BrigadierCommandHelper {

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
override fun run() = execution()
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,21 +40,18 @@ import com.undefined.stellar.exception.UnsupportedArgumentException
import com.undefined.stellar.util.NMSVersion
import com.undefined.stellar.util.ReflectionUtil
import com.undefined.stellar.util.executePrivateMethod
import net.kyori.adventure.text.format.Style
import net.kyori.adventure.text.format.TextColor
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer
import net.minecraft.server.v1_13_R2.*
import org.bukkit.*
import org.bukkit.Particle
import org.bukkit.World
import org.bukkit.block.Block
import org.bukkit.block.data.BlockData
import org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData
import org.bukkit.craftbukkit.v1_13_R2.CraftParticle
import org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack
import org.bukkit.inventory.ItemStack
import org.bukkit.scoreboard.DisplaySlot
import java.time.Duration
import java.util.*
import java.util.function.Predicate

Expand Down Expand Up @@ -202,10 +199,10 @@ object ArgumentHelper {
is com.undefined.stellar.argument.types.item.ItemPredicateArgument -> Predicate<ItemStack> { item: ItemStack ->
ArgumentItemPredicate.a(context, argument.name).test(CraftItemStack.asNMSCopy(item))
}
is com.undefined.stellar.argument.types.text.ColorArgument -> ArgumentChatFormat.a(
is com.undefined.stellar.argument.types.text.ColorArgument -> ChatColor.getByChar(ArgumentChatFormat.a(
context,
argument.name
).executePrivateMethod<Int>("e").let { Style.style(TextColor.color(it)) }
).character)
is com.undefined.stellar.argument.types.text.ComponentArgument -> GsonComponentSerializer.gson()
.deserialize(IChatBaseComponent.ChatSerializer.a(
ArgumentChatComponent.a(context, argument.name)
Expand Down Expand Up @@ -260,7 +257,7 @@ object ArgumentHelper {
}
is com.undefined.stellar.argument.types.world.DimensionArgument -> World.Environment.getEnvironment(ArgumentDimension.a(context, argument.name).dimensionID)
is GameModeArgument -> throwArgumentVersionException(argument)
is com.undefined.stellar.argument.types.math.TimeArgument -> Duration.ofSeconds(IntegerArgumentType.getInteger(context, argument.name).toLong() / 20)
is com.undefined.stellar.argument.types.math.TimeArgument -> IntegerArgumentType.getInteger(context, argument.name).toLong()
is MirrorArgument -> throwArgumentVersionException(argument)
is StructureRotationArgument -> throwArgumentVersionException(argument)
is HeightMapArgument -> throwArgumentVersionException(argument)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,6 @@ object BrigadierCommandHelper {

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
override fun run() = execution()
}.runTask(CommandRegistrar.plugin)
}
Loading

0 comments on commit 7a994db

Please sign in to comment.