use of net.mine_diver.unsafeevents.listener.EventListener in project StationAPI by ModificationStation.
the class ClientVanillaChecker method handleServerLogin.
@EventListener(priority = ListenerPriority.HIGH)
private static void handleServerLogin(ServerLoginSuccessEvent event) {
if (Arrays.asList(event.loginRequestPacket.username.split(";")).contains(MODID.toString())) {
((ModdedPacketHandlerSetter) event.networkHandler).setModded();
Message message = new Message(of(MODID, "modlist"));
List<String> mods = new ArrayList<>();
mods.add(MODID.getVersion().getFriendlyString());
FabricLoader.getInstance().getAllMods().stream().map(ModContainer::getMetadata).forEach(modMetadata -> Collections.addAll(mods, modMetadata.getId(), modMetadata.getVersion().getFriendlyString()));
message.strings = mods.toArray(new String[0]);
event.networkHandler.sendPacket(message);
}
}
use of net.mine_diver.unsafeevents.listener.EventListener in project StationAPI by ModificationStation.
the class ServerVanillaChecker method registerMessages.
@EventListener(priority = ListenerPriority.HIGH)
private static void registerMessages(MessageListenerRegistryEvent event) {
event.registry.register(of(MODID, "modlist"), (player, message) -> {
if (!CLIENT_REQUIRED_MODS.isEmpty()) {
LOGGER.info("Received a list of mods from player \"" + player.name + "\", verifying...");
ServerPlayer serverPlayer = (ServerPlayer) player;
String version = message.strings[0];
String serverStationVersion = MODID.getVersion().getFriendlyString();
if (!version.equals(serverStationVersion)) {
LOGGER.error("Player \"" + player.name + "\" has a mismatching " + MODID.getName() + " version \"" + version + "\", disconnecting.");
serverPlayer.packetHandler.kick(I18n.translate("disconnect.stationapi:station_version_mismatch", serverStationVersion, version));
return;
}
Map<String, String> clientMods = new HashMap<>();
for (int i = 1; i < message.strings.length; i += 2) clientMods.put(message.strings[i], message.strings[i + 1]);
LOGGER.info("Player \"" + player.name + "\"'s mods: " + clientMods.entrySet().stream().map(stringStringEntry -> "modid=" + stringStringEntry.getKey() + " version=" + stringStringEntry.getValue()).collect(Collectors.joining(", ", "[", "]")));
String modid;
String clientVersion;
String serverVersion;
for (ModContainer serverMod : CLIENT_REQUIRED_MODS) {
ModMetadata modMetadata = serverMod.getMetadata();
modid = modMetadata.getId();
serverVersion = modMetadata.getVersion().getFriendlyString();
if (clientMods.containsKey(modid)) {
clientVersion = clientMods.get(modid);
if (clientVersion == null || !clientVersion.equals(serverVersion)) {
LOGGER.error("Player \"" + player.name + "\" has a mismatching " + modMetadata.getName() + " (" + modid + ")" + " version \"" + clientVersion + "\", disconnecting.");
serverPlayer.packetHandler.kick(I18n.translate("disconnect.stationapi:mod_version_mismatch", modMetadata.getName(), modid, serverVersion, clientVersion == null ? "null" : clientVersion));
return;
}
} else {
LOGGER.error("Player \"" + player.name + "\" has a missing mod " + modMetadata.getName() + " (" + modid + "), disconnecting.");
serverPlayer.packetHandler.kick(I18n.translate("disconnect.stationapi:missing_mod", modMetadata.getName(), modid, serverVersion));
return;
}
}
LOGGER.info("Player \"" + player.name + "\"'s mods have passed verification.");
}
});
}
use of net.mine_diver.unsafeevents.listener.EventListener in project StationAPI by ModificationStation.
the class StationRenderImpl method stitchExpandableAtlasesPostInit.
@EventListener(priority = ListenerPriority.LOW)
private static void stitchExpandableAtlasesPostInit(TextureRegisterEvent event) {
// noinspection deprecation
Minecraft minecraft = (Minecraft) FabricLoader.getInstance().getGameInstance();
TexturePack texturePack = minecraft.texturePackManager.texturePack;
ResourceReloader.create(minecraft.texturePackManager.texturePack, Collections.singletonList(StationRenderAPI.getBakedModelManager()), Util.getMainWorkerExecutor(), Runnable::run, COMPLETED_UNIT_FUTURE);
ItemModels.reloadModelsAll();
TERRAIN.registerTextureBinders(minecraft.textureManager, texturePack);
GUI_ITEMS.registerTextureBinders(minecraft.textureManager, texturePack);
debugExportAtlases();
}
use of net.mine_diver.unsafeevents.listener.EventListener in project StationAPI by ModificationStation.
the class StationRenderImpl method init.
@EventListener(priority = ListenerPriority.HIGH)
private static void init(TextureRegisterEvent event) {
TERRAIN = new ExpandableAtlas(Atlases.GAME_ATLAS_TEXTURE);
GUI_ITEMS = new ExpandableAtlas(of("textures/atlas/gui/items.png"));
TERRAIN.addSpritesheet("/terrain.png", 16, TerrainHelper.INSTANCE);
GUI_ITEMS.addSpritesheet("/gui/items.png", 16, GuiItemsHelper.INSTANCE);
}
use of net.mine_diver.unsafeevents.listener.EventListener in project StationAPI by ModificationStation.
the class DimensionListener method registerDimensions.
@EventListener
private static void registerDimensions(DimensionRegistryEvent event) {
DimensionRegistry r = event.registry;
r.register(of(MODID, "test_dimension"), new DimensionContainer<>(TestDimension::new));
}
Aggregations