Skip to content

Commit 3dab1e6

Browse files
committed
Improvements
1 parent 647f9e9 commit 3dab1e6

File tree

7 files changed

+259
-69
lines changed

7 files changed

+259
-69
lines changed

src/main/java/org/spongepowered/api/command/parameter/managed/ValueCompleter.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import org.spongepowered.api.command.CommandCompletion;
2828
import org.spongepowered.api.command.parameter.CommandContext;
29+
import org.spongepowered.api.registry.RegistryHolder;
2930

3031
import java.util.List;
3132

@@ -46,4 +47,14 @@ public interface ValueCompleter {
4647
*/
4748
List<CommandCompletion> complete(CommandContext context, String currentInput);
4849

50+
/**
51+
* Creates a new {@link ValueCompleter} that is bound to
52+
* a specific {@link RegistryHolder registry holder}.
53+
*
54+
* @param registryHolder The owning {@link RegistryHolder registry holder}.
55+
* @return The bound {@link ValueCompleter}.
56+
*/
57+
default ValueCompleter bind(RegistryHolder registryHolder) {
58+
return this;
59+
}
4960
}

src/main/java/org/spongepowered/api/command/parameter/managed/ValueParameter.java

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ default String usage(@NonNull final String key) {
5555
return key;
5656
}
5757

58+
@Override
59+
default ValueParameter<T> bind(RegistryHolder registryHolder) {
60+
return this;
61+
}
62+
5863
/**
5964
* A {@link ValueParameter} that does not rely on the {@link CommandContext}
6065
* or {@link Parameter.Key} to parse its results.
@@ -119,24 +124,4 @@ default List<CommandCompletion> complete(final CommandContext context, final Str
119124
}
120125

121126
}
122-
123-
/**
124-
* A {@link ValueParameter} that relies on registry data
125-
* and is unable to parse its results until it has been
126-
* bound.
127-
*
128-
* @param <T> The type of object that is returned from the
129-
* {@link ValueParser} upon successful parsing.
130-
*/
131-
interface Bindable<T> extends ValueParameter<T> {
132-
133-
/**
134-
* Creates a new {@link ValueParameter} that is bound to
135-
* a specific {@link RegistryHolder registry holder}.
136-
*
137-
* @param registryHolder The owning {@link RegistryHolder registry holder}.
138-
* @return The bound {@link ValueParameter}.
139-
*/
140-
ValueParameter<T> bind(RegistryHolder registryHolder);
141-
}
142127
}

src/main/java/org/spongepowered/api/command/parameter/managed/ValueParameterModifier.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.spongepowered.api.command.parameter.ArgumentReader;
3333
import org.spongepowered.api.command.parameter.CommandContext;
3434
import org.spongepowered.api.command.parameter.Parameter;
35+
import org.spongepowered.api.registry.RegistryHolder;
3536

3637
import java.util.List;
3738
import java.util.Optional;
@@ -146,4 +147,14 @@ default List<CommandCompletion> modifyCompletion(
146147
return exceptionMessage;
147148
}
148149

150+
/**
151+
* Creates a new {@link ValueParameterModifier} that is bound to
152+
* a specific {@link RegistryHolder registry holder}.
153+
*
154+
* @param registryHolder The owning {@link RegistryHolder registry holder}.
155+
* @return The bound {@link ValueParameterModifier}.
156+
*/
157+
default ValueParameterModifier<T> bind(RegistryHolder registryHolder) {
158+
return this;
159+
}
149160
}

src/main/java/org/spongepowered/api/command/parameter/managed/ValueParser.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.spongepowered.api.command.parameter.managed.clientcompletion.ClientCompletionType;
3333
import org.spongepowered.api.command.parameter.managed.clientcompletion.ClientCompletionTypes;
3434
import org.spongepowered.api.event.Cause;
35+
import org.spongepowered.api.registry.RegistryHolder;
3536

3637
import java.util.Collections;
3738
import java.util.List;
@@ -113,4 +114,14 @@ default List<ClientCompletionType> clientCompletionType() {
113114
return Collections.emptyList();
114115
}
115116

117+
/**
118+
* Creates a new {@link ValueParser} that is bound to
119+
* a specific {@link RegistryHolder registry holder}.
120+
*
121+
* @param registryHolder The owning {@link RegistryHolder registry holder}.
122+
* @return The bound {@link ValueParser}.
123+
*/
124+
default ValueParser<T> bind(RegistryHolder registryHolder) {
125+
return this;
126+
}
116127
}

src/main/java/org/spongepowered/api/event/lifecycle/RegisterCommandEvent.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.spongepowered.api.command.manager.CommandMapping;
3030
import org.spongepowered.api.command.registrar.CommandRegistrar;
3131
import org.spongepowered.api.event.GenericEvent;
32+
import org.spongepowered.api.registry.RegistryHolder;
3233
import org.spongepowered.eventgen.annotations.NoFactoryMethod;
3334
import org.spongepowered.plugin.PluginContainer;
3435

@@ -64,6 +65,13 @@
6465
@NoFactoryMethod
6566
public interface RegisterCommandEvent<C> extends GenericEvent<C>, LifecycleEvent {
6667

68+
/**
69+
* Gets the owning {@link RegistryHolder registry holder}.
70+
*
71+
* @return The registry holder.
72+
*/
73+
RegistryHolder registryHolder();
74+
6775
/**
6876
* Registers a command with the appropriate {@link CommandRegistrar}.
6977
*

src/main/java/org/spongepowered/api/world/server/WorldManager.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -120,17 +120,18 @@ default List<ResourceKey> offlineWorldKeys() {
120120
/**
121121
* Loads a {@link ServerWorld world} by a {@link ResourceKey key}.
122122
*
123-
* <p>If a world with the given name is already loaded then it is returned instead.</p>
123+
* <p>If a world with the given name is already loaded, the operation fails.</p>
124124
*
125125
* @param key The key
126-
* @return The world, if found.
126+
* @return The world, if loaded.
127127
*/
128-
CompletableFuture<Optional<ServerWorld>> loadWorld(ResourceKey key);
128+
default CompletableFuture<Optional<ServerWorld>> loadWorld(ResourceKey key) {
129+
return this.loadWorld(key, ServerWorldProperties.LoadOptions.load());
130+
}
129131

130132
/**
131-
* Loads a {@link ServerWorld world} by a {@link ResourceKey key}.
132-
*
133-
* <p>If a world with the given name is already loaded then it is returned instead.</p>
133+
* Loads a {@link ServerWorld world} by a {@link ResourceKey key}
134+
* with the provided {@link ServerWorldProperties.LoadOptions load options}.
134135
*
135136
* @param key The key
136137
* @param propertiesLoadOptions The options used to load the {@link ServerWorldProperties properties}.
@@ -161,19 +162,20 @@ default List<ResourceKey> offlineWorldKeys() {
161162
CompletableFuture<Boolean> unloadWorld(ServerWorld world);
162163

163164
/**
164-
* Loads an offline {@link ServerWorldProperties properties}.
165+
* Loads the {@link ServerWorldProperties properties}.
165166
*
166167
* <p>It is left up to the implementation on what conditions cause a failure of loading properties.</p>
167168
*
168169
* @param key The key
169170
* @return The properties
170171
*/
171-
CompletableFuture<Optional<ServerWorldProperties>> loadProperties(ResourceKey key);
172+
default CompletableFuture<Optional<ServerWorldProperties>> loadProperties(ResourceKey key) {
173+
return this.loadProperties(key, ServerWorldProperties.LoadOptions.load());
174+
}
172175

173176
/**
174-
* Loads an offline {@link ServerWorldProperties properties}.
175-
*
176-
* <p>It is left up to the implementation on what conditions cause a failure of loading properties.</p>
177+
* Loads the {@link ServerWorldProperties properties} with
178+
* the provided {@link ServerWorldProperties.LoadOptions load options}.
177179
*
178180
* @param key The key
179181
* @param propertiesLoadOptions The options used to load the {@link ServerWorldProperties properties}.

0 commit comments

Comments
 (0)