Added admins with in-game icons and permissions; untested

This commit is contained in:
Anuken
2018-02-25 23:44:35 -05:00
parent 9f5f6ae382
commit 7429d029f3
16 changed files with 278 additions and 151 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

View File

@@ -335,7 +335,7 @@ blocks/doubleturret
index: -1 index: -1
blocks/duriumwall blocks/duriumwall
rotate: false rotate: false
xy: 117, 40 xy: 132, 78
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -349,14 +349,14 @@ blocks/duriumwall-large
index: -1 index: -1
blocks/duriumwall-large-icon blocks/duriumwall-large-icon
rotate: false rotate: false
xy: 117, 30 xy: 117, 40
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/enemyspawn blocks/enemyspawn
rotate: false rotate: false
xy: 117, 20 xy: 117, 30
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -370,42 +370,42 @@ blocks/flameturret
index: -1 index: -1
blocks/fluxpump blocks/fluxpump
rotate: false rotate: false
xy: 117, 10 xy: 117, 20
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/grass1 blocks/grass1
rotate: false rotate: false
xy: 865, 417 xy: 117, 10
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/grass2 blocks/grass2
rotate: false rotate: false
xy: 624, 233 xy: 865, 417
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/grass3 blocks/grass3
rotate: false rotate: false
xy: 624, 223 xy: 624, 233
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/grassblock1 blocks/grassblock1
rotate: false rotate: false
xy: 624, 213 xy: 624, 223
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/grassblock2 blocks/grassblock2
rotate: false rotate: false
xy: 634, 235 xy: 624, 213
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -419,21 +419,21 @@ blocks/grassedge
index: -1 index: -1
blocks/ice1 blocks/ice1
rotate: false rotate: false
xy: 634, 225 xy: 634, 235
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/ice2 blocks/ice2
rotate: false rotate: false
xy: 634, 215 xy: 634, 225
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/ice3 blocks/ice3
rotate: false rotate: false
xy: 178, 75 xy: 634, 215
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -447,84 +447,84 @@ blocks/iceedge
index: -1 index: -1
blocks/icerock1 blocks/icerock1
rotate: false rotate: false
xy: 188, 75 xy: 178, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/icerock2 blocks/icerock2
rotate: false rotate: false
xy: 198, 75 xy: 188, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/icerockshadow1 blocks/icerockshadow1
rotate: false rotate: false
xy: 208, 75 xy: 198, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rockshadow1 blocks/rockshadow1
rotate: false rotate: false
xy: 208, 75 xy: 198, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/icerockshadow2 blocks/icerockshadow2
rotate: false rotate: false
xy: 218, 75 xy: 208, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rockshadow2 blocks/rockshadow2
rotate: false rotate: false
xy: 218, 75 xy: 208, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/iron1 blocks/iron1
rotate: false rotate: false
xy: 248, 71 xy: 238, 71
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/iron2 blocks/iron2
rotate: false rotate: false
xy: 258, 71 xy: 248, 71
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/iron3 blocks/iron3
rotate: false rotate: false
xy: 268, 71 xy: 258, 71
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/irondrill blocks/irondrill
rotate: false rotate: false
xy: 278, 71 xy: 268, 71
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/ironwall blocks/ironwall
rotate: false rotate: false
xy: 288, 71 xy: 278, 71
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/junction blocks/junction
rotate: false rotate: false
xy: 537, 140 xy: 288, 71
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -538,7 +538,7 @@ blocks/laserturret
index: -1 index: -1
blocks/lava blocks/lava
rotate: false rotate: false
xy: 300, 85 xy: 537, 140
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -552,28 +552,28 @@ blocks/lavaedge
index: -1 index: -1
blocks/lavasmelter blocks/lavasmelter
rotate: false rotate: false
xy: 310, 85 xy: 300, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/liquiditemjunction blocks/liquiditemjunction
rotate: false rotate: false
xy: 320, 85 xy: 310, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/liquidjunction blocks/liquidjunction
rotate: false rotate: false
xy: 330, 85 xy: 320, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/liquidrouter blocks/liquidrouter
rotate: false rotate: false
xy: 340, 85 xy: 330, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -601,14 +601,14 @@ blocks/mortarturret
index: -1 index: -1
blocks/mossblock blocks/mossblock
rotate: false rotate: false
xy: 350, 85 xy: 340, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/mossstone blocks/mossstone
rotate: false rotate: false
xy: 350, 85 xy: 340, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -629,7 +629,7 @@ blocks/nuclearreactor-center
index: -1 index: -1
blocks/nuclearreactor-icon blocks/nuclearreactor-icon
rotate: false rotate: false
xy: 360, 85 xy: 350, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -650,7 +650,7 @@ blocks/nuclearreactor-small
index: -1 index: -1
blocks/oil blocks/oil
rotate: false rotate: false
xy: 370, 85 xy: 360, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -664,14 +664,14 @@ blocks/oiledge
index: -1 index: -1
blocks/oilrefinery blocks/oilrefinery
rotate: false rotate: false
xy: 380, 85 xy: 370, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/omnidrill blocks/omnidrill
rotate: false rotate: false
xy: 390, 85 xy: 380, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -685,77 +685,77 @@ blocks/plasmaturret
index: -1 index: -1
blocks/playerspawn blocks/playerspawn
rotate: false rotate: false
xy: 400, 85 xy: 390, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/powerbooster blocks/powerbooster
rotate: false rotate: false
xy: 410, 85 xy: 400, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/poweredconveyor blocks/poweredconveyor
rotate: false rotate: false
xy: 420, 85 xy: 410, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/poweredconveyormove blocks/poweredconveyormove
rotate: false rotate: false
xy: 430, 85 xy: 420, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/powerlaser blocks/powerlaser
rotate: false rotate: false
xy: 440, 85 xy: 430, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/powerlasercorner blocks/powerlasercorner
rotate: false rotate: false
xy: 450, 85 xy: 440, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/powerlaserrouter blocks/powerlaserrouter
rotate: false rotate: false
xy: 460, 85 xy: 450, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/pulseconduit blocks/pulseconduit
rotate: false rotate: false
xy: 470, 85 xy: 460, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/pulseconduitbottom blocks/pulseconduitbottom
rotate: false rotate: false
xy: 480, 87 xy: 470, 85
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/pulseconduittop blocks/pulseconduittop
rotate: false rotate: false
xy: 298, 75 xy: 480, 87
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/pump blocks/pump
rotate: false rotate: false
xy: 308, 75 xy: 298, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -769,77 +769,77 @@ blocks/repairturret
index: -1 index: -1
blocks/rock1 blocks/rock1
rotate: false rotate: false
xy: 318, 75 xy: 308, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rock2 blocks/rock2
rotate: false rotate: false
xy: 328, 75 xy: 318, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/router blocks/router
rotate: false rotate: false
xy: 338, 75 xy: 328, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rtgenerator blocks/rtgenerator
rotate: false rotate: false
xy: 348, 75 xy: 338, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rtgenerator-top blocks/rtgenerator-top
rotate: false rotate: false
xy: 358, 75 xy: 348, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/sand1 blocks/sand1
rotate: false rotate: false
xy: 368, 75 xy: 358, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/sand2 blocks/sand2
rotate: false rotate: false
xy: 378, 75 xy: 368, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/sand3 blocks/sand3
rotate: false rotate: false
xy: 388, 75 xy: 378, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/sandblock1 blocks/sandblock1
rotate: false rotate: false
xy: 398, 75 xy: 388, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/sandblock2 blocks/sandblock2
rotate: false rotate: false
xy: 408, 75 xy: 398, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/sandblock3 blocks/sandblock3
rotate: false rotate: false
xy: 418, 75 xy: 408, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -860,7 +860,7 @@ blocks/shadow
index: -1 index: -1
blocks/shieldgenerator blocks/shieldgenerator
rotate: false rotate: false
xy: 438, 75 xy: 428, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -874,28 +874,28 @@ blocks/shotgunturret
index: -1 index: -1
blocks/shrub blocks/shrub
rotate: false rotate: false
xy: 551, 168 xy: 547, 178
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/shrubshadow blocks/shrubshadow
rotate: false rotate: false
xy: 551, 158 xy: 551, 168
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/smelter blocks/smelter
rotate: false rotate: false
xy: 551, 148 xy: 551, 158
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/smelter-middle blocks/smelter-middle
rotate: false rotate: false
xy: 875, 417 xy: 551, 148
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -909,42 +909,42 @@ blocks/sniperturret
index: -1 index: -1
blocks/snow1 blocks/snow1
rotate: false rotate: false
xy: 885, 421 xy: 875, 417
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/snow2 blocks/snow2
rotate: false rotate: false
xy: 895, 421 xy: 885, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/snow3 blocks/snow3
rotate: false rotate: false
xy: 905, 421 xy: 895, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/snowblock1 blocks/snowblock1
rotate: false rotate: false
xy: 915, 421 xy: 905, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/snowblock2 blocks/snowblock2
rotate: false rotate: false
xy: 925, 421 xy: 915, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/snowblock3 blocks/snowblock3
rotate: false rotate: false
xy: 935, 421 xy: 925, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -958,28 +958,28 @@ blocks/snowedge
index: -1 index: -1
blocks/sorter blocks/sorter
rotate: false rotate: false
xy: 945, 421 xy: 935, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/steelconveyor blocks/steelconveyor
rotate: false rotate: false
xy: 955, 421 xy: 945, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/steelconveyormove blocks/steelconveyormove
rotate: false rotate: false
xy: 965, 421 xy: 955, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/steelwall blocks/steelwall
rotate: false rotate: false
xy: 975, 421 xy: 965, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -993,56 +993,56 @@ blocks/steelwall-large
index: -1 index: -1
blocks/steelwall-large-icon blocks/steelwall-large-icon
rotate: false rotate: false
xy: 985, 421 xy: 975, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stone1 blocks/stone1
rotate: false rotate: false
xy: 995, 421 xy: 985, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stone2 blocks/stone2
rotate: false rotate: false
xy: 298, 65 xy: 995, 421
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stone3 blocks/stone3
rotate: false rotate: false
xy: 308, 65 xy: 298, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stoneblock1 blocks/stoneblock1
rotate: false rotate: false
xy: 318, 65 xy: 308, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stoneblock2 blocks/stoneblock2
rotate: false rotate: false
xy: 328, 65 xy: 318, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stoneblock3 blocks/stoneblock3
rotate: false rotate: false
xy: 338, 65 xy: 328, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stonedrill blocks/stonedrill
rotate: false rotate: false
xy: 348, 65 xy: 338, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1056,35 +1056,35 @@ blocks/stoneedge
index: -1 index: -1
blocks/stoneformer blocks/stoneformer
rotate: false rotate: false
xy: 358, 65 xy: 348, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stonewall blocks/stonewall
rotate: false rotate: false
xy: 368, 65 xy: 358, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/teleporter blocks/teleporter
rotate: false rotate: false
xy: 378, 65 xy: 368, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/teleporter-top blocks/teleporter-top
rotate: false rotate: false
xy: 388, 65 xy: 378, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/thermalgenerator blocks/thermalgenerator
rotate: false rotate: false
xy: 398, 65 xy: 388, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1105,49 +1105,49 @@ blocks/titancannon-icon
index: -1 index: -1
blocks/titanium1 blocks/titanium1
rotate: false rotate: false
xy: 408, 65 xy: 398, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titanium2 blocks/titanium2
rotate: false rotate: false
xy: 418, 65 xy: 408, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titanium3 blocks/titanium3
rotate: false rotate: false
xy: 428, 65 xy: 418, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumdrill blocks/titaniumdrill
rotate: false rotate: false
xy: 438, 65 xy: 428, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumpurifier blocks/titaniumpurifier
rotate: false rotate: false
xy: 448, 65 xy: 438, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumshieldwall blocks/titaniumshieldwall
rotate: false rotate: false
xy: 458, 65 xy: 448, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumwall blocks/titaniumwall
rotate: false rotate: false
xy: 468, 65 xy: 458, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1161,7 +1161,7 @@ blocks/titaniumwall-large
index: -1 index: -1
blocks/titaniumwall-large-icon blocks/titaniumwall-large-icon
rotate: false rotate: false
xy: 557, 178 xy: 468, 65
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1175,35 +1175,35 @@ blocks/turret
index: -1 index: -1
blocks/uranium1 blocks/uranium1
rotate: false rotate: false
xy: 561, 168 xy: 577, 183
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/uranium2 blocks/uranium2
rotate: false rotate: false
xy: 561, 158 xy: 561, 168
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/uranium3 blocks/uranium3
rotate: false rotate: false
xy: 561, 148 xy: 561, 158
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/uraniumdrill blocks/uraniumdrill
rotate: false rotate: false
xy: 571, 169 xy: 561, 148
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/water blocks/water
rotate: false rotate: false
xy: 547, 138 xy: 571, 149
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1231,7 +1231,7 @@ blocks/weaponfactory
index: -1 index: -1
blocks/weaponfactory-icon blocks/weaponfactory-icon
rotate: false rotate: false
xy: 557, 138 xy: 547, 138
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1511,56 +1511,56 @@ enemyarrow
index: -1 index: -1
icon-coal icon-coal
rotate: false rotate: false
xy: 228, 75 xy: 218, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-dirium icon-dirium
rotate: false rotate: false
xy: 238, 81 xy: 228, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-iron icon-iron
rotate: false rotate: false
xy: 248, 81 xy: 238, 81
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-sand icon-sand
rotate: false rotate: false
xy: 258, 81 xy: 248, 81
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-steel icon-steel
rotate: false rotate: false
xy: 268, 81 xy: 258, 81
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-stone icon-stone
rotate: false rotate: false
xy: 278, 81 xy: 268, 81
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-titanium icon-titanium
rotate: false rotate: false
xy: 288, 81 xy: 278, 81
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-uranium icon-uranium
rotate: false rotate: false
xy: 238, 71 xy: 288, 81
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1609,28 +1609,28 @@ mechs/ship-standard
index: -1 index: -1
shell shell
rotate: false rotate: false
xy: 428, 75 xy: 418, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
shot shot
rotate: false rotate: false
xy: 468, 75 xy: 458, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
shot-long shot-long
rotate: false rotate: false
xy: 547, 178 xy: 468, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
titanshell titanshell
rotate: false rotate: false
xy: 567, 189 xy: 557, 178
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1769,6 +1769,13 @@ ui/icons/icon-admin
orig: 14, 14 orig: 14, 14
offset: 0, 0 offset: 0, 0
index: -1 index: -1
ui/icons/icon-admin-small
rotate: false
xy: 124, 82
size: 6, 6
orig: 6, 6
offset: 0, 0
index: -1
ui/icons/icon-areaDelete ui/icons/icon-areaDelete
rotate: false rotate: false
xy: 93, 2 xy: 93, 2
@@ -2483,42 +2490,42 @@ weapons/clustergun-equip
index: -1 index: -1
weapons/shockgun weapons/shockgun
rotate: false rotate: false
xy: 448, 75 xy: 438, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
weapons/shockgun-equip weapons/shockgun-equip
rotate: false rotate: false
xy: 458, 75 xy: 448, 75
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
weapons/triblaster weapons/triblaster
rotate: false rotate: false
xy: 567, 179 xy: 567, 189
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
weapons/triblaster-equip weapons/triblaster-equip
rotate: false rotate: false
xy: 577, 183 xy: 567, 179
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
weapons/vulcan weapons/vulcan
rotate: false rotate: false
xy: 571, 159 xy: 571, 169
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
weapons/vulcan-equip weapons/vulcan-equip
rotate: false rotate: false
xy: 571, 149 xy: 571, 159
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View File

@@ -1,7 +1,7 @@
#Autogenerated file. Do not modify. #Autogenerated file. Do not modify.
#Sun Feb 25 22:24:39 EST 2018 #Sun Feb 25 23:41:37 EST 2018
version=release version=release
androidBuildCode=282 androidBuildCode=288
name=Mindustry name=Mindustry
code=3.3 code=3.3
build=custom build build=custom build

View File

@@ -51,6 +51,7 @@ public class NetClient extends Module {
public NetClient(){ public NetClient(){
Net.handleClient(Connect.class, packet -> { Net.handleClient(Connect.class, packet -> {
player.isAdmin = false;
Net.setClientLoaded(false); Net.setClientLoaded(false);
recieved.clear(); recieved.clear();
@@ -331,6 +332,12 @@ public class NetClient extends Module {
ui.showError(packet.message); ui.showError(packet.message);
disconnectQuietly(); disconnectQuietly();
}); });
Net.handleClient(PlayerAdminPacket.class, packet -> {
Player player = playerGroup.getByID(packet.id);
player.isAdmin = packet.admin;
ui.listfrag.rebuild();
});
} }
@Override @Override

View File

@@ -80,6 +80,7 @@ public class NetServer extends Module{
Log.info("Sending data to player '{0}' / {1}", packet.name, id); Log.info("Sending data to player '{0}' / {1}", packet.name, id);
Player player = new Player(); Player player = new Player();
player.isAdmin = admins.isAdmin(Net.getConnection(id).address);
player.clientid = id; player.clientid = id;
player.name = packet.name; player.name = packet.name;
player.isAndroid = packet.android; player.isAndroid = packet.android;
@@ -109,7 +110,7 @@ public class NetServer extends Module{
Player player = connections.get(id); Player player = connections.get(id);
ByteArrayOutputStream stream = new ByteArrayOutputStream(); ByteArrayOutputStream stream = new ByteArrayOutputStream();
NetworkIO.writeWorld(player.id, weapons.get(player.name, new ByteArray()), stream); NetworkIO.writeWorld(player, weapons.get(player.name, new ByteArray()), stream);
WorldData data = new WorldData(); WorldData data = new WorldData();
data.stream = new ByteArrayInputStream(stream.toByteArray()); data.stream = new ByteArrayInputStream(stream.toByteArray());
Net.sendStream(id, data); Net.sendStream(id, data);
@@ -239,6 +240,32 @@ public class NetServer extends Module{
packet.id = connections.get(id).id; packet.id = connections.get(id).id;
Net.sendExcept(id, packet, SendMode.tcp); Net.sendExcept(id, packet, SendMode.tcp);
}); });
Net.handleServer(AdministerRequestPacket.class, (id, packet) -> {
Player player = connections.get(id);
if(!player.isAdmin){
Log.err("ACCESS DENIED: Player {0} / {1} attempted to perform admin action without proper security access.",
player.name, Net.getConnection(player.clientid).address);
return;
}
Player other = playerGroup.getByID(packet.id);
if(other == null){
Log.err("{0} attempted to perform admin action on nonexistant player.", player.name);
return;
}
if(packet.action == AdminAction.ban){
admins.banPlayer(Net.getConnection(other.clientid).address);
Net.kickConnection(other.clientid, KickReason.banned);
Log.info("&lc{0} has banned {1}.", player.name, other.name);
}else if(packet.action == AdminAction.kick){
Net.kickConnection(other.clientid, KickReason.kick);
Log.info("&lc{0} has kicked {1}.", player.name, other.name);
}
});
} }
public void update(){ public void update(){

View File

@@ -264,8 +264,14 @@ public class Renderer extends RendererModule{
Draw.color(); Draw.color();
Draw.tcolor(player.getColor()); Draw.tcolor(player.getColor());
Draw.text(player.name, player.x, player.y + 8); Draw.text(player.name, player.x, player.y + 8);
Draw.tcolor();
} if(player.isAdmin){
Draw.color(player.getColor());
float s = 3f;
Draw.rect("icon-admin-small", player.x + layout.width/2f + 2 + 1, player.y + 7f, s, s);
}
Draw.reset();
}
} }
Pools.free(layout); Pools.free(layout);
Draw.tscl(fontscale); Draw.tscl(fontscale);

View File

@@ -34,6 +34,7 @@ public class Player extends SyncEntity{
public String name = "name"; public String name = "name";
public boolean isAndroid; public boolean isAndroid;
public boolean isAdmin;
public Color color = new Color(); public Color color = new Color();
public Weapon weaponLeft = Weapon.blaster; public Weapon weaponLeft = Weapon.blaster;
@@ -44,7 +45,7 @@ public class Player extends SyncEntity{
public float stucktime = 0f; public float stucktime = 0f;
public boolean dashing = false; public boolean dashing = false;
public int clientid; public int clientid = -1;
public boolean isLocal = false; public boolean isLocal = false;
public Timer timer = new Timer(4); public Timer timer = new Timer(4);
@@ -240,6 +241,7 @@ public class Player extends SyncEntity{
buffer.put(weaponLeft.id); buffer.put(weaponLeft.id);
buffer.put(weaponRight.id); buffer.put(weaponRight.id);
buffer.put(isAndroid ? 1 : (byte)0); buffer.put(isAndroid ? 1 : (byte)0);
buffer.put(isAdmin ? 1 : (byte)0);
buffer.putInt(Color.rgba8888(color)); buffer.putInt(Color.rgba8888(color));
buffer.putFloat(x); buffer.putFloat(x);
buffer.putFloat(y); buffer.putFloat(y);
@@ -254,6 +256,7 @@ public class Player extends SyncEntity{
weaponLeft = (Weapon) Upgrade.getByID(buffer.get()); weaponLeft = (Weapon) Upgrade.getByID(buffer.get());
weaponRight = (Weapon) Upgrade.getByID(buffer.get()); weaponRight = (Weapon) Upgrade.getByID(buffer.get());
isAndroid = buffer.get() == 1; isAndroid = buffer.get() == 1;
isAdmin = buffer.get() == 1;
color.set(buffer.getInt()); color.set(buffer.getInt());
x = buffer.getFloat(); x = buffer.getFloat();
y = buffer.getFloat(); y = buffer.getFloat();

View File

@@ -2,6 +2,7 @@ package io.anuke.mindustry.net;
import io.anuke.mindustry.Vars; import io.anuke.mindustry.Vars;
import io.anuke.mindustry.entities.BulletType; import io.anuke.mindustry.entities.BulletType;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.entities.enemies.Enemy; import io.anuke.mindustry.entities.enemies.Enemy;
import io.anuke.mindustry.net.Net.SendMode; import io.anuke.mindustry.net.Net.SendMode;
@@ -149,4 +150,19 @@ public class NetEvents {
packet.itemid = (byte)item.id; packet.itemid = (byte)item.id;
Net.send(packet, SendMode.udp); Net.send(packet, SendMode.udp);
} }
public static void handleAdminSet(Player player, boolean admin){
PlayerAdminPacket packet = new PlayerAdminPacket();
packet.admin = admin;
packet.id = player.id;
player.isAdmin = admin;
Net.send(packet, SendMode.tcp);
}
public static void handleAdministerRequest(Player target, AdminAction action){
AdministerRequestPacket packet = new AdministerRequestPacket();
packet.id = target.id;
packet.action = action;
Net.send(packet, SendMode.tcp);
}
} }

View File

@@ -4,6 +4,7 @@ import com.badlogic.gdx.graphics.Pixmap;
import com.badlogic.gdx.graphics.Pixmap.Format; import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.utils.ByteArray; import com.badlogic.gdx.utils.ByteArray;
import com.badlogic.gdx.utils.TimeUtils; import com.badlogic.gdx.utils.TimeUtils;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.game.GameMode; import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.resource.Upgrade; import io.anuke.mindustry.resource.Upgrade;
import io.anuke.mindustry.resource.Weapon; import io.anuke.mindustry.resource.Weapon;
@@ -100,7 +101,7 @@ public class NetworkIO {
} }
} }
public static void writeWorld(int playerID, ByteArray upgrades, OutputStream os){ public static void writeWorld(Player player, ByteArray upgrades, OutputStream os){
try(DataOutputStream stream = new DataOutputStream(os)){ try(DataOutputStream stream = new DataOutputStream(os)){
@@ -116,7 +117,8 @@ public class NetworkIO {
stream.writeInt(state.enemies); //enemy amount stream.writeInt(state.enemies); //enemy amount
stream.writeBoolean(state.friendlyFire); //friendly fire state stream.writeBoolean(state.friendlyFire); //friendly fire state
stream.writeInt(playerID); //player remap ID stream.writeInt(player.id); //player remap ID
stream.writeBoolean(player.isAdmin);
//--INVENTORY-- //--INVENTORY--
@@ -246,6 +248,7 @@ public class NetworkIO {
state.friendlyFire = friendlyfire; state.friendlyFire = friendlyfire;
int pid = stream.readInt(); int pid = stream.readInt();
boolean admin = stream.readBoolean();
//inventory //inventory
for(int i = 0; i < state.inventory.getItems().length; i ++){ for(int i = 0; i < state.inventory.getItems().length; i ++){
@@ -268,6 +271,7 @@ public class NetworkIO {
Entities.clear(); Entities.clear();
player.id = pid; player.id = pid;
player.isAdmin = admin;
player.add(); player.add();
//map //map

View File

@@ -576,4 +576,42 @@ public class Packets {
message = new String(bytes); message = new String(bytes);
} }
} }
public static class PlayerAdminPacket implements Packet{
public boolean admin;
public int id;
@Override
public void write(ByteBuffer buffer) {
buffer.put(admin ? (byte)1 : 0);
buffer.putInt(id);
}
@Override
public void read(ByteBuffer buffer) {
admin = buffer.get() == 1;
id = buffer.getInt();
}
}
public static class AdministerRequestPacket implements Packet{
public AdminAction action;
public int id;
@Override
public void write(ByteBuffer buffer) {
buffer.put((byte)action.ordinal());
buffer.putInt(id);
}
@Override
public void read(ByteBuffer buffer) {
action = AdminAction.values()[buffer.get()];
id = buffer.getInt();
}
}
public enum AdminAction{
kick, ban
}
} }

View File

@@ -42,6 +42,8 @@ public class Registrator {
ItemSetPacket.class, ItemSetPacket.class,
ItemOffloadPacket.class, ItemOffloadPacket.class,
NetErrorPacket.class, NetErrorPacket.class,
PlayerAdminPacket.class,
AdministerRequestPacket.class,
}; };
private static ObjectIntMap<Class<?>> ids = new ObjectIntMap<>(); private static ObjectIntMap<Class<?>> ids = new ObjectIntMap<>();

View File

@@ -1,10 +1,13 @@
package io.anuke.mindustry.ui.dialogs; package io.anuke.mindustry.ui.dialogs;
import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.NetConnection;
import io.anuke.mindustry.net.NetEvents;
import io.anuke.ucore.scene.ui.ScrollPane; import io.anuke.ucore.scene.ui.ScrollPane;
import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.scene.ui.layout.Table;
import static io.anuke.mindustry.Vars.netServer; import static io.anuke.mindustry.Vars.*;
import static io.anuke.mindustry.Vars.ui;
public class AdminsDialog extends FloatingDialog { public class AdminsDialog extends FloatingDialog {
@@ -40,6 +43,13 @@ public class AdminsDialog extends FloatingDialog {
res.addImageButton("icon-cancel", 14*3, () -> { res.addImageButton("icon-cancel", 14*3, () -> {
ui.showConfirm("$text.confirm", "$text.confirmunadmin", () -> { ui.showConfirm("$text.confirm", "$text.confirmunadmin", () -> {
netServer.admins.unAdminPlayer(ip); netServer.admins.unAdminPlayer(ip);
for(Player player : playerGroup.all()){
NetConnection c = Net.getConnection(player.clientid);
if(c != null){
NetEvents.handleAdminSet(player, false);
break;
}
}
setup(); setup();
}); });
}).size(h).pad(-14f); }).size(h).pad(-14f);

View File

@@ -50,6 +50,7 @@ public class HostDialog extends FloatingDialog{
Timers.runTask(5f, () -> { Timers.runTask(5f, () -> {
try{ try{
Net.host(Vars.port); Net.host(Vars.port);
player.isAdmin = true;
}catch (IOException e){ }catch (IOException e){
ui.showError(Bundles.format("text.server.error", Strings.parseException(e, false))); ui.showError(Bundles.format("text.server.error", Strings.parseException(e, false)));
} }
@@ -58,19 +59,4 @@ public class HostDialog extends FloatingDialog{
}); });
}).width(w).height(70f); }).width(w).height(70f);
} }
/*
showTextInput("$text.hostserver", "$text.server.port", Vars.port + "", new DigitsOnlyFilter(), text -> {
int result = Strings.parseInt(text);
if(result == Integer.MIN_VALUE || result >= 65535){
ui.showError("$text.server.invalidport");
}else{
try{
Net.host(result);
}catch (IOException e){
ui.showError(Bundles.format("text.server.error", Strings.parseException(e, false)));
}
}
});
*/
} }

View File

@@ -1,10 +1,12 @@
package io.anuke.mindustry.ui.fragments; package io.anuke.mindustry.ui.fragments;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.net.NetConnection; import io.anuke.mindustry.net.NetConnection;
import io.anuke.mindustry.net.NetEvents; import io.anuke.mindustry.net.NetEvents;
import io.anuke.mindustry.net.Packets.AdminAction;
import io.anuke.mindustry.net.Packets.KickReason; import io.anuke.mindustry.net.Packets.KickReason;
import io.anuke.mindustry.ui.BorderImage; import io.anuke.mindustry.ui.BorderImage;
import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Inputs;
@@ -86,7 +88,7 @@ public class PlayerListFragment implements Fragment{
for(Player player : playerGroup.all()){ for(Player player : playerGroup.all()){
NetConnection connection = Net.getConnection(player.clientid); NetConnection connection = Net.getConnection(player.clientid);
if(connection == null && !player.isLocal) continue; if(connection == null && Net.server() && !player.isLocal) continue;
Table button = new Table("button"); Table button = new Table("button");
button.left(); button.left();
@@ -113,7 +115,9 @@ public class PlayerListFragment implements Fragment{
button.labelWrap("[#" + player.getColor().toString().toUpperCase() + "]" + player.name).width(170f).pad(10); button.labelWrap("[#" + player.getColor().toString().toUpperCase() + "]" + player.name).width(170f).pad(10);
button.add().grow(); button.add().grow();
if(Net.server() && !player.isLocal){ button.addImage("icon-admin").size(14*2).visible(() -> player.isAdmin && !(!player.isLocal && Net.server())).padRight(5);
if((Net.server() || Vars.player.isAdmin) && !player.isLocal && !player.isAdmin){
button.add().growY(); button.add().growY();
float bs = (h + 14)/2f; float bs = (h + 14)/2f;
@@ -123,30 +127,45 @@ public class PlayerListFragment implements Fragment{
t.addImageButton("icon-ban", 14*2, () -> { t.addImageButton("icon-ban", 14*2, () -> {
ui.showConfirm("$text.confirm", "$text.confirmban", () -> { ui.showConfirm("$text.confirm", "$text.confirmban", () -> {
netServer.admins.banPlayer(connection.address); if(Net.server()) {
Net.kickConnection(player.clientid, KickReason.banned); netServer.admins.banPlayer(connection.address);
Net.kickConnection(player.clientid, KickReason.banned);
}else{
NetEvents.handleAdministerRequest(player, AdminAction.ban);
}
}); });
}).padBottom(-5.1f); }).padBottom(-5.1f);
t.addImageButton("icon-cancel", 14*2, () -> Net.kickConnection(player.clientid, KickReason.kick)).padBottom(-5.1f); t.addImageButton("icon-cancel", 14*2, () -> {
if(Net.server()) {
Net.kickConnection(player.clientid, KickReason.kick);
}else{
NetEvents.handleAdministerRequest(player, AdminAction.kick);
}
}).padBottom(-5.1f);
t.row(); t.row();
t.addImageButton("icon-admin", "toggle", 14*2, () -> { t.addImageButton("icon-admin", "toggle", 14*2, () -> {
if(Net.client()) return;
if(netServer.admins.isAdmin(connection.address)){ if(netServer.admins.isAdmin(connection.address)){
ui.showConfirm("$text.confirm", "$text.confirmunadmin", () -> { ui.showConfirm("$text.confirm", "$text.confirmunadmin", () -> {
netServer.admins.unAdminPlayer(connection.address); netServer.admins.unAdminPlayer(connection.address);
//TODO send aproppriate packets. NetEvents.handleAdminSet(player, false);
}); });
}else{ }else{
ui.showConfirm("$text.confirm", "$text.confirmadmin", () -> { ui.showConfirm("$text.confirm", "$text.confirmadmin", () -> {
netServer.admins.adminPlayer(connection.address); netServer.admins.adminPlayer(connection.address);
//TODO send aproppriate packets. NetEvents.handleAdminSet(player, true);
}); });
} }
}).update(b -> b.setChecked(netServer.admins.isAdmin(connection.address))); }).update(b -> b.setChecked(connection != null && netServer.admins.isAdmin(connection.address)))
.disabled(Net.client());
//TODO unused?
t.addImageButton("icon-cancel", 14*2, () -> {});
t.addImageButton("icon-cancel", 14*2, () -> Net.kickConnection(player.clientid, KickReason.kick));
}).padRight(12).padTop(-5).padLeft(0).padBottom(-10).size(bs + 10f, bs); }).padRight(12).padTop(-5).padLeft(0).padBottom(-10).size(bs + 10f, bs);

View File

@@ -355,6 +355,7 @@ public class ServerControl extends Module {
if(target != null){ if(target != null){
String ip = Net.getConnection(player.clientid).address; String ip = Net.getConnection(player.clientid).address;
netServer.admins.adminPlayer(ip); netServer.admins.adminPlayer(ip);
NetEvents.handleAdminSet(target, true);
info("Admin-ed player by IP: {0} / {1}", ip, arg[0]); info("Admin-ed player by IP: {0} / {1}", ip, arg[0]);
}else{ }else{
info("Nobody with that name could be found."); info("Nobody with that name could be found.");
@@ -379,6 +380,7 @@ public class ServerControl extends Module {
if(target != null){ if(target != null){
String ip = Net.getConnection(player.clientid).address; String ip = Net.getConnection(player.clientid).address;
netServer.admins.unAdminPlayer(ip); netServer.admins.unAdminPlayer(ip);
NetEvents.handleAdminSet(target, false);
info("Un-admin-ed player by IP: {0} / {1}", ip, arg[0]); info("Un-admin-ed player by IP: {0} / {1}", ip, arg[0]);
}else{ }else{
info("Nobody with that name could be found."); info("Nobody with that name could be found.");