Skip to content

Commit e1a4b61

Browse files
committed
WIP registry rework
1 parent f025aa3 commit e1a4b61

File tree

67 files changed

+557
-2588
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+557
-2588
lines changed

src/main/java/org/spongepowered/api/advancement/Advancement.java

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,25 @@
2626

2727
import net.kyori.adventure.text.Component;
2828
import net.kyori.adventure.text.ComponentLike;
29+
import org.checkerframework.checker.nullness.qual.Nullable;
2930
import org.spongepowered.api.ResourceKey;
31+
import org.spongepowered.api.Sponge;
3032
import org.spongepowered.api.advancement.criteria.AdvancementCriterion;
31-
import org.spongepowered.api.data.persistence.DataSerializable;
33+
import org.spongepowered.api.datapack.DataPackSerializable;
34+
import org.spongepowered.api.registry.DefaultedRegistryValue;
35+
import org.spongepowered.api.util.CopyableBuilder;
3236

3337
import java.util.List;
3438
import java.util.Optional;
3539

3640
/**
3741
* An advancement.
3842
*/
39-
public interface Advancement extends ComponentLike, DataSerializable {
43+
public interface Advancement extends DefaultedRegistryValue, ComponentLike, DataPackSerializable {
44+
45+
static Advancement.Builder builder() {
46+
return Sponge.game().builderProvider().provide(Advancement.Builder.class);
47+
}
4048

4149
/**
4250
* Gets all the {@link AdvancementCriterion} that should be achieved
@@ -72,4 +80,57 @@ public interface Advancement extends ComponentLike, DataSerializable {
7280
*/
7381
List<Component> toToastText();
7482

83+
/**
84+
* A builder to create {@link Advancement}s.
85+
*/
86+
interface Builder extends org.spongepowered.api.util.Builder<Advancement, Builder>, CopyableBuilder<Advancement, Builder> {
87+
88+
/**
89+
* Sets the parent {@link Advancement} key.
90+
* <p>For the root advancement use {@link #root}</p>
91+
*
92+
* @param parent The parent advancement
93+
* @return This builder, for chaining
94+
*/
95+
Builder parent(ResourceKey parent);
96+
97+
/**
98+
* Sets this advancement as root.
99+
*
100+
* @return This builder, for chaining
101+
*/
102+
Builder.RootStep root();
103+
104+
/**
105+
* Define root advancement only parameters.
106+
*/
107+
interface RootStep extends Builder {
108+
109+
/**
110+
* Sets the background path..
111+
*
112+
* @param backgroundPath The {@link AdvancementTree}s background.
113+
*
114+
* @return This builder, for chaining
115+
*/
116+
Builder background(ResourceKey backgroundPath);
117+
}
118+
119+
/**
120+
* Sets the {@link AdvancementCriterion} that should be used
121+
* for the advancement. Defaults to {@link AdvancementCriterion#empty()}.
122+
*
123+
* @param criterion The criterion
124+
* @return This builder, for chaining
125+
*/
126+
Builder criterion(AdvancementCriterion criterion);
127+
128+
/**
129+
* Sets the {@link DisplayInfo}. Defaults to {code null}.
130+
*
131+
* @param displayInfo The display info
132+
* @return This builder, for chaining
133+
*/
134+
Builder displayInfo(@Nullable DisplayInfo displayInfo);
135+
}
75136
}

src/main/java/org/spongepowered/api/advancement/AdvancementTemplate.java

Lines changed: 0 additions & 128 deletions
This file was deleted.

src/main/java/org/spongepowered/api/advancement/AdvancementTree.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public interface AdvancementTree extends AdvancementNode {
5959
* @param advancement The advancement
6060
* @return The tree layout element
6161
*/
62-
Optional<TreeLayoutElement> layoutElement(AdvancementTemplate advancement);
62+
Optional<TreeLayoutElement> layoutElement(Advancement advancement);
6363

6464

6565
/**

src/main/java/org/spongepowered/api/adventure/ChatType.java

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,62 @@
2525
package org.spongepowered.api.adventure;
2626

2727
import net.kyori.adventure.text.format.Style;
28+
import org.spongepowered.api.Sponge;
29+
import org.spongepowered.api.datapack.DataPackSerializable;
30+
import org.spongepowered.api.util.CopyableBuilder;
2831
import org.spongepowered.api.util.annotation.CatalogedBy;
2932

3033
/**
3134
* A type of chat
3235
*/
3336
@CatalogedBy(ChatTypes.class)
34-
public interface ChatType extends net.kyori.adventure.chat.ChatType {
37+
public interface ChatType extends net.kyori.adventure.chat.ChatType, DataPackSerializable {
38+
39+
static Builder builder() {
40+
return Sponge.game().builderProvider().provide(Builder.class);
41+
}
3542

3643
String translationKey();
3744

3845
Style style();
3946

47+
interface Builder extends org.spongepowered.api.util.Builder<ChatType, Builder>, CopyableBuilder<ChatType, Builder> {
48+
49+
/**
50+
* Sets the translation key or custom format mask.
51+
*
52+
* @param translationKey The translation key or format mask
53+
* @return this builder, for chaining
54+
*/
55+
Builder translationKey(String translationKey);
56+
57+
/**
58+
* Sets the style.
59+
*
60+
* @param style The style
61+
* @return this builder, for chaining
62+
*/
63+
Builder style(Style style);
64+
65+
/**
66+
* Adds a sender parameter.
67+
*
68+
* @return this builder, for chaining
69+
*/
70+
Builder addSender();
71+
72+
/**
73+
* Adds a content parameter.
74+
*
75+
* @return this builder, for chaining
76+
*/
77+
Builder addContent();
78+
79+
/**
80+
* Adds a target parameter.
81+
*
82+
* @return this builder, for chaining
83+
*/
84+
Builder addTarget();
85+
}
4086
}

src/main/java/org/spongepowered/api/adventure/ChatTypeTemplate.java

Lines changed: 0 additions & 88 deletions
This file was deleted.

src/main/java/org/spongepowered/api/command/Command.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.spongepowered.api.event.Cause;
4242
import org.spongepowered.api.event.EventContext;
4343
import org.spongepowered.api.event.lifecycle.RegisterCommandEvent;
44+
import org.spongepowered.api.registry.RegistryHolder;
4445
import org.spongepowered.api.service.permission.PermissionDescription;
4546
import org.spongepowered.api.service.permission.Subject;
4647

@@ -209,9 +210,9 @@ interface Raw extends Command {
209210
*
210211
* @return The tree.
211212
*/
212-
default CommandTreeNode.Root commandTree() {
213+
default CommandTreeNode.Root commandTree(RegistryHolder registryHolder) {
213214
return CommandTreeNode.root().executable().child("arguments",
214-
CommandTreeNodeTypes.STRING.get().createNode().greedy().executable().customCompletions());
215+
CommandTreeNodeTypes.STRING.get(registryHolder).createNode().greedy().executable().customCompletions());
215216
}
216217

217218
}

0 commit comments

Comments
 (0)