Compare commits

..

1490 Commits
v123.1 ... v131

Author SHA1 Message Date
Anuken
edbe795aa5 Merge remote-tracking branch 'origin/master' 2021-09-12 20:21:59 -04:00
Anuken
087cd2c55a Cleanup 2021-09-12 20:21:55 -04:00
fuzzbuck
ca62deaaa9 Change io event server (#5981)
(offline at this time) will used for events & seasonal modes
2021-09-12 15:09:52 -04:00
JrTRinny
d33a4f9f87 More Target varieties for energy field ability (#5828)
* more targets for energy field ability

* group booleans
2021-09-12 14:55:26 -04:00
Shockwave
f64d078f29 Update bundle_zh_CN.properties (#5938)
* Update bundle_zh_CN.properties

1. Inherited from <https://github.com/Anuken/Mindustry/pull/5661>
2. Synced latest commit from English bundle.

* Update bundle_zh_CN.properties

Synced cliff support for editor

* Update bundle_zh_CN.properties

Minor optimization

* Update bundle_zh_CN.properties

Minor fix at line 349~

* Update bundle_zh_CN.properties

Synced recent update in English bundle. (Hide All and Show All)

* Update bundle_zh_CN.properties

1. Synced hint for high threat level sector
2. Unified the term "sector"
3. Minor fix on the half-width commas

* Update bundle_zh_CN.properties

Optimized key-pressing descriptions.

* Update bundle_zh_CN.properties

Restore line 934 to half-width comma

* Update bundle_zh_CN.properties

Synced name of new sectors.
2021-09-12 12:54:32 -04:00
RebornTrack970
da465c7786 TR Translate before release (#5980) 2021-09-12 11:34:03 -04:00
NickName73
9c12125e89 Update bundle_ru.properties (#5911) 2021-09-12 11:22:17 -04:00
Sharlotte
2a6d7c5a13 Update bundle_ko.properties (#5892)
* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties
2021-09-12 11:21:53 -04:00
YellOw139
71e38862b9 [Bundle][RO] Update (#5848)
* [Bundle][RO] Update

Changelog:

- New strings/changes up to commit 254284760f
- Typo fixes & various other improvements

* Update full_description.txt

* Update full_description.txt

* killing confusion

* Update bundle_ro.properties

* deep-tainted-water

* should do for now

* sector.name
2021-09-12 11:21:17 -04:00
彭瑞暄
b58a63b200 Update bundle_zh_TW.properties (#5860)
* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties

minor correction
2021-09-12 11:21:09 -04:00
VizardAlpha
ee8b4f478d Updates bundle_fr.properties (#5931)
* Updates bundle_fr.properties

* Added rivers on Serpulo / Added deep tainted water

* Error correction

* More campaign map progress .. Added new commits

* Update bundle_fr.properties
2021-09-12 11:09:46 -04:00
JrTRinny
1941f22676 Update bundle_th.properties (#5908)
* Update bundle_th.properties

* Update bundle_th.properties

* Update bundle_th.properties

* more beautiful names

* Update bundle_th.properties
2021-09-12 11:09:40 -04:00
Anuken
35ffbef557 #5932 2021-09-12 11:07:18 -04:00
Anuken
24db94a55b No server category colors 2021-09-12 11:05:05 -04:00
Anuken
46bda97362 Merge remote-tracking branch 'origin/master' 2021-09-12 09:05:23 -04:00
Anuken
a1b9f7d1b3 Fixed #5979 2021-09-12 09:05:18 -04:00
Matthew Peng
32db058dbe Why is the smelter -top drawn between the flame circles? (#5817) 2021-09-11 18:47:30 -04:00
Anuken
2f7c5994a7 Fixed #5978 2021-09-11 15:43:24 -04:00
Anuken
2664bb84be Fixed #5974 2021-09-11 13:30:10 -04:00
Anuken
bdcfb7ab45 Merge remote-tracking branch 'origin/master' 2021-09-11 12:15:39 -04:00
Anuken
5cf47f4198 Clamp sector description in info 2021-09-11 12:15:34 -04:00
Darkness6030
515ee060d2 [RU] Sectors name translation (#5972)
С береговой линией все понятно. 
Но почему я выбрал "Прибрежная крепость"?
Все просто. "Naval" переводится как "Водяной", но "Водяная Крепость" - звучит *не очень*.
Нужен какой-то синоним. Я рассмотрел варианты "Морская", "Береговая", но в конце концов остановился на варианте "Прибрежная".

Если вы думаете иначе, предлагайте свой вариант перевода.
2021-09-11 10:20:57 -04:00
Anuken
90c2473448 Duct bridge crash fix 2021-09-11 10:07:00 -04:00
Anuken
c5a90759e5 Fixed #5971 / Fixed #5973 2021-09-11 08:45:17 -04:00
Anuken
cccce6badd Make Base AI walls correspond to tier 2021-09-10 21:11:57 -04:00
Anuken
decc570867 Slightly denser generated bases 2021-09-10 17:23:17 -04:00
Anuken
caa34c959e More campaign map progress 2021-09-10 17:07:06 -04:00
Anuken
b8fa15e546 Merge remote-tracking branch 'origin/master' 2021-09-10 16:33:30 -04:00
Anuken
47d5be679d Map progress 2021-09-10 16:33:26 -04:00
buthed010203
fc7f689ea4 Named pathfinder thread (#5969) 2021-09-10 15:56:42 -04:00
Anuken
7c028ffcb8 Experimental positional spawn support / WIP map 2021-09-10 13:56:12 -04:00
Anuken
10c3f9e44a River noise target field 2021-09-10 09:22:39 -04:00
Anuken
b2a634e5e7 Untested/WIP naval campaign map 2021-09-10 09:17:25 -04:00
Anuken
ae0a70703b Wave edit dialog cleanup 2021-09-09 22:25:08 -04:00
TranquillyUnpleasant
9076325fa1 Add a copy button to spawn groups (#5957)
* copy button

* rebuild groups on removal

* two factor sorting

* copy method for spawngroup

* implement Clonable

* revert to copy to call clone
2021-09-09 19:38:56 -04:00
Anuken
08d7390775 Merge remote-tracking branch 'origin/master' 2021-09-09 17:05:00 -04:00
Anuken
cbe188abab Map editor bugfixes / Re-added build noise 2021-09-09 17:04:55 -04:00
Matthew Peng
abbc25798d Pull trail updating out into its own method (#5964) 2021-09-09 15:47:08 -04:00
Anuken
a3ede6cf0b Merge remote-tracking branch 'origin/master' 2021-09-09 12:08:38 -04:00
Anuken
e997768a0a d 2021-09-09 12:08:33 -04:00
itcannotbe
671098cc28 Add Build Cost Multiplier to Distributor (#5967)
It just makes sense.
2021-09-09 11:16:47 -04:00
Anuken
1a686c44a1 Fixed editor crash 2021-09-09 09:59:35 -04:00
Anuken
9e737cd3fe Merge remote-tracking branch 'origin/master' 2021-09-08 20:44:31 -04:00
Anuken
deed84f9a3 Public power graph contents 2021-09-08 20:44:26 -04:00
Matthew Peng
868cd4fb0b Just because a generator doesn't have turbines doesn't mean it doesn't have liquid (#5962) 2021-09-08 20:40:56 -04:00
Anuken
a5697a7d4b Fixed mod alpha bleeding not applying correctly 2021-09-08 15:09:05 -04:00
Anuken
2222330b43 Added hint for high threat level sector 2021-09-08 11:23:37 -04:00
Anuken
cde192b59a Added Block#allowConfigInventory 2021-09-08 09:04:04 -04:00
Anuken
c98eb2edd7 Fixed #5958 2021-09-08 08:42:23 -04:00
Anuken
dd7062f0f7 ParticleEffect#sizeInterp / Log usable RAM 2021-09-07 22:32:27 -04:00
Anuken
8adefb7b72 Merge remote-tracking branch 'origin/master' 2021-09-07 17:57:17 -04:00
Anuken
5e13f71fde Minor bugfixes & compatibility fixes 2021-09-07 17:57:03 -04:00
Matthew Peng
d257adf0c1 Show All (#5954) 2021-09-07 15:20:59 -04:00
TranquillyUnpleasant
34d2a0d3a0 Hide all button for units (#5953)
* Hide all button for units

* Add bundle property
2021-09-07 13:38:43 -04:00
Matthew Peng
efae0d3b6a Anuke what is this (#5949) 2021-09-06 20:45:42 -04:00
buthed010203
a393e21326 remove redundant Core.bundle.get (#5947) 2021-09-06 15:08:22 -04:00
Anuken
5641b4901c Easier stained mountains guardian 2021-09-05 23:01:26 -04:00
Anuken
4da21ba363 Added cliff support to editor 2021-09-05 20:08:02 -04:00
Anuken
508abba2ec Merge remote-tracking branch 'origin/master' 2021-09-05 18:00:21 -04:00
Anuken
87ff876db3 Take block timeScale into account for sector damage 2021-09-05 18:00:16 -04:00
CancerGuy
4720f1b876 Add files via upload (#5943) 2021-09-05 17:06:00 -04:00
Anuken
e35d09fe62 Merge remote-tracking branch 'origin/master' 2021-09-05 12:07:20 -04:00
Anuken
fb74dfa02f Default visualElevation for ships 2021-09-05 12:07:15 -04:00
Darkness6030
461d87dbef Add HexPvp server to global V6 list (#5940) 2021-09-05 12:03:57 -04:00
TranquillyUnpleasant
cf5d172922 Wave graph y axis refactor (#5926)
* Y axis refactor

* Fix formatting inconsistencies

* Make style match xml
2021-09-05 11:21:49 -04:00
Anuken
227fb388b8 Update building consume module before main update 2021-09-05 11:18:31 -04:00
Anuken
89d495fdb1 Merge remote-tracking branch 'origin/master' 2021-09-04 23:28:20 -04:00
Anuken
82e659dd80 Planet rendering infrastructure stuff 2021-09-04 23:28:15 -04:00
SoMall-dumpling
f20b9c828c Update Blocks.java (#5939)
simplest integer ratio
2021-09-04 22:30:07 -04:00
Anuken
efe5668c5a Merge remote-tracking branch 'origin/master' 2021-09-04 20:37:31 -04:00
Anuken
0331d8c6c4 Fixed #5937 2021-09-04 20:37:26 -04:00
Volas171
15882016ca 🤦 (#5936) 2021-09-04 18:07:29 -04:00
Anuken
b4b9a44126 Merge remote-tracking branch 'origin/master' 2021-09-04 18:07:15 -04:00
Anuken
063d2ce6c0 Implemented #5905 properly 2021-09-04 18:07:08 -04:00
ZestyLemonade
3985620289 space-begone (#5935)
Co-authored-by: sample-text-here <kjdshkasjhdfkj@jashdkaj.ksdh>
2021-09-04 17:43:03 -04:00
Anuken
23d0dfe6bf Deprecated DoubleOverlayFloor 2021-09-04 16:29:14 -04:00
Anuken
0a5b1d1380 Merge remote-tracking branch 'origin/master' 2021-09-04 15:23:53 -04:00
Anuken
24b0f445b8 Added rivers on Serpulo / Added deep tainted water 2021-09-04 15:23:47 -04:00
Volas171
57cd20e2a1 update mindustry reborn v7 (#5933)
* update mindustry reborn ip

* i forgo-
2021-09-04 12:49:11 -04:00
Anuken
3f49807348 Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-09-04 11:27:29 -04:00
Anuken
13ddca750a arc 2021-09-04 11:27:26 -04:00
buthed010203
c209b0bdaf add statustable name to hudfragment (#5904) 2021-09-04 11:05:06 -04:00
Matthew Peng
264052a95f Remove the slight delay in wind3.ogg (#5909)
* Remove the slight delay in `wind3.ogg`

* Don't need to export the quality that high
2021-09-04 10:26:42 -04:00
Matthew Peng
b004146015 Input liquid drawing for DrawLiquid and DrawMixer (#5906) 2021-09-04 10:18:44 -04:00
CancerGuy
3901ae1720 change (#5923) 2021-09-04 10:14:40 -04:00
RebornTrack970
bcf798c247 Moved All OmegaHub servers from all Nodes to N5 (#5917)
* Moved All OmegaHub servers from all Nodes to N5

* Update servers_v7.json

* v6 life matters!

* Update servers_v6.json

* Update servers_v7.json

Co-authored-by: Volas171 <60143910+Volas171@users.noreply.github.com>
2021-09-04 10:14:16 -04:00
buthed010203
2dffd525a3 remove useless method call (#5912)
sector.hasBase() already checks that save != null
2021-09-04 10:14:04 -04:00
QmelZ
d31389efca remove space (#5929) 2021-09-04 10:12:13 -04:00
Anuken
ee8683c734 Do not display overdrive visual for router/conduit 2021-09-04 10:07:13 -04:00
Anuken
8224cc3fce Fixed #5922 2021-09-04 10:03:40 -04:00
Anuken
94a340d3ee Merge remote-tracking branch 'origin/master' 2021-09-04 09:59:32 -04:00
Anuken
f8048be429 Fixed #5918 2021-09-04 09:59:28 -04:00
Кирилл Алдашкин
3714077fbe Fixed the display of the oil extractor efficiency (#5915) 2021-09-04 09:58:38 -04:00
Anuken
6984be2172 Merge remote-tracking branch 'origin/master' 2021-09-04 09:55:28 -04:00
Anuken
48f359ca9b Fixed #5907 2021-09-04 09:55:23 -04:00
Matthew Peng
9b28eaa3b3 Allow for SingleTypeGenerators to use only liquid. (#5900) 2021-08-30 08:23:58 -04:00
Matthew Peng
2f47f13ef7 Adjustable generateEffect randomness (#5901) 2021-08-29 22:55:52 -04:00
Anuken
80acea4708 #5897 with proper formatting 2021-08-29 16:25:26 -04:00
Anuken
cc689fd114 Fixed #5895 2021-08-29 10:26:39 -04:00
Anuken
be5d9154a7 Merge remote-tracking branch 'origin/master' 2021-08-29 09:12:08 -04:00
Anuken
bb9d7fedf7 Fixed #5894 2021-08-29 09:12:03 -04:00
Matthew Peng
71f064bda1 Shouldn't shorten() also reset the counter? (#5890) 2021-08-29 08:28:38 -04:00
Anuken
e30d7e998d Allow unit icons for sectors 2021-08-28 20:49:39 -04:00
Anuken
a3270dd908 this turned out to be pretty difficult 2021-08-28 16:29:58 -04:00
Anuken
48d568978b Merge remote-tracking branch 'origin/master'
# Conflicts:
#	core/src/mindustry/entities/Damage.java
2021-08-28 14:17:29 -04:00
Anuken
9a7324ce54 Fixed #5887 2021-08-28 14:17:01 -04:00
Darkness6030
d254d971a9 Add unitSpawnEvent (#5876) 2021-08-28 10:53:19 -04:00
SMOLKEYS.exe
800f0f4511 inconspicuous OCD goes to brazil (#5884) 2021-08-28 09:13:57 -04:00
Matthew Peng
60b2842d82 Rotator spinSpeed (#5881) 2021-08-28 08:47:11 -04:00
Matthew Peng
f8c7ff0159 Damage.damage doesn't properly convert cores (#5882)
* `Damage.damage` doesn't properly convert cores

* Well that was a complete failure
2021-08-28 08:46:08 -04:00
Anuken
4d62b0321f Fixed #5885 2021-08-28 08:44:42 -04:00
Anuken
6ca2855365 Fixed RailBulletType effect length 2021-08-27 22:33:56 -04:00
Anuken
ced97888e4 why 2021-08-27 21:51:37 -04:00
Zelaux
9f68fe520b Fixed incorrect work of TextureRegion.found() when creating icons (#5879)
* Fixed incorrect work of TextureRegion.found() when creating icons

* fixed comment text

* fixed comment text
2021-08-27 11:08:04 -04:00
Anuken
8c32acbc30 Fixed #5878 2021-08-27 09:58:08 -04:00
Anuken
bfc9b07651 Redundant cast cleanup 2021-08-27 09:31:18 -04:00
Anuken
e53b578043 Merge remote-tracking branch 'origin/master' 2021-08-27 09:17:31 -04:00
Anuken
b2ed066faa Fixed BE server not updating 2021-08-27 09:17:26 -04:00
Matthew Peng
5cc461edb0 Make hiding details optional (#5871)
* Make hiding details optional

* Sandbox blocks shouldn't have their details hidden.
2021-08-26 20:47:35 -04:00
Anuken
9b22777dfb AGP 7.0.1 2021-08-26 15:15:29 -04:00
Anuken
3bd08bb047 Merge remote-tracking branch 'origin/master' 2021-08-26 15:07:13 -04:00
Anuken
139d6cd5cc Proper #5872 2021-08-26 15:07:08 -04:00
RebornTrack970
309b0adb9e Added Rush and Expansion to Omega Hub (#5868) 2021-08-26 08:33:10 -04:00
Anuken
c25e6b586b Allow empty maps in FileMapGenerator 2021-08-25 21:57:18 -04:00
Anuken
f46b22e4a7 Merge remote-tracking branch 'origin/master' 2021-08-25 13:22:23 -04:00
Anuken
2b6856634c Fixed #5864 2021-08-25 13:22:19 -04:00
Ilya246
20305b5d36 Fix .pl BE server (#5862)
The server is currently up and running BE
2021-08-25 13:06:19 -04:00
Anuken
9e16d7385a Implemented #5853 2021-08-25 10:09:00 -04:00
Anuken
c573fd34a1 Bullet raycast clamp 2021-08-25 09:10:59 -04:00
Anuken
da7873cbd8 #5855 2021-08-25 08:49:41 -04:00
Anuken
a15f8131fa Merge remote-tracking branch 'origin/master' 2021-08-24 19:14:44 -04:00
Anuken
0d27e3afdc Fixed #5856 2021-08-24 19:14:40 -04:00
Leonid Skorospelov
bdcae408e6 Added 2v2, 3v3 ranked gamemode servers to v6 (#5854) 2021-08-24 17:45:14 -04:00
Anuken
bc4783e9cd Implemented #5851 properly 2021-08-24 12:45:28 -04:00
Anuken
8143cb7be0 Unit balancing 2021-08-24 12:10:44 -04:00
Anuken
8e90527609 Chat prefix empty message fix / Call.sound volume limit increase 2021-08-24 10:19:46 -04:00
Anuken
8949fd279e Build error fix / Anuken/Mindustry-Suggestions/issues/2897 2021-08-24 09:28:51 -04:00
Anuken
901d594768 Prevent server sound ear destruction / Particle effect rand param 2021-08-23 20:27:01 -04:00
Anuken
3964c8e826 Merge remote-tracking branch 'origin/master' 2021-08-23 17:41:02 -04:00
Anuken
044a124bc7 Fixed #5847 2021-08-23 17:40:58 -04:00
VizardAlpha
4f22db8db5 Updates bundle_fr.properties (#5663)
* Updates bundle_fr.properties

Final core launch animation / Added option to skip core animations

* Translation end

* Proper name/impl for "borderless windowed" on Windows

* Mod import progress bar

* WIP team icons

* Improved environmental block internal names

* Update core/assets/bundles/bundle_fr.properties

Co-authored-by: Lucien Perregaux <57545107+Luhrel@users.noreply.github.com>

* payload source and void descriptions

* Game stats cleanup

* Added max units field for wave editor

* Added max units

Co-authored-by: Lucien Perregaux <57545107+Luhrel@users.noreply.github.com>
Co-authored-by: Anuken <arnukren@gmail.com>
2021-08-23 16:58:31 -04:00
Anuken
80ef3cee34 Suppress gen deprecatio warning / Anuken/Mindustry-Suggestions/issues/2888 2021-08-23 15:33:28 -04:00
Anuken
254284760f Hid details of locked content 2021-08-23 15:20:56 -04:00
Anuken
71ee7558ab Merge remote-tracking branch 'origin/master' 2021-08-23 14:47:16 -04:00
Anuken
5f4a3e341f #5785 2021-08-23 14:47:11 -04:00
RebornTrack970
81f25b76fd TR Fix (#5781) 2021-08-23 14:41:32 -04:00
Take
649c6ddfb3 Japanese Translation (Steam, Android description & Achivements) (#5805)
* copy English achivement and description file to Japanese folder

* Translate Gameplay, Campaign

* Translate steam achievements

* Translate Gamemodes, Custom&Multiplayer, Editor

* Translate Android desctiption

* Create summary.txt

* remove the sentence to recommend to share in steam workshop

* fix: 個 → 種類

* minor translation change
2021-08-23 14:36:34 -04:00
SoMall-dumpling
3bd3d3aa37 Avoid ambiguity (#5809)
* Avoid ambiguity

When you see 'boost: 150%'
It can be 'increase the speed to 150%' or 'increase the speed to 250%'.
Maybe you will say that the colon has already avoided this ambiguity.
But you know there's always someone who ignores those things, and also translating 'boost' is hard with no 'x' to avoid ambiguity.
With a 'x', it will show 'Boost: x150%', which will never be thought as 250%.

* Update OverdriveProjector.java

When power is low, show 'low power: -{0}%';
When power is high, show 'boost: +{0}%'.

* Update bundle.properties

* Update bundle.properties

* Update OverdriveProjector.java

bugfix(perhaps)

* Update OverdriveProjector.java

what if

* Update OverdriveProjector.java

InTeReStInG

* Update OverdriveProjector.java

back to the past

* Update OverdriveProjector.java

Now using Math.max.

* Update bundle_bg.properties

* Update bundle_de.properties

* Update bundle_fr.properties

* Update bundle_hu.properties

* Update bundle_in_ID.properties

* Update bundle_ja.properties

* Update bundle_ko.properties

* Update bundle_pl.properties

* Update bundle_ro.properties

* Update bundle_ru.properties

* Update bundle_th.properties

* Update bundle_uk_UA.properties

* Update bundle_vi.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_TW.properties

* Update OverdriveProjector.java

Maybe this is necessary.

* Update OverdriveProjector.java

The stats are '+50%' ,etc. now.

* Update OverdriveProjector.java

Necessary, because the previous one is strange.
2.5 does not make sense. 12.5 does.
2021-08-23 12:37:34 -04:00
Prosta4okua
fa9573e6dc [UKR] Translation (#5810)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2021-08-23 12:27:17 -04:00
Sharlotte
b4d19bf71b Update bundle_ko.properties (#5842) 2021-08-23 12:26:27 -04:00
YellOw139
0f019f58bd [Bundle][RO] Update (#5839)
* [Bundle][RO] Update

Changelog:

- New strings/changes up to commit 5d4ab9ecd7
- Typo fixes & various other improvements

* new button

* derelict changes
2021-08-23 12:26:15 -04:00
kituta
572166b157 Update bundle_ja.properties (#5813)
* Update bundle_ja.properties

Corrections to notational errors. //表記揺れの修正
Change to appropriate wording. //適切な語句への変更

* Update bundle_ja.properties

Add and remove. //追加と削除
2021-08-23 12:26:08 -04:00
JrTRinny
e16dba3336 Update bundle_th.properties (#5845)
* Update bundle_th.properties

* database button
2021-08-23 12:25:59 -04:00
Anuken
b52d645459 #5837 2021-08-23 12:04:54 -04:00
Darkness6030
73b24d2966 Update bundle_ru.properties (#5844) 2021-08-23 10:24:36 -04:00
Anuken
006c796da7 Added database button in menu 2021-08-23 10:03:26 -04:00
Anuken
160fdee596 Consistent tile attribute display 2021-08-23 09:12:36 -04:00
Anuken
5cc50b0ff3 Fixed floorSpeedMultiplier being squared 2021-08-22 15:53:07 -04:00
Anuken
3ba2498815 Removed atrax from archipelago waves 2021-08-22 13:44:55 -04:00
Anuken
0a0ec12e6c Allow logic itemDrop to @air 2021-08-22 11:43:14 -04:00
Anuken
9c826a5fdd Merge remote-tracking branch 'origin/master' 2021-08-22 10:21:24 -04:00
Anuken
50d01ef6f8 FlyingComp cleanup 2021-08-22 10:21:20 -04:00
Matthew Peng
b860b2bbfb Don't show core ghosts (#5834) 2021-08-22 09:45:17 -04:00
JrTRinny
7773a3b17b let payload source/void replace each other (#5835) 2021-08-22 09:45:05 -04:00
Anuken
c605418e33 public Setting constructor 2021-08-22 09:40:55 -04:00
Anuken
55270996ff Cleanup 2021-08-22 00:36:25 -04:00
Anuken
789fcac439 Merge remote-tracking branch 'origin/master' 2021-08-22 00:35:55 -04:00
Anuken
466118319f Fixed naval units with canBoost = true 2021-08-22 00:35:40 -04:00
fuzzbuck
8117aa8046 add 2 new io servers (#5830)
1 new gamemode which will soon come to existance & placeholder slot for events & possible future gamemode
2021-08-21 18:05:43 -04:00
Darkness6030
6847d2f373 Add HexedPvP server to Global v7 list (#5829) 2021-08-21 14:55:41 -04:00
Anuken
f85c078de8 PR cleanup 2021-08-21 11:34:05 -04:00
Matthew Peng
9cc08ada22 Heal Targetting on Turrets (#5820)
* Heal Targetting on Turrets

* Just in case
2021-08-21 11:33:20 -04:00
Sunny Kim
ec1afdfdc4 Hidden blocks only in the Placement UI (#5806)
* placeablePlayer

* placeablePlayer unlocked
2021-08-21 11:29:16 -04:00
Anuken
92d3d3cd9c Fixed #5824 2021-08-21 09:54:05 -04:00
Anuken
8d23e335ae Merge remote-tracking branch 'origin/master' 2021-08-20 23:04:47 -04:00
Anuken
ec61598a52 Minke ability moved to Oxynoe 2021-08-20 23:04:43 -04:00
彭瑞暄
c0c0ebb71f Update bundle_zh_TW.properties (#5739)
1609 lst.lookup not translated for clarity (using original description)
2021-08-20 23:03:17 -04:00
Fatonndev
c22f6a844e add hexed pvp server (#5819) 2021-08-20 14:29:46 -04:00
Anuken
8b4112f705 Check for repo & display name in mod browser search 2021-08-20 13:35:41 -04:00
Anuken
465afc3128 Sound fixes 2021-08-20 08:54:02 -04:00
Anuken
6730954a2e Fixed particle effect icon offset 2021-08-20 00:16:03 -04:00
Anuken
d03049799e Gradle 7.2 2021-08-20 00:06:37 -04:00
Anuken
3a3622bb58 Boss status color fix 2021-08-19 23:42:27 -04:00
Anuken
38ec05807a Disallow logic-building invalid blocks 2021-08-19 23:32:21 -04:00
Anuken
5d4ab9ecd7 Added max units field for wave editor 2021-08-19 23:26:39 -04:00
Anuken
0ab5f5bb14 hide hidden units in menu 2021-08-19 21:29:50 -04:00
Anuken
4b14008080 Fixed #5812 2021-08-19 17:50:31 -04:00
Anuken
e23054d606 Better support for disabling omniMovement 2021-08-19 16:29:49 -04:00
Anuken
dc5ca76df0 Merge remote-tracking branch 'origin/master' 2021-08-19 14:20:22 -04:00
Anuken
a8b423836e Added unit decal system for mods/future units 2021-08-19 14:20:18 -04:00
Volas171
a4bd160995 omegahub ip change (last) (#5807) 2021-08-19 10:43:58 -04:00
Anuken
558ee579e1 BlockIndexer null team fix 2021-08-19 09:37:12 -04:00
Anuken
41829b8660 Fixed #5803 2021-08-18 20:10:14 -04:00
Anuken
b8eaabe0de Fixed #5802 2021-08-18 18:55:36 -04:00
Anuken
a94735c5a5 Remote unlock tweaks 2021-08-18 17:52:59 -04:00
Anuken
ba48373bbc Game stats cleanup 2021-08-18 16:39:20 -04:00
Anuken
512b65a592 Merge remote-tracking branch 'origin/master' 2021-08-18 13:50:05 -04:00
Anuken
103ee371bd Fixed #5800 2021-08-18 13:49:59 -04:00
buthed010203
179f44cd37 // (#5798) 2021-08-18 12:52:12 -04:00
Anuken
1bf173b1ee Merge remote-tracking branch 'origin/master' 2021-08-18 11:41:44 -04:00
Anuken
356c2cfa80 Fixed #5797 2021-08-18 11:41:38 -04:00
kituta
5b61a183cd Update bundle_ja.properties (#5376)
* Update bundle_ja.properties

* Update bundle_ja.properties

Minor corrections and additions

* Update bundle_ja.properties

* Update bundle_ja.properties

Add 2 lines

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update bundle_ja.properties

* Update core/assets/bundles/bundle_ja.properties

Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com>

* Update core/assets/bundles/bundle_ja.properties

Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com>

* Update core/assets/bundles/bundle_ja.properties

Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com>

* Update bundle_ja.properties

* Update core/assets/bundles/bundle_ja.properties

Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com>

* Update core/assets/bundles/bundle_ja.properties

Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com>

Co-authored-by: Take <18237819+Takeno-hito@users.noreply.github.com>
2021-08-18 10:45:39 -04:00
Xasmedy
d5e1b47b52 Adding M.D.N. Hub (#5795) 2021-08-18 10:25:46 -04:00
Anuken
63795d9df8 public AI fields 2021-08-17 22:06:29 -04:00
Anuken
8e179552ec pointless casts begone 2021-08-17 21:45:13 -04:00
Sunny Kim
d1271f3e4b Boss (Guardian) Status Sprite (#5773)
* boss status

* almost forgot

* Update bundle_ko.properties
2021-08-17 18:00:00 -04:00
buthed010203
24e6f5b841 remove stray newline (#5788)
its ugly
2021-08-17 17:59:15 -04:00
Alexander397172YT
7118c972a8 Update servers_v6.json (#5790) 2021-08-17 17:54:29 -04:00
Anuken
e4742133ca Made various fields/methods public 2021-08-17 17:23:02 -04:00
Anuken
ada6ef229c Merge remote-tracking branch 'origin/master' 2021-08-17 11:39:03 -04:00
Anuken
f0c0900770 Lambda memory allocation optimizations 2021-08-17 11:38:57 -04:00
Michael McMahon
a4a6eb6cee Command-line-tools link (#5789)
Link specifically to the `Command line tools only` section instead of the complete Android Studio package.
2021-08-17 08:27:36 -04:00
RebornTrack970
362c7d38a6 Omega Hub Server Update 2 (#5782)
Every Server (exept Rush and expansion) is fixed
2021-08-16 20:22:13 -04:00
Anuken
7b4d488b11 UI cleanup 2021-08-16 20:06:50 -04:00
Anuken
0c5f781702 Sector wave spawning fixes 2021-08-16 13:15:14 -04:00
Anuken
ff5c48a2a0 Merge remote-tracking branch 'origin/master' 2021-08-16 10:34:53 -04:00
Anuken
1a55f19ab2 Fixed #5774 2021-08-16 10:34:48 -04:00
JrTRinny
59456b67a1 payload source and void descriptions (#5778) 2021-08-16 08:22:03 -04:00
buthed010203
1a12510081 Closes #5777 (#5779)
I did a dumb
2021-08-16 08:15:20 -04:00
Anuken
d83f48891a Fixed #5774 2021-08-15 22:23:31 -04:00
Anuken
747c6186d4 DesktopLauncher -debug argument 2021-08-15 22:17:17 -04:00
Anuken
b3ef412368 Extra debug logging for mod pack 2021-08-15 21:59:57 -04:00
MrTnT 2.0
bfdcb971fc Update servers_v6.json (#5748)
* Update servers_v6.json

* Update servers_v6.json
2021-08-15 21:26:19 -04:00
YellOw139
487bc1866a [Bundle][RO] Update (#5668)
* [Bundle][RO] Update

Changelog:

- New strings/changes up to commit 5ca5025fb1
- Typo fixes & various other improvements

* Update bundle_ro.properties

* Update bundle_ro.properties

* progress

* derelict

* typo

* Update bundle_ro.properties

* Update bundle_ro.properties

* teamwork

* []

* AI

* Агрессоры

* sector info

* Update bundle_ro.properties

* Update bundle_ro.properties

* Update bundle_ro.properties

* Update bundle_ro.properties
2021-08-15 21:24:27 -04:00
Thomas Widyantoko
0b99d71bd4 [ID] v7 prealpha translation (#5669)
* Indonesian bundle update

lenum.controller description and Tar Fields map

* translation bundle sync

* Indonesian translation standardization

* healing status effect

* Indonesian translation for V7

bit confused on line 1611

* [ID] WIP polygonal core protection

* [ID] Updates Indonesian V7 translation

Logic wait & content look up instructions

* [ID] v7 prealpha translation

draft 1

* [ID] v7 prealpha translation part 2

Fixed a line and made changes to untranslated lines.
2021-08-15 21:24:13 -04:00
Sharlotte
8d811550e2 Update bundle_ko.properties (#5680)
* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* They don't like unofficial properties h

* Update bundle_ko.properties

* translated b80129e17b (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c), 7e047ef726 (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c), 1cf2bd4892 (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c), a5fe8970c6 (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c), 1b0de739f9 (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c)
* marged from https://github.com/Anuken/Mindustry/pull/5731
2021-08-15 21:24:07 -04:00
JrTRinny
09486946fc Update bundle_th.properties (#5694)
* Update bundle_th.properties

* banned unit

* better environment block name

* craters fix + color

* name consistensies

* add new updates
2021-08-15 21:23:56 -04:00
RebornTrack970
3f988cec72 TR Translate (#5770) 2021-08-15 21:23:18 -04:00
Anuken
c35dde5569 Fixed #5772 2021-08-15 21:17:16 -04:00
Anuken
79d757856e Merge remote-tracking branch 'origin/master' 2021-08-15 09:34:28 -04:00
Anuken
cd0c48985d Unconditional unit draw state reset 2021-08-15 09:34:23 -04:00
RebornTrack970
b2f35220e3 OmegaHub Server Update (#5769) 2021-08-15 09:30:34 -04:00
Anuken
d9ecaa701b Merge remote-tracking branch 'origin/master' 2021-08-14 23:19:34 -04:00
Anuken
9355496915 Correct SolidPump bar 2021-08-14 23:19:29 -04:00
Matthew Peng
79939db170 If it accepts payloads, then it shouldn't be blocked. (#5767) 2021-08-14 20:35:29 -04:00
Matthew Peng
24d3afca18 If a block doesn't rotate, then don't check if the payload conveyor is trying to input into the output side (#5766)
* If a block doesn't rotate, then don't check if the payload conveyor is trying to input into the output side

* b l o c k

* h

* Revert "h"

This reverts commit 2860818e3f.
2021-08-14 18:48:52 -04:00
Anuken
334b62b0a2 Misc scripting visibility changes 2021-08-14 09:49:25 -04:00
Anuken
16fb70b0ef Fixed #5762 / Fixed #5763 2021-08-14 09:21:02 -04:00
Anuken
c2fcffb0d8 Planet frustum culling 2021-08-13 23:49:47 -04:00
Anuken
681fc6de3d Misc bugfixes 2021-08-13 19:41:14 -04:00
Anuken
9640acfb74 Merge remote-tracking branch 'origin/master' 2021-08-13 19:07:19 -04:00
Anuken
94b12704dc Mobile text input fixes 2021-08-13 19:07:14 -04:00
buthed010203
74468855c2 Offset formations by 22.5 degrees when full (#5754)
This stops the annoying "unit bumping" problem on servers (at least with full formations), removed the other 2 lines as they didnt actually do anything.

Before: https://mee6.is-terrible.com/56YkB59o8.webm
After: I really cant be bothered
2021-08-13 17:45:12 -04:00
Anuken
031b1abe0a Allow animations without top regions 2021-08-13 14:14:58 -04:00
Anuken
0e6d9ea933 Fixed #5760 / Fixed #5761 2021-08-13 13:58:25 -04:00
Anuken
6e5ad304e4 Fixed #5759 2021-08-13 12:17:32 -04:00
Anuken
a689c2cb4d Merge remote-tracking branch 'origin/master' 2021-08-13 11:29:27 -04:00
Anuken
cd53cf0991 Fixed planet zoom 2021-08-13 11:29:22 -04:00
alex
5e2bf1f931 change address of pvp server (#5758) 2021-08-13 10:55:06 -04:00
Anuken
033dadae2c Removed unnecessary 'chat' font 2021-08-13 09:20:46 -04:00
Anuken
1b0de739f9 Sector info list / Minor hint fixes 2021-08-12 22:16:13 -04:00
Anuken
351f1a80c7 Merge remote-tracking branch 'origin/master' 2021-08-12 10:07:34 -04:00
Anuken
def1094357 Added world data progress bar 2021-08-12 10:07:30 -04:00
CxZxRain
4dec658a77 Update servers_v6.json (#5752) 2021-08-12 09:32:15 -04:00
Anuken
a5fe8970c6 Per-team AI settings / Errors for missing player cores 2021-08-12 09:24:20 -04:00
Anuken
1cf2bd4892 Team-specific rules / Player+Enemy team rules 2021-08-11 23:36:06 -04:00
Anuken
9111860fce Merge remote-tracking branch 'origin/master' 2021-08-11 21:18:52 -04:00
Anuken
0cac972061 Support for team-specific multipliers (no UI) 2021-08-11 21:18:48 -04:00
buthed010203
fa9257182b Dont configure if not needed (#5745)
* Dont configure if not needed

* fix
2021-08-11 17:23:34 -04:00
Anuken
4fc18d35ce #5742 2021-08-11 16:42:25 -04:00
Anuken
c2720bbc33 Increased PPT range 2021-08-11 11:36:20 -04:00
Anuken
5d86390e28 Turret heat cleanup 2021-08-11 10:31:36 -04:00
Anuken
ec89db7cb1 Things 2021-08-11 09:54:30 -04:00
Anuken
d15968d291 Merge remote-tracking branch 'origin/master' 2021-08-11 09:27:11 -04:00
Anuken
5e5df8848d Ammo rebalancing / Possible crash fix 2021-08-11 09:27:06 -04:00
Volas171
a0f66a5f94 Update Omega Community Server server ip (#5735)
ip changed, now moved to there
2021-08-11 09:18:36 -04:00
Anuken
d3a15fba96 Filter locked items from stat values 2021-08-10 21:47:28 -04:00
Anuken
14dc293a09 Fixed #5734 / New derelict icon 2021-08-10 19:56:31 -04:00
Anuken
a97690d219 Merge remote-tracking branch 'origin/master' 2021-08-10 17:11:29 -04:00
Anuken
9c626a17f0 Database dialog search bar 2021-08-10 17:11:22 -04:00
buthed010203
3354ef246b spacing (#5732)
Before: ![](https://mee6.is-terrible.com/56KMVIkGc.png)
After: ![](https://xenon.is-ne.at/56KPxNfyF.png)
2021-08-10 16:08:00 -04:00
Anuken
e7e64379dd () 2021-08-10 15:12:58 -04:00
Anuken
78dc94b0ed Merge remote-tracking branch 'origin/master' 2021-08-10 10:16:20 -04:00
Anuken
be38bba0e4 #5729 2021-08-10 10:16:15 -04:00
JrTRinny
6c963a2de7 comment fix (#5730)
* there is no mech pads

* factories
2021-08-10 09:38:46 -04:00
buthed010203
6d517396b3 ??? (#5727) 2021-08-09 18:05:19 -04:00
Matthew Peng
6246a1d39c Option to make a unit not appear on the title screen. (#5728) 2021-08-09 18:04:21 -04:00
Anuken
9c1063c7cc Misc minor bugfixes 2021-08-09 16:53:49 -04:00
Anuken
ed71777a17 . 2021-08-09 14:27:42 -04:00
Anuken
353433a383 Fine, I'll do it myself (#5717) 2021-08-09 14:19:34 -04:00
Anuken
7e047ef726 Stone craters name fix 2021-08-09 12:13:07 -04:00
Anuken
c60f6d155f Fixed #5725 2021-08-09 11:41:39 -04:00
Anuken
42486cd784 Fixed export/import lines curving through planet 2021-08-09 09:59:49 -04:00
Anuken
5b27f4786d ItemBuffer struct 2021-08-09 09:37:45 -04:00
Anuken
01f759a992 Fixed #5722 2021-08-08 20:42:48 -04:00
Anuken
cc0d7af610 Merge remote-tracking branch 'origin/master' 2021-08-08 13:38:01 -04:00
Anuken
00a2c1aad0 Refactored fireball into FireBulletType 2021-08-08 13:37:55 -04:00
buthed010203
e40ab50e10 why are there soaces here ? (#5716)
good question
2021-08-07 21:24:03 -04:00
Yakuzet
99b3420423 fix update TR bundle (#5715)
translated some new things and fixed some translation
2021-08-07 18:12:31 -04:00
Anuken
644d00b268 Misc ammo balancing 2021-08-07 17:37:55 -04:00
Anuken
71c4f27d60 Removed pointless 'device' switcher / Anuken/Mindustry-Suggestions/issues/2811 (but only partially) 2021-08-07 12:34:11 -04:00
Anuken
6cb2c0e8a7 Anuken/Mindustry-Suggestions/issues/2810 2021-08-07 12:22:34 -04:00
Anuken
d3745d043c Merge remote-tracking branch 'origin/master' 2021-08-07 12:08:35 -04:00
Anuken
b1b89290b9 Implemented Anuken/Mindustry-Suggestions/issues/2809 2021-08-07 12:08:30 -04:00
Fatonndev
ca8fa02687 add oblivion pvp server (#5709) 2021-08-07 08:28:29 -04:00
Anuken
ce9bfdbcae Fixed #5710 2021-08-07 08:26:49 -04:00
Anuken
5f29633689 Fixed #5707 2021-08-06 23:19:45 -04:00
Anuken
cab71958d0 Implementation of #4921 2021-08-06 19:40:27 -04:00
Anuken
9c995be22e Merge remote-tracking branch 'origin/master' 2021-08-06 18:02:04 -04:00
Anuken
f0a0b4cfc9 Fixed keyDown not registering at low FPS / Spectre bullet balance 2021-08-06 18:01:57 -04:00
RebornTrack970
395f7e0324 Added the Community Server server to Omega (#5705) 2021-08-06 13:47:30 -04:00
Anuken
b80129e17b Improved environmental block internal names 2021-08-06 11:52:25 -04:00
Anuken
e57b5b6966 Implemented Anuken/Mindustry-Suggestions/issues/2800 2021-08-06 11:17:10 -04:00
Anuken
316adf63ee Multi-target zenith AI 2021-08-06 11:07:30 -04:00
Anuken
588523b311 Avoid lambda capture in puddles 2021-08-06 09:34:38 -04:00
Anuken
b8232326bc Fixed #5703 2021-08-06 09:04:07 -04:00
Anuken
4fa04b9e23 Bannable units / Show tech tree icon for unresearched units 2021-08-05 23:01:58 -04:00
Anuken
6fdbe1d5f0 Fixed minimap not updating when build team changes 2021-08-05 14:20:23 -04:00
Anuken
66ce3e75ec Allow dumping/moving into payload voids 2021-08-05 12:00:35 -04:00
Anuken
ec30232c4e Made AttributeCrafters consume a constant amount of liquid
+ cultivator water requirement decrease
2021-08-05 10:27:46 -04:00
Anuken
6cb6a76ef3 arc 2021-08-05 08:22:53 -04:00
Anuken
46eeb8b960 arc 2021-08-04 23:03:15 -04:00
Anuken
294ab0a81b Better initial bridge arrows 2021-08-04 19:16:14 -04:00
Anuken
aa80f06f7b Cleanup & bullet bugfixes 2021-08-04 19:02:36 -04:00
Anuken
dd738a0108 Removed puddle 'generation' 2021-08-04 18:32:10 -04:00
Anuken
3be5296572 Fixed #5699 2021-08-04 13:52:17 -04:00
Anuken
cfa844f960 Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-08-04 11:35:19 -04:00
Anuken
3b7afec360 arc 2021-08-04 11:35:15 -04:00
GaviTSRA
a9412c4f62 Updated hub ip of TSR Server (#5698) 2021-08-04 09:27:21 -04:00
Arik
2f57705f13 Fix saving tags of overwritten schematic (#5696) 2021-08-04 09:27:01 -04:00
Anuken
ee47bffb1c Merge remote-tracking branch 'origin/master' 2021-08-04 09:26:43 -04:00
Anuken
909c64468f Fixed #5695 / Fixed #5697 2021-08-04 09:26:39 -04:00
RebornTrack970
d7d7b73c54 Mindustry PvP 1v1 test server Added to Omega (#5692)
Fot testing.
2021-08-03 17:16:14 -04:00
Anuken
f820121e08 Sector bugfixes / More sector info 2021-08-03 16:01:27 -04:00
Anuken
0b036acb75 Merge remote-tracking branch 'origin/master' 2021-08-03 10:10:46 -04:00
Anuken
4d4ae7b2db #5690 2021-08-03 10:10:42 -04:00
Darkness6030
7f896723be Small changes in reloadmaps command (#5687)
Idk is it useful, but why not
2021-08-03 09:33:27 -04:00
Anuken
36deb5e225 Fixed #5688 2021-08-03 09:25:41 -04:00
Anuken
116422f1e7 arc 2021-08-02 21:47:29 -04:00
Anuken
a3d1dd91d9 Dispose display framebuffer on remove 2021-08-02 08:53:50 -04:00
Anuken
41964cd130 Unordered damaged building indices 2021-08-01 20:35:10 -04:00
Anuken
d9a92dc10e Minor deployment script fixes 2021-08-01 18:01:36 -04:00
Anuken
9c1f897fff Fixed #5684 2021-08-01 17:00:24 -04:00
Anuken
e64cd905d6 Fixed #5685 2021-08-01 13:27:21 -04:00
Anuken
fc80c23dde Auto-generate block paletted team regions for mods 2021-07-31 21:31:36 -04:00
Anuken
84b69a683a PvP team color palettes 2021-07-31 18:50:55 -04:00
Anuken
79bf77f4be WIP team icons 2021-07-31 18:23:22 -04:00
Anuken
78c35221be arc 2021-07-31 11:22:18 -04:00
Anuken
1d257c1a35 Mod import progress bar 2021-07-31 10:58:09 -04:00
Anuken
ef92236cb4 Gradle 7.1.1 2021-07-31 09:47:44 -04:00
Anuken
90bc18e1bd Fixed #5677 2021-07-31 08:38:03 -04:00
Anuken
9f6c45f4a0 Merge remote-tracking branch 'origin/master' 2021-07-30 22:49:55 -04:00
Anuken
b7842bbb26 warmup = 1 for bridges without power 2021-07-30 22:49:51 -04:00
JrTRinny
589430055e translation update (#5670) 2021-07-30 22:19:27 -04:00
BlueWolf
8f6fe08b1c fix some misleading comments (#5676) 2021-07-30 21:51:35 -04:00
Anuken
f354b6bcca pulverizer drawSpinSprite 2021-07-30 19:43:29 -04:00
Anuken
d02a017c03 arc 2021-07-30 18:59:18 -04:00
Anuken
6d58997f71 arc 2021-07-30 18:35:50 -04:00
Anuken
7d72c4dc63 arc 2021-07-30 18:13:30 -04:00
Anuken
3b9700793c arc 2021-07-30 16:43:26 -04:00
Anuken
0c03c47eb9 Disabled crash sending + arc 2021-07-30 16:26:25 -04:00
Anuken
2d35a024e2 arc 2021-07-30 15:29:12 -04:00
Andrew Antsiferov
eac11045ff Fix typo (#5674)
of the -> of the tile.
2021-07-30 14:57:23 -04:00
Anuken
a7cc6185ad Proper name/impl for "borderless windowed" on Windows 2021-07-30 14:27:46 -04:00
Anuken
d855840fe2 Fixed #5672 2021-07-30 13:05:12 -04:00
Anuken
81419eddbe Merge remote-tracking branch 'origin/master' 2021-07-30 11:58:06 -04:00
Anuken
fc41ad36f7 Fixed damaged building memory leak 2021-07-30 11:58:01 -04:00
RebornTrack970
676a064b6b Updated TR bundle to Build 21565 (#5671) 2021-07-30 10:46:25 -04:00
Anuken
9e1ba3e235 Darkened chat background slightly 2021-07-30 09:33:35 -04:00
Anuken
ad23544f24 Merge remote-tracking branch 'origin/master' 2021-07-29 11:26:07 -04:00
Anuken
296f9b9da5 Smoother bridge animation start/stop 2021-07-29 11:26:01 -04:00
buthed010203
47398f71a8 Utility method for mods (#5667)
* Utility method for mods

I don't want to have to read something this horrible ever again ![](https://aethex.is-a.fail/55DesOkHk.png)

* Update StorageBlock.java
2021-07-29 11:13:10 -04:00
Anuken
a36f872b61 Use ModLoadException instead of IllegalArgumentException 2021-07-29 09:20:51 -04:00
Anuken
dbebe2ab29 Merge remote-tracking branch 'origin/master' 2021-07-29 09:16:58 -04:00
Anuken
ccb973d1dd Log incompatible mod class loaders 2021-07-29 09:16:53 -04:00
buthed010203
132b1fe0c4 This bothers me (#5664)
* This bothers me

absolutely horrible

* Update gradle.properties
2021-07-28 18:23:23 -04:00
Anuken
8702ebd706 Update deployment.yml 2021-07-28 18:20:08 -04:00
Anuken
4734261097 Fixed unit building not starting when some resources are missing 2021-07-28 18:08:17 -04:00
Anuken
78f55765c1 Clear fallback sprite for core thrusters 2021-07-28 17:49:01 -04:00
Anuken
bdb4ae2f85 Typo fix 2021-07-28 17:28:01 -04:00
Anuken
850b0d0210 Merge remote-tracking branch 'origin/master' 2021-07-28 17:08:56 -04:00
Anuken
fa0f161106 Minor swarmer range buff 2021-07-28 17:08:48 -04:00
Prosta4okua
59aff44a55 Update bundle_uk_UA.properties (#5540) 2021-07-28 16:58:06 -04:00
YellOw139
aa74679998 [Bundle][RO] Update (#5573)
* [Bundle][RO] Update

Changelog:

- New strings/changes up to commit 8041c305ad
- Typo fixes & various other improvements

* Update bundle_ro.properties

* Update bundle_ro.properties

* settings

* Update bundle_ro.properties

* new blocks

* new units I

* new units II

* Update bundle_ro.properties

* Update bundle_ro.properties
2021-07-28 16:57:54 -04:00
Anuken
61db253d4a Merge remote-tracking branch 'origin/master' 2021-07-28 11:51:25 -04:00
Anuken
fef8ee925b Potential fix for #5660 2021-07-28 11:51:20 -04:00
Ksawi
5cb5434ffe Update bundle_pl.properties (#5572)
* Update bundle_pl.properties

Added translation of statuses and processor functions. Changed few translations.

* content.status.name

* Update bundle_pl.properties

* Update bundle_pl.properties

* Flares in omura.description

* Update bundle_pl.properties

* Now better?

* Update bundle_pl.properties

* Better names

* Update bundle_pl.properties

* bullet.lightning

* mods.browser

* Badania -> Zbadaj

* Final statuses names (I think)

* Ready to merge

* Tutorial (as in #5206)

* Research

* Final changes
2021-07-28 10:45:49 -04:00
Catchears
2f71a4092f german v7 update (#5631) 2021-07-28 10:45:15 -04:00
VizardAlpha
a97573c5a9 Updates bundle_fr.properties (#5611)
* Updates bundle_fr.properties

Add and translate.
Commits on Jul 13, 2021
Commits on Jul 17, 2021 
Commits on Jul 18, 2021

* Minor. Correcting translation errors

* Add commit

* Add commit

* Add new commit

Translation not finish;
unit.oxynoe.description = Fires structure-repairing streams of flame at nearby enemies. Targets nearby enemy projectiles with a point defense turret.

* Translation finish

* Added hint & tooltip for derelict structures

* Correction of an error

hint.placeTurret = Placez des \fuf861 -> hint.placeTurret = Placez des \uf861

* Fixed #5645

servers.local.steam = Open Games & Serveurs Locaux 

Not finish

* Removed flow rate option
2021-07-28 10:45:02 -04:00
Sharlotte
108baa467d Update bundle_ko.properties (#5604)
* Update bundle_ko.properties

* Update bundle_ko.properties

* Update bundle_ko.properties

* halha

* Update bundle_ko.properties
2021-07-28 10:44:44 -04:00
JrTRinny
193015f1cd update bundle_th.properties (#5591)
* separated from `#5491`

* follow latest changes

like settings tooltips, large launch pad removal and clean up team PvP

* follow latest changes

* descriptions for new content

* line spacings and edit errors

* derelict tooltips

* open games

* remove resource flow rate
2021-07-28 10:44:35 -04:00
Anuken
b64432dafd Allow placing blocks with 0 requirements of an item 2021-07-28 08:38:45 -04:00
buthed010203
d66bb3a539 Better Plan Skipping 2: Electric Boogaloo (#5659)
Fixing a problem that I created. Just allows for plan switching when items are low when the player isnt in range of the building they were previously building.
Before: ![](https://aethex.is-a.fail/55tN9oFIC.png)
After: ![](https://extremely.questionable.link/55tNBlX8h.png)
2021-07-27 20:20:27 -04:00
Anuken
5ca5025fb1 Final core launch animation / Added option to skip core animations 2021-07-27 19:02:04 -04:00
Anuken
497a68e792 Merge remote-tracking branch 'origin/master' 2021-07-27 17:43:19 -04:00
Anuken
737fa4fa69 WIP launch animation progress 2021-07-27 17:43:12 -04:00
Volas171
3d3e33912e Mindustry Reborn CAMS (update servers_v7.json) (#5651)
* CAMS

* space
2021-07-27 17:09:50 -04:00
Sunny Kim
235fee091e keep v6 mod compatibility (#5655) 2021-07-27 17:08:29 -04:00
Anuken
00e3a59463 Land animation progress / IntelliJ android plugin hack 2021-07-27 16:26:13 -04:00
Anuken
269c48b65b AmmoType refactoring 2021-07-27 12:42:50 -04:00
Anuken
adbe55b0db Minor cloud bugfixes / Removed flow rate option 2021-07-27 09:08:09 -04:00
Anuken
f5222674ff Unused sprite cleanup 2021-07-26 19:54:22 -04:00
Anuken
c19a7e8452 New core landing animation 2021-07-26 19:29:14 -04:00
Anuken
aab79a90fb Fixed #5648 2021-07-25 20:55:59 -04:00
Anuken
f3b6f0a29b Fixed #5647 2021-07-25 20:17:18 -04:00
Anuken
d1fb436d6d Further bridge cleanup 2021-07-25 19:55:07 -04:00
Anuken
1734d02291 Bridge code cleanup 2021-07-25 19:21:13 -04:00
Anuken
f8c7739d5a Removed unitModifier flag 2021-07-25 17:17:07 -04:00
Anuken
7a1f332731 Ammo system redesign 2021-07-25 17:15:39 -04:00
Anuken
9cd19c0470 Fixed generator time not saving / 128 compat break 2021-07-25 14:35:56 -04:00
Anuken
c9ca08ff1c Merge remote-tracking branch 'origin/master' 2021-07-25 12:04:52 -04:00
Anuken
c14532ecae Fixed #5645 2021-07-25 12:04:17 -04:00
EnderquakeYT
b66cc8d8d7 Fixed stuff and added translation (#5440)
Fixed wave.enemy and added a translation for stat.charge
2021-07-25 09:08:16 -04:00
Anuken
b6ed5fbd6f Disable keyboard option on iOS 2021-07-25 08:41:06 -04:00
Anuken
2fec2156f6 Fixed #5642 2021-07-24 23:14:28 -04:00
Anuken
35b3231b84 Merge remote-tracking branch 'origin/master' 2021-07-24 21:10:46 -04:00
Anuken
f77c32cbb2 New flying unit targeting system 2021-07-24 21:10:39 -04:00
MEEP of Faith
7ec5aa28b3 Include time in status effect draw (#5640) 2021-07-24 20:10:41 -04:00
Anuken
373d004752 Merge remote-tracking branch 'origin/master' 2021-07-24 12:48:29 -04:00
Anuken
0ee137fe05 Added hint & tooltip for derelict structures 2021-07-24 12:48:25 -04:00
buthed010203
9c5d75c439 Typo Fix (#5639)
do
2021-07-24 10:41:01 -04:00
Anuken
adbfcdf16a Reverted vault/container health buff due to "damaged" appearance in saves 2021-07-24 09:14:38 -04:00
Anuken
0716ecad55 Merge remote-tracking branch 'origin/master' 2021-07-24 08:44:47 -04:00
Anuken
9160ee546c Allow derelict block pickup / Fixed derelict blocks being targeted 2021-07-24 08:44:43 -04:00
SoMall-dumpling
7897d2858c Update bundle_zh_CN.properties (#5530)
* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Create bundle_zh_CN.properties

* Create bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

* Update bundle_zh_CN.properties

Updates the latest Navy Support Units description.

* Update bundle_zh_CN.properties

Perfectly matches.
2021-07-24 08:40:23 -04:00
Anuken
b88364ab48 Fixed #5638 2021-07-24 08:36:20 -04:00
Anuken
7727da40b4 Merge remote-tracking branch 'origin/master' 2021-07-23 19:40:08 -04:00
Anuken
17e68f7a93 Fixed additive reconstructor center sprite 2021-07-23 19:39:52 -04:00
Anuken
120aa7c12a Cleanup 2021-07-23 17:56:13 -04:00
buthed010203
53214f0ddc Enable mining of sand when double click to mine is enabled (#4788)
* Sand mineable with double click to mine enabled

Since the only reason sand is un-mineable in the first place is because accidentally mining it is annoying, it should be enabled for double click to mine.

* only show sand as mineable when double click mine is enabled

Co-authored-by: Anuken <arnukren@gmail.com>
2021-07-23 15:51:26 -04:00
Anuken
d89a1fac70 Update pull_request_template.md 2021-07-23 15:50:09 -04:00
Semetrix
0c00000910 Add a second Hungarian server (#5636) 2021-07-23 15:49:42 -04:00
buthed010203
f4f46eb924 Better plan skipping (#5634)
This prevents the plans being skipped when there is a large number of items entering the core yet the core is still starved of that item.
2021-07-23 13:45:48 -04:00
Anuken
b873adf5fc docs 2021-07-23 10:25:12 -04:00
Anuken
72fb66e5b2 Anuken/Mindustry-Suggestions/issues/2730 2021-07-22 11:21:23 -04:00
Anuken
af691c980d Merge remote-tracking branch 'origin/master' 2021-07-21 21:03:30 -04:00
Anuken
b3be906e28 Removed MendProjector phase coloration 2021-07-21 21:03:26 -04:00
buthed010203
1c22e2ed28 Update StatValues.java (#5629)
Why is this number 0? The default amount should be 1, the timeperiod is already set to 0 everywhere anyways.
2021-07-21 15:50:35 -04:00
Anuken
95fd073432 Merge remote-tracking branch 'origin/master' 2021-07-21 09:02:13 -04:00
Anuken
fcb9ebb8c3 Thermal generator effect tweaks 2021-07-21 09:02:08 -04:00
VizardAlpha
4ab063679b Update short_description.txt for android (#5401) 2021-07-21 08:37:14 -04:00
Anuken
db13bffad6 Descriptions for new content 2021-07-21 07:58:50 -04:00
Anuken
b719a0cd35 Merge remote-tracking branch 'origin/master' 2021-07-20 19:56:59 -04:00
Anuken
d506685bba Stacked map editor brush slider 2021-07-20 19:56:55 -04:00
Anuken
8cf2068a70 Create pull_request_template.md 2021-07-20 19:15:50 -04:00
Anuken
14e4203ee7 #4912 2021-07-20 17:59:47 -04:00
Anuken
447562b2f1 Turret accurateDelay parameter 2021-07-20 17:55:00 -04:00
Anuken
02c03e9c67 Cleanup & minor layout bugfixes 2021-07-20 17:38:09 -04:00
Anuken
f8ddf952ca Improved coal centrifuge update effect 2021-07-20 15:22:57 -04:00
Anuken
8436599c79 #5050 2021-07-20 14:12:48 -04:00
Anuken
4c51519b8a #4886 2021-07-20 13:59:19 -04:00
Anuken
0f199fa4b4 Partial impl of #2923 2021-07-20 13:17:18 -04:00
Anuken
b28aff4a7b Sector items display fixes 2021-07-20 12:05:10 -04:00
Anuken
ba227d64fb #5224 2021-07-20 11:42:11 -04:00
MEEP of Faith
7656aedb6b Drawf.Laser with different ends (#5301)
* Laser with different ends

* Allow usage of different ended TractorBeamTurret lasers

* oops

* aaaa

* too. many. commits.

* Remove rotation

* I shouldn't be allowed to edit from the browser.
2021-07-20 11:22:17 -04:00
Phinner
6e967dce70 Add xpdustry.fr to server_v6.json (#5625)
A server for my dear french Mindustry players, dedicated for plugin testing and survival maps.
2021-07-20 11:19:03 -04:00
Patrick 'Quezler' Mounier
232415f1d7 Move capping code from armored to normal conduits (#4979) 2021-07-20 11:05:35 -04:00
Anuken
b2ed0ee884 #4440 2021-07-20 10:56:58 -04:00
Anuken
6ffc8ba3c5 #4874 2021-07-20 10:45:15 -04:00
Anuken
82f0d6a542 Fixed core capture crash 2021-07-20 10:28:58 -04:00
Anuken
40e0303786 Merge remote-tracking branch 'origin/master' 2021-07-20 10:20:11 -04:00
Anuken
0e3bb40eb4 More mobile input targeting fixes 2021-07-20 10:20:06 -04:00
notrealn
730cb14f6a Fix turret shooting priority when there are multiple teams (#5299) 2021-07-20 09:00:19 -04:00
Anuken
c18ab184b7 Merge remote-tracking branch 'origin/master' 2021-07-20 08:49:10 -04:00
Anuken
b85cbe515e Fixed #5621 2021-07-20 08:49:02 -04:00
buthed010203
b58f202e9e Allow hiding of steam servers (#5618)
* Allow hiding of steam servers

Theres no way to hide them while keeping them public in the steam api so instead this jank is needed. This wont do anything on a vanilla install but will allow people hosting headless steam servers to hide them if they only use the server to verify if players are on steam or not.

* Hide only when hidden = true
2021-07-19 20:57:36 -04:00
Sunny Kim
fde23ceea0 SpinSprite DrawRotator for json mods (#5619) 2021-07-19 19:11:53 -04:00
buthed010203
aab2437c4c Dont disconnect when connecting to steam servers on non steam (#5617)
This will allow sending steam players to steam servers while completely ignoring non steam ones.
2021-07-19 18:42:03 -04:00
Ilya246
b7f7be839d Update .pl servers (#5599)
* Update .pl servers

* Update servers_v7.json
2021-07-19 18:34:14 -04:00
Anuken
6b7a63aba5 Cleanup 2021-07-19 15:20:53 -04:00
Anuken
0c46d5088c Better laser/blast drill rotators 2021-07-19 14:11:07 -04:00
Anuken
254425d9ad Merge branch 'sk7725-cool-drills' 2021-07-19 09:00:54 -04:00
Anuken
c7ff20d47d Fracker + SolidPump spinner lighting 2021-07-19 09:00:35 -04:00
Anuken
1db5a9f3c2 Merge branch 'cool-drills' of git://github.com/sk7725/Mindustry into sk7725-cool-drills 2021-07-19 08:55:10 -04:00
Anuken
34cf8466d6 Added default value for mass driver bullet 2021-07-19 08:44:19 -04:00
Sunny Kim
8c20203084 formatting 2021-07-19 17:09:17 +09:00
Sunny Kim
a7ed7a71d5 drawSpinSprite 2021-07-19 16:40:57 +09:00
Sunny Kim
2583541c0f spinSprite 2021-07-19 16:36:58 +09:00
Anuken
1674b2dfd6 Fixed #5609 2021-07-18 16:31:13 -04:00
Anuken
96de7c8321 Merge remote-tracking branch 'origin/master' 2021-07-18 14:41:05 -04:00
Anuken
7879648090 Suppress invalid save meta errors 2021-07-18 14:40:59 -04:00
Darkness6030
5772f5e7da So now Mindurka => Darkdustry (#5608)
I've changed the server name cuz mindurka sounds strange
Now we are DarkDustry
2021-07-18 14:39:12 -04:00
Anuken
54db6bda85 Merge remote-tracking branch 'origin/master' 2021-07-18 12:49:02 -04:00
Anuken
4ffcf252b7 Fixed bullet heal percent being displayed as 0 when <1 2021-07-18 12:48:57 -04:00
Anuken
b3b44214e0 No need to run own server with so many alternatives 2021-07-18 12:45:26 -04:00
Anuken
89942416ac Core containers/vaults no longer explode violently 2021-07-18 12:12:04 -04:00
Anuken
974d3498c1 Settings tooltips 2021-07-18 11:11:28 -04:00
Mina Her
1804111f88 Add spacing between name and value in slider (#5601) 2021-07-18 09:15:04 -04:00
Anuken
5b2dc021a6 Prevent concurrent modification in BlockIndexer#eachBlock 2021-07-18 08:56:48 -04:00
Anuken
37d7b3d7fb Fixed screen shake moving camera pan position 2021-07-17 20:45:53 -04:00
Anuken
33d4ab9edb Fixed block plans not being deleted locally 2021-07-17 19:17:47 -04:00
Anuken
f7f2b3438c Use short filter names in JSON 2021-07-17 16:46:35 -04:00
Anuken
0ed7934df0 arc 2021-07-17 15:33:19 -04:00
Anuken
55920e6242 Cleanup 2021-07-17 15:18:51 -04:00
Anuken
820920e5f9 Redundant cast cleanup 2021-07-17 09:30:31 -04:00
Anuken
8e21c627a7 Improved Serpulo sector path generation 2021-07-17 09:22:02 -04:00
Anuken
6973ed7d55 PvP defeated team cleanup 2021-07-17 08:52:24 -04:00
Anuken
0980495a28 (commented) support for Call server-to-client sounds 2021-07-16 15:39:03 -04:00
Anuken
5c6b659ce3 Possible rare crash fix 2021-07-16 12:59:50 -04:00
Anuken
35e263223d Merge remote-tracking branch 'origin/master' 2021-07-16 12:37:36 -04:00
Anuken
07ba378095 Hide construct/legacy blocks 2021-07-16 12:37:31 -04:00
buthed010203
6e10f86546 Display item rates on reconstructors (#5581)
Display the rates here because why not
![]https://mee6.is-terrible.com/54feDAY76.png
2021-07-16 12:21:58 -04:00
RebornTrack970
fc6ee11ffe Some more servers are back (#5594)
* Servers Back

* Update servers_v7.json
2021-07-16 12:19:56 -04:00
Anuken
84cd87370f Merge remote-tracking branch 'origin/master' 2021-07-16 10:06:07 -04:00
Anuken
822fe9ab7a Fixed inaccessible gaps in Serpulo generator 2021-07-16 10:05:59 -04:00
Sharlotte
57b22a9cab Update bundle_ko.properties (#5590) 2021-07-16 08:56:23 -04:00
Anuken
278c4f17e5 Why was this class even created 2021-07-15 20:19:51 -04:00
Anuken
b0d4607798 Fixed #5588 2021-07-15 20:08:05 -04:00
Anuken
3f7dc66ac0 Fixed #5587 2021-07-15 14:55:32 -04:00
Anuken
1c2b1fb757 System property cleanup 2021-07-15 11:27:21 -04:00
Anuken
eb31483a15 Fixed #5585 2021-07-15 10:18:08 -04:00
Anuken
8fb7cdaba6 Fixed #5584 2021-07-15 10:10:36 -04:00
Anuken
61d81046ae Fixed #5583 2021-07-15 08:46:56 -04:00
Anuken
0c3d7e09e0 Don't crash when font glyphs are missing 2021-07-14 21:40:47 -04:00
Anuken
a9f9ddcacf AnnotationProxyMaker workaround cleanup 2021-07-14 19:52:43 -04:00
Anuken
a559c3581e Fixed continuous weapon sounds / Improved naval support audio 2021-07-14 18:46:51 -04:00
Anuken
dd5389c738 New sound for rock/plant breaking 2021-07-14 17:22:21 -04:00
Anuken
ac25e17286 Unused property cleanup 2021-07-14 16:06:03 -04:00
Anuken
9de4c89e76 Fixed #5582 2021-07-14 15:55:40 -04:00
Anuken
2f6846d8c3 Conveyor tweaks 2021-07-14 15:12:00 -04:00
Anuken
c3e60531c4 Merge remote-tracking branch 'origin/master' 2021-07-14 09:28:05 -04:00
Anuken
44aff82a6c "Fixed" #5580 2021-07-14 09:27:59 -04:00
alex
7619e7643d Update v6 servers for alex servers (#5576) 2021-07-14 09:23:53 -04:00
RebornTrack970
353ef05b93 OmegaHub is back (kinda) (#5578) 2021-07-14 09:23:41 -04:00
Anuken
2801e4ed80 Fixed #5579 2021-07-14 09:14:19 -04:00
Anuken
173dd0a90e Fixed #5577 2021-07-14 09:07:17 -04:00
Anuken
e5412aeb1b Inventory constant cleanup 2021-07-13 17:38:42 -04:00
Anuken
0eec955a3d #5563 2021-07-13 10:42:00 -04:00
Anuken
47038ac06d Longer mod test timeout 2021-07-13 10:33:44 -04:00
Anuken
8041c305ad Misc bugfixes 2021-07-13 10:28:35 -04:00
Anuken
e0d249898e Fixed mod dialog width... again. 2021-07-12 16:18:29 -04:00
Anuken
a1f5982a85 Fixed loading bar stroke not scaling correctly 2021-07-12 15:36:43 -04:00
Anuken
3c688d3fec arc 2021-07-12 15:35:08 -04:00
Anuken
889a9a7a05 Merge remote-tracking branch 'origin/master' 2021-07-12 15:06:46 -04:00
Anuken
ce6c39b7aa Reorganized settings 2021-07-12 15:06:41 -04:00
VizardAlpha
2a1fdded72 bundle_fr.properties Updates (#5558)
* bundle_fr.properties Updates

Add new commits

* Update Bundle
2021-07-12 14:49:24 -04:00
Angel-24
2b757fe107 Update bundle_es.properties (#5526)
Updated Spanish trasnlations to the 1 - Jul - 2021 changes in "bundle.properties".
2021-07-12 14:47:17 -04:00
Sharlotte
a8d78453ff Update bundle_ko.properties (#5527) 2021-07-12 14:47:05 -04:00
Antsiferov Andrew
2b88396aac [Bundle][RU] Update (#5531)
* double newline fix

hint.guardian

* 13 changed lines

mod.enabled
mod.disabled
status.burning.name
status.freezing.name
status.wet.name
status.melting.name
status.sapped.name
status.spore-slowed.name
status.tarred.name
status.overclock.name
status.shocked.name
status.blasted.name
status.unmoving.name

* yon't

* x'nt

* Update bundle_ru.properties

* 1 new, 1 changed

New:
stat.healing

Changed:
bullet.healpercent

* Inverse trig logic functions

See 00ca247d0f

* new v7 stuff, long list

New:
schematic.tags
schematic.edittags
schematic.addtag
schematic.texttag
schematic.icontag
schematic.renametag
schematic.tagdelconfirm
schematic.tagexists
tps
guardian
sector.changeicon
status.electrified.name
unsupported.environment
stat.repairspeed
ability.energyfield
bar.strength
rules.corecapture
block.rhyolite.name
block.repair-turret.name
hint.blockInfo
lenum.config
laccess.progress
unit.retusa.name
unit.oxynoe.name
unit.cyerce.name
unit.aegires.name
unit.navanax.name
block.duct.name
block.duct-router.name
block.duct-bridge.name
block.payload-propulsion-tower.name
block.payload-void.name
block.payload-source.name
filter.option.rotate

Changed:
stat.repairtime
bullet.pierce
team.crux.name
team.sharded.name
item.titanium.description

Deleted:
quit.confirm.tutorial
boss.health
team.orange.name
lenum.configure

* Update bundle_ru.properties

* 1 line changed

unit.oxynoe.name

* роутер-marshrutizator

ibglish

* 2 lines changed

block.surge-wall.name
block.surge-wall-large.name

* 3 new, 2 changed

New:
stat.showinmap
block.metal-floor-4.name
block.metal-floor-5.name

Changed:
stat.affinities
stat.opposites

* undone the dumb

* 1 new line

filter.option.replacement

* 1 new, 1 changed

New:
rules.polygoncoreprotection

Changed:
hint.respawn

* Fixed outdated minke description

unit.minke.description: "зажигательными" -> "артиллерийскими"

* 3 new lines

unit.tilessecond (ec59cb602c)
lst.wait, lst.lookup (0949852758)

* typo

еденицы -> единицы

Co-authored-by: Vanguard <55051135+XEN0PHIL@users.noreply.github.com>
2021-07-12 14:46:46 -04:00
Antsiferov Andrew
f856ad16ba Fixed a typo (#5532) 2021-07-12 14:46:36 -04:00
Anuken
f36d47c13f Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-07-12 12:36:48 -04:00
Anuken
4f98bc95a2 Better sliders 2021-07-12 12:36:45 -04:00
Arik
ec3dc867c1 Always increment launchpad counter (#5569) 2021-07-12 12:33:17 -04:00
Antsiferov Andrew
7fea7e91aa Correct comment (#5568)
This is `UI.packer`, not `Fonts.packer`.
2021-07-12 09:23:36 -04:00
TranquillyUnpleasant
1ea545ccb2 fix (#5567) 2021-07-12 09:23:20 -04:00
buthed010203
e5e2d0ab03 Fix payload driver crash (#5565)
Similar to the mass driver one, https://i-dont.go-outsi.de/53ZwBY_YS.png
2021-07-11 14:39:33 -04:00
Anuken
c94e7aa031 Mod bugfixes 2021-07-11 12:03:10 -04:00
Anuken
5d1af6fb76 Android release debuggable; fixes default interfaces 2021-07-11 11:54:07 -04:00
Anuken
3b400ac3f3 just in case 2021-07-11 10:15:53 -04:00
Anuken
308176ee81 Revert theme removal / Android jar import bugfixes 2021-07-11 10:13:34 -04:00
Anuken
8a84ebb58d Fixed server IO errors / Fixed kick IP tracing 2021-07-10 22:18:58 -04:00
Anuken
158d11d3ba arc 2021-07-10 18:54:22 -04:00
Anuken
beec1eeaba Fixed #5561 2021-07-10 12:32:29 -04:00
Anuken
63a1f4e2de Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-07-10 11:33:09 -04:00
Anuken
7d845951e9 Fixed #5560 2021-07-10 11:33:05 -04:00
Anuken
48d9ea6aa1 Deleted all v6 servers with incorrect versions 2021-07-10 08:39:32 -04:00
RebornTrack970
ae83e604ba Added Rush V7 (#5557)
* Added Rush V7

Hosted by Red.

* Fixed

* Update servers_v7.json
2021-07-10 08:32:57 -04:00
키에르
c156968be6 update kr server list & Fix json format (#5559) 2021-07-10 08:32:05 -04:00
Anuken
effe2312e0 no 2021-07-09 16:51:12 -04:00
Anuken
1c389dc7f8 Fixed #5553 2021-07-08 13:42:30 -04:00
Anuken
972ca71978 Team-colored force projectors 2021-07-08 12:14:20 -04:00
Anuken
fb35adb494 Added AttributeCrafter env calculation 2021-07-08 11:06:46 -04:00
Anuken
22813b71ff Ignore all future changelogs 2021-07-08 09:47:01 -04:00
Anuken
02243d1f5c Merge remote-tracking branch 'origin/master' 2021-07-08 09:46:21 -04:00
Anuken
e2b2e8fb4e Deleted all Android changelogs - see below for details
Android changelogs are practically use due to their character limit; GitHub changelogs should be used instead. Translations always arrive a few days after an update, so they are seldom read.
2021-07-08 09:46:10 -04:00
Anuken
390ceb8887 FileChooser cleanup 2021-07-08 09:33:44 -04:00
Patrick 'Quezler' Mounier
2167a3d7fe Remove double space (#5551) 2021-07-08 09:32:53 -04:00
Anuken
6f2033a455 arc 2021-07-07 19:28:34 -04:00
Anuken
2ae7863cae arc.util.Http migration 2021-07-07 19:00:32 -04:00
Anuken
02b42c51da Fixed #5549 2021-07-07 13:38:39 -04:00
Anuken
0ba26b22c0 Fixed #5548 2021-07-06 16:32:42 -04:00
Anuken
017552f573 Fixed crash caused by invalid NinePatch sprites 2021-07-06 15:23:37 -04:00
Anuken
01a3c772e7 Sync unit velocity / Sync separator seed / 127.x Compat break 2021-07-06 11:41:05 -04:00
Anuken
5693605f31 Correct Bullet#scaleVelocity documentation 2021-07-06 11:10:11 -04:00
Anuken
481881aa8b Prop cleanup / Optimization of large skybox PNG 2021-07-05 21:18:40 -04:00
Anuken
544660c4bb Fixed #5545 2021-07-05 15:11:53 -04:00
Anuken
3d8d84177b Map listing improvements 2021-07-04 21:30:47 -04:00
TranquillyUnpleasant
789e354400 Server qol (#5534) 2021-07-04 21:18:41 -04:00
TranquillyUnpleasant
4fdb817d4a move domains (#5542) 2021-07-04 21:16:47 -04:00
Anuken
4055361501 Merge remote-tracking branch 'origin/master' 2021-07-04 19:14:16 -04:00
Anuken
416007593f convert_sounds.sh is no longer needed 2021-07-04 19:14:11 -04:00
Anuken
4ed9f10c1b Cleanup 2021-07-04 09:51:39 -04:00
GaviTSRA
178cb12f85 Change ip of TSR Server (#5539)
* Change ip of TSR Server

* Ip changed again - should be final
2021-07-04 09:28:40 -04:00
Vajda Simon
c0582cd527 Update servers_v6.json (#5538) 2021-07-04 09:28:25 -04:00
Anuken
39e47db8c7 Merge remote-tracking branch 'origin/master' 2021-07-03 23:21:35 -04:00
Anuken
ed4156850b Cached ping executor 2021-07-03 23:21:29 -04:00
Anuken
5364522a5a Update deployment.yml 2021-07-03 21:42:19 -04:00
Anuken
3382d56590 Fixed tests 2021-07-03 21:17:38 -04:00
Anuken
1e30c46322 Merge remote-tracking branch 'origin/master' 2021-07-03 20:27:09 -04:00
Anuken
3eb72d6d86 Updated to new Arc net 2021-07-03 20:27:04 -04:00
KotMilkMeoW
2d01c41159 Update servers_v7.json (#5533)
* Update servers_v7.json

* Fix
2021-07-03 10:53:19 -04:00
Anuken
0b3dddcc9e Minor reformatting 2021-07-01 17:06:35 -04:00
Anuken
bc7085826e Re-generated ClassMap 2021-07-01 11:44:29 -04:00
Anuken
f78ee66049 Deployment script fixes 2021-07-01 11:36:51 -04:00
Anuken
fecaf768ab Allow 3x3 blocks on payload conveyors 2021-07-01 11:24:23 -04:00
Anuken
ec59cb602c Crash fix / tilesSecond speed unit 2021-07-01 11:17:42 -04:00
Anuken
2ea1671739 Fixed #5519 2021-07-01 10:22:28 -04:00
Anuken
f7e4936445 Merge remote-tracking branch 'origin/master' 2021-06-30 22:22:57 -04:00
Anuken
d37e8c2e75 why 2021-06-30 22:22:53 -04:00
Sahrea
fb8dcc5f86 Update servers_v6.json (#5518)
A server for German players. See history in #deutsch on the io Discord. https://discord.com/channels/391020510269669376/464914764066324500/859754657134936134
2021-06-30 22:22:16 -04:00
Anuken
4c4c361093 #5517 2021-06-30 22:18:57 -04:00
Anuken
9c29706297 Only draw status for player's team blocks 2021-06-30 19:09:48 -04:00
RebornTrack970
4dcac119d8 Updated TR Bundle to the latest V7 prealpha (#5505)
* Updated TR Bundle to the latest V7 prealpha

* Update bundle_tr.properties
2021-06-30 13:24:52 -04:00
Anuken
f9dfd5b0b5 Commented out separator revision until 128 release 2021-06-30 13:08:19 -04:00
Patrick 'Quezler' Mounier
10dcd9cb2d outlaw separator desycning (#5516)
* Seed separators

* Sync separators

* Seed from tile position
2021-06-30 12:59:09 -04:00
Anuken
c80e800ac9 Merge remote-tracking branch 'origin/master' 2021-06-30 10:49:29 -04:00
Anuken
eafcbf0914 Minor unit balancing 2021-06-30 10:28:05 -04:00
ulwepo
4f561a3875 Update servers_v6.json (#5515)
Sakura is a Japanese server.
I add attack mode.
Thank you.
2021-06-30 08:34:18 -04:00
Thomas Widyantoko
5cc92506c9 [ID] Updates Indonesian V7 translation (#5513)
* Indonesian bundle update

lenum.controller description and Tar Fields map

* translation bundle sync

* Indonesian translation standardization

* healing status effect

* Indonesian translation for V7

bit confused on line 1611

* [ID] WIP polygonal core protection

* [ID] Updates Indonesian V7 translation

Logic wait & content look up instructions
2021-06-30 08:34:08 -04:00
Arik
2c8eb1e5b8 Conveyor Upgrade End Rotation (#5512) 2021-06-30 08:29:35 -04:00
Anuken
6c18634b0d Minor logic unit rotation fix / Core capture unit derelict tareting 2021-06-29 16:26:02 -04:00
Anuken
c7bd9dd0fa Merge remote-tracking branch 'origin/master' 2021-06-29 12:21:56 -04:00
Anuken
d8ec231a5e Fixed #5508 2021-06-29 12:21:42 -04:00
Arik
5c803594fb Fix WaveGraph Lineup (#5503) 2021-06-29 09:03:56 -04:00
Minxyzgo
cececa190a Update WaterMoveComp.java (#5504) 2021-06-29 08:54:10 -04:00
OSP
38a3f1839e Change ip XCore, and add new server (#5502) 2021-06-28 18:58:39 -04:00
Anuken
2eb57ab680 Minor repair turret nerf 2021-06-28 18:57:13 -04:00
Anuken
f6f1ddb826 Fixed non-existent fire being targeted 2021-06-28 13:30:54 -04:00
Anuken
fcdbd4b117 Fixed liquid turrets not targeting closest fire 2021-06-28 11:35:46 -04:00
Anuken
a5c44e7998 #5055 2021-06-28 10:50:04 -04:00
Anuken
8afea88023 Fixed #5500 2021-06-28 10:15:54 -04:00
Anuken
75443e4dfc Clear commanding units on sync 2021-06-28 09:56:49 -04:00
Anuken
fbfb491dca Merge remote-tracking branch 'origin/master' 2021-06-28 09:25:48 -04:00
Anuken
082c17da85 Fixed #5498 2021-06-28 09:25:38 -04:00
thedimas3007
88ebf4f9db Updated (#5497) 2021-06-28 09:12:25 -04:00
OSP
18825b1697 Change IP XCore (#5494)
the old hosting is broken.
2021-06-27 18:47:11 -04:00
BasedUser
551b11877d CRAPPY DDNS IS GONE 🦀🦀🦀 (#5495) 2021-06-27 18:47:01 -04:00
Anuken
0bd1b4eedc Skip loading team regions for teams without palettes 2021-06-27 12:28:40 -04:00
Anuken
d401d7838c Gradle 7.1 2021-06-27 11:10:07 -04:00
Anuken
8b2e273d41 Merge remote-tracking branch 'origin/master' 2021-06-27 09:34:59 -04:00
Anuken
bdff6f9560 Repair turret nerf 2021-06-27 09:34:54 -04:00
Fatonndev
bb500a53ef Add attack v7 server (#5490) 2021-06-27 09:13:22 -04:00
Volas171
7ff0811764 retire mindustry reborn from v6 (#5487) 2021-06-27 09:13:03 -04:00
Anuken
36b49b6d8b Fixed #5488 / Fixed #5489 2021-06-27 09:12:35 -04:00
Anuken
e8edfb1170 Merge remote-tracking branch 'origin/master' 2021-06-26 20:55:59 -04:00
Anuken
bc6fcbc86d Fixed more flaky tests 2021-06-26 20:55:52 -04:00
OSP
8853ca303e Add XCore server to the v7 global list (#5486)
My server, 1 mode - the siege.There will be more servers in the future.
2021-06-26 15:46:19 -04:00
L0615T1C5-216AC-9437
914a6fc89b Add Chaotic Neutral to the V7 Server List (#5484) 2021-06-26 14:07:02 -04:00
UnCaughT
028be85468 Add HexPvP to V7 (#5483) 2021-06-26 14:06:56 -04:00
Darkness6030
5ffc285e1c Add mindurka to V7 list (#5471)
* Add mindurka to V7 list

* Update servers_v7.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

* Update servers_v7.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
Co-authored-by: Anuken <arnukren@gmail.com>
2021-06-26 12:29:56 -04:00
Anuken
604e6f8c47 Catch NoClassDefFoundErrors on ClientLoad 2021-06-26 11:11:27 -04:00
Anuken
4ac4f10ea0 Log mismatch errors for net buffers 2021-06-26 11:08:45 -04:00
Anuken
4c07733857 Fixed #5481 2021-06-26 11:04:03 -04:00
Anuken
7dc0f4dbc5 Merge remote-tracking branch 'origin/master' 2021-06-26 10:12:04 -04:00
Anuken
22f64fa2a5 Revert naval balance changes for now 2021-06-26 10:11:59 -04:00
KotMilkMeoW
5b0f1b5c03 Server upgrade to v7 (#5480) 2021-06-26 09:54:18 -04:00
Anuken
c6e0292d03 Fixed clientside physics jitter 2021-06-26 09:52:03 -04:00
Anuken
17eee61a93 Fixed #5478 2021-06-26 09:34:25 -04:00
Anuken
3817b159cf Reduced jittery interpolation 2021-06-26 00:19:23 -04:00
Anuken
331cf2e269 arc 2021-06-25 22:58:30 -04:00
Anuken
96622848d9 Hide outdated lobbies on Steam 2021-06-25 19:49:53 -04:00
Anuken
bcdc8867e6 Merge remote-tracking branch 'origin/master' 2021-06-25 19:36:07 -04:00
Anuken
eaeb67b91f Fixed #5474 2021-06-25 19:35:34 -04:00
Catchears
ebd444cc5f final v7 german translation (#5473) 2021-06-25 16:57:20 -04:00
L0615T1C5-216AC-9437
ff1ab9dd42 Add Chaotic Neutral Survival to BE Server List (#5435)
Co-authored-by: Anuken <arnukren@gmail.com>
2021-06-25 16:22:11 -04:00
Ilya246
7e2c830f9c Add .pl to 7.0 serverlist (#5466)
* Add .pl to 7.0 serverlist

.pl will move to 7.0 once b127 is out
Somka currently can't make a PR by himself so i asked him whether i should and, after a positive answer, did it for him

* Update servers_v7.json
2021-06-25 16:01:38 -04:00
Volas171
0cc2214951 Add Mindustry Reborn to V7 Alpha list (#5470)
* v7

* be removal

* formatting

Co-authored-by: Anuken <arnukren@gmail.com>
2021-06-25 14:41:24 -04:00
Anuken
47443d5ae7 Merge remote-tracking branch 'origin/master' 2021-06-25 14:37:36 -04:00
Anuken
cd2c605036 Suppress certain mod errors on client load 2021-06-25 14:37:32 -04:00
RebornTrack970
847e46d270 Add Beta 2r2t to V7 (#5468)
* Add Beta 2r2t to V7

Other Omega Servers will likely get updated to V7 too, for now, only 2r2t has a Beta.

* Update servers_v7.json

* Update servers_v7.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

* Update servers_be.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2021-06-25 14:26:54 -04:00
Anuken
3d6cfcafd0 Don't assign players to derelict 2021-06-25 14:11:36 -04:00
Patrick 'Quezler' Mounier
cb2ed1c549 Update filenames within the server json test (#5469) 2021-06-25 13:42:47 -04:00
Anuken
d86d2dbdb9 Delete servers.json 2021-06-25 13:35:15 -04:00
RebornTrack970
0546d6cf55 TR Bundle Change: Bug Fix (#5404)
* TR Bundle Change: Yakalandı -> Elegeçirldi

* Bug Fix
2021-06-25 13:30:08 -04:00
Jaekwon Park
9b3a8c201f Add to new Korea Server (#5397)
* Add to new Korea Server
2021-06-25 13:09:11 -04:00
彭瑞暄
1bf3345b2f Update bundle_zh_TW.properties (#5364)
translation for new block and naval unit names
2021-06-25 13:08:44 -04:00
Antsiferov Andrew
a8dd868df2 [Bundle][RU] Update (#5354)
* double newline fix

hint.guardian

* 13 changed lines

mod.enabled
mod.disabled
status.burning.name
status.freezing.name
status.wet.name
status.melting.name
status.sapped.name
status.spore-slowed.name
status.tarred.name
status.overclock.name
status.shocked.name
status.blasted.name
status.unmoving.name

* yon't

* x'nt

* Update bundle_ru.properties

* 1 new, 1 changed

New:
stat.healing

Changed:
bullet.healpercent

* Inverse trig logic functions

See 00ca247d0f

* new v7 stuff, long list

New:
schematic.tags
schematic.edittags
schematic.addtag
schematic.texttag
schematic.icontag
schematic.renametag
schematic.tagdelconfirm
schematic.tagexists
tps
guardian
sector.changeicon
status.electrified.name
unsupported.environment
stat.repairspeed
ability.energyfield
bar.strength
rules.corecapture
block.rhyolite.name
block.repair-turret.name
hint.blockInfo
lenum.config
laccess.progress
unit.retusa.name
unit.oxynoe.name
unit.cyerce.name
unit.aegires.name
unit.navanax.name
block.duct.name
block.duct-router.name
block.duct-bridge.name
block.payload-propulsion-tower.name
block.payload-void.name
block.payload-source.name
filter.option.rotate

Changed:
stat.repairtime
bullet.pierce
team.crux.name
team.sharded.name
item.titanium.description

Deleted:
quit.confirm.tutorial
boss.health
team.orange.name
lenum.configure

* Update bundle_ru.properties

* 1 line changed

unit.oxynoe.name

* роутер-marshrutizator

ibglish

* 2 lines changed

block.surge-wall.name
block.surge-wall-large.name

* 3 new, 2 changed

New:
stat.showinmap
block.metal-floor-4.name
block.metal-floor-5.name

Changed:
stat.affinities
stat.opposites

* undone the dumb

* 1 new line

filter.option.replacement

* 1 new, 1 changed

New:
rules.polygoncoreprotection

Changed:
hint.respawn

Co-authored-by: Vanguard <55051135+XEN0PHIL@users.noreply.github.com>
2021-06-25 13:00:44 -04:00
VizardAlpha
6dc6c2ebba Update full_description.txt for Android (#5399)
* Update full_description.txt for Android

Update full_description.txt for Android

* Update full_description.txt Android
2021-06-25 13:00:29 -04:00
Sharlotte
3b3abdf87e [KO] Update Latest Bleeding-Edge bundle (#5430)
* [KO] Update Latest Bleeding-Edge bundle

* Update bundle_ko.properties

* I wonder why sk didn't just edit file skself.

* typo

* ohno there is too many HIDDEN TYPO WHAT THE FUCK

* more typo

* new translated bundle. NOW IT'S DONE
2021-06-25 12:59:55 -04:00
YellOw139
e0e124ee57 [Bundle][RO] Update (#5431)
Changelog:

- New strings/changes up to commit 865ee952c9
- Typo fixes & various other improvements
2021-06-25 12:59:45 -04:00
Ngọc Lam
cfba83018e Update Vietnamese Translation for V7. (#5432)
* V7 translation update (Part 1)

* V7 translation update (Part 2)

* A lot of typo.
2021-06-25 12:59:36 -04:00
TRinny
79581edaa0 Update bundle_th.properties (#5319)
* Update bundle_th.properties

My first time here. someone requested in discord so I made this.
-overhaul the translation to V6
-fixed typos
-my mom complained me for staring at computer all day
-blocks and block descriptions unfinished; might make more commits

* Update bundle_th.properties

more fixes
replace tutorial with v6 hints (still unfinished)
more work than I thought, will make this a draft

* Update bundle_th.properties

Almost finish, missing only like... 100 lines

* Update bundle_th.properties

Finally finished! thank you, Anuke, for making this great game!

* Update bundle_th.properties

-Translation Clean-up
-Update the translation to . . . v7?
-If you don't mind I'll add myself to Translator list.

* Update contributors

Add myself to the translator list... If you (Anuke) don't mind.

* Update bundle_th.properties

More clean-up

* Update contributors

fixed conflicts

* Update contributor (again)

sorry, genNAowl

* Update bundle_th.properties

Another Clean-up

* Update bundle_th.properties

how many clean-up I have to add!? hope this is final.

* Update bundle_th.properties

13th commit. Minor clean-up

* Update bundle_th.properties

14th commit. Minor clean-up

* Update bundle_th.properties

Maybe final change.

* Update bundle_th.properties

The Perfect Edition.

* Update bundle_th.properties (maybe final)

Minor Tweaking #1. Final(?)
Imagine changing like 400+ lines in the first few commits, then changing only 10+ lines in the final commits.

* Update bundle_th.properties

imagine fixing 1 line of code.

* Update bundle_th.properties

Another 1-line fix. I'll fix like this until its complete for me or it got merged

* Update bundle_th.properties (to v7)

not really a clean-up, add more v7 things.

* Update bundle_th.properties

Clean-up a bit since naval support name is a bit weird.

* Update bundle_th.properties

simplified units/blocks descriptions. Also clean-up and tweaks.

* Update bundle_th.properties

Fixed description again, also make translation more natural and less like using google translate.

* Update contributors

Just don't wanna fix conflicts again and again when something got merge, may triggers someone (sorry...)

* Update bundle_th.properties

improved many things I missed in the test.
Add an experimental description, will be removed in the next commit (or added in if it success!)

* Update bundle_th.properties

Add scrap walls descriptions and fixed many things.

* Final. or not?

Fixed misspellings and updated description. Final (right? RIGHT?)

* Final

Add a details of mats. fixed thingies. Final, (right RIGHT?)

* Real Final. no further commit unless new lines.

1-line fix, now I'll wait for 'someone' to review my change. I'll NOT make any changes from here now unless major problem found or new updates from Anuke OR someone reviews (Please... review it)

* new lines

added new lines (and removed some too) also fixed some lines and added details to mats.

* new details to liquids

added details to liquids and also typical fixes.

* hotfix

ah yes, typo hotfix

* minor(?) fixes

minor(or major?) fixes to descriptions and make sense of things.

* add polygonal core protection

add polygonal core protection and fixes abilities to v7. also fixes moth => mod.

* minor fixes to descriptions

minor fixes to descriptions and also knowing what 'Bitwise' is.

* updated descriptions

change duplicated name and also change other description to make it better. also turned 'Low'gic to 'Lo'gic.

* Create bundle_th.properties

I missed these during tests.

* fix spacing

fix spacing and typos

* that sound bad

fixed some words

* fixes for v127

had a deep check to prepare for v127, also changed eclipse's name to something formidable

* Hotfix

now everything is perfect

* Hotfix

now everything is perfect
2021-06-25 12:59:07 -04:00
Thomas Widyantoko
0b7c9dc8b1 [ID] Indonesian translation for V7, Part 3 (#5426)
* Indonesian bundle update

lenum.controller description and Tar Fields map

* translation bundle sync

* Indonesian translation standardization

* healing status effect

* Indonesian translation for V7

bit confused on line 1611

* [ID] WIP polygonal core protection
2021-06-25 12:57:40 -04:00
VizardAlpha
665207b9b0 [FR] Updates bundle_fr.properties for V7 (#5345)
* Updates bundle_fr.properties

Additions of commits from May 28, 2021 to June 3, 2021.

Corrections and translations

* Update bundle_fr.properties

Commits on Jun 4, 2021 added

* Update bundle_fr.properties

Corrections translation.

* Update for V7

Update for V7

* Add new commit

* Add commits..

Experimental core-capture PvP map / Editor filter fixes

* Add commits.

Polygonal core (WIP)

* Minor Translation

Minor Translation
2021-06-25 12:57:31 -04:00
Patrick 'Quezler' Mounier
0cd4ef575d Enforce social distancing (#5465) 2021-06-25 12:49:50 -04:00
Anuken
91f50883b1 Update deployment.yml 2021-06-25 12:42:02 -04:00
Anuken
756c717a9b Possible flaky test fix 2021-06-25 12:39:46 -04:00
Anuken
2cea277320 RoboVM debugging 2021-06-25 12:29:49 -04:00
Anuken
dd36b71c7f Updated RoboVM plugin 2021-06-25 12:18:28 -04:00
Anuken
5e3e07f002 Updated RoboVM 2021-06-25 11:56:28 -04:00
Anuken
0ffe2ed51a Skip launch pad destination text for clients 2021-06-25 10:27:10 -04:00
Anuken
02e6257a66 Fixed #5462 2021-06-25 09:18:11 -04:00
Anuken
57fd72f476 arc 2021-06-24 19:34:21 -04:00
Anuken
d2d7596ef1 Fixed Android deployment script 2021-06-24 18:30:01 -04:00
Anuken
149c48a03e Merge remote-tracking branch 'origin/master' 2021-06-24 17:58:30 -04:00
Anuken
bdeba22561 Switched to v7 server list 2021-06-24 17:58:26 -04:00
Anuken
640c7851cf Update servers_be.json 2021-06-24 17:57:38 -04:00
Anuken
c0991a9baa Create servers_v7.json 2021-06-24 17:57:27 -04:00
Anuken
5af6e8c5de Preparations for 127 pre-alpha release 2021-06-24 17:25:08 -04:00
Anuken
2d4677aa27 Reduced unit item glow 2021-06-24 17:00:33 -04:00
Anuken
984b646103 Merge remote-tracking branch 'origin/master' 2021-06-24 15:38:26 -04:00
Anuken
0949852758 Logic wait & content look up instructions 2021-06-24 15:38:20 -04:00
MEEP of Faith
d4c409252b Allow shock mines to spawn bullets (#5454)
* Allow shock mines to spawn bullets

* Fix up some issues
2021-06-24 08:39:37 -04:00
Anuken
38a9ad9ec1 Fixed #5455 2021-06-23 16:22:00 -04:00
Anuken
c70be45a25 Merge remote-tracking branch 'origin/master' 2021-06-23 14:02:10 -04:00
Anuken
186e8f707e Fixed #5453 2021-06-23 14:02:06 -04:00
Anuken
e3351e0c23 Typo fix 2021-06-23 11:59:02 -04:00
Anuken
b08f198629 Merge remote-tracking branch 'origin/master' 2021-06-23 11:57:55 -04:00
Anuken
1b3e99fbb0 Remove linear filtering on iOS 2021-06-23 11:57:51 -04:00
buthed010203
f74c153a47 or (#5449) 2021-06-23 08:47:14 -04:00
Anuken
2613ff6796 Fixed #5448 2021-06-23 08:46:50 -04:00
Anuken
c404e7e1c6 Fixed #5447 2021-06-22 16:54:32 -04:00
Anuken
d468a4f328 Removed unnecessary TODOs 2021-06-22 16:07:19 -04:00
Anuken
4417a83424 Merge remote-tracking branch 'origin/master' 2021-06-22 14:22:58 -04:00
Anuken
45dc72faf6 Removed unnecessary themes 2021-06-22 14:22:54 -04:00
Patrick 'Quezler' Mounier
42c643f769 Fix ammo multiplier exception in itemturret (#5446) 2021-06-22 13:35:28 -04:00
Volas171
b7d5f9a7ab Add Mindustry Reborn to v7 and v6 ServerList (#5444)
* reborn v6

* v7 reborn lol

* yikes
2021-06-22 10:33:38 -04:00
Darkness6030
7e7d6120ad Update mindurka ip (again) (#5443)
Sry, anuke
2021-06-21 14:16:44 -04:00
Anuken
d6566830ac Ignore Discord RPC exceptions 2021-06-20 08:48:05 -04:00
Anuken
12dfd71345 Minor load markup fix 2021-06-18 15:44:35 -04:00
Anuken
60b6e93f7c arc 2021-06-18 15:25:40 -04:00
Anuken
128174faa4 NOTHING 2021-06-18 15:19:28 -04:00
Anuken
7ab0c86978 Stencil buffer fallback 2021-06-18 15:14:08 -04:00
Anuken
5f0ec79b0f Fixed crash logs sometimes not saving 2021-06-18 09:33:12 -04:00
Anuken
15affaad9b Cleaner impact reactor explosion 2021-06-16 16:53:09 -04:00
MEEP of Faith
a74bc0c077 block destroyEffect (#5427) 2021-06-16 15:55:08 -04:00
Anuken
9088d9eb39 Polygonal protection bugfixes 2021-06-16 15:07:14 -04:00
Anuken
f11f390c1f Polygonal protection for built-in PvP maps 2021-06-16 14:51:37 -04:00
Anuken
865ee952c9 WIP polygonal core protection 2021-06-16 13:26:18 -04:00
Anuken
efcae883fb Experimental core-capture PvP map / Editor filter fixes 2021-06-16 11:09:18 -04:00
Anuken
fe9ff212b2 Stateless simplex 2021-06-15 19:28:54 -04:00
Anuken
210fb349de Less editor filter state 2021-06-15 12:26:00 -04:00
Anuken
69d8af7874 Editor filter seed saving & cleanup 2021-06-15 11:58:26 -04:00
Anuken
183c922b6b Do not save MirrorFilter temporary vectors 2021-06-15 11:32:49 -04:00
Anuken
964104db65 Merge remote-tracking branch 'origin/master' 2021-06-15 09:39:27 -04:00
Anuken
2d8f7cb680 Fixed #5425 2021-06-15 09:39:23 -04:00
Volas171
aef92fd3b0 remove mindustrypvp.ml (#5423)
we are leaving the list for the following reasons : 
we are renewing domain
coming back later (having some stability issue in moderation)
2021-06-14 23:24:26 -04:00
Anuken
a0f80a8865 it is solved 2021-06-14 11:35:53 -04:00
Anuken
6b5a743583 confusion 3 2021-06-14 11:33:00 -04:00
Anuken
28252173b4 confusion 2 2021-06-14 11:32:46 -04:00
Anuken
2e733273a0 confusion 2021-06-14 11:28:28 -04:00
Anuken
39f4e90fff s t o p 2021-06-14 11:23:47 -04:00
Anuken
22d1700fb2 JITPack appears to be throwing a fit (2) 2021-06-14 11:22:56 -04:00
Anuken
31c39e0148 JITPack appears to be throwing a fit 2021-06-14 11:15:06 -04:00
Anuken
e5b80c37eb Renamed misleading github jobs 2021-06-14 11:05:37 -04:00
Anuken
2a451aa41f Disable preview features 2021-06-14 10:59:38 -04:00
Anuken
1a03151966 Enforce JDK 16 as a minimum 2021-06-14 10:55:28 -04:00
Anuken
51040f9f3d Hash fix 2021-06-14 10:42:24 -04:00
Anuken
3ad16ab8aa Upgraded to Gradle 7 & JDK 16 2021-06-14 10:41:19 -04:00
Anuken
b58e64ea16 Fixed #5422 2021-06-14 08:47:38 -04:00
Anuken
7fe9e7f9c2 Merge remote-tracking branch 'origin/master' 2021-06-13 19:27:34 -04:00
Anuken
2d9204d638 I guess everything is unsafe now 2021-06-13 19:27:28 -04:00
QmelZ
de9c82d1d2 Freedom for javascript mods (#5421)
* remove blacklist and class shutter

* no context factory
2021-06-13 19:22:33 -04:00
Anuken
a756dec379 Fixed #5419 2021-06-13 11:02:17 -04:00
Anuken
5601f97266 Fixed #5418 2021-06-13 10:12:50 -04:00
Anuken
347b38ba26 Added unit tests for Java, JavaScript and JSON mods 2021-06-12 20:59:28 -04:00
Anuken
d6016f1b04 Support for hidden weather 2021-06-12 16:59:18 -04:00
Anuken
7ec713ab66 No URLClassLoader super delegation 2021-06-12 14:26:47 -04:00
Anuken
446c2d2dcb more mod loader fixes 2021-06-12 11:00:56 -04:00
Anuken
c5261cf2e5 Fixed #5414 2021-06-12 08:44:16 -04:00
Anuken
cb0382a15b Clipping bugfixes 2021-06-11 10:15:19 -04:00
Anuken
3527acd33e Mod class loading bugfix 2021-06-11 09:18:59 -04:00
Anuken
83854169b7 Fixed #5412 2021-06-11 08:51:34 -04:00
Anuken
dfd2b22917 Planet method renaming 2021-06-10 18:51:29 -04:00
Anuken
c4803d29da Pulverizer texture cleanup 2021-06-10 16:14:53 -04:00
VozDuh
a0acf1a040 Melter & Pulverizer Fixed (#5098)
Co-authored-by: Anuken <arnukren@gmail.com>
2021-06-10 16:01:04 -04:00
Anuken
8d9d6385f9 Editor variant regions for wall blocks 2021-06-10 15:52:33 -04:00
MEEP of Faith
af2830602d Let any block have variants. (#5372) 2021-06-10 15:42:01 -04:00
Anuken
e4bd3fab7c Removed MetalFloor class 2021-06-10 15:39:43 -04:00
Anuken
e3ea1bdaae Merge remote-tracking branch 'origin/master' 2021-06-10 15:10:56 -04:00
Anuken
a180aae838 Blending cleanup / Misc bugfixes 2021-06-10 15:10:52 -04:00
ulwepo
abcea8dd39 Update servers_v6.json (#5407)
This is Japanese server.
Add a survival server and a sandbox server.
Thank you
2021-06-10 09:35:44 -04:00
Anuken
448604062d Merge remote-tracking branch 'origin/master' 2021-06-10 09:32:05 -04:00
Anuken
bcdbca7337 Fixed #5410 2021-06-10 09:32:01 -04:00
Anuken
dd500a747b Update deployment.yml 2021-06-10 09:06:05 -04:00
Anuken
32d8f59b5a Merge remote-tracking branch 'origin/master' 2021-06-10 09:04:06 -04:00
Anuken
86bf068ac3 Fixed #5406 2021-06-10 09:03:57 -04:00
Anuken
ec2c273c97 Add an automatic item produce requirement 2021-06-09 22:55:48 -04:00
Romanin
a587477fc0 Renamed the category and added it easyplay.su (#5405)
We decided to rename the category in order to add to it EasyPlay.Su (we have an agreement)
2021-06-09 17:09:54 -04:00
Anuken
e3da0f713e Modded techtree bugfixes 2021-06-09 16:15:17 -04:00
Anuken
6f609aa4ee ConsumeCoolant 2021-06-09 14:38:49 -04:00
Anuken
c9ff84d03b Test fix 2021-06-09 14:03:29 -04:00
Anuken
b04c04f69f New metal floor / Selective floor attribute stats 2021-06-09 13:26:01 -04:00
Anuken
adf6465029 Child-first mod class loading 2021-06-09 10:04:23 -04:00
Anuken
a8a163ebe2 Fixed Android builds 2021-06-09 08:57:56 -04:00
Anuken
7dcfd648f7 Minor bugfixes 2021-06-09 08:37:26 -04:00
Anuken
1895c7b8e0 Updated Rhino 2021-06-09 08:32:09 -04:00
Anuken
91c0235ff5 #5402 2021-06-08 22:07:45 -04:00
Anuken
25b2458a92 Merge remote-tracking branch 'origin/master' 2021-06-08 21:59:01 -04:00
Anuken
28203ca6e9 Fixed regression introduced in #5361 2021-06-08 21:58:56 -04:00
MEEP of Faith
93fd3c6e18 Allow weapons on Miner units to function. (#5398)
`target` shouldn't affect anything because it is unused in `updateMovement()`
2021-06-08 14:05:56 -04:00
Anuken
95da46bfa2 Duct bridge input display 2021-06-08 11:49:55 -04:00
Catchears
8c1702cff5 Initial german translation for v7 (#5394)
* initial v7 translations

* forgot unsupported.environment

* resolve the duct issues
2021-06-08 10:20:00 -04:00
Anuken
8962992ef9 Fixed invalid healing effects 2021-06-08 09:14:54 -04:00
Anuken
a7de30ba53 RidgedPerlin cleanup / More river noise options 2021-06-07 20:38:17 -04:00
Anuken
2651a30f79 Merge remote-tracking branch 'origin/master' 2021-06-07 18:07:41 -04:00
Anuken
1c9589eb26 Editor filter bugfixes 2021-06-07 18:07:37 -04:00
SaltyBeggarBR
850ebe8156 Brazillian Portuguese translation huge revamp (bundle_pt_BR.properties changes) (#5395)
I changed a few things that were either translated wrong, had typos or just sounded weird and also added a lot of stuff that didn't have translation yet, like the new blocks.

I tested the changed bundle as a mod by simply saving the edited bundle text on the test mod folder, but I believe it should also work when merged into the source code, and also because it's something that is pretty simple.

Not everything is translated yet, logic commands and its tips still have to be translated. I believe some other stuff also doesn't have a translation, since I didn't do a general revision of the game to see that, although I believe almost everything should be translated now.

(for Brazillians):
Eu mudei algumas coisas que estavam ou erradas, tinham erros de português ou simplesmente soavam estranhas e também adicionei um monte de coisa que ainda não estava traduzida.

o bundle modificado foi testado como um mod simplesmente salvando o arquivo de texto modificado na pasta do mod de teste, mas acredito que também vá funcionar certinho quando colocado no código fonte em si até porque é algo simples.

Não é tudo que foi traduzido ainda, lógica e suas dicas ainda tem que ser traduzidas. Acredito que outras coisas também, foi não fiz uma revisão geral no jogo em português para saber, mas acredito que a maioria deve de estar traduzido agora
2021-06-07 18:05:19 -04:00
YellOw139
8a51a4be32 [Bundle][RO] Update (v7 pre-alpha) (#5365)
* [Bundle][RO] Update (v7 pre-alpha)

Changelog:

- New strings/changes up to commit 00ca247d0f
- Typo fixes & various other improvements

* old typo

* coolant strength
2021-06-07 16:40:07 -04:00
Anuken
a452cd94c6 arc 2021-06-07 15:25:56 -04:00
Anuken
0966b49ff7 Merge remote-tracking branch 'origin/master' 2021-06-07 15:04:57 -04:00
Anuken
0582cfac2b Prefer Team#data() for team data 2021-06-07 15:04:45 -04:00
IchHabeKeineNamen
5deb8a879e Update BlockRenderer.java (#5259)
1. Ensure consistency of code.
1. Make the code straightforward.
2021-06-07 15:00:31 -04:00
Anuken
f4db208d75 Merge remote-tracking branch 'origin/master' 2021-06-07 14:55:18 -04:00
Anuken
f73c49b246 Moved effect calls back to correct class 2021-06-07 14:55:14 -04:00
shift
93a197e7d9 [RU] Fix interplanetary accelerator description (#5392)
* [RU] Fix interplanetary accelerator description

Made it same as it's name

* Make translate close to original
2021-06-07 14:51:05 -04:00
KotMilkMeoW
861ca2c6ae Add server to global list (#5385)
* Add server to global list

Server.
There are already 6 modes: attack, PVP, Sandbox, Crawler Arena, Tower Defense, Survival.

* Add server to global list

New ip (because of the technical chocolates, it was necessary to change them)
2021-06-07 14:50:50 -04:00
Anuken
1fffbf3a79 Merge remote-tracking branch 'origin/master' 2021-06-07 10:47:57 -04:00
Anuken
82742339a3 Implementation of #5280 2021-06-07 10:47:53 -04:00
Tegas Aziz
11d85621e2 7.0 indonesian translations part 2 (#5390)
* 7.0 indonesian translations part 2

but i missed schematic.tag bundle

* Update bundle_in_ID.properties

* Update bundle_in_ID.properties

* Update bundle_in_ID.properties

* Update bundle_in_ID.properties

team.orange.name is deprecated
2021-06-07 08:43:19 -04:00
Anuken
a64efce5a0 Possible client-side interpolation jitter fix 2021-06-06 22:17:53 -04:00
Anuken
9be4461b54 Merge remote-tracking branch 'origin/master' 2021-06-06 21:01:55 -04:00
Anuken
7f01959438 Liquid turret shoot FX fixes 2021-06-06 21:01:47 -04:00
MEEP of Faith
a09771b569 Custom Unit Death Explosion Effects (#5389) 2021-06-06 19:38:12 -04:00
NiChrosia
79695086c6 Add powerDynamic to Consumers (#5205)
* Add DynamicConsumePower, and powerDynamic to Consumers

* Add period to description of DynamicConsumePower

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

* Remove redundant Boolf

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2021-06-06 19:37:20 -04:00
RebornTrack970
4a922e4c10 Translate Bug Fix (#5383)
* Translate Bug Fix

* more?
2021-06-06 19:36:34 -04:00
Anuken
bfc059769f Merge remote-tracking branch 'origin/master' 2021-06-06 19:33:22 -04:00
Anuken
b0ab33f125 Duct input consistency 2021-06-06 19:33:15 -04:00
buthed010203
faa8c68c20 remove space & extra backets (#5384)
* remove space

* remove extra brackets
2021-06-06 14:50:56 -04:00
buthed010203
45f5e2ae90 remove stray newline (#5386) 2021-06-06 14:25:17 -04:00
Darkness6030
0859f92fea Domain for mindurka (#5381) 2021-06-06 14:23:52 -04:00
Darkness6030
698e4bc740 Domain for mindurka (#5380) 2021-06-06 14:23:43 -04:00
Anuken
300e3f2320 Merge remote-tracking branch 'origin/master' 2021-06-06 13:01:26 -04:00
Anuken
d4f22c4838 Icon fix 2021-06-06 13:01:21 -04:00
RebornTrack970
758b3bcb24 Turkish Translation 2 (#5374)
* Turkish Translation 2

Added a few V7 things, not final.

* More Missed edits.

Fixed until line 122

* Fixed Until Line 162

* Fixed Until Line 225

* Fixed until 300

* Mini bug fix

* Fixed Until 400

* Translator , i will complete TR translation.

* Fixed till 543

* Until 598

* Maps

* Until 762

* 908

* 984

* 1337 Tutorial be like

* More patch

* More missed trasnations!!!

* More!

* 1562

* Units

* Logic 1

* Logic 2

* Math

* More Math 2

* Nearly done

* Nearly doneeee

* Final Touch
2021-06-06 11:25:18 -04:00
Anuken
782c7a9ff3 Fixed #5379 2021-06-06 11:05:36 -04:00
Anuken
8d12dbbe70 Minor duct preview optimizations 2021-06-06 10:06:33 -04:00
Anuken
75abe7661d Merge remote-tracking branch 'origin/master' 2021-06-06 09:55:37 -04:00
Anuken
c318d4fa70 Cleanup 2021-06-06 09:55:33 -04:00
Patrick 'Quezler' Mounier
7a3a39d3b1 Draw duct bridges in schematics (#5378) 2021-06-06 09:55:24 -04:00
Anuken
a4895fef8b Fixed #5373 / Fixed #5375 2021-06-06 09:40:32 -04:00
Anuken
685adeee9d Minor salvo buff 2021-06-05 22:54:37 -04:00
Anuken
c8d2b7a39e Merge remote-tracking branch 'origin/master' 2021-06-05 16:55:18 -04:00
Anuken
41082e9429 Fixed #5371 2021-06-05 16:55:15 -04:00
RebornTrack970
04b7aad1bf Updated TR Bundle (#5367) 2021-06-05 16:37:41 -04:00
Anuken
d0b70fd70d Fixed map view on left-padded iOS devices 2021-06-05 15:47:39 -04:00
Anuken
3c008e6bd8 Merge remote-tracking branch 'origin/master' 2021-06-05 15:10:41 -04:00
Anuken
ade313fc1b Fixed infinite fire / Command center logic control 2021-06-05 15:10:34 -04:00
Catchears
d96626e0c4 update link to jdk in README.md (#5370) 2021-06-05 13:39:01 -04:00
Anuken
d0da46e715 Merge remote-tracking branch 'origin/master' 2021-06-05 13:38:38 -04:00
Anuken
9144f57b16 Fixed #5369 2021-06-05 13:38:32 -04:00
Patrick 'Quezler' Mounier
4ab115d007 Get rid of potentially white period (#5368) 2021-06-05 12:03:44 -04:00
Anuken
b4dad32b2b Status effect particle color pass 2021-06-05 11:10:26 -04:00
Anuken
c80f2d6cf4 Heal *all* cores on game start 2021-06-05 10:01:15 -04:00
Anuken
f87054c667 Merge remote-tracking branch 'origin/master' 2021-06-05 09:49:04 -04:00
Anuken
2f2dc01c6b Heal player cores on start 2021-06-05 09:49:00 -04:00
genNAowl
9f087214a1 Just a Few Small Changes to Status Effect Stat Displays (#5361)
* Messing Around with Status Effect Stats

* Longer, but cleaner and less buggy

Co-authored-by: Leonwang4234 <leonwang4234@gmail.com>
2021-06-05 09:01:38 -04:00
Anuken
6e05319424 Merge remote-tracking branch 'origin/master' 2021-06-05 08:57:30 -04:00
Anuken
151c4f13df Fixed #5362 2021-06-05 08:57:25 -04:00
Sharlotte
c6242fe7f1 [KO] Bleeding-Edge Bundle Update (#5352)
* [KO] Bleeding-Edge Bundle Update

* Update bundle_ko.properties
2021-06-04 20:28:07 -04:00
Anuken
7243ae4e95 Merge remote-tracking branch 'origin/master' 2021-06-04 20:19:15 -04:00
Anuken
3e636cba6b Finalized packr update 2021-06-04 20:19:11 -04:00
Volas171
5f28e26176 Add Mindustrypvp.ml to 7.0 BE list (#5360)
* yeet

* lol almost forgot that
2021-06-04 19:17:53 -04:00
Tegas Aziz
0a7d5b20c7 7.0 Indonesian Bundle (#5349)
* 7.0 Indonesian Bundles

* Update bundle_in_ID.properties

* small additions
2021-06-04 18:18:40 -04:00
Anuken
f9c48d0a02 WIP packr update 2021-06-04 17:32:53 -04:00
Anuken
dd9ec950be Faster payload blocks & voids 2021-06-04 13:14:21 -04:00
Anuken
a1cae3bc29 No timers for driver payloads 2021-06-04 11:52:27 -04:00
Anuken
944b9ae2cf No payload source power 2021-06-04 11:35:01 -04:00
Anuken
8ec62e9dba Duct bridge polish 2021-06-04 11:08:53 -04:00
Anuken
af676ea030 Merge remote-tracking branch 'origin/master' 2021-06-04 10:57:18 -04:00
Anuken
89fdda0ef6 Various minor bugfixes 2021-06-04 10:57:15 -04:00
Humanoid-X
4283f9f8d7 Update TechTree.java (#5357) 2021-06-04 10:56:22 -04:00
Anuken
527856e1b0 Mod dialog layout fixes 2021-06-04 09:48:31 -04:00
Anuken
1bbb52877f Let bullets have speed = 0 2021-06-04 08:53:39 -04:00
Anuken
6ceb1d5058 Merge remote-tracking branch 'origin/master' 2021-06-04 08:36:31 -04:00
Anuken
de9371f0bb Possible dexing error fix 2021-06-04 08:36:27 -04:00
genNAowl
b8daa422ee I Like Stats (#5347)
Co-authored-by: Leonwang4234 <leonwang4234@gmail.com>
2021-06-04 08:31:33 -04:00
Anuken
677bad5c60 Fixed #5348 2021-06-04 08:30:16 -04:00
Anuken
fcf1bdd701 Shock mine team region 2021-06-03 21:49:58 -04:00
Anuken
8fc61215a5 Show ducts 2021-06-03 21:37:58 -04:00
Anuken
6b33064196 Merge remote-tracking branch 'origin/master' 2021-06-03 19:49:49 -04:00
Anuken
c29d75f5d1 Fixed RailBulletType not dealing damage 2021-06-03 19:49:42 -04:00
Sharlotte
9f7568552f typo (#5021)
* typpppppo

* Update bundle_ko.properties
2021-06-03 19:16:08 -04:00
Anuken
00ca247d0f Inverse trig logic functions 2021-06-03 19:12:33 -04:00
Anuken
a2a4302c8c Merge remote-tracking branch 'origin/master' 2021-06-03 19:04:17 -04:00
Anuken
86ae13ed95 Improved Cyerce trails 2021-06-03 19:04:13 -04:00
Parkurist
a264a1cd65 Fixed 1 untranslated line (#5140) 2021-06-03 18:25:41 -04:00
Anuken
4932d11d7b Misc cleanup 2021-06-03 18:24:54 -04:00
Anuken
3f27cebfb6 Fire light 2021-06-03 16:09:32 -04:00
Anuken
9cd482d389 Minor bugfix 2021-06-03 16:01:51 -04:00
Anuken
c674b5c256 Merge remote-tracking branch 'origin/master' 2021-06-03 15:59:39 -04:00
Anuken
1c4184db4b Less respawn rubberbanding 2021-06-03 15:59:22 -04:00
QmelZ
0247301272 Custom Mass Driver Bullets (#5300)
* custom mass driver bullets

* ohno

* should be fixed now
2021-06-03 14:41:08 -04:00
VozDuh
1cbd58820e Fix For Metal Environments (#5322) 2021-06-03 14:36:55 -04:00
TranquillyUnpleasant
eb7e65668c Rotate slider in the mirror filter. (#5228)
* Rotate

* ToggleOption
2021-06-03 14:35:31 -04:00
Ngọc Lam
f91cc2eace Update Vietnamese Translation. (#5238)
* Update translation, fix some typo

* About 150 lines to do left.

* Typos fix #_1

* Typos fix + add trans

* Update to lastest commit.

* Base logic translation.

* a lot of typo ...

* some update from main bundle.

* Add more logic hint.

* Tracking update from main bundle.

* Translate some position.

Co-authored-by: EzLam <winbam1357@gmail.com>
2021-06-03 14:34:40 -04:00
Vanguard
942204bff1 [Bundle][RU] Update (#5028)
* double newline fix

hint.guardian

* 13 changed lines

mod.enabled
mod.disabled
status.burning.name
status.freezing.name
status.wet.name
status.melting.name
status.sapped.name
status.spore-slowed.name
status.tarred.name
status.overclock.name
status.shocked.name
status.blasted.name
status.unmoving.name

* yon't

* x'nt

* Update bundle_ru.properties

* 1 new, 1 changed

New:
stat.healing

Changed:
bullet.healpercent

Co-authored-by: Antsiferov Andrew <summet.dev@gmail.com>
2021-06-03 14:34:27 -04:00
kituta
43e13038f4 Update bundle_ja.properties (#5338) 2021-06-03 14:34:00 -04:00
genNAowl
6d28098180 Fix Boat Trails Being Drawn on Land (#5340)
* update

* Revert "update"

This reverts commit 6ff3523276.

* Hacky Implementation

* Revert "Hacky Implementation"

This reverts commit 632121312d.

* Not so Hacky Implementation

Co-authored-by: Leonwang4234 <62972692+Leonwang4234@users.noreply.github.com>
Co-authored-by: Leonwang4234 <leonwang4234@gmail.com>
Co-authored-by: Anuken <arnukren@gmail.com>
2021-06-03 14:31:23 -04:00
Anuken
f1cf1efe32 Build retry 2021-06-03 14:23:16 -04:00
Anuken
c345ad37b9 Merge remote-tracking branch 'origin/master' 2021-06-03 13:59:00 -04:00
Anuken
ac20b17e0b Mod bugfixes 2021-06-03 13:58:56 -04:00
OSP
a06ee52fb5 Add MinDurka v7 BE server. (#5341) 2021-06-03 13:26:45 -04:00
Anuken
41ccda03a8 Merge remote-tracking branch 'origin/master' 2021-06-03 12:27:08 -04:00
Anuken
3f7edc9018 Use BE servers instead of v6 2021-06-03 12:27:04 -04:00
Ahsoka-501
8f390468dc moved thedimas to C.A.M.S. (#5325) 2021-06-03 12:11:52 -04:00
Anuken
c6b4db8a4e arc 2021-06-03 11:41:14 -04:00
Anuken
978a5a80e3 arc 2021-06-03 11:40:18 -04:00
Anuken
c964704fe1 Merge remote-tracking branch 'origin/master' 2021-06-03 11:37:40 -04:00
Anuken
1313ed2761 Sprite packing fix 2021-06-03 11:37:33 -04:00
Somka000
4c5f27037b Add 7.0 server to BE list (#5336)
Co-authored-by: Anuken <arnukren@gmail.com>
2021-06-03 10:57:21 -04:00
RebornTrack970
bf17788485 Added an experimental V7 server to BE list (#5333) 2021-06-03 10:55:36 -04:00
ulwepo
c0dce6ca41 Update servers_v6.json (#5339)
This is a PVP server for Japanese.
2021-06-03 10:55:03 -04:00
Anuken
17873d93cc I am so sick of JITPack dying 2021-06-03 10:52:44 -04:00
Anuken
48c1421afe Further pack testing 2021-06-03 10:46:45 -04:00
Anuken
5d88dbf3b9 jitpack. 2021-06-03 10:32:54 -04:00
Anuken
91f472d88f jitpack. 2021-06-03 10:32:31 -04:00
Anuken
5533721f3c Added missing bundle/tech entries / Pack debug 2021-06-03 10:21:43 -04:00
Anuken
0c85a6ee47 Pack testing 2021-06-03 10:15:34 -04:00
Anuken
8128542a1f Trigger BE builds before tests 2021-06-03 09:52:45 -04:00
Anuken
7a93c21d10 Test: Disable antialiasing 2021-06-03 09:49:41 -04:00
Anuken
e248f44099 More bugfixes 2021-06-02 18:28:07 -04:00
Anuken
f854d0b1e6 Higher payload conveyor clip size 2021-06-02 18:21:37 -04:00
Anuken
fbe45aba74 Misc bugfixes 2021-06-02 17:44:57 -04:00
Anuken
79e079671c Triggering BE build 2021-06-02 17:08:32 -04:00
Anuken
4cd411d5ee Duct consistency 2021-06-02 17:07:08 -04:00
Anuken
9aae443e72 More netcode updates 2021-06-02 17:04:31 -04:00
Anuken
462a64bf21 Netcode updates 2021-06-02 16:51:52 -04:00
Anuken
eba6514fb5 #5329 without the weird indent 2021-06-02 14:54:03 -04:00
Anuken
1eebf0d270 Merge remote-tracking branch 'origin/master' 2021-06-02 12:52:57 -04:00
Anuken
dd7542032c Unnecessary Time.mark() 2021-06-02 12:52:49 -04:00
Anuken
5b8c4c4f8e Update README.md 2021-06-02 12:50:03 -04:00
Anuken
bab8c20f3b Update README.md 2021-06-02 12:49:33 -04:00
Anuken
662473936c Remove unused shader 2021-06-02 12:41:19 -04:00
Anuken
c9a1de1148 arc 2021-06-02 11:47:42 -04:00
Anuken
e16ce5b651 Removed BuildConfig import 2021-06-02 11:34:41 -04:00
Anuken
fa99a9b335 It's not even pre-alpha yet 2021-06-02 11:30:13 -04:00
Anuken
28b235ef07 Partial 7.0 merge - API preview 2021-06-02 11:08:08 -04:00
Romanin
ea75a357ca Update servers_v6.json (#5328)
Change RCR IP
2021-06-02 09:07:02 -04:00
genNAowl
60ceb63731 I would like to join contributor gang (#5327) 2021-06-02 08:51:55 -04:00
buthed010203
f5c8965616 ignore colors (#5324)
why isnt this already a thing
2021-06-01 12:50:11 -04:00
RebornTrack970
f42b147b06 Temporary Omega Server Change (#5321)
* Temporary Omega Server Change

* Added Rush and Castle Wars too

* Alright???

* Update servers_v6.json
2021-06-01 10:03:29 -04:00
Anuken
22b27dc168 Revert server move 2021-06-01 09:00:57 -04:00
MEEP of Faith
551ebb6b31 Wow I worded that terribly (#5320) 2021-05-31 17:49:37 -04:00
MEEP of Faith
8b95d2db0d Knockback following bullet direction (#5313) 2021-05-31 14:28:35 -04:00
Lrakotobe
b7c185ca1b correction of spelling mistakes (#5127) 2021-05-31 14:26:00 -04:00
RebornTrack970
8b50590cc5 Added Rapid and Testing Server (#5315)
(Testing server is a brand new idea, might get removed later on)
Rapid by Intervection.
2021-05-30 11:00:40 -04:00
MEEP of Faith
1ea4567912 Display Mass Driver range and reload stats (#5307)
* Display range and reload stats

* Unneeded
2021-05-29 08:43:34 -04:00
MEEP of Faith
dadbaa1380 e.rotation, 360f in randlLenVectors unneeded, remove them. (#5242) 2021-05-28 16:18:38 -04:00
buthed010203
0bf25cdd01 fix potential crash (#5305)
I dont think this can even happen without some plugins or mods but its better to be safe than sorry.
2021-05-28 13:27:20 -04:00
Thomas Widyantoko
2f07a21d66 Indonesian translation standardization (#5296)
* Indonesian bundle update

lenum.controller description and Tar Fields map

* translation bundle sync

* Indonesian translation standardization
2021-05-28 10:48:52 -04:00
MrDuck557
39d725d5ff Healing Status Effect Stat (#5304)
* Up

* Ground

* Healing

Very tiny change
2021-05-27 23:23:53 -04:00
NiChrosia
dd0b5f791c Add spawn function with Position argument to UnitType (#5293) 2021-05-26 19:37:33 -04:00
GaviTSRA
e3fdc1d57c Updated TSR Hub ip (#5297)
* Update servers_v6.json

* Update servers_v6.json

Changed TSR Hub ip
2021-05-26 14:40:17 -04:00
buthed010203
e22af83ed1 Fix a random disconnect (#5292)
This almost never happens but since the flood uses this method extensively, everyone gets disconnected every hour or so so I fixed it myself.
2021-05-25 15:34:33 -04:00
Darkness6030
265f38dcc6 Update MinDurka IP (#5284)
The biggest update of mindustry server ever! We've added SO many useful features, commands, new servers and more!
2021-05-23 11:25:07 -04:00
Anuken
008b2c57c5 Update LogicBlock.java 2021-05-22 13:30:05 -04:00
Anuken
256482a486 Update gradle.properties 2021-05-22 13:28:43 -04:00
MEEP of Faith
e4c434e26e lightningType follow angle (#5282)
* lightningType follow angle

* this is more complicated than it should be

time to make it less stupid
2021-05-22 08:41:04 -04:00
buthed010203
be71664436 Lower surge tower schem priority (#5277)
The priority of surge towers is now -15 (default for power nodes is -10). Schems with surge towers will often see them automatically connected to random buildings only a couple tiles away which are already in range of other nodes, the hope here is that this fixes that.
2021-05-20 12:33:40 -04:00
MEEP of Faith
db897d037d Unit Command Radius (#5269)
* Unit Command Radius

* Make effect change with radius

* Fix command center effect

* Display true radius
2021-05-19 14:34:57 -04:00
RebornTrack970
86d50e9147 Closed Backup 2r2t, reopened original 2r2t (#5273) 2021-05-19 13:48:29 -04:00
MEEP of Faith
0764fcb476 More random unit effects (#5272)
* More random fall smoke effects

* Do the same with status effects.
2021-05-19 08:25:28 -04:00
andrew3737
9a225d96ef 4 new Application Tests added (#5207) 2021-05-18 14:44:30 -04:00
SAMBUYYA
5eb80ead93 Update bundle_in_ID.properties (#5247)
* Update bundle_in_ID.properties

Adding and change some words. Menambah dan mengubah beberapa kata.

* Update bundle_in_ID.properties

* Update bundle_in_ID.properties

Third change. Perubahan ketiga.
2021-05-18 09:04:28 -04:00
Leonid Skorospelov
760962c2b4 Make CoreItemsDisplay not show up if nothing to show (#5263) 2021-05-17 14:10:05 -04:00
Leonid Skorospelov
b11b087d53 Do not reset mineTile of units to null client-side (#5252) 2021-05-16 13:52:03 -04:00
OSP
2d8b3918d2 Closed... (#5239) 2021-05-14 08:52:31 -04:00
BenMan95
6398fed47b Fixed logic controller updating (#5240) 2021-05-13 13:07:30 -04:00
Tegas Aziz
1e1d7d2e92 Add @SAMBUYYA on contributors (#5231)
@SAMBUYYA just translate Indonesian on pull #5230
2021-05-10 19:07:48 -04:00
SAMBUYYA
716fed08c3 Update bundle_in_ID.properties (#5230)
Mengubah dan menambahkan beberapa kata.
2021-05-10 17:05:43 -04:00
MEEP of Faith
6fcdb9d505 Draw flame over cracks (#5222) 2021-05-08 08:48:50 -04:00
MEEP of Faith
8d1a34b652 Include distance in foreshadow targetting (#5221)
* Include distance in foreshadow targetting

* Divide by larger number
2021-05-07 18:35:58 -04:00
TranquillyUnpleasant
ac8c81a0d5 Allow banned blocks to still be placeable within map editor. (#5212)
This makes it so you don't have to pointlessly unban and then re ban blocks while making maps.
2021-05-07 08:45:43 -04:00
Darkness6030
5f7e2d97ef Fixed minigames (now they are working) (#5209)
Oh yes
I have fixed minigames server
And TowerDefense, Crawler Arena and Siege are working well.
2021-05-06 15:00:53 -04:00
RebornTrack970
927077c54c Replaced 2r2t with Backup 2r2t (#5204)
The original 2r2t server is broken at the moment, replaced with backup one.
2021-05-06 10:01:30 -04:00
thedimas3007
a861da1a67 Update thedimas hub ip (#5201)
Sry for doing this again, but server was migrated to new, more powerfull host
2021-05-05 14:52:51 -04:00
Antsiferov Andrew
c53e14dd31 Fix crash when there's no sectors on planet (#5202)
`sectors.size - 1` is `-1` when there's no sectors on planet.
relevant crash log:
```
[E] java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 16
	at arc.struct.Seq.get(Seq.java:451)
	at mindustry.type.Planet.getLastSector(Planet.java:114)
	at mindustry.ui.dialogs.PlanetDialog.show(PlanetDialog.java:185)
        ...
        at mindustry.desktop.DesktopLauncher.main(DesktopLauncher.java:36)
```
2021-05-05 14:51:35 -04:00
Tegas Aziz
622f735953 Update contributors (#5193) 2021-05-04 09:11:30 -04:00
MEEP of Faith
d820e7d31a Fix small linecast issue (#5192) 2021-05-03 22:10:36 -04:00
Thomas Widyantoko
0193d586d1 updated Indonesian translation (#4608)
* updated Indonesian translation

fixes and additions, structure descriptions are fixed and shortened

* Update bundle_in_ID.properties

logic tooltips and other fixes part 1

* Update bundle_in_ID.properties

logic tooltips and other fixes part 2

* Update: continue translating from me

* again and again

* Update bundle_in_ID.properties

logic tooltips and other fixes part 3

* Graphic Type Hint Translation 1

* Graphic Type Hint Translation 2

graphicstype.type translation

* Fix graphicstype.image typo

(Because no ones likes typo, isn't it?)

* Update bundle_in_ID.properties

logic tooltips and other fixes part 4

* Update bundle_in_ID.properties

logic tooltips and other fixes part 5 (last one)

Co-authored-by: Tegas Aziz <49786146+WilloIzCitron@users.noreply.github.com>
Co-authored-by: Anonymous Albert <44728043+TheMrAlbert@users.noreply.github.com>
2021-05-03 08:49:32 -04:00
Technisha Circuit
a56a0aa14f Currently not working due to technical difficulties (#5187) 2021-05-03 08:36:21 -04:00
Skat
7853767ee5 Fix plastanium conveyor linking (#5185) 2021-05-02 20:18:22 -04:00
Skat
9e519ab801 Add missed scarlet color (#5182) 2021-05-02 13:50:53 -04:00
Darkness6030
5995f0e215 Change MinDurka's ip address (#5180)
FINALLY WE HAVE EATEN DDOSERS, IT NOW WORKS!
2021-05-02 09:34:08 -04:00
Technisha Circuit
7f50969dbc Added jinxed.realms.us.to to the server list (#5177) 2021-04-30 14:10:26 -04:00
thedimas3007
76db20e410 Change thedimas hub IP (#5175)
@Anuken please merge it as soon as you can
2021-04-30 09:29:28 -04:00
MEEP of Faith
d9c5e5e08d No reason to hide ItemEntry (#5173) 2021-04-30 09:29:19 -04:00
Antsiferov Andrew
451568d5b2 Make Mod an abstract class (#5155) 2021-04-29 19:51:46 -04:00
MEEP of Faith
e8e23961f4 why toxopid cannon not in weapons folder (#5166) 2021-04-29 14:15:55 -04:00
Skat
0e1c4ccd6d Suggestions for unknown command response (#5165) 2021-04-29 13:11:51 -04:00
OSP
73f0593acf IP change MinDefence (#5164)
I hope the last change of the ip.
2021-04-29 10:18:36 -04:00
Darkness6030
b779ec3759 Add a domain name to MinDurka. (#5159) 2021-04-27 20:55:10 -04:00
Skat
41423d43bb Dont try load mod icons on server (#5160) 2021-04-27 10:24:30 -04:00
MEEP of Faith
7dc3dfd29e e.checkTarget is shorter (#5157) 2021-04-26 15:22:33 -04:00
Leonid Skorospelov
6eea8bebdf Actually sync ItemTurret's ammo (#5154) 2021-04-25 09:06:45 -04:00
Darkness6030
8cd7e1c307 Update MinDefense Ip address (#5147)
@osp54 forgot to update it, so i made it :-/
2021-04-24 17:24:25 -04:00
MEEP of Faith
3910d7769b Add space to bullet.lightning (#5136) 2021-04-22 11:11:08 -04:00
Anuken
f22f5a8ad9 ... 2021-04-20 21:07:46 -04:00
Anuken
f14d4d91b0 why does this work locally 2021-04-20 21:01:56 -04:00
Anuken
fc68a8af19 ???? 2021-04-20 20:58:04 -04:00
Anuken
0c3e110326 Update build.gradle 2021-04-20 20:50:10 -04:00
Anuken
434ee7de97 Create SStats.java 2021-04-20 08:28:09 -04:00
Anuken
6e1880f409 Update SStats.java 2021-04-20 08:28:00 -04:00
Anuken
e8fa899c40 Update SStats.java 2021-04-20 08:24:06 -04:00
Anuken
d9b2f4ae67 Update SStats.java 2021-04-20 08:20:02 -04:00
ThePythonGuy
137792131e Fix Tetrative Reconstructor's sprite odd 1-pixel error (#5119)
* Create e

* Delete e

* Add files via upload
2021-04-17 12:53:57 -04:00
MEEP of Faith
fbddc0abc9 Turn MiningRange into a UnitType variable. (#5112)
* Turn MiningRange into a UnitType variable.

Long range mining go brrrrr

* Anuke Approved
2021-04-16 20:57:40 -04:00
NiChrosia
d9b6ada0b3 Replace 'sattelite' with 'satellite' (#5110) 2021-04-15 17:00:35 -04:00
Drullkus
f005b83ed3 Make PathCost interface public (#5109) 2021-04-15 09:27:02 -04:00
OSP
d41362a71d Create Mindustry Defence category (#5095)
* Create Mindustry Defence category

End add new server Tower Defence PvP, it is not working now, but it will work soon

* Update servers_v6.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
Co-authored-by: Anuken <arnukren@gmail.com>
2021-04-12 22:29:58 -04:00
Slava0135
6cfb88a2e8 redundant field in DrillBuild (#5101) 2021-04-12 15:18:55 -04:00
BlueWolf
865d0082cc Sand water (#5100) 2021-04-12 14:02:00 -04:00
Darkness6030
24c8d6e040 Add Minigames HUB to global server list (#5097)
This is a hub of all MinDurka minigames
We have:
1) Castle Wars (by Xusk)
2) Tower Defense
3) MS:GO (by Xusk)
4) Zone Capture (by Misaka)
5) The Siege (by OSP, the gamemode belongs to Mindustry.defense)
Soon we'll add some gamemodes like Crawler Arena
2021-04-12 12:11:34 -04:00
Skat
a55039447a Add file name printing (#5093) 2021-04-11 09:26:47 -04:00
Drullkus
aef7709764 Added addUpgrade method to Reconstructor to avoid dealing with array creation in Rhino JS (#5094) 2021-04-10 21:28:28 -04:00
BasedUser
c99b79762a they have a n a m e (#5074) 2021-04-10 20:15:12 -04:00
MEEP of Faith
0d8f95354f Move damage and knockback to hitEntity (#5000)
* Move damge and knockback to `hitEntity`

* b.damage, not damage
2021-04-10 09:15:34 -04:00
MEEP of Faith
7e7e6b70e2 Randomly Rotated Particle Weather Particles (#5020) 2021-04-10 09:12:51 -04:00
MEEP of Faith
56b8986a0b Unit Sprite Heresyn't (#5084) 2021-04-08 15:56:22 -04:00
Qiyi Shan
3b8aa0484e Fixed a typo (#5081)
Fixed a typo that swaps description of drawFlush/printFlush
2021-04-08 11:29:56 -04:00
Elvys Soares
2b9d516922 Refactored duplicated tests into a parameterized one (#5077)
* Added test parameters to avoid code duplication

Signed-off-by: Elvys Soares <eas5@cin.ufpe.br>

* Added test parameters to avoid code duplication and updated JUnit to 5.7.1 version

Signed-off-by: Elvys Soares <eas5@cin.ufpe.br>
2021-04-08 10:25:48 -04:00
MEEP of Faith
bdf958ed17 Copy ItemStack functions over to LiquidStack (#5080) 2021-04-08 10:05:37 -04:00
Arik
5fc4e1f5a5 Black Bar Fix (#5079) 2021-04-07 21:07:08 -04:00
MEEP of Faith
24f0a17395 Crawlers do not explode from their center (#5078) 2021-04-07 18:48:34 -04:00
RebornTrack970
08d200e1fa Moved 2r2t (#5066)
Now 2r2t is a mindustry host instead of mc.
2021-04-06 18:08:06 -04:00
Somka000
782442f144 Add .pl server to public list (#5069)
Minigame server
2021-04-06 15:55:11 -04:00
buthed010203
7e6f3e3761 Update pr.yml (#5067) 2021-04-06 11:50:49 -04:00
Anuken
6f8d43bc78 typo fix 2021-04-04 12:36:19 -04:00
MEEP of Faith
ad46fa93a5 Ignore VSCode settings (#5054) 2021-04-03 20:39:56 -04:00
Anuken
4fec3bfcf9 PR typo fix 2021-04-03 11:42:47 -04:00
Anuken
ef49a16c9e Use core/src for kotlin source 2021-04-03 11:31:41 -04:00
Anuken
93f3d6039e Excluded comp** from final jar 2021-04-03 11:15:41 -04:00
Anuken
19778c743c Fewer methods 2021-04-03 01:28:19 -04:00
Anuken
28a2e7c697 Kotlin support fixes 2021-04-03 00:59:57 -04:00
Max Leibowitz
d538e63c4c :) 2021-04-02 17:26:58 -07:00
Max Leibowitz
31f8d6c830 Move to kapt for annotation processing (allows kotlin to be used in the core module) 2021-04-02 17:25:07 -07:00
GaviTSRA
02e68d27a3 Added TSR Hub to serverlist (#4965)
* Added TSR Hub to serverlist

* Update servers_v6.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

* Update servers_v6.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

* Updated hub ip

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2021-04-02 10:37:58 -04:00
Anuken
0aa2d5f18c Merge remote-tracking branch 'origin/master' 2021-04-01 09:27:43 -04:00
Anuken
5a5854420e Long support for UI.formatAmount 2021-04-01 09:27:36 -04:00
TranquillyUnpleasant
6a8127e7cd un-escape \n for string configs. (#5042)
Currently it escapes them to a literal text, making multi line messages impossible.
2021-04-01 09:14:20 -04:00
Anuken
1bd4c96ee8 Power node placement fixes 2021-03-31 22:36:46 -04:00
Anuken
d66d7e09e3 Explosion damage tweaks 2021-03-31 13:28:08 -04:00
Anuken
e85e43c162 Disable blending when drawing displays 2021-03-31 11:18:17 -04:00
Anuken
dee020bd71 Merge remote-tracking branch 'origin/master' 2021-03-31 09:52:35 -04:00
Anuken
d548a11c60 Skip invalid lobbies 2021-03-31 09:52:31 -04:00
RebornTrack970
59bf2e3571 Updated Server Omega (#5031)
Moved Expansion and fixed immesureable ping.
2021-03-31 09:46:14 -04:00
Anuken
6ebabbb56a Fixed local games sometimes not being found on Steam 2021-03-31 09:42:44 -04:00
Anuken
179cedd6cc Merge remote-tracking branch 'origin/master' 2021-03-30 20:58:20 -04:00
Anuken
3b56f36bbd Fixed #5029 2021-03-30 20:58:13 -04:00
buthed010203
be0765f5ea Radar shouldn't sense derelict as enemies (#5027)
Turrets no longer shoot derelict units by default, they shouldn't be sensed as enemies if this is the case.
2021-03-30 11:58:53 -04:00
Anuken
1715741e37 arc 2021-03-30 11:06:39 -04:00
Anuken
aaa41fbf72 copyNatives before iOS copyAssets 2021-03-30 10:42:51 -04:00
Anuken
2096d006be Merge remote-tracking branch 'origin/master' 2021-03-30 10:24:57 -04:00
Anuken
e455f7d170 Fixed #5025 2021-03-30 10:24:53 -04:00
MEEP of Faith
7a0e772a05 Remove space between damage and /sec (#5024) 2021-03-30 10:22:08 -04:00
Anuken
7f3b8f7e56 jitpack is dead 2021-03-29 20:35:07 -04:00
Anuken
5a493ebf0e arc 2021-03-29 19:05:55 -04:00
Anuken
70bcb0a940 copyNatives task for iOS 2021-03-29 18:33:03 -04:00
Anuken
3105478328 Merge remote-tracking branch 'origin/master' 2021-03-29 15:06:21 -04:00
Anuken
ae8833e679 Fixed rare schematic crash 2021-03-29 15:06:06 -04:00
OSP
afbac48a45 Change ip hub (#5014)
transition to new hosting
2021-03-29 09:38:56 -04:00
Anuken
4a9eeeeac3 Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-03-28 19:56:20 -04:00
liuxilu
e7d9cddbae update zh-CN for logic hints (#4655)
* add new logic hints to zh-CN

* logic hints for zh-CN completed

* more hints and fix

* draw operations

* update command hint

* 载荷

* up to d7f848f
2021-03-28 18:44:29 -04:00
YellOw139
a6fe1275c7 [Bundle][RO] Update (#4860)
* [Bundle][RO] Update

This PR ~~was~~ will soon be tested in-game ~~and is ready to merge at any time~~.

Changelog:

- New strings/changes up to commit b75a8d5260
- Typo fixes & various other improvements

* Status effects

* Minor change

* Improve, adapt

* After test bundles be like

* cleanup

* typo

* options, options...

* Added block_info keybind name
2021-03-28 18:42:50 -04:00
Prosta4okua
2f3fd9de3b [Bundle][uk_UA] Update Ukrainian (#4868)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

03.06.2021

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2021-03-28 18:42:41 -04:00
MEEP of Faith
8b2e78ab1e maxRange overriding on laser bulllets (#4873) 2021-03-28 18:42:26 -04:00
Catchears
d04eaa81e0 german translation (#4897)
* update german translation to b75a8d5260

* update german translation to 8e52d8a272

* foreshadow improvements

* block info keybind
2021-03-28 18:41:06 -04:00
cinnx
b71d5837e9 Update bundle_pl.properties (#4910)
Added missing part of the translation from the English bundle file, fixed a lot of typos.

Huge thanks to:
Somka#9325
count sudoku#9564
Zielony Trójkąt#9074
for pointing out those errors :D
2021-03-28 18:40:55 -04:00
MEEP of Faith
332b1ce100 collidesGround targetting in GroundAI (#4911) 2021-03-28 18:40:47 -04:00
Vanguard
c17040b1ab [Bundle][RU] Update (#4927)
* 21 new, 4 changed, 4 deleted

New:
status.burning.name
status.freezing.name
status.wet.name
status.muddy.name
status.melting.name
status.sapped.name
status.spore-slowed.name
status.tarred.name
status.overclock.name
status.shocked.name
status.blasted.name
status.unmoving.name
stat.opposites
stat.damagemultiplier
stat.healthmultiplier
stat.speedmultiplier
stat.reloadmultiplier
stat.buildspeedmultiplier
stat.reactive
bullet.lightning
content.status.name

Changed:
wavemode.health
boss.health
rules.blockhealthmultiplier
rules.unithealthmultiplier

Deleted:
bullet.sapping
bullet.shock
bullet.freezing
bullet.tarred

* 1 new line

keybind.block_info.name
2021-03-28 18:38:50 -04:00
Sharlotte
a3bd7ba3ad [KO]Update Bundle (#4935) 2021-03-28 18:38:44 -04:00
MEEP of Faith
2a7525cdf1 Allow for dynamic counting (#4988) 2021-03-28 18:38:16 -04:00
Anuken
de458f5c26 Cleanup 2021-03-28 10:57:06 -04:00
Anuken
db931bace2 Cleanup 2021-03-28 10:56:19 -04:00
AzCraft
43602caab2 Added Bulgarian translations. [bundle_bg.properties] (#5013) 2021-03-28 09:42:37 -04:00
RebornTrack970
793e957d0d OmegaHub Updated (#5011)
Moved Annexation and Rush from Minecraft hosting to Mindustry host and improved ping.
Added Castle Wars by Xusx.
2021-03-28 09:42:03 -04:00
Anuken
66594a2b32 Fixed #5012 2021-03-28 09:41:08 -04:00
Anuken
e81219dd3e Merge remote-tracking branch 'origin/master' 2021-03-27 22:12:54 -04:00
Anuken
d11a26c568 Pack effect icons in UI spritesheet 2021-03-27 22:12:47 -04:00
Skat
cf3543ec07 Change int parameters to long type (#5008) 2021-03-27 17:38:55 -04:00
Valeriy
886d8752b7 Update servers_v6.json (#4753) 2021-03-27 16:45:52 -04:00
fuzzbuck
496d6b139e Update servers_v6.json (#5003)
TLD change
2021-03-26 20:30:42 -04:00
Darkness6030
3ce064ca11 Update mindurka ip (#5002)
Mindurka.ru come back!)
[RU]Заспидранил восстановление сервера с нуля за один день!) Гений мысли...
2021-03-26 14:17:48 -04:00
Anuken
1be7f3b36c Merge remote-tracking branch 'origin/master' 2021-03-26 10:13:46 -04:00
Anuken
3fddd6eea7 .size 2021-03-26 10:13:42 -04:00
CxZxRainzz
339fc8113b Shutting down CxZx (#4996)
* Shutting down CxZx

I shutting down the servers because of family issues i hope to rejoin the community later

* Update servers_v6.json

Co-authored-by: Joshua Fan <joshuaptfan@gmail.com>

Co-authored-by: Joshua Fan <joshuaptfan@gmail.com>
2021-03-25 23:00:37 -04:00
Anuken
025bf5ffc3 Merge remote-tracking branch 'origin/master' 2021-03-25 22:42:01 -04:00
Anuken
1dc2906343 Fixed #4997 2021-03-25 22:41:55 -04:00
L0615T1C5-216AC-9437
eea276118f Add more ports for Chaotic Neutral (#4981) 2021-03-25 16:33:12 -04:00
Anuken
36aa9d5696 Fixed #4994 2021-03-25 13:51:13 -04:00
Anuken
1fc1efc410 Merge remote-tracking branch 'origin/master' 2021-03-25 12:51:31 -04:00
Anuken
7924d9b9ef Fixed #4993 2021-03-25 12:51:24 -04:00
Patrick 'Quezler' Mounier
3336e6cdde Exclude derelict targets from Units.bestEnemy (#4990) 2021-03-25 09:52:35 -04:00
MEEP of Faith
4ec81b0669 Make Repair Points affected by overdrive (#4985) 2021-03-24 19:09:20 -04:00
Anuken
d10123295c More pattern variables 2021-03-24 12:55:57 -04:00
Anuken
0929593efc Buildscript cleanup 2021-03-24 12:41:50 -04:00
way-zer
ace6eed653 Add assetsJar artifact for core (#4983)
* Add assetsJar artifact for core

* Add musicJar artifact for core
2021-03-24 12:38:02 -04:00
키에르
a40731624a Add uuid return to PlayerBanEvent (#4982)
* Update EventType.java

* Update Administration.java
2021-03-24 10:02:21 -04:00
VizardAlpha
268672adb8 Update bundle_fr.properties (#4973)
* Update bundle_fr.properties

Minor correction on the translation.
Addition of commits validated in the translation of Mar 10, 2021 ...

* Update bundle_fr.properties

* Update bundle_fr.properties

* Update bundle_fr.properties
2021-03-23 13:03:23 -04:00
Patrick 'Quezler' Mounier
af20db4cf7 Colorize the inner corners of other conduit sprites (#4978) 2021-03-23 09:44:09 -04:00
OSP
8a76e7ea25 Add Mindustry.Defense to global server list (#4960) 2021-03-23 09:23:12 -04:00
Anuken
d72db58b3f Minor ConstructBlock logic tweak 2021-03-22 17:02:09 -04:00
Anuken
975043d439 Use more ping threads 2021-03-22 12:47:02 -04:00
Anuken
40b5ee391d Merge remote-tracking branch 'origin/master' 2021-03-22 11:32:44 -04:00
Anuken
e87e678d0f Use AsyncExecutor for pings 2021-03-22 11:32:36 -04:00
Susideur-YT
d098a9ddc2 Just some change in frensh (#4862) 2021-03-22 10:20:30 -04:00
Joshua Fan
7145ffaf28 Add block info keybind (#4284)
* Add block info keybind

* Change block info keybind to backtick

* Change block info keybind to F1
2021-03-21 14:08:53 -04:00
彭瑞暄
d4afc3ecde Large Update & Sync (#4968) 2021-03-20 21:02:44 -04:00
MEEP of Faith
1ecc49f9b7 Use continuous damage (#4966) 2021-03-20 08:38:17 -04:00
Anuken
7ffd46aee9 #4964 2021-03-19 14:36:25 -04:00
Anuken
afd6570ced More floor render optimization 2021-03-18 22:18:21 -04:00
Anuken
49c099a03c Minor floor renderer optimization 2021-03-18 21:55:33 -04:00
Anuken
851fa09e0c More dispose() cleanup 2021-03-18 16:29:40 -04:00
Anuken
b0c8426d0f arc 2021-03-18 16:16:28 -04:00
Anuken
9384d661c1 Removed unnecessary dispose() 2021-03-18 16:14:53 -04:00
Anuken
a06e0a325b Kill Android app on exit (Arc) 2021-03-18 15:39:26 -04:00
Anuken
a8c31d838f Mesh attribute cleanup 2021-03-18 15:18:59 -04:00
Anuken
46cf48e012 Reverted IntelliJ's "cleanup" 2021-03-18 12:58:57 -04:00
Anuken
bfa9d65314 Ban player ID before IP 2021-03-18 12:57:27 -04:00
Anuken
aa7936100e Merge remote-tracking branch 'origin/master' 2021-03-17 20:53:09 -04:00
Anuken
b20ef104b9 Fixed #4952 2021-03-17 20:53:04 -04:00
Anuken
53b99a650c Update Damage.java 2021-03-17 19:32:32 -04:00
Anuken
2025d6ad2d Merge remote-tracking branch 'origin/master' 2021-03-17 17:40:14 -04:00
Anuken
c7cbe50876 More misc cleanup 2021-03-17 17:39:50 -04:00
Darkness6030
267d822771 Change mindurka's ip address (#4939)
I've changed ip address of Mindurka.ru
2021-03-17 09:16:30 -04:00
Anuken
786d638ad0 Misc cleanup 2021-03-16 21:51:12 -04:00
Anuken
89997ad8d4 Merge remote-tracking branch 'origin/master' 2021-03-16 21:29:22 -04:00
Anuken
036ab282e0 Update bug_report.md 2021-03-16 18:26:19 -04:00
Anuken
e9df213d0a Decreased sector damage check radius 2021-03-16 18:25:30 -04:00
Anuken
150aab3530 Server crash fix / Disabled logic config sync / Faster logic parsing 2021-03-15 17:13:27 -04:00
Anuken
96607ef753 Non-recursive door floodfill 2021-03-15 11:39:06 -04:00
Anuken
075ddf104b Merge remote-tracking branch 'origin/master' 2021-03-13 20:01:14 -05:00
Anuken
671ca5c94f Disabled logicUnitBuild on servers by default 2021-03-13 20:01:01 -05:00
CxZxRainzz
e7ed7c0765 Update servers_v6.json (#4933)
Remove 1 server and add another
2021-03-13 09:13:53 -05:00
Anuken
92db8349dc Don't log irrelevant payload errors 2021-03-12 18:31:41 -05:00
Anuken
ea3f6cf4a0 PowerNode link cleanup & bugfixes 2021-03-12 13:38:28 -05:00
Anuken
dd191493c0 Merge remote-tracking branch 'origin/master' 2021-03-12 13:16:39 -05:00
Anuken
2c08b82fef Fixed blocks linking through insulated walls 2021-03-12 13:16:35 -05:00
thedimas3007
f7c5315599 Update servers_v6.json (#4834)
* Update servers_v6.json

* missing `,`

Co-authored-by: Кусь Пчелов <srthmnt@gmail.com>
Co-authored-by: Anuken <arnukren@gmail.com>
2021-03-12 09:49:30 -05:00
Noah van der Aa
ad6e458636 Add mindustry.party server to server list. (#4926) 2021-03-12 09:48:03 -05:00
Anuken
f04e763667 Merge remote-tracking branch 'origin/master' 2021-03-12 09:35:37 -05:00
Anuken
d545dc0d02 Logic negative coordinate support 2021-03-12 09:35:32 -05:00
Sunny Kim
f895dfe341 dragMultiplier for status effects (#4870) 2021-03-11 18:41:03 -05:00
Anuken
c5bea40e7d Votekick cleanup 2021-03-11 16:55:00 -05:00
TranquillyUnpleasant
e08052d7d6 Votekick edit (#4924)
* Add "yes" and "no" compatibility to votekicks

* Lowercase
2021-03-11 16:54:10 -05:00
Anuken
78a7d15f3e Merge remote-tracking branch 'origin/master' 2021-03-11 10:53:01 -05:00
Anuken
b2e2cfb48d Log client commands before handling 2021-03-11 10:52:53 -05:00
BasedUser
f694e42c78 Add mindustry.ru to global server list (#4697) 2021-03-10 20:52:57 -05:00
Anuken
8e52d8a272 Stat reactivity cleanup 2021-03-10 17:34:39 -05:00
Anuken
1a6843ef2c Re-added unused corroded effect to ensure compatibility 2021-03-10 17:15:18 -05:00
Anuken
4b9fa9a79e Status effect display for bullets 2021-03-10 16:42:28 -05:00
Anuken
c15a8b52d2 Status sprites 2021-03-10 16:22:35 -05:00
Anuken
bd36ca821d Improvements of status effects in database 2021-03-10 16:22:07 -05:00
MEEP of Faith
d4e6817232 Boosting Rise Speed (#4918) 2021-03-10 13:48:33 -05:00
genNAowl
096b54305d Add Status Effect Stats to Core Database (#4883)
* Status Effect Stats

* import cleanup

* Add Sk7725's icons

Tinting still a WIP

Co-authored-by: Leonwang4234 <62972692+Leonwang4234@users.noreply.github.com>
2021-03-10 12:04:09 -05:00
RebornTrack970
8b52561a31 Added the Expansion gamemode to Omega Hub (#4913) 2021-03-10 09:38:56 -05:00
Anuken
b1e8001ae8 Minor cleanup 2021-03-09 19:04:29 -05:00
Anuken
8aba480148 Merge remote-tracking branch 'origin/master' 2021-03-09 15:52:29 -05:00
Anuken
429ff738f9 Error on unknown jump locations 2021-03-09 15:51:36 -05:00
Anuken
ae2736d393 New logic parser 2021-03-09 15:47:19 -05:00
Niels Horn
fc28fbc662 Translate the entire bundle into Danish. (#4900)
* Translate the entire bundle into Danish.

There were close to no existing translations of Mindustry in Danish, and the ones there were had concord issues, spelling issues or contained a mix of Danish and English.
This pull-request provides a thourough translation, covering all names - unit names have remained mostly the same, - as well as tutorials and descriptions.

A collaborative effort with @AsgerHB.

* Update contributors
2021-03-09 09:56:22 -05:00
Anuken
4f37f29ae8 progress 2021-03-09 09:51:37 -05:00
MEEP of Faith
c4da670a7c do not the multi charge (#4905) 2021-03-08 19:14:04 -05:00
Anuken
57dca33c2b Merge branch 'master' into new-logic-parser
# Conflicts:
#	gradle.properties
2021-03-08 18:03:00 -05:00
Anuken
4a1419af0e Merge remote-tracking branch 'origin/master' 2021-03-08 17:12:56 -05:00
Anuken
25c61590d1 Minor cleanup / Another slight vela buff 2021-03-08 17:12:53 -05:00
CxZxRainzz
f6925953ad Update servers_v6.json (#4901)
add PvP server for CxZx
2021-03-08 15:05:26 -05:00
Anuken
e1b0e07f3c Return 1 for sensing dead in null objects 2021-03-08 09:52:36 -05:00
Anuken
b2d16f69da Merge remote-tracking branch 'origin/master' 2021-03-07 17:54:47 -05:00
Anuken
a60772a81e Fixed #4891 2021-03-07 17:54:43 -05:00
buthed010203
6151ebf716 Fix button background (#4892)
This button had a black background which stuck out from everything else on the page, this fixes that.
2021-03-07 16:35:04 -05:00
Anuken
cccb8d6d19 Fixed #4890 2021-03-07 15:45:28 -05:00
Anuken
a2c7c38a3e Reduced Nova range 2021-03-07 09:32:52 -05:00
Anuken
b51d34e893 Fixed #4882 2021-03-06 17:25:03 -05:00
Anuken
79a62cd74c Merge remote-tracking branch 'origin/master' 2021-03-06 14:23:14 -05:00
Anuken
18c669ae3e Fixed #4879 / Fixed server speed validation check 2021-03-06 14:23:10 -05:00
buthed010203
8474c921ec Fix indentation (#4877)
Indents are 4 spaces not 3
2021-03-06 11:11:17 -05:00
Anuken
7c7c57c64e Various parsing bugfixes 2021-03-06 11:10:32 -05:00
Anuken
f7e8412b4b Fixed #4875 2021-03-06 10:41:31 -05:00
Anuken
0d3be917b2 Extra checks for crash fix 2021-03-06 00:05:15 -05:00
Anuken
5c85ba84db Actual JSON weather (?) 2021-03-05 23:20:19 -05:00
Anuken
07d11f02d8 Fixed #4869 2021-03-05 22:16:29 -05:00
Anuken
fce30e6ae5 Sync based on system time 2021-03-05 17:22:44 -05:00
Anuken
24195dac81 Added Voz-Duh's large launch pad sprite (#4861) 2021-03-05 14:27:15 -05:00
Joshua Fan
830fe03898 Add buildSpeedMultiplier status effect (#4816)
* Make disarmed status effect prevent building

* Revert disarmed changes, add buildSpeedMultiplier status

* Add buildSpeedMultiplier to StatusComp
2021-03-05 14:09:46 -05:00
Anuken
4690aae197 Fixed cores being replaceable 2021-03-05 14:00:53 -05:00
Anuken
b82dca89b3 Merge remote-tracking branch 'origin/master' 2021-03-05 12:06:44 -05:00
Anuken
dce79a621a Close connections immediately on kick 2021-03-05 12:06:40 -05:00
buthed010203
d6f00a5d2d Remove dead servers from v5 server list (#4858)
From what I can see, atnanner is the only network that still hosts any v5 servers, all the others are either on v6 or are offline.
2021-03-05 11:59:44 -05:00
Anuken
545b75a091 [Модификация] Доступен -> Доступна 2021-03-05 11:38:57 -05:00
Anuken
979daca221 Merge remote-tracking branch 'origin/master' 2021-03-05 11:36:15 -05:00
Anuken
fb2fed7c28 mod.multiplayer.compatible RU 2021-03-05 11:36:11 -05:00
YellOw139
0ec71750b7 [Bundle][RO] Update (#4750)
* [Bundle][RO] Update

This PR was tested in-game and is ready to merge at any time.

Changelog:

- New strings/changes up to commit f78719afc0
- Typo fixes & various other improvements

* WIP

* typo

* Speaking logically

* Update core/assets/bundles/bundle_ro.properties

Co-authored-by: MLGTASTICa <61350382+MLGTASTICa@users.noreply.github.com>

* Opted for a better term: controlor, not controller

* double-tap

* Times joined & kicked

Co-authored-by: MLGTASTICa <61350382+MLGTASTICa@users.noreply.github.com>
2021-03-05 11:30:55 -05:00
BlueTechno
51f7858b78 Added "armor" and "buildingdamage" stats (#4794)
Also fixed the description of the separator (so it matches the english description)
2021-03-05 11:30:45 -05:00
PolgarSasa
ab83b872a2 Update bundle_hu.properties (#4790) 2021-03-05 11:30:39 -05:00
Sharlotte
879adb7458 [KO] Update bundle_ko.properties (#4803)
* Update bundle_ko.properties

* translated recent changing

* https://github.com/Anuken/Mindustry/pull/4844

* Update bundle_ko.properties

* Add files via upload

* unofficial details
2021-03-05 11:29:26 -05:00
Catchears
39cbd607ef update german translation (#4826)
* update german translation to 781410ea04

* change from stuffyAI

* update german translation to ae838b9392
2021-03-05 11:29:18 -05:00
Antsiferov Andrew
7478cdf4a4 [Bundle][RU] actual L10n (#4748)
* 3 new, 1 deleted

New:
rules.unitcapvariable
rules.unitcap
laccess.color

Deleted:
lenum.color

* 1 line changed

rules.unitcap

* 2 new, 1 deleted

New:
mods.initfailed
setting.modcrashdisable.name

Deleted:
mods.alphainfo
-
Отключение модов после вылета на старте

* Fixed #4715

* Content parser class discovery improvements

* Use github build status (#4718)

Why does this still use travis? It was ditched months ago

* Make status colors the same (#4719)

It bothers me ok

* Better splash damage handling for small radii

* Fixed #4729

* Uncap content names in resolution

* Fixed UnitReq parsing

* Fixed #4732

* Allow JSON mod content types from other class loaders

* Better JSON null validation / Disable mods on startup crash

* Logic tooltips on mobile devices w/ long-press

* Add Survival and PvP servers (#4736)

* Update servers_v6.json (#4735)

add 1 more server for CxZx

* arc

* Balance tweaks

* Fixing remaining typos\errors in bundle_fr (#4397)

* Fixing remaining typos errors in bundle_fr

There are some errors that had managed to get through the verification. Imma chase them down!

* added logic hints and some typo fixes

* Fixing 2 typos in bundle.properties

L1548: Color statement affects every following draw operations.

* smolfixes

* Fixed "fix" in #4397

* [Bundle][RO] Update (#4725)

* [Bundle][RO] Update

This PR was tested in-game and is ready to merge at any time.

Changelog:

- New strings/changes up to commit 1ef7ae7079
- Typo fixes & various other improvements

* Reducing confusion

* Update bundle_ro.properties

* Fixing typos and descriptions [bundle_es.properties] (#4727)

* Fixing and descriptions [bundle_es.properties]

* Forgot something

* Update Logic Draw Hints (#4734)

Wrapped up some previous logic hints, too.

* german translation for build 125, full android translation (#4703)

* update german translation to 631e4d9eef

* update android translation to e816f6110d

with regard to 5ec5f1aa93

* improve translation with ideas from others

* update german steam discription to e86a3e9d09

* update german translation to 1ef7ae7079 (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c)

* changes from stuffyAI

* cross-platform as suggested by stuffyAI

* stuffyAI

genau, hast recht

Co-authored-by: stuffyAI <59014072+stuffyAI@users.noreply.github.com>

Co-authored-by: stuffyAI <59014072+stuffyAI@users.noreply.github.com>

* Update bundle_vi.properties (#4724)

* Fixed mod crash disable setting name

* Various fixes

* Steam icon changes

* arc

* Update Vietnamese Translation. (#4660)

* Update translation, fix some typo

* About 150 lines to do left.

* Typos fix #_1

* Typos fix + add trans

* Update to lastest commit.

* Base logic translation.

* a lot of typo ...

* some update from main bundle.

* Add more logic hint.

* translated recent update (#4742)

* Move update function of resupply point 5x1 spaces back (#4746)

* Remove stray spaces from accelerator (#4465)

* 10 new lines
graphicstype.clear
graphicstype.color
graphicstype.stroke
graphicstype.line
graphicstype.rect
graphicstype.linerect
graphicstype.poly
graphicstype.linepoly
graphicstype.triangle
graphicstype.image

* 1 line changed
lenum.stop (typo)

* 6 new lines

logic.nounitbuild
laccess.controller
laccess.dead
laccess.controlled
laccess.commanded
lenum.idle

* 1 new line

setting.doubletapmine.name

* 2 new, 2 changed

New:
trace.times.joined
trace.times.kicked

Changed:
unit.seconds
unit.minutes

* 1 line changed

trace.times.joined

* 1 new line

mod.multiplayercompatable
-
quick commit before potential merge, might fix it later

Co-authored-by: Vanguard <55051135+XEN0PHIL@users.noreply.github.com>
Co-authored-by: Anuken <arnukren@gmail.com>
Co-authored-by: buthed010203 <naguiar010203@gmail.com>
Co-authored-by: Fatonndev <56699208+Fatonndev@users.noreply.github.com>
Co-authored-by: CxZxRainzz <78591136+CxZxRainzz@users.noreply.github.com>
Co-authored-by: Phinner <62483793+Phinner@users.noreply.github.com>
Co-authored-by: YellOw139 <70975516+YellOw139@users.noreply.github.com>
Co-authored-by: BlueThecno <69437358+BlueThecno@users.noreply.github.com>
Co-authored-by: 彭瑞暄 <raymondpeng0725@gmail.com>
Co-authored-by: Catchears <57631841+Catchears@users.noreply.github.com>
Co-authored-by: stuffyAI <59014072+stuffyAI@users.noreply.github.com>
Co-authored-by: Arnyyx <74717260+Arnyyx@users.noreply.github.com>
Co-authored-by: Ngọc Lam <33188123+NgLamVN@users.noreply.github.com>
Co-authored-by: Sharlotte <60801210+Sharlottes@users.noreply.github.com>
Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2021-03-05 11:28:28 -05:00
Patrick 'Quezler' Mounier
b75a8d5260 Fix typo to preserve sanity (#4857)
* compatable > compatible

* compatable > compatible
2021-03-05 11:27:51 -05:00
MEEP of Faith
120c694a42 Mention Foreshadow's special targeting in its description. (#4419)
* Mention Foreshadow special targetting.

* Better wording
2021-03-05 11:25:58 -05:00
MEEP of Faith
569293e577 Shadow with width/height (#4609) 2021-03-05 11:21:23 -05:00
Anuken
4f0f2499be mod.multiplayercompatable in gray 2021-03-05 11:19:55 -05:00
MEEP of Faith
d34dd0c603 Add message for mods that have hidden = true (#4717)
* Multiplayer compatability message

* Make more sense?
2021-03-05 11:17:55 -05:00
Anuken
b6c645b701 Better DefenderAI / Vela building / Anuken/Mindustry-Suggestions/issues/2074 2021-03-05 11:10:12 -05:00
MEEP of Faith
0c28bb7dcf DefenderAI that makes octs follow units (#4757) 2021-03-05 10:21:26 -05:00
Anuken
2bb303e709 Fixed #4856 2021-03-04 18:41:30 -05:00
Anuken
cc65feb392 Added ConnectionEvent 2021-03-04 18:39:47 -05:00
Anuken
c12b9ee3e3 Minor network packet handling tweaks 2021-03-04 17:58:28 -05:00
Anuken
d863c971c2 Gradle update / Mech animation fixes / Formation movement tweaks 2021-03-04 13:40:50 -05:00
MEEP of Faith
3ccdf45ed1 Is this what you wanted sk? (#4848) 2021-03-04 10:38:47 -05:00
Javier Domingo Cansino
efa5c5db7b Enable client to use a different data dir through env MINDUSTRY_DATA_DIR (#4851) 2021-03-04 10:34:23 -05:00
Anuken
d73cf9fcff Prevent early return in PowerNode config render 2021-03-03 14:42:41 -05:00
Anuken
93dafc82eb Fixed #4847 2021-03-03 12:44:56 -05:00
Anuken
87142b06c3 Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-03-03 10:49:57 -05:00
Anuken
3075616b03 arc 2021-03-03 10:49:52 -05:00
buthed010203
019898dfc3 Turrets can properly replace eachother, cores can replace conveyors and minor cleanup. (#4841) 2021-03-03 09:15:50 -05:00
Patrick 'Quezler' Mounier
ae838b9392 Trace times joined & kicked (#4844)
* Trace times joined & kicked

* Make mindustry.* import obsolete
2021-03-03 09:09:05 -05:00
Anuken
4d9a30b7c7 Merge remote-tracking branch 'origin/master' 2021-03-02 18:45:22 -05:00
Anuken
ea82773157 Non-overdriveable core / Spurious mod warning fix 2021-03-02 18:45:18 -05:00
buthed010203
8289da1415 Nuclear reactor schem priority of -5 (#4840)
* Nuclear reactor schem priority of -5
2021-03-02 10:49:22 -05:00
Anuken
19eb6334b7 Merge remote-tracking branch 'origin/master' 2021-03-02 09:28:42 -05:00
Anuken
e992be1bfb Higher LogicBlock schem priority 2021-03-02 09:28:38 -05:00
MEEP of Faith
7e216d198e Remove duplicates and mild formatting. (#4837)
* Remove duplicate definitions in UnitTypes

* If Tsunami is indented, so should the others

It looks nicer as well.
2021-03-02 09:28:04 -05:00
MEEP of Faith
a89d50e74d Cursor should not change for other teams when hovering over doors and construction. (#4838)
* Cursor should not change for other teams.

* Use Built-in interaction check

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

* Building should use built-in check, same treatment for ConstructBlock

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2021-03-02 09:25:15 -05:00
Anuken
05dc13c922 Fixed #4830 2021-03-01 13:06:47 -05:00
Patrick 'Quezler' Mounier
1de4dd1bfe Call super.drawPlace for menders & overdrives (#4831) 2021-03-01 13:02:27 -05:00
Anuken
72aa87128e Merge remote-tracking branch 'origin/master' 2021-03-01 11:58:59 -05:00
Anuken
8f91576f85 Fixed script loading for Turkish locale 2021-03-01 11:58:53 -05:00
Patrick 'Quezler' Mounier
4019c49fff Log who skipped the wave to the console (#4825) 2021-03-01 09:47:23 -05:00
Anuken
5f83c92829 Fixed #4824 / Fixed #4827 / Fixed #4829 2021-03-01 09:45:40 -05:00
Anuken
4c9cda7e40 Cleanup 2021-02-28 17:33:08 -05:00
Sunny Kim
01f7b1c9a6 New overdrive visuals for colorblind users (#4807) 2021-02-28 17:32:28 -05:00
Anuken
1a30edc55f Merge remote-tracking branch 'origin/master' 2021-02-28 17:17:08 -05:00
Anuken
49bccffd7c Link previews for power blocks near nodes 2021-02-28 17:17:03 -05:00
Patrick 'Quezler' Mounier
526157a514 Draw to-be affected blocks when placing projectors (#4818) 2021-02-28 13:58:06 -05:00
FiliusPatris
d025ba63e1 Display map names with underscores (#4819)
This makes it obvious how to specify map names with spaces. It also
allows for copy-pasting form the output of `maps`.
2021-02-28 13:27:47 -05:00
genNAowl
662515ce2e Make RepairPoints implement Ranged (#4813)
Co-authored-by: Leonwang4234 <62972692+Leonwang4234@users.noreply.github.com>
2021-02-28 09:19:35 -05:00
Joshua Fan
c55ff4ad5e Desktop double-click mining: fix click on mined tile to cancel (#4815) 2021-02-28 09:19:27 -05:00
Anuken
666c0f3582 Merge remote-tracking branch 'origin/master' 2021-02-27 15:10:39 -05:00
Anuken
0c00760ae0 Fixed result duplication in logic UI 2021-02-27 15:10:34 -05:00
Patrick 'Quezler' Mounier
2146b35e5a eacho ther (#4810)
* eacho ther

* Update Tile.java
2021-02-27 10:21:11 -05:00
Anuken
44d10a355e Improved power node link preview check 2021-02-27 10:16:54 -05:00
buthed010203
5037c4e00e Fix a few issues w/ double tap mining (#4798)
Currently, double tap mining consumes clicks so it prevents the player from configuring any block if they click twice within 500ms. The double tap mining was also using the `selected` var which could have been null causing a crash. This is a very messy solution but it does the job good enough
2021-02-27 10:12:00 -05:00
buthed010203
e4ecfc4ee7 Fixed #4791 since it is 100% a bug (#4801)
* Fixed #4719 since it is 100% a bug

This fix is somewhat janky as it checks if the rotation matches the exact original rotation but the likelihood of someone needing bridges along a belt rotated 1 or -1 times is super low. https://aethex.is-a.fail/t13ETd.webm

* unjank rotation

* fix potential crash, styling

* Use mathf.mod
2021-02-26 19:06:27 -05:00
Anuken
ae6be1db3b UnitSpawnAbility 'type' field JSON compat / Fixed health bar out of bounds 2021-02-26 18:51:14 -05:00
Anuken
d06eee99ba Merge remote-tracking branch 'origin/master' 2021-02-26 13:13:41 -05:00
Anuken
8349c8a5b8 Fixed #4802 2021-02-26 13:13:37 -05:00
Darkness6030
2df7484649 Add servers to global list (#4761)
* Add servers to global list
2021-02-26 11:13:51 -05:00
Anuken
1bb97cae39 Fixed #4792 2021-02-25 18:34:24 -05:00
Anuken
f5ac3ff7b0 null controller for dead units 2021-02-25 10:54:05 -05:00
Anuken
f6eba3edae Synchronized settings / Dead units sense as non-controlled 2021-02-25 09:12:17 -05:00
Joshua Fan
781410ea04 Double-tap to mine, tap anywhere to cancel (#4469)
* Double-tap to mine, tap anywhere to cancel

* Make comment consistent

* Remove desktop left-click mining cancel, prioritize mobile unit control over mining

* Mobile: double-tap doesn't configure blocks if unit was double-tapped; control unit detected in first tap of double-tap

* Add 'double-tap to mine' setting (default off)

* Desktop: cancel mining when mined tile is clicked

* Comment typo

* Prevent redundant condition check

* Cleanup

Co-authored-by: Anuken <arnukren@gmail.com>
2021-02-25 08:43:40 -05:00
Anuken
c0d9712beb Fixed #4784 2021-02-25 08:39:35 -05:00
Anuken
0672878920 Fixed #4781 2021-02-24 15:27:22 -05:00
Anuken
b0cdac59f0 Merge remote-tracking branch 'origin/master' 2021-02-24 15:01:48 -05:00
Anuken
4b6a83dd82 Improved auto-bridging with conveyors 2021-02-24 15:01:44 -05:00
Minxyzgo
25ae7b97aa schematic uses camera position (#4775)
* Update InputHandler.java

* Update InputHandler.java

* Update MobileInput.java

* Update InputHandler.java

* Update MobileInput.java
2021-02-24 12:25:38 -05:00
Anuken
afbde49fa2 Fixed #4776 / Fixed #4772 2021-02-24 09:52:53 -05:00
Anuken
befda9baaa Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-02-23 17:07:45 -05:00
Anuken
502c7eb388 arc 2021-02-23 17:07:40 -05:00
Antsiferov Andrew
ad2a18f929 Fix player.locale to be default (#4768)
* fix player.locale == default

* Update NetClient.java
2021-02-23 14:53:23 -05:00
Anuken
830eb86a0f Better power node linking visualization 2021-02-23 12:53:43 -05:00
Anuken
e5413cebdc Fixed #4766 2021-02-23 11:29:51 -05:00
Anuken
1a75951840 Merge remote-tracking branch 'origin/master' 2021-02-23 10:47:58 -05:00
Anuken
08e36aca98 Crafter progress modulo / Segment buff 2021-02-23 10:47:54 -05:00
Patrick 'Quezler' Mounier
aabbfd624a Add disarmed status effect that disarms (#4762)
* Add disarmed status effect that disarms

* Update core/src/mindustry/entities/comp/StatusComp.java

Co-authored-by: Anuken <arnukren@gmail.com>

* Rename disarms -> disarm

Co-authored-by: Anuken <arnukren@gmail.com>
2021-02-23 09:51:43 -05:00
Anuken
2f836d779a Update servers_v6.json 2021-02-22 10:22:28 -05:00
Anuken
d7f848f8cd contXXXXX constants -> ctrl 2021-02-22 10:18:42 -05:00
Anuken
6f7f980563 Merge remote-tracking branch 'origin/master' 2021-02-22 10:15:43 -05:00
Anuken
e2515fc4bf Automatic conveyor/conduit bridging 2021-02-22 10:15:40 -05:00
UnCaughT
d06a7bb7a2 Update servers_v6.json (#4756)
The server now has a new domain.
2021-02-22 10:09:55 -05:00
Sharlotte
dbdfdac94b translated yesterday update (#4755)
* translated newest bundle updates
* ps. why did i forgot 1ef7ae7079 (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c) this commit previous translation update?
2021-02-22 09:19:46 -05:00
Anuken
3b2a0cfd66 Removed RCR due to lack of moderation 2021-02-22 09:05:27 -05:00
Anuken
5b652ae51f Added guidelines for inappropriate server content 2021-02-22 09:04:22 -05:00
Anuken
9e8a2b8296 Minor bridge linking fix 2021-02-21 20:07:20 -05:00
Anuken
e6787c5146 Controlled sensor improvements 2021-02-21 12:28:00 -05:00
Anuken
d8552915f7 Cleanup 2021-02-21 10:35:33 -05:00
Anuken
61d9dea487 Logic config replication / logicUnitBuild rule / Copy-able ConstructBlocks 2021-02-21 10:23:46 -05:00
Anuken
02d8f679b5 Merge remote-tracking branch 'origin/master' 2021-02-21 09:22:05 -05:00
Anuken
544828d9fb Logic controller & dead`` sensors 2021-02-21 09:22:02 -05:00
liuxilu
ca726d579e unit boosting sensor (#4738) 2021-02-21 09:20:36 -05:00
Anuken
8257fb5e11 Merge remote-tracking branch 'origin/master' 2021-02-21 08:54:10 -05:00
Anuken
0d287e6d59 Water Extractor: Use metaglass to be consistent with pumps 2021-02-21 08:53:47 -05:00
Patrick 'Quezler' Mounier
4d9dc66a96 Remove stray spaces from accelerator (#4465) 2021-02-20 12:52:56 -05:00
Patrick 'Quezler' Mounier
868d4e05f7 Move update function of resupply point 5x1 spaces back (#4746) 2021-02-20 12:51:12 -05:00
Anuken
a3bf39d86b Minor cleanup 2021-02-20 10:08:15 -05:00
Sharlotte
d76795e0ae translated recent update (#4742) 2021-02-20 10:07:29 -05:00
Ngọc Lam
a2e075ee54 Update Vietnamese Translation. (#4660)
* Update translation, fix some typo

* About 150 lines to do left.

* Typos fix #_1

* Typos fix + add trans

* Update to lastest commit.

* Base logic translation.

* a lot of typo ...

* some update from main bundle.

* Add more logic hint.
2021-02-20 10:07:19 -05:00
Anuken
2df2a0971a arc 2021-02-20 09:49:49 -05:00
Anuken
158e23bd5e Steam icon changes 2021-02-19 19:43:37 -05:00
Anuken
467402ef73 Various fixes 2021-02-19 19:20:04 -05:00
Anuken
f78719afc0 Fixed mod crash disable setting name 2021-02-19 19:10:27 -05:00
Antsiferov Andrew
e6513702d6 [Bundle][RU] actual L10n (#4726)
* 3 new, 1 deleted

New:
rules.unitcapvariable
rules.unitcap
laccess.color

Deleted:
lenum.color

* 1 line changed

rules.unitcap

Co-authored-by: Vanguard <55051135+XEN0PHIL@users.noreply.github.com>
2021-02-19 18:33:43 -05:00
Arnyyx
aeddf7014c Update bundle_vi.properties (#4724) 2021-02-19 18:32:52 -05:00
Catchears
1613f49c16 german translation for build 125, full android translation (#4703)
* update german translation to 631e4d9eef

* update android translation to e816f6110d

with regard to 5ec5f1aa93

* improve translation with ideas from others

* update german steam discription to e86a3e9d09

* update german translation to 1ef7ae7079 (diff-5e346bcec4e8e1d545e035b1e438472bc51937398ac3e8e81308605ec82aea2c)

* changes from stuffyAI

* cross-platform as suggested by stuffyAI

* stuffyAI

genau, hast recht

Co-authored-by: stuffyAI <59014072+stuffyAI@users.noreply.github.com>

Co-authored-by: stuffyAI <59014072+stuffyAI@users.noreply.github.com>
2021-02-19 18:32:44 -05:00
彭瑞暄
57a833c2fb Update Logic Draw Hints (#4734)
Wrapped up some previous logic hints, too.
2021-02-19 18:32:32 -05:00
BlueThecno
6de53343a4 Fixing typos and descriptions [bundle_es.properties] (#4727)
* Fixing and descriptions [bundle_es.properties]

* Forgot something
2021-02-19 18:32:17 -05:00
YellOw139
7bb4b09308 [Bundle][RO] Update (#4725)
* [Bundle][RO] Update

This PR was tested in-game and is ready to merge at any time.

Changelog:

- New strings/changes up to commit 1ef7ae7079
- Typo fixes & various other improvements

* Reducing confusion

* Update bundle_ro.properties
2021-02-19 18:32:07 -05:00
Anuken
68020fa7d4 Fixed "fix" in #4397 2021-02-19 18:31:34 -05:00
Phinner
b94aba0301 Fixing remaining typos\errors in bundle_fr (#4397)
* Fixing remaining typos errors in bundle_fr

There are some errors that had managed to get through the verification. Imma chase them down!

* added logic hints and some typo fixes

* Fixing 2 typos in bundle.properties

L1548: Color statement affects every following draw operations.

* smolfixes
2021-02-19 18:30:49 -05:00
Anuken
0316009a9c Balance tweaks 2021-02-19 18:28:51 -05:00
Anuken
820f7f0ef2 arc 2021-02-19 17:25:37 -05:00
Anuken
6d105ad3e7 Merge remote-tracking branch 'origin/master' 2021-02-19 17:18:23 -05:00
Anuken
f043a5f340 Logic tooltips on mobile devices w/ long-press 2021-02-19 17:18:17 -05:00
CxZxRainzz
73d6f95d2e Update servers_v6.json (#4735)
add 1 more server for CxZx
2021-02-19 17:11:51 -05:00
Fatonndev
fb48070388 Add Survival and PvP servers (#4736) 2021-02-19 17:04:48 -05:00
Anuken
fa7697fc40 Better JSON null validation / Disable mods on startup crash 2021-02-19 13:28:31 -05:00
Anuken
b46a5c0bda Allow JSON mod content types from other class loaders 2021-02-19 09:45:51 -05:00
Anuken
1072c310ad Fixed #4732 2021-02-19 09:04:13 -05:00
Anuken
d5448b59a2 Fixed UnitReq parsing 2021-02-18 21:07:48 -05:00
Anuken
78317e6126 Uncap content names in resolution 2021-02-18 20:15:46 -05:00
Anuken
5a58f9c71a Fixed #4729 2021-02-18 17:00:23 -05:00
Anuken
06b8dd61c7 Better splash damage handling for small radii 2021-02-18 15:02:09 -05:00
Anuken
a81b5778a0 Merge remote-tracking branch 'origin/master' 2021-02-18 13:11:37 -05:00
Anuken
a7188c4884 Content parser class discovery improvements 2021-02-18 13:11:20 -05:00
buthed010203
0bf0d48a02 Make status colors the same (#4719)
It bothers me ok
2021-02-18 10:24:52 -05:00
buthed010203
dc5cd196ed Use github build status (#4718)
Why does this still use travis? It was ditched months ago
2021-02-17 19:44:04 -05:00
Anuken
f8f9bf228b Merge remote-tracking branch 'origin/master' 2021-02-17 17:12:36 -05:00
Anuken
d0dc1ea132 Fixed #4715 2021-02-17 17:12:32 -05:00
RebornTrack970
ff9fad6a2c One last server for the Omega (#4714)
* One last server for the Omega

Added the Annexation server from the OmegaHub to the list as it is the final server people actualy play on.

* Update servers_v6.json

Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>

Co-authored-by: Anuken <arnukren@gmail.com>
Co-authored-by: Patrick 'Quezler' Mounier <Quezler@me.com>
2021-02-17 11:05:16 -05:00
Anuken
76dbdb59ce Draw cells for unit payloads 2021-02-17 11:02:49 -05:00
Anuken
0013402962 Merge remote-tracking branch 'origin/master' 2021-02-17 09:49:08 -05:00
Anuken
1ef7ae7079 Logic hints for draw operations 2021-02-17 09:49:01 -05:00
buthed010203
07a39d0da8 V6 servers arent BE last i checked (#4713)
This has been bothering me the last few days and i assumed someone else would fix it and i wouldnt have to make a pr for something so tiny but here i am
2021-02-17 09:36:31 -05:00
Anuken
b8bfb30c56 Merge remote-tracking branch 'origin/master' 2021-02-17 09:15:21 -05:00
Anuken
00342ddaae Misc cleanup 2021-02-17 09:15:17 -05:00
Sharlotte
fb40c0b9de cursed typo (#4705)
cursed typocursed typocursed typocursed typocursed typocursed typocursed typocursed typo
2021-02-17 09:12:49 -05:00
Patrick 'Quezler' Mounier
5d9506eb12 Reshuffle nydus servers (#4708) 2021-02-17 09:12:20 -05:00
Anuken
080fe8c3c4 Decreased impact reactor explosion radius 2021-02-16 15:54:20 -05:00
Anuken
48745d7380 Steam crash fix 2021-02-16 13:40:34 -05:00
YellOw139
41b50d67af [Bundle][RO] Update (#4696)
This PR was tested in-game and is ready to merge at any time.

Changelog:

- New strings/changes up to commit 631e4d9eef
- Typo fixes & various other improvements
2021-02-16 13:12:29 -05:00
Vanguard
b65dffca9d 4 new, 1 changed (#4688)
New:
enablebuilding
stat.armor
setting.logichints.name
(newline between radar.output and unitradar.target)

Changed:
lenum.turret
2021-02-16 13:12:17 -05:00
Sharlotte
66bdfcf877 [KO] Update bundles again (#4695)
*translated updated new logic hint
*translated new rule
*typo
2021-02-16 13:12:06 -05:00
Anuken
b0082c92c5 Fixed green line bug - Removed stencil+depth buffers 2021-02-16 13:02:15 -05:00
Anuken
fdd1c01ac3 Merge remote-tracking branch 'origin/master' 2021-02-16 12:20:37 -05:00
Anuken
1ffdd9fd99 Fixed #4701 2021-02-16 12:20:30 -05:00
Patrick 'Quezler' Mounier
f64ad2db9f Remove another dead server (#4699) 2021-02-16 11:46:51 -05:00
Anuken
7bfe9bf914 Merge remote-tracking branch 'origin/master' 2021-02-16 10:57:32 -05:00
Anuken
214f3bb9b5 Improved data file zipping 2021-02-16 10:57:20 -05:00
키에르
3f51149883 Remove dead server (#4669) 2021-02-16 09:50:52 -05:00
Anuken
2c368953f9 Merge remote-tracking branch 'origin/master' 2021-02-16 09:13:49 -05:00
Anuken
9d5454e5ce Fixed #4694 2021-02-16 09:13:44 -05:00
TranquillyUnpleasant
631e4d9eef Unit cap (#4689)
* Add unit caps as a map setting.

* Use int and add maximum and minimum handling.

* Put a lower limit of 0 for unit cap
2021-02-15 20:15:56 -05:00
Anuken
957583071d Splash damage tweaks 2021-02-15 18:42:24 -05:00
Anuken
c942331117 New splash damage algorithm 2021-02-15 18:00:47 -05:00
Anuken
710a55dc2d Reverted pixmap blending rename 2021-02-15 11:08:56 -05:00
Anuken
4bbb4b9a19 Reorder NaN check 2021-02-15 11:00:49 -05:00
彭瑞暄
a2e5dae27f Updated zh-TW translations of Logic Hints (#4666)
* Logic Hint pt.1

Some Logic Hints and minor tweaks in previous translations

* Logic Hints pt.2

* Logic Hints pt. 3/3
2021-02-15 10:46:19 -05:00
YellOw139
d5645b8a7b [Bundle][RO] Update (#4631)
* [Bundle][RO][124.1] Update

This PR was tested in-game and is ready to merge at any time.

Changelog:
- New strings/changes up to commit 64acd6c1e4
- Fixed ancient mod-related bundles not fitting the new install button
- Typo fixes & various other improvements

* Logic tooltips - initial English commit

* Block flags

* Romanian logic hints

* polishing

* Since when is this missing

* Polishing
2021-02-15 10:43:34 -05:00
Sharlotte
a9f9946a39 [KO] TYPO (#4665)
* [KO] i got typo!

* typo
2021-02-15 10:42:28 -05:00
Antsiferov Andrew
561deacce4 [Bundle][RU] Logic Popups L10n (#4677)
* Logic popups

* Block flag documentation

* Распознование -> Распознавание (@Prosta4okua)

* Сбрсывание -> Сбрасывание (@XEN0PHIL)

* нахдиться -> находиться (@XEN0PHIL)

* распознования -> распознавания (@XEN0PHIL)

* распознования -> распознавания (@XEN0PHIL)

* распозновать -> распознавать (@XEN0PHIL)

* распознования -> распознавания (@XEN0PHIL)

* Включен -> Включён (@XEN0PHIL)

* - -> - (@XEN0PHIL)

* lst.unitradar (@XEN0PHIL)

* единиц -> единицы (@XEN0PHIL)
2021-02-15 10:42:01 -05:00
Joshua Fan
e528e35e06 Add sector icon picker back button (#4682) 2021-02-15 10:41:56 -05:00
Anuken
af39d6a6ee Fixed #4685 2021-02-15 10:37:24 -05:00
Patrick 'Quezler' Mounier
7a21c02476 Makes the top sprite visible on liquid turret icons (#4683)
* Add top region to liquid turret icons

* Attempt to change outline icon generation

* Draw regions above the outlined icon over it

* Draw regions **above** the outlined icon over it

* Add clarrifying comment

* Implement backwards compatibility for mods

* an -> any
2021-02-15 09:32:46 -05:00
Patrick 'Quezler' Mounier
557e5710cd Fixes BuilderAI & RepairAI retreat nullpointers (#4681)
* Update BuilderAI.java

* Update RepairAI.java
2021-02-15 09:31:27 -05:00
Anuken
fa52255d04 Fixed #4680 2021-02-15 09:30:57 -05:00
Anuken
e16622afcc Automatic retreat AI for builders/repair units 2021-02-14 20:44:40 -05:00
Anuken
f2468f0b3d Cleanup of #4678 2021-02-14 19:14:02 -05:00
Anuken
30c9231df6 Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-02-14 19:02:55 -05:00
Joshua Fan
7532aadaf8 Add enable building hint, combine building and respawn hints (#4678) 2021-02-14 19:02:28 -05:00
Anuken
3d226246b9 Labyrinth core fix 2021-02-14 09:15:12 -05:00
Skin
d6c852a082 remove-pandorum (#4676)
Good luck!
2021-02-14 08:54:25 -05:00
Anuken
07a27e913c Added UnitBuild transition class 2021-02-14 08:47:53 -05:00
Anuken
092d152bdc Force-link effect classes on iOS 2021-02-13 18:24:22 -05:00
Anuken
8b756d221b Un-broke scripts 2021-02-13 16:28:49 -05:00
Anuken
f33d684dce Merge remote-tracking branch 'origin/master' 2021-02-13 11:56:44 -05:00
Anuken
56e41309b1 Updated global script 2021-02-13 11:56:40 -05:00
RebornTrack970
91b24433b9 Added the 2R2T and Rush server to Omega. (#4667) 2021-02-13 10:37:44 -05:00
Anuken
9050937900 Name cleanup 2021-02-12 19:40:29 -05:00
Anuken
2e6b90d4d5 Serializable -> JsonSerializable 2021-02-12 15:41:28 -05:00
Anuken
146b2589e2 Fixed rare network error 2021-02-12 14:54:10 -05:00
Anuken
abd07e1525 Fixed chat not working while paused 2021-02-12 12:55:31 -05:00
Anuken
541da5c0c9 Block flag documentation & cleanup 2021-02-12 09:09:10 -05:00
Anuken
21f642ad0c Merge remote-tracking branch 'origin/master' 2021-02-12 08:56:44 -05:00
Anuken
0d084d380d Fixed map resize not preserving links 2021-02-12 08:56:40 -05:00
Sharlotte
0fe158d080 [KO] i got typo! (#4662)
* [KO] i got typo!

* typo
2021-02-12 08:42:35 -05:00
Anuken
0cc64c6a8d Fixed #4658 2021-02-12 08:41:36 -05:00
Anuken
cd684996e1 Cleanup & Steam crash fix 2021-02-11 16:31:44 -05:00
Anuken
0350e6bbf4 Validate teams with power links 2021-02-11 12:03:11 -05:00
Anuken
4fe5972d89 Merge remote-tracking branch 'origin/master' 2021-02-11 10:12:17 -05:00
Anuken
27c8efc672 Better targeting range calculation 2021-02-11 10:12:07 -05:00
Catchears
aef0faf79c update german translation to include logic hints (#4654)
* update german bundle to "force projector heat issues"

ea2b57ec4b
ea2b57ec4b

* Gebäude -> Block to prevent confusion
2021-02-11 10:01:03 -05:00
Sharlotte
ea7d1dd91e [KO] UPDATED KO Translation (#4656)
* translated all without logic hint

* typo typo typo typo everywhere typo oh hi typo

* Update logic hint

* typo

* translated changed android description

* android changelog
2021-02-11 09:55:02 -05:00
Anuken
ea2b57ec4b Force projector heat sense 2021-02-10 14:42:30 -05:00
Anuken
949f5eccd7 Damage distance check fix 2021-02-10 09:46:30 -05:00
키에르
e525d89e43 Add missing properties (#4649)
* Add missing properties

* oh no formatting
2021-02-10 09:37:47 -05:00
Patrick 'Quezler' Mounier
6498ce3c4f Remove double indentation of the io server group (#4650) 2021-02-10 09:21:21 -05:00
MEEP of Faith
cbf30c599b If a building and unit are found within the line, target the closer one. (#4646) 2021-02-10 09:16:49 -05:00
Anuken
54c406f83d Cleanup 2021-02-09 18:28:11 -05:00
Anuken
7b2957ab41 More logic tooltips 2021-02-09 15:04:50 -05:00
Anuken
e22fccf5b1 Logic hint tooltips 2021-02-09 14:52:23 -05:00
Anuken
ce8b32f022 Merge remote-tracking branch 'origin/master' 2021-02-09 12:10:22 -05:00
Anuken
0d0aef3dea Logic layout bugfixes 2021-02-09 12:10:15 -05:00
MEEP of Faith
386da22f6e remove space in perShot (#4640) 2021-02-09 09:52:00 -05:00
SachaTending
f76b514892 Update servers_v6.json (#4615)
Add RCR
2021-02-09 09:44:01 -05:00
Anuken
77dc959e4a Merge remote-tracking branch 'origin/master' 2021-02-09 09:35:03 -05:00
Anuken
a99151441c Fixed #4642 / Logic op reorganization 2021-02-09 09:34:58 -05:00
buthed010203
852b0a97fe 60 * 60 > Time.toMinutes (#4634)
It already exists in other places in the code, doesn't make sense to not use it.
2021-02-08 16:49:14 -05:00
Anuken
38843c25fb Merge remote-tracking branch 'origin/master' 2021-02-08 16:44:22 -05:00
Anuken
ce2750ba60 Rail bullet fix 2021-02-08 16:29:41 -05:00
Fatonndev
1d3dbddaef add player.locale (#4633) 2021-02-08 15:26:48 -05:00
Anuken
d8177daada Merge remote-tracking branch 'origin/master' 2021-02-08 14:55:18 -05:00
Anuken
3cbcd779eb Better strict equality implementation 2021-02-08 14:55:14 -05:00
Nexort23
33fc36a2d4 hub minplay.ru (#4600)
* hub minplay.ru
2021-02-08 14:52:11 -05:00
Anuken
c06146110d Better bullet homing (#4630) 2021-02-08 13:03:08 -05:00
Anuken
1802aab683 isNull op / Return null for null block sense/NaNs 2021-02-08 12:48:39 -05:00
Anuken
49fe47f1f8 Comment fix 2021-02-08 12:23:56 -05:00
Anuken
a13c9d0761 Fixed F-Droid build string not updating on deploy 2021-02-08 10:58:05 -05:00
Anuken
3d8479355c Fixed random key 2021-02-08 10:45:08 -05:00
MEEP of Faith
86c702861e Remove NullPointerExeption error (#4624) 2021-02-08 10:44:08 -05:00
CxZxRainzz
47ec13eef4 Update servers_v6.json (#4628)
Add CxZx
2021-02-08 10:39:41 -05:00
Anuken
d8cd0d867c Merge remote-tracking branch 'origin/master' 2021-02-08 10:37:09 -05:00
Anuken
d5ede6b1bb Un-blacklisted arc.net 2021-02-08 10:37:06 -05:00
키에르
fd931564aa Add sources jar (#4612)
* Add sources jar

* Update build.gradle

* Fix classes not found

* :core

* formatting

Co-authored-by: Anuken <arnukren@gmail.com>
2021-02-08 09:59:11 -05:00
Anuken
6b19178a13 Fixed #4620 2021-02-08 09:52:41 -05:00
Anuken
64acd6c1e4 Merge remote-tracking branch 'origin/master' 2021-02-08 09:42:57 -05:00
Anuken
560914bebe Added more unit stats to database 2021-02-08 09:42:49 -05:00
Anuken
2edec90dfb Cleanup 2021-02-08 09:25:46 -05:00
Catchears
10c1305eae update german translation for build 124 (#4618)
* update german translation for build 124

* shorten text to fit on the button without newline
2021-02-07 17:16:56 -05:00
Joshua Fan
852c98f004 "[E] to enable building" hint while building is paused (#3857)
* Show building hints while building is paused

* Add hint: [E] to enable building

* Remove .left()

* Fix build enable hint display inconsistencies when changing build auto-pause setting

* Combine building hint tables

* Fix indentation
2021-02-07 16:58:42 -05:00
Patrick 'Quezler' Mounier
292f771eb1 Draws team regions during schematic placement (#4588)
* Draw team regions during schematic placement

* Fall back to sharded for headless

* Only draw team regions if the schematic is in-world

This seems better than `player != null && req.worldContext` since it wouldn't really result in any visual changes but saves some draw operations.

* This seems cleaner

Although the order of the 1st and 2nd if argument is debatable for performance reasons.
2021-02-07 13:27:09 -05:00
Anuken
1acc771edc 'Fixed' some iOS warnings 2021-02-07 13:08:10 -05:00
Anuken
ee61d0dcfa Cleanup 2021-02-07 13:01:30 -05:00
Anuken
e5f2073de2 Minor unit balance tweaks 2021-02-07 12:49:26 -05:00
Anuken
816be9e9bd Force projector visual cleanup 2021-02-07 12:38:24 -05:00
Sunny Kim
2107af1f0f Force projection disappearing visuals (#4504)
* forceShrink

* forceShrink

* more quicker to tell it apart from a shield down
2021-02-07 12:36:29 -05:00
MEEP of Faith
3bb85b4bda Custom shadow offset (#4472) 2021-02-07 12:34:54 -05:00
YellOw139
e86a3e9d09 [Bundle][RO][Ready-for-Stable] Translation & metadata update + minor fix (#4409)
* #3958 hotfix

* update Romanian Steam desc count

* Create title.txt

* Add files via upload

* Sorter gates

* charge

* Polishing

* More mod browser
2021-02-07 12:33:51 -05:00
Szczepan Zalega
957426c27f Fix some typos in Polish translation (#4411)
* Fix some typos in Polish translation

* Update bundle_pl.properties

(fixup)
2021-02-07 12:33:45 -05:00
Vanguard
8bc90a19d2 [bundle] update bundle_ru.properties (#4477)
* 1 line changed

- noname

* 1 line changed

- hint.placeTurret

* 3 new lines

- servers.disclaimer
- hint.coreUpgrade
- hint.presetLaunch

----
NOTE from Felix Corvus (@Remint32)

This commit and PR are the last ones I made to the repository.
I want to sincerely thank the people I worked with to enhance the game and translate it into Russian.

I want to thank you separately:
Prosta4ok_ua (@Prosta4okua), Vanguard (@XEN0PHIL), BasedUser (@BasedUser), Summet (@summetdev), Anuke (@Anuken), The_Slaylord (@TheSlaylord), Lonely_Ymomfe (@ymomfe), and XZimur (@XZimur)

* 5 changed lines; 2 new lines

Changed:
globalitems
sector.extractionOutpost.description
hint.launch
hint.launch.mobile
hint.presetLaunch

New:
hint.coreIncinerate
hint.coopCampaign

* 2 changed line

hint.coopCampaign
item.spore-pod.details
-
В споровом стручке всё же множественное число в описании, говорится про сами споры. THEY EMIT - они выделяют, IT EMITS - он выделяет.

* 2 changed lines

hint.coreIncinerate
block.interplanetary-accelerator.description

* 3 new line; 1 changed line

New:
setting.showweather.name
link.bug.description
rules.weather.always

Changed:
keybinds.mobile

* 4 new lines; 1 changed line; 1 deleted line

New:
public.confirm.really
bullet.buildingdamage
stat.ammouse
unit.pershot

Changed:
bullet.knockback

Deleted:
bar.limitreached

* Update bundle_ru.properties

падежи

* Update bundle_ru.properties

мелочи

* 1 changed line

stat.ammouse

* 1 new line

none.found

* 6 changed; 1 deleted

Changed:
mod.featured.dialog.title
mods.browser.add
mods.github.open
mod.import.github
mod.jarwarn
mods.guide

Deleted:
mod.featured.title

* 2 changed lines

link.bug.description
mod.scripts.disable

* Update achievements.vdf

* Update description.txt

* 1 changed line

item.thorium.description

* 1 new line

rules.coreincinerates

* 1 new line

bar.boost

* 1 new line

max

* Update bundle_ru.properties

* Update bundle_ru.properties

* rip v3.5 maps

* Update bundle_ru.properties

* Update bundle_ru.properties

* Update bundle_ru.properties

* Prosta4ok obnovi repository

* взлЁт

* 3 new lines

mods.browser.sortdate
mods.browser.sortstars
stat.charge

* Update description.txt

* Update description.txt

* 3 changed, 3 new, 1 deleted

Changed:
mods.browser.sortdate
unit.sei.description
unit.risso.description

New:
mods.browser.reinstall
mods.viewcontent
mods.browser

Deleted:
mod.featured.dialog.title

* 1 line changed

mods.github.open
-
"Репо" is not commonly used and "Репозиторий" does not fit in the button

* 1 new line

mod.installed

Co-authored-by: Felix Corvus <remint32@yandex.ru>
Co-authored-by: Prosta4okua <31485341+Prosta4okua@users.noreply.github.com>
Co-authored-by: Antsiferov Andrew <summet.dev@gmail.com>
2021-02-07 12:33:18 -05:00
Prosta4okua
668144cf2a [Bundle]Update bundle_uk_UA.properties (#4434)
* Update bundle_uk_UA.properties

* Update bundle_uk_UA.properties
2021-02-07 12:32:57 -05:00
Anuken
c5ed056601 Removed unused fx 2021-02-07 12:12:15 -05:00
Anuken
ea9d415b92 iOS inset rotation fix 2021-02-07 11:43:34 -05:00
Anuken
c181204700 Fixed mod descriptions going off-screen 2021-02-07 10:44:45 -05:00
Anuken
ca78cb1a3f Fixed #4616 2021-02-07 10:21:38 -05:00
Anuken
fdafa0933f Mod browser layout tweaks 2021-02-07 10:04:46 -05:00
Anuken
ae92813169 Merge remote-tracking branch 'origin/master' 2021-02-07 09:50:37 -05:00
Anuken
8a248dc787 Mod browser layout fixes 2021-02-07 09:50:33 -05:00
Leonid Skorospelov
f90f611a6d plastanium-wall-large schematicPriority should also be 10 (#4613)
plastanium-wall has it, makes sense to put for large one as well
2021-02-07 09:14:19 -05:00
Xasmedy
1c0d148607 Removed same if statement. (#4607)
Removed an if statement that was the same of the one up.
2021-02-06 18:13:48 -05:00
Anuken
95c8b7ae60 Merge branch 'master' of https://github.com/Anuken/Mindustry 2021-02-06 12:06:03 -05:00
Anuken
25d013b768 Mod browser icon support 2021-02-06 12:05:59 -05:00
Patrick 'Quezler' Mounier
9de8c4d8ac Update servers_be.json (#4602) 2021-02-06 09:09:56 -05:00
Anuken
7e4ffe6a7d Fixed builds failing without Android project 2021-02-06 08:43:15 -05:00
Anuken
b90372a226 Testing bloom on iOS 2021-02-06 08:37:02 -05:00
Anuken
9adbfcac0f Re-added jcenter repo 2021-02-05 14:11:52 -05:00
Anuken
d1eb7743ad Better mod browser horizontal layout 2021-02-05 12:12:08 -05:00
Anuken
fc3352bcb1 Java mod import support / Moved mod browser button 2021-02-05 11:21:27 -05:00
Anuken
9b3360d932 Mod content lists 2021-02-04 21:02:57 -05:00
Anuken
3784bfac77 Allow mod re-import / Save mod repo on import 2021-02-04 19:30:52 -05:00
Anuken
54754cd177 Don't reset processors when links change 2021-02-04 18:19:56 -05:00
Anuken
c48034e420 Merge remote-tracking branch 'origin/master' 2021-02-04 14:12:07 -05:00
Anuken
3299279c89 Removed jcenter repositories 2021-02-04 14:12:03 -05:00
Patrick 'Quezler' Mounier
a6c3ebc467 Save rotation of repair points (#4586) 2021-02-04 10:23:17 -05:00
Anuken
9f510f61c7 Fixed #4584 2021-02-04 09:25:52 -05:00
Anuken
3ae48b8753 Merge remote-tracking branch 'origin/master' 2021-02-03 19:17:14 -05:00
Anuken
f41725b8dc Minimap unit rendering fix 2021-02-03 19:17:07 -05:00
Fatonndev
115df3aedd Add obvilionnetwork.ru Recapture and Attack servers (#4582)
* Add obvilionnetwork.ru Recapture and Attack servers

* Update servers_v6.json

* Update servers_v6.json
2021-02-03 17:04:55 -05:00
buthed010203
3c136ad0ba add transportation group to container and vault (#4499)
this allows for them to be placed over belts so that people no longer have to clear an area around the core when placing vaults around it.
2021-02-02 15:32:52 -05:00
Patrick 'Quezler' Mounier
48ee3d255d Make timescale accessible to logic (#4503) 2021-02-02 15:20:36 -05:00
QmelZ
b05f867800 add rotation to ParticleEffect (#4501)
* add rotation to ParticleEffect

* add offset
2021-02-02 13:14:47 -05:00
Anuken
55b790a0d4 Merge remote-tracking branch 'origin/master' 2021-02-02 13:13:45 -05:00
Anuken
57f6c9dfd9 Mech rebalancing 2021-02-02 13:13:38 -05:00
Nikopol
2f9c95afd0 Moving server to C.A.M.S. (#4497)
NikoCHIO now in C.A.M.S.
2021-02-02 09:22:54 -05:00
彭瑞暄
4fe1457d96 Updated zh-TW translations (#4449)
* Update bundle_zh_TW.properties

mod sorting & charge

* Changed "Charge"

A better translation came to mind
2021-02-01 09:29:03 -05:00
Folker
2589a27cb5 Create FileTreeInitEvent (#4489)
* filetree init event

* actions do your thing
2021-02-01 09:27:24 -05:00
Anuken
8704e14fd7 Fixed #4493 / Fixed #4492 / Fixed #4490 2021-02-01 09:24:39 -05:00
Anuken
2b17dbe390 #4487 but properly implemented 2021-01-31 19:44:29 -05:00
Anuken
919012608a Merge remote-tracking branch 'origin/master' 2021-01-31 16:35:17 -05:00
Anuken
5675a5b035 F 2021-01-31 16:35:13 -05:00
RebornTrack970
6724752980 Added server Omega (#4435)
* Added server Omega

This is the hub of my servers. The other ip for it is: omega.my.to:25906 but that one sometimes doesnt work.

* changed the ip to dns version

* the ip seems more useable

some devices cant seem to connet to dns.

Co-authored-by: Anuken <arnukren@gmail.com>
2021-01-31 15:58:26 -05:00
UnCaughT
0e078a9c60 Update servers_v6.json (#4452)
Русскоязычный сервер с Hex сражениями.
2021-01-31 15:57:08 -05:00
_owler_#0954
c0b1dfc55a closed. (#4481) 2021-01-31 15:52:55 -05:00
Anuken
3d201f7042 Fixed #4474 / Fixed #4475 / Fixed #4476 / Fixed #4483 2021-01-31 15:51:42 -05:00
Anuken
f1a5aae30a Merge remote-tracking branch 'origin/master' 2021-01-29 12:02:36 -05:00
Anuken
9142da2b70 Stop shooting upon crawler death 2021-01-29 12:02:31 -05:00
Vajda Simon
022c76bf45 bundle_hu.properties (#4464)
They spoke on Discord because of an incorrect translation.
2021-01-29 09:40:07 -05:00
Patrick 'Quezler' Mounier
bc6db72df0 Make fillitems fill the core to the brim (#4462)
Instead of just setting all items to the capacity of the first found core.
2021-01-29 09:38:26 -05:00
Anuken
d512aa5b21 Fixed #4463 2021-01-29 09:32:29 -05:00
Anuken
7cdf7a21fe Minor power graph optimizations 2021-01-28 12:07:50 -05:00
Anuken
9a5a6e1ce2 Merge remote-tracking branch 'origin/master' 2021-01-28 10:23:07 -05:00
Anuken
5a258d2830 Fixed #4461 2021-01-28 10:23:02 -05:00
Patrick 'Quezler' Mounier
96ee32f8ed Custom Game Underline 2: Electric Boogaloo (#4457)
* Update CustomGameDialog.java

* Remove .row() for consistensy
2021-01-28 09:06:30 -05:00
Joshua Fan
a667a94c8e Draw plastanium conveyors on conveyors layer (#4446) 2021-01-27 12:08:51 -05:00
Anuken
d0572a2a0d Merge remote-tracking branch 'origin/master' 2021-01-27 11:49:08 -05:00
Anuken
47eea79b60 Fixed #4453 / Fixed #4450 2021-01-27 11:49:04 -05:00
Patrick 'Quezler' Mounier
03b37235b3 producer -> generator (#4441) 2021-01-26 11:35:48 -05:00
Patrick 'Quezler' Mounier
6969fbb1e7 Give tsunami the extinguisher flag as well (#4442) 2021-01-26 11:31:36 -05:00
Anuken
ccc59aa61b Minor wave task tweaks 2021-01-26 10:37:36 -05:00
Anuken
c658865907 Dynamic lightning damage tweaks 2021-01-25 17:21:12 -05:00
Sunny Kim
a13d51e09a Charge stat for Item (#4392)
* Stat.discharge, discharge

* Update Items.java

* item.discharge

* full container = somewhat more than 4 full batteries

* Stat.discharge

* stat.discharge = Discharge

* Update core/src/mindustry/type/Item.java

Co-authored-by: Antsiferov Andrew <summet.dev@gmail.com>

* removed dis

* oops

* unit zap

Co-authored-by: Antsiferov Andrew <summet.dev@gmail.com>
2021-01-25 17:10:34 -05:00
Anuken
f827337259 Merge remote-tracking branch 'origin/master' 2021-01-25 16:16:45 -05:00
Anuken
b83c76f728 Improved liquid bridge throughput 2021-01-25 16:16:38 -05:00
Thomas Widyantoko
5666fd4999 new update in_ID translation (#4437)
yes
2021-01-25 14:32:35 -05:00
Anuken
5930e3c350 Cleanup 2021-01-25 12:53:27 -05:00
Anuken
4630e5b3a4 Wave spawning improvements 2021-01-25 10:28:36 -05:00
Anuken
f16990edcb Reconstructors: Accept unit dropped payload when disabled 2021-01-24 20:20:03 -05:00
FrederickDoering
13896589c2 Made disabling payload conveyors output from routers more reliable. (#4433)
Prevented reconstructors from being roughted to when disabled.

Co-authored-by: frederick_efd <frederick.doering@nordson.com>
2021-01-24 20:18:09 -05:00
Anuken
8b5cf5309a Reactive effect flag 2021-01-24 15:22:41 -05:00
Anuken
baedba0d5b Mutual status effect transitions 2021-01-24 14:20:48 -05:00
Anuken
9f926ef71e Merge remote-tracking branch 'origin/master' 2021-01-24 13:08:05 -05:00
Anuken
18a3f8bb68 Fixed #4431 2021-01-24 13:08:01 -05:00
genNAowl
623b7ada11 Let Logic Sense Range (#4425)
Co-authored-by: Leonwang4234 <62972692+Leonwang4234@users.noreply.github.com>
2021-01-24 09:23:12 -05:00
_owler_#0954
6b6d52e2fd Add new minigame (#4427)
PvP version of tower defence
2021-01-24 09:22:44 -05:00
MEEP of Faith
fc91b6b135 Colored construct (#4417) 2021-01-23 15:29:36 -05:00
Anuken
f9c33453f2 Merge remote-tracking branch 'origin/master' 2021-01-23 10:33:10 -05:00
Anuken
ad4650f408 Fixed #4420 / Fixed #4418 / Fixed #4416 2021-01-23 10:33:06 -05:00
Joshua Fan
8ca08a0f14 Make schematics build insulated blocks first, power nodes last (#4414)
* Make schematics build insulated blocks first, power nodes last

* Add schematicPriority property to sort by

* Assign schematicPriority of 10 to power diode
2021-01-23 10:28:26 -05:00
Anuken
792fdef95d Minor parse fix 2021-01-21 21:25:04 -05:00
Anuken
457514a2c8 Fixed #4407 2021-01-21 21:21:02 -05:00
Anuken
027d080c55 Fixed #4403 2021-01-21 16:10:16 -05:00
Anuken
bf8f059c25 Merge remote-tracking branch 'origin/master' 2021-01-21 14:45:51 -05:00
Anuken
a73165353f Fixed #4402 2021-01-21 14:45:43 -05:00
Nikopol
613b5a7703 Update servers_v6.json (#4401) 2021-01-21 10:54:24 -05:00
genNAowl
988791f18d Let Logic set (and read) Illuminator Color (#4374)
* illluminator color logic control

* remove sense

Co-authored-by: Leonwang4234 <62972692+Leonwang4234@users.noreply.github.com>
2021-01-21 09:30:36 -05:00
Patrick 'Quezler' Mounier
1fb608220f Make impact reactor warmup sensable as heat (#4399)
* Make impact reactor warmup sensable as heat

* Update ImpactReactor.java
2021-01-21 09:30:25 -05:00
키에르
56b87a2141 Add kr server (#4378)
* Add kr server

* Update servers_v6.json

Co-authored-by: Blockzilla101 <48705529+Blockzilla101@users.noreply.github.com>

Co-authored-by: Blockzilla101 <48705529+Blockzilla101@users.noreply.github.com>
2021-01-21 09:13:07 -05:00
Anuken
315cbaec47 progress 2021-01-05 11:17:20 -05:00
Anuken
68535bfcaa progress 2021-01-03 16:21:17 -05:00
1056 changed files with 35532 additions and 17677 deletions

View File

@@ -17,7 +17,7 @@ assignees: ''
**Link(s) to mod(s) used**: *The mod repositories or zip files that are related to the issue, if applicable.* **Link(s) to mod(s) used**: *The mod repositories or zip files that are related to the issue, if applicable.*
**Save file**: *The (zipped) save file you were playing on when the bug happened. THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME OR IN MULTIPLAYER, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT DELETE OR OMIT THIS LINE UNLESS YOU ARE SURE THAT THE ISSUE DOES NOT HAPPEN IN-GAME.* **Save file**: *The (zipped) save file you were playing on when the bug happened. THIS IS REQUIRED FOR ANY ISSUE HAPPENING IN-GAME OR IN MULTIPLAYER, REGARDLESS OF WHETHER YOU THINK IT HAPPENS EVERYWHERE. DO NOT DELETE OR OMIT THIS LINE UNLESS YOU ARE SURE THAT THE ISSUE DOES NOT HAPPEN IN-GAME. IF YOU DO NOT HAVE A SAVE, DON'T WASTE TIME OPENING THIS ISSUE.*
If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot. If you remove the line above without reading it properly and understanding what it means, I will reap your soul. Even if you're playing on someone's server, you can still save the game to a slot.

5
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,5 @@
If your pull request is **not** translation or serverlist-related, read the list of requirements below and check each box:
- [ ] I have read the [contribution guidelines](https://github.com/Anuken/Mindustry/blob/master/CONTRIBUTING.md).
- [ ] I have ensured that my code compiles, if applicable.
- [ ] I have ensured that any new features in this PR function correctly in-game, if applicable.

View File

@@ -6,32 +6,17 @@ on:
- 'v*' - 'v*'
jobs: jobs:
buildJava14: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up JDK 14 - name: Set up JDK 16
uses: actions/setup-java@v1 uses: actions/setup-java@v1
with: with:
java-version: 14 java-version: 16
- name: Set env - name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Create artifacts
run: |
./gradlew desktop:dist server:dist core:javadoc -Pbuildversion=${RELEASE_VERSION:1}
- name: Update docs
run: |
cd ../
git config --global user.email "cli@github.com"
git config --global user.name "Github Actions"
git clone --depth=1 https://github.com/MindustryGame/docs.git
cp -a Mindustry/core/build/docs/javadoc/. docs/
cd docs
git add .
git commit -m "Update ${RELEASE_VERSION:1}"
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/MindustryGame/docs
cd ../Mindustry
- name: Add Arc release - name: Add Arc release
run: | run: |
git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc git clone --depth=1 --branch=master https://github.com/Anuken/Arc ../Arc
@@ -39,14 +24,34 @@ jobs:
git tag ${RELEASE_VERSION} git tag ${RELEASE_VERSION}
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/Arc ${RELEASE_VERSION}; git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/Arc ${RELEASE_VERSION};
cd ../Mindustry cd ../Mindustry
- name: Create artifacts
run: |
./gradlew desktop:dist server:dist core:mergedJavadoc -Pbuildversion=${RELEASE_VERSION:1}
- name: Update docs
run: |
cd ../
git config --global user.email "cli@github.com"
git config --global user.name "Github Actions"
git clone --depth=1 https://github.com/MindustryGame/docs.git
cd docs
find . -maxdepth 1 ! -name ".git" ! -name . -exec rm -r {} \;
cd ../
cp -a Mindustry/core/build/javadoc/. docs/
cd docs
git add .
git commit --allow-empty -m "Update ${RELEASE_VERSION:1}"
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/MindustryGame/docs
cd ../Mindustry
- name: Update F-Droid build string - name: Update F-Droid build string
run: | run: |
git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds git clone --depth=1 --branch=master https://github.com/Anuken/MindustryBuilds ../MindustryBuilds
cd ../MindustryBuilds cd ../MindustryBuilds
echo "Updating version to ${RELEASE_VERSION:1}" echo "Updating version to ${RELEASE_VERSION:1}"
echo versionName=6-fdroid-${RELEASE_VERSION:1}$'\n'versionCode=${RELEASE_VERSION:1} > version_fdroid.txt BNUM=$(($GITHUB_RUN_NUMBER + 1000))
echo versionName=7-fdroid-${RELEASE_VERSION:1}$'\n'versionCode=${BNUM} > version_fdroid.txt
git add . git add .
git commit -m "Updating to build ${RELEASE_VERSION:1}" git commit -m "Updating to build ${RELEASE_VERSION:1}"
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryBuilds
cd ../Mindustry cd ../Mindustry
- name: Upload client artifacts - name: Upload client artifacts
uses: svenstaro/upload-release-action@v2 uses: svenstaro/upload-release-action@v2

View File

@@ -1,17 +1,17 @@
name: Pull Request Tests name: Pull Request Tests
on: [pull_request] on: [pull_request, workflow_dispatch]
jobs: jobs:
buildJava14: testPR:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up JDK 14 - name: Set up JDK 16
uses: actions/setup-java@v1 uses: actions/setup-java@v1
with: with:
java-version: 14 java-version: 16
- name: Run unit tests and build JAR - name: Run unit tests and build JAR
run: ./gradlew test desktop:dist run: ./gradlew test desktop:dist
- name: Upload desktop JAR for testing - name: Upload desktop JAR for testing

View File

@@ -3,17 +3,11 @@ name: Tests
on: [push, workflow_dispatch] on: [push, workflow_dispatch]
jobs: jobs:
buildJava14: runPush:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Set up JDK 14
uses: actions/setup-java@v1
with:
java-version: 14
- name: Run unit tests
run: ./gradlew clean cleanTest test
- name: Trigger BE build - name: Trigger BE build
if: ${{ github.repository == 'Anuken/Mindustry' }} if: ${{ github.repository == 'Anuken/Mindustry' }}
run: | run: |
@@ -23,3 +17,9 @@ jobs:
git tag ${BNUM} git tag ${BNUM}
git config --global user.name "Build Uploader" git config --global user.name "Build Uploader"
git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryBuilds ${BNUM} git push https://Anuken:${{ secrets.API_TOKEN_GITHUB }}@github.com/Anuken/MindustryBuilds ${BNUM}
- name: Set up JDK 16
uses: actions/setup-java@v1
with:
java-version: 16
- name: Run unit tests
run: ./gradlew clean cleanTest test

6
.gitignore vendored
View File

@@ -1,4 +1,5 @@
logs/ logs/
/fastlane/metadata/android/en-US/changelogs/
/core/assets/mindustry-saves/ /core/assets/mindustry-saves/
/core/assets/mindustry-maps/ /core/assets/mindustry-maps/
/core/assets/bundles/output/ /core/assets/bundles/output/
@@ -43,6 +44,7 @@ ios/robovm.properties
packr-out/ packr-out/
config/ config/
*.gif *.gif
/tests/out
/core/assets/basepartnames /core/assets/basepartnames
version.properties version.properties
@@ -101,6 +103,10 @@ com_crashlytics_export_strings.xml
.externalToolBuilders/ .externalToolBuilders/
*.launch *.launch
## VSCode
.vscode/
## NetBeans ## NetBeans
/nbproject/private/ /nbproject/private/

View File

@@ -26,7 +26,7 @@ This means:
- `camelCase`, **even for constants or enums**. Why? Because `SCREAMING_CASE` is ugly, annoying to type and does not achieve anything useful. Constants are *less* dangerous than variables, not more. Any reasonable IDE should highlight them for you anyway. - `camelCase`, **even for constants or enums**. Why? Because `SCREAMING_CASE` is ugly, annoying to type and does not achieve anything useful. Constants are *less* dangerous than variables, not more. Any reasonable IDE should highlight them for you anyway.
- No underscores for anything. (Yes, I know `Bindings` violates this principle, but that's for legacy reasons and really should be cleaned up some day) - No underscores for anything. (Yes, I know `Bindings` violates this principle, but that's for legacy reasons and really should be cleaned up some day)
- Do not use braceless `if/else` statements. `if(x) statement else statement2` should **never** be done. In very specific situations, having braceless if-statements on one line is allowed: `if(cond) return;` would be valid. - Do not use braceless `if/else` statements. `if(x) statement else statement2` should **never** be done. In very specific situations, having braceless if-statements on one line is allowed: `if(cond) return;` would be valid.
- Prefer single-line javadoc `/** @return for example */` instead of multiline javadoc whenver possible - Prefer single-line javadoc `/** @return for example */` instead of multiline javadoc whenever possible
- Short method/variable names (multipleLongWords should be avoided if it's possible to do so reasonably, especially for variables) - Short method/variable names (multipleLongWords should be avoided if it's possible to do so reasonably, especially for variables)
- Use wildcard imports - `import some.package.*` - for everything. This makes incorrect class usage more obvious (*e.g. arc.util.Timer vs java.util.Timer*) and leads to cleaner-looking code. - Use wildcard imports - `import some.package.*` - for everything. This makes incorrect class usage more obvious (*e.g. arc.util.Timer vs java.util.Timer*) and leads to cleaner-looking code.

View File

@@ -1,7 +1,7 @@
![Logo](core/assets-raw/sprites/ui/logo.png) ![Logo](core/assets-raw/sprites/ui/logo.png)
[![Build Status](https://travis-ci.org/Anuken/Mindustry.svg?branch=master)](https://travis-ci.org/Anuken/Mindustry) [![Build Status](https://github.com/Anuken/Mindustry/workflows/Tests/badge.svg?event=push)](https://github.com/Anuken/Mindustry/actions)
[![Discord](https://img.shields.io/discord/391020510269669376.svg?logo=discord&logoColor=white&logoWidth=20&labelColor=7289DA&label=Discord)](https://discord.gg/mindustry) [![Discord](https://img.shields.io/discord/391020510269669376.svg?logo=discord&logoColor=white&logoWidth=20&labelColor=7289DA&label=Discord&color=17cf48)](https://discord.gg/mindustry)
A sandbox tower defense game written in Java. A sandbox tower defense game written in Java.
@@ -18,7 +18,7 @@ See [CONTRIBUTING](CONTRIBUTING.md).
Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases).
If you'd rather compile on your own, follow these instructions. If you'd rather compile on your own, follow these instructions.
First, make sure you have [JDK 14](https://adoptopenjdk.net/) installed. Open a terminal in the root directory, `cd` to the Mindustry folder and run the following commands: First, make sure you have [JDK 16](https://adoptopenjdk.net/archive.html?variant=openjdk16&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands:
### Windows ### Windows
@@ -38,7 +38,7 @@ Server builds are bundled with each released build (in Releases). If you'd rathe
### Android ### Android
1. Install the Android SDK [here.](https://developer.android.com/studio#downloads) Make sure you're downloading the "Command line tools only", as Android Studio is not required. 1. Install the Android SDK [here.](https://developer.android.com/studio#command-tools) Make sure you're downloading the "Command line tools only", as Android Studio is not required.
2. Set the `ANDROID_HOME` environment variable to point to your unzipped Android SDK directory. 2. Set the `ANDROID_HOME` environment variable to point to your unzipped Android SDK directory.
3. Run `gradlew android:assembleDebug` (or `./gradlew` if on linux/mac). This will create an unsigned APK in `android/build/outputs/apk`. 3. Run `gradlew android:assembleDebug` (or `./gradlew` if on linux/mac). This will create an unsigned APK in `android/build/outputs/apk`.

View File

@@ -6,16 +6,17 @@ This is done by letting clients `GET` a [JSON list of servers](https://github.co
You may want to add your server to this list. The steps for getting this done are as follows: You may want to add your server to this list. The steps for getting this done are as follows:
1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well. 1. **Ensure your server is properly moderated.** For the most part, this applies to survival servers, but PvP servers can be affected as well.
You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins. You'll need to either hire some moderators, or make use of (currently non-existent) anti-grief and anti-curse plugins.
*Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example. *Consider enabling a rate limit:* `config messageRateLimit 2` will make it so that players can only send messages every 2 seconds, for example.
2. **Set an appropriate MOTD, name and description.** This is set with `config <name/desc/motd> <value>`. "Appropriate" means that: 2. Make sure that your server is able to handle inappropriate content - this includes NSFW display/sorter art and abusive messages. **Servers that allow such content will be removed immediately.** Consider banning display blocks if it is a problem for your server: `rules add bannedBlocks ["logic-display", "large-logic-display"]`.
3. **Set an appropriate MOTD, name and description.** This is set with `config <name/desc/motd> <value>`. "Appropriate" means that:
- Your name or description must reflect the type of server you're hosting. - Your name or description must reflect the type of server you're hosting.
Since new players may be exposed to the server list early on, put in a phrase like "Co-op survival" or "PvP" so players know what they're getting into. Yes, this is also displayed in the server mode info text, but having extra info in the name doesn't hurt. Since new players may be exposed to the server list early on, put in a phrase like "Co-op survival" or "PvP" so players know what they're getting into. Yes, this is also displayed in the server mode info text, but having extra info in the name doesn't hurt.
- Make sure players know where to refer to for server support. It should be fairly clear that the server owner is not me, but you. - Make sure players know where to refer to for server support. It should be fairly clear that the server owner is not me, but you.
- Try to be professional in your text; use common sense. - Try to be professional in your text; use common sense.
3. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option. 4. **Get some good maps.** *(optional, but highly recommended)*. Add some maps to your server and set the map rotation to custom-only. You can get maps from the Steam workshop by subscribing and exporting them; using the `#maps` channel on Discord is also an option.
4. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`). 5. **Check your server configuration.** *(optional)* I would recommend adding a message rate limit of 1 second (`config messageRateLimit 1`), and disabling connect/disconnect messages to reduce spam (`config showConnectMessages false`).
5. Finally, **submit a pull request** to add your server's IP to the list. 6. Finally, **submit a pull request** to add your server's IP to the list.
This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json), then add a JSON object with a single key, indicating your server address. This should be fairly straightforward: Press the edit button on the [server file](https://github.com/Anuken/Mindustry/blob/master/servers_v6.json), then add a JSON object with a single key, indicating your server address.
For example, if your server address is `google.com`, you would add a comma after the last entry and insert: For example, if your server address is `google.com`, you would add a comma after the last entry and insert:
```json ```json

View File

@@ -14,10 +14,11 @@
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:isGame="true" android:isGame="true"
android:theme="@style/ArcTheme"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
android:appCategory="game" android:appCategory="game"
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/ArcTheme" android:fullBackupContent="@xml/backup_rules"> android:fullBackupContent="@xml/backup_rules">
<meta-data android:name="android.max_aspect" android:value="2.1"/> <meta-data android:name="android.max_aspect" android:value="2.1"/>
<activity <activity
android:name="mindustry.android.AndroidLauncher" android:name="mindustry.android.AndroidLauncher"

View File

@@ -4,13 +4,10 @@ buildscript{
mavenCentral() mavenCentral()
google() google()
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" } maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter()
} }
dependencies{ dependencies{
//IMPORTANT NOTICE: any version of the plugin after 3.4.1 will break builds classpath 'com.android.tools.build:gradle:7.0.1'
//it appears abstract methods don't get desugared properly (if at all)
classpath 'com.android.tools.build:gradle:3.4.1'
} }
} }
@@ -20,36 +17,20 @@ configurations{ natives }
repositories{ repositories{
mavenCentral() mavenCentral()
jcenter()
maven{ url "https://maven.google.com" } maven{ url "https://maven.google.com" }
} }
dependencies{
implementation project(":core")
implementation arcModule("backends:backend-android")
implementation 'com.jakewharton.android.repackaged:dalvik-dx:9.0.0_r3'
natives "com.github.Anuken.Arc:natives-android:${getArcHash()}"
natives "com.github.Anuken.Arc:natives-freetype-android:${getArcHash()}"
natives "com.github.Anuken.Arc:natives-box2d-android:${getArcHash()}"
//android dependencies magically disappear during compilation, thanks gradle!
def sdkFile = new File((String)findSdkDir(), "/platforms/android-29/android.jar")
if(sdkFile.exists()) compileOnly files(sdkFile.absolutePath)
}
task deploy(type: Copy){ task deploy(type: Copy){
dependsOn "assembleRelease" dependsOn "assembleRelease"
from "build/outputs/apk/release/android-release.apk" from "build/outputs/apk/standard/release/android-standard-release.apk"
into "../deploy/" into "../deploy/"
rename("android-release.apk", "${generateDeployName('android')}.apk") rename("android-standard-release.apk", "${generateDeployName('android')}.apk")
} }
android{ android{
buildToolsVersion '29.0.3' buildToolsVersion '30.0.2'
compileSdkVersion 29 compileSdkVersion 30
sourceSets{ sourceSets{
main{ main{
manifest.srcFile 'AndroidManifest.xml' manifest.srcFile 'AndroidManifest.xml'
@@ -60,9 +41,13 @@ android{
assets.srcDirs = ['assets', 'src/main/assets', '../core/assets/'] assets.srcDirs = ['assets', 'src/main/assets', '../core/assets/']
jniLibs.srcDirs = ['libs'] jniLibs.srcDirs = ['libs']
} }
gp{
java.srcDirs = ['srcgp']
}
androidTest.setRoot('tests') androidTest.setRoot('tests')
} }
packagingOptions{ packagingOptions{
exclude 'META-INF/robovm/ios/robovm.xml' exclude 'META-INF/robovm/ios/robovm.xml'
} }
@@ -74,7 +59,7 @@ android{
applicationId "io.anuke.mindustry" applicationId "io.anuke.mindustry"
minSdkVersion 14 minSdkVersion 14
targetSdkVersion 29 targetSdkVersion 30
versionName versionNameResult versionName versionNameResult
versionCode = (System.getenv("TRAVIS_BUILD_ID") != null ? System.getenv("TRAVIS_BUILD_ID").toInteger() : vcode) versionCode = (System.getenv("TRAVIS_BUILD_ID") != null ? System.getenv("TRAVIS_BUILD_ID").toInteger() : vcode)
@@ -110,6 +95,17 @@ android{
} }
} }
buildTypes{
all{
minifyEnabled = true
shrinkResources = true
//this is the ONLY WAY I could find to force r8 to keep its filthy hands off of my default interfaces.
//may have undesirable side effects
debuggable = true
proguardFiles("proguard-rules.pro")
}
}
if(project.hasProperty("RELEASE_STORE_FILE") || System.getenv("CI") == "true"){ if(project.hasProperty("RELEASE_STORE_FILE") || System.getenv("CI") == "true"){
buildTypes{ buildTypes{
release{ release{
@@ -117,10 +113,37 @@ android{
} }
} }
} }
// Specifies one flavor dimension.
flavorDimensions "version"
productFlavors{
standard{
}
gp{
applicationIdSuffix ".gp"
versionNameSuffix "-gp"
}
}
} }
// called every time gradle gets executed, takes the native dependencies of
// the natives configuration, and extracts them to the proper libs/ folders dependencies{
// so they get packed with the APK. implementation project(":core")
implementation arcModule("backends:backend-android")
implementation 'com.jakewharton.android.repackaged:dalvik-dx:9.0.0_r3'
natives "com.github.Anuken.Arc:natives-android:${getArcHash()}"
natives "com.github.Anuken.Arc:natives-freetype-android:${getArcHash()}"
gpImplementation "com.google.android.gms:play-services-games:21.0.0"
gpImplementation "com.google.android.gms:play-services-auth:19.0.0"
//android dependencies magically disappear during compilation, thanks gradle!
def sdkFile = new File((String)findSdkDir(), "/platforms/android-29/android.jar")
if(sdkFile.exists()) compileOnly files(sdkFile.absolutePath)
}
task copyAndroidNatives(){ task copyAndroidNatives(){
configurations.natives.files.each{ jar -> configurations.natives.files.each{ jar ->
copy{ copy{
@@ -132,29 +155,13 @@ task copyAndroidNatives(){
} }
task run(type: Exec){ task run(type: Exec){
def path commandLine "${findSdkDir()}/platform-tools/adb", 'shell', 'am', 'start', '-n', 'io.anuke.mindustry/mindustry.android.AndroidLauncher'
def localProperties = project.file("../local.properties")
if(localProperties.exists()){
Properties properties = new Properties()
localProperties.withInputStream{ instr ->
properties.load(instr)
}
def sdkDir = properties.getProperty('sdk.dir')
if(sdkDir){
path = sdkDir
}else{
path = "$System.env.ANDROID_HOME"
}
}else{
path = "$System.env.ANDROID_HOME"
}
def adb = path + "/platform-tools/adb"
commandLine "$adb", 'shell', 'am', 'start', '-n', 'io.anuke.mindustry/mindustry.android.AndroidLauncher'
} }
if(!project.ext.hasSprites()){ if(!project.ext.hasSprites()){
println "Scheduling sprite pack." tasks.whenTaskAdded{ task ->
run.dependsOn ":tools:pack" if(task.name == 'assembleDebug' || task.name == 'assembleRelease'){
deploy.dependsOn ":tools:pack" task.dependsOn ":tools:pack"
} }
}
}

9
android/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,9 @@
-dontobfuscate
#these are essential packages that should not be "optimized" in any way
#the main purpose of d8 here is to shrink the absurdly-large google play games libraries
-keep class mindustry.** { *; }
-keep class arc.** { *; }
-keep class net.jpountz.** { *; }
-keep class rhino.** { *; }
-keep class com.android.dex.** { *; }

View File

@@ -8,4 +8,4 @@
<item name="android:windowContentOverlay">@null</item> <item name="android:windowContentOverlay">@null</item>
<item name="android:windowFullscreen">true</item> <item name="android:windowFullscreen">true</item>
</style> </style>
</resources> </resources>

View File

@@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name">Mindustry</string> <string name="app_name">Mindustry</string>
</resources> </resources>

View File

@@ -1,5 +1,4 @@
<resources> <resources>
<style name="ArcTheme" parent="android:Theme"> <style name="ArcTheme" parent="android:Theme">
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item> <item name="android:colorBackgroundCacheHint">@null</item>
@@ -8,5 +7,4 @@
<item name="android:windowContentOverlay">@null</item> <item name="android:windowContentOverlay">@null</item>
<item name="android:windowFullscreen">true</item> <item name="android:windowFullscreen">true</item>
</style> </style>
</resources>
</resources>

View File

@@ -33,6 +33,9 @@ public class AndroidLauncher extends AndroidApplication{
FileChooser chooser; FileChooser chooser;
Runnable permCallback; Runnable permCallback;
Object gpService;
Class<?> serviceClass;
@Override @Override
protected void onCreate(Bundle savedInstanceState){ protected void onCreate(Bundle savedInstanceState){
UncaughtExceptionHandler handler = Thread.getDefaultUncaughtExceptionHandler(); UncaughtExceptionHandler handler = Thread.getDefaultUncaughtExceptionHandler();
@@ -44,14 +47,13 @@ public class AndroidLauncher extends AndroidApplication{
if(handler != null){ if(handler != null){
handler.uncaughtException(thread, error); handler.uncaughtException(thread, error);
}else{ }else{
error.printStackTrace();
Log.err(error); Log.err(error);
System.exit(1); System.exit(1);
} }
}); });
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if(doubleScaleTablets && isTablet(this.getContext())){ if(doubleScaleTablets && isTablet(this)){
Scl.setAddition(0.5f); Scl.setAddition(0.5f);
} }
@@ -64,7 +66,7 @@ public class AndroidLauncher extends AndroidApplication{
@Override @Override
public rhino.Context getScriptContext(){ public rhino.Context getScriptContext(){
return AndroidRhinoContext.enter(getContext().getCacheDir()); return AndroidRhinoContext.enter(getCacheDir());
} }
@Override @Override
@@ -72,9 +74,28 @@ public class AndroidLauncher extends AndroidApplication{
} }
@Override @Override
public Class<?> loadJar(Fi jar, String mainClass) throws Exception{ public ClassLoader loadJar(Fi jar, ClassLoader parent) throws Exception{
DexClassLoader loader = new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, getClassLoader()); return new DexClassLoader(jar.file().getPath(), getFilesDir().getPath(), null, parent){
return Class.forName(mainClass, true, loader); @Override
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException{
//check for loaded state
Class<?> loadedClass = findLoadedClass(name);
if(loadedClass == null){
try{
//try to load own class first
loadedClass = findClass(name);
}catch(ClassNotFoundException | NoClassDefFoundError e){
//use parent if not found
return parent.loadClass(name);
}
}
if(resolve){
resolveClass(loadedClass);
}
return loadedClass;
}
};
} }
@Override @Override
@@ -162,15 +183,25 @@ public class AndroidLauncher extends AndroidApplication{
}, new AndroidApplicationConfiguration(){{ }, new AndroidApplicationConfiguration(){{
useImmersiveMode = true; useImmersiveMode = true;
hideStatusBar = true; hideStatusBar = true;
stencil = 8;
}}); }});
checkFiles(getIntent()); checkFiles(getIntent());
try{ try{
//new external folder //new external folder
Fi data = Core.files.absolute(getContext().getExternalFilesDir(null).getAbsolutePath()); Fi data = Core.files.absolute(((Context)this).getExternalFilesDir(null).getAbsolutePath());
Core.settings.setDataDirectory(data); Core.settings.setDataDirectory(data);
//delete unused cache folder to free up space
try{
Fi cache = Core.settings.getDataDirectory().child("cache");
if(cache.exists()){
cache.deleteDirectory();
}
}catch(Throwable t){
Log.err("Failed to delete cached folder", t);
}
//move to internal storage if there's no file indicating that it moved //move to internal storage if there's no file indicating that it moved
if(!Core.files.local("files_moved").exists()){ if(!Core.files.local("files_moved").exists()){
Log.info("Moving files to external storage..."); Log.info("Moving files to external storage...");
@@ -212,6 +243,24 @@ public class AndroidLauncher extends AndroidApplication{
} }
} }
@Override
public void onResume(){
super.onResume();
//TODO enable once GPGS is set up on the GP console
if(false && getPackageName().endsWith(".gp")){
try{
if(gpService == null){
serviceClass = Class.forName("mindustry.android.GPGameService");
gpService = serviceClass.getConstructor().newInstance();
}
serviceClass.getMethod("onResume", Context.class).invoke(gpService, this);
}catch(Exception e){
Log.err("Failed to update Google Play Services", e);
}
}
}
private void checkFiles(Intent intent){ private void checkFiles(Intent intent){
try{ try{
Uri uri = intent.getData(); Uri uri = intent.getData();

View File

@@ -13,6 +13,7 @@ import com.android.dx.dex.cf.*;
import com.android.dx.dex.file.DexFile; import com.android.dx.dex.file.DexFile;
import com.android.dx.merge.*; import com.android.dx.merge.*;
import dalvik.system.*; import dalvik.system.*;
import mindustry.mod.*;
import rhino.*; import rhino.*;
import java.io.*; import java.io.*;
@@ -30,23 +31,6 @@ public class AndroidRhinoContext{
* @return a context prepared for android * @return a context prepared for android
*/ */
public static Context enter(File cacheDirectory){ public static Context enter(File cacheDirectory){
if(!SecurityController.hasGlobal())
SecurityController.initGlobal(new SecurityController(){
@Override
public GeneratedClassLoader createClassLoader(ClassLoader classLoader, Object o){
return Context.getCurrentContext().createClassLoader(classLoader);
}
@Override
public Object getDynamicSecurityDomain(Object o){
return null;
}
@Override
public Object callWithDomain(Object o, Context context, Callable callable, Scriptable scriptable, Scriptable scriptable1, Object[] objects){
return null;
}
});
AndroidContextFactory factory; AndroidContextFactory factory;
if(!ContextFactory.hasExplicitGlobal()){ if(!ContextFactory.hasExplicitGlobal()){
@@ -175,7 +159,7 @@ public class AndroidRhinoContext{
}catch(IOException e){ }catch(IOException e){
e.printStackTrace(); e.printStackTrace();
} }
android.content.Context context = ((AndroidApplication) Core.app).getContext(); android.content.Context context = (android.content.Context)((AndroidApplication)Core.app);
return new DexClassLoader(dexFile.getPath(), VERSION.SDK_INT >= 21 ? context.getCodeCacheDir().getPath() : context.getCacheDir().getAbsolutePath(), null, getParent()).loadClass(name); return new DexClassLoader(dexFile.getPath(), VERSION.SDK_INT >= 21 ? context.getCodeCacheDir().getPath() : context.getCacheDir().getAbsolutePath(), null, getParent()).loadClass(name);
} }

View File

@@ -0,0 +1,40 @@
package mindustry.android;
import android.content.*;
import arc.util.*;
import com.google.android.gms.auth.api.signin.*;
import com.google.android.gms.games.*;
import mindustry.service.*;
public class GPGameService extends GameService{
private GoogleSignInAccount account;
public void onResume(Context context){
Log.info("[GooglePlayService] Resuming.");
GoogleSignInAccount current = GoogleSignIn.getLastSignedInAccount(context);
GoogleSignInOptions options =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestScopes(Games.SCOPE_GAMES_SNAPSHOTS)
.build();
if(GoogleSignIn.hasPermissions(current, options.getScopeArray())){
this.account = current;
Log.info("Already signed in to Google Play Games.");
}else{
GoogleSignIn.getClient(context, options).silentSignIn().addOnCompleteListener(complete -> {
if(!complete.isSuccessful()){
if(complete.getException() != null){
Log.err("Failed to sign in to Google Play Games.", complete.getException());
}else{
Log.warn("Failed to sign in to Google Play Games.");
}
}else{
this.account = complete.getResult();
Log.info("Signed in to Google Play Games.");
}
});
}
}
}

View File

@@ -118,7 +118,7 @@ public class Annotations{
/** /**
* The region name to load. Variables can be used: * The region name to load. Variables can be used:
* "@" -> block name * "@" -> block name
* "$size" -> block size * "@size" -> block size
* "#" "#1" "#2" -> index number, for arrays * "#" "#1" "#2" -> index number, for arrays
* */ * */
String value(); String value();
@@ -177,12 +177,12 @@ public class Annotations{
//region remote //region remote
public enum PacketPriority{ public enum PacketPriority{
/** Does not get handled unless client is connected. */
low,
/** Gets put in a queue and processed if not connected. */ /** Gets put in a queue and processed if not connected. */
normal, normal,
/** Gets handled immediately, regardless of connection status. */ /** Gets handled immediately, regardless of connection status. */
high, high,
/** Does not get handled unless client is connected. */
low
} }
/** A set of two booleans, one specifying server and one specifying client. */ /** A set of two booleans, one specifying server and one specifying client. */

View File

@@ -2,15 +2,10 @@ package mindustry.annotations;
import arc.files.*; import arc.files.*;
import arc.struct.*; import arc.struct.*;
import arc.util.Log;
import arc.util.Log.*;
import arc.util.*; import arc.util.*;
import arc.util.Log.*;
import com.squareup.javapoet.*; import com.squareup.javapoet.*;
import com.sun.source.util.*; import com.sun.source.util.*;
import com.sun.tools.javac.model.*;
import com.sun.tools.javac.processing.*;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.util.*;
import mindustry.annotations.util.*; import mindustry.annotations.util.*;
import javax.annotation.processing.*; import javax.annotation.processing.*;
@@ -22,7 +17,6 @@ import javax.tools.Diagnostic.*;
import javax.tools.*; import javax.tools.*;
import java.io.*; import java.io.*;
import java.lang.annotation.*; import java.lang.annotation.*;
import java.util.List;
import java.util.*; import java.util.*;
@SupportedSourceVersion(SourceVersion.RELEASE_8) @SupportedSourceVersion(SourceVersion.RELEASE_8)
@@ -31,19 +25,16 @@ public abstract class BaseProcessor extends AbstractProcessor{
public static final String packageName = "mindustry.gen"; public static final String packageName = "mindustry.gen";
public static Types typeu; public static Types typeu;
public static JavacElements elementu; public static Elements elementu;
public static Filer filer; public static Filer filer;
public static Messager messager; public static Messager messager;
public static Trees trees; public static Trees trees;
public static TreeMaker maker;
protected int round; protected int round;
protected int rounds = 1; protected int rounds = 1;
protected RoundEnvironment env; protected RoundEnvironment env;
protected Fi rootDirectory; protected Fi rootDirectory;
protected Context context;
public static String getMethodName(Element element){ public static String getMethodName(Element element){
return ((TypeElement)element.getEnclosingElement()).getQualifiedName().toString() + "." + element.getSimpleName(); return ((TypeElement)element.getEnclosingElement()).getQualifiedName().toString() + "." + element.getSimpleName();
} }
@@ -100,7 +91,7 @@ public abstract class BaseProcessor extends AbstractProcessor{
} }
public static TypeName tname(String pack, String simple){ public static TypeName tname(String pack, String simple){
return ClassName.get(pack, simple ); return ClassName.get(pack, simple);
} }
public static TypeName tname(String name){ public static TypeName tname(String name){
@@ -186,7 +177,7 @@ public abstract class BaseProcessor extends AbstractProcessor{
Log.err("[CODEGEN ERROR] " + message + ": " + elem); Log.err("[CODEGEN ERROR] " + message + ": " + elem);
} }
public void err(String message, Selement elem){ public static void err(String message, Selement elem){
err(message, elem.e); err(message, elem.e);
} }
@@ -194,15 +185,11 @@ public abstract class BaseProcessor extends AbstractProcessor{
public synchronized void init(ProcessingEnvironment env){ public synchronized void init(ProcessingEnvironment env){
super.init(env); super.init(env);
JavacProcessingEnvironment javacProcessingEnv = (JavacProcessingEnvironment)env;
trees = Trees.instance(env); trees = Trees.instance(env);
typeu = env.getTypeUtils(); typeu = env.getTypeUtils();
elementu = javacProcessingEnv.getElementUtils(); elementu = env.getElementUtils();
filer = env.getFiler(); filer = env.getFiler();
messager = env.getMessager(); messager = env.getMessager();
context = ((JavacProcessingEnvironment)env).getContext();
maker = TreeMaker.instance(javacProcessingEnv.getContext());
Log.level = LogLevel.info; Log.level = LogLevel.info;
@@ -219,7 +206,7 @@ public abstract class BaseProcessor extends AbstractProcessor{
String path = Fi.get(filer.getResource(StandardLocation.CLASS_OUTPUT, "no", "no") String path = Fi.get(filer.getResource(StandardLocation.CLASS_OUTPUT, "no", "no")
.toUri().toURL().toString().substring(OS.isWindows ? 6 : "file:".length())) .toUri().toURL().toString().substring(OS.isWindows ? 6 : "file:".length()))
.parent().parent().parent().parent().parent().parent().parent().toString().replace("%20", " "); .parent().parent().parent().parent().parent().parent().parent().toString().replace("%20", " ");
rootDirectory = Fi.get(path); rootDirectory = Fi.get(path).parent();
}catch(IOException e){ }catch(IOException e){
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View File

@@ -143,6 +143,7 @@ public class EntityIO{
if(sl) cont("if(!islocal)"); if(sl) cont("if(!islocal)");
if(sf){ if(sf){
//TODO adding + targetSuf to the assignment fixes units being interpolated incorrectly during physics, but makes interpolation snap instead.
st(field.name + lastSuf + " = this." + field.name); st(field.name + lastSuf + " = this." + field.name);
} }

View File

@@ -101,6 +101,8 @@ public class EntityProcess extends BaseProcessor{
inter.addJavadoc("Interface for {@link $L}", component.fullName()); inter.addJavadoc("Interface for {@link $L}", component.fullName());
skipDeprecated(inter);
//implement extra interfaces these components may have, e.g. position //implement extra interfaces these components may have, e.g. position
for(Stype extraInterface : component.interfaces().select(i -> !isCompInterface(i))){ for(Stype extraInterface : component.interfaces().select(i -> !isCompInterface(i))){
//javapoet completely chokes on this if I add `addSuperInterface` or create the type name with TypeName.get //javapoet completely chokes on this if I add `addSuperInterface` or create the type name with TypeName.get
@@ -132,6 +134,7 @@ public class EntityProcess extends BaseProcessor{
.build())).addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT).build()); .build())).addModifiers(Modifier.PUBLIC, Modifier.ABSTRACT).build());
} }
//generate interface getters and setters for all "standard" fields
for(Svar field : component.fields().select(e -> !e.is(Modifier.STATIC) && !e.is(Modifier.PRIVATE) && !e.has(Import.class))){ for(Svar field : component.fields().select(e -> !e.is(Modifier.STATIC) && !e.is(Modifier.PRIVATE) && !e.has(Import.class))){
String cname = field.name(); String cname = field.name();
@@ -273,7 +276,10 @@ public class EntityProcess extends BaseProcessor{
name += "Entity"; name += "Entity";
} }
if(ann.legacy()){ boolean legacy = ann.legacy();
if(legacy){
baseClass = tname(packageName + "." + name);
name += "Legacy" + Strings.capitalize(type.name()); name += "Legacy" + Strings.capitalize(type.name());
} }
@@ -338,7 +344,8 @@ public class EntityProcess extends BaseProcessor{
boolean isVisible = !f.is(Modifier.STATIC) && !f.is(Modifier.PRIVATE) && !f.has(ReadOnly.class); boolean isVisible = !f.is(Modifier.STATIC) && !f.is(Modifier.PRIVATE) && !f.has(ReadOnly.class);
//add the field only if it isn't visible or it wasn't implemented by the base class //add the field only if it isn't visible or it wasn't implemented by the base class
if(!isShadowed || !isVisible){ //legacy classes have no extra fields
if((!isShadowed || !isVisible) && !legacy){
builder.addField(spec); builder.addField(spec);
} }
@@ -348,7 +355,7 @@ public class EntityProcess extends BaseProcessor{
allFields.add(f); allFields.add(f);
//add extra sync fields //add extra sync fields
if(f.has(SyncField.class) && isSync){ if(f.has(SyncField.class) && isSync && !legacy){
if(!f.tname().toString().equals("float")) err("All SyncFields must be of type float", f); if(!f.tname().toString().equals("float")) err("All SyncFields must be of type float", f);
syncedFields.add(f); syncedFields.add(f);
@@ -442,11 +449,14 @@ public class EntityProcess extends BaseProcessor{
} }
} }
boolean specialIO = false;
if(hasIO){ if(hasIO){
//SPECIAL CASE: I/O code //SPECIAL CASE: I/O code
//note that serialization is generated even for non-serializing entities for manual usage //note that serialization is generated even for non-serializing entities for manual usage
if((first.name().equals("read") || first.name().equals("write"))){ if((first.name().equals("read") || first.name().equals("write"))){
io.write(mbuilder, first.name().equals("write")); io.write(mbuilder, first.name().equals("write"));
specialIO = true;
} }
//SPECIAL CASE: sync I/O code //SPECIAL CASE: sync I/O code
@@ -525,7 +535,9 @@ public class EntityProcess extends BaseProcessor{
mbuilder.addStatement("mindustry.gen.Groups.queueFree(($T)this)", Poolable.class); mbuilder.addStatement("mindustry.gen.Groups.queueFree(($T)this)", Poolable.class);
} }
builder.addMethod(mbuilder.build()); if(!legacy || specialIO){
builder.addMethod(mbuilder.build());
}
} }
//add pool reset method and implement Poolable //add pool reset method and implement Poolable
@@ -560,7 +572,9 @@ public class EntityProcess extends BaseProcessor{
.returns(tname(packageName + "." + name)) .returns(tname(packageName + "." + name))
.addStatement(ann.pooled() ? "return Pools.obtain($L.class, " +name +"::new)" : "return new $L()", name).build()); .addStatement(ann.pooled() ? "return Pools.obtain($L.class, " +name +"::new)" : "return new $L()", name).build());
definitions.add(new EntityDefinition(packageName + "." + name, builder, type, typeIsBase ? null : baseClass, components, groups, allFieldSpecs)); skipDeprecated(builder);
definitions.add(new EntityDefinition(packageName + "." + name, builder, type, typeIsBase ? null : baseClass, components, groups, allFieldSpecs, legacy));
} }
//generate groups //generate groups
@@ -665,11 +679,28 @@ public class EntityProcess extends BaseProcessor{
//build mapping class for sync IDs //build mapping class for sync IDs
TypeSpec.Builder idBuilder = TypeSpec.classBuilder("EntityMapping").addModifiers(Modifier.PUBLIC) TypeSpec.Builder idBuilder = TypeSpec.classBuilder("EntityMapping").addModifiers(Modifier.PUBLIC)
.addField(FieldSpec.builder(TypeName.get(Prov[].class), "idMap", Modifier.PUBLIC, Modifier.STATIC).initializer("new Prov[256]").build()) .addField(FieldSpec.builder(TypeName.get(Prov[].class), "idMap", Modifier.PUBLIC, Modifier.STATIC).initializer("new Prov[256]").build())
.addField(FieldSpec.builder(ParameterizedTypeName.get(ClassName.get(ObjectMap.class), .addField(FieldSpec.builder(ParameterizedTypeName.get(ClassName.get(ObjectMap.class),
tname(String.class), tname(Prov.class)), tname(String.class), tname(Prov.class)),
"nameMap", Modifier.PUBLIC, Modifier.STATIC).initializer("new ObjectMap<>()").build()) "nameMap", Modifier.PUBLIC, Modifier.STATIC).initializer("new ObjectMap<>()").build())
.addField(FieldSpec.builder(ParameterizedTypeName.get(ClassName.get(IntMap.class), tname(String.class)),
"customIdMap", Modifier.PUBLIC, Modifier.STATIC).initializer("new IntMap<>()").build())
.addMethod(MethodSpec.methodBuilder("register").addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(TypeName.get(int.class))
.addParameter(String.class, "name").addParameter(Prov.class, "constructor")
.addStatement("int next = arc.util.Structs.indexOf(idMap, v -> v == null)")
.addStatement("idMap[next] = constructor")
.addStatement("nameMap.put(name, constructor)")
.addStatement("customIdMap.put(next, name)")
.addStatement("return next")
.addJavadoc("Use this method for obtaining a classId for custom modded unit types. Only call this once for each type. Modded types should return this id in their overridden classId method.")
.build())
.addMethod(MethodSpec.methodBuilder("map").addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addMethod(MethodSpec.methodBuilder("map").addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(TypeName.get(Prov.class)).addParameter(int.class, "id").addStatement("return idMap[id]").build()) .returns(TypeName.get(Prov.class)).addParameter(int.class, "id").addStatement("return idMap[id]").build())
.addMethod(MethodSpec.methodBuilder("map").addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addMethod(MethodSpec.methodBuilder("map").addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(TypeName.get(Prov.class)).addParameter(String.class, "name").addStatement("return nameMap.get(name)").build()); .returns(TypeName.get(Prov.class)).addParameter(String.class, "name").addStatement("return nameMap.get(name)").build());
@@ -698,11 +729,6 @@ public class EntityProcess extends BaseProcessor{
}else{ }else{
//round 3: generate actual classes and implement interfaces //round 3: generate actual classes and implement interfaces
//write base classes
for(TypeSpec.Builder b : baseClasses){
write(b, imports.asArray());
}
//implement each definition //implement each definition
for(EntityDefinition def : definitions){ for(EntityDefinition def : definitions){
@@ -725,6 +751,14 @@ public class EntityProcess extends BaseProcessor{
def.builder.addSuperinterface(inter.tname()); def.builder.addSuperinterface(inter.tname());
if(def.legacy) continue;
@Nullable TypeSpec.Builder superclass = null;
if(def.extend != null){
superclass = baseClasses.find(b -> (packageName + "." + Reflect.get(b, "name")).equals(def.extend.toString()));
}
//generate getter/setter for each method //generate getter/setter for each method
for(Smethod method : inter.methods()){ for(Smethod method : inter.methods()){
String var = method.name(); String var = method.name();
@@ -732,14 +766,36 @@ public class EntityProcess extends BaseProcessor{
//make sure it's a real variable AND that the component doesn't already implement it somewhere with custom logic //make sure it's a real variable AND that the component doesn't already implement it somewhere with custom logic
if(field == null || methodNames.contains(method.simpleString())) continue; if(field == null || methodNames.contains(method.simpleString())) continue;
MethodSpec result = null;
//getter //getter
if(!method.isVoid()){ if(!method.isVoid()){
def.builder.addMethod(MethodSpec.overriding(method.e).addStatement("return " + var).build()); result = MethodSpec.overriding(method.e).addStatement("return " + var).build();
} }
//setter //setter
if(method.isVoid() && !Seq.with(field.annotations).contains(f -> f.type.toString().equals("@mindustry.annotations.Annotations.ReadOnly"))){ if(method.isVoid() && !Seq.with(field.annotations).contains(f -> f.type.toString().equals("@mindustry.annotations.Annotations.ReadOnly"))){
def.builder.addMethod(MethodSpec.overriding(method.e).addStatement("this." + var + " = " + var).build()); result = MethodSpec.overriding(method.e).addStatement("this." + var + " = " + var).build();
}
//add getter/setter to parent class, if possible. when this happens, skip adding getters setters *here* because they are defined in the superclass.
if(result != null && superclass != null){
FieldSpec superField = Seq.with(superclass.fieldSpecs).find(f -> f.name.equals(var));
//found the right field, try to check for the method already existing now
if(superField != null){
MethodSpec fr = result;
MethodSpec targetMethod = Seq.with(superclass.methodSpecs).find(m -> m.name.equals(var) && m.returnType.equals(fr.returnType));
//if the method isn't added yet, add it. in any case, skip.
if(targetMethod == null){
superclass.addMethod(result);
}
continue;
}
}
if(result != null){
def.builder.addMethod(result);
} }
} }
} }
@@ -747,8 +803,16 @@ public class EntityProcess extends BaseProcessor{
write(def.builder, imports.asArray()); write(def.builder, imports.asArray());
} }
//write base classes last
for(TypeSpec.Builder b : baseClasses){
write(b, imports.asArray());
}
//TODO nulls were an awful idea
//store nulls //store nulls
TypeSpec.Builder nullsBuilder = TypeSpec.classBuilder("Nulls").addModifiers(Modifier.PUBLIC).addModifiers(Modifier.FINAL); TypeSpec.Builder nullsBuilder = TypeSpec.classBuilder("Nulls").addModifiers(Modifier.PUBLIC).addModifiers(Modifier.FINAL);
//TODO should be dynamic
ObjectSet<String> nullList = ObjectSet.with("unit");
//create mock types of all components //create mock types of all components
for(Stype interf : allInterfaces){ for(Stype interf : allInterfaces){
@@ -767,10 +831,18 @@ public class EntityProcess extends BaseProcessor{
//create null builder //create null builder
String baseName = interf.name().substring(0, interf.name().length() - 1); String baseName = interf.name().substring(0, interf.name().length() - 1);
//prevent Nulls bloat
if(!nullList.contains(Strings.camelize(baseName))){
continue;
}
String className = "Null" + baseName; String className = "Null" + baseName;
TypeSpec.Builder nullBuilder = TypeSpec.classBuilder(className) TypeSpec.Builder nullBuilder = TypeSpec.classBuilder(className)
.addModifiers(Modifier.FINAL); .addModifiers(Modifier.FINAL);
skipDeprecated(nullBuilder);
nullBuilder.addSuperinterface(interf.tname()); nullBuilder.addSuperinterface(interf.tname());
if(superclass != null) nullBuilder.superclass(tname(baseName(superclass))); if(superclass != null) nullBuilder.superclass(tname(baseName(superclass)));
@@ -900,7 +972,7 @@ public class EntityProcess extends BaseProcessor{
} }
String createName(Selement<?> elem){ String createName(Selement<?> elem){
Seq<Stype> comps = types(elem.annotation(EntityDef.class), EntityDef::value).map(this::interfaceToComp);; Seq<Stype> comps = types(elem.annotation(EntityDef.class), EntityDef::value).map(this::interfaceToComp);
comps.sortComparing(Selement::name); comps.sortComparing(Selement::name);
return comps.toString("", s -> s.name().replace("Comp", "")); return comps.toString("", s -> s.name().replace("Comp", ""));
} }
@@ -914,6 +986,11 @@ public class EntityProcess extends BaseProcessor{
throw new IllegalArgumentException("Missing types."); throw new IllegalArgumentException("Missing types.");
} }
void skipDeprecated(TypeSpec.Builder builder){
//deprecations are irrelevant in generated code
builder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"deprecation\"").build());
}
class GroupDefinition{ class GroupDefinition{
final String name; final String name;
final ClassName baseType; final ClassName baseType;
@@ -944,9 +1021,10 @@ public class EntityProcess extends BaseProcessor{
final Selement naming; final Selement naming;
final String name; final String name;
final @Nullable TypeName extend; final @Nullable TypeName extend;
final boolean legacy;
int classID; int classID;
public EntityDefinition(String name, Builder builder, Selement naming, TypeName extend, Seq<Stype> components, Seq<GroupDefinition> groups, Seq<FieldSpec> fieldSpec){ public EntityDefinition(String name, Builder builder, Selement naming, TypeName extend, Seq<Stype> components, Seq<GroupDefinition> groups, Seq<FieldSpec> fieldSpec, boolean legacy){
this.builder = builder; this.builder = builder;
this.name = name; this.name = name;
this.naming = naming; this.naming = naming;
@@ -954,6 +1032,7 @@ public class EntityProcess extends BaseProcessor{
this.components = components; this.components = components;
this.extend = extend; this.extend = extend;
this.fieldSpecs = fieldSpec; this.fieldSpecs = fieldSpec;
this.legacy = legacy;
} }
@Override @Override

View File

@@ -1,5 +1,7 @@
package mindustry.annotations.impl; package mindustry.annotations.impl;
import arc.*;
import arc.audio.*;
import arc.files.*; import arc.files.*;
import arc.scene.style.*; import arc.scene.style.*;
import arc.struct.*; import arc.struct.*;
@@ -43,7 +45,7 @@ public class AssetsProcess extends BaseProcessor{
texIcons.each((key, val) -> { texIcons.each((key, val) -> {
String[] split = val.split("\\|"); String[] split = val.split("\\|");
String name = Strings.kebabToCamel(split[1]).replace("Medium", "").replace("Icon", ""); String name = Strings.kebabToCamel(split[1]).replace("Medium", "").replace("Icon", "").replace("Ui", "");
if(SourceVersion.isKeyword(name) || name.equals("char")) name += "i"; if(SourceVersion.isKeyword(name) || name.equals("char")) name += "i";
ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).addJavadoc(String.format("\\u%04x", Integer.parseInt(key))).initializer("'" + ((char)Integer.parseInt(key)) + "'").build()); ichtype.addField(FieldSpec.builder(char.class, name, Modifier.PUBLIC, Modifier.STATIC, Modifier.FINAL).addJavadoc(String.format("\\u%04x", Integer.parseInt(key))).initializer("'" + ((char)Integer.parseInt(key)) + "'").build());
@@ -87,18 +89,18 @@ public class AssetsProcess extends BaseProcessor{
filename = filename.substring(0, filename.indexOf(".")); filename = filename.substring(0, filename.indexOf("."));
String sfilen = filename; String sfilen = filename;
String dtype = p.name().endsWith(".9.png") ? "arc.scene.style.NinePatchDrawable" : "arc.scene.style.TextureRegionDrawable"; String dtype = "arc.scene.style.Drawable";
String varname = capitalize(sfilen); String varname = capitalize(sfilen);
if(SourceVersion.isKeyword(varname)) varname += "s"; if(SourceVersion.isKeyword(varname)) varname += "s";
type.addField(ClassName.bestGuess(dtype), varname, Modifier.STATIC, Modifier.PUBLIC); type.addField(ClassName.bestGuess(dtype), varname, Modifier.STATIC, Modifier.PUBLIC);
load.addStatement(varname + " = (" + dtype + ")arc.Core.atlas.drawable($S)", sfilen); load.addStatement(varname + " = arc.Core.atlas.drawable($S)", sfilen);
}); });
for(Element elem : elements){ for(Element elem : elements){
Seq.with(((TypeElement)elem).getEnclosedElements()).each(e -> e.getKind() == ElementKind.FIELD, field -> { Seq.with(elem.getEnclosedElements()).each(e -> e.getKind() == ElementKind.FIELD, field -> {
String fname = field.getSimpleName().toString(); String fname = field.getSimpleName().toString();
if(fname.startsWith("default")){ if(fname.startsWith("default")){
loadStyles.addStatement("arc.Core.scene.addStyle(" + field.asType().toString() + ".class, mindustry.ui.Styles." + fname + ")"); loadStyles.addStatement("arc.Core.scene.addStyle(" + field.asType().toString() + ".class, mindustry.ui.Styles." + fname + ")");
@@ -117,15 +119,36 @@ public class AssetsProcess extends BaseProcessor{
void processSounds(String classname, String path, String rtype) throws Exception{ void processSounds(String classname, String path, String rtype) throws Exception{
TypeSpec.Builder type = TypeSpec.classBuilder(classname).addModifiers(Modifier.PUBLIC); TypeSpec.Builder type = TypeSpec.classBuilder(classname).addModifiers(Modifier.PUBLIC);
MethodSpec.Builder dispose = MethodSpec.methodBuilder("dispose").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
MethodSpec.Builder loadBegin = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC); MethodSpec.Builder loadBegin = MethodSpec.methodBuilder("load").addModifiers(Modifier.PUBLIC, Modifier.STATIC);
CodeBlock.Builder staticb = CodeBlock.builder();
type.addField(FieldSpec.builder(IntMap.class, "idToSound", Modifier.STATIC, Modifier.PRIVATE).initializer("new IntMap()").build());
type.addField(FieldSpec.builder(ObjectIntMap.class, "soundToId", Modifier.STATIC, Modifier.PRIVATE).initializer("new ObjectIntMap()").build());
type.addMethod(MethodSpec.methodBuilder("getSoundId")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(Sound.class, "sound")
.returns(int.class)
.addStatement("return soundToId.get(sound, -1)").build());
type.addMethod(MethodSpec.methodBuilder("getSound")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(int.class, "id")
.returns(Sound.class)
.addStatement("return (Sound)idToSound.get(id, () -> Sounds.none)").build());
HashSet<String> names = new HashSet<>(); HashSet<String> names = new HashSet<>();
Fi.get(path).walk(p -> { Seq<Fi> files = new Seq<>();
Fi.get(path).walk(files::add);
files.sortComparing(Fi::name);
int id = 0;
for(Fi p : files){
String name = p.nameWithoutExtension(); String name = p.nameWithoutExtension();
if(names.contains(name)){ if(names.contains(name)){
BaseProcessor.err("Duplicate file name: " + p.toString() + "!"); BaseProcessor.err("Duplicate file name: " + p + "!");
}else{ }else{
names.add(name); names.add(name);
} }
@@ -134,20 +157,23 @@ public class AssetsProcess extends BaseProcessor{
String filepath = path.substring(path.lastIndexOf("/") + 1) + p.path().substring(p.path().lastIndexOf(path) + path.length()); String filepath = path.substring(path.lastIndexOf("/") + 1) + p.path().substring(p.path().lastIndexOf(path) + path.length());
String filename = "\"" + filepath + "\""; staticb.addStatement("soundToId.put($L, $L)", name, id);
loadBegin.addStatement("arc.Core.assets.load(" + filename + ", " + rtype + ".class).loaded = a -> " + name + " = (" + rtype + ")a", filepath, filepath.replace(".ogg", ".mp3"));
dispose.addStatement("arc.Core.assets.unload(" + filename + ")"); loadBegin.addStatement("$T.assets.load($S, $L.class).loaded = a -> { $L = ($L)a; soundToId.put(a, $L); idToSound.put($L, a); }",
dispose.addStatement(name + " = null"); Core.class, filepath, rtype, name, rtype, id, id);
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.audio." + rtype.substring(rtype.lastIndexOf(".") + 1) + "()").build());
}); type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new " + rtype + "()").build());
id ++;
}
type.addStaticBlock(staticb.build());
if(classname.equals("Sounds")){ if(classname.equals("Sounds")){
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), "none", Modifier.STATIC, Modifier.PUBLIC).initializer("new arc.audio." + rtype.substring(rtype.lastIndexOf(".") + 1) + "()").build()); type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), "none", Modifier.STATIC, Modifier.PUBLIC).initializer("new " + rtype + "()").build());
} }
type.addMethod(loadBegin.build()); type.addMethod(loadBegin.build());
type.addMethod(dispose.build());
JavaFile.builder(packageName, type.build()).build().writeTo(BaseProcessor.filer); JavaFile.builder(packageName, type.build()).build().writeTo(BaseProcessor.filer);
} }

View File

@@ -1,154 +0,0 @@
package mindustry.annotations.impl;
import com.sun.source.tree.*;
import com.sun.source.util.*;
import com.sun.tools.javac.code.Scope;
import com.sun.tools.javac.code.*;
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Type.*;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import mindustry.annotations.Annotations.*;
import javax.annotation.processing.*;
import javax.lang.model.*;
import javax.lang.model.element.*;
import javax.tools.Diagnostic.*;
import java.lang.annotation.*;
import java.util.*;
@SupportedAnnotationTypes({"java.lang.Override"})
public class CallSuperProcess extends AbstractProcessor{
private Trees trees;
@Override
public void init(ProcessingEnvironment pe){
super.init(pe);
trees = Trees.instance(pe);
}
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv){
for(Element e : roundEnv.getElementsAnnotatedWith(Override.class)){
if(e.getAnnotation(OverrideCallSuper.class) != null) return false;
CodeAnalyzerTreeScanner codeScanner = new CodeAnalyzerTreeScanner();
codeScanner.methodName = e.getSimpleName().toString();
TreePath tp = trees.getPath(e.getEnclosingElement());
codeScanner.scan(tp, trees);
if(codeScanner.callSuperUsed){
List list = codeScanner.method.getBody().getStatements();
if(!doesCallSuper(list, codeScanner.methodName)){
processingEnv.getMessager().printMessage(Kind.ERROR, "Overriding method '" + codeScanner.methodName + "' must explicitly call super method from its parent class.", e);
}
}
}
return false;
}
private boolean doesCallSuper(List list, String methodName){
for(Object object : list){
if(object instanceof JCTree.JCExpressionStatement){
JCTree.JCExpressionStatement expr = (JCExpressionStatement)object;
String exprString = expr.toString();
if(exprString.startsWith("super." + methodName) && exprString.endsWith(");")) return true;
}
}
return false;
}
@Override
public SourceVersion getSupportedSourceVersion(){
return SourceVersion.RELEASE_8;
}
static class CodeAnalyzerTreeScanner extends TreePathScanner<Object, Trees>{
String methodName;
MethodTree method;
boolean callSuperUsed;
@Override
public Object visitClass(ClassTree classTree, Trees trees){
Tree extendTree = classTree.getExtendsClause();
if(extendTree instanceof JCTypeApply){ //generic classes case
JCTypeApply generic = (JCTypeApply)extendTree;
extendTree = generic.clazz;
}
if(extendTree instanceof JCIdent){
JCIdent tree = (JCIdent)extendTree;
if(tree == null || tree.sym == null) return super.visitClass(classTree, trees);
com.sun.tools.javac.code.Scope members = tree.sym.members();
if(checkScope(members))
return super.visitClass(classTree, trees);
if(checkSuperTypes((ClassType)tree.type))
return super.visitClass(classTree, trees);
}
callSuperUsed = false;
return super.visitClass(classTree, trees);
}
public boolean checkSuperTypes(ClassType type){
if(type.supertype_field != null && type.supertype_field.tsym != null){
if(checkScope(type.supertype_field.tsym.members()))
return true;
else
return checkSuperTypes((ClassType)type.supertype_field);
}
return false;
}
@SuppressWarnings("unchecked")
public boolean checkScope(Scope members){
Iterable<Symbol> it;
try{
it = (Iterable<Symbol>)members.getClass().getMethod("getElements").invoke(members);
}catch(Throwable t){
try{
it = (Iterable<Symbol>)members.getClass().getMethod("getSymbols").invoke(members);
}catch(Exception e){
throw new RuntimeException(e);
}
}
for(Symbol s : it){
if(s instanceof MethodSymbol){
MethodSymbol ms = (MethodSymbol)s;
if(ms.getSimpleName().toString().equals(methodName)){
Annotation annotation = ms.getAnnotation(CallSuper.class);
if(annotation != null){
callSuperUsed = true;
return true;
}
}
}
}
return false;
}
@Override
public Object visitMethod(MethodTree methodTree, Trees trees){
if(methodTree.getName().toString().equals(methodName))
method = methodTree;
return super.visitMethod(methodTree, trees);
}
}
}

View File

@@ -18,6 +18,7 @@ public class LoadRegionProcessor extends BaseProcessor{
@Override @Override
public void process(RoundEnvironment env) throws Exception{ public void process(RoundEnvironment env) throws Exception{
TypeSpec.Builder regionClass = TypeSpec.classBuilder("ContentRegions") TypeSpec.Builder regionClass = TypeSpec.classBuilder("ContentRegions")
.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"deprecation\"").build())
.addModifiers(Modifier.PUBLIC); .addModifiers(Modifier.PUBLIC);
MethodSpec.Builder method = MethodSpec.methodBuilder("loadRegions") MethodSpec.Builder method = MethodSpec.methodBuilder("loadRegions")
.addParameter(tname("mindustry.ctype.MappableContent"), "content") .addParameter(tname("mindustry.ctype.MappableContent"), "content")
@@ -34,7 +35,7 @@ public class LoadRegionProcessor extends BaseProcessor{
} }
for(Entry<Stype, Seq<Svar>> entry : fieldMap){ for(Entry<Stype, Seq<Svar>> entry : fieldMap){
method.beginControlFlow("if(content instanceof $T)", entry.key.tname()); method.beginControlFlow("if(content instanceof $L)", entry.key.fullName());
for(Svar field : entry.value){ for(Svar field : entry.value){
Load an = field.annotation(Load.class); Load an = field.annotation(Load.class);
@@ -45,7 +46,7 @@ public class LoadRegionProcessor extends BaseProcessor{
//not an array //not an array
if(dims == 0){ if(dims == 0){
method.addStatement("(($T)content).$L = $T.atlas.find($L$L)", entry.key.tname(), field.name(), Core.class, parse(an.value()), fallbackString); method.addStatement("(($L)content).$L = $T.atlas.find($L$L)", entry.key.fullName(), field.name(), Core.class, parse(an.value()), fallbackString);
}else{ }else{
//is an array, create length string //is an array, create length string
int[] lengths = an.lengths(); int[] lengths = an.lengths();

View File

@@ -26,7 +26,8 @@ public class LogicStatementProcessor extends BaseProcessor{
MethodSpec.Builder reader = MethodSpec.methodBuilder("read") MethodSpec.Builder reader = MethodSpec.methodBuilder("read")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC) .addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.returns(tname("mindustry.logic.LStatement")) .returns(tname("mindustry.logic.LStatement"))
.addParameter(String[].class, "tokens"); .addParameter(String[].class, "tokens")
.addParameter(int.class, "length");
Seq<Stype> types = types(RegisterStatement.class); Seq<Stype> types = types(RegisterStatement.class);
@@ -76,7 +77,7 @@ public class LogicStatementProcessor extends BaseProcessor{
""); "");
//reading primitives, strings and enums is supported; nothing else is //reading primitives, strings and enums is supported; nothing else is
reader.addStatement("if(tokens.length > $L) result.$L = $L(tokens[$L])", reader.addStatement("if(length > $L) result.$L = $L(tokens[$L])",
index + 1, index + 1,
field.name(), field.name(),
field.mirror().toString().equals("java.lang.String") ? field.mirror().toString().equals("java.lang.String") ?

View File

@@ -0,0 +1,380 @@
package mindustry.annotations.remote;
import arc.struct.*;
import arc.util.io.*;
import com.squareup.javapoet.*;
import mindustry.annotations.Annotations.*;
import mindustry.annotations.*;
import mindustry.annotations.util.*;
import mindustry.annotations.util.TypeIOResolver.*;
import javax.lang.model.element.*;
import java.io.*;
import static mindustry.annotations.BaseProcessor.*;
/** Generates code for writing remote invoke packets on the client and server. */
public class CallGenerator{
/** Generates all classes in this list. */
public static void generate(ClassSerializer serializer, Seq<MethodEntry> methods) throws IOException{
//create builder
TypeSpec.Builder callBuilder = TypeSpec.classBuilder(RemoteProcess.callLocation).addModifiers(Modifier.PUBLIC);
MethodSpec.Builder register = MethodSpec.methodBuilder("registerPackets")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC);
//go through each method entry in this class
for(MethodEntry ent : methods){
//builder for the packet type
TypeSpec.Builder packet = TypeSpec.classBuilder(ent.packetClassName)
.addModifiers(Modifier.PUBLIC);
//temporary data to deserialize later
packet.addField(FieldSpec.builder(byte[].class, "DATA", Modifier.PRIVATE).initializer("NODATA").build());
packet.superclass(tname("mindustry.net.Packet"));
//return the correct priority
if(ent.priority != PacketPriority.normal){
packet.addMethod(MethodSpec.methodBuilder("getPriority")
.addModifiers(Modifier.PUBLIC)
.addAnnotation(Override.class).returns(int.class).addStatement("return $L", ent.priority.ordinal())
.build());
}
//implement read & write methods
makeWriter(packet, ent, serializer);
makeReader(packet, ent, serializer);
//generate handlers
if(ent.where.isClient){
packet.addMethod(writeHandleMethod(ent, false));
}
if(ent.where.isServer){
packet.addMethod(writeHandleMethod(ent, true));
}
//register packet
register.addStatement("mindustry.net.Net.registerPacket($L.$L::new)", packageName, ent.packetClassName);
//add fields to the type
for(Svar param : ent.element.params()){
packet.addField(param.tname(), param.name(), Modifier.PUBLIC);
}
//write the 'send event to all players' variant: always happens for clients, but only happens if 'all' is enabled on the server method
if(ent.where.isClient || ent.target.isAll){
writeCallMethod(callBuilder, ent, true, false);
}
//write the 'send event to one player' variant, which is only applicable on the server
if(ent.where.isServer && ent.target.isOne){
writeCallMethod(callBuilder, ent, false, false);
}
//write the forwarded method version
if(ent.where.isServer && ent.forward){
writeCallMethod(callBuilder, ent, true, true);
}
//write the completed packet class
JavaFile.builder(packageName, packet.build()).build().writeTo(BaseProcessor.filer);
}
callBuilder.addMethod(register.build());
//build and write resulting class
TypeSpec spec = callBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(BaseProcessor.filer);
}
private static void makeWriter(TypeSpec.Builder typespec, MethodEntry ent, ClassSerializer serializer){
MethodSpec.Builder builder = MethodSpec.methodBuilder("write")
.addParameter(Writes.class, "WRITE")
.addModifiers(Modifier.PUBLIC).addAnnotation(Override.class);
Seq<Svar> params = ent.element.params();
for(int i = 0; i < params.size; i++){
//first argument is skipped as it is always the player caller
if(!ent.where.isServer && i == 0){
continue;
}
Svar var = params.get(i);
//name of parameter
String varName = var.name();
//name of parameter type
String typeName = var.mirror().toString();
//special case: method can be called from anywhere to anywhere
//thus, only write the player when the SERVER is writing data, since the client is the only one who reads the player anyway
boolean writePlayerSkipCheck = ent.where == Loc.both && i == 0;
if(writePlayerSkipCheck){ //write begin check
builder.beginControlFlow("if(mindustry.Vars.net.server())");
}
if(BaseProcessor.isPrimitive(typeName)){ //check if it's a primitive, and if so write it
builder.addStatement("WRITE.$L($L)", typeName.equals("boolean") ? "bool" : typeName.charAt(0) + "", varName);
}else{
//else, try and find a serializer
String ser = serializer.writers.get(typeName.replace("mindustry.gen.", ""), SerializerResolver.locate(ent.element.e, var.mirror(), true));
if(ser == null){ //make sure a serializer exists!
BaseProcessor.err("No method to write class type: '" + typeName + "'", var);
}
//add statement for writing it
builder.addStatement(ser + "(WRITE, " + varName + ")");
}
if(writePlayerSkipCheck){ //write end check
builder.endControlFlow();
}
}
typespec.addMethod(builder.build());
}
private static void makeReader(TypeSpec.Builder typespec, MethodEntry ent, ClassSerializer serializer){
MethodSpec.Builder readbuilder = MethodSpec.methodBuilder("read")
.addParameter(Reads.class, "READ")
.addParameter(int.class, "LENGTH")
.addModifiers(Modifier.PUBLIC).addAnnotation(Override.class);
//read only into temporary data buffer
readbuilder.addStatement("DATA = READ.b(LENGTH)");
typespec.addMethod(readbuilder.build());
MethodSpec.Builder builder = MethodSpec.methodBuilder("handled")
.addModifiers(Modifier.PUBLIC)
.addAnnotation(Override.class);
//make sure data is present, begin reading it if so
builder.addStatement("BAIS.setBytes(DATA)");
Seq<Svar> params = ent.element.params();
//go through each parameter
for(int i = 0; i < params.size; i++){
Svar var = params.get(i);
//first argument is skipped as it is always the player caller
if(!ent.where.isServer && i == 0){
continue;
}
//special case: method can be called from anywhere to anywhere
//thus, only read the player when the CLIENT is receiving data, since the client is the only one who cares about the player anyway
boolean writePlayerSkipCheck = ent.where == Loc.both && i == 0;
if(writePlayerSkipCheck){ //write begin check
builder.beginControlFlow("if(mindustry.Vars.net.client())");
}
//full type name of parameter
String typeName = var.mirror().toString();
//name of parameter
String varName = var.name();
//capitalized version of type name for reading primitives
String pname = typeName.equals("boolean") ? "bool" : typeName.charAt(0) + "";
//write primitives automatically
if(BaseProcessor.isPrimitive(typeName)){
builder.addStatement("$L = READ.$L()", varName, pname);
}else{
//else, try and find a serializer
String ser = serializer.readers.get(typeName.replace("mindustry.gen.", ""), SerializerResolver.locate(ent.element.e, var.mirror(), false));
if(ser == null){ //make sure a serializer exists!
BaseProcessor.err("No read method to read class type '" + typeName + "' in method " + ent.targetMethod + "; " + serializer.readers, var);
}
//add statement for reading it
builder.addStatement("$L = $L(READ)", varName, ser);
}
if(writePlayerSkipCheck){ //write end check
builder.endControlFlow();
}
}
typespec.addMethod(builder.build());
}
/** Creates a specific variant for a method entry. */
private static void writeCallMethod(TypeSpec.Builder classBuilder, MethodEntry ent, boolean toAll, boolean forwarded){
Smethod elem = ent.element;
Seq<Svar> params = elem.params();
//create builder
MethodSpec.Builder method = MethodSpec.methodBuilder(elem.name() + (forwarded ? "__forward" : "")) //add except suffix when forwarding
.addModifiers(Modifier.STATIC)
.returns(void.class);
//forwarded methods aren't intended for use, and are not public
if(!forwarded){
method.addModifiers(Modifier.PUBLIC);
}
//validate client methods to make sure
if(ent.where.isClient){
if(params.isEmpty()){
BaseProcessor.err("Client invoke methods must have a first parameter of type Player", elem);
return;
}
if(!params.get(0).mirror().toString().contains("Player")){
BaseProcessor.err("Client invoke methods should have a first parameter of type Player", elem);
return;
}
}
//if toAll is false, it's a 'send to one player' variant, so add the player as a parameter
if(!toAll){
method.addParameter(ClassName.bestGuess("mindustry.net.NetConnection"), "playerConnection");
}
//add sender to ignore
if(forwarded){
method.addParameter(ClassName.bestGuess("mindustry.net.NetConnection"), "exceptConnection");
}
//call local method if applicable, shouldn't happen when forwarding method as that already happens by default
if(!forwarded && ent.local != Loc.none){
//add in local checks
if(ent.local != Loc.both){
method.beginControlFlow("if(" + getCheckString(ent.local) + " || !mindustry.Vars.net.active())");
}
//concatenate parameters
int index = 0;
StringBuilder results = new StringBuilder();
for(Svar var : params){
//special case: calling local-only methods uses the local player
if(index == 0 && ent.where == Loc.client){
results.append("mindustry.Vars.player");
}else{
results.append(var.name());
}
if(index != params.size - 1) results.append(", ");
index++;
}
//add the statement to call it
method.addStatement("$N." + elem.name() + "(" + results + ")",
((TypeElement)elem.up()).getQualifiedName().toString());
if(ent.local != Loc.both){
method.endControlFlow();
}
}
//start control flow to check if it's actually client/server so no netcode is called
method.beginControlFlow("if(" + getCheckString(ent.where) + ")");
//add statement to create packet from pool
method.addStatement("$1T packet = new $1T()", tname("mindustry.gen." + ent.packetClassName));
method.addTypeVariables(Seq.with(elem.e.getTypeParameters()).map(BaseProcessor::getTVN));
for(int i = 0; i < params.size; i++){
//first argument is skipped as it is always the player caller
if((!ent.where.isServer) && i == 0){
continue;
}
Svar var = params.get(i);
method.addParameter(var.tname(), var.name());
//name of parameter
String varName = var.name();
//special case: method can be called from anywhere to anywhere
//thus, only write the player when the SERVER is writing data, since the client is the only one who reads it
boolean writePlayerSkipCheck = ent.where == Loc.both && i == 0;
if(writePlayerSkipCheck){ //write begin check
method.beginControlFlow("if(mindustry.Vars.net.server())");
}
method.addStatement("packet.$L = $L", varName, varName);
if(writePlayerSkipCheck){ //write end check
method.endControlFlow();
}
}
String sendString;
if(forwarded){ //forward packet
if(!ent.local.isClient){ //if the client doesn't get it called locally, forward it back after validation
sendString = "mindustry.Vars.net.send(";
}else{
sendString = "mindustry.Vars.net.sendExcept(exceptConnection, ";
}
}else if(toAll){ //send to all players / to server
sendString = "mindustry.Vars.net.send(";
}else{ //send to specific client from server
sendString = "playerConnection.send(";
}
//send the actual packet
method.addStatement(sendString + "packet, " + (!ent.unreliable) + ")");
//end check for server/client
method.endControlFlow();
//add method to class, finally
classBuilder.addMethod(method.build());
}
private static String getCheckString(Loc loc){
return
loc.isClient && loc.isServer ? "mindustry.Vars.net.server() || mindustry.Vars.net.client()" :
loc.isClient ? "mindustry.Vars.net.client()" :
loc.isServer ? "mindustry.Vars.net.server()" : "false";
}
/** Generates handleServer / handleClient methods. */
public static MethodSpec writeHandleMethod(MethodEntry ent, boolean isClient){
//create main method builder
MethodSpec.Builder builder = MethodSpec.methodBuilder(isClient ? "handleClient" : "handleServer")
.addModifiers(Modifier.PUBLIC)
.addAnnotation(Override.class)
.returns(void.class);
Smethod elem = ent.element;
Seq<Svar> params = elem.params();
if(!isClient){
//add player parameter
builder.addParameter(ClassName.get("mindustry.net", "NetConnection"), "con");
//skip if player is invalid
builder.beginControlFlow("if(con.player == null || con.kicked)");
builder.addStatement("return");
builder.endControlFlow();
//make sure to use the actual player who sent the packet
builder.addStatement("mindustry.gen.Player player = con.player");
}
//execute the relevant method before the forward
//if it throws a ValidateException, the method won't be forwarded
builder.addStatement("$N." + elem.name() + "(" + params.toString(", ", s -> s.name()) + ")", ((TypeElement)elem.up()).getQualifiedName().toString());
//call forwarded method, don't forward on the client reader
if(ent.forward && ent.where.isServer && !isClient){
//call forwarded method
builder.addStatement("$L.$L.$L__forward(con, $L)", packageName, ent.className, elem.name(), params.toString(", ", s -> s.name()));
}
return builder.build();
}
}

View File

@@ -1,15 +0,0 @@
package mindustry.annotations.remote;
import java.util.ArrayList;
/** Represents a class witha list method entries to include in it. */
public class ClassEntry{
/** All methods in this generated class. */
public final ArrayList<MethodEntry> methods = new ArrayList<>();
/** Simple class name. */
public final String name;
public ClassEntry(String name){
this.name = name;
}
}

View File

@@ -1,8 +1,7 @@
package mindustry.annotations.remote; package mindustry.annotations.remote;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.annotations.util.*;
import javax.lang.model.element.ExecutableElement;
/** Class that repesents a remote method to be constructed and put into a class. */ /** Class that repesents a remote method to be constructed and put into a class. */
public class MethodEntry{ public class MethodEntry{
@@ -10,6 +9,8 @@ public class MethodEntry{
public final String className; public final String className;
/** Fully qualified target method to call. */ /** Fully qualified target method to call. */
public final String targetMethod; public final String targetMethod;
/** Simple name of the generated packet class. */
public final String packetClassName;
/** Whether this method can be called on a client/server. */ /** Whether this method can be called on a client/server. */
public final Loc where; public final Loc where;
/** /**
@@ -26,12 +27,13 @@ public class MethodEntry{
/** Unique method ID. */ /** Unique method ID. */
public final int id; public final int id;
/** The element method associated with this entry. */ /** The element method associated with this entry. */
public final ExecutableElement element; public final Smethod element;
/** The assigned packet priority. Only used in clients. */ /** The assigned packet priority. Only used in clients. */
public final PacketPriority priority; public final PacketPriority priority;
public MethodEntry(String className, String targetMethod, Loc where, Variant target, public MethodEntry(String className, String targetMethod, String packetClassName, Loc where, Variant target,
Loc local, boolean unreliable, boolean forward, int id, ExecutableElement element, PacketPriority priority){ Loc local, boolean unreliable, boolean forward, int id, Smethod element, PacketPriority priority){
this.packetClassName = packetClassName;
this.className = className; this.className = className;
this.forward = forward; this.forward = forward;
this.targetMethod = targetMethod; this.targetMethod = targetMethod;

View File

@@ -1,7 +1,7 @@
package mindustry.annotations.remote; package mindustry.annotations.remote;
import arc.struct.*; import arc.struct.*;
import com.squareup.javapoet.*; import arc.util.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.annotations.*; import mindustry.annotations.*;
import mindustry.annotations.util.*; import mindustry.annotations.util.*;
@@ -9,7 +9,6 @@ import mindustry.annotations.util.TypeIOResolver.*;
import javax.annotation.processing.*; import javax.annotation.processing.*;
import javax.lang.model.element.*; import javax.lang.model.element.*;
import java.util.*;
/** The annotation processor for generating remote method call code. */ /** The annotation processor for generating remote method call code. */
@@ -18,106 +17,58 @@ import java.util.*;
"mindustry.annotations.Annotations.TypeIOHandler" "mindustry.annotations.Annotations.TypeIOHandler"
}) })
public class RemoteProcess extends BaseProcessor{ public class RemoteProcess extends BaseProcessor{
/** Maximum size of each event packet. */
public static final int maxPacketSize = 8192;
/** Warning on top of each autogenerated file. */
public static final String autogenWarning = "Autogenerated file. Do not modify!\n";
/** Name of class that handles reading and invoking packets on the server. */
private static final String readServerName = "RemoteReadServer";
/** Name of class that handles reading and invoking packets on the client. */
private static final String readClientName = "RemoteReadClient";
/** Simple class name of generated class name. */ /** Simple class name of generated class name. */
private static final String callLocation = "Call"; public static final String callLocation = "Call";
//class serializers
private ClassSerializer serializer;
//all elements with the Remote annotation
private Seq<Smethod> elements;
//map of all classes to generate by name
private HashMap<String, ClassEntry> classMap;
//list of all method entries
private Seq<MethodEntry> methods;
//list of all method entries
private Seq<ClassEntry> classes;
{
rounds = 2;
}
@Override @Override
public void process(RoundEnvironment roundEnv) throws Exception{ public void process(RoundEnvironment roundEnv) throws Exception{
//round 1: find all annotations, generate *writers* //get serializers
if(round == 1){ //class serializers
//get serializers ClassSerializer serializer = TypeIOResolver.resolve(this);
serializer = TypeIOResolver.resolve(this); //last method ID used
//last method ID used int lastMethodID = 0;
int lastMethodID = 0; //find all elements with the Remote annotation
//find all elements with the Remote annotation //all elements with the Remote annotation
elements = methods(Remote.class); Seq<Smethod> elements = methods(Remote.class);
//map of all classes to generate by name //list of all method entries
classMap = new HashMap<>(); Seq<MethodEntry> methods = new Seq<>();
//list of all method entries
methods = new Seq<>();
//list of all method entries
classes = new Seq<>();
Seq<Smethod> orderedElements = elements.copy(); Seq<Smethod> orderedElements = elements.copy();
orderedElements.sortComparing(Object::toString); orderedElements.sortComparing(Selement::toString);
//create methods //create methods
for(Smethod element : orderedElements){ for(Smethod element : orderedElements){
Remote annotation = element.annotation(Remote.class); Remote annotation = element.annotation(Remote.class);
//check for static //check for static
if(!element.is(Modifier.STATIC) || !element.is(Modifier.PUBLIC)){ if(!element.is(Modifier.STATIC) || !element.is(Modifier.PUBLIC)){
err("All @Remote methods must be public and static: ", element); err("All @Remote methods must be public and static", element);
}
//can't generate none methods
if(annotation.targets() == Loc.none){
err("A @Remote method's targets() cannot be equal to 'none':", element);
}
//get and create class entry if needed
if(!classMap.containsKey(callLocation)){
ClassEntry clas = new ClassEntry(callLocation);
classMap.put(callLocation, clas);
classes.add(clas);
}
ClassEntry entry = classMap.get(callLocation);
//create and add entry
MethodEntry method = new MethodEntry(entry.name, BaseProcessor.getMethodName(element.e), annotation.targets(), annotation.variants(),
annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++, element.e, annotation.priority());
entry.methods.add(method);
methods.add(method);
} }
//create read/write generators //can't generate none methods
RemoteWriteGenerator writegen = new RemoteWriteGenerator(serializer); if(annotation.targets() == Loc.none){
err("A @Remote method's targets() cannot be equal to 'none'", element);
}
//generate the methods to invoke (write) String packetName = Strings.capitalize(element.name()) + "CallPacket";
writegen.generateFor(classes, packageName); int[] index = {1};
}else if(round == 2){ //round 2: generate all *readers*
RemoteReadGenerator readgen = new RemoteReadGenerator(serializer);
//generate server readers while(methods.contains(m -> m.packetClassName.equals(packetName + (index[0] == 1 ? "" : index[0])))){
readgen.generateFor(methods.select(method -> method.where.isClient), readServerName, packageName, true); index[0] ++;
//generate client readers }
readgen.generateFor(methods.select(method -> method.where.isServer), readClientName, packageName, false);
//create class for storing unique method hash //create and add entry
TypeSpec.Builder hashBuilder = TypeSpec.classBuilder("MethodHash").addModifiers(Modifier.PUBLIC); MethodEntry method = new MethodEntry(
hashBuilder.addJavadoc(autogenWarning); callLocation, BaseProcessor.getMethodName(element.e), packetName + (index[0] == 1 ? "" : index[0]),
hashBuilder.addField(FieldSpec.builder(int.class, "HASH", Modifier.STATIC, Modifier.PUBLIC, Modifier.FINAL) annotation.targets(), annotation.variants(),
.initializer("$1L", Arrays.hashCode(methods.map(m -> m.element).toArray())).build()); annotation.called(), annotation.unreliable(), annotation.forward(), lastMethodID++,
element, annotation.priority()
);
//build and write resulting hash class methods.add(method);
TypeSpec spec = hashBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(BaseProcessor.filer);
} }
//generate the methods to invoke, as well as the packet classes
CallGenerator.generate(serializer, methods);
} }
} }

View File

@@ -1,129 +0,0 @@
package mindustry.annotations.remote;
import arc.struct.*;
import arc.util.io.*;
import com.squareup.javapoet.*;
import mindustry.annotations.*;
import mindustry.annotations.util.TypeIOResolver.*;
import javax.lang.model.element.*;
/** Generates code for reading remote invoke packets on the client and server. */
public class RemoteReadGenerator{
private final ClassSerializer serializers;
/** Creates a read generator that uses the supplied serializer setup. */
public RemoteReadGenerator(ClassSerializer serializers){
this.serializers = serializers;
}
/**
* Generates a class for reading remote invoke packets.
* @param entries List of methods to use.
* @param className Simple target class name.
* @param packageName Full target package name.
* @param needsPlayer Whether this read method requires a reference to the player sender.
*/
public void generateFor(Seq<MethodEntry> entries, String className, String packageName, boolean needsPlayer) throws Exception{
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
classBuilder.addJavadoc(RemoteProcess.autogenWarning);
//create main method builder
MethodSpec.Builder readMethod = MethodSpec.methodBuilder("readPacket")
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
.addParameter(Reads.class, "read") //buffer to read form
.addParameter(int.class, "id") //ID of method type to read
.returns(void.class);
if(needsPlayer){
//add player parameter
readMethod.addParameter(ClassName.get(packageName, "Player"), "player");
}
CodeBlock.Builder readBlock = CodeBlock.builder(); //start building block of code inside read method
boolean started = false; //whether an if() statement has been written yet
for(MethodEntry entry : entries){
//write if check for this entry ID
if(!started){
started = true;
readBlock.beginControlFlow("if(id == " + entry.id + ")");
}else{
readBlock.nextControlFlow("else if(id == " + entry.id + ")");
}
readBlock.beginControlFlow("try");
//concatenated list of variable names for method invocation
StringBuilder varResult = new StringBuilder();
//go through each parameter
for(int i = 0; i < entry.element.getParameters().size(); i++){
VariableElement var = entry.element.getParameters().get(i);
if(!needsPlayer || i != 0){ //if client, skip first parameter since it's always of type player and doesn't need to be read
//full type name of parameter
String typeName = var.asType().toString();
//name of parameter
String varName = var.getSimpleName().toString();
//captialized version of type name for reading primitives
String pname = typeName.equals("boolean") ? "bool" : typeName.charAt(0) + "";
//write primitives automatically
if(BaseProcessor.isPrimitive(typeName)){
readBlock.addStatement("$L $L = read.$L()", typeName, varName, pname);
}else{
//else, try and find a serializer
String ser = serializers.readers.get(typeName.replace("mindustry.gen.", ""), SerializerResolver.locate(entry.element, var.asType(), false));
if(ser == null){ //make sure a serializer exists!
BaseProcessor.err("No read method to read class type '" + typeName + "' in method " + entry.targetMethod + "; " + serializers.readers, var);
return;
}
//add statement for reading it
readBlock.addStatement(typeName + " " + varName + " = " + ser + "(read)");
}
//append variable name to string builder
varResult.append(var.getSimpleName());
if(i != entry.element.getParameters().size() - 1) varResult.append(", ");
}else{
varResult.append("player");
if(i != entry.element.getParameters().size() - 1) varResult.append(", ");
}
}
//execute the relevant method before the forward
//if it throws a ValidateException, the method won't be forwarded
readBlock.addStatement("$N." + entry.element.getSimpleName() + "(" + varResult.toString() + ")", ((TypeElement)entry.element.getEnclosingElement()).getQualifiedName().toString());
//call forwarded method, don't forward on the client reader
if(entry.forward && entry.where.isServer && needsPlayer){
//call forwarded method
readBlock.addStatement(packageName + "." + entry.className + "." + entry.element.getSimpleName() +
"__forward(player.con" + (varResult.length() == 0 ? "" : ", ") + varResult.toString() + ")");
}
readBlock.nextControlFlow("catch (java.lang.Exception e)");
readBlock.addStatement("throw new java.lang.RuntimeException(\"Failed to read remote method '" + entry.element.getSimpleName() + "'!\", e)");
readBlock.endControlFlow();
}
//end control flow if necessary
if(started){
readBlock.nextControlFlow("else");
readBlock.addStatement("throw new $1N(\"Invalid read method ID: \" + id + \"\")", RuntimeException.class.getName()); //handle invalid method IDs
readBlock.endControlFlow();
}
//add block and method to class
readMethod.addCode(readBlock.build());
classBuilder.addMethod(readMethod.build());
//build and write resulting class
TypeSpec spec = classBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(BaseProcessor.filer);
}
}

View File

@@ -1,228 +0,0 @@
package mindustry.annotations.remote;
import arc.struct.*;
import arc.util.io.*;
import com.squareup.javapoet.*;
import mindustry.annotations.Annotations.*;
import mindustry.annotations.*;
import mindustry.annotations.util.TypeIOResolver.*;
import javax.lang.model.element.*;
import java.io.*;
/** Generates code for writing remote invoke packets on the client and server. */
public class RemoteWriteGenerator{
private final ClassSerializer serializers;
/** Creates a write generator that uses the supplied serializer setup. */
public RemoteWriteGenerator(ClassSerializer serializers){
this.serializers = serializers;
}
/** Generates all classes in this list. */
public void generateFor(Seq<ClassEntry> entries, String packageName) throws IOException{
for(ClassEntry entry : entries){
//create builder
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(entry.name).addModifiers(Modifier.PUBLIC);
classBuilder.addJavadoc(RemoteProcess.autogenWarning);
//add temporary write buffer
classBuilder.addField(FieldSpec.builder(ReusableByteOutStream.class, "OUT", Modifier.STATIC, Modifier.PRIVATE, Modifier.FINAL)
.initializer("new ReusableByteOutStream($L)", RemoteProcess.maxPacketSize).build());
//add writer for that buffer
classBuilder.addField(FieldSpec.builder(Writes.class, "WRITE", Modifier.STATIC, Modifier.PRIVATE, Modifier.FINAL)
.initializer("new Writes(new $T(OUT))", DataOutputStream.class).build());
//go through each method entry in this class
for(MethodEntry methodEntry : entry.methods){
//write the 'send event to all players' variant: always happens for clients, but only happens if 'all' is enabled on the server method
if(methodEntry.where.isClient || methodEntry.target.isAll){
writeMethodVariant(classBuilder, methodEntry, true, false);
}
//write the 'send event to one player' variant, which is only applicable on the server
if(methodEntry.where.isServer && methodEntry.target.isOne){
writeMethodVariant(classBuilder, methodEntry, false, false);
}
//write the forwarded method version
if(methodEntry.where.isServer && methodEntry.forward){
writeMethodVariant(classBuilder, methodEntry, true, true);
}
}
//build and write resulting class
TypeSpec spec = classBuilder.build();
JavaFile.builder(packageName, spec).build().writeTo(BaseProcessor.filer);
}
}
/** Creates a specific variant for a method entry. */
private void writeMethodVariant(TypeSpec.Builder classBuilder, MethodEntry methodEntry, boolean toAll, boolean forwarded){
ExecutableElement elem = methodEntry.element;
//create builder
MethodSpec.Builder method = MethodSpec.methodBuilder(elem.getSimpleName().toString() + (forwarded ? "__forward" : "")) //add except suffix when forwarding
.addModifiers(Modifier.STATIC)
.returns(void.class);
//forwarded methods aren't intended for use, and are not public
if(!forwarded){
method.addModifiers(Modifier.PUBLIC);
}
//validate client methods to make sure
if(methodEntry.where.isClient){
if(elem.getParameters().isEmpty()){
BaseProcessor.err("Client invoke methods must have a first parameter of type Player", elem);
return;
}
if(!elem.getParameters().get(0).asType().toString().contains("Player")){
BaseProcessor.err("Client invoke methods should have a first parameter of type Player", elem);
return;
}
}
//if toAll is false, it's a 'send to one player' variant, so add the player as a parameter
if(!toAll){
method.addParameter(ClassName.bestGuess("mindustry.net.NetConnection"), "playerConnection");
}
//add sender to ignore
if(forwarded){
method.addParameter(ClassName.bestGuess("mindustry.net.NetConnection"), "exceptConnection");
}
//call local method if applicable, shouldn't happen when forwarding method as that already happens by default
if(!forwarded && methodEntry.local != Loc.none){
//add in local checks
if(methodEntry.local != Loc.both){
method.beginControlFlow("if(" + getCheckString(methodEntry.local) + " || !mindustry.Vars.net.active())");
}
//concatenate parameters
int index = 0;
StringBuilder results = new StringBuilder();
for(VariableElement var : elem.getParameters()){
//special case: calling local-only methods uses the local player
if(index == 0 && methodEntry.where == Loc.client){
results.append("mindustry.Vars.player");
}else{
results.append(var.getSimpleName());
}
if(index != elem.getParameters().size() - 1) results.append(", ");
index++;
}
//add the statement to call it
method.addStatement("$N." + elem.getSimpleName() + "(" + results.toString() + ")",
((TypeElement)elem.getEnclosingElement()).getQualifiedName().toString());
if(methodEntry.local != Loc.both){
method.endControlFlow();
}
}
//start control flow to check if it's actually client/server so no netcode is called
method.beginControlFlow("if(" + getCheckString(methodEntry.where) + ")");
//add statement to create packet from pool
method.addStatement("$1N packet = $2N.obtain($1N.class, $1N::new)", "mindustry.net.Packets.InvokePacket", "arc.util.pooling.Pools");
//assign priority
method.addStatement("packet.priority = (byte)" + methodEntry.priority.ordinal());
//assign method ID
method.addStatement("packet.type = (byte)" + methodEntry.id);
//reset stream
method.addStatement("OUT.reset()");
method.addTypeVariables(Seq.with(elem.getTypeParameters()).map(BaseProcessor::getTVN));
for(int i = 0; i < elem.getParameters().size(); i++){
//first argument is skipped as it is always the player caller
if((!methodEntry.where.isServer/* || methodEntry.mode == Loc.both*/) && i == 0){
continue;
}
VariableElement var = elem.getParameters().get(i);
try{
//add parameter to method
method.addParameter(TypeName.get(var.asType()), var.getSimpleName().toString());
}catch(Throwable t){
throw new RuntimeException("Error parsing method " + methodEntry.targetMethod);
}
//name of parameter
String varName = var.getSimpleName().toString();
//name of parameter type
String typeName = var.asType().toString();
//captialized version of type name for writing primitives
String capName = typeName.equals("byte") ? "" : Character.toUpperCase(typeName.charAt(0)) + typeName.substring(1);
//special case: method can be called from anywhere to anywhere
//thus, only write the player when the SERVER is writing data, since the client is the only one who reads it
boolean writePlayerSkipCheck = methodEntry.where == Loc.both && i == 0;
if(writePlayerSkipCheck){ //write begin check
method.beginControlFlow("if(mindustry.Vars.net.server())");
}
if(BaseProcessor.isPrimitive(typeName)){ //check if it's a primitive, and if so write it
method.addStatement("WRITE.$L($L)", typeName.equals("boolean") ? "bool" : typeName.charAt(0) + "", varName);
}else{
//else, try and find a serializer
String ser = serializers.writers.get(typeName.replace("mindustry.gen.", ""), SerializerResolver.locate(elem, var.asType(), true));
if(ser == null){ //make sure a serializer exists!
BaseProcessor.err("No @WriteClass method to write class type: '" + typeName + "'", var);
return;
}
//add statement for writing it
method.addStatement(ser + "(WRITE, " + varName + ")");
}
if(writePlayerSkipCheck){ //write end check
method.endControlFlow();
}
}
//assign packet bytes
method.addStatement("packet.bytes = OUT.getBytes()");
//assign packet length
method.addStatement("packet.length = OUT.size()");
String sendString;
if(forwarded){ //forward packet
if(!methodEntry.local.isClient){ //if the client doesn't get it called locally, forward it back after validation
sendString = "mindustry.Vars.net.send(";
}else{
sendString = "mindustry.Vars.net.sendExcept(exceptConnection, ";
}
}else if(toAll){ //send to all players / to server
sendString = "mindustry.Vars.net.send(";
}else{ //send to specific client from server
sendString = "playerConnection.send(";
}
//send the actual packet
method.addStatement(sendString + "packet, " +
(methodEntry.unreliable ? "mindustry.net.Net.SendMode.udp" : "mindustry.net.Net.SendMode.tcp") + ")");
//end check for server/client
method.endControlFlow();
//add method to class, finally
classBuilder.addMethod(method.build());
}
private String getCheckString(Loc loc){
return loc.isClient && loc.isServer ? "mindustry.Vars.net.server() || mindustry.Vars.net.client()" :
loc.isClient ? "mindustry.Vars.net.client()" :
loc.isServer ? "mindustry.Vars.net.server()" : "false";
}
}

View File

@@ -7,6 +7,7 @@ import com.sun.tools.javac.code.Attribute.Enum;
import com.sun.tools.javac.code.Attribute.Error; import com.sun.tools.javac.code.Attribute.Error;
import com.sun.tools.javac.code.Attribute.Visitor; import com.sun.tools.javac.code.Attribute.Visitor;
import com.sun.tools.javac.code.Attribute.*; import com.sun.tools.javac.code.Attribute.*;
import com.sun.tools.javac.code.Scope.*;
import com.sun.tools.javac.code.Type; import com.sun.tools.javac.code.Type;
import com.sun.tools.javac.code.Symbol.*; import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Type.ArrayType; import com.sun.tools.javac.code.Type.ArrayType;
@@ -64,36 +65,13 @@ public class AnnotationProxyMaker{
LinkedHashMap map = new LinkedHashMap(); LinkedHashMap map = new LinkedHashMap();
ClassSymbol cl = (ClassSymbol)this.anno.type.tsym; ClassSymbol cl = (ClassSymbol)this.anno.type.tsym;
//try to use Java 8 API for this if possible for(Symbol s : cl.members().getSymbols(LookupKind.NON_RECURSIVE)){
try{ if(s.getKind() == ElementKind.METHOD){
Class entryClass = Class.forName("com.sun.tools.javac.code.Scope$Entry"); MethodSymbol var4 = (MethodSymbol)s;
Object members = cl.members(); Attribute var5 = var4.getDefaultValue();
Field field = members.getClass().getField("elems"); if(var5 != null){
Object elems = field.get(members); map.put(var4, var5);
Field siblingField = entryClass.getField("sibling");
Field symField = entryClass.getField("sym");
for(Object currEntry = elems; currEntry != null; currEntry = siblingField.get(currEntry)){
handleSymbol((Symbol)symField.get(currEntry), map);
}
}catch(Throwable e){
//otherwise try other API
try{
Class lookupClass = Class.forName("com.sun.tools.javac.code.Scope$LookupKind");
Field nonRecField = lookupClass.getField("NON_RECURSIVE");
Object nonRec = nonRecField.get(null);
Scope scope = cl.members();
Method getSyms = scope.getClass().getMethod("getSymbols", lookupClass);
Iterable<Symbol> it = (Iterable<Symbol>)getSyms.invoke(scope, nonRec);
Iterator<Symbol> i = it.iterator();
while(i.hasNext()){
handleSymbol(i.next(), map);
} }
}catch(Throwable death){
//I tried
throw new RuntimeException(death);
} }
} }
@@ -104,17 +82,6 @@ public class AnnotationProxyMaker{
return map; return map;
} }
private void handleSymbol(Symbol sym, LinkedHashMap map){
if(sym.getKind() == ElementKind.METHOD){
MethodSymbol var4 = (MethodSymbol)sym;
Attribute var5 = var4.getDefaultValue();
if(var5 != null){
map.put(var4, var5);
}
}
}
private Object generateValue(MethodSymbol var1, Attribute var2){ private Object generateValue(MethodSymbol var1, Attribute var2){
AnnotationProxyMaker.ValueVisitor var3 = new AnnotationProxyMaker.ValueVisitor(var1); AnnotationProxyMaker.ValueVisitor var3 = new AnnotationProxyMaker.ValueVisitor(var1);
return var3.getValue(var2); return var3.getValue(var2);

View File

@@ -12,6 +12,10 @@ import java.lang.Class;
import java.lang.annotation.*; import java.lang.annotation.*;
import java.lang.reflect.*; import java.lang.reflect.*;
/**
* Wrapper over Element with added utility functions.
* I would have preferred to use extension methods for this, but Java doesn't have any.
* */
public class Selement<T extends Element>{ public class Selement<T extends Element>{
public final T e; public final T e;

View File

@@ -1,7 +1,6 @@
package mindustry.annotations.util; package mindustry.annotations.util;
import com.sun.source.tree.*; import com.sun.source.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import mindustry.annotations.*; import mindustry.annotations.*;
import javax.lang.model.element.*; import javax.lang.model.element.*;
@@ -16,10 +15,6 @@ public class Svar extends Selement<VariableElement>{
return up().asType().toString() + "#" + super.toString().replace("mindustry.gen.", ""); return up().asType().toString() + "#" + super.toString().replace("mindustry.gen.", "");
} }
public JCVariableDecl jtree(){
return (JCVariableDecl)BaseProcessor.elementu.getTree(e);
}
public Stype enclosingType(){ public Stype enclosingType(){
return new Stype((TypeElement)up()); return new Stype((TypeElement)up());
} }

View File

@@ -22,6 +22,7 @@ mindustry.entities.comp.PosTeamDef=28
mindustry.entities.comp.PuddleComp=13 mindustry.entities.comp.PuddleComp=13
mindustry.type.Weather.WeatherStateComp=14 mindustry.type.Weather.WeatherStateComp=14
mindustry.world.blocks.campaign.LaunchPad.LaunchPayloadComp=15 mindustry.world.blocks.campaign.LaunchPad.LaunchPayloadComp=15
mindustry.world.blocks.campaign.PayloadLaunchPad.LargeLaunchPayloadComp=34
mindustry.world.blocks.defense.ForceProjector.ForceDrawComp=22 mindustry.world.blocks.defense.ForceProjector.ForceDrawComp=22
mono=16 mono=16
nova=17 nova=17

View File

@@ -0,0 +1 @@
{version:1,fields:[{name:collided,type:arc.struct.IntSeq},{name:damage,type:float},{name:data,type:java.lang.Object},{name:fdata,type:float},{name:lifetime,type:float},{name:owner,type:mindustry.gen.Entityc},{name:rotation,type:float},{name:team,type:mindustry.game.Team},{name:time,type:float},{name:type,type:mindustry.entities.bullet.BulletType},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:collided,type:arc.struct.IntSeq},{name:damage,type:float},{name:data,type:java.lang.Object},{name:fdata,type:float},{name:lifetime,type:float},{name:owner,type:mindustry.gen.Entityc},{name:rotation,type:float},{name:team,type:mindustry.game.Team},{name:time,type:float},{name:type,type:mindustry.entities.bullet.BulletType},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{fields:[{name:lifetime,type:float},{name:payload,type:mindustry.world.blocks.payloads.Payload},{name:team,type:mindustry.game.Team},{name:time,type:float},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:1,fields:[{name:amount,type:float},{name:liquid,type:mindustry.type.Liquid},{name:tile,type:mindustry.world.Tile},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:6,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:4,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:payloads,type:arc.struct.Seq<mindustry.world.blocks.payloads.Payload>},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:5,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:4,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:4,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:payloads,type:arc.struct.Seq<mindustry.world.blocks.payloads.Payload>},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:4,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:5,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:payloads,type:arc.struct.Seq<mindustry.world.blocks.payloads.Payload>},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:ammo,type:float},{name:baseRotation,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:6,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:5,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -0,0 +1 @@
{version:2,fields:[{name:ammo,type:float},{name:controller,type:mindustry.entities.units.UnitController},{name:elevation,type:float},{name:flag,type:double},{name:health,type:float},{name:isShooting,type:boolean},{name:mineTile,type:mindustry.world.Tile},{name:mounts,type:"mindustry.entities.units.WeaponMount[]"},{name:plans,type:arc.struct.Queue<mindustry.entities.units.BuildPlan>},{name:rotation,type:float},{name:shield,type:float},{name:spawnedByCore,type:boolean},{name:stack,type:mindustry.type.ItemStack},{name:statuses,type:arc.struct.Seq<mindustry.entities.units.StatusEntry>},{name:team,type:mindustry.game.Team},{name:type,type:mindustry.type.UnitType},{name:updateBuilding,type:boolean},{name:vel,type:arc.math.geom.Vec2},{name:x,type:float},{name:y,type:float}]}

View File

@@ -12,31 +12,52 @@ buildscript{
mavenCentral() mavenCentral()
google() google()
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" } maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter()
maven{ url 'https://jitpack.io' } maven{ url 'https://jitpack.io' }
//fake repository to download my patched robovm jar from
ivy{
url 'https://github.com/'
patternLayout {
artifact '/[organisation]/[module]/raw/a-single-jar-file/[revision].jar'
}
// This is required in Gradle 6.0+ as metadata file (ivy.xml)
// is mandatory. Docs linked below this code section
metadataSources { artifact() }
}
} }
dependencies{ dependencies{
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.3.11' //use local, patched robovm gradle plugin until my PR for gradle 7.0 support is merged
classpath "com.github.anuken:packr:-SNAPSHOT" //https://github.com/Anuken/robovm/raw/a-single-jar-file/robovm-gradle-plugin-2.3.14-SNAPSHOT.jar
classpath "Anuken:robovm:robovm-gradle-plugin-2.3.14-SNAPSHOT"
//needed for plugin above
classpath "com.mobidevelop.robovm:robovm-dist-compiler:2.3.13"
classpath "com.github.Anuken.Arc:packer:$arcHash" classpath "com.github.Anuken.Arc:packer:$arcHash"
classpath "com.github.Anuken.Arc:arc-core:$arcHash" classpath "com.github.Anuken.Arc:arc-core:$arcHash"
} }
} }
plugins{
id 'org.jetbrains.kotlin.jvm' version '1.5.21'
id "org.jetbrains.kotlin.kapt" version "1.5.21"
}
allprojects{ allprojects{
apply plugin: 'maven' apply plugin: 'maven-publish'
version = 'release' version = 'release'
group = 'com.github.Anuken' group = 'com.github.Anuken'
ext{ ext{
versionNumber = '6' versionNumber = '7'
if(!project.hasProperty("versionModifier")) versionModifier = 'release' if(!project.hasProperty("versionModifier")) versionModifier = 'pre-alpha'
if(!project.hasProperty("versionType")) versionType = 'official' if(!project.hasProperty("versionType")) versionType = 'official'
appName = 'Mindustry' appName = 'Mindustry'
steamworksVersion = '891ed912791e01fe9ee6237a6497e5212b85c256' steamworksVersion = '0b86023401880bb5e586bc404bedbaae9b1f1c94'
rhinoVersion = '2617981f706e50b8753155d8e15e326308be3b22' rhinoVersion = '3c6bbadf73a904eefcc28b6fd8aa742ac575e878'
loadVersionProps = { loadVersionProps = {
return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p } return new Properties().with{p -> p.load(file('../core/assets/version.properties').newReader()); return p }
@@ -84,13 +105,11 @@ allprojects{
} }
hasSprites = { hasSprites = {
return new File(rootDir, "core/assets/sprites/sprites.atlas").exists() return new File(rootDir, "core/assets/sprites/sprites.aatls").exists()
} }
getModifierString = { getModifierString = {
if(versionModifier != "release"){ if(versionModifier != "release") return "[${versionModifier.toUpperCase()}]"
return "[${versionModifier.toUpperCase()}]"
}
return "" return ""
} }
@@ -108,8 +127,7 @@ allprojects{
def v = System.getenv("ANDROID_HOME") def v = System.getenv("ANDROID_HOME")
if(v != null) return v if(v != null) return v
//rootDir is null here, amazing. brilliant. //rootDir is null here, amazing. brilliant.
def file = new File("local.properties") def file = new File(rootDir, "local.properties")
if(!file.exists()) file = new File("../local.properties")
def props = new Properties().with{p -> p.load(file.newReader()); return p } def props = new Properties().with{p -> p.load(file.newReader()); return p }
return props.get("sdk.dir") return props.get("sdk.dir")
} }
@@ -184,7 +202,6 @@ allprojects{
maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" } maven{ url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven{ url "https://oss.sonatype.org/content/repositories/releases/" } maven{ url "https://oss.sonatype.org/content/repositories/releases/" }
maven{ url 'https://jitpack.io' } maven{ url 'https://jitpack.io' }
jcenter()
} }
task clearCache{ task clearCache{
@@ -197,10 +214,21 @@ allprojects{
tasks.withType(JavaCompile){ tasks.withType(JavaCompile){
targetCompatibility = 8 targetCompatibility = 8
sourceCompatibility = 14 sourceCompatibility = JavaVersion.VERSION_16
options.encoding = "UTF-8" options.encoding = "UTF-8"
options.compilerArgs += ["-Xlint:deprecation"] options.compilerArgs += ["-Xlint:deprecation"]
dependsOn clearCache dependsOn clearCache
options.forkOptions.jvmArgs += [
'--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED',
'--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED',
'--add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED',
'--add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED',
'--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED',
'--add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED',
'--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED',
'--add-opens=java.base/sun.reflect.annotation=ALL-UNNAMED'
]
} }
} }
@@ -208,26 +236,20 @@ configure(project(":annotations")){
tasks.withType(JavaCompile){ tasks.withType(JavaCompile){
targetCompatibility = 8 targetCompatibility = 8
sourceCompatibility = 8 sourceCompatibility = 8
options.fork = true
} }
} }
//compile with java 8 compatibility for everything except the annotation project //compile with java 8 compatibility for everything except the annotation project
configure(subprojects - project(":annotations")){ configure(subprojects - project(":annotations")){
tasks.withType(JavaCompile){ tasks.withType(JavaCompile){
if(JavaVersion.current() != JavaVersion.VERSION_1_8){ options.compilerArgs.addAll(['--release', '8'])
options.compilerArgs.addAll(['--release', '8', '--enable-preview'])
}
doFirst{
options.compilerArgs = options.compilerArgs.findAll{it != '--enable-preview' }
}
} }
tasks.withType(Javadoc){ tasks.withType(Javadoc){
options{ options{
addStringOption('Xdoclint:none', '-quiet') addStringOption('Xdoclint:none', '-quiet')
addBooleanOption('-enable-preview', true) addStringOption('-release', '16')
addStringOption('-release', '14')
} }
} }
} }
@@ -239,9 +261,9 @@ project(":desktop"){
dependencies{ dependencies{
implementation project(":core") implementation project(":core")
implementation arcModule("extensions:discord")
implementation arcModule("natives:natives-desktop") implementation arcModule("natives:natives-desktop")
implementation arcModule("natives:natives-freetype-desktop") implementation arcModule("natives:natives-freetype-desktop")
implementation 'com.github.MinnDevelopment:java-discord-rpc:v2.0.1'
if(debugged()) implementation project(":debug") if(debugged()) implementation project(":debug")
@@ -289,6 +311,15 @@ project(":ios"){
project(":core"){ project(":core"){
apply plugin: "java-library" apply plugin: "java-library"
apply plugin: "kotlin"
apply plugin: "kotlin-kapt"
kapt{
javacOptions{
option("-source", "16")
option("-target", "1.8")
}
}
compileJava.options.fork = true compileJava.options.fork = true
@@ -316,26 +347,82 @@ project(":core"){
} }
} }
def changelogs = file("../fastlane/metadata/android/en-US/changelogs/") def changelogs = file("../fastlane/metadata/android/en-US/changelogs/")
new File(changelogs, androidVersion + ".txt").text = (result) changelogs.mkdirs()
try{
new File(changelogs, androidVersion + ".txt").text = (result)
}catch(Exception ignored){
}
} }
} }
task sourcesJar(type: Jar, dependsOn: classes){
archiveClassifier = 'sources'
from sourceSets.main.allSource
}
task assetsJar(type: Jar, dependsOn: ":tools:pack"){
archiveClassifier = 'assets'
from files("assets"){
exclude "config", "cache", "music", "sounds"
}
}
task musicJar(type: Jar){
archiveClassifier = 'music'
from files("assets"){
include "music/*", "sounds/*"
}
}
artifacts{
archives sourcesJar
archives assetsJar
}
dependencies{ dependencies{
compileJava.dependsOn(preGen) compileJava.dependsOn(preGen)
api "org.lz4:lz4-java:1.4.1" api "org.lz4:lz4-java:1.7.1"
api arcModule("arc-core") api arcModule("arc-core")
api arcModule("extensions:flabel")
api arcModule("extensions:freetype") api arcModule("extensions:freetype")
api arcModule("extensions:g3d") api arcModule("extensions:g3d")
api arcModule("extensions:fx") api arcModule("extensions:fx")
api arcModule("extensions:arcnet") api arcModule("extensions:arcnet")
api "com.github.Anuken:rhino:$rhinoVersion" api "com.github.Anuken:rhino:$rhinoVersion"
if(localArc() && debugged()) api arcModule("extensions:recorder") if(localArc() && debugged()) api arcModule("extensions:recorder")
if(localArc()) api arcModule(":extensions:packer")
compileOnly project(":annotations")
annotationProcessor project(":annotations")
annotationProcessor 'com.github.Anuken:jabel:34e4c172e65b3928cd9eabe1993654ea79c409cd' annotationProcessor 'com.github.Anuken:jabel:34e4c172e65b3928cd9eabe1993654ea79c409cd'
compileOnly project(":annotations")
kapt project(":annotations")
}
afterEvaluate{
task mergedJavadoc(type: Javadoc){
def blacklist = [project(":ios"), project(":desktop"), project(":server"), project(":annotations")]
if(findProject(":android") != null){
blacklist += project(":android")
}
source rootProject.subprojects.collect{ project ->
if(!blacklist.contains(project) && project.hasProperty("sourceSets")){
return project.sourceSets.main.allJava
}
}
classpath = files(rootProject.subprojects.collect { project ->
if(!blacklist.contains(project) && project.hasProperty("sourceSets")){
return project.sourceSets.main.compileClasspath
}
})
destinationDir = new File(buildDir, 'javadoc')
}
}
//comp** classes are only used for code generation
jar{
exclude("mindustry/entities/comp/**")
} }
} }
@@ -353,16 +440,18 @@ project(":tests"){
dependencies{ dependencies{
testImplementation project(":core") testImplementation project(":core")
testImplementation "org.junit.jupiter:junit-jupiter-params:5.3.1" testImplementation "org.junit.jupiter:junit-jupiter-params:5.7.1"
testImplementation "org.junit.jupiter:junit-jupiter-api:5.3.1" testImplementation "org.junit.jupiter:junit-jupiter-api:5.7.1"
testImplementation arcModule("backends:backend-headless") testImplementation arcModule("backends:backend-headless")
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.3.1" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.7.1"
} }
test{ test{
//fork every test so mods don't interact with each other
forkEvery = 1
useJUnitPlatform() useJUnitPlatform()
workingDir = new File("../core/assets") workingDir = new File("../core/assets")
testLogging { testLogging{
exceptionFormat = 'full' exceptionFormat = 'full'
showStandardStreams = true showStandardStreams = true
} }
@@ -390,6 +479,21 @@ project(":annotations"){
} }
} }
configure([":core", ":desktop", ":server", ":tools"].collect{project(it)}){
java{
withJavadocJar()
withSourcesJar()
}
publishing{
publications{
maven(MavenPublication){
from components.java
}
}
}
}
task deployAll{ task deployAll{
task cleanDeployOutput{ task cleanDeployOutput{
doFirst{ doFirst{
@@ -407,8 +511,10 @@ task deployAll{
dependsOn "desktop:packrWindows64" dependsOn "desktop:packrWindows64"
dependsOn "desktop:packrWindows32" dependsOn "desktop:packrWindows32"
dependsOn "desktop:packrMacOS" dependsOn "desktop:packrMacOS"
dependsOn "server:deploy" if(versionModifier != "steam"){
dependsOn "android:deploy" dependsOn "server:deploy"
dependsOn "android:deploy"
}
} }
task resolveDependencies{ task resolveDependencies{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 558 B

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 B

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

After

Width:  |  Height:  |  Size: 380 B

View File

Before

Width:  |  Height:  |  Size: 245 B

After

Width:  |  Height:  |  Size: 245 B

View File

Before

Width:  |  Height:  |  Size: 238 B

After

Width:  |  Height:  |  Size: 238 B

View File

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 231 B

View File

Before

Width:  |  Height:  |  Size: 233 B

After

Width:  |  Height:  |  Size: 233 B

View File

Before

Width:  |  Height:  |  Size: 162 B

After

Width:  |  Height:  |  Size: 162 B

View File

Before

Width:  |  Height:  |  Size: 171 B

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 521 B

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 200 B

After

Width:  |  Height:  |  Size: 227 B

Some files were not shown because too many files have changed in this diff Show More