Skip to content

Commit

Permalink
Prepare implementing complex data types
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexProgrammerDE committed May 8, 2024
1 parent b6b5954 commit 0c25044
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,12 @@
import com.soulfiremc.util.GsonInstance;
import java.util.HashMap;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.type.IntDataComponent;

@Slf4j
public record JsonDataComponents(Map<DataComponentType<?>, DataComponent<?, ?>> components) {
public static final TypeAdapter<JsonDataComponents> SERIALIZER = new TypeAdapter<>() {
@Override
Expand All @@ -39,7 +42,26 @@ public JsonDataComponents read(JsonReader in) {
var parsedJson = GsonInstance.GSON.<JsonObject>fromJson(in, JsonObject.class);
var map = new HashMap<DataComponentType<?>, DataComponent<?, ?>>();
for (var entry : parsedJson.entrySet()) {
System.out.println(entry.getKey());
var value = entry.getValue();
switch (entry.getKey()) {
case "minecraft:max_stack_size" -> {
var maxStackSize = value.getAsInt();
map.put(DataComponentType.MAX_STACK_SIZE, new IntDataComponent(DataComponentType.MAX_STACK_SIZE, maxStackSize));
}
case "minecraft:rarity" -> {
var rarity = value.getAsString();
map.put(DataComponentType.RARITY, new IntDataComponent(DataComponentType.RARITY, Rarity.valueOf(rarity).ordinal()));
}
case "minecraft:attribute_modifiers" -> {

}
case "minecraft:tool" -> {

}
case "minecraft:food" -> {
}
default -> log.trace("Unknown DataComponentType: {}", entry.getKey());
}
}

return new JsonDataComponents(map);
Expand Down
8 changes: 8 additions & 0 deletions server/src/main/java/com/soulfiremc/server/data/Rarity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.soulfiremc.server.data;

public enum Rarity {
COMMON,
UNCOMMON,
RARE,
EPIC
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.soulfiremc.server.viaversion.SFVersionConstants;
import com.viaversion.viaversion.api.connection.UserConnection;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Objects;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
Expand All @@ -40,7 +41,9 @@
import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundKeepAlivePacket;
import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundPongPacket;
import org.geysermc.mcprotocollib.protocol.packet.configuration.clientbound.ClientboundFinishConfigurationPacket;
import org.geysermc.mcprotocollib.protocol.packet.configuration.clientbound.ClientboundSelectKnownPacks;
import org.geysermc.mcprotocollib.protocol.packet.configuration.serverbound.ServerboundFinishConfigurationPacket;
import org.geysermc.mcprotocollib.protocol.packet.configuration.serverbound.ServerboundSelectKnownPacks;
import org.geysermc.mcprotocollib.protocol.packet.handshake.serverbound.ClientIntentionPacket;
import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundStartConfigurationPacket;
import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundConfigurationAcknowledgedPacket;
Expand Down Expand Up @@ -141,6 +144,8 @@ public void packetReceived(Session session, Packet packet) {
} else if (protocol.getState() == ProtocolState.CONFIGURATION) {
if (packet instanceof ClientboundFinishConfigurationPacket) {
session.send(new ServerboundFinishConfigurationPacket());
} else if (packet instanceof ClientboundSelectKnownPacks) {
session.send(new ServerboundSelectKnownPacks(new ArrayList<>()));
}
}
}
Expand Down

0 comments on commit 0c25044

Please sign in to comment.