@@ -12,6 +12,7 @@ import kr.toxicity.model.api.animation.AnimationIterator
1212import kr.toxicity.model.api.animation.AnimationModifier
1313import kr.toxicity.model.api.pack.PackZipper
1414import kr.toxicity.model.api.tracker.EntityHideOption
15+ import kr.toxicity.model.api.tracker.ModelScaler
1516import kr.toxicity.model.api.tracker.Tracker
1617import kr.toxicity.model.api.tracker.TrackerModifier
1718import kr.toxicity.model.api.version.MinecraftVersion
@@ -24,20 +25,20 @@ import org.bukkit.entity.LivingEntity
2425import org.bukkit.entity.Player
2526import org.bukkit.util.Vector
2627import org.incendo.cloud.bukkit.data.MultipleEntitySelector
27- import org.incendo.cloud.bukkit.parser.PlayerParser
28- import org.incendo.cloud.bukkit.parser.location.LocationParser
29- import org.incendo.cloud.bukkit.parser.selector.MultipleEntitySelectorParser
28+ import org.incendo.cloud.bukkit.parser.PlayerParser.playerParser
29+ import org.incendo.cloud.bukkit.parser.location.LocationParser.locationParser
30+ import org.incendo.cloud.bukkit.parser.selector.MultipleEntitySelectorParser.multipleEntitySelectorParser
3031import org.incendo.cloud.context.CommandContext
31- import org.incendo.cloud.parser.standard.BooleanParser
32- import org.incendo.cloud.parser.standard.DoubleParser
33- import org.incendo.cloud.parser.standard.EnumParser
34- import org.incendo.cloud.parser.standard.StringParser
35- import org.incendo.cloud.suggestion.SuggestionProvider
32+ import org.incendo.cloud.parser.standard.BooleanParser.booleanParser
33+ import org.incendo.cloud.parser.standard.DoubleParser.doubleParser
34+ import org.incendo.cloud.parser.standard.EnumParser.enumParser
35+ import org.incendo.cloud.parser.standard.StringParser.stringParser
36+ import org.incendo.cloud.suggestion.SuggestionProvider.blockingStrings
3637
3738object CommandManager : GlobalManager {
3839
39- private val modelSuggestion = SuggestionProvider . blockingStrings<CommandSender > { _, _ -> BetterModel .modelKeys() }
40- private val limbSuggestion = SuggestionProvider . blockingStrings<CommandSender > { _, _ -> BetterModel .limbKeys() }
40+ private val modelSuggestion = blockingStrings<CommandSender > { _, _ -> BetterModel .modelKeys() }
41+ private val limbSuggestion = blockingStrings<CommandSender > { _, _ -> BetterModel .limbKeys() }
4142
4243 override fun start () {
4344 command(
@@ -57,10 +58,10 @@ object CommandManager : GlobalManager {
5758 " Summons some model to given type" ,
5859 " s"
5960 ) {
60- required(" model" , StringParser . stringParser(), modelSuggestion)
61- .optional(" type" , EnumParser . enumParser(EntityType ::class .java))
62- .optional(" scale" , DoubleParser . doubleParser(0.0625 , 16.0 ))
63- .optional(" location" , LocationParser . locationParser())
61+ required(" model" , stringParser(), modelSuggestion)
62+ .optional(" type" , enumParser(EntityType ::class .java))
63+ .optional(" scale" , doubleParser(0.0625 , 16.0 ))
64+ .optional(" location" , locationParser())
6465 .senderType(Player ::class .java)
6566 .handler(::spawn)
6667 }
@@ -69,22 +70,23 @@ object CommandManager : GlobalManager {
6970 " Tests some model's animation to specific player" ,
7071 " t"
7172 ) {
72- required(" model" , StringParser . stringParser(), modelSuggestion)
73+ required(" model" , stringParser(), modelSuggestion)
7374 .required(
7475 " animation" ,
75- StringParser . stringParser(),
76- SuggestionProvider . blockingStrings { ctx, _ -> ctx.nullableString(" model" ) { BetterModel .modelOrNull(it)?.animations()?.keys } ? : emptySet() }
76+ stringParser(),
77+ blockingStrings { ctx, _ -> ctx.nullableString(" model" ) { BetterModel .modelOrNull(it)?.animations()?.keys } ? : emptySet() }
7778 )
78- .optional(" player" , PlayerParser . playerParser())
79- .optional(" location" , LocationParser . locationParser())
79+ .optional(" player" , playerParser())
80+ .optional(" location" , locationParser())
8081 .handler(::test)
8182 }
8283 create(
8384 " disguise" ,
8485 " Disguises self." ,
8586 " d"
8687 ) {
87- required(" model" , StringParser .stringParser(), modelSuggestion)
88+ required(" model" , stringParser(), modelSuggestion)
89+ .optional(" scaling" , booleanParser())
8890 .senderType(Player ::class .java)
8991 .handler(::disguise)
9092 }
@@ -94,41 +96,41 @@ object CommandManager : GlobalManager {
9496 " ud"
9597 ) {
9698 senderType(Player ::class .java)
97- .optional(" model" , StringParser . stringParser(), SuggestionProvider . blockingStrings { ctx, _ -> ctx.sender().toRegistry()?.trackers()?.map(Tracker ::name) ? : emptyList() })
99+ .optional(" model" , stringParser(), blockingStrings { ctx, _ -> ctx.sender().toRegistry()?.trackers()?.map(Tracker ::name) ? : emptyList() })
98100 .handler(::undisguise)
99101 }
100102 create(
101103 " play" ,
102104 " Plays player animation" ,
103105 " p"
104106 ) {
105- required(" limb" , StringParser . stringParser(), limbSuggestion)
107+ required(" limb" , stringParser(), limbSuggestion)
106108 .required(
107109 " animation" ,
108- StringParser . stringParser(),
109- SuggestionProvider . blockingStrings { ctx, _ -> ctx.nullableString(" limb" ) { BetterModel .limbOrNull(it)?.animations()?.keys } ? : emptySet() }
110+ stringParser(),
111+ blockingStrings { ctx, _ -> ctx.nullableString(" limb" ) { BetterModel .limbOrNull(it)?.animations()?.keys } ? : emptySet() }
110112 )
111- .optional(" loop_type" , EnumParser . enumParser(AnimationIterator .Type ::class .java))
112- .optional(" hide" , BooleanParser . booleanParser())
113+ .optional(" loop_type" , enumParser(AnimationIterator .Type ::class .java))
114+ .optional(" hide" , booleanParser())
113115 .senderType(Player ::class .java)
114116 .handler(::play)
115117 }
116118 create(
117119 " hide" ,
118120 " Hides some entities from target player."
119121 ) {
120- required(" model" , StringParser . stringParser(), modelSuggestion)
121- .required(" player" , PlayerParser . playerParser())
122- .required(" entities" , MultipleEntitySelectorParser . multipleEntitySelectorParser())
122+ required(" model" , stringParser(), modelSuggestion)
123+ .required(" player" , playerParser())
124+ .required(" entities" , multipleEntitySelectorParser())
123125 .handler(::hide)
124126 }
125127 create(
126128 " show" ,
127129 " Shows some entities to target player."
128130 ) {
129- required(" model" , StringParser . stringParser(), modelSuggestion)
130- .required(" player" , PlayerParser . playerParser())
131- .required(" entities" , MultipleEntitySelectorParser . multipleEntitySelectorParser())
131+ required(" model" , stringParser(), modelSuggestion)
132+ .required(" player" , playerParser())
133+ .required(" entities" , multipleEntitySelectorParser())
132134 .handler(::show)
133135 }
134136 create(
@@ -165,7 +167,10 @@ object CommandManager : GlobalManager {
165167
166168 private fun disguise (context : CommandContext <Player >) {
167169 val player = context.sender()
168- context.model(" model" ) { return player.audience().warn(" Unable to find this model: $it " ) }.getOrCreate(player)
170+ val scaling = if (context.getOrDefault(" scaling" , true )) ModelScaler .entity() else ModelScaler .defaultScaler()
171+ context.model(" model" ) { return player.audience().warn(" Unable to find this model: $it " ) }.getOrCreate(player, TrackerModifier .DEFAULT ) {
172+ it.scaler(scaling)
173+ }
169174 }
170175
171176 private fun undisguise (context : CommandContext <Player >) {
@@ -287,4 +292,4 @@ object CommandManager : GlobalManager {
287292
288293 override fun end () {
289294 }
290- }
295+ }
0 commit comments