├── Common ├── src │ └── main │ │ ├── resources │ │ ├── icon.png │ │ ├── assets │ │ │ └── servercountryflags │ │ │ │ ├── textures │ │ │ │ └── gui │ │ │ │ │ ├── flags │ │ │ │ │ ├── ad.png │ │ │ │ │ ├── ae.png │ │ │ │ │ ├── af.png │ │ │ │ │ ├── ag.png │ │ │ │ │ ├── ai.png │ │ │ │ │ ├── al.png │ │ │ │ │ ├── am.png │ │ │ │ │ ├── ao.png │ │ │ │ │ ├── aq.png │ │ │ │ │ ├── ar.png │ │ │ │ │ ├── as.png │ │ │ │ │ ├── at.png │ │ │ │ │ ├── au.png │ │ │ │ │ ├── aw.png │ │ │ │ │ ├── ax.png │ │ │ │ │ ├── az.png │ │ │ │ │ ├── ba.png │ │ │ │ │ ├── bb.png │ │ │ │ │ ├── bd.png │ │ │ │ │ ├── be.png │ │ │ │ │ ├── bf.png │ │ │ │ │ ├── bg.png │ │ │ │ │ ├── bh.png │ │ │ │ │ ├── bi.png │ │ │ │ │ ├── bj.png │ │ │ │ │ ├── bl.png │ │ │ │ │ ├── bm.png │ │ │ │ │ ├── bn.png │ │ │ │ │ ├── bo.png │ │ │ │ │ ├── bq.png │ │ │ │ │ ├── br.png │ │ │ │ │ ├── bs.png │ │ │ │ │ ├── bt.png │ │ │ │ │ ├── bv.png │ │ │ │ │ ├── bw.png │ │ │ │ │ ├── by.png │ │ │ │ │ ├── bz.png │ │ │ │ │ ├── ca.png │ │ │ │ │ ├── cc.png │ │ │ │ │ ├── cd.png │ │ │ │ │ ├── cf.png │ │ │ │ │ ├── cg.png │ │ │ │ │ ├── ch.png │ │ │ │ │ ├── ci.png │ │ │ │ │ ├── ck.png │ │ │ │ │ ├── cl.png │ │ │ │ │ ├── cm.png │ │ │ │ │ ├── cn.png │ │ │ │ │ ├── co.png │ │ │ │ │ ├── cr.png │ │ │ │ │ ├── cu.png │ │ │ │ │ ├── cv.png │ │ │ │ │ ├── cw.png │ │ │ │ │ ├── cx.png │ │ │ │ │ ├── cy.png │ │ │ │ │ ├── cz.png │ │ │ │ │ ├── de.png │ │ │ │ │ ├── dj.png │ │ │ │ │ ├── dk.png │ │ │ │ │ ├── dm.png │ │ │ │ │ ├── do.png │ │ │ │ │ ├── dz.png │ │ │ │ │ ├── ec.png │ │ │ │ │ ├── ee.png │ │ │ │ │ ├── eg.png │ │ │ │ │ ├── eh.png │ │ │ │ │ ├── er.png │ │ │ │ │ ├── es.png │ │ │ │ │ ├── et.png │ │ │ │ │ ├── fi.png │ │ │ │ │ ├── fj.png │ │ │ │ │ ├── fk.png │ │ │ │ │ ├── fm.png │ │ │ │ │ ├── fo.png │ │ │ │ │ ├── fr.png │ │ │ │ │ ├── ga.png │ │ │ │ │ ├── gb.png │ │ │ │ │ ├── gd.png │ │ │ │ │ ├── ge.png │ │ │ │ │ ├── gf.png │ │ │ │ │ ├── gg.png │ │ │ │ │ ├── gh.png │ │ │ │ │ ├── gi.png │ │ │ │ │ ├── gl.png │ │ │ │ │ ├── gm.png │ │ │ │ │ ├── gn.png │ │ │ │ │ ├── gp.png │ │ │ │ │ ├── gq.png │ │ │ │ │ ├── gr.png │ │ │ │ │ ├── gs.png │ │ │ │ │ ├── gt.png │ │ │ │ │ ├── gu.png │ │ │ │ │ ├── gw.png │ │ │ │ │ ├── gy.png │ │ │ │ │ ├── hk.png │ │ │ │ │ ├── hm.png │ │ │ │ │ ├── hn.png │ │ │ │ │ ├── hr.png │ │ │ │ │ ├── ht.png │ │ │ │ │ ├── hu.png │ │ │ │ │ ├── id.png │ │ │ │ │ ├── ie.png │ │ │ │ │ ├── il.png │ │ │ │ │ ├── im.png │ │ │ │ │ ├── in.png │ │ │ │ │ ├── io.png │ │ │ │ │ ├── iq.png │ │ │ │ │ ├── ir.png │ │ │ │ │ ├── is.png │ │ │ │ │ ├── it.png │ │ │ │ │ ├── je.png │ │ │ │ │ ├── jm.png │ │ │ │ │ ├── jo.png │ │ │ │ │ ├── jp.png │ │ │ │ │ ├── ke.png │ │ │ │ │ ├── kg.png │ │ │ │ │ ├── kh.png │ │ │ │ │ ├── ki.png │ │ │ │ │ ├── km.png │ │ │ │ │ ├── kn.png │ │ │ │ │ ├── kp.png │ │ │ │ │ ├── kr.png │ │ │ │ │ ├── kw.png │ │ │ │ │ ├── ky.png │ │ │ │ │ ├── kz.png │ │ │ │ │ ├── la.png │ │ │ │ │ ├── lb.png │ │ │ │ │ ├── lc.png │ │ │ │ │ ├── li.png │ │ │ │ │ ├── lk.png │ │ │ │ │ ├── lr.png │ │ │ │ │ ├── ls.png │ │ │ │ │ ├── lt.png │ │ │ │ │ ├── lu.png │ │ │ │ │ ├── lv.png │ │ │ │ │ ├── ly.png │ │ │ │ │ ├── ma.png │ │ │ │ │ ├── mc.png │ │ │ │ │ ├── md.png │ │ │ │ │ ├── me.png │ │ │ │ │ ├── mf.png │ │ │ │ │ ├── mg.png │ │ │ │ │ ├── mh.png │ │ │ │ │ ├── mk.png │ │ │ │ │ ├── ml.png │ │ │ │ │ ├── mm.png │ │ │ │ │ ├── mn.png │ │ │ │ │ ├── mo.png │ │ │ │ │ ├── mp.png │ │ │ │ │ ├── mq.png │ │ │ │ │ ├── mr.png │ │ │ │ │ ├── ms.png │ │ │ │ │ ├── mt.png │ │ │ │ │ ├── mu.png │ │ │ │ │ ├── mv.png │ │ │ │ │ ├── mw.png │ │ │ │ │ ├── mx.png │ │ │ │ │ ├── my.png │ │ │ │ │ ├── mz.png │ │ │ │ │ ├── na.png │ │ │ │ │ ├── nc.png │ │ │ │ │ ├── ne.png │ │ │ │ │ ├── nf.png │ │ │ │ │ ├── ng.png │ │ │ │ │ ├── ni.png │ │ │ │ │ ├── nl.png │ │ │ │ │ ├── no.png │ │ │ │ │ ├── np.png │ │ │ │ │ ├── nr.png │ │ │ │ │ ├── nu.png │ │ │ │ │ ├── nz.png │ │ │ │ │ ├── om.png │ │ │ │ │ ├── pa.png │ │ │ │ │ ├── pe.png │ │ │ │ │ ├── pf.png │ │ │ │ │ ├── pg.png │ │ │ │ │ ├── ph.png │ │ │ │ │ ├── pk.png │ │ │ │ │ ├── pl.png │ │ │ │ │ ├── pm.png │ │ │ │ │ ├── pn.png │ │ │ │ │ ├── pr.png │ │ │ │ │ ├── ps.png │ │ │ │ │ ├── pt.png │ │ │ │ │ ├── pw.png │ │ │ │ │ ├── py.png │ │ │ │ │ ├── qa.png │ │ │ │ │ ├── re.png │ │ │ │ │ ├── ro.png │ │ │ │ │ ├── rs.png │ │ │ │ │ ├── ru.png │ │ │ │ │ ├── rw.png │ │ │ │ │ ├── sa.png │ │ │ │ │ ├── sb.png │ │ │ │ │ ├── sc.png │ │ │ │ │ ├── sd.png │ │ │ │ │ ├── se.png │ │ │ │ │ ├── sg.png │ │ │ │ │ ├── sh.png │ │ │ │ │ ├── si.png │ │ │ │ │ ├── sj.png │ │ │ │ │ ├── sk.png │ │ │ │ │ ├── sl.png │ │ │ │ │ ├── sm.png │ │ │ │ │ ├── sn.png │ │ │ │ │ ├── so.png │ │ │ │ │ ├── sr.png │ │ │ │ │ ├── ss.png │ │ │ │ │ ├── st.png │ │ │ │ │ ├── sv.png │ │ │ │ │ ├── sx.png │ │ │ │ │ ├── sy.png │ │ │ │ │ ├── sz.png │ │ │ │ │ ├── tc.png │ │ │ │ │ ├── td.png │ │ │ │ │ ├── tf.png │ │ │ │ │ ├── tg.png │ │ │ │ │ ├── th.png │ │ │ │ │ ├── tj.png │ │ │ │ │ ├── tk.png │ │ │ │ │ ├── tl.png │ │ │ │ │ ├── tm.png │ │ │ │ │ ├── tn.png │ │ │ │ │ ├── to.png │ │ │ │ │ ├── tr.png │ │ │ │ │ ├── tt.png │ │ │ │ │ ├── tv.png │ │ │ │ │ ├── tw.png │ │ │ │ │ ├── tz.png │ │ │ │ │ ├── ua.png │ │ │ │ │ ├── ug.png │ │ │ │ │ ├── um.png │ │ │ │ │ ├── us.png │ │ │ │ │ ├── uy.png │ │ │ │ │ ├── uz.png │ │ │ │ │ ├── va.png │ │ │ │ │ ├── vc.png │ │ │ │ │ ├── ve.png │ │ │ │ │ ├── vg.png │ │ │ │ │ ├── vi.png │ │ │ │ │ ├── vn.png │ │ │ │ │ ├── vu.png │ │ │ │ │ ├── wf.png │ │ │ │ │ ├── ws.png │ │ │ │ │ ├── xk.png │ │ │ │ │ ├── ye.png │ │ │ │ │ ├── yt.png │ │ │ │ │ ├── za.png │ │ │ │ │ ├── zm.png │ │ │ │ │ ├── zw.png │ │ │ │ │ ├── timeout.png │ │ │ │ │ └── unknown.png │ │ │ │ │ ├── misc │ │ │ │ │ ├── map.png │ │ │ │ │ ├── point.png │ │ │ │ │ ├── point_home.png │ │ │ │ │ └── point_hovered.png │ │ │ │ │ └── sprites │ │ │ │ │ └── widget │ │ │ │ │ ├── map_button.png │ │ │ │ │ ├── map_button_focused.png │ │ │ │ │ ├── map_button_high_contrast.png │ │ │ │ │ └── map_button_focused_high_contrast.png │ │ │ │ └── lang │ │ │ │ ├── en_us.json │ │ │ │ ├── fr_fr.json │ │ │ │ ├── ru_ru.json │ │ │ │ ├── es_ar.json │ │ │ │ ├── es_es.json │ │ │ │ ├── pt_br.json │ │ │ │ ├── pl_pl.json │ │ │ │ └── it_it.json │ │ └── servercountryflags.mixins.json │ │ └── java │ │ └── me │ │ └── khajiitos │ │ └── servercountryflags │ │ └── common │ │ ├── config │ │ ├── Constraints.java │ │ ├── ClothConfigCheck.java │ │ ├── ConfigEntry.java │ │ └── ClothConfigScreenMaker.java │ │ ├── util │ │ ├── InvalidAPIResponseException.java │ │ ├── FlagRenderInfo.java │ │ ├── APIResponse.java │ │ ├── FlagPosition.java │ │ ├── Color.java │ │ ├── NetworkChangeDetector.java │ │ └── LocationInfo.java │ │ ├── mixin │ │ ├── JoinMultiplayerScreenAccessor.java │ │ ├── serverbrowser │ │ │ ├── ServerBrowserScreenAccessor.java │ │ │ ├── ServerBrowserListMixin.java │ │ │ └── BrowsedEntryMixin.java │ │ ├── LanguageManagerMixin.java │ │ ├── JoinMultiplayerScreenMixin.java │ │ └── OnlineServerEntryMixin.java │ │ └── APITimeoutManager.java └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── Forge ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── src │ └── main │ │ ├── resources │ │ ├── pack.mcmeta │ │ └── META-INF │ │ │ └── mods.toml │ │ └── java │ │ └── me │ │ └── khajiitos │ │ └── servercountryflags │ │ └── forge │ │ └── ServerCountryFlagsForge.java ├── gradlew.bat └── build.gradle ├── Fabric ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── src │ └── main │ │ ├── java │ │ └── me │ │ │ └── khajiitos │ │ │ └── servercountryflags │ │ │ └── fabric │ │ │ ├── ServerCountryFlagsFabric.java │ │ │ └── ModMenuApiImpl.java │ │ └── resources │ │ └── fabric.mod.json ├── build.gradle └── gradlew.bat ├── NeoForged ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── src │ └── main │ │ ├── resources │ │ ├── pack.mcmeta │ │ └── META-INF │ │ │ └── mods.toml │ │ └── java │ │ └── me │ │ └── khajiitos │ │ └── servercountryflags │ │ └── neoforged │ │ └── ServerCountryFlagsNeoforged.java ├── .gitignore ├── gradlew.bat └── build.gradle ├── .gitignore ├── README.md ├── gradle.properties ├── LICENSE ├── settings.gradle ├── gradlew.bat └── gradlew /Common/src/main/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/icon.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Forge/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Forge/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Fabric/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Fabric/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /NeoForged/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/NeoForged/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /Forge/src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": "Forge resources", 4 | "pack_format": 15, 5 | "forge:server_data_pack_format": 12 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /NeoForged/src/main/resources/pack.mcmeta: -------------------------------------------------------------------------------- 1 | { 2 | "pack": { 3 | "description": "Forge resources", 4 | "pack_format": 15, 5 | "forge:server_data_pack_format": 12 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ad.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ae.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/af.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/af.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ag.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ai.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/al.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/al.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/am.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/am.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ao.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/aq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/aq.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ar.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/as.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/at.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/au.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/aw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/aw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ax.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/az.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/az.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ba.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ba.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bb.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bd.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/be.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bh.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bi.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bj.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bl.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bo.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bq.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/br.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bs.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bt.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bv.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/by.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/by.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/bz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ca.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cc.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cd.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ch.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ci.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ci.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ck.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cl.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/co.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/co.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cu.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cv.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cx.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cy.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/cz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/de.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dj.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/do.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/dz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ec.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ee.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/eg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/eg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/eh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/eh.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/er.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/er.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/es.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/et.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/et.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fi.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fj.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fo.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/fr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ga.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gb.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gd.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ge.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gh.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gi.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gl.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gp.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gq.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gs.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gt.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gu.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/gy.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ht.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/hu.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/id.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ie.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/il.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/il.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/im.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/im.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/in.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/io.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/io.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/iq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/iq.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ir.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/is.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/it.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/je.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/je.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/jm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/jm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/jo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/jo.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/jp.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ke.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kh.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ki.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ki.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/km.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/km.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kp.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ky.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/kz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/la.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/la.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lb.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lc.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/li.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/li.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ls.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lt.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lu.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/lv.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ly.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ma.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mc.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/md.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/md.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/me.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mh.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ml.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mo.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mp.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mq.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ms.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mt.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mu.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mv.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mx.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/my.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/mz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/na.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/na.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nc.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ne.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ng.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ni.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nl.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/no.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/np.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/np.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nu.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/nz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/om.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/om.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pa.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pe.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ph.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pl.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ps.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pt.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/pw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/py.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/qa.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/re.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/re.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ro.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/rs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/rs.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ru.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/rw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sa.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sb.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sc.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sd.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/se.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sh.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/si.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/si.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sj.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sl.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/so.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/so.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ss.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/st.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/st.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sv.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sx.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sy.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/sz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tc.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/td.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/td.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/th.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/th.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tj.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tl.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/to.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tr.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tt.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tv.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/tz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ua.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ug.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/um.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/um.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/us.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/uy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/uy.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/uz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/uz.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/va.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/va.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vc.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ve.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vg.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vi.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vn.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/vu.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/wf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/wf.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ws.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/xk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/xk.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/ye.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/yt.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/za.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/zm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/zm.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/zw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/zw.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/misc/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/misc/map.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/misc/point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/misc/point.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/timeout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/timeout.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/flags/unknown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/flags/unknown.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/misc/point_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/misc/point_home.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/misc/point_hovered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/misc/point_hovered.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button.png -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/config/Constraints.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.config; 2 | 3 | public @interface Constraints { 4 | int minValue() default 0; 5 | int maxValue() default 100; 6 | } 7 | -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button_focused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button_focused.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button_high_contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button_high_contrast.png -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button_focused_high_contrast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Khajiitos/ServerCountryFlags/HEAD/Common/src/main/resources/assets/servercountryflags/textures/gui/sprites/widget/map_button_focused_high_contrast.png -------------------------------------------------------------------------------- /Fabric/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip 4 | validateDistributionUrl=true 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /Forge/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip 4 | validateDistributionUrl=true 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /NeoForged/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip 4 | validateDistributionUrl=true 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/util/InvalidAPIResponseException.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.util; 2 | 3 | public class InvalidAPIResponseException extends Exception { 4 | public InvalidAPIResponseException(String message) { 5 | super(message); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/util/FlagRenderInfo.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.util; 2 | 3 | import net.minecraft.network.chat.Component; 4 | 5 | import java.util.List; 6 | 7 | public record FlagRenderInfo(String countryCode, double flagAspectRatio, List tooltip) {} 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # gradle 2 | 3 | .gradle/ 4 | build/ 5 | out/ 6 | classes/ 7 | 8 | # eclipse 9 | 10 | *.launch 11 | 12 | # idea 13 | 14 | .idea/ 15 | *.iml 16 | *.ipr 17 | *.iws 18 | 19 | # vscode 20 | 21 | .settings/ 22 | .vscode/ 23 | bin/ 24 | .classpath 25 | .project 26 | 27 | # macos 28 | 29 | *.DS_Store 30 | 31 | # fabric 32 | 33 | run/ 34 | runs/ 35 | 36 | # java 37 | 38 | hs_err_*.log 39 | replay_*.log 40 | *.hprof 41 | *.jfr 42 | -------------------------------------------------------------------------------- /Fabric/src/main/java/me/khajiitos/servercountryflags/fabric/ServerCountryFlagsFabric.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.fabric; 2 | 3 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 4 | import net.fabricmc.api.ClientModInitializer; 5 | 6 | public class ServerCountryFlagsFabric implements ClientModInitializer { 7 | @Override 8 | public void onInitializeClient() { 9 | ServerCountryFlags.init(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/config/ClothConfigCheck.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.config; 2 | 3 | public class ClothConfigCheck { 4 | public static boolean isInstalled() { 5 | try { 6 | Class.forName("me.shedaniel.clothconfig2.ClothConfigDemo"); 7 | return true; 8 | } catch (ClassNotFoundException e) { 9 | return false; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/util/APIResponse.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.util; 2 | 3 | public record APIResponse(Status status, LocationInfo locationInfo) { 4 | public boolean cooldown() { 5 | return status == Status.COOLDOWN; 6 | } 7 | 8 | public boolean unknown() { 9 | return status == Status.UNKNOWN; 10 | } 11 | 12 | public enum Status { 13 | SUCCESS, 14 | UNKNOWN, 15 | COOLDOWN 16 | } 17 | } -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/mixin/JoinMultiplayerScreenAccessor.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.mixin; 2 | 3 | import net.minecraft.client.gui.screens.multiplayer.JoinMultiplayerScreen; 4 | import net.minecraft.network.chat.Component; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | import java.util.List; 9 | 10 | @Mixin(JoinMultiplayerScreen.class) 11 | public interface JoinMultiplayerScreenAccessor { 12 | 13 | @Accessor 14 | List getToolTip(); 15 | } 16 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/util/FlagPosition.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.util; 2 | 3 | public enum FlagPosition { 4 | BEHIND_NAME("behindName"), 5 | LEFT("left"), 6 | RIGHT("right"), 7 | BOTTOM_RIGHT("bottomRight"), 8 | TOOLTIP_SERVER_NAME("tooltipServerName"), 9 | TOOLTIP_PING("tooltipPing"); 10 | 11 | private final String name; 12 | 13 | FlagPosition(String name) { 14 | this.name = name; 15 | } 16 | 17 | @Override 18 | public String toString() { 19 | return this.name; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Common/src/main/resources/servercountryflags.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "minVersion": "0.8", 4 | "package": "me.khajiitos.servercountryflags.common.mixin", 5 | "compatibilityLevel": "JAVA_17", 6 | "client": [ 7 | "JoinMultiplayerScreenAccessor", 8 | "JoinMultiplayerScreenMixin", 9 | "LanguageManagerMixin", 10 | "OnlineServerEntryMixin", 11 | "serverbrowser.BrowsedEntryMixin", 12 | "serverbrowser.ServerBrowserListMixin", 13 | "serverbrowser.ServerBrowserScreenAccessor" 14 | ], 15 | "injectors": { 16 | "defaultRequire": 1 17 | }, 18 | "refmap": "servercountryflags.refmap.json" 19 | } 20 | -------------------------------------------------------------------------------- /Common/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java' 3 | id "org.spongepowered.gradle.vanilla" version "0.2.1-SNAPSHOT" 4 | } 5 | 6 | minecraft { 7 | version(minecraft_version) 8 | } 9 | 10 | repositories { 11 | maven { url "https://maven.shedaniel.me/" } 12 | maven { 13 | url "https://cursemaven.com" 14 | content { 15 | includeGroup "curse.maven" 16 | } 17 | } 18 | } 19 | 20 | dependencies { 21 | compileOnly 'org.spongepowered:mixin:0.8.5' 22 | compileOnly "me.shedaniel.cloth:cloth-config-forge:${cloth_config_version}" 23 | 24 | compileOnly "curse.maven:server-browser-825617:4739506" 25 | } -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/mixin/serverbrowser/ServerBrowserScreenAccessor.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.mixin.serverbrowser; 2 | 3 | import com.epherical.serverbrowser.client.screen.ServerBrowserScreen; 4 | import net.minecraft.network.chat.Component; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.Pseudo; 7 | import org.spongepowered.asm.mixin.gen.Accessor; 8 | 9 | import java.util.List; 10 | 11 | @Pseudo 12 | @Mixin(ServerBrowserScreen.class) 13 | public interface ServerBrowserScreenAccessor { 14 | 15 | @Accessor(remap = false) 16 | List getToolTip(); 17 | } 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Server Country Flags 2 | 3 | Adds a flag to servers in the server list which tells where the server is located. 4 | 5 | [![](http://cf.way2muchnoise.eu/full_841311_downloads.svg)](https://www.curseforge.com/minecraft/mc-mods/server-country-flags) 6 | [![](https://cf.way2muchnoise.eu/versions/841311.svg)](https://www.curseforge.com/minecraft/mc-mods/server-country-flags) 7 | 8 | [![~modrinth~](https://raw.githubusercontent.com/intergrav/devins-badges/main/badges/modrinth_64h.png)](https://modrinth.com/mod/server-country-flags/) 9 | [![~curseforge~](https://raw.githubusercontent.com/intergrav/devins-badges/main/badges/curseforge_64h.png)](https://www.curseforge.com/minecraft/mc-mods/server-country-flags) -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/config/ConfigEntry.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.config; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | @Target(ElementType.FIELD) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | public @interface ConfigEntry { 11 | String[] stringValues() default {}; 12 | boolean stringValuesTranslatable() default true; 13 | String configCategory() default "servercountryflags.config.category.miscellaneous"; 14 | Constraints[] constraints() default {}; 15 | String requiredMod() default ""; 16 | } 17 | -------------------------------------------------------------------------------- /NeoForged/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | build/ 3 | !gradle/wrapper/gradle-wrapper.jar 4 | !**/src/main/**/build/ 5 | !**/src/test/**/build/ 6 | 7 | ### IntelliJ IDEA ### 8 | .idea/modules.xml 9 | .idea/jarRepositories.xml 10 | .idea/compiler.xml 11 | .idea/libraries/ 12 | *.iws 13 | *.iml 14 | *.ipr 15 | out/ 16 | !**/src/main/**/out/ 17 | !**/src/test/**/out/ 18 | 19 | ### Eclipse ### 20 | .apt_generated 21 | .classpath 22 | .factorypath 23 | .project 24 | .settings 25 | .springBeans 26 | .sts4-cache 27 | bin/ 28 | !**/src/main/**/bin/ 29 | !**/src/test/**/bin/ 30 | 31 | ### NetBeans ### 32 | /nbproject/private/ 33 | /nbbuild/ 34 | /dist/ 35 | /nbdist/ 36 | /.nb-gradle/ 37 | 38 | ### VS Code ### 39 | .vscode/ 40 | 41 | ### Mac OS ### 42 | .DS_Store -------------------------------------------------------------------------------- /Fabric/src/main/java/me/khajiitos/servercountryflags/fabric/ModMenuApiImpl.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.fabric; 2 | 3 | import com.terraformersmc.modmenu.api.ConfigScreenFactory; 4 | import com.terraformersmc.modmenu.api.ModMenuApi; 5 | import me.khajiitos.servercountryflags.common.config.ClothConfigCheck; 6 | import me.khajiitos.servercountryflags.common.config.ClothConfigScreenMaker; 7 | 8 | public class ModMenuApiImpl implements ModMenuApi { 9 | 10 | @Override 11 | public ConfigScreenFactory getModConfigScreenFactory() { 12 | if (ClothConfigCheck.isInstalled()) { 13 | return ClothConfigScreenMaker::create; 14 | } 15 | return ModMenuApi.super.getModConfigScreenFactory(); 16 | } 17 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Done to increase the memory available to gradle. 2 | org.gradle.jvmargs=-Xmx1G 3 | org.gradle.parallel=true 4 | 5 | minecraft_version=1.20.4 6 | minecraft_version_group=1.20.4 7 | 8 | mod_id=servercountryflags 9 | mod_version=1.10.1 10 | 11 | fabric_loader_version=0.15.7 12 | fabric_version=0.96.11+1.20.4 13 | fabric_minecraft_version_range=>=1.20.2 14 | 15 | # 1.20.1 version; 1.20.2 is not released 16 | server_browser_artifact_id_forge=4739506 17 | server_browser_artifact_id_fabric=4595354 18 | # NeoForged version is not released, using Forge 19 | server_browser_artifact_id_neoforged=4739506 20 | 21 | forge_version=49.0.27 22 | forge_version_range=[49,) 23 | forge_loader_version_range=[49,) 24 | forge_minecraft_version_range=[1.20.2,1.21) 25 | 26 | neo_version=20.4.210 27 | neo_version_range=[20,) 28 | neo_loader_version_range=[1,) 29 | 30 | cloth_config_version=13.0.121 31 | modmenu_version=9.0.0 -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/mixin/LanguageManagerMixin.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.mixin; 2 | 3 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.client.resources.language.LanguageManager; 6 | import net.minecraft.server.packs.resources.ResourceManager; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | import org.spongepowered.asm.mixin.injection.Inject; 10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 11 | 12 | @Mixin(LanguageManager.class) 13 | public class LanguageManagerMixin { 14 | @Inject(at = @At("TAIL"), method = "onResourceManagerReload") 15 | public void onResourceManagerReload(ResourceManager manager, CallbackInfo info) { 16 | ServerCountryFlags.updateAPILanguage(Minecraft.getInstance().getLanguageManager().getSelected()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Forge/src/main/resources/META-INF/mods.toml: -------------------------------------------------------------------------------- 1 | modLoader = "javafml" 2 | loaderVersion = "${loader_version_range}" 3 | license = "MIT" 4 | issueTrackerURL = "https://github.com/Khajiitos/ServerCountryFlags/issues" 5 | 6 | [[mods]] 7 | modId = "servercountryflags" 8 | version = "${version}" 9 | logoFile="icon.png" 10 | displayName = "Server Country Flags" 11 | authors = "Khajiitos" 12 | displayURL="https://github.com/Khajiitos/ServerCountryFlags" 13 | description = '''Shows the flag of where a server is located.''' 14 | updateJSONURL = "https://updates.khajiitos.fun/server-country-flags/updates-forge.json" 15 | displayTest = "IGNORE_ALL_VERSION" 16 | 17 | [[dependencies.servercountryflags]] 18 | modId = "forge" 19 | mandatory = true 20 | versionRange = "${forge_version_range}" 21 | ordering = "NONE" 22 | side = "BOTH" 23 | 24 | [[dependencies.servercountryflags]] 25 | modId = "minecraft" 26 | mandatory = true 27 | versionRange = "${minecraft_version_range}" 28 | ordering = "NONE" 29 | side = "BOTH" 30 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/APITimeoutManager.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common; 2 | 3 | public class APITimeoutManager { 4 | private static int requestsLeft = 45; 5 | private static long cooldownReset = -1; 6 | private static int requestsSent = 0; 7 | 8 | public static boolean isOnCooldown() { 9 | return requestsLeft <= 0 && System.currentTimeMillis() < cooldownReset; 10 | } 11 | 12 | public static int getRequestsSent() { 13 | return requestsSent; 14 | } 15 | 16 | public static void incrementRequestsSent() { 17 | requestsSent++; 18 | } 19 | 20 | public static void decrementRequestsSent() { 21 | requestsSent--; 22 | } 23 | 24 | public static void setRequestsLeft(int apiRequestsLeft) { 25 | requestsLeft = apiRequestsLeft; 26 | } 27 | 28 | public static void setSecondsLeftUntilReset(int apiSecondsLeft) { 29 | cooldownReset = System.currentTimeMillis() + apiSecondsLeft * 1000L; 30 | } 31 | } -------------------------------------------------------------------------------- /Fabric/src/main/resources/fabric.mod.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": 1, 3 | "id": "servercountryflags", 4 | "version": "${version}", 5 | "name": "Server Country Flags", 6 | "description": "Shows the flag of where a server is located.", 7 | "authors": ["Khajiitos"], 8 | "license": "MIT", 9 | "icon": "icon.png", 10 | "environment": "client", 11 | "contact": { 12 | "homepage": "https://github.com/Khajiitos/ServerCountryFlags", 13 | "sources": "https://github.com/Khajiitos/ServerCountryFlags", 14 | "issues": "https://github.com/Khajiitos/ServerCountryFlags/issues" 15 | }, 16 | "entrypoints": { 17 | "client": [ 18 | "me.khajiitos.servercountryflags.fabric.ServerCountryFlagsFabric" 19 | ], 20 | "modmenu": [ 21 | "me.khajiitos.servercountryflags.fabric.ModMenuApiImpl" 22 | ] 23 | }, 24 | "mixins": [ 25 | "servercountryflags.mixins.json" 26 | ], 27 | "depends": { 28 | "fabricloader": ">=0.14.0", 29 | "fabric": "*", 30 | "minecraft": "${minecraft_version_range}", 31 | "java": ">=17" 32 | } 33 | } -------------------------------------------------------------------------------- /NeoForged/src/main/resources/META-INF/mods.toml: -------------------------------------------------------------------------------- 1 | modLoader = "javafml" 2 | loaderVersion = "${neo_loader_version_range}" 3 | license = "MIT" 4 | issueTrackerURL = "https://github.com/Khajiitos/ServerCountryFlags/issues" 5 | 6 | [[mixins]] 7 | config="servercountryflags.mixins.json" 8 | 9 | [[mods]] 10 | modId = "servercountryflags" 11 | version = "${version}" 12 | logoFile="icon.png" 13 | displayName = "Server Country Flags" 14 | authors = "Khajiitos" 15 | displayURL="https://github.com/Khajiitos/ServerCountryFlags" 16 | description = '''Shows the flag of where a server is located.''' 17 | updateJSONURL = "https://updates.khajiitos.fun/server-country-flags/updates-forge.json" 18 | displayTest = "IGNORE_ALL_VERSION" 19 | 20 | [[dependencies.servercountryflags]] 21 | modId = "neoforge" 22 | mandatory = true 23 | versionRange = "${neo_version_range}" 24 | ordering = "NONE" 25 | side = "BOTH" 26 | 27 | [[dependencies.servercountryflags]] 28 | modId = "minecraft" 29 | mandatory = true 30 | versionRange = "${minecraft_version_range}" 31 | ordering = "NONE" 32 | side = "BOTH" 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Khajiitos 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /Forge/src/main/java/me/khajiitos/servercountryflags/forge/ServerCountryFlagsForge.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.forge; 2 | 3 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 4 | import me.khajiitos.servercountryflags.common.config.ClothConfigCheck; 5 | import me.khajiitos.servercountryflags.common.config.ClothConfigScreenMaker; 6 | import net.minecraftforge.api.distmarker.Dist; 7 | import net.minecraftforge.client.ConfigScreenHandler; 8 | import net.minecraftforge.fml.DistExecutor; 9 | import net.minecraftforge.fml.ModLoadingContext; 10 | import net.minecraftforge.fml.common.Mod; 11 | 12 | @Mod(ServerCountryFlags.MOD_ID) 13 | public class ServerCountryFlagsForge { 14 | 15 | public ServerCountryFlagsForge() { 16 | DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { 17 | ServerCountryFlags.init(); 18 | 19 | if (ClothConfigCheck.isInstalled()) { 20 | ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory(ClothConfigScreenMaker::create)); 21 | } 22 | }); 23 | } 24 | } -------------------------------------------------------------------------------- /NeoForged/src/main/java/me/khajiitos/servercountryflags/neoforged/ServerCountryFlagsNeoforged.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.neoforged; 2 | 3 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 4 | import me.khajiitos.servercountryflags.common.config.ClothConfigCheck; 5 | import me.khajiitos.servercountryflags.common.config.ClothConfigScreenMaker; 6 | import net.neoforged.api.distmarker.Dist; 7 | import net.neoforged.fml.DistExecutor; 8 | import net.neoforged.fml.ModLoadingContext; 9 | import net.neoforged.fml.common.Mod; 10 | import net.neoforged.neoforge.client.ConfigScreenHandler; 11 | 12 | @Mod(ServerCountryFlags.MOD_ID) 13 | public class ServerCountryFlagsNeoforged { 14 | public ServerCountryFlagsNeoforged() { 15 | DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { 16 | ServerCountryFlags.init(); 17 | 18 | if (ClothConfigCheck.isInstalled()) { 19 | ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () -> new ConfigScreenHandler.ConfigScreenFactory(ClothConfigScreenMaker::create)); 20 | } 21 | }); 22 | } 23 | } -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | maven { 6 | name = 'Fabric' 7 | url = 'https://maven.fabricmc.net/' 8 | } 9 | maven { 10 | name = 'MinecraftForge' 11 | url = 'https://maven.minecraftforge.net/' 12 | } 13 | maven { 14 | name = 'SpongePowered' 15 | url = 'https://repo.spongepowered.org/maven/' 16 | } 17 | maven { 18 | name = 'NeoForged' 19 | url = 'https://maven.neoforged.net/releases' 20 | } 21 | } 22 | 23 | buildscript { 24 | configurations.configureEach { 25 | resolutionStrategy { 26 | eachDependency { 27 | if (requested.group == "com.google.code.gson" && requested.name == "gson") { 28 | useVersion("2.10.1") 29 | because("Fabric Loom requires a more recent version of Guava than FooJay toolchains") 30 | } 31 | } 32 | } 33 | } 34 | } 35 | } 36 | 37 | plugins { 38 | id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' 39 | } 40 | 41 | rootProject.name = 'ServerCountryFlags' 42 | 43 | include 'Common' 44 | include 'Forge' 45 | include 'Fabric' 46 | include 'NeoForged' 47 | 48 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/util/Color.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.util; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | public class Color { 7 | private static final Pattern SAVE_PATTERN = Pattern.compile("\\((\\d+), (\\d+), (\\d+), (\\d+)\\)"); 8 | public int r, g, b, a; 9 | 10 | public Color(int r, int g, int b, int a) { 11 | this.r = r; 12 | this.g = g; 13 | this.b = b; 14 | this.a = a; 15 | } 16 | 17 | public String toString() { 18 | return String.format("(%d, %d, %d, %d)", this.r, this.g, this.b, this.a); 19 | } 20 | 21 | public static Color fromString(String string) { 22 | Matcher matcher = SAVE_PATTERN.matcher(string); 23 | 24 | if (matcher.matches()) { 25 | try { 26 | int r = Integer.parseInt(matcher.group(1)); 27 | int g = Integer.parseInt(matcher.group(2)); 28 | int b = Integer.parseInt(matcher.group(3)); 29 | int a = Integer.parseInt(matcher.group(4)); 30 | 31 | return new Color(r, g, b, a < 0 ? 127 - a : a); 32 | } catch (NumberFormatException ignored) {} 33 | } 34 | return new Color(255, 255, 255, 255); 35 | } 36 | 37 | public static Color fromARGB(int argb) { 38 | int r = (argb & 0x00FF0000) >> 16; 39 | int g = (argb & 0x0000FF00) >> 8; 40 | int b = (argb & 0x000000FF); 41 | int a = (argb >> 24) & 0xFF; 42 | 43 | return new Color(r, g, b, a); 44 | } 45 | 46 | public int toARGB() { 47 | return (a << 24) | (r << 16) | (g << 8) | b; 48 | } 49 | } -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/mixin/serverbrowser/ServerBrowserListMixin.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.mixin.serverbrowser; 2 | 3 | 4 | import com.epherical.serverbrowser.client.list.ServerBrowserList; 5 | import com.google.gson.JsonElement; 6 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 7 | import me.khajiitos.servercountryflags.common.config.Config; 8 | import me.khajiitos.servercountryflags.common.util.APIResponse; 9 | import org.spongepowered.asm.mixin.*; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 13 | 14 | import java.util.List; 15 | 16 | @Pseudo 17 | @Mixin(ServerBrowserList.class) 18 | public class ServerBrowserListMixin { 19 | @Shadow(remap = false) @Final private List entries; 20 | 21 | @Unique 22 | private static void servercountryflags$updateLocationInfos(List entries) { 23 | entries.forEach(entry -> { 24 | String ip = entry.getServerData().ip; 25 | if (!ServerCountryFlags.servers.containsKey(ip) || ServerCountryFlags.servers.get(ip).status() != APIResponse.Status.SUCCESS) { 26 | ServerCountryFlags.updateServerLocationInfo(ip); 27 | } 28 | }); 29 | } 30 | 31 | @Inject(at = @At("TAIL"), method = "refreshServers", remap = false) 32 | public void refreshServers(CallbackInfo ci) { 33 | if (!Config.cfg.serverBrowserIntegration) { 34 | return; 35 | } 36 | 37 | if (Config.cfg.reloadOnRefresh) { 38 | ServerCountryFlags.servers.entrySet().removeIf(entry -> entries.stream().anyMatch(browsedEntry -> browsedEntry.getServerData().ip.equals(entry.getKey()))); 39 | } 40 | 41 | servercountryflags$updateLocationInfos(entries); 42 | } 43 | 44 | @Inject(at = @At("TAIL"), method = "addEntries", remap = false) 45 | public void addEntries(JsonElement jsonElement, boolean toTop, CallbackInfo ci) { 46 | if (!Config.cfg.serverBrowserIntegration) { 47 | return; 48 | } 49 | 50 | servercountryflags$updateLocationInfos(entries); 51 | } 52 | } -------------------------------------------------------------------------------- /Fabric/build.gradle: -------------------------------------------------------------------------------- 1 | 2 | plugins { 3 | id 'fabric-loom' version '1.5-SNAPSHOT' 4 | id 'maven-publish' 5 | } 6 | 7 | sourceCompatibility = JavaVersion.VERSION_17 8 | targetCompatibility = JavaVersion.VERSION_17 9 | 10 | base { 11 | archivesName = mod_id + "-" + mod_version + "-" + minecraft_version_group + "-FABRIC" 12 | } 13 | 14 | loom { 15 | mixin { 16 | defaultRefmapName = "${mod_id}.refmap.json" 17 | } 18 | } 19 | 20 | repositories { 21 | maven { url "https://maven.shedaniel.me/" } 22 | maven { url "https://maven.terraformersmc.com/releases/" } 23 | maven { 24 | url "https://cursemaven.com" 25 | content { 26 | includeGroup "curse.maven" 27 | } 28 | } 29 | } 30 | 31 | dependencies { 32 | minecraft "com.mojang:minecraft:${project.minecraft_version}" 33 | mappings loom.officialMojangMappings() 34 | 35 | modImplementation "net.fabricmc:fabric-loader:${project.fabric_loader_version}" 36 | modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" 37 | 38 | modImplementation("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") { 39 | exclude(group: "net.fabricmc.fabric-api") 40 | } 41 | 42 | modImplementation "com.terraformersmc:modmenu:${modmenu_version}" 43 | 44 | // Compile only because it crashes on 1.20.4 (using 1.20.1 version) 45 | modCompileOnly "curse.maven:server-browser-825617:${server_browser_artifact_id_fabric}" 46 | 47 | implementation project(":Common") 48 | } 49 | 50 | processResources { 51 | from project(":Common").sourceSets.main.resources 52 | 53 | filteringCharset "UTF-8" 54 | 55 | inputs.property "version", mod_version 56 | inputs.property "minecraft_version", minecraft_version 57 | inputs.property "minecraft_version_range", fabric_minecraft_version_range 58 | 59 | filesMatching("fabric.mod.json") { 60 | expand "version": mod_version, 61 | "minecraft_version": minecraft_version, 62 | "minecraft_version_range": fabric_minecraft_version_range 63 | } 64 | } 65 | 66 | tasks.withType(JavaCompile).configureEach { 67 | source(project(":Common").sourceSets.main.allSource) 68 | 69 | it.options.encoding = "UTF-8" 70 | } 71 | 72 | tasks.withType(Javadoc).configureEach { 73 | source(project(":Common").sourceSets.main.allJava) 74 | } 75 | 76 | // Ideally this project would use Gradle from the root project 77 | tasks.register('wrapper', Wrapper) { 78 | gradleVersion = '8.1.1' 79 | } 80 | 81 | jar.finalizedBy('remapJar') -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/util/NetworkChangeDetector.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.util; 2 | 3 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 4 | 5 | import java.net.InterfaceAddress; 6 | import java.net.NetworkInterface; 7 | import java.net.SocketException; 8 | import java.util.ArrayList; 9 | import java.util.Collections; 10 | import java.util.HashMap; 11 | import java.util.List; 12 | 13 | public class NetworkChangeDetector { 14 | private static final HashMap> previousInterfaces = new HashMap<>(); 15 | 16 | public static boolean check() { 17 | boolean changed = false; 18 | try { 19 | List currentInterfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); 20 | for (NetworkInterface networkInterface : currentInterfaces) { 21 | if (!previousInterfaces.containsKey(networkInterface)) { 22 | previousInterfaces.put(networkInterface, new ArrayList<>()); 23 | changed = true; 24 | } 25 | for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) { 26 | if (!previousInterfaces.get(networkInterface).contains(address)) { 27 | previousInterfaces.get(networkInterface).add(address); 28 | changed = true; 29 | } 30 | } 31 | } 32 | List interfacesToRemove = new ArrayList<>(); 33 | for (NetworkInterface networkInterface : previousInterfaces.keySet()) { 34 | if (!currentInterfaces.contains(networkInterface)) { 35 | interfacesToRemove.add(networkInterface); 36 | changed = true; 37 | } else { 38 | for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) { 39 | if (!previousInterfaces.get(networkInterface).contains(address)) { 40 | previousInterfaces.get(networkInterface).remove(address); 41 | changed = true; 42 | } 43 | } 44 | } 45 | } 46 | interfacesToRemove.forEach(previousInterfaces::remove); 47 | } catch (SocketException e) { 48 | ServerCountryFlags.LOGGER.warn("SocketException while checking network interfaces"); 49 | } 50 | 51 | return changed; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /NeoForged/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/util/LocationInfo.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.util; 2 | 3 | import com.google.gson.JsonElement; 4 | import com.google.gson.JsonObject; 5 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 6 | 7 | import java.util.List; 8 | 9 | public class LocationInfo { 10 | private static final double MILE_KM_RATIO = 1.609344; 11 | 12 | public final String countryCode; 13 | public final String countryName; 14 | public final String cityName; 15 | public final String districtName; 16 | public final String ispName; 17 | public final double latitude; 18 | public final double longitude; 19 | private double distanceFromLocal; // in miles 20 | 21 | public LocationInfo(JsonElement apiJson) throws InvalidAPIResponseException { 22 | if (apiJson == null) { 23 | throw new InvalidAPIResponseException("Received something that's not JSON"); 24 | } 25 | 26 | if (!(apiJson instanceof JsonObject apiObject)) { 27 | throw new InvalidAPIResponseException("Received JSON element, but it's not an object"); 28 | } 29 | 30 | if (!apiObject.has("status") || !apiObject.get("status").getAsString().equals("success")) { 31 | throw new InvalidAPIResponseException("API result isn't successful"); 32 | } 33 | 34 | if (apiObject.keySet().containsAll(List.of("country", "countryCode", "city", "lon", "lat", "district", "isp"))) { 35 | this.countryName = apiObject.get("country").getAsString(); 36 | this.countryCode = apiObject.get("countryCode").getAsString().toLowerCase(); 37 | this.cityName = apiObject.get("city").getAsString(); 38 | this.districtName = apiObject.get("district").getAsString(); 39 | this.ispName = apiObject.get("isp").getAsString(); 40 | 41 | this.longitude = apiObject.get("lon").getAsDouble(); 42 | this.latitude = apiObject.get("lat").getAsDouble(); 43 | this.distanceFromLocal = calculateDistanceFromLocal(); 44 | } else { 45 | throw new InvalidAPIResponseException("API Object is incomplete"); 46 | } 47 | } 48 | 49 | private double calculateDistanceFromLocal() { 50 | LocationInfo local = ServerCountryFlags.localLocation; 51 | 52 | if (local == null) 53 | return -1.0; 54 | 55 | double theta = local.longitude - this.longitude; 56 | return Math.toDegrees(Math.acos( 57 | Math.sin(Math.toRadians(local.latitude)) * Math.sin(Math.toRadians(this.latitude)) 58 | + Math.cos(Math.toRadians(local.latitude)) * Math.cos(Math.toRadians(this.latitude)) 59 | * Math.cos(Math.toRadians(theta)) 60 | )) * 69.09; 61 | } 62 | 63 | public double getDistanceFromLocal(boolean inKm) { 64 | if (this.distanceFromLocal == -1.0) 65 | return -1.0; 66 | return inKm ? this.distanceFromLocal * MILE_KM_RATIO : this.distanceFromLocal; 67 | } 68 | 69 | public void updateDistanceFromLocal() { 70 | this.distanceFromLocal = calculateDistanceFromLocal(); 71 | } 72 | } -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /Fabric/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /Forge/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/mixin/JoinMultiplayerScreenMixin.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.mixin; 2 | 3 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 4 | import me.khajiitos.servercountryflags.common.config.Config; 5 | import me.khajiitos.servercountryflags.common.screen.ServerMapScreen; 6 | import me.khajiitos.servercountryflags.common.util.APIResponse; 7 | import me.khajiitos.servercountryflags.common.util.NetworkChangeDetector; 8 | import net.minecraft.client.Minecraft; 9 | import net.minecraft.client.gui.components.ImageButton; 10 | import net.minecraft.client.gui.components.WidgetSprites; 11 | import net.minecraft.client.gui.screens.Screen; 12 | import net.minecraft.client.gui.screens.multiplayer.JoinMultiplayerScreen; 13 | import net.minecraft.client.multiplayer.ServerList; 14 | import net.minecraft.network.chat.Component; 15 | import net.minecraft.resources.ResourceLocation; 16 | import org.spongepowered.asm.mixin.Mixin; 17 | import org.spongepowered.asm.mixin.Shadow; 18 | import org.spongepowered.asm.mixin.Unique; 19 | import org.spongepowered.asm.mixin.injection.At; 20 | import org.spongepowered.asm.mixin.injection.Inject; 21 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 22 | 23 | @Mixin(JoinMultiplayerScreen.class) 24 | public class JoinMultiplayerScreenMixin extends Screen { 25 | @Unique 26 | private static final WidgetSprites MAP_BUTTON_SPRITES = new WidgetSprites( 27 | new ResourceLocation(ServerCountryFlags.MOD_ID, "widget/map_button"), 28 | new ResourceLocation(ServerCountryFlags.MOD_ID, "widget/map_button_focused") 29 | ); 30 | 31 | @Unique 32 | private static final WidgetSprites MAP_BUTTON_SPRITES_HIGH_CONTRAST = new WidgetSprites( 33 | new ResourceLocation(ServerCountryFlags.MOD_ID, "widget/map_button_high_contrast"), 34 | new ResourceLocation(ServerCountryFlags.MOD_ID, "widget/map_button_focused_high_contrast") 35 | ); 36 | 37 | @Shadow 38 | private ServerList servers; 39 | 40 | private JoinMultiplayerScreenMixin(Component title) { 41 | super(title); 42 | } 43 | 44 | @Inject(method = "", at = @At("TAIL")) 45 | public void constructor(CallbackInfo info) { 46 | if (Config.cfg.reloadOnRefresh) { 47 | ServerCountryFlags.servers.clear(); 48 | ServerCountryFlags.localLocation = null; 49 | } 50 | 51 | if (ServerCountryFlags.localLocation == null || NetworkChangeDetector.check()) { 52 | ServerCountryFlags.updateLocalLocationInfo(); 53 | } 54 | } 55 | 56 | @Inject(at = @At("TAIL"), method = "init") 57 | public void init(CallbackInfo info) { 58 | ServerCountryFlags.serverList = this.servers; 59 | 60 | for (int i = 0; i < this.servers.size(); i++) { 61 | if (!ServerCountryFlags.servers.containsKey(this.servers.get(i).ip) || ServerCountryFlags.servers.get(this.servers.get(i).ip).status() != APIResponse.Status.SUCCESS) { 62 | ServerCountryFlags.updateServerLocationInfo(this.servers.get(i).ip); 63 | } 64 | } 65 | 66 | if (Config.cfg.mapButton) { 67 | int posX = this.width / 2 + (Config.cfg.mapButtonRight ? 159 : -179); 68 | int posY = this.height - 30; 69 | this.addRenderableWidget(new ImageButton(posX, posY, 20, 20, Minecraft.getInstance().options.highContrast().get() ? MAP_BUTTON_SPRITES_HIGH_CONTRAST : MAP_BUTTON_SPRITES, (button) -> Minecraft.getInstance().setScreen(new ServerMapScreen(this)))); 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Forge/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | mavenCentral() 4 | maven { 5 | url = "https://repo.spongepowered.org/maven/" 6 | } 7 | } 8 | dependencies { 9 | classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' 10 | } 11 | } 12 | 13 | plugins { 14 | id 'idea' 15 | id 'net.minecraftforge.gradle' version '[6.0,6.2)' 16 | } 17 | 18 | apply plugin: 'org.spongepowered.mixin' 19 | 20 | sourceCompatibility = JavaVersion.VERSION_17 21 | targetCompatibility = JavaVersion.VERSION_17 22 | 23 | base { 24 | archivesName = mod_id + "-" + mod_version + "-" + minecraft_version_group + "-FORGE" 25 | } 26 | 27 | minecraft { 28 | mappings channel: "official", version: minecraft_version 29 | 30 | copyIdeResources = true 31 | 32 | runs { 33 | client { 34 | workingDirectory project.file('run') 35 | property 'forge.logging.markers', 'REGISTRIES' 36 | property 'forge.logging.console.level', 'debug' 37 | property 'forge.enabledGameTestNamespaces', mod_id 38 | 39 | mods { 40 | "${mod_id}" { 41 | source sourceSets.main 42 | } 43 | } 44 | } 45 | } 46 | } 47 | 48 | mixin { 49 | add sourceSets.main, "${mod_id}.refmap.json" 50 | config "${mod_id}.mixins.json" 51 | } 52 | 53 | sourceSets.main.resources { srcDir 'src/generated/resources' } 54 | 55 | repositories { 56 | maven { url "https://maven.shedaniel.me/" } 57 | maven { 58 | url "https://cursemaven.com" 59 | content { 60 | includeGroup "curse.maven" 61 | } 62 | } 63 | } 64 | 65 | dependencies { 66 | minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" 67 | annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' 68 | implementation fg.deobf("me.shedaniel.cloth:cloth-config-forge:${cloth_config_version}") 69 | implementation fg.deobf("curse.maven:server-browser-825617:${server_browser_artifact_id_forge}") 70 | 71 | implementation project(':Common') 72 | } 73 | 74 | processResources { 75 | from project(":Common").sourceSets.main.resources 76 | 77 | inputs.property "version", mod_version 78 | inputs.property "loader_version_range", forge_loader_version_range 79 | inputs.property "forge_version_range", forge_version_range 80 | inputs.property "minecraft_version_range", forge_minecraft_version_range 81 | 82 | filesMatching("META-INF/mods.toml") { 83 | expand version: mod_version, 84 | loader_version_range: forge_loader_version_range, 85 | forge_version_range: forge_version_range, 86 | minecraft_version_range: forge_minecraft_version_range 87 | } 88 | } 89 | 90 | jar { 91 | manifest { 92 | attributes([ 93 | "Specification-Title" : "servercountryflags", 94 | "Specification-Vendor" : "Khajiitos", 95 | "Implementation-Title" : "Server Country Flags", 96 | "Implementation-Version" : mod_version, 97 | "Implementation-Vendor" : "Khajiitos", 98 | "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") 99 | ]) 100 | } 101 | } 102 | 103 | tasks.withType(JavaCompile).configureEach { 104 | source(project(":Common").sourceSets.main.allSource) 105 | 106 | it.options.encoding = "UTF-8" 107 | } 108 | 109 | tasks.withType(Javadoc).configureEach { 110 | source(project(":Common").sourceSets.main.allJava) 111 | } 112 | 113 | // Ideally this project would use Gradle from the root project 114 | tasks.register('wrapper', Wrapper) { 115 | gradleVersion = '8.1.1' 116 | } 117 | 118 | // Register dummy ideaSyncTask so that Gradle doesn't complain 119 | // but why does it complain here and not in the Fabric project? 120 | tasks.register('ideaSyncTask', {}) 121 | 122 | jar.finalizedBy('reobfJar') -------------------------------------------------------------------------------- /NeoForged/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | mavenCentral() 4 | maven { 5 | url = "https://repo.spongepowered.org/maven/" 6 | } 7 | } 8 | } 9 | 10 | plugins { 11 | id 'idea' 12 | id 'net.neoforged.gradle.userdev' version '7.0.57' 13 | } 14 | 15 | java.toolchain.languageVersion = JavaLanguageVersion.of(17) 16 | 17 | base { 18 | archivesName = mod_id + "-" + mod_version + "-" + minecraft_version_group + "-NEOFORGED" 19 | } 20 | 21 | runs { 22 | configureEach { 23 | systemProperty 'forge.logging.markers', 'REGISTRIES' 24 | systemProperty 'forge.logging.console.level', 'debug' 25 | modSource project.sourceSets.main 26 | } 27 | 28 | client { 29 | systemProperty 'forge.enabledGameTestNamespaces', project.mod_id 30 | } 31 | 32 | server { 33 | systemProperty 'forge.enabledGameTestNamespaces', project.mod_id 34 | programArgument '--nogui' 35 | } 36 | 37 | gameTestServer { 38 | systemProperty 'forge.enabledGameTestNamespaces', project.mod_id 39 | } 40 | 41 | data { 42 | // example of overriding the workingDirectory set in configureEach above, uncomment if you want to use it 43 | // workingDirectory project.file('run-data') 44 | 45 | // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. 46 | programArguments.addAll '--mod', project.mod_id, '--all', '--output', file('src/generated/resources/').getAbsolutePath(), '--existing', file('src/main/resources/').getAbsolutePath() 47 | } 48 | } 49 | 50 | sourceSets.main.resources { srcDir 'src/generated/resources' } 51 | 52 | repositories { 53 | maven { url "https://maven.shedaniel.me/" } 54 | maven { 55 | url "https://cursemaven.com" 56 | content { 57 | includeGroup "curse.maven" 58 | } 59 | } 60 | } 61 | 62 | dependencies { 63 | implementation "net.neoforged:neoforge:${neo_version}" 64 | 65 | implementation "me.shedaniel.cloth:cloth-config-neoforge:${cloth_config_version}" 66 | compileOnly "curse.maven:server-browser-825617:${server_browser_artifact_id_neoforged}" 67 | implementation project(':Common') 68 | } 69 | 70 | processResources { 71 | from project(":Common").sourceSets.main.resources 72 | 73 | inputs.property "version", mod_version 74 | inputs.property "neo_loader_version_range", neo_loader_version_range 75 | inputs.property "neo_version_range", neo_version_range 76 | inputs.property "minecraft_version_range", forge_minecraft_version_range 77 | 78 | filesMatching("META-INF/mods.toml") { 79 | expand version: mod_version, 80 | neo_loader_version_range: neo_loader_version_range, 81 | neo_version_range: neo_version_range, 82 | minecraft_version_range: forge_minecraft_version_range 83 | } 84 | } 85 | 86 | jar { 87 | manifest { 88 | attributes([ 89 | "Specification-Title" : "servercountryflags", 90 | "Specification-Vendor" : "Khajiitos", 91 | "Implementation-Title" : "Server Country Flags", 92 | "Implementation-Version" : mod_version, 93 | "Implementation-Vendor" : "Khajiitos", 94 | "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") 95 | ]) 96 | } 97 | } 98 | 99 | // withType(JavaCompile) didn't work for some reason 100 | tasks.named("compileJava").configure { 101 | source(project(":Common").sourceSets.main.allSource) 102 | 103 | it.options.encoding = "UTF-8" 104 | } 105 | 106 | tasks.withType(Javadoc).configureEach { 107 | source(project(":Common").sourceSets.main.allJava) 108 | } 109 | 110 | // Ideally this project would use Gradle from the root project 111 | tasks.register('wrapper', Wrapper) { 112 | gradleVersion = '8.1.1' 113 | } 114 | 115 | // Register dummy ideaSyncTask so that Gradle doesn't complain 116 | // but why does it complain here and not in the Fabric project? 117 | tasks.register('ideaSyncTask', {}) -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/en_us.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(unknown)", 3 | "servercountryflags.locationInfo.cooldown": "(API on cooldown)", 4 | "servercountryflags.locationInfo.distance": "≈ %d %s away", 5 | "servercountryflags.locationInfo.km": "km", 6 | "servercountryflags.locationInfo.mi": "mi", 7 | "servercountryflags.locationInfo.isp": "ISP: %s", 8 | "servercountryflags.servermap.title": "Server Map", 9 | "servercountryflags.servermap.home": "Home", 10 | 11 | "servercountryflags.config.category.border": "Border", 12 | "servercountryflags.config.category.preferences": "Preferences", 13 | "servercountryflags.config.category.locale": "Locale", 14 | 15 | "servercountryflags.config.header": "Server Country Flags Config", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Flag Position", 18 | "servercountryflags.config.field.flagPosition.description": "Changes the flags' positions. Available options: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Behind Name", 20 | "servercountryflags.config.field.flagPosition.value.left": "Left", 21 | "servercountryflags.config.field.flagPosition.value.right": "Right", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "Bottom Right", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "Tooltip (Server Name)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "Tooltip (Ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Flag Border", 27 | "servercountryflags.config.field.flagBorder.description": "Displays a border around flags", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Border Color", 30 | "servercountryflags.config.field.borderColor.description": "Border color around flags", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Reload on Refresh", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Forces flags to be reloaded when the server list is refreshed", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Show Distance", 36 | "servercountryflags.config.field.showDistance.description": "Shows the approximate distance between the server and you when you hover over a flag", 37 | 38 | "servercountryflags.config.field.useKm.name": "Use Kilometers", 39 | "servercountryflags.config.field.useKm.description": "Uses kilometers instead of miles", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Force English", 42 | "servercountryflags.config.field.forceEnglish.description": "Forces the API results to be in English instead of your in-game language", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Display Unknown Flag", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Displays the unknown flag when we don't have data about the server yet", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Display Cooldown Flag", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Displays a timeout flag when we have an API cooldown", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Show District", 51 | "servercountryflags.config.field.showDistrict.description": "Shows the district of the location too, if available", 52 | 53 | "servercountryflags.config.field.showISP.name": "Show ISP", 54 | "servercountryflags.config.field.showISP.description": "Shows the ISP of the host, if available", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Map Button", 57 | "servercountryflags.config.field.mapButton.description": "Shows a map button in the server list which opens the server map", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Map Button on the Right Side", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decides whether the map button should be on the right side or the left side", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Show Home on Map", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Shows your location on the server map too", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Resolve SRV Redirects", 66 | "servercountryflags.config.field.resolveRedirects.description": "Uses the redirected IP (if present) instead of just the resolved IP", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Server Browser Integration", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Displays flags in the Server Browser, if that mod is installed" 70 | } -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/fr_fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(inconnu)", 3 | "servercountryflags.locationInfo.cooldown": "(API en attente)", 4 | "servercountryflags.locationInfo.distance": "≈ %d %s de distance", 5 | "servercountryflags.locationInfo.km": "km", 6 | "servercountryflags.locationInfo.mi": "mi", 7 | "servercountryflags.locationInfo.isp": "ISP: %s", 8 | "servercountryflags.servermap.title": "Carte du serveur", 9 | "servercountryflags.servermap.home": "Maison", 10 | 11 | "servercountryflags.config.category.border": "Border", 12 | "servercountryflags.config.category.preferences": "Preferences", 13 | "servercountryflags.config.category.locale": "Locale", 14 | 15 | "servercountryflags.config.header": "Server Country Flags Config", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Flag Position", 18 | "servercountryflags.config.field.flagPosition.description": "Changes the flags' positions. Available options: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Behind Name", 20 | "servercountryflags.config.field.flagPosition.value.left": "Left", 21 | "servercountryflags.config.field.flagPosition.value.right": "Right", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "Bottom Right", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "Tooltip (Server Name)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "Tooltip (Ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Flag Border", 27 | "servercountryflags.config.field.flagBorder.description": "Displays a border around flags", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Border Color", 30 | "servercountryflags.config.field.borderColor.description": "Border color around flags", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Reload on Refresh", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Forces flags to be reloaded when the server list is refreshed", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Show Distance", 36 | "servercountryflags.config.field.showDistance.description": "Shows the approximate distance between the server and you when you hover over a flag", 37 | 38 | "servercountryflags.config.field.useKm.name": "Use Kilometers", 39 | "servercountryflags.config.field.useKm.description": "Uses kilometers instead of miles", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Force English", 42 | "servercountryflags.config.field.forceEnglish.description": "Forces the API results to be in English instead of your in-game language", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Display Unknown Flag", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Displays the unknown flag when we don't have data about the server yet", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Display Cooldown Flag", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Displays a timeout flag when we have an API cooldown", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Show District", 51 | "servercountryflags.config.field.showDistrict.description": "Shows the district of the location too, if available", 52 | 53 | "servercountryflags.config.field.showISP.name": "Show ISP", 54 | "servercountryflags.config.field.showISP.description": "Shows the ISP of the host, if available", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Map Button", 57 | "servercountryflags.config.field.mapButton.description": "Shows a map button in the server list which opens the server map", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Map Button on the Right Side", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decides whether the map button should be on the right side or the left side", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Show Home on Map", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Shows your location on the server map too", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Resolve SRV Redirects", 66 | "servercountryflags.config.field.resolveRedirects.description": "Uses the redirected IP (if present) instead of just the resolved IP", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Server Browser Integration", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Displays flags in the Server Browser, if that mod is installed" 70 | } -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/ru_ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(неизвестно)", 3 | "servercountryflags.locationInfo.cooldown": "(API на перезарядке)", 4 | "servercountryflags.locationInfo.distance": "≈ %d %s отсюда", 5 | "servercountryflags.locationInfo.km": "км", 6 | "servercountryflags.locationInfo.mi": "миль", 7 | "servercountryflags.locationInfo.isp": "ИСП: %s", 8 | "servercountryflags.servermap.title": "Карта сервера", 9 | "servercountryflags.servermap.home": "Дом", 10 | 11 | "servercountryflags.config.category.border": "Border", 12 | "servercountryflags.config.category.preferences": "Preferences", 13 | "servercountryflags.config.category.locale": "Locale", 14 | 15 | "servercountryflags.config.header": "Server Country Flags Config", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Flag Position", 18 | "servercountryflags.config.field.flagPosition.description": "Changes the flags' positions. Available options: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Behind Name", 20 | "servercountryflags.config.field.flagPosition.value.left": "Left", 21 | "servercountryflags.config.field.flagPosition.value.right": "Right", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "Bottom Right", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "Tooltip (Server Name)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "Tooltip (Ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Flag Border", 27 | "servercountryflags.config.field.flagBorder.description": "Displays a border around flags", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Border Color", 30 | "servercountryflags.config.field.borderColor.description": "Border color around flags", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Reload on Refresh", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Forces flags to be reloaded when the server list is refreshed", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Show Distance", 36 | "servercountryflags.config.field.showDistance.description": "Shows the approximate distance between the server and you when you hover over a flag", 37 | 38 | "servercountryflags.config.field.useKm.name": "Use Kilometers", 39 | "servercountryflags.config.field.useKm.description": "Uses kilometers instead of miles", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Force English", 42 | "servercountryflags.config.field.forceEnglish.description": "Forces the API results to be in English instead of your in-game language", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Display Unknown Flag", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Displays the unknown flag when we don't have data about the server yet", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Display Cooldown Flag", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Displays a timeout flag when we have an API cooldown", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Show District", 51 | "servercountryflags.config.field.showDistrict.description": "Shows the district of the location too, if available", 52 | 53 | "servercountryflags.config.field.showISP.name": "Show ISP", 54 | "servercountryflags.config.field.showISP.description": "Shows the ISP of the host, if available", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Map Button", 57 | "servercountryflags.config.field.mapButton.description": "Shows a map button in the server list which opens the server map", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Map Button on the Right Side", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decides whether the map button should be on the right side or the left side", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Show Home on Map", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Shows your location on the server map too", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Resolve SRV Redirects", 66 | "servercountryflags.config.field.resolveRedirects.description": "Uses the redirected IP (if present) instead of just the resolved IP", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Server Browser Integration", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Displays flags in the Server Browser, if that mod is installed" 70 | } -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/es_ar.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(desconocido)", 3 | "servercountryflags.locationInfo.cooldown": "(API en enfriamiento)", 4 | "servercountryflags.locationInfo.distance": "≈ %d %s de distancia", 5 | "servercountryflags.locationInfo.km": "km", 6 | "servercountryflags.locationInfo.mi": "mi", 7 | "servercountryflags.locationInfo.isp": "ISP: %s", 8 | "servercountryflags.servermap.title": "Mapa del servidor", 9 | "servercountryflags.servermap.home": "Casa", 10 | 11 | "servercountryflags.config.category.border": "Border", 12 | "servercountryflags.config.category.preferences": "Preferences", 13 | "servercountryflags.config.category.locale": "Locale", 14 | 15 | "servercountryflags.config.header": "Server Country Flags Config", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Flag Position", 18 | "servercountryflags.config.field.flagPosition.description": "Changes the flags' positions. Available options: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Behind Name", 20 | "servercountryflags.config.field.flagPosition.value.left": "Left", 21 | "servercountryflags.config.field.flagPosition.value.right": "Right", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "Bottom Right", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "Tooltip (Server Name)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "Tooltip (Ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Flag Border", 27 | "servercountryflags.config.field.flagBorder.description": "Displays a border around flags", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Border Color", 30 | "servercountryflags.config.field.borderColor.description": "Border color around flags", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Reload on Refresh", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Forces flags to be reloaded when the server list is refreshed", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Show Distance", 36 | "servercountryflags.config.field.showDistance.description": "Shows the approximate distance between the server and you when you hover over a flag", 37 | 38 | "servercountryflags.config.field.useKm.name": "Use Kilometers", 39 | "servercountryflags.config.field.useKm.description": "Uses kilometers instead of miles", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Force English", 42 | "servercountryflags.config.field.forceEnglish.description": "Forces the API results to be in English instead of your in-game language", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Display Unknown Flag", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Displays the unknown flag when we don't have data about the server yet", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Display Cooldown Flag", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Displays a timeout flag when we have an API cooldown", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Show District", 51 | "servercountryflags.config.field.showDistrict.description": "Shows the district of the location too, if available", 52 | 53 | "servercountryflags.config.field.showISP.name": "Show ISP", 54 | "servercountryflags.config.field.showISP.description": "Shows the ISP of the host, if available", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Map Button", 57 | "servercountryflags.config.field.mapButton.description": "Shows a map button in the server list which opens the server map", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Map Button on the Right Side", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decides whether the map button should be on the right side or the left side", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Show Home on Map", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Shows your location on the server map too", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Resolve SRV Redirects", 66 | "servercountryflags.config.field.resolveRedirects.description": "Uses the redirected IP (if present) instead of just the resolved IP", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Server Browser Integration", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Displays flags in the Server Browser, if that mod is installed" 70 | } -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/es_es.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(desconocido)", 3 | "servercountryflags.locationInfo.cooldown": "(API en enfriamiento)", 4 | "servercountryflags.locationInfo.distance": "≈ %d %s de distancia", 5 | "servercountryflags.locationInfo.km": "km", 6 | "servercountryflags.locationInfo.mi": "mi", 7 | "servercountryflags.locationInfo.isp": "ISP: %s", 8 | "servercountryflags.servermap.title": "Mapa del servidor", 9 | "servercountryflags.servermap.home": "Casa", 10 | 11 | "servercountryflags.config.category.border": "Border", 12 | "servercountryflags.config.category.preferences": "Preferences", 13 | "servercountryflags.config.category.locale": "Locale", 14 | 15 | "servercountryflags.config.header": "Server Country Flags Config", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Flag Position", 18 | "servercountryflags.config.field.flagPosition.description": "Changes the flags' positions. Available options: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Behind Name", 20 | "servercountryflags.config.field.flagPosition.value.left": "Left", 21 | "servercountryflags.config.field.flagPosition.value.right": "Right", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "Bottom Right", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "Tooltip (Server Name)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "Tooltip (Ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Flag Border", 27 | "servercountryflags.config.field.flagBorder.description": "Displays a border around flags", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Border Color", 30 | "servercountryflags.config.field.borderColor.description": "Border color around flags", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Reload on Refresh", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Forces flags to be reloaded when the server list is refreshed", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Show Distance", 36 | "servercountryflags.config.field.showDistance.description": "Shows the approximate distance between the server and you when you hover over a flag", 37 | 38 | "servercountryflags.config.field.useKm.name": "Use Kilometers", 39 | "servercountryflags.config.field.useKm.description": "Uses kilometers instead of miles", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Force English", 42 | "servercountryflags.config.field.forceEnglish.description": "Forces the API results to be in English instead of your in-game language", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Display Unknown Flag", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Displays the unknown flag when we don't have data about the server yet", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Display Cooldown Flag", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Displays a timeout flag when we have an API cooldown", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Show District", 51 | "servercountryflags.config.field.showDistrict.description": "Shows the district of the location too, if available", 52 | 53 | "servercountryflags.config.field.showISP.name": "Show ISP", 54 | "servercountryflags.config.field.showISP.description": "Shows the ISP of the host, if available", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Map Button", 57 | "servercountryflags.config.field.mapButton.description": "Shows a map button in the server list which opens the server map", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Map Button on the Right Side", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decides whether the map button should be on the right side or the left side", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Show Home on Map", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Shows your location on the server map too", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Resolve SRV Redirects", 66 | "servercountryflags.config.field.resolveRedirects.description": "Uses the redirected IP (if present) instead of just the resolved IP", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Server Browser Integration", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Displays flags in the Server Browser, if that mod is installed" 70 | } -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/pt_br.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(desconhecido)", 3 | "servercountryflags.locationInfo.cooldown": "(API no resfriamento)", 4 | "servercountryflags.locationInfo.distance": "≈ %d %s de distância", 5 | "servercountryflags.locationInfo.km": "km", 6 | "servercountryflags.locationInfo.mi": "mi", 7 | "servercountryflags.locationInfo.isp": "ISP: %s", 8 | "servercountryflags.servermap.title": "Mapa do servidor", 9 | "servercountryflags.servermap.home": "Casa", 10 | 11 | "servercountryflags.config.category.border": "Border", 12 | "servercountryflags.config.category.preferences": "Preferences", 13 | "servercountryflags.config.category.locale": "Locale", 14 | 15 | "servercountryflags.config.header": "Server Country Flags Config", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Flag Position", 18 | "servercountryflags.config.field.flagPosition.description": "Changes the flags' positions. Available options: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Behind Name", 20 | "servercountryflags.config.field.flagPosition.value.left": "Left", 21 | "servercountryflags.config.field.flagPosition.value.right": "Right", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "Bottom Right", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "Tooltip (Server Name)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "Tooltip (Ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Flag Border", 27 | "servercountryflags.config.field.flagBorder.description": "Displays a border around flags", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Border Color", 30 | "servercountryflags.config.field.borderColor.description": "Border color around flags", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Reload on Refresh", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Forces flags to be reloaded when the server list is refreshed", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Show Distance", 36 | "servercountryflags.config.field.showDistance.description": "Shows the approximate distance between the server and you when you hover over a flag", 37 | 38 | "servercountryflags.config.field.useKm.name": "Use Kilometers", 39 | "servercountryflags.config.field.useKm.description": "Uses kilometers instead of miles", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Force English", 42 | "servercountryflags.config.field.forceEnglish.description": "Forces the API results to be in English instead of your in-game language", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Display Unknown Flag", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Displays the unknown flag when we don't have data about the server yet", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Display Cooldown Flag", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Displays a timeout flag when we have an API cooldown", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Show District", 51 | "servercountryflags.config.field.showDistrict.description": "Shows the district of the location too, if available", 52 | 53 | "servercountryflags.config.field.showISP.name": "Show ISP", 54 | "servercountryflags.config.field.showISP.description": "Shows the ISP of the host, if available", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Map Button", 57 | "servercountryflags.config.field.mapButton.description": "Shows a map button in the server list which opens the server map", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Map Button on the Right Side", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decides whether the map button should be on the right side or the left side", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Show Home on Map", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Shows your location on the server map too", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Resolve SRV Redirects", 66 | "servercountryflags.config.field.resolveRedirects.description": "Uses the redirected IP (if present) instead of just the resolved IP", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Server Browser Integration", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Displays flags in the Server Browser, if that mod is installed" 70 | } -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/pl_pl.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(nieznana)", 3 | "servercountryflags.locationInfo.cooldown": "(API musi ochłonąć)", 4 | "servercountryflags.locationInfo.distance": "≈ %d %s odległości", 5 | "servercountryflags.locationInfo.km": "km", 6 | "servercountryflags.locationInfo.mi": "mi", 7 | "servercountryflags.locationInfo.isp": "ISP: %s", 8 | "servercountryflags.servermap.title": "Mapa serwerów", 9 | "servercountryflags.servermap.home": "Dom", 10 | 11 | "servercountryflags.config.category.border": "Obramowania", 12 | "servercountryflags.config.category.preferences": "Preferencje", 13 | "servercountryflags.config.category.locale": "Lokalizacja", 14 | 15 | "servercountryflags.config.header": "Konfiguracja Server Country Flags", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Położenie flagi", 18 | "servercountryflags.config.field.flagPosition.description": "Zmienia pozycję flag. Dostępne opcje: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Za nazwą", 20 | "servercountryflags.config.field.flagPosition.value.left": "Lewo", 21 | "servercountryflags.config.field.flagPosition.value.right": "Prawo", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "Dolne prawo", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "W podpowiedzi (Nazwa serwera)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "W podpowiedzi (Ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Obramowanie", 27 | "servercountryflags.config.field.flagBorder.description": "Wyświetla obramowanie dookoła flag", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Kolor obramowania", 30 | "servercountryflags.config.field.borderColor.description": "Kolor obramowania dookoła flag", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Reset przy odświeżeniu", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Flagi zostaną przeładowane po odświeżeniu listy serwerów", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Pokazuj dystans", 36 | "servercountryflags.config.field.showDistance.description": "Pokazuje szacowany dystans pomiędzy Tobą a serwerem gdy myszka najeżdza na flagę", 37 | 38 | "servercountryflags.config.field.useKm.name": "Używaj kilometrów", 39 | "servercountryflags.config.field.useKm.description": "Używa kilometrów zamiast mil", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Używaj angielskiego", 42 | "servercountryflags.config.field.forceEnglish.description": "Sprawia, że odpowiedzi od API są w języku angielskim zamiast języka ustawionego w grze", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Wyświetlaj nieznaną flagę", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Wyświetla nieznaną flagę gdy jeszcze nie mamy informacji o położeniu serwera", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Wyświetlaj flagę cooldown", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Wyświetla flagę cooldown gdy API \"musi odpocząć\"", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Pokazuj dzielnicę", 51 | "servercountryflags.config.field.showDistrict.description": "Pokazuje dzielnicę lokacji, gdy jest dostępna", 52 | 53 | "servercountryflags.config.field.showISP.name": "Pokazuj ISP (usługodawcę internetu)", 54 | "servercountryflags.config.field.showISP.description": "Pokazuje ISP serwera, gdy ta informacja jest dostępna", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Przycisk mapy", 57 | "servercountryflags.config.field.mapButton.description": "Pokazuje przycisk mapy w liście serwerów, który otwiera mapę serwerów", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Przycisk mapy po prawej stronie", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decyduje, czy przycisk mapy jest po prawej stronie, czy lewej stronie", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Pokazuj dom na mapie", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Pokazuje też Twoją lokalizację na mapie serwerów", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Rozwiązuj przekierowywania SRV", 66 | "servercountryflags.config.field.resolveRedirects.description": "Używa przekierowanego IP (jeśli dostępne) zamiast po prostu IP z DNS", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Integracja z Server Browser", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Wyświetla flagi w wyszukiwarce serwerów z moda Server Browser, jeśli jest zainstalowany" 70 | } -------------------------------------------------------------------------------- /Common/src/main/resources/assets/servercountryflags/lang/it_it.json: -------------------------------------------------------------------------------- 1 | { 2 | "servercountryflags.locationInfo.unknown": "(sconosciuto)", 3 | "servercountryflags.locationInfo.cooldown": "(API in ricarica)", 4 | "servercountryflags.locationInfo.distance": "distante ≈ %d %s", 5 | "servercountryflags.locationInfo.km": "km", 6 | "servercountryflags.locationInfo.mi": "mi", 7 | "servercountryflags.locationInfo.isp": "ISP: %s", 8 | "servercountryflags.servermap.title": "Mappa del server", 9 | "servercountryflags.servermap.home": "Tu sei qui!", 10 | 11 | "servercountryflags.config.category.border": "Bordo", 12 | "servercountryflags.config.category.preferences": "Preferenze", 13 | "servercountryflags.config.category.locale": "Locale", 14 | 15 | "servercountryflags.config.header": "Configurazione delle bandiere nazionali del server", 16 | 17 | "servercountryflags.config.field.flagPosition.name": "Posizione bandiera", 18 | "servercountryflags.config.field.flagPosition.description": "Gestisci la posizione della bandiera. Opzioni disponibili: left, right, behindName, bottomRight, tooltipServerName, tooltipPing", 19 | "servercountryflags.config.field.flagPosition.value.behindName": "Dietro il nome", 20 | "servercountryflags.config.field.flagPosition.value.left": "Sinistra", 21 | "servercountryflags.config.field.flagPosition.value.right": "Destra", 22 | "servercountryflags.config.field.flagPosition.value.bottomRight": "In basso a destra", 23 | "servercountryflags.config.field.flagPosition.value.tooltipServerName": "Tooltip (nome del server)", 24 | "servercountryflags.config.field.flagPosition.value.tooltipPing": "Tooltip (ping)", 25 | 26 | "servercountryflags.config.field.flagBorder.name": "Bordo della bandiera", 27 | "servercountryflags.config.field.flagBorder.description": "Mostra il bordo intorno alle bandiere", 28 | 29 | "servercountryflags.config.field.borderColor.name": "Colore del bordo", 30 | "servercountryflags.config.field.borderColor.description": "Colore del bordo intorno alle bandiere", 31 | 32 | "servercountryflags.config.field.reloadOnRefresh.name": "Ricarica o aggiorna", 33 | "servercountryflags.config.field.reloadOnRefresh.description": "Forza il ricaricamento della bandiera quando l'elenco dei server viene aggiornato", 34 | 35 | "servercountryflags.config.field.showDistance.name": "Mostra distanza", 36 | "servercountryflags.config.field.showDistance.description": "Mostra la distanza approssimativa tra il server e l'utente quando si passa il mouse su una bandiera", 37 | 38 | "servercountryflags.config.field.useKm.name": "Usa sistema chilometrico", 39 | "servercountryflags.config.field.useKm.description": "Utilizza i chilometri invece delle miglia", 40 | 41 | "servercountryflags.config.field.forceEnglish.name": "Forza inglese", 42 | "servercountryflags.config.field.forceEnglish.description": "Impone che i risultati dell'API siano in inglese invece che nella lingua del gioco", 43 | 44 | "servercountryflags.config.field.displayUnknownFlag.name": "Visualizzaza la bandiera sconosciuta", 45 | "servercountryflags.config.field.displayUnknownFlag.description": "Mostra la bandiera sconosciuta quando non si hanno ancora dati sul server", 46 | 47 | "servercountryflags.config.field.displayCooldownFlag.name": "Visualizza la bandiera in aggiornamento", 48 | "servercountryflags.config.field.displayCooldownFlag.description": "Mostra una bandiera priovvisoria quando le API sono in aggiornamento", 49 | 50 | "servercountryflags.config.field.showDistrict.name": "Mostra distretto", 51 | "servercountryflags.config.field.showDistrict.description": "Mostra anche il distretto di ubicazione, se disponibile", 52 | 53 | "servercountryflags.config.field.showISP.name": "Mostra ISP", 54 | "servercountryflags.config.field.showISP.description": "Mostra l'ISP dell'host, se disponibile", 55 | 56 | "servercountryflags.config.field.mapButton.name": "Pulsante mappa", 57 | "servercountryflags.config.field.mapButton.description": "Mostra un pulsante nell'elenco dei server che apre la mappa del server", 58 | 59 | "servercountryflags.config.field.mapButtonRight.name": "Pulsante mappa sul lato destro", 60 | "servercountryflags.config.field.mapButtonRight.description": "Decide se il pulsante della mappa deve essere a destra o a sinistra", 61 | 62 | "servercountryflags.config.field.showHomeOnMap.name": "Mostra dove ci si trova sulla mappa", 63 | "servercountryflags.config.field.showHomeOnMap.description": "Mostra la vostra posizione anche sulla mappa del server", 64 | 65 | "servercountryflags.config.field.resolveRedirects.name": "Risolvere i reindirizzamenti SRV", 66 | "servercountryflags.config.field.resolveRedirects.description": "Utilizza l'IP reindirizzato (se presente) invece del solo IP risolto", 67 | 68 | "servercountryflags.config.field.serverBrowserIntegration.name": "Integrazione del browser del server", 69 | "servercountryflags.config.field.serverBrowserIntegration.description": "Visualizza le bandiere nel browser del server, se la mod è installata" 70 | } 71 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/mixin/OnlineServerEntryMixin.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.mixin; 2 | 3 | import com.mojang.blaze3d.systems.RenderSystem; 4 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 5 | import me.khajiitos.servercountryflags.common.config.Config; 6 | import me.khajiitos.servercountryflags.common.util.APIResponse; 7 | import me.khajiitos.servercountryflags.common.util.FlagPosition; 8 | import me.khajiitos.servercountryflags.common.util.FlagRenderInfo; 9 | import net.minecraft.client.Minecraft; 10 | import net.minecraft.client.gui.GuiGraphics; 11 | import net.minecraft.client.gui.screens.multiplayer.JoinMultiplayerScreen; 12 | import net.minecraft.client.gui.screens.multiplayer.ServerSelectionList; 13 | import net.minecraft.client.multiplayer.ServerData; 14 | import net.minecraft.network.chat.Component; 15 | import net.minecraft.resources.ResourceLocation; 16 | import org.spongepowered.asm.mixin.Final; 17 | import org.spongepowered.asm.mixin.Mixin; 18 | import org.spongepowered.asm.mixin.Shadow; 19 | import org.spongepowered.asm.mixin.injection.At; 20 | import org.spongepowered.asm.mixin.injection.Inject; 21 | import org.spongepowered.asm.mixin.injection.ModifyArg; 22 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 23 | 24 | import java.util.ArrayList; 25 | import java.util.List; 26 | 27 | @Mixin(ServerSelectionList.OnlineServerEntry.class) 28 | public class OnlineServerEntryMixin { 29 | 30 | @Shadow 31 | @Final 32 | private ServerData serverData; 33 | 34 | @Shadow 35 | @Final 36 | private JoinMultiplayerScreen screen; 37 | 38 | @Shadow @Final private Minecraft minecraft; 39 | 40 | @ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphics;drawString(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I", ordinal = 0), method = "render", index = 2) 41 | public int serverNameX(int oldX) { 42 | if (Config.cfg.flagPosition == FlagPosition.BEHIND_NAME) { 43 | APIResponse apiResponse = ServerCountryFlags.servers.get(serverData.ip); 44 | FlagRenderInfo renderInfo = ServerCountryFlags.getFlagRenderInfo(apiResponse); 45 | 46 | if (renderInfo != null) { 47 | return oldX + (int)(renderInfo.flagAspectRatio() * 8.f) + 3; 48 | } 49 | } 50 | 51 | return oldX; 52 | } 53 | 54 | @Inject(at = @At("TAIL"), method = "render") 55 | public void render(GuiGraphics guiGraphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta, CallbackInfo info) { 56 | APIResponse apiResponse = ServerCountryFlags.servers.get(serverData.ip); 57 | FlagRenderInfo flagRenderInfo = ServerCountryFlags.getFlagRenderInfo(apiResponse); 58 | 59 | if (flagRenderInfo == null) { 60 | return; 61 | } 62 | 63 | if (Config.cfg.flagPosition == FlagPosition.TOOLTIP_SERVER_NAME) { 64 | int serverNameStartX = x + 35; 65 | int serverNameStartY = y + 1; 66 | 67 | int serverNameWidth = this.minecraft.font.width(this.serverData.name); 68 | int serverNameHeight = 8; 69 | 70 | if (mouseX >= serverNameStartX && mouseX <= serverNameStartX + serverNameWidth && mouseY >= serverNameStartY && mouseY <= serverNameStartY + serverNameHeight) { 71 | screen.setToolTip(flagRenderInfo.tooltip()); 72 | } 73 | 74 | // TODO: maybe render the flag in the future 75 | // But I'm too lazy to figure out how to do that. 76 | return; 77 | } else if (Config.cfg.flagPosition == FlagPosition.TOOLTIP_PING) { 78 | return; 79 | } 80 | 81 | int height = Config.cfg.flagPosition == FlagPosition.BEHIND_NAME ? 8 : 12; 82 | int width = (int)(flagRenderInfo.flagAspectRatio() * height); 83 | 84 | int startingX, startingY; 85 | switch (Config.cfg.flagPosition) { 86 | case LEFT -> { 87 | startingX = x - width - 6; 88 | startingY = y + (entryHeight / 2) - (height / 2); 89 | } 90 | case RIGHT -> { 91 | startingX = x + entryWidth + 10; 92 | startingY = y + (entryHeight / 2) - (height / 2); 93 | } 94 | case BEHIND_NAME -> { 95 | startingX = x + 35; 96 | startingY = y + 1; 97 | } 98 | default -> { 99 | startingX = x + entryWidth - width - 6; 100 | startingY = y + entryHeight - height - 4; 101 | } 102 | } 103 | 104 | ResourceLocation textureId = new ResourceLocation(ServerCountryFlags.MOD_ID, "textures/gui/flags/" + flagRenderInfo.countryCode() + ".png"); 105 | 106 | RenderSystem.enableBlend(); 107 | guiGraphics.pose().pushPose(); 108 | guiGraphics.blit(textureId, startingX, startingY, 100, 0.0F, 0.0F, width, height, width, height); 109 | guiGraphics.pose().popPose(); 110 | 111 | if (Config.cfg.flagBorder) { 112 | guiGraphics.renderOutline(startingX - 1, startingY - 1, width + 2, height + 2, Config.cfg.borderColor.toARGB()); 113 | } 114 | 115 | RenderSystem.disableBlend(); 116 | 117 | if (mouseX >= startingX && mouseX <= startingX + width && mouseY >= startingY && mouseY <= startingY + height) { 118 | screen.setToolTip(flagRenderInfo.tooltip()); 119 | } 120 | } 121 | 122 | @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/multiplayer/JoinMultiplayerScreen;setToolTip(Ljava/util/List;)V", ordinal = 0, shift = At.Shift.AFTER), method = "render") 123 | public void onSetTooltip(GuiGraphics guiGraphics, int $$1, int $$2, int $$3, int $$4, int $$5, int $$6, int $$7, boolean $$8, float $$9, CallbackInfo ci) { 124 | if (Config.cfg.flagPosition == FlagPosition.TOOLTIP_PING) { 125 | JoinMultiplayerScreenAccessor accessor = (JoinMultiplayerScreenAccessor) screen; 126 | 127 | APIResponse apiResponse = ServerCountryFlags.servers.get(serverData.ip); 128 | FlagRenderInfo flagRenderInfo = ServerCountryFlags.getFlagRenderInfo(apiResponse); 129 | 130 | if (flagRenderInfo == null) { 131 | return; 132 | } 133 | 134 | List newTooltip = new ArrayList<>(accessor.getToolTip()); 135 | newTooltip.add(Component.literal(" ")); 136 | newTooltip.addAll(flagRenderInfo.tooltip()); 137 | screen.setToolTip(newTooltip); 138 | } 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/mixin/serverbrowser/BrowsedEntryMixin.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.mixin.serverbrowser; 2 | 3 | import com.epherical.serverbrowser.client.list.ServerBrowserList; 4 | import com.epherical.serverbrowser.client.screen.ServerBrowserScreen; 5 | import com.mojang.blaze3d.systems.RenderSystem; 6 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 7 | import me.khajiitos.servercountryflags.common.config.Config; 8 | import me.khajiitos.servercountryflags.common.util.APIResponse; 9 | import me.khajiitos.servercountryflags.common.util.FlagPosition; 10 | import me.khajiitos.servercountryflags.common.util.FlagRenderInfo; 11 | import net.minecraft.client.Minecraft; 12 | import net.minecraft.client.gui.GuiGraphics; 13 | import net.minecraft.client.multiplayer.ServerData; 14 | import net.minecraft.network.chat.Component; 15 | import net.minecraft.resources.ResourceLocation; 16 | import org.spongepowered.asm.mixin.Final; 17 | import org.spongepowered.asm.mixin.Mixin; 18 | import org.spongepowered.asm.mixin.Pseudo; 19 | import org.spongepowered.asm.mixin.Shadow; 20 | import org.spongepowered.asm.mixin.injection.At; 21 | import org.spongepowered.asm.mixin.injection.Inject; 22 | import org.spongepowered.asm.mixin.injection.ModifyArg; 23 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 24 | 25 | import java.util.ArrayList; 26 | import java.util.List; 27 | 28 | @Pseudo 29 | @Mixin(ServerBrowserList.BrowsedEntry.class) 30 | public class BrowsedEntryMixin { 31 | @Shadow(remap = false) 32 | private ServerData serverData; 33 | 34 | @Shadow(remap = false) @Final private ServerBrowserScreen screen; 35 | 36 | @Shadow @Final private Minecraft minecraft; 37 | 38 | // Suppressing all warnings - don't know what the exact name is 39 | // Minecraft Dev extension complains that it can't find the "render" function, 40 | // because the project we are working with here is obfuscated 41 | // When compiling on Forge/Fabric, the mod is deobfuscated there, so it works 42 | @SuppressWarnings("all") 43 | @ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/GuiGraphics;drawString(Lnet/minecraft/client/gui/Font;Ljava/lang/String;III)I", ordinal = 0), method = "render", index = 2) 44 | public int serverNameX(int oldX) { 45 | if (!Config.cfg.serverBrowserIntegration) { 46 | return oldX; 47 | } 48 | 49 | if (Config.cfg.flagPosition == FlagPosition.BEHIND_NAME) { 50 | APIResponse apiResponse = ServerCountryFlags.servers.get(serverData.ip); 51 | FlagRenderInfo renderInfo = ServerCountryFlags.getFlagRenderInfo(apiResponse); 52 | 53 | if (renderInfo != null) { 54 | return oldX + (int)(renderInfo.flagAspectRatio() * 8.f) + 3; 55 | } 56 | } 57 | 58 | return oldX; 59 | } 60 | 61 | @SuppressWarnings("all") 62 | @Inject(at = @At("TAIL"), method = "render") 63 | public void render(GuiGraphics guiGraphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta, CallbackInfo info) { 64 | if (!Config.cfg.serverBrowserIntegration) { 65 | return; 66 | } 67 | 68 | APIResponse apiResponse = ServerCountryFlags.servers.get(serverData.ip); 69 | FlagRenderInfo flagRenderInfo = ServerCountryFlags.getFlagRenderInfo(apiResponse); 70 | 71 | if (flagRenderInfo == null) { 72 | return; 73 | } 74 | 75 | if (Config.cfg.flagPosition == FlagPosition.TOOLTIP_SERVER_NAME) { 76 | int serverNameStartX = x + 35; 77 | int serverNameStartY = y + 1; 78 | 79 | int serverNameWidth = this.minecraft.font.width(this.serverData.name); 80 | int serverNameHeight = 8; 81 | 82 | if (mouseX >= serverNameStartX && mouseX <= serverNameStartX + serverNameWidth && mouseY >= serverNameStartY && mouseY <= serverNameStartY + serverNameHeight) { 83 | screen.setToolTip(flagRenderInfo.tooltip()); 84 | } 85 | 86 | // TODO: maybe render the flag in the future 87 | // But I'm too lazy to figure out how to do that. 88 | return; 89 | } else if (Config.cfg.flagPosition == FlagPosition.TOOLTIP_PING) { 90 | return; 91 | } 92 | 93 | int height = Config.cfg.flagPosition == FlagPosition.BEHIND_NAME ? 8 : 12; 94 | int width = (int)(flagRenderInfo.flagAspectRatio() * height); 95 | 96 | int startingX, startingY; 97 | switch (Config.cfg.flagPosition) { 98 | case LEFT -> { 99 | startingX = x - width - 6; 100 | startingY = y + (entryHeight / 2) - (height / 2); 101 | } 102 | case RIGHT -> { 103 | startingX = x + entryWidth + 10; 104 | startingY = y + (entryHeight / 2) - (height / 2); 105 | } 106 | case BEHIND_NAME -> { 107 | startingX = x + 35; 108 | startingY = y + 1; 109 | } 110 | default -> { 111 | startingX = x + entryWidth - width - 6; 112 | startingY = y + entryHeight - height - 4; 113 | } 114 | } 115 | 116 | ResourceLocation textureId = new ResourceLocation(ServerCountryFlags.MOD_ID, "textures/flags/" + flagRenderInfo.countryCode() + ".png"); 117 | 118 | RenderSystem.enableBlend(); 119 | guiGraphics.pose().pushPose(); 120 | guiGraphics.blit(textureId, startingX, startingY, 100, 0.0F, 0.0F, width, height, width, height); 121 | guiGraphics.pose().popPose(); 122 | 123 | if (Config.cfg.flagBorder) { 124 | guiGraphics.renderOutline(startingX - 1, startingY - 1, width + 2, height + 2, Config.cfg.borderColor.toARGB()); 125 | } 126 | 127 | RenderSystem.disableBlend(); 128 | 129 | if (mouseX >= startingX && mouseX <= startingX + width && mouseY >= startingY && mouseY <= startingY + height) { 130 | screen.setToolTip(flagRenderInfo.tooltip()); 131 | } 132 | } 133 | 134 | @SuppressWarnings("all") 135 | @Inject(at = @At(value = "INVOKE", target = "Lcom/epherical/serverbrowser/client/screen/ServerBrowserScreen;setToolTip(Ljava/util/List;)V", ordinal = 1, shift = At.Shift.AFTER), method = "render") 136 | public void onSetTooltip(GuiGraphics guiGraphics, int $$1, int $$2, int $$3, int $$4, int $$5, int $$6, int $$7, boolean $$8, float $$9, CallbackInfo ci) { 137 | if (Config.cfg.flagPosition == FlagPosition.TOOLTIP_PING) { 138 | ServerBrowserScreenAccessor accessor = (ServerBrowserScreenAccessor) screen; 139 | 140 | APIResponse apiResponse = ServerCountryFlags.servers.get(serverData.ip); 141 | FlagRenderInfo flagRenderInfo = ServerCountryFlags.getFlagRenderInfo(apiResponse); 142 | 143 | if (flagRenderInfo == null) { 144 | return; 145 | } 146 | 147 | List newTooltip = new ArrayList<>(accessor.getToolTip()); 148 | newTooltip.add(Component.literal(" ")); 149 | newTooltip.addAll(flagRenderInfo.tooltip()); 150 | screen.setToolTip(newTooltip); 151 | } 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /Common/src/main/java/me/khajiitos/servercountryflags/common/config/ClothConfigScreenMaker.java: -------------------------------------------------------------------------------- 1 | package me.khajiitos.servercountryflags.common.config; 2 | 3 | import me.khajiitos.servercountryflags.common.ServerCountryFlags; 4 | import me.khajiitos.servercountryflags.common.util.Color; 5 | import me.shedaniel.clothconfig2.api.ConfigBuilder; 6 | import me.shedaniel.clothconfig2.api.ConfigCategory; 7 | import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; 8 | import net.minecraft.client.Minecraft; 9 | import net.minecraft.client.gui.screens.Screen; 10 | import net.minecraft.network.chat.Component; 11 | 12 | import java.lang.reflect.Field; 13 | import java.util.Arrays; 14 | import java.util.List; 15 | import java.util.Optional; 16 | 17 | public class ClothConfigScreenMaker { 18 | 19 | public static Screen create(Minecraft minecraft, Screen parent) { 20 | return create(parent); 21 | } 22 | 23 | public static Screen create(Screen parent) { 24 | ConfigBuilder builder = ConfigBuilder.create() 25 | .setParentScreen(parent) 26 | .setTitle(Component.translatable("servercountryflags.config.header")) 27 | .setSavingRunnable(Config::save); 28 | 29 | // Saving the config will cause it to be written to and then instantly loaded from file again. 30 | // Probably not a big deal though. 31 | 32 | ConfigEntryBuilder entryBuilder = builder.entryBuilder(); 33 | 34 | for (Field field : Config.Values.class.getDeclaredFields()) { 35 | addEntryForField(field, builder, entryBuilder); 36 | } 37 | 38 | return builder.build(); 39 | } 40 | 41 | public static void addEntryForField(Field field, ConfigBuilder configBuilder, ConfigEntryBuilder entryBuilder) { 42 | ConfigEntry annotation = field.getAnnotation(ConfigEntry.class); 43 | 44 | if (annotation == null) { 45 | return; 46 | } 47 | 48 | ConfigCategory category = configBuilder.getOrCreateCategory(Component.translatable(annotation.configCategory())); 49 | 50 | try { 51 | String fieldName = field.getName(); 52 | Component name = Component.translatable(String.format("servercountryflags.config.field.%s.name", fieldName)); 53 | Component description = Component.translatable(String.format("servercountryflags.config.field.%s.description", fieldName)); 54 | 55 | if (field.getType() == int.class) { 56 | Optional constraints = Arrays.stream(annotation.constraints()).findFirst(); 57 | category.addEntry(entryBuilder.startIntField(name, field.getInt(Config.cfg)) 58 | .setTooltip(description) 59 | .setDefaultValue(field.getInt(Config.DEFAULT)) 60 | .setSaveConsumer(newValue -> setCfgInt(field, newValue)) 61 | .setMin(constraints.isPresent() ? constraints.get().minValue() : null) 62 | .setMax(constraints.isPresent() ? constraints.get().maxValue() : null) 63 | .build()); 64 | } else if (field.getType() == boolean.class) { 65 | category.addEntry(entryBuilder.startBooleanToggle(name, field.getBoolean(Config.cfg)) 66 | .setTooltip(description) 67 | .setDefaultValue(field.getBoolean(Config.DEFAULT)) 68 | .setSaveConsumer(newValue -> setCfgBoolean(field, newValue)) 69 | .build()); 70 | } else if (field.getType() == String.class) { 71 | if (annotation.stringValues().length != 0) { 72 | category.addEntry(entryBuilder.startStringDropdownMenu(name, (String)field.get(Config.cfg), !annotation.stringValuesTranslatable() ? Component::literal : s -> Component.translatable(String.format("servercountryflags.config.field.%s.value.%s", fieldName, s))) 73 | .setSelections(List.of(annotation.stringValues())) 74 | .setTooltip(description) 75 | .setSuggestionMode(true) 76 | .setDefaultValue((String)field.get(Config.DEFAULT)) 77 | .setSaveConsumer(newValue -> setCfgString(field, newValue)) 78 | .build()); 79 | } else { 80 | category.addEntry(entryBuilder.startStrField(name, (String)field.get(Config.cfg)) 81 | .setTooltip(description) 82 | .setDefaultValue((String)field.get(Config.DEFAULT)) 83 | .setSaveConsumer(newValue -> setCfgString(field, newValue)) 84 | .build()); 85 | } 86 | } else if (field.getType() == Color.class) { 87 | category.addEntry(entryBuilder.startColorField(name, ((Color)field.get(Config.cfg)).toARGB()) 88 | .setAlphaMode(true) 89 | .setTooltip(description) 90 | .setDefaultValue(((Color)field.get(Config.DEFAULT)).toARGB()) 91 | .setSaveConsumer(newValue -> setCfgColor(field, newValue)) 92 | .build()); 93 | } else if (field.getType().isEnum() && field.get(Config.cfg) instanceof Enum enumValue) { 94 | category.addEntry(entryBuilder.startEnumSelector(name, (Class>) enumValue.getDeclaringClass(), enumValue) 95 | .setEnumNameProvider(anEnum -> Component.translatable(String.format("servercountryflags.config.field.%s.value.%s", fieldName, anEnum.toString()))) 96 | .setTooltip(description) 97 | .setDefaultValue((Enum) field.get(Config.DEFAULT)) 98 | .setSaveConsumer(newValue -> setCfgEnum(field, newValue)) 99 | .build()); 100 | } 101 | } catch (IllegalAccessException e) { 102 | ServerCountryFlags.LOGGER.error("Failed to access a field", e); 103 | } 104 | } 105 | 106 | private static void setCfgInt(Field field, int value) { 107 | try { 108 | field.setInt(Config.cfg, value); 109 | } catch (IllegalAccessException e) { 110 | ServerCountryFlags.LOGGER.error("Failed to set value to a field", e); 111 | } 112 | } 113 | 114 | private static void setCfgBoolean(Field field, boolean value) { 115 | try { 116 | field.setBoolean(Config.cfg, value); 117 | } catch (IllegalAccessException e) { 118 | ServerCountryFlags.LOGGER.error("Failed to set value to a field", e); 119 | } 120 | } 121 | 122 | private static void setCfgString(Field field, String string) { 123 | try { 124 | field.set(Config.cfg, string); 125 | } catch (IllegalAccessException e) { 126 | ServerCountryFlags.LOGGER.error("Failed to set value to a field", e); 127 | } 128 | } 129 | 130 | private static void setCfgColor(Field field, int color) { 131 | try { 132 | field.set(Config.cfg, Color.fromARGB(color)); 133 | } catch (IllegalAccessException e) { 134 | ServerCountryFlags.LOGGER.error("Failed to set value to a field", e); 135 | } 136 | } 137 | 138 | private static void setCfgEnum(Field field, Enum enumValue) { 139 | try { 140 | field.set(Config.cfg, enumValue); 141 | } catch (IllegalAccessException e) { 142 | ServerCountryFlags.LOGGER.error("Failed to set value to a field", e); 143 | } 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | # This is normally unused 84 | # shellcheck disable=SC2034 85 | APP_BASE_NAME=${0##*/} 86 | # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) 87 | APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit 88 | 89 | # Use the maximum available, or set MAX_FD != -1 to use that value. 90 | MAX_FD=maximum 91 | 92 | warn () { 93 | echo "$*" 94 | } >&2 95 | 96 | die () { 97 | echo 98 | echo "$*" 99 | echo 100 | exit 1 101 | } >&2 102 | 103 | # OS specific support (must be 'true' or 'false'). 104 | cygwin=false 105 | msys=false 106 | darwin=false 107 | nonstop=false 108 | case "$( uname )" in #( 109 | CYGWIN* ) cygwin=true ;; #( 110 | Darwin* ) darwin=true ;; #( 111 | MSYS* | MINGW* ) msys=true ;; #( 112 | NONSTOP* ) nonstop=true ;; 113 | esac 114 | 115 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 116 | 117 | 118 | # Determine the Java command to use to start the JVM. 119 | if [ -n "$JAVA_HOME" ] ; then 120 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 121 | # IBM's JDK on AIX uses strange locations for the executables 122 | JAVACMD=$JAVA_HOME/jre/sh/java 123 | else 124 | JAVACMD=$JAVA_HOME/bin/java 125 | fi 126 | if [ ! -x "$JAVACMD" ] ; then 127 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 128 | 129 | Please set the JAVA_HOME variable in your environment to match the 130 | location of your Java installation." 131 | fi 132 | else 133 | JAVACMD=java 134 | if ! command -v java >/dev/null 2>&1 135 | then 136 | die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | fi 142 | 143 | # Increase the maximum file descriptors if we can. 144 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 145 | case $MAX_FD in #( 146 | max*) 147 | # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. 148 | # shellcheck disable=SC2039,SC3045 149 | MAX_FD=$( ulimit -H -n ) || 150 | warn "Could not query maximum file descriptor limit" 151 | esac 152 | case $MAX_FD in #( 153 | '' | soft) :;; #( 154 | *) 155 | # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. 156 | # shellcheck disable=SC2039,SC3045 157 | ulimit -n "$MAX_FD" || 158 | warn "Could not set maximum file descriptor limit to $MAX_FD" 159 | esac 160 | fi 161 | 162 | # Collect all arguments for the java command, stacking in reverse order: 163 | # * args from the command line 164 | # * the main class name 165 | # * -classpath 166 | # * -D...appname settings 167 | # * --module-path (only if needed) 168 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 169 | 170 | # For Cygwin or MSYS, switch paths to Windows format before running java 171 | if "$cygwin" || "$msys" ; then 172 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 173 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 174 | 175 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 176 | 177 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 178 | for arg do 179 | if 180 | case $arg in #( 181 | -*) false ;; # don't mess with options #( 182 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 183 | [ -e "$t" ] ;; #( 184 | *) false ;; 185 | esac 186 | then 187 | arg=$( cygpath --path --ignore --mixed "$arg" ) 188 | fi 189 | # Roll the args list around exactly as many times as the number of 190 | # args, so each arg winds up back in the position where it started, but 191 | # possibly modified. 192 | # 193 | # NB: a `for` loop captures its iteration list before it begins, so 194 | # changing the positional parameters here affects neither the number of 195 | # iterations, nor the values presented in `arg`. 196 | shift # remove old arg 197 | set -- "$@" "$arg" # push replacement arg 198 | done 199 | fi 200 | 201 | 202 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 203 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 204 | 205 | # Collect all arguments for the java command: 206 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, 207 | # and any embedded shellness will be escaped. 208 | # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be 209 | # treated as '${Hostname}' itself on the command line. 210 | 211 | set -- \ 212 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 213 | -classpath "$CLASSPATH" \ 214 | org.gradle.wrapper.GradleWrapperMain \ 215 | "$@" 216 | 217 | # Stop when "xargs" is not available. 218 | if ! command -v xargs >/dev/null 2>&1 219 | then 220 | die "xargs is not available" 221 | fi 222 | 223 | # Use "xargs" to parse quoted args. 224 | # 225 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 226 | # 227 | # In Bash we could simply go: 228 | # 229 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 230 | # set -- "${ARGS[@]}" "$@" 231 | # 232 | # but POSIX shell has neither arrays nor command substitution, so instead we 233 | # post-process each arg (as a line of input to sed) to backslash-escape any 234 | # character that might be a shell metacharacter, then use eval to reverse 235 | # that process (while maintaining the separation between arguments), and wrap 236 | # the whole thing up as a single "set" statement. 237 | # 238 | # This will of course break if any of these variables contains a newline or 239 | # an unmatched quote. 240 | # 241 | 242 | eval "set -- $( 243 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 244 | xargs -n1 | 245 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 246 | tr '\n' ' ' 247 | )" '"$@"' 248 | 249 | exec "$JAVACMD" "$@" 250 | --------------------------------------------------------------------------------