Fixed various bugs and crashes

This commit is contained in:
Anuken
2018-07-03 15:53:06 -04:00
parent 4d600f973a
commit 359a392cca
15 changed files with 166 additions and 156 deletions

View File

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

View File

@@ -111,21 +111,21 @@ carbide-drill-top
index: -1 index: -1
laser-drill laser-drill
rotate: false rotate: false
xy: 184, 99 xy: 202, 99
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
laser-drill-rotator laser-drill-rotator
rotate: false rotate: false
xy: 202, 99 xy: 184, 81
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
laser-drill-top laser-drill-top
rotate: false rotate: false
xy: 184, 81 xy: 220, 99
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -874,7 +874,7 @@ cross-1
index: -1 index: -1
cross-2 cross-2
rotate: false rotate: false
xy: 339, 117 xy: 357, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -1299,107 +1299,121 @@ block-icon-arc-smelter
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
biomattercompressor arc-smelter-top
rotate: false rotate: false
xy: 507, 191 xy: 507, 191
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
biomattercompressor-frame0 silicon-smelter-top
rotate: false
xy: 507, 191
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
biomattercompressor
rotate: false rotate: false
xy: 525, 191 xy: 525, 191
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
biomattercompressor-frame1 biomattercompressor-frame0
rotate: false rotate: false
xy: 543, 191 xy: 543, 191
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
biomattercompressor-frame2 biomattercompressor-frame1
rotate: false rotate: false
xy: 561, 191 xy: 561, 191
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
biomattercompressor-liquid biomattercompressor-frame2
rotate: false rotate: false
xy: 713, 301 xy: 713, 301
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
biomattercompressor-top biomattercompressor-liquid
rotate: false rotate: false
xy: 710, 283 xy: 710, 283
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blast-mixer biomattercompressor-top
rotate: false rotate: false
xy: 739, 310 xy: 739, 310
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blast-mixer
rotate: false
xy: 977, 413
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
block-icon-blast-mixer block-icon-blast-mixer
rotate: false rotate: false
xy: 739, 310 xy: 977, 413
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
centrifuge-liquid centrifuge-liquid
rotate: false rotate: false
xy: 303, 117 xy: 321, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
cryofluidmixer-bottom cryofluidmixer-bottom
rotate: false rotate: false
xy: 357, 117 xy: 375, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
cryofluidmixer-liquid cryofluidmixer-liquid
rotate: false rotate: false
xy: 375, 117 xy: 393, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
cryofluidmixer-top cryofluidmixer-top
rotate: false rotate: false
xy: 393, 117 xy: 411, 116
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
cultivator cultivator
rotate: false rotate: false
xy: 411, 116 xy: 429, 122
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
cultivator-middle cultivator-middle
rotate: false rotate: false
xy: 429, 122 xy: 447, 122
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
cultivator-top cultivator-top
rotate: false rotate: false
xy: 447, 122 xy: 465, 122
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -1413,47 +1427,33 @@ lavasmelter
index: -1 index: -1
phase-weaver phase-weaver
rotate: false rotate: false
xy: 220, 99 xy: 202, 81
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
phase-weaver-bottom phase-weaver-bottom
rotate: false rotate: false
xy: 202, 81 xy: 238, 99
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
phase-weaver-weave phase-weaver-weave
rotate: false rotate: false
xy: 238, 99 xy: 220, 81
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
plastanium-compressor-top plastanium-compressor-top
rotate: false
xy: 220, 81
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
poweralloysmelter-top
rotate: false rotate: false
xy: 256, 99 xy: 256, 99
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
powersmelter-top poweralloysmelter-top
rotate: false
xy: 238, 81
size: 16, 16
orig: 16, 16
offset: 0, 0
index: -1
silicon-smelter-top
rotate: false rotate: false
xy: 238, 81 xy: 238, 81
size: 16, 16 size: 16, 16
@@ -1504,14 +1504,14 @@ block-1-top
index: -1 index: -1
block-2 block-2
rotate: false rotate: false
xy: 977, 413 xy: 995, 419
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-2-top block-2-top
rotate: false rotate: false
xy: 995, 419 xy: 995, 401
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -1616,14 +1616,14 @@ hail-heat
index: -1 index: -1
lancer lancer
rotate: false rotate: false
xy: 166, 89 xy: 166, 71
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
lancer-heat lancer-heat
rotate: false rotate: false
xy: 166, 71 xy: 184, 99
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -1714,28 +1714,28 @@ wave-liquid
index: -1 index: -1
drone-factory-top drone-factory-top
rotate: false rotate: false
xy: 849, 399 xy: 831, 380
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
drone-factory-top-open drone-factory-top-open
rotate: false rotate: false
xy: 831, 380 xy: 849, 381
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
fabricator-factory-top fabricator-factory-top
rotate: false rotate: false
xy: 849, 381 xy: 828, 362
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
fabricator-factory-top-open fabricator-factory-top-open
rotate: false rotate: false
xy: 828, 362 xy: 829, 344
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -1749,21 +1749,21 @@ mech-factory
index: -1 index: -1
dart-ship-factory-open dart-ship-factory-open
rotate: false rotate: false
xy: 465, 122 xy: 483, 122
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
delta-mech-factory-open delta-mech-factory-open
rotate: false rotate: false
xy: 483, 122 xy: 831, 398
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
javelin-ship-factory-open javelin-ship-factory-open
rotate: false rotate: false
xy: 829, 308 xy: 166, 89
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -1791,7 +1791,7 @@ ship-factory
index: -1 index: -1
door-large-open door-large-open
rotate: false rotate: false
xy: 831, 398 xy: 849, 399
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2001,7 +2001,7 @@ block-icon-arc
index: -1 index: -1
block-icon-biomattercompressor block-icon-biomattercompressor
rotate: false rotate: false
xy: 995, 401 xy: 427, 158
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2064,28 +2064,28 @@ carbide-wall
index: -1 index: -1
block-icon-carbide-wall-large block-icon-carbide-wall-large
rotate: false rotate: false
xy: 427, 158 xy: 445, 158
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
carbide-wall-large carbide-wall-large
rotate: false rotate: false
xy: 427, 158 xy: 445, 158
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-centrifuge block-icon-centrifuge
rotate: false rotate: false
xy: 445, 158 xy: 420, 140
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
centrifuge centrifuge
rotate: false rotate: false
xy: 445, 158 xy: 420, 140
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2141,14 +2141,14 @@ core
index: -1 index: -1
block-icon-cryofluidmixer block-icon-cryofluidmixer
rotate: false rotate: false
xy: 420, 140 xy: 438, 140
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-cultivator block-icon-cultivator
rotate: false rotate: false
xy: 438, 140 xy: 757, 310
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2162,14 +2162,14 @@ block-icon-cyclone
index: -1 index: -1
block-icon-dart-ship-factory block-icon-dart-ship-factory
rotate: false rotate: false
xy: 757, 310 xy: 775, 312
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
dart-ship-factory dart-ship-factory
rotate: false rotate: false
xy: 757, 310 xy: 775, 312
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2218,42 +2218,42 @@ block-icon-phase-wall
index: -1 index: -1
block-icon-deflector-wall-large block-icon-deflector-wall-large
rotate: false rotate: false
xy: 775, 312 xy: 487, 171
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
deflector-wall-large deflector-wall-large
rotate: false rotate: false
xy: 775, 312 xy: 487, 171
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
phase-wall-large phase-wall-large
rotate: false rotate: false
xy: 775, 312 xy: 487, 171
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-phase-wall-large block-icon-phase-wall-large
rotate: false rotate: false
xy: 775, 312 xy: 487, 171
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-delta-mech-factory block-icon-delta-mech-factory
rotate: false rotate: false
xy: 487, 171 xy: 579, 188
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
delta-mech-factory delta-mech-factory
rotate: false rotate: false
xy: 487, 171 xy: 579, 188
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2288,21 +2288,21 @@ door
index: -1 index: -1
block-icon-door-large block-icon-door-large
rotate: false rotate: false
xy: 579, 188 xy: 597, 188
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
door-large door-large
rotate: false rotate: false
xy: 579, 188 xy: 597, 188
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-drone-factory block-icon-drone-factory
rotate: false rotate: false
xy: 597, 188 xy: 615, 188
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2330,7 +2330,7 @@ block-icon-duo
index: -1 index: -1
block-icon-fabricator-factory block-icon-fabricator-factory
rotate: false rotate: false
xy: 615, 188 xy: 633, 188
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2442,14 +2442,14 @@ itemvoid
index: -1 index: -1
block-icon-javelin-ship-factory block-icon-javelin-ship-factory
rotate: false rotate: false
xy: 633, 188 xy: 665, 187
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
javelin-ship-factory javelin-ship-factory
rotate: false rotate: false
xy: 633, 188 xy: 665, 187
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2477,7 +2477,7 @@ block-icon-lancer
index: -1 index: -1
block-icon-laser-drill block-icon-laser-drill
rotate: false rotate: false
xy: 665, 187 xy: 683, 187
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2610,14 +2610,14 @@ metalfloor1
index: -1 index: -1
block-icon-multiplexer block-icon-multiplexer
rotate: false rotate: false
xy: 683, 187 xy: 456, 140
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
multiplexer multiplexer
rotate: false rotate: false
xy: 683, 187 xy: 456, 140
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2715,7 +2715,7 @@ phase-conveyor
index: -1 index: -1
block-icon-phase-weaver block-icon-phase-weaver
rotate: false rotate: false
xy: 456, 140 xy: 463, 158
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2729,14 +2729,14 @@ block-icon-plasma-drill
index: -1 index: -1
block-icon-plastanium-compressor block-icon-plastanium-compressor
rotate: false rotate: false
xy: 463, 158 xy: 474, 140
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
plastanium-compressor plastanium-compressor
rotate: false rotate: false
xy: 463, 158 xy: 474, 140
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2757,14 +2757,14 @@ power-node
index: -1 index: -1
block-icon-power-node-large block-icon-power-node-large
rotate: false rotate: false
xy: 474, 140 xy: 793, 344
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
power-node-large power-node-large
rotate: false rotate: false
xy: 474, 140 xy: 793, 344
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2813,42 +2813,42 @@ block-icon-pulverizer
index: -1 index: -1
block-icon-pyratite-mixer block-icon-pyratite-mixer
rotate: false rotate: false
xy: 793, 344 xy: 793, 312
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
pyratite-mixer pyratite-mixer
rotate: false rotate: false
xy: 793, 344 xy: 793, 312
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-reconstructor block-icon-reconstructor
rotate: false rotate: false
xy: 793, 312 xy: 811, 343
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
drone-factory drone-factory
rotate: false rotate: false
xy: 793, 312 xy: 811, 343
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
fabricator-factory fabricator-factory
rotate: false rotate: false
xy: 793, 312 xy: 811, 343
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
reconstructor reconstructor
rotate: false rotate: false
xy: 793, 312 xy: 811, 343
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -2904,14 +2904,14 @@ rock1
index: -1 index: -1
block-icon-rotary-pump block-icon-rotary-pump
rotate: false rotate: false
xy: 811, 343 xy: 177, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
rotary-pump rotary-pump
rotate: false rotate: false
xy: 811, 343 xy: 177, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -3002,14 +3002,14 @@ shrub
index: -1 index: -1
block-icon-silicon-smelter block-icon-silicon-smelter
rotate: false rotate: false
xy: 177, 117 xy: 195, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
silicon-smelter silicon-smelter
rotate: false rotate: false
xy: 177, 117 xy: 195, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -3170,28 +3170,28 @@ block-icon-swarmer
index: -1 index: -1
block-icon-thermal-generator block-icon-thermal-generator
rotate: false rotate: false
xy: 195, 117 xy: 213, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
thermal-generator thermal-generator
rotate: false rotate: false
xy: 195, 117 xy: 213, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-thermal-pump block-icon-thermal-pump
rotate: false rotate: false
xy: 213, 117 xy: 231, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
thermal-pump thermal-pump
rotate: false rotate: false
xy: 213, 117 xy: 231, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -3212,14 +3212,14 @@ thorium-wall
index: -1 index: -1
block-icon-thorium-wall-large block-icon-thorium-wall-large
rotate: false rotate: false
xy: 231, 117 xy: 249, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
thorium-wall-large thorium-wall-large
rotate: false rotate: false
xy: 231, 117 xy: 249, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -3261,28 +3261,28 @@ tungsten-wall
index: -1 index: -1
block-icon-tungsten-wall-large block-icon-tungsten-wall-large
rotate: false rotate: false
xy: 249, 117 xy: 267, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
tungsten-wall-large tungsten-wall-large
rotate: false rotate: false
xy: 249, 117 xy: 267, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
block-icon-turbine-generator block-icon-turbine-generator
rotate: false rotate: false
xy: 267, 117 xy: 285, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
turbine-generator turbine-generator
rotate: false rotate: false
xy: 267, 117 xy: 285, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -3345,7 +3345,7 @@ water
index: -1 index: -1
block-icon-water-extractor block-icon-water-extractor
rotate: false rotate: false
xy: 285, 117 xy: 303, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4411,7 +4411,7 @@ discord-banner-over
index: -1 index: -1
controller-cursor controller-cursor
rotate: false rotate: false
xy: 321, 117 xy: 339, 117
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4453,14 +4453,14 @@ icon-areaDelete
index: -1 index: -1
icon-arrow icon-arrow
rotate: false rotate: false
xy: 829, 344 xy: 429, 104
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-arrow-16 icon-arrow-16
rotate: false rotate: false
xy: 829, 344 xy: 429, 104
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4495,7 +4495,7 @@ icon-arrow-up
index: -1 index: -1
icon-back icon-back
rotate: false rotate: false
xy: 429, 104 xy: 447, 104
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4509,14 +4509,14 @@ icon-ban
index: -1 index: -1
icon-break icon-break
rotate: false rotate: false
xy: 447, 104 xy: 465, 104
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-cancel icon-cancel
rotate: false rotate: false
xy: 465, 104 xy: 483, 104
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4530,7 +4530,7 @@ icon-chat
index: -1 index: -1
icon-check icon-check
rotate: false rotate: false
xy: 483, 104 xy: 867, 399
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4607,14 +4607,14 @@ icon-egg
index: -1 index: -1
icon-elevation icon-elevation
rotate: false rotate: false
xy: 867, 399 xy: 867, 381
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-eraser icon-eraser
rotate: false rotate: false
xy: 867, 381 xy: 885, 401
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4628,14 +4628,14 @@ icon-exit
index: -1 index: -1
icon-file icon-file
rotate: false rotate: false
xy: 885, 401 xy: 885, 383
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-file-image icon-file-image
rotate: false rotate: false
xy: 885, 383 xy: 903, 401
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4649,7 +4649,7 @@ icon-file-text
index: -1 index: -1
icon-fill icon-fill
rotate: false rotate: false
xy: 903, 401 xy: 903, 383
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4663,7 +4663,7 @@ icon-floppy
index: -1 index: -1
icon-floppy-16 icon-floppy-16
rotate: false rotate: false
xy: 903, 383 xy: 921, 401
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4705,7 +4705,7 @@ icon-google-play
index: -1 index: -1
icon-grid icon-grid
rotate: false rotate: false
xy: 921, 401 xy: 921, 383
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4761,7 +4761,7 @@ icon-items-none
index: -1 index: -1
icon-line icon-line
rotate: false rotate: false
xy: 921, 383 xy: 939, 401
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4789,28 +4789,28 @@ icon-load
index: -1 index: -1
icon-load-image icon-load-image
rotate: false rotate: false
xy: 939, 401 xy: 939, 383
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-load-map icon-load-map
rotate: false rotate: false
xy: 939, 383 xy: 957, 401
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-loading icon-loading
rotate: false rotate: false
xy: 957, 401 xy: 957, 383
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-locked icon-locked
rotate: false rotate: false
xy: 957, 383 xy: 975, 395
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4838,7 +4838,7 @@ icon-menu
index: -1 index: -1
icon-menu-large icon-menu-large
rotate: false rotate: false
xy: 975, 395 xy: 975, 377
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4859,7 +4859,7 @@ icon-pause
index: -1 index: -1
icon-pencil icon-pencil
rotate: false rotate: false
xy: 975, 377 xy: 993, 383
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4873,7 +4873,7 @@ icon-pencil-small
index: -1 index: -1
icon-pick icon-pick
rotate: false rotate: false
xy: 993, 383 xy: 993, 365
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4922,7 +4922,7 @@ icon-quit
index: -1 index: -1
icon-redo icon-redo
rotate: false rotate: false
xy: 993, 365 xy: 665, 169
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4943,7 +4943,7 @@ icon-rename
index: -1 index: -1
icon-resize icon-resize
rotate: false rotate: false
xy: 665, 169 xy: 683, 169
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -4985,14 +4985,14 @@ icon-save
index: -1 index: -1
icon-save-image icon-save-image
rotate: false rotate: false
xy: 683, 169 xy: 701, 171
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
index: -1 index: -1
icon-save-map icon-save-map
rotate: false rotate: false
xy: 701, 171 xy: 719, 171
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -5006,7 +5006,7 @@ icon-settings
index: -1 index: -1
icon-terrain icon-terrain
rotate: false rotate: false
xy: 719, 171 xy: 811, 325
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -5041,7 +5041,7 @@ icon-trash
index: -1 index: -1
icon-trash-16 icon-trash-16
rotate: false rotate: false
xy: 811, 325 xy: 829, 326
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -5062,7 +5062,7 @@ icon-tutorial
index: -1 index: -1
icon-undo icon-undo
rotate: false rotate: false
xy: 829, 326 xy: 811, 307
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0
@@ -5097,7 +5097,7 @@ icon-wiki
index: -1 index: -1
icon-zoom icon-zoom
rotate: false rotate: false
xy: 811, 307 xy: 829, 308
size: 16, 16 size: 16, 16
orig: 16, 16 orig: 16, 16
offset: 0, 0 offset: 0, 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 131 KiB

View File

@@ -108,8 +108,8 @@ public class Recipes implements ContentList{
new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.carbide, 500), new ItemStack(Items.thorium, 350)); new Recipe(distribution, StorageBlocks.vault, new ItemStack(Items.carbide, 500), new ItemStack(Items.thorium, 350));
//DRILLS, PRODUCERS //DRILLS, PRODUCERS
new Recipe(production, ProductionBlocks.tungstenDrill, new ItemStack(Items.tungsten, 30)); new Recipe(production, ProductionBlocks.tungstenDrill, new ItemStack(Items.tungsten, 25));
new Recipe(production, ProductionBlocks.carbideDrill, new ItemStack(Items.tungsten, 60), new ItemStack(Items.carbide, 60)); new Recipe(production, ProductionBlocks.carbideDrill, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 60));
new Recipe(production, ProductionBlocks.laserdrill, new ItemStack(Items.tungsten, 90), new ItemStack(Items.carbide, 110), new ItemStack(Items.silicon, 70), new ItemStack(Items.titanium, 80)); new Recipe(production, ProductionBlocks.laserdrill, new ItemStack(Items.tungsten, 90), new ItemStack(Items.carbide, 110), new ItemStack(Items.silicon, 70), new ItemStack(Items.titanium, 80));
new Recipe(production, ProductionBlocks.waterextractor, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 50), new ItemStack(Items.lead, 40)); new Recipe(production, ProductionBlocks.waterextractor, new ItemStack(Items.tungsten, 50), new ItemStack(Items.carbide, 50), new ItemStack(Items.lead, 40));

View File

@@ -18,7 +18,7 @@ public class ProductionBlocks extends BlockList implements ContentList {
public void load() { public void load() {
tungstenDrill = new Drill("tungsten-drill") {{ tungstenDrill = new Drill("tungsten-drill") {{
tier = 2; tier = 2;
drillTime = 360; drillTime = 340;
}}; }};
carbideDrill = new Drill("carbide-drill") {{ carbideDrill = new Drill("carbide-drill") {{

View File

@@ -21,11 +21,12 @@ public class TurretBlocks extends BlockList implements ContentList {
ammoTypes = new AmmoType[]{AmmoTypes.bulletTungsten, AmmoTypes.bulletLead, AmmoTypes.bulletCarbide, AmmoTypes.bulletPyratite, AmmoTypes.bulletSilicon}; ammoTypes = new AmmoType[]{AmmoTypes.bulletTungsten, AmmoTypes.bulletLead, AmmoTypes.bulletCarbide, AmmoTypes.bulletPyratite, AmmoTypes.bulletSilicon};
reload = 25f; reload = 25f;
restitution = 0.03f; restitution = 0.03f;
range = 80f; range = 90f;
shootCone = 15f; shootCone = 15f;
ammoUseEffect = ShootFx.shellEjectSmall; ammoUseEffect = ShootFx.shellEjectSmall;
health = 80; health = 80;
inaccuracy = 3f; inaccuracy = 2f;
rotatespeed = 10f;
}}; }};
/* /*
scatter = new BurstTurret("scatter") {{ scatter = new BurstTurret("scatter") {{
@@ -52,10 +53,10 @@ public class TurretBlocks extends BlockList implements ContentList {
scorch = new LiquidTurret("scorch") {{ scorch = new LiquidTurret("scorch") {{
ammoTypes = new AmmoType[]{AmmoTypes.basicFlame}; ammoTypes = new AmmoType[]{AmmoTypes.basicFlame};
recoil = 0f; recoil = 0f;
reload = 5f; reload = 4f;
shootCone = 50f; shootCone = 50f;
ammoUseEffect = ShootFx.shellEjectSmall; ammoUseEffect = ShootFx.shellEjectSmall;
health = 140; health = 160;
drawer = (tile, entity) -> Draw.rect(entity.target != null ? name + "-shoot" : name, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90); drawer = (tile, entity) -> Draw.rect(entity.target != null ? name + "-shoot" : name, tile.drawx() + tr2.x, tile.drawy() + tr2.y, entity.rotation - 90);
}}; }};

View File

@@ -301,7 +301,7 @@ public class NetClient extends Module {
length = snapshot.length; length = snapshot.length;
netClient.lastSnapshotBase = Arrays.copyOf(snapshot, snapshot.length); netClient.lastSnapshotBase = Arrays.copyOf(snapshot, snapshot.length);
} else { //otherwise, last snapshot must not be null, decode it } else { //otherwise, last snapshot must not be null, decode it
if(NetServer.showSnapshotSize) Log.info("Base size: {0} Path size: {1}", netClient.lastSnapshotBase.length, snapshot.length); if(NetServer.showSnapshotSize) Log.info("Base size: {0} Patch size: {1}", netClient.lastSnapshotBase.length, snapshot.length);
netClient.decoder.init(netClient.lastSnapshotBase, snapshot); netClient.decoder.init(netClient.lastSnapshotBase, snapshot);
result = netClient.decoder.decode(); result = netClient.decoder.decode();
length = netClient.decoder.getDecodedLength(); length = netClient.decoder.getDecodedLength();

View File

@@ -74,6 +74,7 @@ public class NetServer extends Module{
if(player != null){ if(player != null){
onDisconnect(player); onDisconnect(player);
} }
connections.remove(id);
}); });
Net.handleServer(ConnectPacket.class, (id, packet) -> { Net.handleServer(ConnectPacket.class, (id, packet) -> {
@@ -406,18 +407,25 @@ public class NetServer extends Module{
byte[] bytes = syncStream.toByteArray(); byte[] bytes = syncStream.toByteArray();
connection.lastSentRawSnapshot = bytes;
if(connection.currentBaseID == -1){ if(connection.currentBaseID == -1){
//assign to last sent snapshot so that there is only ever one unique snapshot with ID 0
if(connection.lastSentSnapshot != null){
bytes = connection.lastSentSnapshot;
}else{
connection.lastSentRawSnapshot = bytes;
connection.lastSentSnapshot = bytes;
}
if(showSnapshotSize) Log.info("Sent raw snapshot: {0} bytes.", bytes.length); if(showSnapshotSize) Log.info("Sent raw snapshot: {0} bytes.", bytes.length);
///Nothing to diff off of in this case, send the whole thing, but increment the counter ///Nothing to diff off of in this case, send the whole thing
connection.lastSentSnapshot = bytes;
sendSplitSnapshot(connection.id, bytes, 0, -1); sendSplitSnapshot(connection.id, bytes, 0, -1);
}else{ }else{
connection.lastSentRawSnapshot = bytes;
//send diff, otherwise //send diff, otherwise
byte[] diff = ByteDeltaEncoder.toDiff(new ByteMatcherHash(connection.currentBaseSnapshot, bytes), encoder); byte[] diff = ByteDeltaEncoder.toDiff(new ByteMatcherHash(connection.currentBaseSnapshot, bytes), encoder);
if(showSnapshotSize) Log.info("Shrank snapshot: {0} -> {1}, Base {2} ID {3}", bytes.length, diff.length, connection.currentBaseID, connection.lastSentSnapshotID); if(showSnapshotSize) Log.info("Shrank snapshot: {0} -> {1}, Base {2} ID {3} base length = {4}", bytes.length, diff.length, connection.currentBaseID, connection.currentBaseID + 1, connection.currentBaseSnapshot.length);
sendSplitSnapshot(connection.id, diff, connection.lastSentSnapshotID + 1, connection.currentBaseID); sendSplitSnapshot(connection.id, diff, connection.currentBaseID + 1, connection.currentBaseID);
connection.lastSentSnapshot = diff; connection.lastSentSnapshot = diff;
connection.lastSentSnapshotID = connection.currentBaseID + 1; connection.lastSentSnapshotID = connection.currentBaseID + 1;
connection.lastSentBase = connection.currentBaseID; connection.lastSentBase = connection.currentBaseID;
@@ -432,7 +440,6 @@ public class NetServer extends Module{
/**Sends a raw byte[] snapshot to a client, splitting up into chunks when needed.*/ /**Sends a raw byte[] snapshot to a client, splitting up into chunks when needed.*/
private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){ private static void sendSplitSnapshot(int userid, byte[] bytes, int snapshotID, int base){
if(bytes.length < maxSnapshotSize){ if(bytes.length < maxSnapshotSize){
if(showSnapshotSize) Log.info("Raw send() snapshot call: {0} bytes, sID {1}", bytes.length, snapshotID);
Call.onSnapshot(userid, bytes, snapshotID, (short)0, (short)bytes.length, base); Call.onSnapshot(userid, bytes, snapshotID, (short)0, (short)bytes.length, base);
}else{ }else{
int remaining = bytes.length; int remaining = bytes.length;

View File

@@ -9,6 +9,7 @@ import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Align;
import com.badlogic.gdx.utils.Disposable; import com.badlogic.gdx.utils.Disposable;
import com.badlogic.gdx.utils.ObjectMap; import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.mindustry.content.blocks.StorageBlocks;
import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.game.Team; import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.Map; import io.anuke.mindustry.io.Map;
@@ -587,7 +588,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
for(Block block : Block.all()){ for(Block block : Block.all()){
TextureRegion[] regions = block.getCompactIcon(); TextureRegion[] regions = block.getCompactIcon();
if((block.synthetic() && (Recipe.getByResult(block) == null || !control.database().isUnlocked(Recipe.getByResult(block)))) && !debug) continue; if((block.synthetic() && (Recipe.getByResult(block) == null || !control.database().isUnlocked(Recipe.getByResult(block)))) && !debug && block != StorageBlocks.core) continue;
if(regions.length == 0 || regions[0] == Draw.region("jjfgj")) continue; if(regions.length == 0 || regions[0] == Draw.region("jjfgj")) continue;

View File

@@ -250,6 +250,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
@Override @Override
public void removed() { public void removed() {
dropCarryLocal(); dropCarryLocal();
TileEntity core = getClosestCore();
if(core != null && ((CoreEntity)core).currentUnit == this){
((CoreEntity)core).currentUnit = null;
}
} }
@Override @Override

View File

@@ -28,7 +28,6 @@ import io.anuke.ucore.entities.trait.TimeTrait;
import io.anuke.ucore.entities.trait.VelocityTrait; import io.anuke.ucore.entities.trait.VelocityTrait;
import io.anuke.ucore.graphics.Draw; import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Mathf;
import io.anuke.ucore.util.Pooling;
import java.io.DataInput; import java.io.DataInput;
import java.io.DataOutput; import java.io.DataOutput;
@@ -48,7 +47,7 @@ public class ItemDrop extends SolidEntity implements SaveTrait, SyncTrait, DrawT
private float sinktime; private float sinktime;
public static ItemDrop create(Item item, int amount, float x, float y, float angle){ public static ItemDrop create(Item item, int amount, float x, float y, float angle){
ItemDrop drop = Pooling.obtain(ItemDrop.class); ItemDrop drop = new ItemDrop();
drop.item = item; drop.item = item;
drop.amount = amount; drop.amount = amount;
drop.velocity.set(4f, 0f).rotate(angle); drop.velocity.set(4f, 0f).rotate(angle);
@@ -188,11 +187,6 @@ public class ItemDrop extends SolidEntity implements SaveTrait, SyncTrait, DrawT
} }
} }
@Override
public void removed() {
Pooling.free(this);
}
@Override @Override
public void reset() { public void reset() {
time = 0f; time = 0f;

View File

@@ -91,6 +91,8 @@ public class BreakBlock extends Block {
Shaders.blockbuild.color = Palette.remove; Shaders.blockbuild.color = Palette.remove;
if(entity.previous == null) return;
for(TextureRegion region : entity.previous.getBlockIcon()){ for(TextureRegion region : entity.previous.getBlockIcon()){
Shaders.blockbuild.region = region; Shaders.blockbuild.region = region;
Shaders.blockbuild.progress = (float)(1f-entity.progress); //progress reversed Shaders.blockbuild.progress = (float)(1f-entity.progress); //progress reversed

View File

@@ -29,9 +29,9 @@ public class BurstTurret extends ItemTurret {
entity.recoil = recoil; entity.recoil = recoil;
tr.trns(entity.rotation, size * tilesize / 2, Mathf.range(xRand)); tr.trns(entity.rotation, size * tilesize / 2, Mathf.range(xRand));
useAmmo(tile);
bullet(tile, ammo.bullet, entity.rotation + Mathf.range(inaccuracy)); bullet(tile, ammo.bullet, entity.rotation + Mathf.range(inaccuracy));
effects(tile); effects(tile);
useAmmo(tile);
}); });
} }
} }

View File

@@ -272,7 +272,7 @@ public class CoreBlock extends StorageBlock {
} }
public class CoreEntity extends TileEntity{ public class CoreEntity extends TileEntity{
Unit currentUnit; public Unit currentUnit;
int droneID = -1; int droneID = -1;
boolean solid = true; boolean solid = true;
float warmup; float warmup;

View File

@@ -4,6 +4,7 @@ import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.IntMap; import com.badlogic.gdx.utils.IntMap;
import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.core.NetServer;
import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Player;
import io.anuke.mindustry.game.Difficulty; import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.EventType.GameOverEvent; import io.anuke.mindustry.game.EventType.GameOverEvent;
@@ -220,9 +221,8 @@ public class ServerControl extends Module {
if(playerGroup.size() > 0) { if(playerGroup.size() > 0) {
info("&lyPlayers: {0}", playerGroup.size()); info("&lyPlayers: {0}", playerGroup.size());
for (Player p : playerGroup.all()) { for (Player p : playerGroup.all()) {
//TODO
if(Net.getConnection(p.clientid) == null){ if(Net.getConnection(p.clientid) == null){
netServer.onDisconnect(p); NetServer.onDisconnect(p);
continue; continue;
} }
print(" &y{0} / Connection {1} / IP: {2}", p.name, p.clientid, Net.getConnection(p.clientid).address); print(" &y{0} / Connection {1} / IP: {2}", p.name, p.clientid, Net.getConnection(p.clientid).address);