Sit/src/main/java/one/oth3r/sit/Sit.java

65 lines
2.6 KiB
Java
Raw Normal View History

2023-07-20 20:17:52 -05:00
package one.oth3r.sit;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
2023-07-20 20:17:52 -05:00
import net.fabricmc.api.ModInitializer;
2024-01-22 17:56:34 -06:00
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
2024-01-22 17:56:34 -06:00
import net.minecraft.network.RegistryByteBuf;
import net.minecraft.network.codec.PacketCodec;
import net.minecraft.network.codec.PacketCodecs;
import net.minecraft.network.packet.CustomPayload;
2023-07-20 20:17:52 -05:00
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.network.ServerPlayerEntity;
2024-03-10 23:02:30 -05:00
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
2024-01-22 17:56:34 -06:00
import net.minecraft.util.Identifier;
2024-04-04 21:45:28 -05:00
import one.oth3r.sit.file.Config;
2023-07-20 20:17:52 -05:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Type;
import java.util.HashMap;
2023-07-20 20:17:52 -05:00
public class Sit implements ModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger("sit");
public static final String MOD_ID = "oth3r-sit";
public static HashMap<ServerPlayerEntity, HashMap<String,String>> playerSettings = new HashMap<>();
2023-07-20 20:17:52 -05:00
public static final String ENTITY_NAME = "-sit!-entity-";
public static MinecraftServer server;
public static CommandManager commandManager;
public static boolean isClient = false;
2023-07-20 20:17:52 -05:00
@Override
public void onInitialize() {
//todo future:
// make it so it updates the sitting height and pos based on the block so if it changed while offline it still works (or if stair changes shape)
// inner stair offset & custom support for that ig
2024-04-04 21:45:28 -05:00
Config.load();
2023-07-20 20:17:52 -05:00
Events.register();
//PACKETS
2024-01-22 17:56:34 -06:00
PayloadTypeRegistry.playC2S().register(SettingsPayload.ID, SettingsPayload.CODEC);
ServerPlayNetworking.registerGlobalReceiver(SettingsPayload.ID,((payload, context) -> {
2023-11-26 10:16:36 -06:00
server.execute(() -> {
2024-01-22 17:56:34 -06:00
Type hashMapToken = new TypeToken<HashMap<String, Object>>() {}.getType();
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
playerSettings.put(context.player(),gson.fromJson(payload.value,hashMapToken));
});
}));
}
public record SettingsPayload(String value) implements CustomPayload {
public static final CustomPayload.Id<SettingsPayload> ID = new CustomPayload.Id<>(new Identifier(MOD_ID,"settings_v1.1"));
public static final PacketCodec<RegistryByteBuf, SettingsPayload> CODEC = PacketCodecs.STRING.xmap(SettingsPayload::new, SettingsPayload::value).cast();
@Override
public Id<SettingsPayload> getId() {
return ID;
}
2023-07-20 20:17:52 -05:00
}
2024-03-10 23:02:30 -05:00
public static MutableText lang(String key, Object... args) {
if (isClient) return Text.translatable(key, args);
else return LangReader.of(key, args).getTxT();
}
2023-07-20 20:17:52 -05:00
}