Skip to content

Commit 8c3e751

Browse files
TheMeinerLPtheEvilReaperOneLiteFeather
committed
[Chore] Replace enum with registry system for feature flags (#28)
* [Chore] Replace enum with registry system for feature flags * Remove wildcard import * Create CNAME * Bump snapshot version (#31) * [Bugfix] Fix failing tests * Update build.gradle.kts * [Chore] Replace enum with code generator for fluids (#27) * Move Fluids to CodeGenerator * [Chore] Replace enum with registry * Refactor: Move 'Fluids' interface from FluidImpl implements to Fluid extends --------- Co-authored-by: OneLiteFeather <seelenretterin@onelitefeather.net> * [Chore] Replace enum with registry system for feature flags * Remove wildcard import --------- Co-authored-by: theEvilReaper <steffenwx@gmail.com> Co-authored-by: OneLiteFeather <seelenretterin@onelitefeather.net>
1 parent b4362b8 commit 8c3e751

File tree

6 files changed

+92
-146
lines changed

6 files changed

+92
-146
lines changed

code-generators/src/main/java/net/minestom/codegen/feature/FeatureFlagGenerator.java

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

src/autogenerated/java/net/minestom/server/feature/FeatureFlags.java

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package net.minestom.server.featureflag;
2+
3+
/**
4+
* Code autogenerated, do not edit!
5+
*/
6+
@SuppressWarnings("unused")
7+
interface FeatureFlags {
8+
FeatureFlag UPDATE_1_21 = FeatureFlagImpl.get("minecraft:update_1_21");
9+
10+
FeatureFlag BUNDLE = FeatureFlagImpl.get("minecraft:bundle");
11+
12+
FeatureFlag VANILLA = FeatureFlagImpl.get("minecraft:vanilla");
13+
14+
FeatureFlag TRADE_REBALANCE = FeatureFlagImpl.get("minecraft:trade_rebalance");
15+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package net.minestom.server.featureflag;
2+
3+
import net.minestom.server.registry.Registry;
4+
import net.minestom.server.registry.StaticProtocolObject;
5+
import net.minestom.server.utils.NamespaceID;
6+
import org.jetbrains.annotations.Contract;
7+
import org.jetbrains.annotations.NotNull;
8+
import org.jetbrains.annotations.Nullable;
9+
10+
import java.util.Collection;
11+
12+
public sealed interface FeatureFlag extends StaticProtocolObject permits FeatureFlagImpl {
13+
14+
/**
15+
* Returns the entity registry.
16+
*
17+
* @return the entity registry or null if it was created with a builder
18+
*/
19+
@Contract(pure = true)
20+
@Nullable
21+
Registry.FeatureFlagEntry registry();
22+
23+
@Override
24+
@NotNull
25+
NamespaceID namespace();
26+
27+
static @NotNull Collection<@NotNull FeatureFlag> values() {
28+
return FeatureFlagImpl.values();
29+
}
30+
31+
static @Nullable FeatureFlag fromNamespaceId(@NotNull String namespaceID) {
32+
return FeatureFlagImpl.getSafe(namespaceID);
33+
}
34+
35+
static @Nullable FeatureFlag fromNamespaceId(@NotNull NamespaceID namespaceID) {
36+
return fromNamespaceId(namespaceID.asString());
37+
}
38+
39+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package net.minestom.server.featureflag;
2+
3+
import net.minestom.server.registry.Registry;
4+
import net.minestom.server.utils.NamespaceID;
5+
import org.jetbrains.annotations.NotNull;
6+
7+
import java.util.Collection;
8+
import java.util.concurrent.atomic.AtomicInteger;
9+
10+
public record FeatureFlagImpl(Registry.FeatureFlagEntry registry, NamespaceID namespace, int id) implements FeatureFlag {
11+
private static final Registry.DynamicContainer<FeatureFlag> CONTAINER = Registry.createDynamicContainer(Registry.Resource.FEATURE_FLAGS, FeatureFlagImpl::createImpl);
12+
private static final AtomicInteger INDEX = new AtomicInteger();
13+
14+
private static FeatureFlagImpl createImpl(String namespace, Registry.Properties properties) {
15+
return new FeatureFlagImpl(Registry.featureFlag(namespace, properties));
16+
}
17+
18+
private FeatureFlagImpl(Registry.FeatureFlagEntry registry) {
19+
this(registry, registry.namespace(), INDEX.getAndIncrement());
20+
}
21+
22+
static Collection<FeatureFlag> values() {
23+
return CONTAINER.values();
24+
}
25+
26+
public static FeatureFlag get(@NotNull String namespace) {
27+
return CONTAINER.get(namespace);
28+
}
29+
30+
static FeatureFlag getSafe(@NotNull String namespace) {
31+
return CONTAINER.getSafe(namespace);
32+
}
33+
}

src/main/java/net/minestom/server/network/packet/server/configuration/UpdateEnabledFeaturesPacket.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
package net.minestom.server.network.packet.server.configuration;
22

3+
import net.minestom.server.featureflag.FeatureFlag;
34
import net.minestom.server.network.NetworkBuffer;
45
import net.minestom.server.network.packet.server.ServerPacket;
56
import net.minestom.server.network.packet.server.ServerPacketIdentifier;
6-
import net.minestom.server.utils.NamespaceID;
77
import org.jetbrains.annotations.NotNull;
88

99
import java.util.Set;
1010

1111
import static net.minestom.server.network.NetworkBuffer.STRING;
1212

13-
public record UpdateEnabledFeaturesPacket(@NotNull Set<NamespaceID> features) implements ServerPacket.Configuration {
14-
public static final int MAX_FEATURES = 1024;
13+
public record UpdateEnabledFeaturesPacket(@NotNull Set<FeatureFlag> features) implements ServerPacket.Configuration {
14+
public static final int MAX_FEATURES = 64;
1515

1616
public UpdateEnabledFeaturesPacket(@NotNull NetworkBuffer buffer) {
17-
this(Set.copyOf(buffer.readCollection((b) -> NamespaceID.from(b.read(STRING)), MAX_FEATURES)));
17+
this(Set.copyOf(buffer.readCollection((b) -> FeatureFlag.fromNamespaceId(b.read(STRING)), MAX_FEATURES)));
1818
}
1919

2020
@Override
2121
public void write(@NotNull NetworkBuffer writer) {
22-
writer.writeCollection(features, (b, feature) -> b.write(STRING, feature.asString()));
22+
writer.writeCollection(features, (b, feature) -> b.write(STRING, feature.namespace().toString()));
2323
}
2424

2525
@Override

0 commit comments

Comments
 (0)