Compare commits

...

2312 Commits

Author SHA1 Message Date
Boblet
6bb6b5426c the ground trembles with my every step 2026-01-23 14:53:39 +01:00
Boblet
492703ab23 amogus 2026-01-23 14:50:29 +01:00
Bob
b4d0122cfc monty python's horrible world of gravity 2026-01-22 21:48:48 +01:00
Boblet
f809843745 calliou is impaled on an asbestos stalagmite and dies 2026-01-22 15:38:17 +01:00
Boblet
6401ffde19 now kiss 2026-01-21 16:27:35 +01:00
Boblet
1aba934d36 e 2026-01-21 13:12:32 +01:00
Boblet
69c1ed01fa the glunch lunch 2026-01-21 13:11:28 +01:00
Boblet
e776b4c8d9 the gloach 2026-01-20 16:56:00 +01:00
HbmMods
6fa00c5771
Merge pull request #2643 from Bufka2011/master
Enhance CI workflow with version update logic
2026-01-20 11:06:19 +01:00
HbmMods
69c1f49f55
Merge pull request #2661 from Voxelstice/oc-comp-fix
OC connection with multiblocks bug fix
2026-01-20 10:33:15 +01:00
HbmMods
ade48e4ac7
Merge pull request #2656 from RayzerHan/master
Update ru_RU lang again
2026-01-20 10:32:18 +01:00
Bob
6c1fd10a50 plushby 2026-01-19 21:23:57 +01:00
Raaaaaaaaaay
a2fd0ea108
ok 2026-01-19 13:50:22 +02:00
Raaaaaaaaaay
33a4b983e5
Компонзит 2026-01-19 13:42:34 +02:00
Raaaaaaaaaay
0d431e387b
ммм 2026-01-19 13:37:10 +02:00
Raaaaaaaaaay
f0a1eaaaff
фикс 2026-01-19 13:36:01 +02:00
Raaaaaaaaaay
165fd062f4
ням 2026-01-18 20:07:30 +02:00
Voxelstice
7b18634b34 here's hoping this doesnt break anything else
OC connection with multiblocks bug fix
2026-01-17 10:42:19 +03:00
Raaaaaaaaaay
99ca4628dc
Kyiv 2026-01-15 21:29:53 +02:00
Raaaaaaaaaay
b892f0cc37
Merge branch 'HbmMods:master' into master 2026-01-15 17:58:02 +02:00
Boblet
7664cacd2f double barrel shaboing hot dog
(frot dog)
2026-01-14 15:54:59 +01:00
Raaaaaaaaaay
e96e821146
next door two 2026-01-14 09:18:38 +02:00
Raaaaaaaaaay
e02e4f6aae
next door 2026-01-14 09:15:59 +02:00
Raaaaaaaaaay
c1464f2881
Update 2026-01-14 02:01:10 +02:00
Raaaaaaaaaay
91dd4cc218
Sometimes I think the wind blows well, but the robot is a slut 2026-01-13 18:56:03 +02:00
Raaaaaaaaaay
6cadca0d89
People are idiots, and that's a fact. 2026-01-13 18:53:52 +02:00
HbmMods
5c9d71c626
Merge pull request #2649 from RayzerHan/master
Update RU_ru lang
2026-01-13 15:14:17 +01:00
Raaaaaaaaaay
bd03028170
фак 2026-01-13 16:06:08 +02:00
HbmMods
67aee6a2e0
Merge pull request #2648 from Vaern/muzzle-flashes
Visible third-person muzzle flashes from other players +self, skeleguns
2026-01-13 15:04:52 +01:00
Vaern
223fe240c1 remove redundant TODO 2026-01-12 23:55:29 -08:00
Vaern
5cb013d545 extended timeout duration
the highest duration for muzzle flashes is 150?, not under 100, so let's be safe
2026-01-12 23:39:50 -08:00
Vaern
82293e46cd copypaste hell
fixed tick issues in eventHandler, added packets to orchestra + third person rendering for every gun with built-in muzzle/laser flashes, and softened playAnimation so skeleguns use orchestra/muzzle flashes. akimbos show both firing, probably won't be changed
2026-01-12 23:33:05 -08:00
Raaaaaaaaaay
2e7af7058c
Merge branch 'HbmMods:master' into master 2026-01-12 19:58:03 +02:00
Raaaaaaaaaay
cc816b40e0
Очень познавательно, милая пони 2026-01-12 19:55:17 +02:00
Boblet
64fc72e18a margret thatcher is dead 2026-01-12 16:45:09 +01:00
Boblet
76c6222f45 post merge cleanup 2026-01-12 10:30:50 +01:00
HbmMods
2f8b0dde49
Merge pull request #2607 from WolfEclipses/METADATA
Rad Absorbers Metadata (Done now)
2026-01-12 10:19:08 +01:00
Vaern
712ae952df we ain't even done wit this we #KillingOurselves
superficial dedicated + integrated server testing worked. ran into a weird race condition on the former, though, but i doubt that's from anythng here
2026-01-11 18:17:36 -08:00
Bob
b2df165b4b the spingus 2026-01-11 22:24:04 +01:00
Wolf
90e148e022 I think I finally fixed this shit 2026-01-11 16:18:37 -05:00
WolfEclipses
52440fca2f
Merge branch 'HbmMods:master' into METADATA 2026-01-11 15:58:45 -05:00
Wolf
292b989e09 Testing??? 2026-01-11 15:56:24 -05:00
Raaaaaaaaaay
b0e0b54def
бля 2026-01-11 22:28:00 +02:00
HbmMods
51b758e103
Merge pull request #2645 from RayzerHan/master
update RU_ru lang
2026-01-11 21:00:24 +01:00
Raaaaaaaaaay
d25cef888d
Merge branch 'HbmMods:master' into master 2026-01-11 21:51:52 +02:00
Raaaaaaaaaay
62ce75f458
battery 2026-01-11 21:45:35 +02:00
Bufka2011
c146829bf4
Merge branch 'HbmMods:master' into master 2026-01-11 12:24:43 -07:00
Bufka2011
b60cf07e98
Enhance CI workflow with version update logic
Added steps to calculate days since 10/10/10 and update version files accordingly.
2026-01-11 12:24:11 -07:00
HbmMods
0e30985963
Merge pull request #2639 from ranch21/calc
calculator history
2026-01-11 20:23:09 +01:00
HbmMods
a491b16dfe
Merge pull request #2641 from sunryze-git/improved-pneumatics
improved pneumatics throughput
2026-01-11 20:22:26 +01:00
Bob
026c0d074e mirror fix 2026-01-11 20:21:02 +01:00
sunryze-git
6cc60c0234 pneumatic throughput now doesnt suck cuz we dont give up instantly 2026-01-11 14:17:00 -05:00
WolfEclipses
1f17af27f7
Merge branch 'master' into METADATA 2026-01-11 13:32:05 -05:00
HbmMods
8aa9ff2895
Merge pull request #2630 from Voxelstice/oc-bat-rework
OC compat for new batteries
2026-01-11 19:20:28 +01:00
HbmMods
5c0ff2b603
Merge branch 'master' into oc-bat-rework 2026-01-11 19:20:18 +01:00
HbmMods
3c461313bc
Merge pull request #2636 from RayzerHan/master
update RU_ru lang
2026-01-11 19:18:39 +01:00
Bob
71fb9a814d he rotates 2026-01-11 19:14:08 +01:00
ranch
27e4cd32aa gui design is my passion 2026-01-10 17:38:05 -06:00
Bob
8bdce3a4b3 been thinking about that yaoi 2026-01-10 21:31:09 +01:00
Bob
4bfce2ba92 Auto stash before merge of "master" and "origin/master" 2026-01-10 14:39:59 +01:00
WolfEclipses
5ec68643f8
Merge branch 'master' into METADATA 2026-01-09 20:52:29 -05:00
Voxelstice
65ea177ac0 consider not forgetting. thanks.
priority is outputted correctly now
2026-01-09 23:05:21 +03:00
Voxelstice
be93b9cc8c waiter! waiter! more lead acid batteries please!
adds OC compat to new battery blocks
2026-01-09 23:01:38 +03:00
Raaaaaaaaaay
439d5e52b8
электромассивы 2026-01-09 16:43:32 +02:00
Raaaaaaaaaay
72500ed749
термоядерный термоядерный 2026-01-09 16:28:44 +02:00
Boblet
f17556a0d6 fentanyl 2026-01-09 14:55:58 +01:00
HbmMods
6a732fadde
Merge pull request #2624 from ranch21/better-bars
Better electric FSB hud bars
2026-01-09 10:07:07 +01:00
HbmMods
bcb2f1a198
Merge pull request #2625 from MellowArpeggiation/msu-ui
in world UI for mass storage units
2026-01-09 10:06:37 +01:00
Boblet
79351bbd0a do you come from a vegetmite sandwich? 2026-01-09 10:05:56 +01:00
George Paton
a6087b4bef vanilla slimes also leak state who'da'fucken'thunk it 2026-01-09 14:48:52 +11:00
George Paton
9f26d04f7a buzzer beater functionality: render 3D items with fancy graphics enabled! 2026-01-09 14:08:07 +11:00
Boblet
84326bedb4 bals 2026-01-08 17:43:07 +01:00
George Paton
a0a7e000d4 drop correct meta on breaking 2026-01-08 22:26:26 +11:00
George Paton
b5b4a537c5 what the fuck is this baby doing mixed in with my bathwater 2026-01-08 22:17:25 +11:00
George Paton
7757e3cb53 add a fill progress bar 2026-01-08 22:07:21 +11:00
George Paton
b77633b152 draw the rest of the owl 2026-01-08 21:01:57 +11:00
Boblet
9ef7668702 FUCK 2026-01-08 08:52:22 +01:00
ranch
4998cd13c2 we do a little cleanup 2026-01-08 01:19:32 -06:00
ranch
1aaf568338 better electric FSB hud 2026-01-08 01:01:27 -06:00
George Paton
18a4d7a25a basic rendering of items inside MSUs (on the north face only atm) complete 2026-01-08 15:32:12 +11:00
Boblet
2b9d43891a dance the safety dance 2026-01-07 16:44:15 +01:00
HbmMods
0197ee79a7
Merge pull request #2617 from RayzerHan/master
update RU_ru lang
2026-01-07 10:52:59 +01:00
HbmMods
6297bbd6a8
Merge pull request #2618 from NarekoMichigami810/master
zh_CN update
2026-01-07 10:51:45 +01:00
道神 馴子
ad9130079e
Rape my brain 2026-01-07 17:41:15 +08:00
道神 馴子
7a39fd778f
i cum on my face 2026-01-07 17:28:48 +08:00
道神 馴子
ee0149c133
姗姗来迟 2026-01-07 16:34:31 +08:00
Raaaaaaaaaay
ee643f4407
Merge branch 'HbmMods:master' into master 2026-01-06 22:26:01 +02:00
Raaaaaaaaaay
218ad3e59e
кумавы 2026-01-06 22:24:38 +02:00
Bob
4032cc277a he thicc 2026-01-06 21:21:06 +01:00
Raaaaaaaaaay
4b4868e102
kimi 2026-01-06 22:17:28 +02:00
Raaaaaaaaaay
83d4505021
и танцевала рыбка с раком 2026-01-06 21:00:40 +02:00
Raaaaaaaaaay
0e063bbd72
up up up 2026-01-06 20:50:33 +02:00
Raaaaaaaaaay
29960cdc0a
Merge branch 'HbmMods:master' into master 2026-01-06 20:42:21 +02:00
HbmMods
d718b58269
Merge pull request #2605 from Toshayo/master
Fluid valve with counter for simpler automation
2026-01-06 19:38:13 +01:00
HbmMods
6141d1d24e
Merge branch 'master' into master 2026-01-06 19:38:02 +01:00
Bob
8619c8e67d he big 2026-01-06 19:35:39 +01:00
Raaaaaaaaaay
9c89902e56
aoh 2026-01-04 21:12:53 +02:00
Bob
b20d5f46b2 more caching because sure 2026-01-03 12:22:56 +01:00
WolfEclipses
52ae974f51
Merge branch 'master' into METADATA 2026-01-02 20:13:04 -05:00
Bob
a7afacfaf2 flavor town 2026-01-02 11:20:15 +01:00
Wolf
f089578ba7 Got rid of functionality for legacy rad absorber 2026-01-01 19:55:49 -05:00
Wolf
1e4346a54b Fixed redundant functions (there were more than I thought) xd 2026-01-01 19:40:37 -05:00
WolfEclipses
a1b83b4a67
Merge branch 'master' into METADATA 2026-01-01 18:38:27 -05:00
Raaaaaaaaaay
4e7bbda689
ня 2026-01-01 17:59:35 +02:00
HbmMods
539225cf78
Merge pull request #2608 from WolfEclipses/WATER
Infinite Water tank Recipe
2026-01-01 14:56:07 +01:00
HbmMods
195cf193c7
Merge pull request #2613 from WolfEclipses/OilQMAW
QMAW Page for crude oil
2026-01-01 14:55:47 +01:00
HbmMods
fd348a40e7
Merge pull request #2614 from PewPewCricket/master
Update PWR OpenComputers Compat
2026-01-01 14:54:26 +01:00
HbmMods
6964b4ec9d
Merge pull request #2606 from Goaty1208/master
mhmhmgmg pizza
2026-01-01 14:52:39 +01:00
PewPewCricket
1418a9be87
Merge branch 'HbmMods:master' into master 2025-12-31 19:30:45 -06:00
Bob
f87b37d7e3 well, too bad 2025-12-31 15:38:24 +01:00
PewPewCricket
871de4ae47 fix PWRangler crashing with PWRs using heat sinks 2025-12-30 18:40:08 -06:00
PewPewCricket
89b1cb1de0 allow reading core heat capacity using OC with PWRs. 2025-12-30 17:50:38 -06:00
Wolf
5dc1ee440b Forgot to account for all processing methods, need to expand in their own pages 2025-12-29 19:33:08 -05:00
Wolf
e52f70b340 QMAW Page for crude oil 2025-12-29 19:09:44 -05:00
Goaty1208
e629802bcb Cruciblelicious 2025-12-28 11:42:38 +01:00
Wolf
59bccc9be3 Why am I being asked for this so often 2025-12-27 18:46:01 -05:00
Wolf
838bcb8faa Had them swapped up somehow xd 2025-12-27 18:18:48 -05:00
Goaty1208
5100384e18 mhmhmgmg pizza
Fixed translations
2025-12-27 23:40:46 +01:00
Wolf
a8b046f46b Bringing up to date because yeah 2025-12-27 17:19:45 -05:00
WolfEclipses
6b87447ca1
Merge branch 'master' into METADATA 2025-12-27 14:01:57 -05:00
Toshayo
e601e79ad3
Updated changelog 2025-12-26 15:05:47 +01:00
Toshayo
a944c28dd4
Added fluid valve with counter 2025-12-26 14:14:20 +01:00
Bob
de2a11389c i like eating lead-sulfur batteries 2025-12-23 20:51:55 +01:00
Raaaaaaaaaay
b88d6f6cd3
aoh 2025-12-20 15:48:05 +02:00
Boblet
ef2b20d357 succumb 2025-12-17 14:55:50 +01:00
Boblet
f82a606b66 shit yourself 2025-12-16 16:16:19 +01:00
Boblet
c639be1429 67 mango mustard kendrick still water dubai labubu chocolate tralalero
please someone euthanize me
2025-12-16 15:22:51 +01:00
HbmMods
76e6e7852b
Merge pull request #2588 from RayzerHan/master
Update Ru_lang
2025-12-15 15:33:21 +01:00
Boblet
82f175105c bap 2025-12-15 15:33:10 +01:00
Boblet
fa12cfeec1 ow 2025-12-15 11:03:05 +01:00
Raaaaaaaaaay
7ee52ac56c
Merge branch 'HbmMods:master' into master 2025-12-14 22:37:42 +02:00
Bob
0fe125251b nobody saw a thing 2025-12-14 21:34:33 +01:00
Bob
5bcfd368fc yeag 2025-12-14 21:17:34 +01:00
Raaaaaaaaaay
154503a95d
руда 2025-12-13 00:04:57 +02:00
Raaaaaaaaaay
54cbb495cc
рыбка 2025-12-13 00:04:23 +02:00
Boblet
1f5fc1926c spoingus 2025-12-12 13:34:32 +01:00
Boblet
1e3e5f38d4 all our food keeps blowing up 2025-12-11 16:34:57 +01:00
Boblet
ec0613b9cf spingus 2025-12-10 16:32:34 +01:00
HbmMods
7204b3662c
Merge pull request #2581 from NarekoMichigami810/master
zh_CN update
2025-12-10 08:06:42 +01:00
Boblet
d5ac6fe239 death 2025-12-09 16:29:37 +01:00
Boblet
c916ad73e1 let the carnage begin 2025-12-09 15:27:24 +01:00
WolfEclipses
bce98561d3 Added back old ones, changed lang to OLD for them 2025-12-09 08:31:52 -05:00
道神 馴子
7129d5ee7c
沉迷勒布朗 2025-12-09 21:24:17 +08:00
WolfEclipses
003afa4071 Forgot to remove this from making the name work xd 2025-12-09 07:46:27 -05:00
WolfEclipses
7f963bdb6f I FORGOT TO ACCOUNT FOR OTHER LANGUAGES T_T 2025-12-08 22:44:49 -05:00
WolfEclipses
96298a5c31 I think this works :P we will find out that Im an
idiot in like 30seconds
2025-12-08 22:20:07 -05:00
Raaaaaaaaaay
540900d0f5
up amogus 2025-12-08 22:58:56 +02:00
Raaaaaaaaaay
10585527ae
Merge branch 'HbmMods:master' into master 2025-12-08 22:55:35 +02:00
Bob
d02b328c27 pain 2025-12-08 18:14:16 +01:00
Raaaaaaaaaay
510923d14a
beton 2025-12-08 17:31:43 +02:00
Raaaaaaaaaay
8b5cf6f321
Merge branch 'HbmMods:master' into master 2025-12-08 17:31:04 +02:00
Bob
39aa0de008 load of crap that doesn't work 2025-12-07 22:01:33 +01:00
Raaaaaaaaaay
bd17238c1c
fix recipe 2025-12-06 20:22:24 +02:00
Raaaaaaaaaay
63146394ac
Merge branch 'HbmMods:master' into master 2025-12-06 16:06:08 +02:00
Raaaaaaaaaay
7867d6c6bd
fix 2025-12-06 12:12:23 +02:00
Boblet
55b4fec00b it wasn't for a lack of trying 2025-12-05 14:38:13 +01:00
Boblet
2430fec8c6 ough 2025-12-04 15:55:00 +01:00
Raaaaaaaaaay
6cf88c673f
ой 2025-12-04 11:05:32 +02:00
Boblet
308e559229 spungus 2025-12-03 15:34:29 +01:00
Boblet
1fcfa136be perpetual agony mechanism 2025-12-01 16:54:04 +01:00
HbmMods
03e7db5d92
Merge pull request #2563 from MellowArpeggiation/structure-port
Structure Block!
2025-12-01 10:09:11 +01:00
Raaaaaaaaaay
a94005fc1f
Merge branch 'HbmMods:master' into master 2025-12-01 10:34:49 +02:00
Raaaaaaaaaay
548ede7f89
рыбки 2025-12-01 10:34:42 +02:00
Boblet
0e4ef1c45c the nightmare engine 2025-12-01 09:29:47 +01:00
George Paton
42ab196b06 structure block! 2025-12-01 13:36:31 +11:00
George Paton
a32b04ed14 all new NBTStructureLib features up to structure block (coming next) 2025-12-01 12:05:56 +11:00
HbmMods
2f841940b8
Merge pull request #2560 from RayzerHan/master
Update RU_ru lang/Qmaw
2025-11-30 22:48:16 +01:00
Bob
4141b424a9 flixes 2025-11-30 22:46:20 +01:00
Raaaaaaaaaay
afb44cd3fd
пятак гони на стол 2025-11-30 17:52:50 +02:00
Raaaaaaaaaay
096f77f3ab
танцуем с форелью 2025-11-30 17:37:55 +02:00
Raaaaaaaaaay
e2bb1e00c9
Витя станцую брейкданс на раскалённом пару 2025-11-30 17:32:28 +02:00
Raaaaaaaaaay
b43577c6cd
fix 2025-11-30 13:53:30 +02:00
Raaaaaaaaaay
818f39c1c5
fix 2025-11-29 23:46:08 +02:00
Raaaaaaaaaay
d71fee617c
ох мда 2025-11-29 23:40:32 +02:00
Raaaaaaaaaay
aa7aff5150
update QMAW, ох этот урановый концентрат 2025-11-29 23:35:32 +02:00
Raaaaaaaaaay
f6a3e44271
fix 2025-11-29 23:25:09 +02:00
Raaaaaaaaaay
6ad72b293d
update 2025-11-28 17:50:44 +02:00
Raaaaaaaaaay
bce94d0957
Merge branch 'HbmMods:master' into master 2025-11-28 17:40:11 +02:00
Boblet
3101c9b3b9 compost 2025-11-28 14:10:17 +01:00
Raaaaaaaaaay
99b19cd022
Merge branch 'HbmMods:master' into master 2025-11-28 13:08:58 +02:00
Bob
f50e0ee67c sound fix 2025-11-27 19:34:55 +01:00
HbmMods
a8c6ee4ba4
Merge pull request #2553 from Voxelstice/oc-fusion-pa
OC compat for new fusion reactor and particle accelerator
2025-11-27 16:46:18 +01:00
Voxelstice
9ab73e382f here it goes again
adds OC compat to the new fusion reactor and the particle accelerator
2025-11-27 18:17:51 +03:00
Boblet
3bdd7b4c94 evil mechanism 2025-11-27 10:51:48 +01:00
Boblet
4322892abb fugorg contraption 2025-11-26 15:50:45 +01:00
Boblet
a4a08aa9cd oughe, 2025-11-26 11:09:29 +01:00
Raaaaaaaaaay
cbff57375c
Merge branch 'HbmMods:master' into master 2025-11-26 11:00:14 +02:00
Boblet
879d9d1f8a que? 2025-11-26 08:11:55 +01:00
Raaaaaaaaaay
b9271cc81d
Merge branch 'HbmMods:master' into master 2025-11-25 16:02:14 +02:00
Boblet
fc967e8878 they took my arms 2025-11-25 13:42:02 +01:00
Boblet
7afd9901d3 no more rainbows. we homophobic now. 2025-11-25 12:49:03 +01:00
HbmMods
f91718111d
Merge pull request #2546 from NarekoMichigami810/master
zh_CN update
2025-11-25 08:29:47 +01:00
Raaaaaaaaaay
c7f5a14e42
Merge branch 'HbmMods:master' into master 2025-11-24 14:46:34 +02:00
道神 馴子
dacddfb3a1
cookie 2025-11-24 20:27:44 +08:00
Bob
4fe5128547 fusion rework in a week 2025-11-23 21:19:35 +01:00
Raaaaaaaaaay
e1cb8d00a7
Merge branch 'HbmMods:master' into master 2025-11-23 14:03:30 +02:00
Bob
2b056a8ae2 fusion breeder port fix 2025-11-23 12:47:51 +01:00
Raaaaaaaaaay
14490f9392
Merge branch 'HbmMods:master' into master 2025-11-23 11:56:39 +02:00
Bob
9aa3ac9978 plasma sparkle 2025-11-22 22:16:16 +01:00
Raaaaaaaaaay
4233a36348 fix qmaw and new ru 2025-11-21 17:47:46 +00:00
Boblet
170f155bc7 more plasmas because sure 2025-11-21 13:49:20 +01:00
Boblet
6818121b9a fusion QMAW 2025-11-21 11:24:45 +01:00
Bob
e5b93da9e4 old man yaoi 2025-11-20 21:43:57 +01:00
Boblet
71b40de7a7 the smooth taste of NEO, wake up and taste the PAIN 2025-11-20 15:59:34 +01:00
Bob
4a3db6adba magneto-plasma-sludge physics 2025-11-19 23:41:21 +01:00
Boblet
56a17c8856 NAEDOCYTE BREEDA 2025-11-19 16:57:04 +01:00
Boblet
2b5d23fbc1 blibble futuristics' greatest invention: the fugorg mechanism 2025-11-18 15:20:28 +01:00
Bob
c33d717631 the lads 2025-11-17 22:19:49 +01:00
Boblet
2e00964514 ignition 2025-11-17 16:10:19 +01:00
HbmMods
f28ebbea5c
Merge pull request #2537 from Lazzzycatwastaken/master
Fix for floating superflat structures
2025-11-17 08:24:55 +01:00
HbmMods
1d559fbfe0
Merge pull request #2538 from RayzerHan/master
ru_RU.lang and RU QMAW update
2025-11-17 08:24:21 +01:00
Bob
732f6552b6 just fucking nodespace everything at this point 2025-11-16 22:58:50 +01:00
Raaaaaaaaaay
e16a60d713
oh 2025-11-16 18:33:39 +02:00
Raaaaaaaaaay
6c4b58a192 fix 2 2025-11-16 16:30:54 +00:00
Lazzzycat
938f99318f azure latch time 2025-11-16 17:11:59 +01:00
Raaaaaaaaaay
c4c873767f
Fix 2025-11-16 18:03:58 +02:00
Raaaaaaaaaay
4b15267d4f
up 2025-11-16 17:55:05 +02:00
Raaaaaaaaaay
51380e49a7
wow 2025-11-16 17:53:10 +02:00
Raaaaaaaaaay
94db51bb37
Add files via upload
Ohh
2025-11-16 17:52:10 +02:00
Lazzzycat
84f1434131 i FUCKING HATE intellishit fuck this stupidslopware program and fuck jetbrains they can give me some brain 2025-11-16 16:26:29 +01:00
Bob
1cb8ca18cf yeah that thing too 2025-11-15 23:01:32 +01:00
Bob
de40ff388a see, you just gotta put your whole pussy into it 2025-11-15 17:19:34 +01:00
HbmMods
8ffbb512c1
Merge pull request #2536 from MellowArpeggiation/master
I CAN GO FASTER I CAN GO FASTER I CAN GO FASTER HRRRRRRRAAAAAAAAAAAA
2025-11-15 11:29:55 +01:00
George Paton
9a2a79c4c2 I CAN GO FASTER I CAN GO FASTER I CAN GO FASTER HRRRRRRRAAAAAAAAAAAA 2025-11-15 15:41:12 +11:00
Boblet
13cf418c16 mhdt 2025-11-14 15:18:07 +01:00
Bob
bb693a729d him 2025-11-13 22:19:02 +01:00
Boblet
c6a7d2aba4 my bals 2025-11-13 16:43:41 +01:00
Boblet
0c0a3c952b big chungus for playstation 3 2025-11-12 16:10:53 +01:00
HbmMods
b5fb8ae5be
Merge pull request #2530 from MellowArpeggiation/master
slag ingot slag ingot
2025-11-12 07:59:33 +01:00
George Paton
0a60e10827 remove unused imports 2025-11-12 10:05:50 +11:00
George Paton
85a0373675 fuck my chungus wife 2025-11-12 10:03:34 +11:00
HbmMods
6b30ba7d76
Merge pull request #2528 from NarekoMichigami810/master
zh_CN update
2025-11-11 19:05:21 +01:00
Boblet
f1cfe03bf3 when all of a sudden - italians 2025-11-11 16:44:06 +01:00
道神 馴子
ded4c9c53a
boy next door 2025-11-11 21:40:44 +08:00
HbmMods
0194c0d2a9
Merge pull request #2527 from sodlier/master
Fix README.md links
2025-11-11 08:04:09 +01:00
sodlier
97349a1df5
Merge pull request #1 from sodlier/readme-fix
Fix links in README.md
2025-11-10 20:14:04 -03:00
sodlier
991e3ffa1d
Fix links in README.md
Updated CurseForge link and Adoptium JDK8 download link in README.md file.

anything to put my name in the contributors tab
2025-11-10 20:09:21 -03:00
Bob
58c76bdd55 eeeeeeeeeeeeeeeeeeeeee 2025-11-10 22:07:16 +01:00
HbmMods
ab48d52265
Merge pull request #2525 from BallOfEnergy1/master
Tiny changes
2025-11-10 16:07:16 +01:00
HbmMods
eaf0cfa24a
Merge pull request #2521 from mikkerlo/push-tumznvpzvzqq
Stop mining laser if redstone is supplied.
2025-11-10 16:06:52 +01:00
Boblet
f7d2038f7e some AStack crap, fusion torus struct block 2025-11-10 15:37:35 +01:00
BallOfEnergy
ada5ccbf77
github what made you think i wanted to commit only the additions??? 2025-11-09 22:51:21 -06:00
BallOfEnergy
252659bdf0
My life is a living hell, and this will make it significantly less horrible. 2025-11-09 22:45:00 -06:00
Boblet
bc1073f734 donuts 2025-11-07 14:44:52 +01:00
Bob
9386e9d186 ough part 23 2025-11-06 22:16:08 +01:00
Boblet
a8c24cf76a glontch 2025-11-06 15:39:45 +01:00
Mikhail Semenov
6e7be25614 Stop mining laser if redstone is supplied. 2025-11-06 07:07:13 +01:00
Boblet
8b88d0f439 demoman TF2 2025-11-05 16:54:03 +01:00
Boblet
82185aa9ca what if you wanted to go to heaven, but god said "ough," 2025-11-04 16:18:12 +01:00
Boblet
b2d52e8cfa you can now cut off big man johnson's johnson 2025-11-03 16:34:31 +01:00
Bob
b278d27b9b malicious gigglefish from the silly dimension 2025-11-02 18:43:12 +01:00
Boblet
036c220317 RoR can have QMAW as a treat 2025-10-31 14:52:28 +01:00
HbmMods
a3fbb711f0
Merge pull request #2513 from MellowArpeggiation/master
fix crash in Highlands mod due to it using a deprecated biome hook
2025-10-31 09:07:59 +01:00
George Paton
09dd5e37b5 nodespace foundry channels! (also fix arc furnace only accepting one stack from IO port if it triggers it to close) 2025-10-31 14:33:09 +11:00
George Paton
176a2e58ee fix crash in highlands mod due to it using a deprecated biome hook 2025-10-31 13:00:40 +11:00
Boblet
18dabf7e8c go go gadget ovarial torsion 2025-10-30 16:40:58 +01:00
HbmMods
113a800270
Merge pull request #2509 from t3435ryt/master
Rail block harvest tools and levels
2025-10-30 10:15:56 +01:00
t3435ryt
311a9d1a31
Merge branch 'HbmMods:master' into master 2025-10-29 13:07:49 -04:00
t3435ryt
b6c60f5997 For a number of years now, work has been proceeding in order to bring perfection to the crudely conceived idea of a transmission that would not only supply inverse reactive current for use in unilateral phase detractors, but would also be capable of automatically synchronizing cardinal grammeters. Such an instrument is the turbo encabulator.
Now basically the only new principle involved is that instead of power being generated by the relative motion of conductors and fluxes, it is produced by the modial interaction of magneto-reluctance and capacitive diractance.

The original machine had a base plate of pre-famulated amulite surmounted by a malleable logarithmic casing in such a way that the two spurving bearings were in a direct line with the panametric fan. The latter consisted simply of six hydrocoptic marzlevanes, so fitted to the ambifacient lunar waneshaft that side fumbling was effectively prevented.

The main winding was of the normal lotus-o-delta type placed in panendermic semi-boloid slots of the stator, every seventh conductor being connected by a non-reversible tremie pipe to the differential girdle spring on the “up” end of the grammeters.

The turbo-encabulator has now reached a high level of development, and it’s being successfully used in the operation of novertrunnions. Moreover, whenever a forescent skor motion is required, it may also be employed in conjunction with a drawn reciprocation dingle arm, to reduce sinusoidal repleneration.
2025-10-29 13:06:38 -04:00
Bob
76d4a4a453 you can have like half a UV 2025-10-28 22:18:20 +01:00
HbmMods
0a6bddc83d
Merge pull request #2507 from mikkerlo/push-zkltxruskxvq
Change Builders Jetpack shift space behavior
2025-10-28 14:19:56 +01:00
Mikhail Semenov
efc5a88928 Change Builders Jetpack shift space behavior
Currently, pressing Shift+Space causes the jetpack to ascend, which I believe is unintentional.
This change makes that key combination do nothing.
2025-10-28 00:05:36 +01:00
Boblet
02ee44e1ce boner 2025-10-27 16:58:21 +01:00
HbmMods
9e5c4e4a8e
Merge pull request #2505 from MellowArpeggiation/boxcable
I've lost count of the number of times I've done this
2025-10-27 09:44:27 +01:00
George Paton
14d79d426c FUCK 2025-10-27 19:36:25 +11:00
HbmMods
03f8b2d80a
Merge pull request #2504 from MellowArpeggiation/boxcable
Boxcables!
2025-10-27 08:25:32 +01:00
George Paton
7161a1ef73 improve junction connections and add better textures 2025-10-27 16:35:36 +11:00
George Paton
2833d58e84 adjust cable hitboxes and make them look more like red copper 2025-10-27 14:09:04 +11:00
George Paton
6eeefc23b4 add OC support to PA dipoles 2025-10-27 13:51:26 +11:00
t3435ryt
9ce0c0ec39 For a number of years now, work has been proceeding in order to bring perfection to the crudely conceived idea of a transmission that would not only supply inverse reactive current for use in unilateral phase detractors, but would also be capable of automatically synchronizing cardinal grammeters. Such an instrument is the turbo encabulator.
Now basically the only new principle involved is that instead of power being generated by the relative motion of conductors and fluxes, it is produced by the modial interaction of magneto-reluctance and capacitive diractance.

The original machine had a base plate of pre-famulated amulite surmounted by a malleable logarithmic casing in such a way that the two spurving bearings were in a direct line with the panametric fan. The latter consisted simply of six hydrocoptic marzlevanes, so fitted to the ambifacient lunar waneshaft that side fumbling was effectively prevented.

The main winding was of the normal lotus-o-delta type placed in panendermic semi-boloid slots of the stator, every seventh conductor being connected by a non-reversible tremie pipe to the differential girdle spring on the “up” end of the grammeters.

The turbo-encabulator has now reached a high level of development, and it’s being successfully used in the operation of novertrunnions. Moreover, whenever a forescent skor motion is required, it may also be employed in conjunction with a drawn reciprocation dingle arm, to reduce sinusoidal repleneration.
2025-10-26 22:05:46 -04:00
George Paton
f9baf87289 fix PA dipole max speed penalty applying to particles that aren't turning 2025-10-27 12:42:13 +11:00
George Paton
bff3e15fb3 boxcable recipe (uses ingots for now) 2025-10-27 12:41:24 +11:00
George Paton
f297d4f856 what the fuc kis a boxcable 2025-10-27 12:30:17 +11:00
Bob
3b55d26e17 he sings 2025-10-24 22:05:04 +02:00
Boblet
dfd1aafb89 compressor QMAW 2025-10-24 11:13:49 +02:00
Boblet
75adc232f7 particle accelerator QMAW 2025-10-23 15:12:10 +02:00
HbmMods
d6f957f975
Merge pull request #2491 from mikkerlo/master
Add NEI overlay functionality so recipe on anvil can be selected via NEI.
2025-10-23 12:03:42 +02:00
Boblet
f9baf88f3c cleanup 2025-10-23 12:02:55 +02:00
HbmMods
b3aa9ab637
Merge pull request #2483 from DangerousMilk/Meteorite-Tweaks
Meteor Improvements
2025-10-23 11:55:37 +02:00
DangerousMilk
c8a0b7f89a Fixed stopping the meteor flying sound without ever initializing it. Fixed meteors destroying bedrock. Added a hardness limit to which blocks that can be replaced. 2025-10-22 21:19:22 +02:00
DangerousMilk
193f011619 Remove vlc-log 2025-10-22 20:36:38 +02:00
DangerousMilk
f2e733679c Simplified block clearing and decoration. 2025-10-22 20:36:38 +02:00
DangerousMilk
2f7c013423 Cleanup. 2025-10-22 20:36:38 +02:00
DangerousMilk
5a987621a5 Added impact crater decorations. Meteors now go into the ground on impact. Refactored some functions. 2025-10-22 20:36:37 +02:00
DangerousMilk
e7b3dff934 Fixed flySound NullPointerException. 2025-10-22 20:36:37 +02:00
DangerousMilk
51b1f3e46d Fixed the short 'blip' of the fly sound being player at the start. 2025-10-22 20:36:37 +02:00
DangerousMilk
c3c0be94e3 Made the destruction of weak blocks safe. More sound tweaks 2025-10-22 20:36:37 +02:00
DangerousMilk
f87a23d494 Deleted vlc-log.txt. 2025-10-22 20:36:37 +02:00
DangerousMilk
59ace7eaf5 Added meteorite falling sound. 2025-10-22 20:36:37 +02:00
DangerousMilk
bd8ed4920d Meteorites now break leaves and logs before landing. Made explosions fit the meteor size more. 2025-10-22 20:36:37 +02:00
Boblet
72957ef167 speedrun 2025-10-22 15:41:26 +02:00
HbmMods
b3b05d9208
Merge pull request #2492 from NarekoMichigami810/master
zh_CN update
2025-10-22 14:43:53 +02:00
道神 馴子
2d593dbeb3
Masturbate 2025-10-22 19:27:15 +08:00
Bob
cde2d39631 i'm creekflow (crashes into a mcdonalds drive thru) 2025-10-21 23:09:30 +02:00
HbmMods
38cd74536d
Merge pull request #2478 from Fyrstikkeske/master
Retain unused progress for the next craft on the blast furnace
2025-10-21 22:06:15 +02:00
Mikhail Semenov
e16be434f5 Add NEI overlay functionality so recipe on anvil can be selected via NEI.
This will allow to click plus-sign in NEI and NEI will select recipe on Anvil automatically.
2025-10-21 21:56:48 +02:00
Bob
3bf9ab1570 pneumonia 2025-10-21 21:55:14 +02:00
Boblet
bbe41c02a7 i forgor 2025-10-21 16:27:50 +02:00
Boblet
10cf45b452 "release today" and other jokes to tell yourself, volume IV 2025-10-20 16:59:54 +02:00
Boblet
907d389b43 ey jimmy, gimme a weapon mod with NOTHIN'
nuttin'??
2025-10-17 15:18:11 +02:00
Bob
ec076fb97a now with sound 2025-10-16 23:51:35 +02:00
Boblet
12e8da8750 eggplant emoji, droplets emoji, weary face emoji 2025-10-16 15:47:40 +02:00
Boblet
4d6a92e015 i think i may have creeked my flow 2025-10-15 15:13:59 +02:00
Boblet
5fd64f5d8f the thing, device 2025-10-14 16:50:39 +02:00
Boblet
fe38e61ba4 drilldo 2025-10-13 16:47:39 +02:00
Bob
db9b0501d5 conveyor stuff, yet more drill crap 2025-10-12 21:42:18 +02:00
Boblet
40a14fb440 automatic prostate exam device 2025-10-10 14:56:28 +02:00
Fyrstikkeske
6f7a23d8cc Retain unused progress for the next craft
fixes some alignment issues when minmaxxing the blast furnace.
2025-10-10 00:35:13 +02:00
Boblet
db3f58b4cd just throw a continental breakfast at my face 2025-10-09 16:57:31 +02:00
Bob
a0670eb700 anchor deez nuts ha gotem 2025-10-08 22:59:28 +02:00
Boblet
6304df71dd more plumbing, get your free toilet now 2025-10-08 16:58:39 +02:00
HbmMods
d1c5355362
Merge pull request #2475 from MellowArpeggiation/bubble-butt
Remove all remaining non-structure worldgen cascades
2025-10-08 10:28:38 +02:00
Boblet
801fdc146c scrungus 2025-10-07 16:30:21 +02:00
George Paton
7d6fea7646 fix semi-flipped oily spot gaussian distribution 2025-10-07 17:52:25 +11:00
George Paton
39603e2edb bedrock oil spots 2025-10-07 15:33:40 +11:00
George Paton
edbc062da0 reimplement oil (regular + sand) bubbles as MapGenBase 2025-10-07 12:56:14 +11:00
Boblet
054aa07318 my bals 2025-10-06 16:42:34 +02:00
George Paton
264ee49212 replace sellafield craters (already had the crater code so why not) 2025-10-06 18:38:01 +11:00
HbmMods
32c0491ca4
Merge pull request #2436 from Bufka2011/master
ru_RU.lang and RU QMAW update
2025-10-06 07:59:48 +02:00
HbmMods
3ca0e1ad4c
Merge pull request #2456 from NarekoMichigami810/master
zh_CN update
2025-10-06 07:56:36 +02:00
HbmMods
59afb41c22
Merge pull request #2449 from kelllllen/master
Some more RBMK OC compat
2025-10-06 07:56:14 +02:00
HbmMods
ab7c852d61
Merge pull request #2473 from MellowArpeggiation/master
common worldgen cascade fixes (improved worldgen performance)
2025-10-06 07:52:22 +02:00
George Paton
15d7edacb5 bonus: fix chargers never filling the last 1HE on certain armors 2025-10-06 13:34:36 +11:00
George Paton
278a7b5dfb fixing two common worldgen cascades in meteorites and flowers 2025-10-06 12:21:24 +11:00
Bob
4ef2442770 drill crap 2025-10-05 23:48:03 +02:00
Bufka2011
bbf3d29d80
Update ru_RU.lang 2025-10-04 11:50:21 -06:00
Bufka2011
8cc94738ad
Update ru_RU.lang 2025-10-04 11:48:37 -06:00
Bufka2011
ee79c8d9dc
Update ru_RU.lang 2025-10-04 11:37:29 -06:00
Bufka2011
97cb4cb6a1
Update ru_RU.lang 2025-10-04 11:26:49 -06:00
Bufka2011
9a42d65e26
Update ru_RU.lang 2025-10-04 11:21:18 -06:00
Bufka2011
f3e315297a
Update ru_RU.lang 2025-10-04 11:13:11 -06:00
Bufka2011
b1d4e99ea9
Update ru_RU.lang 2025-10-04 11:08:22 -06:00
Bufka2011
40dc8c8679
Update ru_RU.lang 2025-10-04 11:01:14 -06:00
Bufka2011
63fbbeb5c7
Update ru_RU.lang 2025-10-04 10:58:26 -06:00
Bufka2011
669c2b9b50
Update ru_RU.lang 2025-10-04 10:53:58 -06:00
Bufka2011
62366d5adb
Update ru_RU.lang 2025-10-04 10:53:06 -06:00
Bufka2011
8b6af76fa0
Update ru_RU.lang 2025-10-04 10:43:29 -06:00
Bufka2011
abe22b7f97
Update ru_RU.lang 2025-10-04 10:42:28 -06:00
Bufka2011
111f0d1114
Update ru_RU.lang 2025-10-04 10:40:56 -06:00
Bufka2011
0f5b5837b8
Update ru_RU.lang 2025-10-04 10:27:29 -06:00
Bufka2011
2796bcb892
Update ru_RU.lang 2025-10-04 10:24:32 -06:00
Bufka2011
540cf425e9
Update ru_RU.lang 2025-10-04 10:22:17 -06:00
Bufka2011
31a9000a82
Merge branch 'HbmMods:master' into master 2025-10-02 13:28:46 -06:00
Bufka2011
4710fcfc34
Update ru_RU.lang 2025-09-30 18:13:58 -06:00
Bob
9ba40044ed nothing 2025-09-28 14:35:04 +02:00
道神 馴子
bb056af18d
Merge branch 'HbmMods:master' into master 2025-09-28 14:14:28 +08:00
Bob
b710b88ed5 eh 2025-09-27 19:24:27 +02:00
Bufka2011
995f987e66
Update hss.json 2025-09-27 11:09:40 -06:00
Bufka2011
a709db58bb
Merge branch 'HbmMods:master' into master 2025-09-27 11:01:38 -06:00
Bufka2011
4f97af940c
Update ru_RU.lang 2025-09-27 11:01:25 -06:00
Boblet
a08c410a9c alt recipes galore 2025-09-26 14:12:16 +02:00
道神 馴子
a030397f71
Add files via upload 2025-09-26 20:06:36 +08:00
Boblet
a0184b1751 military green paint(?) 2025-09-25 16:45:10 +02:00
KellenHurrey
640397fdda
Merge branch 'HbmMods:master' into master 2025-09-22 15:26:50 -07:00
Kellen Hurrey
6f314c3996
Added more info to getColumnData, added control rod targets 2025-09-22 16:25:34 -06:00
Boblet
f389a25dec just fucking 3D everything i don't care anymore 2025-09-22 16:49:43 +02:00
HbmMods
bc7e00c71c
Merge pull request #2441 from Lazzzycatwastaken/crane
Crane Structure
2025-09-22 11:34:15 +02:00
HbmMods
2d64453317
Merge branch 'master' into crane 2025-09-22 11:34:08 +02:00
Boblet
c9155b55ba maybe i should push before something breaks completely 2025-09-22 11:32:20 +02:00
HbmMods
dfa1d7718b
Merge pull request #2442 from Lazzzycatwastaken/tower
Broadcaster tower
2025-09-22 11:31:39 +02:00
HbmMods
6a7acb337e
Merge pull request #2448 from MellowArpeggiation/master
Show current tool area ability next to crosshair
2025-09-22 11:28:42 +02:00
George Paton
f082094740
big dumbass momento 2025-09-22 19:16:15 +10:00
George Paton
c8fe3cc095 add client config to adjust tool hud indicator position 2025-09-22 17:33:35 +10:00
George Paton
dd3746a3d4
Merge branch 'HbmMods:master' into master 2025-09-22 17:15:02 +10:00
George Paton
dd0a604aa6 show current tool area ability next to crosshair, to prevent accidentally breaking yo shit 2025-09-22 17:14:28 +10:00
HbmMods
7285867856
Merge pull request #2443 from KellenHurrey/master
Some RBMK OC integration
2025-09-21 21:04:09 +02:00
HbmMods
b57acc2cb2
Merge pull request #2446 from BallOfEnergy1/master
Fix for TE crashes when using neutron nodespace.
2025-09-21 21:01:58 +02:00
Bob
d67b3778c3 this is the part where the T-45 fucking dies 2025-09-21 20:58:56 +02:00
BallOfEnergy
4440550a37 Small fix for erroneous crashes. 2025-09-21 10:20:23 -05:00
Bufka2011
644e188a94
Update ru_RU.lang 2025-09-20 15:24:58 -06:00
Bufka2011
72026cb772
Update ru_RU.lang 2025-09-20 15:19:17 -06:00
Bufka2011
072f226181
Merge branch 'HbmMods:master' into master 2025-09-20 10:15:44 -06:00
Kellen Hurrey
9f849e8c2d
Removed unused import 2025-09-19 11:28:19 -06:00
Kellen Hurrey
cf5bf4be8c
Added crafting data to getData and getColumnData, and made the OC pressAZ5 function play the cool sound 2025-09-19 11:25:11 -06:00
Kellen Hurrey
890eb49747
Merge remote-tracking branch 'origin/master' 2025-09-19 10:52:15 -06:00
Kellen Hurrey
ebd7ffc827
Make RBMK slotted elements have OC accessible inventories, and added a OC outgasser function that allows seeing the item that is being processed. 2025-09-19 10:51:32 -06:00
Lazzzycatwastaken
eddd75a626 When I get pantsd in class but I lowkey got a humiliation kink so I get bricked up and everyone realizes im lowkey slanging and hypes me up so I start helicoptering it on some nonchalant shi 2025-09-19 17:53:33 +02:00
Boblet
b3405d085b the skeleton's coming out, AAAAAAAAAAAAA 2025-09-19 13:02:50 +02:00
Lazzzycat
003721d4f7
creed embled unemployed drone 2025-09-19 11:50:48 +02:00
Lazzzycat
f3345f7778
Merge branch 'HbmMods:master' into crane 2025-09-19 09:31:59 +02:00
HbmMods
94e3df1751
Merge pull request #2440 from MellowArpeggiation/drilldo
This was an animated terra drill PR but the drill is getting axed so this is now just a bugfix and cleanup PR yay
2025-09-19 08:09:56 +02:00
HbmMods
d01016034f
Merge pull request #2438 from Lazzzycatwastaken/ttttt
Structure configs
2025-09-19 07:59:26 +02:00
George Paton
f7ffc694bf retract drill upon hitting depth rock 2025-09-19 12:27:10 +10:00
George Paton
7113838d68 add compact compressor to NEI handler 2025-09-19 12:08:00 +10:00
Bufka2011
96e5ea531c
Fix ru_RU.lang 2025-09-18 13:33:12 -06:00
Bufka2011
c25adf5014
Merge branch 'HbmMods:master' into master 2025-09-18 13:31:33 -06:00
Lazzzycatwastaken
f499e6cf00 setro OWNS me... (we've lost the plot) 2025-09-18 21:25:40 +02:00
Lazzzycatwastaken
daae6e9694 peak meter 100% 2025-09-18 20:17:32 +02:00
HbmMods
0916aa9b17
Merge pull request #2437 from Lazzzycatwastaken/factory
Factory rework
2025-09-18 16:51:43 +02:00
Lazzzycatwastaken
d6a10bf49a removed the parasite (title screen) 2025-09-18 16:27:03 +02:00
Lazzzycat
1f09f64176
Merge branch 'HbmMods:master' into factory 2025-09-18 16:13:38 +02:00
Lazzzycatwastaken
3dc97e8133 mr. penis (real) 2025-09-18 16:13:10 +02:00
Boblet
aaa046e4eb mischief 2025-09-18 16:08:27 +02:00
George Paton
2ffe3d0072 fix entity registration, complete with functioning spawn eggs 2025-09-18 13:12:42 +10:00
Boblet
715ecda0dd ough 2025-09-17 16:11:28 +02:00
Bufka2011
c61d7f4f89
Small ru_RU.lang fix 2025-09-15 21:16:29 -06:00
George Paton
2efce806a9 aim IAnimatedItem like a bow 2025-09-16 09:52:52 +10:00
Boblet
b9fabc3af4 ow 2025-09-15 16:27:29 +02:00
George Paton
dbd63e706f Merge branch 'master' into drilldo 2025-09-15 11:00:14 +10:00
George Paton
a79125b94d generic animation enum selection, still item specific but now a lot easier to refactor to non-item animations 2025-09-15 10:57:05 +10:00
Bob
afb559d604 sparks! 2025-09-14 22:51:27 +02:00
Boblet
c0cb28c2ad every step we take that's synchronized 2025-09-12 11:03:27 +02:00
George Paton
ada1b5245d might as well fix two issues while here:
* electrolyser metal outputs not clearing on client
* unused chunk allocation wasting RAM
2025-09-12 17:12:06 +10:00
George Paton
8c752488ee improve IAnimatedItem and move existing item animations out of the ClientProxy monolith 2025-09-12 14:39:38 +10:00
Bob
4a4606e6ed the sludge 2025-09-11 22:57:20 +02:00
HbmMods
7916d76aca
Merge pull request #2424 from R0STUS/master
PWRangler garbage improvements
2025-09-11 16:29:34 +02:00
HbmMods
463d020dad
Merge pull request #2426 from KellenHurrey/master
Add a oc function to set the custom map of redstone over radio torches
2025-09-11 16:28:07 +02:00
Boblet
4805dd800c the slow dance (it's actually rather fast) 2025-09-10 16:30:13 +02:00
Boblet
4320071a41 sesbian lex 2025-09-09 16:58:17 +02:00
Boblet
07a2e4eea3 tragic yuri 2025-09-08 16:54:05 +02:00
rost
d7f859ecab Final commit (max level added) 2025-09-08 16:03:40 +02:00
Kellen Hurrey
f6c74ce98e
Add radio method 2025-09-07 19:16:42 -06:00
Bob
966206dbf5 getting there 2025-09-07 20:53:12 +02:00
rost
675cde7321 fixes; MAX LEVEL REQUIRED 2025-09-07 14:51:23 +02:00
rost
98cf0b002b hot coolant ESTOP; MAX LEVEL REQUIRED 2025-09-07 11:14:30 +02:00
rost
3ff201bf4d fixes 2025-09-06 22:40:47 +02:00
rost
81c5bb84d3 upd 2025-09-06 22:35:29 +02:00
rost
1025f626b7 PWRangler garbage impoovments 2025-09-06 22:21:41 +02:00
HbmMods
13df9566a2
Merge pull request #2422 from Creeper-banner/bob
Update Simplified Chinese Localization for new QMAW pages
2025-09-06 16:54:28 +02:00
Bob
99aa9da490 flixes 2025-09-06 16:54:12 +02:00
CrpBnrz
465b521f19 QMAW Fix 2025-09-06 22:37:02 +08:00
CrpBnrz
0cea7393a6 More QMAW 2025-09-06 21:12:50 +08:00
CrpBnrz
7096062847 Merge branch 'bob' of https://github.com/Creeper-banner/NTMC.git into bob 2025-09-06 13:07:52 +08:00
CrpBnrz
2b612e82e9 Oil QMAW 2025-09-06 13:04:29 +08:00
Boblet
e03ad3edfb the docs 2025-09-05 15:17:05 +02:00
HbmMods
a35cb1cbd5
Merge pull request #2417 from Creeper-banner/bob
Update Simplified Chinese Localization
2025-09-04 16:56:47 +02:00
Boblet
2ed4d906c3 QMAW! 2025-09-04 16:35:34 +02:00
Creeper-banner
d4844073ae
Update zh_CN.lang 2025-09-04 22:26:01 +08:00
CrpBnrz
fba1d2a97b Update zh_CN.lang 2025-09-04 21:50:42 +08:00
CrpBnrz
45af851032 QMAW localization for free (but not for me) 2025-09-04 21:44:49 +08:00
Boblet
94accf6ed6 more QMAW for free 2025-09-03 16:25:29 +02:00
Boblet
539ecb8130 deplorable gollompus 2025-09-02 16:18:58 +02:00
Boblet
3f38c9b7d2 chlog 2025-09-01 16:43:37 +02:00
HbmMods
8f67cb6ba3
Merge pull request #2409 from MellowArpeggiation/master
fuck
2025-09-01 09:44:09 +02:00
George Paton
9a6cebe0fa stop staring at me with them big ol' eyes.
*SHHHHOOONK*
2025-09-01 17:39:27 +10:00
Boblet
ff75e7662e and then i went to the store to buy some gloop 2025-09-01 09:35:41 +02:00
Bob
7e01544c19 fresh from the juice, fresh from the juice! don't get it on your shoese 2025-08-31 15:35:43 +02:00
Bob
4e0171159e minor merge fuckup 2025-08-31 13:15:34 +02:00
HbmMods
f005680cc1
Merge pull request #2404 from Lazzzycatwastaken/forestchem
Forest chemical station
2025-08-31 13:12:07 +02:00
HbmMods
eb0dd854f0
Merge branch 'master' into forestchem 2025-08-31 13:11:54 +02:00
HbmMods
2f12549464
Merge pull request #2400 from Lazzzycatwastaken/Forwetst
Planes (useless edition)
2025-08-31 13:10:51 +02:00
HbmMods
174ce22da3
Merge branch 'master' into Forwetst 2025-08-31 13:10:45 +02:00
HbmMods
5604fa5e4a
Merge pull request #2403 from Lazzzycatwastaken/fixfordesert
Explosive suprise
2025-08-31 13:10:12 +02:00
HbmMods
bb453ce45b
Merge branch 'master' into fixfordesert 2025-08-31 13:09:19 +02:00
HbmMods
b6e9d36301
Merge branch 'master' into forestchem 2025-08-31 13:07:57 +02:00
HbmMods
a0ff23a4d1
Merge pull request #2406 from Lazzzycatwastaken/labolatory
new labolarotyyu
2025-08-31 13:07:11 +02:00
HbmMods
b456275016
Merge branch 'master' into labolatory 2025-08-31 13:07:02 +02:00
HbmMods
4d5f88896a
Merge pull request #2405 from Lazzzycatwastaken/forestpost
Forest post
2025-08-31 13:05:22 +02:00
HbmMods
6215b32f4d
Merge branch 'master' into forestpost 2025-08-31 13:00:15 +02:00
HbmMods
be78cf3a43
Merge pull request #2399 from Lazzzycatwastaken/NTMRUINS1
Sludgening is beginning
2025-08-31 12:58:38 +02:00
HbmMods
97866f1fb9
Merge branch 'master' into NTMRUINS1 2025-08-31 12:58:28 +02:00
HbmMods
1be5127582
Merge pull request #2402 from Lazzzycatwastaken/Radio-house
Radio rework (shocker)
2025-08-31 12:57:42 +02:00
HbmMods
53a63a28aa
Merge pull request #2407 from MellowArpeggiation/inventory-pronter
PWR printing tool
2025-08-31 12:49:36 +02:00
HbmMods
37926a6b8f
Merge branch 'master' into inventory-pronter 2025-08-31 12:49:30 +02:00
Bob
53d1323604 i lied, get fucked 2025-08-31 12:08:19 +02:00
Boblet
4fba0fc42a i forgor 2025-08-29 15:18:26 +02:00
George Paton
45aab4617a
Merge branch 'master' into inventory-pronter 2025-08-28 22:23:10 +10:00
George Paton
a636440d13 rotate to always show controller at bottom right 2025-08-28 15:47:22 +10:00
George Paton
c978fa8955 PWR printing device, exports a built PWR as a series of slices to be edited together for posting 2025-08-28 15:01:39 +10:00
Lazzzycatwastaken
66971b3310 SIX @SEVEN 2025-08-27 17:36:40 +02:00
Lazzzycatwastaken
92d4232472 Merge branch 'ttttt' into NTMRUINS1
# Conflicts:
#	src/main/java/com/hbm/util/LootGenerator.java
#	src/main/java/com/hbm/world/gen/NTMWorldGenerator.java
2025-08-27 17:31:40 +02:00
Lazzzycatwastaken
ee9c69cfca resolve hopefully i hope 2025-08-27 17:30:05 +02:00
Lazzzycatwastaken
5bde7c9a0d Merge branch 'ttttt' into Forwetst
# Conflicts:
#	src/main/java/com/hbm/world/gen/NTMWorldGenerator.java
2025-08-27 17:29:13 +02:00
Lazzzycatwastaken
848ac39463 resolve hopefully i hope 2025-08-27 17:24:58 +02:00
Lazzzycatwastaken
b9418dcb2e Merge branch 'ttttt' into Radio-house
# Conflicts:
#	src/main/java/com/hbm/world/gen/NTMWorldGenerator.java
2025-08-27 17:23:49 +02:00
Lazzzycatwastaken
245dbf421c Merge remote-tracking branch 'origin/forestchem' into forestchem 2025-08-27 17:21:19 +02:00
Lazzzycatwastaken
0b28311374 resolve hopefully i hope 2025-08-27 17:20:51 +02:00
Lazzzycatwastaken
c20a90e45c Merge branch 'ttttt' into forestchem
# Conflicts:
#	src/main/java/com/hbm/world/gen/NTMWorldGenerator.java
2025-08-27 17:18:42 +02:00
Lazzzycatwastaken
9a7f991092 resolve hopefully i hope 2025-08-27 17:16:07 +02:00
Lazzzycatwastaken
a24bed5337 Merge branch 'ttttt' into labolatory
# Conflicts:
#	src/main/java/com/hbm/world/gen/NTMWorldGenerator.java
2025-08-27 17:15:15 +02:00
Lazzzycatwastaken
bf3e795a66 BOIIIIIIIIIIIIIIIIII TS (type soul) getting a 20 hog code ( setro and minors? like in minecraft? I know nothing of association with setro and minors.) 2025-08-27 16:36:25 +02:00
Lazzzycatwastaken
76b51ebca9 BOIIIIIIIIIIIIIIIIII TS (type soul) getting a 20 hog code ( setro and minors? like in minecraft? I know nothing of association with setro and minors.) 2025-08-27 16:04:30 +02:00
Lazzzycatwastaken
c8bf809e9f labubu funk 2025-08-27 15:28:38 +02:00
Lazzzycatwastaken
7084dc919a Merge remote-tracking branch 'origin/NTMRUINS1' into NTMRUINS1 2025-08-27 15:13:07 +02:00
Lazzzycatwastaken
b98c8c3f98 sdsa 2025-08-27 15:12:47 +02:00
HbmMods
3f6e758cd4
Merge pull request #2397 from Bufka2011/master
ru_RU.lang update, ru_RU QMAW update and many I18n implementations (again)
2025-08-27 08:23:21 +02:00
George Paton
a000347877 yeah I was overcomplicating that, this is much better 2025-08-27 13:38:43 +10:00
George Paton
e5b29e3352 fix transparent pixel issue in wiki icon screenshitter 2025-08-27 13:12:01 +10:00
Bufka2011
5605a9c3b8 Minor changes 2025-08-26 16:25:11 -06:00
Bufka2011
708879c276 Minor ru_RU.lang changes 2025-08-26 16:21:33 -06:00
Bufka2011
95e1c97781 https://imgur.com/a/IBLwDde 2025-08-26 14:18:07 -06:00
Bufka2011
cac17dea98 Merge branch 'master' of https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT 2025-08-26 10:15:07 -06:00
Boblet
03d195fd91 ough 2025-08-26 15:49:27 +02:00
Bufka2011
2eecf17100 DODD 2025-08-25 15:52:58 -06:00
Bufka2011
48b4124c14 Manual update 2025-08-25 15:52:45 -06:00
Bufka2011
23669e6337 YES, MY QMAW (used python for this) 2025-08-25 15:14:30 -06:00
Bufka2011
6ed83ab7ec Updated swords translations 2025-08-25 14:13:45 -06:00
Bufka2011
2b3f98a850 Merge branch 'master' of https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT
# Conflicts:
#	src/main/resources/assets/hbm/manual/material/alloy.json
#	src/main/resources/assets/hbm/manual/material/aluminium.json
#	src/main/resources/assets/hbm/manual/material/arsenic.json
#	src/main/resources/assets/hbm/manual/material/arsenic_bronze.json
#	src/main/resources/assets/hbm/manual/material/bakelite.json
#	src/main/resources/assets/hbm/manual/material/bismuth.json
#	src/main/resources/assets/hbm/manual/material/bismuth_bronze.json
#	src/main/resources/assets/hbm/manual/material/bscco.json
#	src/main/resources/assets/hbm/manual/material/cadmium.json
#	src/main/resources/assets/hbm/manual/material/cadmium_steel.json
#	src/main/resources/assets/hbm/manual/material/cinnabar.json
#	src/main/resources/assets/hbm/manual/material/coke.json
#	src/main/resources/assets/hbm/manual/material/copper.json
#	src/main/resources/assets/hbm/manual/material/desh.json
#	src/main/resources/assets/hbm/manual/material/ferrouranium.json
#	src/main/resources/assets/hbm/manual/material/graphite.json
#	src/main/resources/assets/hbm/manual/material/gunmetal.json
#	src/main/resources/assets/hbm/manual/material/hss.json
#	src/main/resources/assets/hbm/manual/material/latex.json
#	src/main/resources/assets/hbm/manual/material/lead.json
#	src/main/resources/assets/hbm/manual/material/mingrade.json
#	src/main/resources/assets/hbm/manual/material/neptunium.json
#	src/main/resources/assets/hbm/manual/material/plutonium-238.json
#	src/main/resources/assets/hbm/manual/material/plutonium-239.json
#	src/main/resources/assets/hbm/manual/material/plutonium-240.json
#	src/main/resources/assets/hbm/manual/material/plutonium-241.json
#	src/main/resources/assets/hbm/manual/material/plutonium-rg.json
#	src/main/resources/assets/hbm/manual/material/plutonium.json
#	src/main/resources/assets/hbm/manual/material/polonium.json
#	src/main/resources/assets/hbm/manual/material/polymer.json
#	src/main/resources/assets/hbm/manual/material/radium.json
#	src/main/resources/assets/hbm/manual/material/rubber.json
#	src/main/resources/assets/hbm/manual/material/silicon.json
#	src/main/resources/assets/hbm/manual/material/sodium.json
#	src/main/resources/assets/hbm/manual/material/steel.json
#	src/main/resources/assets/hbm/manual/material/sulfur.json
#	src/main/resources/assets/hbm/manual/material/tantalium.json
#	src/main/resources/assets/hbm/manual/material/technetium.json
#	src/main/resources/assets/hbm/manual/material/technetium_steel.json
#	src/main/resources/assets/hbm/manual/material/thorium.json
#	src/main/resources/assets/hbm/manual/material/uranium-233.json
#	src/main/resources/assets/hbm/manual/material/uranium-235.json
#	src/main/resources/assets/hbm/manual/material/uranium-238.json
#	src/main/resources/assets/hbm/manual/material/uranium.json
#	src/main/resources/assets/hbm/manual/material/weaponsteel.json
2025-08-25 13:56:07 -06:00
Bufka2011
fcabf659af To be translated 2025-08-25 13:42:17 -06:00
Bufka2011
742595c83f I18n implementation for Meteorite Swords and Dusted Steel 2025-08-25 13:35:25 -06:00
Bufka2011
e062b4d2c3 More manual fixes 2025-08-25 13:34:06 -06:00
Bufka2011
a2a91d929a QMAW again 2025-08-25 12:47:43 -06:00
Bufka2011
7e87efcc48 QMAW 2025-08-25 12:44:22 -06:00
Bufka2011
61e10fe48f I'm tired of fixing 2025-08-25 12:25:05 -06:00
Bufka2011
518871bf2b Polonium fix 2025-08-25 12:24:33 -06:00
Bufka2011
b75e14d9fc Reader fixed 2025-08-25 12:11:43 -06:00
Bufka2011
12d2d6b8dd Fixed QMAW again 2025-08-25 12:10:30 -06:00
Bufka2011
37279845be Fixes 2025-08-25 12:02:16 -06:00
Bufka2011
d6b095c568 Fix 2025-08-25 11:36:31 -06:00
Bufka2011
f7cf05d944 QMAW desh fix 2025-08-25 11:35:20 -06:00
Bufka2011
3cbc342af5 Red copper 2025-08-25 11:23:12 -06:00
Bufka2011
ee41e9a7ed QMAW fixes 2025-08-25 11:22:43 -06:00
Bufka2011
79074e19c2 Ferrouranium 2025-08-25 11:12:51 -06:00
Bufka2011
ad9cb55b98 More QMAW fixes 2025-08-25 11:10:35 -06:00
Bufka2011
d71057bbab QMAW fixes 2025-08-25 11:08:54 -06:00
Bufka2011
8033fde2b9 Aluminium manual fix 2025-08-25 10:52:30 -06:00
Bufka2011
b209795f60 Rangefinder 2025-08-25 10:49:22 -06:00
Bufka2011
f73d81310a Minor changes 2025-08-25 10:31:57 -06:00
HbmMods
6555d6316a
Merge pull request #2368 from RealSilverMoon/rbmki18n
i18n for RBMK DODD
2025-08-25 16:32:26 +02:00
Boblet
bf0aa7d285 changelog 2025-08-25 16:30:35 +02:00
HbmMods
fbc5177918
Merge pull request #2391 from Creeper-banner/bob
Update Simplified Chinese Localization
2025-08-25 16:30:00 +02:00
CrpBnrz
4aafbdaeac Merge remote-tracking branch 'origin/temp' into bob
# Conflicts:
#	src/main/resources/assets/hbm/manual/material/alloy.json
#	src/main/resources/assets/hbm/manual/material/aluminium.json
#	src/main/resources/assets/hbm/manual/material/arsenic.json
#	src/main/resources/assets/hbm/manual/material/arsenic_bronze.json
#	src/main/resources/assets/hbm/manual/material/bakelite.json
#	src/main/resources/assets/hbm/manual/material/bismuth.json
#	src/main/resources/assets/hbm/manual/material/bismuth_bronze.json
#	src/main/resources/assets/hbm/manual/material/bscco.json
#	src/main/resources/assets/hbm/manual/material/cadmium.json
#	src/main/resources/assets/hbm/manual/material/cadmium_steel.json
#	src/main/resources/assets/hbm/manual/material/cinnabar.json
#	src/main/resources/assets/hbm/manual/material/coke.json
#	src/main/resources/assets/hbm/manual/material/copper.json
#	src/main/resources/assets/hbm/manual/material/desh.json
#	src/main/resources/assets/hbm/manual/material/ferrouranium.json
#	src/main/resources/assets/hbm/manual/material/graphite.json
#	src/main/resources/assets/hbm/manual/material/gunmetal.json
#	src/main/resources/assets/hbm/manual/material/hss.json
#	src/main/resources/assets/hbm/manual/material/latex.json
#	src/main/resources/assets/hbm/manual/material/lead.json
#	src/main/resources/assets/hbm/manual/material/mingrade.json
#	src/main/resources/assets/hbm/manual/material/neptunium.json
#	src/main/resources/assets/hbm/manual/material/plutonium-238.json
#	src/main/resources/assets/hbm/manual/material/plutonium-239.json
#	src/main/resources/assets/hbm/manual/material/plutonium-240.json
#	src/main/resources/assets/hbm/manual/material/plutonium-241.json
#	src/main/resources/assets/hbm/manual/material/plutonium-rg.json
#	src/main/resources/assets/hbm/manual/material/plutonium.json
#	src/main/resources/assets/hbm/manual/material/polonium.json
#	src/main/resources/assets/hbm/manual/material/polymer.json
#	src/main/resources/assets/hbm/manual/material/radium.json
#	src/main/resources/assets/hbm/manual/material/rubber.json
#	src/main/resources/assets/hbm/manual/material/silicon.json
#	src/main/resources/assets/hbm/manual/material/sodium.json
#	src/main/resources/assets/hbm/manual/material/steel.json
#	src/main/resources/assets/hbm/manual/material/sulfur.json
#	src/main/resources/assets/hbm/manual/material/tantalium.json
#	src/main/resources/assets/hbm/manual/material/technetium.json
#	src/main/resources/assets/hbm/manual/material/technetium_steel.json
#	src/main/resources/assets/hbm/manual/material/thorium.json
#	src/main/resources/assets/hbm/manual/material/uranium-233.json
#	src/main/resources/assets/hbm/manual/material/uranium-235.json
#	src/main/resources/assets/hbm/manual/material/uranium-238.json
#	src/main/resources/assets/hbm/manual/material/uranium.json
#	src/main/resources/assets/hbm/manual/material/weaponsteel.json
2025-08-25 22:06:36 +08:00
RealSilverMoon
4e30ac8084 A little distinction 2025-08-25 21:02:01 +08:00
HbmMods
63d5d41d48
Merge pull request #2389 from R-Kaenbyou/new-branch-1
ME Storage bus compat for Arc Furnace
2025-08-25 10:04:54 +02:00
HbmMods
fdf73a4f06
Merge pull request #2386 from abel1502/abel-better-wings
Better murky wings
2025-08-25 09:17:18 +02:00
HbmMods
dafe4a535e
Merge pull request #2374 from arantirnecrolord/master
update uk_UA
2025-08-25 09:14:03 +02:00
HbmMods
96793ec599
Merge pull request #2371 from FOlkvangrField/Multilingual-Function-Repair
Fixed the multilingual feature failure error of the "QMAW" system
2025-08-25 09:13:41 +02:00
Boblet
951c00d79d some fixes, RBMK control rod copyable 2025-08-25 09:12:09 +02:00
Bufka2011
d5e923c263 Uhuh 2025-08-24 14:28:38 -06:00
Bufka2011
9d67211ddd Fixed a joke that has been a bad joke for centuries. 2025-08-24 14:27:48 -06:00
Bufka2011
4b28ee2227 I18n implementation for cloth 2025-08-24 12:51:25 -06:00
Bufka2011
78ea52cbab I18n implementation for ItemLemon.java 2025-08-24 12:37:14 -06:00
Bufka2011
7793f9fa24 More sorting 2025-08-24 11:09:03 -06:00
Bufka2011
1d18d832e7 Sorting 2025-08-24 11:02:13 -06:00
R-Kaenbyou
14f7668a9a
Update TileEntityMachineArcFurnaceLarge.java 2025-08-23 21:09:37 -07:00
R-Kaenbyou
f0bd84fa47
Update TileEntityMachineArcFurnaceLarge.java 2025-08-23 21:02:52 -07:00
R-Kaenbyou
13b3988829
Update ContainerMachineArcFurnaceLarge.java 2025-08-23 20:42:15 -07:00
R-Kaenbyou
0a99397f30
Add files via upload 2025-08-23 20:34:07 -07:00
R-Kaenbyou
52149b098e
Update AE2CompatHandler.java 2025-08-23 20:31:37 -07:00
R-Kaenbyou
4903b2e189
Update TileEntityMachineArcFurnaceLarge.java 2025-08-23 20:18:37 -07:00
Bufka2011
54a5769dee Minor changes 2025-08-23 20:10:04 -06:00
Bufka2011
f9369f5e02 Minor changes 2025-08-23 19:14:29 -06:00
Bufka2011
90522b98db Destroyed? 2025-08-23 18:52:10 -06:00
Bufka2011
9e83f24179 Blueprint Booklet 2025-08-23 18:49:57 -06:00
Bufka2011
9a0cadaf9d I18n implementation for guns 2025-08-23 18:10:46 -06:00
Bufka2011
3f641a843b I18n implementation for bomb parts 2025-08-23 17:51:47 -06:00
Bufka2011
60b9e1fb18 I18n implementation for missiles and sattelites 2025-08-23 17:51:01 -06:00
Bufka2011
fa6b4faeee I18n for machines implementation 2025-08-23 17:09:19 -06:00
Bufka2011
fb4bca3544
Add files via upload 2025-08-23 11:13:02 -06:00
abel1502
9e99a21969
Remove unused import 2025-08-23 19:36:45 +03:00
abel1502
0ac72afa97
Make murky wings support shift+space for hovering 2025-08-23 19:36:19 +03:00
abel1502
bdd56b6062
Remove murky wings forced slowfall 2025-08-23 19:36:16 +03:00
abel1502
16824452b0
Better fine control
Shift already introduces a slowdown, no need to account for that
2025-08-23 19:33:08 +03:00
abel1502
ee1ffc98ba
Make murky wings more controllable 2025-08-23 19:31:40 +03:00
CrpBnrz
4b52afd0e1 Merge remote-tracking branch 'origin/bob' into bob 2025-08-23 15:52:39 +08:00
CrpBnrz
aa045050a1 QMAW localization created by me 2025-08-23 15:42:04 +08:00
Creeper-banner
b7dc3fb600
Merge branch 'HbmMods:master' into bob 2025-08-23 15:40:25 +08:00
Boblet
8ea7cf4080 can't wait for people to complain about this one 2025-08-22 13:06:47 +02:00
arantirnecrolord
7505b72f7a
pipirupirupirupipi 2025-08-21 13:07:19 +03:00
arantirnecrolord
763a702ed7
xd 2025-08-20 23:55:03 +03:00
arantirnecrolord
a4e1cc139f
fuck yea 2025-08-20 23:40:27 +03:00
arantirnecrolord
ecc8151919
i am alive! 2025-08-20 23:39:07 +03:00
FOlkvangrField
b4b471e5c3 Fix 2025-08-20 21:46:59 +08:00
CrpBnrz
525169743c QMAW localization from Tokiko 2025-08-20 21:28:56 +08:00
RealSilverMoon
e1d66c93a1 i18n for RBMK DODD 2025-08-19 16:23:56 +08:00
CrpBnrz
037af08963 Fix formatted strings 2025-08-19 08:15:49 +08:00
CrpBnrz
1a13e68c67 Merge remote-tracking branch 'origin/bob' into bob 2025-08-19 08:06:42 +08:00
Boblet
a0451b46a5 the glunch 2025-08-18 16:35:50 +02:00
CrpBnrz
c86aa101ba Update zh_CN.lang 2025-08-18 22:07:50 +08:00
Bob
be03467f65 slunkus the great, lord of death 2025-08-17 23:09:50 +02:00
HbmMods
b01b88cb03
Merge pull request #2361 from Bufka2011/master
QMAW russian translation and ru_RU.lang update
2025-08-17 17:58:17 +02:00
HbmMods
b7da4e7bd1
Merge pull request #2363 from abel1502/abel-buzzsaw-fix
Fix buzzsaw not replanting wheat occasionally
2025-08-17 17:57:11 +02:00
Bob
bee95f9065 scrungus 2025-08-17 17:55:28 +02:00
abel1502
d669c4372e
Fix buzzsaw not replanting wheat occasionally 2025-08-17 12:03:45 +03:00
Bufka2011
2db923173a
Update uranium.json 2025-08-15 13:11:05 -06:00
Bufka2011
9e2f116a32
Update uranium-235.json 2025-08-15 13:10:48 -06:00
Bufka2011
eaadc36618
Update steel.json 2025-08-15 13:10:29 -06:00
Bufka2011
8ef85c4d04
Update latex.json 2025-08-15 13:10:12 -06:00
Bufka2011
ffd83ebef3
Update graphite.json 2025-08-15 13:09:55 -06:00
Bufka2011
85895f7ce8
Update coke.json 2025-08-15 13:09:37 -06:00
Bufka2011
792dff062e
Update cadmium.json 2025-08-15 13:09:10 -06:00
Bufka2011
ed67caa19c
Update arsenic.json 2025-08-15 13:08:48 -06:00
Bufka2011
74bd23d76e
Update uranium-233.json 2025-08-15 13:07:16 -06:00
Bufka2011
9a47ec30f4
Update sulfur.json 2025-08-15 13:03:46 -06:00
Bufka2011
9b7332a047
Update radium.json 2025-08-15 13:00:32 -06:00
Bufka2011
098ecd3791
Update plutonium-rg.json 2025-08-15 12:59:44 -06:00
Bufka2011
de4a359002
Update plutonium-241.json 2025-08-15 12:59:18 -06:00
Bufka2011
997ed75b79
Update plutonium-239.json 2025-08-15 12:58:42 -06:00
Bufka2011
2ad1c2121d
Update neptunium.json 2025-08-15 12:58:10 -06:00
Bufka2011
9da95bbff3
Update mingrade.json 2025-08-15 12:57:05 -06:00
Bufka2011
c99f647e15
Update desh.json 2025-08-15 12:55:42 -06:00
Bufka2011
9ff54c2495
Update coke.json 2025-08-15 12:49:51 -06:00
Bufka2011
9b412c726d
Update cinnabar.json 2025-08-15 12:48:35 -06:00
Bufka2011
470f950b1a
Update aluminium.json 2025-08-15 12:46:08 -06:00
Bufka2011
4750b0eba2
Update aluminium.json 2025-08-15 12:45:41 -06:00
Bufka2011
458ee0a90e
Update weaponsteel.json 2025-08-15 12:42:02 -06:00
Bufka2011
563defd5f1
Update uranium.json 2025-08-15 12:41:27 -06:00
Bufka2011
2546cf79b7
Update uranium-238.json 2025-08-15 12:40:41 -06:00
Bufka2011
b8fa2a67d7
Update uranium-235.json 2025-08-15 12:40:04 -06:00
Bufka2011
4c162e9f37
Update uranium-233.json 2025-08-15 12:39:07 -06:00
Bufka2011
a4b49633c6
Update thorium.json 2025-08-15 12:38:13 -06:00
Bufka2011
00980d937a
Update technetium_steel.json 2025-08-15 12:37:24 -06:00
Bufka2011
c39854dbb4
Update technetium.json 2025-08-15 12:36:49 -06:00
Bufka2011
aa5c85ade5
Update tantalium.json 2025-08-15 12:36:10 -06:00
Bufka2011
cdda91f2d8
Update sulfur.json 2025-08-15 12:35:44 -06:00
Bufka2011
84c69e7803
Update steel.json 2025-08-15 12:35:04 -06:00
Bufka2011
1709848209
Update sodium.json 2025-08-15 12:34:22 -06:00
Bufka2011
f6ce5b5ae7
Update silicon.json 2025-08-15 12:33:30 -06:00
Bufka2011
bbe87c34c3
Update rubber.json 2025-08-15 12:31:34 -06:00
Bufka2011
37cee61269
Update radium.json 2025-08-15 12:30:23 -06:00
Bufka2011
81f9915e54
Update polymer.json 2025-08-15 12:28:38 -06:00
Bufka2011
8c696a6f64
Update polonium.json 2025-08-15 12:28:11 -06:00
Bufka2011
61ab6dda7b
Update plutonium.json 2025-08-15 12:27:31 -06:00
Bufka2011
96976e9fb4
Update plutonium-rg.json 2025-08-15 12:26:51 -06:00
Bufka2011
2bd11fdd71
Update plutonium-241.json 2025-08-15 12:25:58 -06:00
Bufka2011
07a6b144c8
Update plutonium-240.json 2025-08-15 12:25:18 -06:00
Bufka2011
d8a6272597
Update plutonium-239.json 2025-08-15 12:24:51 -06:00
Bufka2011
0911ddc423
Update plutonium-238.json 2025-08-15 12:24:01 -06:00
Bufka2011
8e102c3fc8
Update neptunium.json 2025-08-15 12:21:07 -06:00
Bufka2011
aaff825539
Update mingrade.json 2025-08-15 12:20:22 -06:00
Bufka2011
0748abae07
Update lead.json 2025-08-15 12:18:39 -06:00
Bufka2011
1051342526
Update latex.json 2025-08-15 12:18:22 -06:00
Bufka2011
adc57e79b4
Update hss.json 2025-08-15 12:17:24 -06:00
Bufka2011
7741330fec
Update gunmetal.json 2025-08-15 12:16:48 -06:00
Bufka2011
74b0e4e929
Update graphite.json 2025-08-15 12:16:14 -06:00
Bufka2011
a88b7ef5df
Update ferrouranium.json 2025-08-15 12:15:33 -06:00
Bufka2011
f003235381
Update desh.json 2025-08-15 12:14:15 -06:00
Bufka2011
0920358df4
Update copper.json 2025-08-15 12:12:16 -06:00
Bufka2011
75dd1ea555
Update coke.json 2025-08-15 12:10:00 -06:00
Bufka2011
6def4eaac9
Update cinnabar.json 2025-08-15 11:56:58 -06:00
Bufka2011
c841002f70
Update cadmium_steel.json 2025-08-15 11:55:30 -06:00
Bufka2011
3ddad84863
Update cadmium.json 2025-08-15 11:51:11 -06:00
Bufka2011
907d97e1ba
Update bismuth_bronze.json 2025-08-15 11:50:01 -06:00
Bufka2011
af9780f57d
Update bismuth.json 2025-08-15 11:49:28 -06:00
Bufka2011
e6901d8134
Update bakelite.json 2025-08-15 11:47:36 -06:00
Bufka2011
5f041cde7d
Update arsenic_bronze.json 2025-08-15 11:46:50 -06:00
Bufka2011
4c67d4d0c3
Update bscco.json 2025-08-15 11:45:47 -06:00
Bufka2011
bdba1fc503
Update alloy.json 2025-08-15 11:44:20 -06:00
Bufka2011
ad6c7c06a5
Update aluminium.json 2025-08-15 11:40:54 -06:00
Bufka2011
8ddc169c31
Update arsenic.json 2025-08-15 11:38:35 -06:00
Bufka2011
9b316af586
Update alloy.json 2025-08-15 11:14:49 -06:00
Bufka2011
419b207eff
Merge branch 'HbmMods:master' into master 2025-08-15 11:11:19 -06:00
Bob
ba24ed64aa pink one detected 2025-08-15 17:59:39 +02:00
Boblet
9cfdc17115 multidimensional time crystal 2025-08-14 16:20:39 +02:00
Boblet
938c28f293 work, whore 2025-08-11 11:59:28 +02:00
Boblet
b374f4088b agony 2025-08-11 11:52:48 +02:00
Boblet
5444f57cad the glunch 2025-08-11 11:14:06 +02:00
Bufka2011
0ec1e5735a
rebar 2025-08-10 18:32:07 -06:00
Bob
219db7acdf blup 2025-08-10 22:02:23 +02:00
HbmMods
afab6c7750
Merge pull request #2348 from MellowArpeggiation/master
NBTStructureLib features & /ntmlocate command
2025-08-10 20:13:56 +02:00
HbmMods
8117f9b888
Merge pull request #2343 from legendarydoge30/oc-capacitor
opencomputer capacitor
2025-08-10 20:10:24 +02:00
HbmMods
b5363ef039
Merge pull request #2341 from PewPewCricket/master
add waste barrel and vitrified waste barrel recipes to assembly machine.
2025-08-10 20:09:36 +02:00
HbmMods
6f97e04dda
Merge pull request #2338 from Bufka2011/master
ru_RU update
2025-08-10 20:09:02 +02:00
HbmMods
f523b958d6
Merge pull request #2329 from NarekoMichigami810/master
zh_CN update
2025-08-10 20:08:35 +02:00
HbmMods
a9f2762a97
Merge pull request #2326 from 70000hp/the-gog-block
Update BlockWandLogic.java
2025-08-10 20:08:15 +02:00
Bob
242c4f5b03 drowned in the slop, forgotten in the slurry 2025-08-10 20:07:53 +02:00
George Paton
3f72a93d28 tandems! checking if all the affected chunks have generated yet has NOT yet been implemented tho 2025-08-08 18:44:29 +10:00
George Paton
7213b9b84d move jiggy map 2025-08-08 16:53:13 +10:00
道神 馴子
0c5c7a4150
bee 2025-08-08 14:37:24 +08:00
道神 馴子
10e21a2676
Merge branch 'HbmMods:master' into master 2025-08-08 14:29:51 +08:00
George Paton
3877a666a6
Merge branch 'master' into master 2025-08-08 14:55:30 +10:00
George Paton
84601f685f NBTStructureLib features brought back to NTM, including:
* `/locate` command
* custom spawning rules (eg. make something always spawn at 0,0)
* code structure reorg
* extra logging for misconfigured structures
2025-08-08 14:51:45 +10:00
Bob
a7c1a42244 scat 2025-08-07 20:23:28 +02:00
Bob
e8b7504fff and that's QMAW 2025-08-07 17:45:16 +02:00
道神 馴子
e450bbc49d
only thing i love 2025-08-07 17:17:27 +08:00
道神 馴子
26f1b38df9
Merge branch 'HbmMods:master' into master 2025-08-07 15:26:57 +08:00
Bob
d70464b3d1 QMAW the second (third?) 2025-08-06 20:13:44 +02:00
LegendaryDoge30
7bfb6ac7c6 open computer
open computers capacitor
2025-08-06 02:13:36 +02:00
PewPewCricket
96f02c6a16 add yellow waste barrel and vitrified waste barrel recipes to assembly machine. 2025-08-05 14:40:46 -05:00
Bufka2011
852e89b21d
typo fix 2025-08-05 12:30:32 -06:00
道神 馴子
b7ced0b946
Merge branch 'HbmMods:master' into master 2025-08-05 11:16:59 +08:00
Bufka2011
05630028a0
Merge branch 'HbmMods:master' into master 2025-08-04 20:11:22 -06:00
Bufka2011
30a20e34e0
Update ru_RU.lang 2025-08-04 20:11:12 -06:00
Bob
a5bdfa87d9 it just works 2025-08-04 20:16:50 +02:00
Bob
69b9ea9a7d consumed by the sludge 2025-08-04 19:18:41 +02:00
Bufka2011
889cc46486
Merge branch 'HbmMods:master' into master 2025-08-01 15:59:32 -06:00
道神 馴子
bafa8d6dba
Beyond the time 2025-08-01 13:46:45 +08:00
70000hp
5f999100d1 Update BlockWandLogic.java 2025-07-31 16:10:23 -04:00
Bob
737c56ed07 PUREX 2025-07-31 21:49:31 +02:00
Bufka2011
8d63e86a98
Merge branch 'HbmMods:master' into master 2025-07-31 09:24:12 -06:00
Bufka2011
ddc6e42f55
Update ru_RU.lang 2025-07-31 09:24:06 -06:00
Bufka2011
423cbbcf79
Update ru_RU.lang 2025-07-30 15:06:04 -06:00
Bufka2011
ef3397ddb1
Update ru_RU.lang 2025-07-30 14:55:18 -06:00
Bob
daae2a5e32 exponsiv 2025-07-30 22:40:28 +02:00
Bufka2011
5b22da19c4
Update ru_RU.lang 2025-07-30 13:49:47 -06:00
Bufka2011
e6c059041e
Update ru_RU.lang 2025-07-30 13:45:48 -06:00
Bufka2011
b9332f2e81
Update ru_RU.lang 2025-07-30 13:42:46 -06:00
Bufka2011
4d25b5dc8b
Update ru_RU.lang 2025-07-30 13:42:13 -06:00
Bufka2011
55bfe1b8d2
Update ru_RU.lang 2025-07-30 13:40:16 -06:00
Bufka2011
82b02c29ea
Update ru_RU.lang 2025-07-29 13:18:25 -06:00
Bufka2011
e85ae838c6
Update ru_RU.lang 2025-07-29 12:31:33 -06:00
Bufka2011
77df7e6cde
Update ru_RU.lang 2025-07-29 12:28:14 -06:00
Bufka2011
c82e371ec8
Update ru_RU.lang 2025-07-29 11:45:26 -06:00
Bufka2011
b656e1d22e
Update ru_RU.lang 2025-07-29 11:44:03 -06:00
Bufka2011
18855018c4
Update ru_RU.lang 2025-07-29 11:41:09 -06:00
Bob
7f887a623a 🅱️alls 2025-07-27 17:10:39 +02:00
HbmMods
66e0a0252b
Merge pull request #2311 from PewPewCricket/master
Fix flow control pump oc compat (i forgot to add one line in the last commit)
2025-07-25 17:51:38 +02:00
HbmMods
7b30d17031
Merge pull request #2302 from Nycticoraxnightheron/master
zh_CN update
2025-07-25 17:51:21 +02:00
Bob
131e4fd42d yesterday's shit buffet 2025-07-25 17:50:13 +02:00
PewPewCricket
7aa8818a5b Merge branch 'master' of github.com:PewPewCricket/Hbm-s-Nuclear-Tech-GIT 2025-07-24 13:34:00 -05:00
PewPewCricket
f0679b04cc fix FCP oc compat 2025-07-24 13:30:59 -05:00
Bob
2102db6229 RBMK autoloader 2025-07-24 15:12:54 +02:00
Justnightheron
a8485bdb5a
kris 2025-07-24 00:31:25 +08:00
Justnightheron
71695de235
Merge branch 'HbmMods:master' into master 2025-07-24 00:22:35 +08:00
Bob
fd04024706 cast yourself a whole house, cast yourself a new mother,
cast a vacation straight to fucking hell
2025-07-23 16:34:11 +02:00
Bob
2f74d17823 pouring out the conk 2025-07-22 23:17:59 +02:00
Justnightheron
9d558a68f3
😭 2025-07-22 18:42:21 +08:00
Bob
05bc334274 1v1 me on twitter vro 2025-07-21 00:52:02 +02:00
Bob
b7641dcd54 now's your chance to take a [BIG SHIT] 2025-07-18 23:34:43 +02:00
HbmMods
6bbb002e34
Merge pull request #2296 from arantirnecrolord/master
update uk_UA
2025-07-18 11:13:29 +02:00
arantirnecrolord
06930f6ec8
update uk_UA 2025-07-18 11:57:22 +03:00
HbmMods
2e6ca970a7
Merge pull request #2292 from WolfEclipses/master
Modified Radiolysis machine GUI
2025-07-18 08:09:16 +02:00
HbmMods
83876e388f
Merge pull request #2294 from abel1502/abel-fix-rbmk-console
Fix RBMK console rotation
2025-07-18 08:08:15 +02:00
HbmMods
85bef7672e
Merge pull request #2295 from PewPewCricket/master
Add OpenComputers compat for fluid pump and fix CCGT allowing throttle over max when using OpenComputers callbacks
2025-07-18 08:06:53 +02:00
PewPewCricket
8686a64141 fix CCGT allowing throttle over max when using OpenComputers callbacks 2025-07-17 14:46:57 -05:00
PewPewCricket
5fb88801ec add oc compat for fluid pump 2025-07-17 14:04:52 -05:00
abel1502
0c5077b54a
Don't forget OpenComputers 2025-07-17 21:40:57 +03:00
abel1502
23487bd0d8
Fix RBMK console rotation 2025-07-17 21:26:05 +03:00
Wolf
faa87edd40 Modified Radiolysis machine GUI to show rtg pellet location, tried to match with rtg style. I can also update to new gui style used in recent commits, but decided this was a start. 2025-07-17 11:20:15 -04:00
HbmMods
cc9d04d063
Merge pull request #2291 from Nycticoraxnightheron/master
zh_CN update
2025-07-17 07:57:04 +02:00
HbmMods
5b6f8e5b3d
Merge pull request #2290 from wiesenmann/paintable-pneumatic-tubes
Add a Full Block Paintable Pneumatic Tube
2025-07-17 07:56:40 +02:00
HbmMods
563b726b62
Merge branch 'master' into paintable-pneumatic-tubes 2025-07-17 07:56:31 +02:00
HbmMods
d389a2cf84
Merge pull request #2285 from PewPewCricket/master
Add Paintable Network Cable
2025-07-17 07:54:12 +02:00
Bob
9cf7cc6643 bluh 2025-07-16 21:59:48 +02:00
Justnightheron
6bbb354a9f
Rape that wall 2025-07-16 19:46:37 +08:00
wiesenmann
af6f3d76fe german localization fix 2025-07-16 13:08:48 +02:00
wiesenmann
97556e4c5a add paintable pneumatic tube 2025-07-16 11:56:10 +02:00
PewPewCricket
8bdf209c0b Merge branch 'master' of https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT 2025-07-15 16:46:12 -05:00
Bob
f94fd70cf0 falling in love with a corporate illustration 2025-07-15 21:42:05 +02:00
Boblet
281e66b37e my love is a quickscope 2025-07-15 16:00:43 +02:00
PewPewCricket
73c2f9aa67 Merge branch 'master' of github.com:PewPewCricket/Hbm-s-Nuclear-Tech-GIT 2025-07-15 04:12:58 -05:00
PewPewCricket
fa6d8c1a54 Merge branch 'master' of https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT 2025-07-15 04:11:47 -05:00
PewPewCricket
e18cc2d729
Merge branch 'HbmMods:master' into master 2025-07-15 04:10:38 -05:00
PewPewCricket
5f8b0f6aed fix TileEntityOpenComputersCablePaintable not implementing ICopyable and add null check for ModBlocks.oc_cable_paintable in CraftingManager.java 2025-07-15 04:10:06 -05:00
HbmMods
83b3ce085e
Merge pull request #2279 from abel1502/abel-door-hitboxes
Fix door hitboxes
2025-07-15 08:32:50 +02:00
HbmMods
6374f912cb
Merge pull request #2282 from abel1502/abel-electrolyzer-persist-gui
Persist electrolyzer GUI
2025-07-15 08:31:42 +02:00
HbmMods
cf94df9e48
Merge pull request #2284 from BallOfEnergy1/patch-1
Fix server crash due to client-side var being accessed on server
2025-07-15 08:30:47 +02:00
HbmMods
9ab3bc865b
Merge pull request #2286 from Pvndols/master
CCGT V3
2025-07-15 08:26:46 +02:00
PewPewCricket
76368acbf8 remove unused imports in BlockOpenComputersCablePaintable.java 2025-07-14 20:52:12 -05:00
PewPewCricket
da605a794e
Merge branch 'HbmMods:master' into master 2025-07-14 20:50:10 -05:00
PewPewCricket
02a4bf483e add dyable cable color functionality to paintable network cable 2025-07-14 20:31:54 -05:00
Boblet
12dbb340dd half-priced salammi 2025-07-14 16:42:54 +02:00
pvn
2cd25dbfb1
Merge branch 'HbmMods:master' into master 2025-07-14 12:41:43 +02:00
Bob
c83a53b62a ass embluh 2025-07-13 23:27:29 +02:00
Pvndols
982e50556b mauricio i can't move it move it anymore
AAAAAAAAAAAAAAAAAAAAA
2025-07-13 22:47:48 +02:00
Pvndols
dc04226713 fuck 2025-07-13 22:45:05 +02:00
Pvndols
fa6497146a hopefully i didn't fuck up
CCGT changes, automode now lowers throttle when fuel low, displays fuel consumption instead of a generic power setting in the GUI, small change in GUI description, the texture now includes what should be an air filter at the tubine intake. i am NOT good at texturing.
2025-07-13 22:43:02 +02:00
Pvndols
119b8a037b Revert "the spinniest of the fidgets"
This reverts commit 2841c8b67b8f459573142bbf33b1727f57159495.
2025-07-13 22:30:34 +02:00
Pvndols
e4f980e21c Merge remote-tracking branch 'origin/master' 2025-07-13 22:23:37 +02:00
PewPewCricket
da2abe281d add paintable network cable 2025-07-13 14:57:43 -05:00
Pvndols
2841c8b67b the spinniest of the fidgets
CCGT changes, automode now lowers throttle when fuel low, displays fuel consumption instead of a generic power setting in the GUI, small change in GUI description, the texture now includes what should be an air filter at the tubine intake. i am NOT good at texturing.
2025-07-13 21:05:28 +02:00
BallOfEnergy
fb32763c88
Update PistonInserter.java; Fix server crash due to client-side variable. 2025-07-13 11:45:17 -05:00
abel1502
4b6cf3473d
Save electrolyzer GUI 2025-07-13 13:19:43 +03:00
Boblet
10d8551ce3 all zinced up 2025-07-11 14:56:46 +02:00
abel1502
f2f3e04bb0
Fix gap in secure access door 2025-07-11 15:19:33 +03:00
abel1502
3c2d49419f
Use separate collision and visual boxes on doors
Also improve the user experience with smaller doors, by making the visual hitbox cover the entire door even when open. (In repsonse to Mellow's critique)
2025-07-11 15:09:17 +03:00
abel1502
16fcac0a3c
Support collision-only/visual-only boxes on doors 2025-07-11 15:09:00 +03:00
Boblet
89100738f4 holy cungadero do i feel good 2025-07-10 16:58:37 +02:00
HbmMods
ca3af9e863
Merge pull request #2270 from Toshayo/microblocks
Added Forge MicroBlocks support
2025-07-10 08:02:26 +02:00
HbmMods
ee99c1e491
Merge pull request #2269 from 70000hp/the-bob-mlock
The Logic Block
2025-07-10 07:55:33 +02:00
Toshayo
ef54c6e23b
Added Forge MicroBlocks support 2025-07-09 23:22:51 +02:00
70000hp
e7ebc7dd07 thunder fire all your generation 2025-07-09 13:10:47 -04:00
70000hp
c33b962043 misc fix 2025-07-09 13:07:33 -04:00
70000hp
603cc10696 Interactions for the logic block 2025-07-09 13:07:33 -04:00
70000hp
541c6a1c99 Interactions for the logic block 2025-07-09 13:07:33 -04:00
70000hp
21efc6b61c Interactions for the logic block 2025-07-09 13:07:33 -04:00
70000hp
3d77afab1f disguises for the logic block 2025-07-09 13:07:33 -04:00
70000hp
714a5298a9 disguises for the logic block 2025-07-09 13:07:33 -04:00
70000hp
acb01b13e0 copy tool support and working directional offsets 2025-07-09 13:07:33 -04:00
70000hp
274995ebd6 copy tool support and working directional offsets 2025-07-09 13:07:33 -04:00
70000hp
c42e03c268 the gob block 2025-07-09 13:07:33 -04:00
70000hp
453c47c6f0 the gob block 2025-07-09 13:07:33 -04:00
Boblet
9c818f45d1 scum construction machine 2025-07-09 16:56:42 +02:00
Boblet
dcdf5c4f27 Revert "Merge pull request #2261 from 70000hp/the-lob-block"
This reverts commit f24c244730c0ae9bf83437b5d2f0d062a5482e61, reversing
changes made to 0cf9d88e36f0a7209a840419ce1f3cbf277e3a9a.
2025-07-09 09:57:49 +02:00
HbmMods
0e92a96b2a
Merge pull request #2267 from abel1502/abel-rbmk-crane-span
RBMK crane improvement
2025-07-09 08:25:19 +02:00
HbmMods
8a3c8b5e10
Merge pull request #2268 from abel1502/abel-qe-sliding-door
Stop QE sliding door model clipping
2025-07-09 08:24:34 +02:00
HbmMods
f24c244730
Merge pull request #2261 from 70000hp/the-lob-block
Dungeon Action Block, and Mob Decorator improvments
2025-07-09 08:19:43 +02:00
abel1502
19fd479170
Fix stuff 2025-07-09 01:50:09 +03:00
abel1502
0e5e114b12
Stop QE sliding door model clipping 2025-07-09 01:27:04 +03:00
abel1502
d8080835f8
Detect room bounds when linking RBMK crane 2025-07-09 01:25:58 +03:00
abel1502
097b2bb12c
Fix RBMK crane girder rendering with unequal spans 2025-07-09 01:25:54 +03:00
abel1502
8294df1aa3
Extend RBMK crane reach forward
Enables close-to-real-life reactor hall replicas, with the storage columns being located further in the reactor hall than the reactor itself
2025-07-09 01:25:45 +03:00
Boblet
0cf9d88e36 needle punch fuck machine 2025-07-08 16:46:41 +02:00
Boblet
6b1d61166f rotten grussy 2025-07-07 16:56:23 +02:00
Bob
ba220420fe the sludge 2025-07-06 22:35:26 +02:00
Bob
79c7faf55b scatman's world 2025-07-05 23:43:55 +02:00
Boblet
0880287660 assembler module 2025-07-04 15:24:28 +02:00
70000hp
360b0acabe Interactions for the logic block 2025-07-04 09:21:13 -04:00
HbmMods
b3983f7fb8
Merge pull request #2259 from abel1502/abel-abilities-fix
Fix ItemToolAbility bedrock breaking
2025-07-04 09:36:28 +02:00
70000hp
edd952ec6a Interactions for the logic block 2025-07-03 15:09:16 -04:00
Boblet
6282bd028d ough 2025-07-03 15:01:24 +02:00
abel1502
ac45637bf6
Just a bit more null checks 2025-07-03 12:26:59 +03:00
abel1502
4983002013
Fix ItemToolAbility bedrock breaking 2025-07-03 12:22:33 +03:00
Boblet
3da96091da flixes 2025-07-02 16:50:20 +02:00
70000hp
8bef7d63dd disguises for the logic block 2025-07-01 20:11:39 -04:00
Boblet
c55c8c5da1 the moon is cheese that makes you trip balls 2025-07-01 15:57:56 +02:00
HbmMods
90813de8cc
Merge pull request #2251 from Nycticoraxnightheron/master
zh_CN update
2025-07-01 11:02:55 +02:00
Justnightheron
90ab38dc44
2025-07-01 16:58:23 +08:00
HbmMods
3592deca8e
Merge pull request #2250 from MellowArpeggiation/master
Nodespace performance improvements MkII
2025-07-01 10:03:23 +02:00
George Paton
58da6f154e move door to faster network serialization, remove now unused door sync packet 2025-07-01 17:46:33 +10:00
George Paton
25a2172c6b switch to LinkedHashMap for 23x performance improvement! 2025-07-01 17:44:52 +10:00
HbmMods
8685831c04
Merge pull request #2247 from abel1502/abel-trapdoors
Add a steel trapdoor
2025-07-01 08:34:04 +02:00
70000hp
1f7131536c Merge branch 'master' into the-lob-block 2025-06-30 16:07:33 -04:00
70000hp
1a9fc72a93 copy tool support and working directional offsets 2025-06-30 15:33:26 -04:00
Lazzzycatwastaken
43f38d8679 sdsa 2025-06-30 17:38:36 +02:00
Boblet
c08a90553a FLESH 2025-06-30 16:30:59 +02:00
abel1502
533dfd6ded
Fix localization 2025-06-30 16:08:38 +03:00
abel1502
ac7f186528
Oops 2025-06-30 16:04:01 +03:00
abel1502
17b0dde444
Remove all but the steel trapdoor 2025-06-30 16:02:38 +03:00
abel1502
1da6140e2e
Merge branch 'master' of https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT into abel-trapdoors 2025-06-30 15:58:53 +03:00
HbmMods
cac082a6e2
Merge pull request #2246 from abel1502/abel-tangible-presses
Turn burner & electric press into proper pseudomultiblocks
2025-06-30 09:14:05 +02:00
abel1502
2e5882df60
Don't break the whole thing 2025-06-30 09:15:12 +03:00
abel1502
f792fdebe3
Make presses un-multiblockable with a hand drill
As per @MellowArpeggiation 's request. Meant for schenanigans with visually squishing things
2025-06-30 09:12:20 +03:00
HbmMods
4875aefba4
Merge pull request #2245 from abel1502/abel-buffer-extractor
Make conveyor extractors take items to inventory when not facing a conveyor
2025-06-30 08:01:18 +02:00
70000hp
3db1dbd277 the gob block 2025-06-29 19:11:39 -04:00
abel1502
18a310ba3a
Prevent pseudomultiblocks disappearing on chunk boundaries
If this was indeed a problem, it must've been one before my PR... I suspect maybe some of my intermediate implementations allowed this to have an effect. Regardless, this is definitely a useful fix
2025-06-30 00:25:33 +03:00
abel1502
d1497abd1e
Simplify press click handling
Turns out there is already a function for doing just that
2025-06-29 23:41:47 +03:00
Bob
3583ad66cd ough 2025-06-29 22:30:04 +02:00
abel1502
d1f50a8eb4
Fix press auto-migration 2025-06-29 15:45:52 +03:00
HbmMods
27c0c94897
Merge pull request #2241 from abel1502/abel-misc-tweaks-2
QoL tweaks 2
2025-06-29 10:31:48 +02:00
HbmMods
42d45506bd
Merge pull request #2244 from abel1502/abel-suspend-inserter
Allow stopping conveyor inserters with redstone
2025-06-29 10:23:24 +02:00
HbmMods
3658953d33
Merge pull request #2243 from Lazzzycatwastaken/zg
hotfix because github decided not to push the actual NBT file ???
2025-06-29 10:22:43 +02:00
abel1502
3b36807242
Trigger the press fix automatically 2025-06-29 02:01:25 +03:00
Bob
b89bec56c8 gun 2025-06-29 00:06:44 +02:00
abel1502
0eb87524ab
Make new press implementation savegame-compatible 2025-06-29 01:05:39 +03:00
abel1502
4a869ae2ea
Add automatic migration API to BlockDummyable 2025-06-29 01:05:10 +03:00
abel1502
41d62c49db
Remove broken & redundant transformMeta 2025-06-29 00:24:47 +03:00
abel1502
1bb88b176a
More fixes
Turns out, pseudomultiblocks are pretty complicated
2025-06-29 00:10:49 +03:00
abel1502
1f073d570c
Fix createNewTileEntity and clean up a bit 2025-06-28 23:53:38 +03:00
abel1502
f6f1c1c380
Turn presses into pseudomultiblocks
Affects burner and electrical press. They seem to have been implemented largely based on copy-pasted furnace code, and seemingly predate BlockDummyable. That meant the top two blocks of a press were intangible. Now they're in line with the rest of the machines, including the conveyor press.
2025-06-28 23:53:35 +03:00
abel1502
997e96f757
Exclude special slots 2025-06-28 23:23:39 +03:00
abel1502
db109d8bcf
Crane extractors take items to inventory when not facing a conveyor
Allows using them as an ad-hoc hopper with a small buffer. Previously their buffer was effectively rudimentary -- it was used for output, but nothing ever inputted into it.
2025-06-28 23:16:20 +03:00
abel1502
9a7124c8ff
Allow stopping conveyor inserters with redstone
A stopped inserted will still take items to its own inventory, but won't insert them into the inventory it is facing. Useful for taking out stuff from overflowing outputs, if you want to maintain a particular slot distribution.
2025-06-28 22:52:13 +03:00
abel1502
a3578e67a0
Revert "Make exhaustion only apply once"
This reverts commit 6946a70f18feb98b8297b3a68cd0c031c5dac284.
2025-06-28 22:41:11 +03:00
Lazzzycat
92bce167f3
Merge branch 'HbmMods:master' into zg 2025-06-28 21:01:25 +02:00
Lazzzycatwastaken
14377708be fuck you github 2025-06-28 21:00:53 +02:00
HbmMods
fa075a3bd4
Merge pull request #2239 from Lazzzycatwastaken/zg
fixing dickhouse glitched
2025-06-28 20:25:30 +02:00
HbmMods
62e32f70c6
Merge pull request #2226 from abel1502/abel-ae2-compat
Mass Storage AE2 compatibility
2025-06-28 19:25:45 +02:00
HbmMods
942f7fefea
Merge pull request #2235 from MerrittK/shredder_dust_fix
Shredder Preferential Ore registry.
2025-06-28 19:21:12 +02:00
HbmMods
c6fce12a0b
Merge pull request #2232 from 70000hp/port-tooltip-rfurnace
Rotary Furnace Port Tooltip
2025-06-28 19:19:35 +02:00
HbmMods
f4a1e8beed
Merge pull request #2228 from arantirnecrolord/master
uk_UA update
2025-06-28 19:16:44 +02:00
HbmMods
18a6f228c6
Merge pull request #2223 from Nycticoraxnightheron/master
zh_CN update
2025-06-28 19:16:15 +02:00
HbmMods
096cd046c5
Merge pull request #2221 from DangerousMilk/exhaust-block
Paintable Coated Variant Of The Exhaust Pipe.
2025-06-28 19:15:59 +02:00
Lazzzycat
a70410f5dd
Merge branch 'HbmMods:master' into Forwetst 2025-06-28 18:24:36 +02:00
Lazzzycat
f3ee962e8e
Merge branch 'HbmMods:master' into NTMRUINS1 2025-06-28 18:24:28 +02:00
Lazzzycat
bfe043b81d
Merge branch 'HbmMods:master' into Radio-house 2025-06-28 18:24:15 +02:00
Lazzzycat
f5db461bfd
Merge branch 'HbmMods:master' into forestchem 2025-06-28 18:23:45 +02:00
Lazzzycat
36080e183a
Merge branch 'HbmMods:master' into forestpost 2025-06-28 18:23:36 +02:00
abel1502
6946a70f18
Make exhaustion only apply once 2025-06-28 04:08:02 +03:00
abel1502
5a0dabc5a9
Bunch all mined blocks in one spot
Solves the problem of veinmined stuff being stuck in enclosed pockets, even with a magnet active
2025-06-28 04:07:42 +03:00
abel1502
71c1eaf430
Change flat AoE icon 2025-06-28 04:06:11 +03:00
abel1502
b400b88701
Add flat AoE ability 2025-06-28 04:06:03 +03:00
abel1502
f820ae32e2
Fix crate locked slot 2025-06-28 04:04:02 +03:00
abel1502
a40d0b3513
Make doors click-through when open
Currently clicking on anything beyond an open door just makes it close, despite there being no indications for that and the colliders clearly already not being there.
2025-06-28 04:03:41 +03:00
abel1502
0b5731266e
Hide spotlights on maps 2025-06-28 04:03:28 +03:00
abel1502
dec8c9c43a
Wow mojang is stupid
Or at least the mapping author is. How could I not get that `getBlocksMovement` should return if the block DOESN'T block movement, that's so obvious, why would I ever think otherwise
2025-06-28 04:03:12 +03:00
abel1502
466f12e6e2
Fix pathfinding on spotlights 2025-06-28 04:02:57 +03:00
Lazzzycatwastaken
32fc58821a sludge 2025-06-27 21:23:53 +02:00
Bob
03693e7c0a girl dinner (a bottle of whiskey) 2025-06-26 00:32:37 +02:00
MerrittK
57b0cc4727
Merge branch 'HbmMods:master' into shredder_dust_fix 2025-06-25 15:16:49 -04:00
MerrittK
89b145fde8 Merge branch 'shredder_dust_fix' of https://github.com/MerrittK/Hbm-s-Nuclear-Tech-GIT into shredder_dust_fix 2025-06-25 15:15:14 -04:00
MerrittK
a982616f89 I had to reinvent the wheel because of a different config implementation. 2025-06-25 15:12:00 -04:00
Boblet
2a7033bb76 lord of the lockerroom ft. big macintosh and his massive gun 2025-06-25 15:59:05 +02:00
70000hp
7737ac7989 Rotary Furnace Port Tooltip
Says what it does on the tin, hovering over the rotary furnace steam, fluid, and fuel ports, tells you what each one is for

Also gets rid of a vanilla obfuscation ID variable on a NTM class for strange reasons
2025-06-24 17:46:18 -04:00
MerrittK
46c59eace3
Merge branch 'HbmMods:master' into shredder_dust_fix 2025-06-24 10:41:40 -04:00
MerrittK
18d8fe292c Fixed Advanced rocketry moon turf compat 2025-06-24 10:40:21 -04:00
Boblet
f416b9ad44 born to shit (forced to wipe) 2025-06-24 15:58:10 +02:00
arantirnecrolord
1615096a84
i just don't know 2025-06-24 09:23:32 +03:00
Boblet
78c33e904d <agony> 2025-06-23 16:58:46 +02:00
Bob
3e3b651d11 i hereby name thee "sexy" 2025-06-22 16:11:06 +02:00
Justnightheron
25a7222cf2
Merge branch 'HbmMods:master' into master 2025-06-21 00:43:18 +08:00
Boblet
c2354adbc3 IFluidRegisterListener 2025-06-20 14:47:15 +02:00
arantirnecrolord
5a12d14948
fuck 2025-06-20 12:47:17 +03:00
arantirnecrolord
014a253e43
хімічний завод uk_UA 2025-06-20 12:09:26 +03:00
arantirnecrolord
dd5e4e1343
Merge branch 'HbmMods:master' into master 2025-06-20 12:07:55 +03:00
abel1502
149e79f550
Fix crash without AE2 2025-06-20 02:26:31 +03:00
abel1502
d15ab7079a
Reduce dependencies
If I understand it correctly, the implementation rule is there to include anything we use in the mod that is not part of the API? If so, I don't use anything like that. Anyway, it compiles, and it runs, so I'm happy with it. Revert this if issues arise, I guess
2025-06-20 02:00:49 +03:00
abel1502
2744ab322c
Fix annotations
Turns out the InterfaceList is obligatory, even if there's only one interface
2025-06-20 02:00:45 +03:00
abel1502
eaa2dfa23d
Add optional interface annotations 2025-06-20 01:42:38 +03:00
abel1502
9b08adc314
Mass Storage AE2 compat 2025-06-20 01:28:35 +03:00
Bob
381ef334b2 yet more chemfac crap 2025-06-19 21:27:56 +02:00
Boblet
570ad03802 who's been drawing dyx 2025-06-18 16:27:14 +02:00
Justnightheron
06a1b9163d
M78 2025-06-18 16:57:55 +08:00
DangerousMilk
ad4b1733d5 Fixed NBT data not saving. 2025-06-17 20:30:54 +02:00
Boblet
5aee91636c i stuck my ballsack in the coolant line & it got obliterated by delta P 2025-06-17 16:30:00 +02:00
DangerousMilk
474148110d Added the TileEntity to the TileMappings. Removed unnecessary canConnectTo function and TileEntityPipePaintable import 2025-06-17 14:23:45 +02:00
HbmMods
983f91edc5
Merge pull request #2215 from mlbv/master
mk5 performance improvement
2025-06-17 08:14:36 +02:00
DangerousMilk
155595772c Added recipe and changed function order to make more sense. 2025-06-16 17:48:05 +02:00
Boblet
5f08488268 d'oh 2025-06-16 16:17:31 +02:00
Bob
1e26546c79 chemfac chemfac 2025-06-15 22:40:59 +02:00
DangerousMilk
b328130edb Added paintable coated variant of the exhaust pipe. 2025-06-15 19:55:37 +02:00
mlbv
baad5cefbe feat: add RESOLUTION_FACTOR
Introduce RESOLUTION_FACTOR to scale ray density for tuning. Consider exposing this in BombConfig for runtime configuration.
2025-06-14 08:30:42 +08:00
abel1502
8ad065b891
Make bunker use a sturdy trapdoor 2025-06-13 21:19:46 +03:00
Boblet
3303df8345 ough 2025-06-13 14:47:50 +02:00
mlbv
7dab92f3b2 Perf: better caching 2025-06-13 12:39:27 +08:00
mlbv
d65cc18dd8 perf: pre-size maps to avoid overhead 2025-06-13 05:19:40 +08:00
abel1502
d4d552b9dd
Fix bounding box 2025-06-12 22:43:46 +03:00
abel1502
11fc058690
Fix trapdoor operation 2025-06-12 22:18:58 +03:00
abel1502
ae593a8188
Add metal trapdoors
By analogy with metal ladders. Felt weird to cap one off with a wooden hatch. Also, the mod's trapdoors are climbable if placed above a ladder.
2025-06-12 22:08:00 +03:00
Boblet
590da72fbb whatever, go my jerma 2025-06-12 16:11:02 +02:00
mlbv
a9567d986b refactor 2025-06-12 16:48:37 +08:00
HbmMods
f4af494d2a
Merge pull request #2207 from abel1502/abel-hotfix-2025-06
Hotfix my big PR again
2025-06-11 22:32:04 +02:00
abel1502
9c3e6e2ce4
Me stupid 2025-06-11 19:55:08 +03:00
HbmMods
959570c230
Merge pull request #2204 from mlbv/master
Fix chunkloading
2025-06-11 11:33:03 +02:00
mlbv
105f44a36a description update 2025-06-11 17:26:45 +08:00
mlbv
79dcb69ed2 some refactor 2025-06-11 10:18:21 +08:00
Bob
f2991e4518 dagoth ur yaoi 2025-06-10 22:59:04 +02:00
arantirnecrolord
37546b252d
🅰️ss 2025-06-10 20:35:59 +03:00
Boblet
6bfca4e1fe 🅱️alls 2025-06-10 15:32:47 +02:00
HbmMods
f03dca7470
Merge pull request #2202 from Nycticoraxnightheron/master
zh_CN update
2025-06-10 08:20:16 +02:00
HbmMods
cb8c95278c
Merge pull request #2201 from abel1502/abel-hotfix-2025-06
Hotfix my big PR
2025-06-10 08:19:44 +02:00
Justnightheron
9dbe596401
LENS 2025-06-10 14:04:20 +08:00
Bob
060c259fa9 bals 2025-06-09 22:49:23 +02:00
abel1502
57eba8e6ec
Fix scroll direction
Apparently, I forgot to cherry-pick the commit where I'd inverted it
2025-06-09 23:45:41 +03:00
HbmMods
6f598278d6
Merge pull request #2196 from abel1502/abel-bobble
Add a bobblehead of myself
2025-06-09 15:34:49 +02:00
HbmMods
6b28649094
Merge pull request #2194 from abel1502/abel-misc-tweaks-2025-06
QoL changes in bulk
2025-06-09 15:34:13 +02:00
HbmMods
47eabb8b36
Merge pull request #2198 from arantirnecrolord/master
typo correction uk_UA
2025-06-09 15:23:36 +02:00
HbmMods
63bf3a1e7c
Merge pull request #2199 from bpotato198/master
PL localisation fix
2025-06-09 15:22:56 +02:00
abel1502
d185a5ea22
Turn down mass storage sfx volume 2025-06-08 00:24:58 +03:00
BakedPotato
947ba198cc
Update pl_PL.lang 2025-06-07 18:46:31 +02:00
BakedPotato
c8ad381418
PL localisation 2025-06-07 18:24:48 +02:00
abel1502
e9888a8634
More NBT consistency
Normalize empty NBT to null NBT. Fixes stackability for empty inventories, as usual.
2025-06-07 00:28:17 +03:00
Boblet
cf82ea3796 facing oblivion to become the lode star 2025-06-06 14:03:52 +02:00
arantirnecrolord
8a93b02c94
who cares what i called it 2025-06-06 14:07:02 +03:00
abel1502
51ad12d51a
Add a notification for fan mode toggle 2025-06-05 20:49:10 +03:00
abel1502
88713946dd
Allow cycling the fan force falloff with a handdrill 2025-06-05 20:46:18 +03:00
arantirnecrolord
3b2a4aee1e
typo correction uk_UA 2025-06-05 20:27:28 +03:00
abel1502
4d0ce8b6d9
Add update packet to crates 2025-06-05 19:51:38 +03:00
abel1502
d27bda1f74
Add proper markDirty calls to tile entities 2025-06-05 18:56:40 +03:00
abel1502
84d3722c04
Save customName to NBT 2025-06-05 18:49:02 +03:00
Boblet
60f05defe0 deltarune tomorrow 2025-06-05 15:38:29 +02:00
Boblet
25e20662e4 a little gift for future me 2025-06-04 16:11:38 +02:00
abel1502
c9110aaa33
NBT consistency for crates opened from inventory 2025-06-03 23:57:43 +03:00
abel1502
c19e867bfd
Don't consume oil when suspended 2025-06-03 20:31:41 +03:00
abel1502
df8d456a90
Allow suspending autosaw with a screwdriver
Localized, though I'm not sure if it really needs to be
2025-06-03 20:26:07 +03:00
abel1502
8c196f05ca
Save forseSkip to NBT
Not included in `serialize()` and `deserialize()` because it is server-side-only
2025-06-03 20:23:14 +03:00
abel1502
f8d827d6cd
Make autosaw respect walls
Previously the blade always phased through solid walls. Now, if colliding with one, it will retract forcibly. In case there are valid targets behind a wall, it will ignore them for the next 5 degrees of rotation
2025-06-03 19:03:46 +03:00
abel1502
79d510aefb
Increase base fan force 2025-06-03 16:35:05 +03:00
abel1502
3733a8bee9
Fan force falloff
Previously, with two fans facing into each other, either one of them would completely overpower the other, or they'd cancel each other out. Now the force is inversely proportional to the distance, so the items end up in the middle
2025-06-03 15:54:46 +03:00
abel1502
d9ef97f345
Add glow 2025-06-03 14:08:02 +03:00
abel1502
20eb02e816
Fix posture and inscription 2025-06-03 12:56:36 +03:00
abel1502
61acb3db45
I turned myself into a bobblehead 2025-06-03 12:46:21 +03:00
abel1502
8a7934d274
Fix custom name for crates opened from hand 2025-06-02 23:46:01 +03:00
abel1502
997fb20129
This time for sure 2025-06-02 23:35:25 +03:00
abel1502
5fe26d5647
Fix renaming hook again
Turns out, there's a bug in Forge and the stacks are misassigned for that particular event
2025-06-02 23:35:20 +03:00
abel1502
cf26eac2c9
Fix renaming hook 2025-06-02 23:35:16 +03:00
abel1502
8970878e6b
Add look overlay to named crates
I think this is better than signs for a crate-based stockpile. Only shows the name for now, but a contents summary might be included too.
2025-06-02 21:51:54 +03:00
abel1502
6fb0b647fd
Disable repair cost increment on rename
Effectively a backport of a 1.8 feature. Relevant because otherwise a renamed crate is nbt-incompatible with itself after being placed and broken
2025-06-02 21:35:14 +03:00
abel1502
4bc07d9cbf
Add missing check 2025-06-02 21:06:47 +03:00
abel1502
0f7c8b49f3
Fix crate NBT inconsistency in crates
Apparently, a mined crate used to differ from a freshly crafted one because the former didn't have any spiders in it. The latter? Neither.
2025-06-02 20:55:01 +03:00
abel1502
169f1666e7
Retain names for storage crates 2025-06-02 20:54:46 +03:00
abel1502
7ef016ccce
Make mass storage process output instantly
Same deal as previously, this bypasses the bottleneck of tile entity ticking and network latency. This change is less relevant than the previous one, because there shift-dragging or shift-double-clicking were possible with mods, while here it only really affects autoclickers. Still, it can't hurt
2025-06-02 20:16:05 +03:00
abel1502
a6740a35e9
Make mass storage process input instantly
This allows to shift-click an entire inventory-load into a mass storage. Previously this was bottlenecked by the network latency and the tile entity tickrate.

Taking stuff out is unaffected for now, I'll see what I can do
2025-06-02 20:16:00 +03:00
abel1502
4b3430f9b1
Scrollwheel support for template folder 2025-06-02 18:50:20 +03:00
abel1502
640b0ae341
Merge remote-tracking branch 'upstream/master' into abel-misc-tweaks-2025-06 2025-06-02 18:40:37 +03:00
abel1502
4ae675aebc
Fix autocrafter output slot
This is the only case I found where a SlotPattern was supposed to support a stack size different from 1, but if there's any more, just add a `, true` to the end of the corresponsing slot constructor
2025-06-02 18:33:04 +03:00
Boblet
0c9bea7091 the selection 2025-06-02 16:58:59 +02:00
abel1502
5d7fc996e5
Make autosaw replant crops
It doesn't seem too far-fetched to suggest the seeds that fall to the ground are replanted in a natural way.

I had to replace the old ray-tracing approach with a more straightforward iteration over all possibly affected blocks (under 400, most of them skipped). In terms of performance this seems on par with the original solution (the raytrace function alone did 200 iterations).
2025-06-02 14:32:30 +03:00
HbmMods
e9b809d9dc
Merge pull request #2192 from MellowArpeggiation/sync-recipes
fix interaction max distance issue with detailed hitboxes
2025-06-02 08:21:20 +02:00
HbmMods
015ff7e5c1
Merge pull request #2189 from mlbv/1.7.10
DDA cleanup
2025-06-02 08:20:47 +02:00
George Paton
5501380d15 fix interaction max distance preventing interacting with detailed BlockDummyable hitboxes 2025-06-02 10:15:39 +10:00
abel1502
4a931a4be1
Remove angry metal drop
Considerting it is no longer used anywhere (Eye of Harmony doesn't count since the AMS is long deprecated), it felt weird to still get it 10% of the time
2025-06-02 01:04:21 +03:00
abel1502
2d33e90f93
Allow climbing freestanding chains and vines using spacebar 2025-06-02 01:00:11 +03:00
abel1502
afa0418104
Make strand caster timeout refresh on pour
Previously, if a caster has been idle for a while, the first time something is poured into it, it would spew out a partial load almost immediately. The original intention behind the timeout was instead to make the strand caster perform incomplete operations if no new material has been poured for a while. This change makes the behaviour closer to intended. Most of the time, persistent use of the caster would consistently reach full fill, and incomplete fill will only be processed at the end.
2025-06-02 00:15:36 +03:00
abel1502
8d7664f728
Integrate stack size logic directly into SlotPattern 2025-06-02 00:15:30 +03:00
abel1502
d890443150
Make wooden scaffold climbable 2025-06-02 00:14:29 +03:00
Bob
169e9c0879 lost in the sauce 2025-06-01 17:10:57 +02:00
Bob
0a1822ff10 my balls are heavy 2025-06-01 16:45:19 +02:00
Bob
0be198d21f in a rush 2025-05-31 18:04:16 +02:00
mlbv
70cd3d4071 DDA cleanup 2025-05-31 04:08:15 +08:00
HbmMods
891d4d869d
Merge pull request #2188 from MellowArpeggiation/sync-recipes
Automatic custom recipe sync for servers
2025-05-30 11:30:19 +02:00
George Paton
e6b84bd6d3 fix guard on checkNBT 2025-05-30 09:54:39 +10:00
George Paton
87a1c01fe7 disable recipe sync by default, can be enabled by server operators 2025-05-30 09:53:46 +10:00
HbmMods
95f3bcb1f5
Merge pull request #2180 from abel1502/abel-geiger-redstone
Geiger counter comparator integration
2025-05-29 18:11:25 +02:00
HbmMods
282326d3c4
Merge pull request #2183 from arantirnecrolord/master
add ukrainian translation
2025-05-29 18:10:46 +02:00
HbmMods
0c0c9d02d7
Merge pull request #2185 from Kirby7871/master
New OC functions for radar, launch pad and turrets.
2025-05-29 18:10:31 +02:00
Bob
a57e538479 go go gadget: 5 cups of coffee 2025-05-29 18:09:00 +02:00
Kirby7871
4f975293a5
Update TileEntityTurretBaseNT.java
Fixed Comma typo
2025-05-29 02:37:27 +02:00
Kirby7871
d01f54d1ba
Update TileEntityMachineRadarNT.java
Fixed a comma typo
2025-05-29 02:36:36 +02:00
Kirby7871
3a8e0048a3
Update TileEntityMachineRadarNT.java
Added an OpenComputers function, getPos().
It retuns the position of this radar.
2025-05-29 02:12:39 +02:00
Kirby7871
65f1866e8c
Update TileEntityTurretBaseNT.java
Added an OpenComputers function, getPos().
It returns the (x,y,z) coordinates of the turret in question
2025-05-29 02:06:40 +02:00
Kirby7871
087be46083
Update TileEntityLaunchPadBase.java
Added another OC (OpenComputers) function, getPos().
It returns the position of the launch pad. (x,y,z)
2025-05-29 02:01:39 +02:00
Boblet
9ff55acccf destroy tickets when we aren't using them 2025-05-28 16:56:21 +02:00
arantirnecrolord
381febd64e
Update UA 2025-05-28 16:00:43 +03:00
arantirnecrolord
30be3d5fa7
Add files via upload 2025-05-28 15:45:28 +03:00
arantirnecrolord
60f64f33f2
add translation 2025-05-28 00:28:06 +03:00
Boblet
acbea88eca now we're thinking with portals 2025-05-26 16:21:59 +02:00
abel1502
ac46cdf1ad
Fix comparator output 2025-05-26 15:18:37 +03:00
abel1502
8f2a858f52
Geiger counter comparator output 2025-05-26 14:53:07 +03:00
HbmMods
b00e3b9efb
Merge pull request #2178 from abel1502/abel-fix-2177
Fix #2177
2025-05-26 11:30:36 +02:00
abel1502
00c73d63c0
Fix #2177
The original hotfix is no longer necessary, as all remaning calls to getFullName are fully client-side
2025-05-26 12:16:20 +03:00
Boblet
38c6b4691d drooling baby safeguard 2025-05-26 10:46:22 +02:00
Boblet
e347aa4346 it's like mopping up 5 gallons of vomit 2025-05-26 10:05:03 +02:00
George Paton
7d6289b228 fix dummy blocks with detailed hitboxes not using them for clicks (interaction/breaking) 2025-05-26 10:12:46 +10:00
Bob
ce99e65b0b the spoingus 2025-05-25 22:12:33 +02:00
HbmMods
73406b4dae
Merge pull request #2167 from mlbv/1.7.10
Parallelized ray explosion
2025-05-24 14:07:22 +02:00
mlbv
1a5fda1847 Feat: accumulatedDestruction 2025-05-24 09:00:15 +08:00
mlbv
9d3860df64 Fix: Make generateSphereRays run asynchronously 2025-05-23 21:47:03 +08:00
HbmMods
630654ded7
Merge pull request #2169 from Nycticoraxnightheron/master
zh_CN update
2025-05-23 13:41:16 +02:00
Boblet
148ba19721 deploy surface-to-yellow-one missile 2025-05-23 13:40:48 +02:00
mlbv
ea430afe71 Fix: Make crate look normal 2025-05-23 19:40:45 +08:00
Justnightheron
ed59ba69f3
AUV您吉祥 2025-05-23 16:45:24 +08:00
HbmMods
4fc41c631d
Merge pull request #2168 from abel1502/abel-strand-caster-fix
Strand caster fix
2025-05-23 08:12:46 +02:00
HbmMods
051938a3cd
Merge pull request #2165 from abel1502/abel-conv-ejector-fix
Fix interaction between conveyor ejector and conveyor splitter
2025-05-23 08:10:48 +02:00
George Paton
933ecded5d send recipe JSON to all clients connecting to a server (does nothing in singleplayer, can be disabled via config) 2025-05-23 13:16:08 +10:00
abel1502
41189e5f25
I fixed it so good it stopped working
But now it does again. I'm just silly like that sometimes
2025-05-23 01:42:12 +03:00
abel1502
d3e839a9bb
Don't modify the out stack
Just in case, IDK
2025-05-23 01:08:27 +03:00
abel1502
81ca498fa8
Fix strand caster 2: electric boogaloo
Like, only cast if there is anything to cast, duh
2025-05-23 00:57:21 +03:00
abel1502
93638c3889
Fix strand caster
Also refactor it in the process, for good measure
2025-05-23 00:40:45 +03:00
Bob
6a7dabbb1e the malicious gigglefish from the silly dimension 2025-05-22 21:45:18 +02:00
mlbv
9bb9a56452 Fix: setDead() now correctly calls cancel() 2025-05-23 01:47:29 +08:00
mlbv
bf2a4b776f feat: parallelized explosion calculation
and is configurable
2025-05-23 01:01:34 +08:00
abel1502
f3a88b6afb
Apply fix to buffered items 2025-05-22 19:15:58 +03:00
abel1502
953d120fc6
Fix direction 2025-05-22 19:06:24 +03:00
abel1502
3a6f890774
Fix dupe 2025-05-22 18:51:54 +03:00
abel1502
dc66e5ac04
Conveyor ejector & splitter compat
Previously, an ejector ejecting directly into a splitter bypassed the splitting
2025-05-22 18:51:46 +03:00
Boblet
d19894fa3d kasane's titos 2025-05-22 16:36:17 +02:00
HbmMods
a47aa63d21
Merge pull request #2162 from MellowArpeggiation/master
screwdriver adjustable conveyor splitters
2025-05-22 08:06:43 +02:00
George Paton
e5cfc9cf2b add screwdriver info 2025-05-22 12:56:22 +10:00
George Paton
5459920b9c ensure pre-existing splitters initialise ratios 2025-05-22 12:51:34 +10:00
George Paton
b4ae72513b screwdriver adjustable conveyor splitters 2025-05-22 12:28:40 +10:00
Boblet
716e429772 the rim flappe on a bongfish 2025-05-21 16:29:18 +02:00
HbmMods
411d73ff9b
Merge pull request #2152 from abel1502/abel-abilities
Tool abilities GUI
2025-05-21 13:39:14 +02:00
HbmMods
e628976969
Merge pull request #2153 from Toshayo/rbmk-console-view-rotation
Added rbmk console view rotation support
2025-05-21 13:38:01 +02:00
abel1502
527459b92c
Add some null safety
In my survival playthrough, I got a crash when
a tool with AOE broke mid-operation.
This should fix it
2025-05-21 00:57:20 +03:00
abel1502
df1ee57563
Merge remote-tracking branch 'upstream/master' into abel-abilities
@HbmMods please, every commit you make is a merge conflict
2025-05-20 22:02:53 +03:00
Bob
b48b536834 thank you doctor, no more nose blood 2025-05-20 20:01:36 +02:00
Boblet
ce8099d4aa the sloplands 2025-05-20 15:55:27 +02:00
HbmMods
f73fa37659
Merge pull request #2159 from Nycticoraxnightheron/master
zh_CN update
2025-05-20 09:48:33 +02:00
HbmMods
c7f570706d
Merge pull request #2158 from MellowArpeggiation/master
the five hundredth crate dupe fix
2025-05-20 09:48:25 +02:00
Justnightheron
a8829245f4
juice 2025-05-20 14:08:40 +08:00
George Paton
4baf5e7c67 don't open conveyor sorter GUI when placing conveyors 2025-05-20 14:26:14 +10:00
George Paton
4f8c102b68 All dupes fixed and _verified_ 2025-05-20 14:21:56 +10:00
abel1502
b55d66ecac
Merge branch 'master' into abel-abilities 2025-05-19 23:16:22 +03:00
Bob
5cf209e2c1 guh 2025-05-19 21:30:25 +02:00
HbmMods
c49bbab8c9
Merge pull request #2154 from 7pheonix/master
I'm not even sure how i managed to break that
2025-05-19 16:12:40 +02:00
Boblet
9085dc5f0c 🅱️alls 2025-05-19 16:12:10 +02:00
pheo
fa25d17a45 fixed shading and green lightning in the breeder
my tummy hurt
2025-05-18 22:16:59 +01:00
abel1502
3f106f01e2
Merge branch 'master' into abel-abilities 2025-05-18 22:56:20 +03:00
Bob
345fe2ef06 i have a headache 2025-05-18 21:37:41 +02:00
Bob
ef5059a9a6 playing DOOM on my gucci smart toilet 2025-05-18 21:24:19 +02:00
Toshayo
bbc27820f1
Added rbmk console view rotation support 2025-05-18 21:20:52 +02:00
abel1502
de8b888f3e
Fix credits
Still not sure what happened, but if it was supposed
to be an æ and not a replacement char,
I can just type it by hand
2025-05-18 21:27:58 +03:00
abel1502
2c48bcb782
Minor fix
I realized I forgot to tweak this when adding
the reset button
2025-05-18 20:44:14 +03:00
abel1502
afb0c67090
Silly 2025-05-18 20:23:22 +03:00
abel1502
b85e4d2835
Fix ability listing for ability-less tools
Also I realized I don't need a linked hash map
now that I sort everything manually.
2025-05-18 20:16:03 +03:00
abel1502
4728e3c6ba
Fix visual glitch with harvest abilities 2025-05-18 16:16:58 +03:00
abel1502
aadb2d5f2a
Actually, I can refactor this to stay more true to the original 2025-05-18 15:45:44 +03:00
abel1502
25015a4f7a
Third time's the charm 2025-05-18 15:45:04 +03:00
abel1502
7c135c4a33
This time for sure 2025-05-18 15:11:54 +03:00
abel1502
92b9ab2369
Fix original block not being affected by ability 2025-05-18 14:57:54 +03:00
abel1502
05562018fc
Limit max presets 2025-05-18 14:38:21 +03:00
abel1502
c475e4f3d3
Clean up after cherry-picking
I originally did it in my local clone of NTM-Space,
and the cherry-picking seemingly carried along
a couple of features from there by accident
2025-05-18 14:25:52 +03:00
abel1502
29e69b9c49
Pat myself on the back 2025-05-18 14:19:22 +03:00
abel1502
2497d628e5
Fix explosing incompatibility 2025-05-18 14:18:22 +03:00
abel1502
cc31edff44
Change item tooltip 2025-05-18 14:18:20 +03:00
abel1502
ce64270b2c
Sort abilities consistently 2025-05-18 14:18:16 +03:00
abel1502
e23cfab649
Make explosion incompatible with harvest abilities 2025-05-18 14:18:14 +03:00
abel1502
239454e23c
Fix stuff 2025-05-18 14:18:11 +03:00
abel1502
b79b499b21
Add backwards compatibility in tool NBT 2025-05-18 14:18:08 +03:00
abel1502
c190863785
Reimplement ItemToolAbility
I'll be very impressed if it works correctly right away. But, to my credit, it does compile
2025-05-18 14:18:04 +03:00
abel1502
634836c549
Switch weapon abilities to the new system 2025-05-18 14:11:33 +03:00
abel1502
f1184f8731
Add explicit "public" to interfaces 2025-05-18 14:11:09 +03:00
abel1502
e59f8b441d
Implement ability presets 2025-05-18 14:11:07 +03:00
abel1502
853b6576ad
Rewrite weapon abilities 2025-05-18 14:11:05 +03:00
abel1502
0f22e34069
Add tooltip to gui 2025-05-18 14:11:04 +03:00
abel1502
61917ddc2f
Refactor GUIScreenToolAbility to support tooltips 2025-05-18 14:11:02 +03:00
abel1502
bf1e14c08f
Rewrite tool area abilities 2025-05-18 14:10:59 +03:00
abel1502
2982dd1f58
Begin ability refactor, rewrite tool harvest abilities 2025-05-18 14:10:37 +03:00
abel1502
caf416a27d
Tool ability selector frontend 2025-05-18 14:07:57 +03:00
HbmMods
3e35f0ac47
Merge pull request #2150 from Nycticoraxnightheron/master
zh_CN update
2025-05-16 14:47:54 +02:00
Boblet
f7baf332cb even more flixes 2025-05-16 14:46:12 +02:00
Night Heron
d360ebe6cc
Add files via upload 2025-05-15 23:14:21 +08:00
Boblet
9f758c49bc dud crap 2025-05-15 16:01:15 +02:00
Boblet
a43986603b more INDEX crap 2025-05-14 11:51:30 +02:00
Boblet
4ce7e396be doing absolutely nothing again 2025-05-13 16:25:39 +02:00
HbmMods
0c9fc86c12
Merge pull request #2143 from ackbarscrowbars/master
Small Scaffold Tweaks
2025-05-13 13:25:50 +02:00
HbmMods
58f8ba8f8c
Merge pull request #2144 from WushiThe/new3
prototype remodel
2025-05-13 13:25:29 +02:00
HbmMods
5d9ef5ae67
Merge pull request #2148 from 7H40/patch-1
Update ru_RU.lang
2025-05-13 13:24:57 +02:00
Bob
74992ede71 bop 2025-05-12 23:29:59 +02:00
LegendaryDoge30
273590a96b bombbs
added solinium bomb and changed the rendering because it was fucked up
2025-05-12 13:30:12 +02:00
Lazzzycat
e21b14b979
Merge branch 'HbmMods:master' into Radio-house 2025-05-11 19:46:30 +02:00
Lazzzycat
149e51288f
Merge branch 'HbmMods:master' into NTMRUINS1 2025-05-11 19:46:17 +02:00
Lazzzycat
14746a76b3
Merge branch 'HbmMods:master' into Forwetst 2025-05-11 19:46:00 +02:00
Lazzzycat
b95e9b6e80
Merge branch 'HbmMods:master' into forestchem 2025-05-11 19:45:39 +02:00
Lazzzycat
59df04d608
Merge branch 'HbmMods:master' into forestpost 2025-05-11 19:45:31 +02:00
Lazzzycatwastaken
f69a1d8876 AAAAAAAAAAAAAAAAAAAAAA 2025-05-11 16:49:47 +02:00
Lazzzycatwastaken
b485558e13 ☢☢☢☢☢☢☢☢☢☢☢ 2025-05-11 16:17:29 +02:00
7H40
6696f3b736 Update ru_RU.lang 2025-05-11 16:49:42 +03:00
Lazzzycatwastaken
791b4c7687 Top 5 easiest people to scam:
1. You
2. You
3. You
4. You
5. You
2025-05-11 15:36:52 +02:00
7H40
db0dbafe75
Update ru_RU.lang
tj_TJ.lang  --> ru_RU.lang
2025-05-11 06:17:38 +03:00
LegendaryDoge30
be84b21867 prototype
nina
2025-05-10 17:39:07 +02:00
HbmMods
763b6ec020
Merge pull request #2139 from Toshayo/opencomputers-steam-fluid-id-fix
Better steam turbine OpenComputers integration
2025-05-10 16:43:23 +02:00
HbmMods
6b65c79704
Merge pull request #2140 from Nycticoraxnightheron/master
zh_CN update
2025-05-10 16:42:23 +02:00
HbmMods
1ffe752ef6
Merge pull request #2142 from WushiThe/new2
ibm computer remodel
2025-05-10 16:42:05 +02:00
Bob
a1402daec2 charge thrower animations 2025-05-10 16:40:39 +02:00
ackbarscrowbars
2c68f3a57c
Rusted Scaffold Texture
Thought I'd just throw this in with the others, while I'm at it.
2025-05-09 18:06:55 -05:00
ackbarscrowbars
19c481c6d7
Yellow Scaffold Less Bright
While technically usable, the brightness was always just a little too contrasting when I tried using the yellow scaffold in builds. Apparently I'm not the only one, so might as well.
2025-05-09 17:20:13 -05:00
ackbarscrowbars
5b1121e0e4
Small Tweak to Steel Scaffold Texture
It had a dot that made the tiling look weird.
2025-05-09 17:17:35 -05:00
ackbarscrowbars
14eac38f3e
Fixed Scaffold UV + Cleaned Up Model
It had a bunch of erroneous sharps and extra vertices.
2025-05-09 17:14:30 -05:00
LegendaryDoge30
f3a9c0f787 puter 2025-05-10 00:12:33 +02:00
Lazzzycatwastaken
1eecfbca85 whos getting the best head:
A. Alvin
B. Theodore
C. Simon
(Secret option) Me
2025-05-09 19:38:11 +02:00
Night Heron
805ee3a998
cumming 2025-05-09 23:30:40 +08:00
Toshayo
15fb0c1ad7
Improved steam turbine OpenComputers integration + documented 2025-05-09 16:35:36 +02:00
Toshayo
be2edd87d8
Fixed wrong tank type. getInfo returns input tank type and setType also works with input tank type 2025-05-09 16:18:41 +02:00
Toshayo
03c5466c0e
Fixed id mismatch in steam turbine OpenComputers integration 2025-05-09 16:18:41 +02:00
HbmMods
20b46c3884
Merge pull request #2137 from abel1502/abel-veinminer
Make veinminer follow diagonals
2025-05-09 14:54:58 +02:00
Boblet
17de40d7b2 kill all zebras 2025-05-09 14:52:10 +02:00
Bob
21088af66f i cast: delete everything in that general direction 2025-05-08 23:10:21 +02:00
Boblet
71998aca41 bobms 2025-05-08 16:58:05 +02:00
abel1502
0d141f56b1
Fix import 2025-05-08 15:09:31 +03:00
abel1502
7d1a164bf7
Make veinminer follow diagonals 2025-05-08 15:07:16 +03:00
Bob
ca9b9f7b6c why do they call it the oven when you of in the cold food out hot eat th 2025-05-07 22:40:56 +02:00
Boblet
d8d3263493 grungus 2025-05-07 16:49:00 +02:00
Lazzzycatwastaken
22aefff48d get to work on the mob spawners bugboy 2025-05-06 23:18:28 +02:00
Bob
58166fda33 comical amounts of explosives 2025-05-06 21:55:11 +02:00
Boblet
b508f2f534 trench warfare special 2025-05-06 16:42:11 +02:00
Bob
af8cc78ad5 go go gadget 15 kilos of high explosive 2025-05-05 22:44:21 +02:00
Boblet
d4a25205a7 what the fuck - is happening - in this world of pure imagination 2025-05-05 16:29:31 +02:00
Bob
82d3523ea1 i have achieved stability (ability to stab) 2025-05-04 22:55:00 +02:00
Bob
dbbe55a990 RTTY control 2025-05-03 17:54:31 +02:00
HbmMods
0ab4f215b1
Merge pull request #2126 from MellowArpeggiation/master
NBT Structure fixes
2025-05-02 14:38:28 +02:00
Boblet
01df6f20c2 "music neva stops, no" - hatsune miku 2025-05-02 11:40:07 +02:00
George Paton
11d4412b83 fix NBT structure rotations for pipes
guard against funky generation bugs
fix missing cherenkov radiation visuals
2025-05-02 11:31:26 +10:00
HbmMods
4b5d9664bf
Merge pull request #2125 from Nycticoraxnightheron/master
zh_CN update
2025-05-01 21:46:14 +02:00
Bob
3cd9fc7b7c INDEX reader 2025-05-01 21:45:46 +02:00
Night Heron
82d6c0a923
Inside the Cable Temple 2025-05-02 00:14:50 +08:00
Bob
0685f231fe post merge cleanup 2025-05-01 11:43:47 +02:00
HbmMods
13b862d14e
Merge pull request #2120 from 7pheonix/master
Tinted Vegetation
2025-05-01 11:42:30 +02:00
pheo
592d52270c Merge remote-tracking branch 'origin/master' into pheo-tinted-veg-test 2025-05-01 10:41:28 +01:00
pheo
395acea899 now you're thinking with OOP 2025-05-01 10:41:21 +01:00
pheo
6b6c9635a3
Merge branch 'master' into master 2025-05-01 10:15:52 +01:00
Bob
edc870dff1 the ammo belt is shaped like an infinity symbol 2025-05-01 10:46:36 +02:00
pheo
64d3cdcf78
Update changelog 2025-04-30 15:38:58 +01:00
pheo
0aeeda9113 Merge remote-tracking branch 'origin/master' into pheo-tinted-veg-test 2025-04-30 15:35:54 +01:00
pheo
f0db8853e6 Minor Cleanup 2025-04-30 15:35:34 +01:00
pheo
c2a2a99a80
Merge branch 'HbmMods:master' into master 2025-04-30 15:31:29 +01:00
Boblet
c636632dc3 flamethrower improvements, 12 gauge flechette fix 2025-04-30 16:18:37 +02:00
Boblet
4fd4aa819b crate dupe fix(?) 2025-04-30 12:43:36 +02:00
pheo
f74b5a337c
Merge branch 'HbmMods:master' into master 2025-04-29 22:01:48 +01:00
pheo
152de687f2 terrible hacks, part 2 2025-04-29 21:57:53 +01:00
Bob
e518ef48c9 good monring and good night 2025-04-29 21:46:10 +02:00
HbmMods
f7659acde1
Merge pull request #2113 from Lazzzycatwastaken/dsss
full set zombie balance
2025-04-29 08:00:14 +02:00
pheo
108b581df2 tinted vegetation 2025-04-28 23:05:59 +01:00
Boblet
30f41fe1b0 sat dock fix, AP&DU nerf 2025-04-28 16:46:52 +02:00
Bob
f42b4b3dd4 nothing some booze and some paracetamol and jacking off and killing myse
lf can't fix
2025-04-27 21:52:30 +02:00
Lazzzycatwastaken
f1ad376a5d dsads 2025-04-27 20:24:21 +02:00
Lazzzycatwastaken
29979ab319 Welcome to balancing academy! are you ready to begin learning?
Lazzzycat: *gulps*
alc: *shakes head*
Yes 7 they say in unison
2025-04-27 20:13:31 +02:00
Boblet
13741930ca more crap 2025-04-25 15:07:49 +02:00
HbmMods
c1d3aad937
Merge pull request #2106 from archiecarrot123/master
Reduce calls to System.currentTimeMillis
2025-04-25 10:10:34 +02:00
Archie Halliwell
f45cffd9ce copy muffintime's changes 2025-04-25 13:58:10 +10:00
Archie Halliwell
1fbb8fafb9 reduce calls to System.currentTimeMillis 2025-04-25 13:49:50 +10:00
Bob
96a7058f38 pew pew 2025-04-24 22:26:58 +02:00
Boblet
91e98a9013 some cleanup 2025-04-23 16:39:42 +02:00
Boblet
89f4da4ab4 pew pew 2025-04-22 16:28:53 +02:00
HbmMods
334cffe04e
Merge pull request #2099 from Lazzzycatwastaken/structur
fix for Ticking entity crash when spawning skeletors with guns
2025-04-22 08:21:28 +02:00
Lazzzycatwastaken
28d3664781 everybody gets a gun 2025-04-21 23:04:04 +02:00
HbmMods
312162734b
Merge pull request #2095 from Lazzzycatwastaken/structur
MORE ARMOR FOR ZOMBINE!!!
2025-04-21 17:39:57 +02:00
HbmMods
31dc235dc1
Merge pull request #2098 from Dash1269/ntmain-accelerator-tweaks
PA Dipole tweaks and particle serialisation
2025-04-21 17:37:53 +02:00
Bob
39c8a6711b 3 BIG SHOTS FROM [KITCHEN GUN] 2025-04-21 17:34:18 +02:00
Dosh
64b2525e04
serialise PASource particle to nbt 2025-04-21 23:57:07 +10:00
Dosh
e1dd8c80b4
ignore dipole coil penalties unless redirecting particle 2025-04-21 22:09:34 +10:00
Lazzzycatwastaken
03a6af791f what 2025-04-20 18:20:09 +02:00
Lazzzycatwastaken
0907997bec 1.1k elo boosted twisted - puppet mage gets mled to death by my 112 yo 430 hp deto katana. 2025-04-20 15:46:36 +02:00
Lazzzycatwastaken
1fa4dca870 Joe: YEAH, ARE YOU READY TEAM JOE?
Joe: We're gonna become the BEST detectives!
Quagmire: Giggity, let's do this!
Peter: All Right!
2025-04-20 14:48:05 +02:00
Dosh
2b37164ed6
automatic formatting 2025-04-20 18:20:13 +10:00
Bob
9ba8f797dc post merge cleanup 2025-04-19 17:59:14 +02:00
HbmMods
89377e9164
Merge pull request #2080 from WushiThe/new
geiger
2025-04-19 17:49:19 +02:00
HbmMods
cacf041cab
Merge pull request #2069 from Lazzzycatwastaken/conccoloredcrack
replacing sloppium structure
2025-04-19 17:47:59 +02:00
HbmMods
dc6faed2d9
Merge branch 'master' into conccoloredcrack 2025-04-19 17:47:07 +02:00
HbmMods
031c78b80e
Merge pull request #2084 from Lazzzycatwastaken/structur
Sloppelite structrute
2025-04-19 17:45:17 +02:00
HbmMods
0213916a42
Merge pull request #2088 from Darek505/Rotation-fixes
Fix armor arm offset
2025-04-19 17:44:08 +02:00
Bob
d9498cb2dc augh 2025-04-19 17:43:49 +02:00
Darek505
8221615898 Fix armor arm offset 2025-04-19 14:15:57 +03:00
Lazzzycatwastaken
0b0c5bc043 i forgot to change the loot amount so that it doesnt put 239013129 items into the crate 2025-04-18 19:48:47 +02:00
Lazzzycatwastaken
416ae78c6a PlaymakerJd struggles during Cuhlouts popcorn reading stream 2025-04-18 19:41:41 +02:00
Boblet
5372884c50 i spilled my tomato sauce 2025-04-18 14:40:18 +02:00
LegendaryDoge30
ef2fba2a52 geiger
counter
2025-04-18 13:59:39 +02:00
Boblet
78089b2265 yesterday's shit buffet 2025-04-18 07:49:30 +02:00
Bob
eeefb0e4eb trenchie: the return 2025-04-17 21:11:17 +02:00
Boblet
c6966aa7dc biome test 2025-04-16 16:49:47 +02:00
Boblet
1193b0f51f spring cleaning 2025-04-15 16:28:06 +02:00
HbmMods
1533a43e19
Merge pull request #2073 from MellowArpeggiation/master
Only delete connected conveyors, and only when crouching
2025-04-15 08:01:42 +02:00
George Paton
0338c6a8fd only delete connected conveyors, and only when crouching 2025-04-15 13:57:33 +10:00
Lazzzycatwastaken
7e81a7b5c2 github bent me over and fucked me in every hole now i need therapy 2025-04-14 22:13:14 +02:00
Boblet
6d67a31dff become one with the cicadas. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2025-04-14 16:49:36 +02:00
Lazzzycatwastaken
edc701e129 the devil couldnt reach me so he made me implement shitty code and then remove it and end up not implementing shit 2025-04-13 17:49:19 +02:00
Lazzzycatwastaken
fe52d7aed1 think of the lamest dude u know ... he listen to 2hollis don't he 2025-04-13 17:43:24 +02:00
Lazzzycatwastaken
0cc70760ab Imagine being an artic fox
You could run up on the opps in da snow
Id probably miss human things like fortnite and geek bars
But I'd prolly be tuff ngl
2025-04-13 17:39:58 +02:00
Bob
975b7ff722 mh 2025-04-13 15:59:50 +02:00
Lazzzycatwastaken
c6cd707894 you're not bricked up right now while you read this,
you have serious issue, you're on social media, bro, every 10 seconds you swipe,
you see the baddest girl on the planet, and you're sitting here soft,
oh lazy, but it would be weird if i was bricked while watching you talk,
how was that weird, is it weird to have high testosterone levels?
you need savor before it's too late bro, it might be your only shot.
2025-04-13 15:23:05 +02:00
Bob
3d0b8f0fec top 5 videos, starring top 5 videos 2025-04-13 14:27:27 +02:00
Lazzzycat
fb8e3b522f
Merge branch 'HbmMods:master' into zg 2025-04-13 05:02:35 -07:00
Bob
624bb35b72 sure, why not 2025-04-12 16:37:40 +02:00
HbmMods
d3e29bf5da
Merge pull request #2062 from Nycticoraxnightheron/master
Still an update for zh_CN
2025-04-11 20:05:30 +02:00
Night Heron
abc58c1dc2
Munburger is another mooncake 2025-04-12 01:47:30 +08:00
Night Heron
36c56501bd
Merge branch 'HbmMods:master' into master 2025-04-12 01:31:51 +08:00
Bob
1f6d4bf55b the part i forgot to push 2025-04-11 19:26:33 +02:00
Night Heron
985966d8a1
Merge branch 'HbmMods:master' into master 2025-04-12 01:24:25 +08:00
tuffpad
0c25ba0c1c im at tmobile currently and cant check whether this even fucking works so thats great 2025-04-11 15:28:56 +02:00
tuffpad
12c54d66e7 im at tmobile currently and cant check whether this even fucking works so thats great 2025-04-11 15:28:35 +02:00
Boblet
16f9c4ad16 more JSON tomfuckery 2025-04-11 13:17:56 +02:00
Night Heron
3be4d9a6bc
SALMIAKKI😋 2025-04-11 01:38:47 +08:00
Night Heron
0cb6d3530f
Merge branch 'HbmMods:master' into master 2025-04-11 01:24:41 +08:00
Boblet
345d6e8710 this machine can suck all day long 2025-04-10 16:41:31 +02:00
Bob
f5456e54b3 competitive hog cranking 2025-04-09 21:32:15 +02:00
Boblet
7b3e3284b3 it's like elonmusk hype tube except it's the exact opposite and it works 2025-04-09 16:54:37 +02:00
Boblet
98bc692d29 this is the last fucking refactor PR 2025-04-09 11:53:16 +02:00
Boblet
1282e525da bocci the cock 2025-04-08 16:37:39 +02:00
Boblet
4c501d209f we don't need a new action every 3 microseconds 2025-04-08 10:34:24 +02:00
Boblet
7a49ec2cae what are you doing in here? 2025-04-08 08:12:41 +02:00
Bob
955a349793 pfft 2025-04-07 23:09:09 +02:00
Boblet
fb19e4d93f everybody do the yoinky splinky 2025-04-07 16:53:08 +02:00
HbmMods
097907820b
Merge pull request #2052 from Lazzzycatwastaken/zg
Naval mine updat
2025-04-06 23:00:46 +02:00
HbmMods
e6bd1fef4a
Merge pull request #2048 from Lazzzycatwastaken/ttttt
RT gaynator new ui
2025-04-06 22:59:09 +02:00
Lazzzycatwastaken
5d3860a4f6 Texas just banned furries in schools. This was to make sure kids don't have fun. But you know what Texas won't ban? Being able to carry an AR-15 wherever you go. I love America, because furry suit sales will now decline and instead kids will turn to using firearms. Do you know what this means? We're going to be needing more bullets, which means the copper trade is going to skyrocket. This means you as a Mesopotamian copper merchant could make a lot of profit. 2025-04-06 16:10:14 +02:00
Lazzzycatwastaken
574c4f1ca2 Top 5 people i'd scam out of all their money:
1. You
2. You
3. You
4. You
5. You
2025-04-05 23:47:16 +02:00
Night Heron
c2d33ba043
Delete zh_CN.lang 2025-04-06 04:49:50 +08:00
Lazzzycatwastaken
8c6f2150fd SAD-slime ahh dih 👌
PAD-P.Diddy ahh dih 💀
RAD-radioactive ahh dih ☢
DAD-Doofenshmirtz ahh dih 🎩
GAD-gurt ahh dih 🍦
VAD-veiny ahh dih 🍇
UAD-united arab emirates 🇦🇪
CAD-creative ahh dih 🧠
2025-04-05 19:02:44 +02:00
Lazzzycat
da9b0750f7
Merge branch 'HbmMods:master' into ttttt 2025-04-05 18:33:31 +02:00
Lazzzycatwastaken
2d5ddd049d SAD-slime ahh dih 👌
PAD-P.Diddy ahh dih 💀
RAD-radioactive ahh dih ☢
DAD-Doofenshmirtz ahh dih 🎩
GAD-gurt ahh dih 🍦
VAD-veiny ahh dih 🍇
UAD-united arab emirates 🇦🇪
CAD-creative ahh dih 🧠
2025-04-05 18:33:06 +02:00
HbmMods
61c22602a4
Merge pull request #2040 from Nycticoraxnightheron/master
zh_CN update
2025-04-05 11:51:06 +02:00
Boblet
e23636044a moderate amounts of tomfoolery 2025-04-04 15:04:00 +02:00
Bob
c8ebf180ab WHERE TUBE 2025-04-03 21:51:56 +02:00
Boblet
8ed0411a27 baby steps 2025-04-03 16:51:31 +02:00
Boblet
a0b593a93e yeah whatever 2025-04-02 17:01:50 +02:00
Night Heron
63a68cf9ea
Qinhuangdao 2025-04-02 21:16:03 +08:00
HbmMods
532e27bf0a
Merge pull request #2038 from ackbarscrowbars/ackbarscrowbars-blehg-1
Laser Pistol Model & Textures
2025-04-02 09:41:21 +02:00
HbmMods
4aa7d195c0
Merge pull request #2036 from EverMine/master
Models refactoring, bugfixes
2025-04-02 09:40:58 +02:00
Bob
b9047ac593 yeah so what 2025-04-01 22:32:49 +02:00
IOcmet
484ff585d1
I forgot to make it static 2025-04-01 20:37:23 +03:00
ackbarscrowbars
79cace83b3
Add files via upload 2025-04-01 12:05:07 -05:00
ackbarscrowbars
445da9b38e
Add files via upload 2025-04-01 12:00:34 -05:00
HbmMods
6aad688485
Merge pull request #2037 from WushiThe/fleijaa
Fleija remodel
2025-04-01 16:57:41 +02:00
Boblet
e2b3b480c1 creekflow crashing its mercedes into a mcdonalds 2025-04-01 16:50:55 +02:00
LegendaryDoge30
85d29fc326 gone
i removed that
2025-04-01 13:00:10 +02:00
LegendaryDoge30
8d39fb7174 uhhh
why did they move around
2025-04-01 12:13:16 +02:00
LegendaryDoge30
9f86ef1980 fleija
fleija remodel
2025-04-01 12:09:31 +02:00
ItsMakar
bfede6d87b Refactor models, fix ModelArmorBase compatibility with SkinPort and Galacticraft 2025-04-01 13:06:57 +03:00
HbmMods
7fe7960dba
Merge pull request #2035 from Vaern/texture-test
added lightstone, variants, recipes, stairs, slabs
2025-03-31 22:22:21 +02:00
Vaern
c629b1e79b added lightstone, variants, recipes, stairs, slabs 2025-03-31 11:48:56 -07:00
HbmMods
df88ed481b
Merge pull request #2034 from WushiThe/naval-mine-test
smooth naval mine
2025-03-31 16:23:18 +02:00
Boblet
917ccb871c andrew tolvern is dead 2025-03-31 16:22:16 +02:00
LegendaryDoge30
f6d2ff3f5a smooth ball
made the shading on the naval mine smooth
2025-03-31 13:22:13 +02:00
HbmMods
26dcc1730d
Merge pull request #2033 from MellowArpeggiation/conveyor-upstream
Conveyor Mayhem
2025-03-31 11:31:47 +02:00
George Paton
f465758bfd whoops that was meant to be _client side_ 2025-03-31 18:27:25 +11:00
George Paton
4a0ac6e95f how the hell did this get indented like that 2025-03-31 18:20:13 +11:00
George Paton
e02142d255 new conveyor wand item that masquerades as a conveyor block, performing autoplacement! (from downstream spacefork) 2025-03-31 18:19:34 +11:00
HbmMods
54d2314496
Merge pull request #2031 from Lazzzycatwastaken/AAAAAAAAAAAAAAA
im mining my naval
2025-03-31 08:24:44 +02:00
HbmMods
c1e5ae5c30
Merge pull request #2032 from Millymilo00/master
Add OpenComputers support for the Coker
2025-03-31 08:03:22 +02:00
HbmMods
f43cf194cd
Merge pull request #2022 from BallOfEnergy1/Optimization
Toolbox Flixes!
2025-03-31 08:01:00 +02:00
Milo
32d3b6722f the commit 2025-03-30 19:54:23 -06:00
Bob
3323356c73 waser wifle 2025-03-30 23:08:05 +02:00
BallOfEnergy
12af0abed9 random fuckin fix
apparently this fixes all those `ntm_null` component issues
2025-03-30 14:51:20 -05:00
Lazzzycatwastaken
5c9f6962e2 -=*######*==
-########################=
                     =################################+
                  *######################################*
                ############################################
             -################################################=
            ####################################################
          ########################################################
         ############################*=############################
        ###########################...-..###########################+
      *###########################......##*#=########################+
     =#################################:....##########################+
     #####....=+....##.......+#.....##-..##..###.....####........######
    #######..-###..####.=#..*###...##..*####:..##...######..-####-######
   -########..###:..##*.##..*###...#...######...#...######..-###########+
   #########*..##...##.*##.........#...######...#...######......#########
   ##########..=..#..-.###..*###...#...######..:#...######..-############
  +###########...##...####..*###...##...####...##...###:##..-####.#######*
  #############.*###.:###....=#.....###.....:###........#........-########
  ########################################################################
  ############......###*......-##+...:##:..+####..#####....=...###########
  *##########*..######...####=..##-..####.:####....#####..####...#########
   ###########*...*###..######..+#-..####.:####.#..#####..####+..########+
   ##############...##..######..+#-..####.:###.***..####..####+..########
   *#########=####*..#..-####+..##+..####.+##-.###..-###..####..:########
    #########*......###*..##..-####.......##:..###....#....-...##=-#####
    =####################....-#.=######################################=
     *######################*:-########################################
      ###############-*###:-##.#++#+..:#.##.#.*#.##:##...#############
       ##############-*###..##.#++*:##+#.--.#.*#.-*:#.##=############
        *#############**#*##*##*####**##*##*####*#####**###########*
          ########################################################
           *#####################################################
             ##################################################
               ##############################################
                 =########################################=
                    +##################################*
                        +##########################+
                              ################
2025-03-30 19:44:48 +02:00
Lazzzycatwastaken
1ecbc015a3 le ponge die bob
new rust steel deco block (no more shittium recolor)
updated carrier to use it
naval mine model and texture swapped to legendarydoge30's
new effects for naval mine explosion (out of water and in water both have different effects)
crafting recipies added for all new things
dos uno
2025-03-30 19:00:30 +02:00
Lazzzycatwastaken
1b53215e61 i fucking forgot to remove this so ig 🌈 2025-03-30 00:42:02 +01:00
Lazzzycatwastaken
7e54c5478b Merge remote-tracking branch 'origin/AAAAAAAAAAAAAAA' into AAAAAAAAAAAAAAA 2025-03-30 00:36:18 +01:00
Lazzzycatwastaken
00f98ac456 Jamesh_2 Today at 22:03
Strapons work
ughhfhfd
2025-03-30 00:35:29 +01:00
BallOfEnergy
aaff6b9b70 Dupe fix!!! 2025-03-28 19:50:27 -05:00
BallOfEnergy
fa6d2a4e56 Fix rare crash related to toolboxing with a null NBT.
Fix toolboxes not popping when swapping hotbars, even when >6KB limit.
2025-03-28 18:31:31 -05:00
BallOfEnergy
b1a778c949 Merge remote-tracking branch 'upstream/master' into Optimization 2025-03-28 18:06:33 -05:00
Boblet
6ae779cb23 it's not rocket science 2025-03-28 14:34:31 +01:00
HbmMods
b1f4dfd984
Merge pull request #2021 from MellowArpeggiation/rbmk-crafting
Full RBMK crafting chains
2025-03-28 09:44:54 +01:00
HbmMods
77ca4e5c77
Merge pull request #2018 from Voxelstice/rbmk-console-xenon-bar
RBMK console fuel rod xenon bar
2025-03-28 09:43:41 +01:00
George Paton
fe2dddec3b bonus: fix cascading worldgen lag on depth deposits 2025-03-28 19:10:12 +11:00
BallOfEnergy
e9376c788c oh i kinda want this changed
one less warning lmao
2025-03-27 21:17:16 -05:00
BallOfEnergy
e79eae78a7 am I stupid?
Fix a few issues related to naming.
Fix toolboxes blocking all radiation.
Add toolbox tooltip.
Swap toolbox operations; clicking now swaps hotbars and shift-clicking opens the inventory for easier access (recommended by Mellow).
2025-03-27 21:16:29 -05:00
George Paton
2c4dc279b6 Merge branch 'master' into rbmk-crafting 2025-03-28 11:21:57 +11:00
Bob
f177c8899a i feel so shrigma 2025-03-27 22:12:19 +01:00
Voxelstice
9028ca87b0 Segmentation fault (core dumped)
makes the xenon bar on fuel rods work in the RBMK console
2025-03-27 18:43:21 +03:00
Boblet
f9f1e1c73e go go gadget: replace uterus with 30lb bowling ball 2025-03-27 16:02:35 +01:00
HbmMods
2d48960e2d
Merge pull request #2016 from WushiThe/contributing
1 single parenthesis
2025-03-27 08:28:33 +01:00
LegendaryDoge30
300f005de4 flux
added a single parenthesis to the thorium rbmk fuel flux function
2025-03-26 18:18:39 +01:00
Boblet
9943a73f2a groundbreaking changes 2025-03-26 16:53:07 +01:00
HbmMods
473bdd67c4
Merge pull request #2006 from Lazzzycatwastaken/AAAAAAAAAAAAAAA
Ocean structures
2025-03-26 09:37:27 +01:00
HbmMods
4e08e107a8
Merge pull request #2012 from MellowArpeggiation/master
More NBTStructure improvements from OUTER SPACE
2025-03-26 09:28:00 +01:00
HbmMods
088a640d8f
Merge pull request #2014 from Toshayo/master
Fixed crate item movement prevention applying to all held items
2025-03-26 09:25:16 +01:00
George Paton
86ce0f6509 if rod is hot, only show cooling recipe, if rod is cold, show only disassembly recipe 2025-03-26 11:50:35 +11:00
Toshayo
ca8a7a72f9
Fixed crate item movement prevention applying to all held items (let me move this coal powder) 2025-03-25 21:13:23 +01:00
Boblet
b90741f640 you've creeked your last flow, pardner 2025-03-25 15:48:29 +01:00
George Paton
a2f5eeada7 Add crafting recipes for RBMK fuel cooling, rod disassembly, and waste decaying 2025-03-25 16:42:00 +11:00
George Paton
20bd424cd4 fix rare crash when generating structures 2025-03-25 12:23:18 +11:00
George Paton
dfd5d2c2a6 They Came From OUTER SPACE 2025-03-25 10:29:21 +11:00
Lazzzycatwastaken
d625a9a9d9 Fixed doors on oil rig,
Fixed waterlogging on aircraft carrier
Balanced loot on aircraft carrier
Removed derrick from oil rig and made it a purely cosmetic build
removed asphalt from carrier because it made you 100x faster in water, and flung you across half the ocean.
2025-03-24 22:12:11 +01:00
Lazzzycat
375b4581e5
Merge branch 'HbmMods:master' into AAAAAAAAAAAAAAA 2025-03-24 20:53:31 +01:00
Lazzzycatwastaken
7731b4c1e8 Fixed boat deleting blocks under it or sum 2025-03-24 17:39:11 +01:00
Boblet
79d3b0cbb7 the infinite agony generator 2025-03-24 16:01:13 +01:00
Boblet
7146e20fb3 f u c k 2025-03-24 10:38:15 +01:00
HbmMods
659bd662bf
Merge pull request #2011 from MellowArpeggiation/master
fix switching barrel types not updating fluid net
2025-03-24 10:34:27 +01:00
George Paton
177e5a245e dingleberry blues 2025-03-24 20:00:01 +11:00
George Paton
b5d76afb8c fix switching barrel types not updating fluid net 2025-03-24 19:56:04 +11:00
HbmMods
4c58d9a084
Merge pull request #2005 from BallOfEnergy1/Optimization
Toolboxes!
2025-03-24 08:09:17 +01:00
HbmMods
5e9399a696
Merge pull request #2010 from MellowArpeggiation/master
Fix fluidnet bugs
2025-03-24 07:54:55 +01:00
George Paton
141e80bfcb batteries and fluid tanks now block propagation if not set to buffer mode (which the player can circumvent by cabling/piping around them, which gives them the choice of behaviour, and is more intuitive) 2025-03-24 16:09:56 +11:00
George Paton
62485c6854 fluid tank handling updated to match energy storage blocks, allowing for more consistent tank leveling behaviour 2025-03-24 15:05:56 +11:00
George Paton
f00f2c7ca3 fix compat shim incorrectly subscribing receiving tanks 2025-03-24 12:25:06 +11:00
George Paton
6db42e6d4b fix fluid valves not deactivating (was clearing power net rather than fluid net connections) 2025-03-24 11:49:53 +11:00
Bob
d6c15c8ff2 the malicious gigglefish from the silly dimension 2025-03-23 21:46:56 +01:00
Lazzzycatwastaken
6ceba52f95 Added beached patrol boat 2025-03-23 18:12:26 +01:00
Lazzzycatwastaken
9806d53b45 forgorred to commit ts 2025-03-23 16:25:36 +01:00
Lazzzycatwastaken
7d642f155c Fixed retardation code
Oilrig building upgraded and made it spawn always on the same Y
2025-03-23 16:17:16 +01:00
Lazzzycatwastaken
eb8971dc2e Added oil rig.
Made all structures rarer (via null spawn weight)
2025-03-23 13:27:38 +01:00
Lazzzycatwastaken
e318c83023 Yes i've planted the oil rig malware bob 👿 2025-03-23 00:47:32 +01:00
Bob
737fb1e432 go go gadget HIV 2025-03-22 23:29:02 +01:00
Lazzzycatwastaken
8bb91eda3c Oil Rig item pool 2025-03-22 21:33:25 +01:00
Lazzzycatwastaken
7ae8693841 Sunken Aircraft Carrier structure added. 2025-03-22 19:10:06 +01:00
BallOfEnergy
9839107c4e New GUI, also some index fixes. 2025-03-22 13:07:04 -05:00
BallOfEnergy
b139e084fb Merge remote-tracking branch 'upstream/master' into Optimization 2025-03-22 00:12:50 -05:00
BallOfEnergy
f27234879f BOO! surprise feature!
Completely revamped toolboxes, now they swap hotbars!
2025-03-22 00:12:32 -05:00
HbmMods
07618f6a60
Merge pull request #2002 from EverMine/master
Add missing adding to neiShredderRecipes in CompatRecipeRegistry
2025-03-21 19:23:31 +01:00
ItsMakar
cf5e0e7d12 No fucking way i did that mistake 2025-03-21 17:52:00 +02:00
ItsMakar
291a34103a Add missing adding to neiShredderRecipes in CompatRecipeRegistry 2025-03-21 16:42:49 +02:00
Boblet
3ac7a8cdd6 i cast: testicular contortion 2025-03-21 15:21:32 +01:00
HbmMods
fc716379c9
Merge pull request #2001 from Vaern/master
G3 Attachments
2025-03-21 07:55:42 +01:00
HbmMods
4ceadec5c6
Merge branch 'master' into master 2025-03-21 07:55:32 +01:00
HbmMods
ffa8a0c5bb
Merge pull request #1998 from BallOfEnergy1/Optimization
Crates, but backpacks!
2025-03-21 07:51:46 +01:00
Vaern
4ef77bad1f added g3 attachments, fixed g3 model, changed/fixed anims + orchestra 2025-03-20 22:17:32 -07:00
Bob
9f0fd19ef8 the good shit 2025-03-20 22:57:39 +01:00
Boblet
51b7c71534 good god, we gonna rock down to electric avenue 2025-03-20 15:42:37 +01:00
BallOfEnergy
725baf37ff Merge remote-tracking branch 'upstream/master' into Optimization 2025-03-19 22:01:34 -05:00
BallOfEnergy
8608796a09 ok i want this
listen ok im proud of them and i dont want them to fade
2025-03-19 20:44:39 -05:00
Bob
1538932316 guns are great, but why not make them better? 2025-03-19 22:13:42 +01:00
BallOfEnergy
c73ec3a0ac i fucked around, i found out
this shit WORKS
2025-03-19 13:31:56 -05:00
BallOfEnergy
0a59fa86a0 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/api/hbm/fluid/IFluidConnector.java
#	src/main/java/api/hbm/fluid/IFluidUser.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java
#	src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java
2025-03-19 13:28:38 -05:00
Boblet
5a9f3e75dc YOU KNOW HOW WE DO IT 2025-03-19 16:28:55 +01:00
Bob
ccc80781b2 ok that's it i've had enough 2025-03-18 21:20:57 +01:00
Boblet
7b80e9fb64 oh, in the distance i could see a pale light 2025-03-18 16:53:41 +01:00
Boblet
360daaa524 Merge branch 'master' of https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT 2025-03-17 17:00:12 +01:00
Boblet
b5166ca517 augh 2025-03-17 17:00:07 +01:00
HbmMods
850679ca94
Merge pull request #1982 from KellenHurrey/master
Added a keybind for toggling the magnet armor modifications
2025-03-17 08:09:59 +01:00
HbmMods
11e9bc22ed
Merge pull request #1985 from Toshayo/master
Support for more unusual pylons
2025-03-17 08:09:03 +01:00
Bob
6d1165ba33 guh 2025-03-16 20:28:44 +01:00
KellenHurrey
a6f3cd54eb
Merge branch 'HbmMods:master' into master 2025-03-14 09:34:02 -07:00
Boblet
900f8e6959 flowing my creek so hard rn you wouldn't believe 2025-03-14 14:28:13 +01:00
KellenHurrey
86a805bd92
Merge branch 'HbmMods:master' into master 2025-03-13 21:39:31 -07:00
Toshayo
98f4b22a19
Upgraded base pylon code to support more unusual pylon types 2025-03-13 23:10:08 +01:00
Toshayo
5ead78349c
Updated TileEntityPylonBase and RenderPylonBase according .editorconfig 2025-03-13 23:08:19 +01:00
Boblet
3c2ddf4d64 *vomits* 2025-03-13 16:58:15 +01:00
KellenHurrey
f461851228 magnet keybinds 2025-03-12 12:30:08 -07:00
HbmMods
2bdbfda243
Merge pull request #1981 from KellenHurrey/master
There i fixed chunkloading drones
2025-03-12 09:07:22 +01:00
KellenHurrey
d1e4d1572f wholy shit i actually fixed chunkloading drones (and added a new util class) 2025-03-11 22:28:00 -07:00
Bob
20cb0f6f5d ba-dee-ya, say do u rember? ba-dee-ya, wen u feeled happy
ba-dee-ya, alway rember happy day!
2025-03-10 21:56:35 +01:00
Boblet
565d5c1129 go go gadget: detonate nutsack 2025-03-10 16:57:02 +01:00
Bob
0ca1be3d6f goober 2025-03-09 22:03:34 +01:00
BallOfEnergy
ac81021ddf small fix 2025-03-08 17:34:08 -06:00
BallOfEnergy
c6ca31eb23 what was i doing again?
seriously someone idk what i was doing
help
2025-03-08 17:26:12 -06:00
BallOfEnergy
52b781ea9f Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java
#	src/main/java/com/hbm/items/weapon/ItemAmmoArty.java
#	src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java
2025-03-07 22:06:13 -06:00
HbmMods
3da9f7c56f
Merge pull request #1973 from MellowArpeggiation/master
Fix comically long 9mm reload animation snapping
2025-03-07 08:05:23 +01:00
George Paton
df5253df1b
Merge branch 'HbmMods:master' into master 2025-03-07 16:50:40 +11:00
George Paton
1afe84a871 shit idiot brain fungus the sequel 2025-03-07 16:49:56 +11:00
Boblet
5d24e76601 compat for (hopefully) robust external recipe registering 2025-03-06 14:25:30 +01:00
Bob
a78dae4a8e alright i'm tired 2025-03-05 21:58:20 +01:00
HbmMods
23928d3d7b
Merge pull request #1970 from KellenHurrey/master
Make RBMK Rods actually be a SimpleComponent
2025-03-05 18:56:50 +01:00
Boblet
e21fe3eecc config crap 2025-03-05 16:57:50 +01:00
KellenHurrey
3bf526419e
Make RBMK Rods actually be a SimpleComponent 2025-03-04 17:23:43 -08:00
Boblet
ed4421b2e2 burned old textures, better sludge 2025-03-04 16:50:33 +01:00
HbmMods
5a9b65095d
Merge pull request #1965 from Toshayo/master
Redstone-over-Radio OpenComputers integration + Mining satellite NEI handler
2025-03-03 20:20:06 +01:00
Boblet
00cacbbadc damage fix, mas36 anim error, server config command 2025-03-03 16:05:28 +01:00
Toshayo
228fbf506d
Added satellite NEI handler 2025-03-03 11:20:40 +01:00
Toshayo
d13d0679b7
Added OpenComputers integration for redstone-over-radio receiver/transmitter 2025-03-03 11:20:40 +01:00
Bob
1238933bca yeag 2025-03-02 22:49:29 +01:00
HbmMods
3a5c943c0a
Merge pull request #1962 from MellowArpeggiation/master
fix vertibirds spawning unburied
2025-03-01 09:47:27 +01:00
George Paton
18d21a0f13 fix vertibirds spawning unburied 2025-03-01 10:40:44 +11:00
HbmMods
299f514f99
Merge pull request #1960 from 70000hp/windows-95
rotary furnace fuel thing
2025-02-28 08:31:19 +01:00
HbmMods
4c2639ecf4
Merge pull request #1961 from MellowArpeggiation/master
Performance boost for RBMKs (thanks DEKO)
2025-02-28 08:28:48 +01:00
George Paton
dc70967279 death by one million hashmap lookups (68ms -> 8ms over 60 seconds) 2025-02-28 11:56:03 +11:00
70000hp
1574f90a4d Merge branch 'master' into windows-95 2025-02-27 16:59:03 -05:00
Boblet
fb414ad80a yes we know your name now fuck off 2025-02-27 16:38:40 +01:00
HbmMods
3ae27afe4d
Merge pull request #1959 from Vaern/master
spent casings prrrrrr!!!
2025-02-27 10:30:24 +01:00
HbmMods
fa93b944b5
Merge pull request #1958 from MellowArpeggiation/master
Fix #1918 - RBMKs turning off when chunks unload, a world is quit, or a dimension unloads
2025-02-27 10:27:15 +01:00
Vaern
e6aa3f232d remove unused imports 2025-02-26 23:42:07 -08:00
Vaern
247f3eace8 finishing touches 2025-02-26 23:38:28 -08:00
Vaern
b789482f3d added initial rotvel to orchestras, flixes 2025-02-26 23:29:12 -08:00
George Paton
9da32595ff 4x rarer meteor dungeons 2025-02-26 19:36:47 +11:00
Vaern
b3e8fad079 added initial rotational momentums to casingCreator
remind me tomorrow to set the rest of the constants n add a lil randomess
2025-02-26 00:21:06 -08:00
George Paton
a6b1a9068b fix crash caused by placing piles immediately adjacent to RBMKs 2025-02-26 16:33:04 +11:00
George Paton
bb84ebe209 Fix #1918 - make sure node caching is per world, remove nodes from cache correctly, and prevent unloading dimensions immediately ceasing all reactivity. Also fixes rod information not updating unless the GUI is open 2025-02-26 15:38:31 +11:00
Vaern
ec311a6d54 removed unnecessary shit, fixed muzzle flash
prolly gonna figure out a systematic solution to customizing spent casing ejection/maxAge based on receiver
2025-02-25 19:46:02 -08:00
Boblet
fd500f8a98 and now for the boring part 2025-02-25 16:56:48 +01:00
Vaern
c5c6beb453 Finished casing physics
added initial momentums as a test
2025-02-24 23:47:48 -08:00
Vaern
747d0006b2 set casing models as vbos, will test later 2025-02-24 15:04:24 -08:00
Bob
06caf11654 yeah that's all the bugs that needed fixing 2025-02-24 21:43:44 +01:00
Boblet
bd3b52cd36 nodespace is dead, let's wear its skin 2025-02-24 14:45:23 +01:00
Vaern
61bba7974f added rotational momentum, better bounces to spent casings
turret's cases do not rotate for some reason!
2025-02-23 22:06:16 -08:00
Bob
0ccf81443a the malicious gigglefish from the silly dimension 2025-02-23 18:39:11 +01:00
Boblet
c3e532ab33 good god - we gonna rock down to electric avenue 2025-02-21 15:18:45 +01:00
Boblet
d20c190c3e the de-genericizing 2025-02-20 16:55:46 +01:00
HbmMods
e6e11a3a1c
Merge pull request #1949 from EverMine/locale_update
Locale updates
2025-02-20 08:35:11 +01:00
ItsMakar
223e0d2855 Fix some typos in en_US locale 2025-02-20 09:32:13 +02:00
ItsMakar
66feaf292f Merge branch 'locale_update' of https://github.com/EverMine/Hbm-s-Nuclear-Tech-GIT into locale_update 2025-02-20 09:31:25 +02:00
IOcmet
d802645bc3
Merge branch 'HbmMods:master' into locale_update 2025-02-20 09:31:08 +02:00
HbmMods
c855f67cda
Merge pull request #1948 from Dash1269/ntmain-rotaryfurnace-fix
Fix rotary furnace not saving output material
2025-02-20 08:22:09 +01:00
HbmMods
4fd9d5b0fa
Merge pull request #1947 from EverMine/rendering_fix
Replace manual matrix restoration in haze and radiation fog particle renderers to glPushMatrix and glPopMatrix
2025-02-20 08:21:37 +01:00
ItsMakar
f9e22ddab0 some localization for ru_RU ™️ 2025-02-20 09:20:51 +02:00
Dosh
b28cb312dc
fixed rotary furnace not saving output material 2025-02-20 16:39:19 +11:00
Dosh
c12948b330
automatic formatting 2025-02-20 16:37:50 +11:00
ItsMakar
a5fa13c32e Replace manual matrix restoration in haze and radiation fog particle renderers to glPushMatrix and glPopMatrix 2025-02-20 04:03:03 +02:00
IOcmet
093d23e700
Merge branch 'HbmMods:master' into locale_update 2025-02-20 00:59:29 +02:00
Boblet
4c82dfcdcb scraping out old crap 2025-02-19 16:37:17 +01:00
ItsMakar
d4f62675c4 Update ru_RU.lang 2025-02-19 07:43:13 +02:00
IOcmet
20646c407b
Merge branch 'HbmMods:master' into locale_update 2025-02-19 03:30:48 +02:00
Boblet
c3eb6035aa deplorable gollompus 2025-02-18 16:21:38 +01:00
HbmMods
23db8e3d86
Merge pull request #1943 from Vaern/idk
added mas-36 model, texture
2025-02-18 13:13:41 +01:00
Vaern
de8324ce9b added mas-36 model, texture 2025-02-17 10:14:54 -08:00
Boblet
18dfb21ca4 UNINOS 2025-02-17 16:59:17 +01:00
Bob
fd04bf9b3f a whole lot of nothing 2025-02-16 23:16:26 +01:00
HbmMods
4444038f35
Merge pull request #1937 from Creeper-banner/bob
Update zh_CN.lang for next release
2025-02-16 11:22:56 +01:00
IOcmet
beae7b31fe
Update ru_RU locale, rearrange it to en_US order and remove unused keys 2025-02-15 07:56:48 +02:00
Boblet
b1d5540887 my quest for beans has taken me to many places 2025-02-14 15:08:45 +01:00
Boblet
4aaf3ec864 new objective: kill ronald reagan 2025-02-13 16:45:38 +01:00
Creeper-banner
0262fcc984
Add files via upload 2025-02-12 17:11:58 +08:00
70000hp
3a7e974541 adjustments 2025-02-11 18:17:29 -05:00
70000hp
89fe899f2a Rotary Furnace Fuel Tweak
Better fuels speed up the rotary furnace, but require more steam
Steam requirements scale with speed nonlinearly, being x^1.5
2025-02-11 17:50:35 -05:00
Boblet
4972f4023a thorn glognuts for only 5 bintar 2025-02-11 16:46:14 +01:00
Boblet
614f5db7dc fuck! 2025-02-10 16:53:37 +01:00
HbmMods
d34624a224
Merge pull request #1935 from MellowArpeggiation/master
forgot the black book safe pool oops
2025-02-10 10:12:03 +01:00
George Paton
940f45813a forgot the black book safe pool oops 2025-02-10 20:07:59 +11:00
HbmMods
6043d1df80
Merge pull request #1934 from MellowArpeggiation/moige
NBT Structures + new Meteor Dungeon + bonus stuff
2025-02-10 08:57:53 +01:00
HbmMods
27afb9eb7b
Merge pull request #1930 from darkalit/master
Return OC integration with Energy storage block
2025-02-10 08:06:44 +01:00
HbmMods
1a24b8df67
Merge pull request #1928 from Toshayo/master
Night vision toggling with HUD
2025-02-10 08:02:31 +01:00
HbmMods
2968d927bc
Merge branch 'master' into master 2025-02-10 08:02:24 +01:00
George Paton
98a334575d forgot the jigsaw block side rotating code 2025-02-10 15:57:03 +11:00
George Paton
0dea47ff87 add glowstone loot and force 3x3loot to always spawn, even at size limit 2025-02-10 12:21:45 +11:00
George Paton
8994d2e0b1 add nbt vertibird spawning and remove unused meteor dungeon code 2025-02-10 12:21:17 +11:00
George Paton
c1a2f8d270 stack jetpack tanks to 16, and don't consume them if jetpack is already full 2025-02-10 11:43:30 +11:00
George Paton
7f0c483cb1 improved meteor dungeon stair piece, added loot fallback, and prevent structures generating too far horizontally from the start point 2025-02-10 11:36:31 +11:00
BallOfEnergy
aceb313fec Merge remote-tracking branch 'refs/remotes/upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/handler/WeaponAbility.java
#	src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java
#	src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java
2025-02-09 18:02:29 -06:00
BallOfEnergy
352cee350f Merge remote-tracking branch 'origin/Optimization' into Optimization 2025-02-09 18:01:03 -06:00
BallOfEnergy
e2d64ff376 Fix for main issue #1933. 2025-02-09 18:00:52 -06:00
George Paton
977bd3e2b5 Add access transformer for mojang being a stupid butt 2025-02-10 09:59:06 +11:00
Bob
5341f5d255 EOTT 2025-02-09 18:38:30 +01:00
George Paton
4fb7df8b3e Merge branch 'master' into moige 2025-02-09 18:39:57 +11:00
George Paton
3dbe648ebe bring NBTStructures to NTMain! 2025-02-09 18:39:15 +11:00
Bob
f74ce297f8 chromatic aberration 2025-02-08 23:19:33 +01:00
darkalit
4a95dc1240 Return OC integration with Energy storage block 2025-02-07 23:57:28 +02:00
Toshayo
b462b30156
Night vision toggling with HUD 2025-02-07 13:07:39 +01:00
Boblet
b60db5b911 pain 2025-02-06 16:48:29 +01:00
HbmMods
fe9808f621
Merge pull request #1924 from Dash1269/ntmain-pa-detector-fix
PA Detector fixes and improved diagnostics
2025-02-06 15:00:30 +01:00
Boblet
8522b584d4 undo all of the PA stuff 2025-02-06 15:00:19 +01:00
Dosh
5f1a4509f2
PA Detector fixes and improved diagnostics 2025-02-07 00:08:31 +11:00
Boblet
bd59ae5970 flixes 2025-02-05 16:45:49 +01:00
HbmMods
d4d5340a33
Merge pull request #1920 from Creeper-banner/bob
Update zh_CN.lang for X5230
2025-02-05 11:17:02 +01:00
Creeper-banner
2f2c2438d5
Add files via upload 2025-02-05 17:47:58 +08:00
HbmMods
d363177e7f
Merge pull request #1917 from TheCrazyInsanity/master
Simple Github action to build on push & pr
2025-02-05 08:06:21 +01:00
HbmMods
1f5c58b7bb
Merge pull request #1914 from Nycticoraxnightheron/master
zh_CN update
2025-02-05 08:04:42 +01:00
Boblet
27bd64eafc a botched nosejob 2025-02-04 16:54:02 +01:00
TheCrazyInsanity
4b32e2665b
I forgot to make it upload artifacts
:3c
2025-02-03 18:01:30 -05:00
TheCrazyInsanity
7206cad26a
Create build.yml
Github actions template to build an artifact on push or pr
2025-02-03 17:50:45 -05:00
Boblet
a814e581b9 time to eat 40lbs of dynamite then die 2025-02-03 16:24:41 +01:00
Night Heron
3b1a578d71
I hate eszopiclone 2025-02-03 14:57:30 +08:00
George Paton
c49161ab39 Merge branch 'master' into moige 2025-02-03 10:44:17 +11:00
George Paton
a581cb74d0 Refueling Station! Refuels armor, attached armor mods, and any held items! Now Black Mesa themed! 2025-02-03 10:38:47 +11:00
Bob
6027ad963b fuck off 2025-02-02 22:05:58 +01:00
HbmMods
201689942a
Merge pull request #1905 from 70000hp/Aluminium-fifth-attempt-at-merging
Aluminium 2
2025-02-02 17:29:49 +01:00
HbmMods
26a2a46958
Merge pull request #1910 from Creeper-banner/bob
Update zh_CN.lang
2025-02-02 17:25:19 +01:00
Bob
0e0777f196 the rim flappe on a bongfish is mated to the bungus of its fuccbone.
the scrotewad is onyl present on females above the pootsack (see: snogbag).
2025-02-02 17:21:34 +01:00
70000hp
32d6a59991
Update ElectrolyserFluidRecipes.java 2025-02-01 11:43:27 -05:00
George Paton
18af968073 updated boble 2025-02-01 20:21:46 +11:00
George Paton
6d920ce91d sorters default to bedrock sorting now too 2025-02-01 20:02:21 +11:00
George Paton
c4e973dc03 oops: fix sorter filter crash 2025-02-01 20:00:24 +11:00
George Paton
b6d4e95ec9 bedrock ore grade filters! 2025-02-01 19:35:46 +11:00
Creeper-banner
232c626c31
Add files via upload 2025-02-01 15:04:19 +08:00
Creeper-banner
b4a7d5a197
Merge branch 'HbmMods:master' into bob 2025-02-01 14:04:49 +08:00
70000hp
dd84cf8f7c ratio engoodening 2 + fluorite instead of aluminium powder 2025-01-31 12:29:42 -05:00
Boblet
98aea38025 hey lois look i'm a commit message 2025-01-31 15:24:14 +01:00
Boblet
d8ab0e7ecf 1000 lines of code 2025-01-30 16:01:05 +01:00
70000hp
4e28272444 eh why not 2025-01-29 17:04:30 -05:00
70000hp
6e3e702213 my bones 2025-01-29 16:32:23 -05:00
Boblet
691ff5c1d5 floppotron 2025-01-29 16:37:12 +01:00
Bob
a074a4a249 the escape plan 2025-01-28 23:24:40 +01:00
Boblet
bc3e643f97 a touch too much 2025-01-28 16:37:59 +01:00
Boblet
03639e2cdb i'm just gonna call this "gock" with no further context 2025-01-28 13:15:41 +01:00
Boblet
841864e368 the blombus 2025-01-27 16:55:41 +01:00
HbmMods
64f5bbe4bb
Merge pull request #1891 from t3435ryt/oc-compat
Add OpenComputers Compatibility for Combustion Engine 2
2025-01-27 08:24:03 +01:00
HbmMods
3649ed45cf
Merge pull request #1894 from MellowArpeggiation/master
Fix foundry channel clogs
2025-01-27 08:21:50 +01:00
George Paton
e65a98421f handle shovels and prevent any unforeseen issues (like if a channel gets separated by breaking/explosion) 2025-01-27 10:13:11 +11:00
Bob
15645648c5 sharticle accelerator 2025-01-26 22:09:21 +01:00
George Paton
8634d63625 Prevent contiguous foundry channels from accepting different materials until fully emptied, preventing clogs 2025-01-26 12:31:35 +11:00
Bob
fb1e20c11f 🅱️all 🅱️usting 2025-01-25 20:25:01 +01:00
t3435ryt
0222ebfaf9 Fix stupidity 2025-01-24 20:42:44 -05:00
t3435ryt
1274fdcbac Add OpenComputers Compatibility for Combustion Engine 2025-01-24 20:09:36 -05:00
Boblet
02d749bdb1 spread it 2025-01-24 14:57:21 +01:00
Boblet
11e96c08c0 porting of the ports 2025-01-23 16:49:42 +01:00
Boblet
31eeb2ab94 heaven sent & hell bent 2025-01-22 16:55:52 +01:00
Boblet
4024249bec deplorable gollompus 2025-01-21 16:44:09 +01:00
Boblet
c03801f3af killing myself (flirting) 2025-01-20 16:28:35 +01:00
HbmMods
2d007e836f
Merge pull request #1873 from Agarmal/OpenComputers-Better-Integration
Add vent carbon dioxide function in Zirnox for OpenComputers
2025-01-20 08:10:37 +01:00
Bob
6373c09081 PERFLUOROMETHYL WANTS TO KNOW YOUR LOCATION 2025-01-19 22:45:37 +01:00
Boblet
986276428e no 2025-01-17 15:20:28 +01:00
Agarmal
097d933205 Clamping now uses MathHelper.clamp_int(...) 2025-01-17 11:49:28 +01:00
Agarmal
fa0f3cb0ed Added value clamping to the ventCarbonDioxide function on the Zirnox, also no longer writes the value before correcting if it's negative. 2025-01-17 11:01:01 +01:00
HbmMods
4a79942421
Merge pull request #1871 from FOlkvangrField/RBMK-Crane-Console-Fix
Fix RBMK Crane Console
2025-01-17 08:50:22 +01:00
Boblet
8bcdd0cc89 the heinous sludge has consumed my brain 2025-01-16 16:52:33 +01:00
Agarmal
b7d416cd8a Added vent Carbon Dioxide function in Zirnox for OpenComputers 2025-01-16 15:00:17 +01:00
Boblet
40379c75b0 ough 2025-01-15 16:55:24 +01:00
FOlkvangrField
d2b28f4275 Fix RBMK Crane Console
Fixed RBMK Crane Console moving problem. I actually don't know how the new packet sending code works. I compared the posLeft variable with the similar posFront variable and found that it performed an additional operation during deserialization, so I removed it, and this fix the problem that RBMK Crane Console can't  move left or right
2025-01-15 19:36:37 +08:00
HbmMods
de1bcfd35a
Merge pull request #1865 from Biohazard041/master
Typo Fixes
2025-01-14 16:52:08 +01:00
Boblet
b68e275dd6 progress nonexistant 2025-01-14 16:51:33 +01:00
Biohazard041
57bdd1fba0
Update GUIRBMKControlAuto.java
Typo :)
2025-01-13 23:28:17 -05:00
Biohazard041
2114beccd2
Update ItemModCladding.java
typo from resistence to resistance

:)
2025-01-13 23:23:38 -05:00
Boblet
c7fede2304 hit that yoinky sploinky 2025-01-13 16:26:40 +01:00
BallOfEnergy
642945e7ac
Merge branch 'HbmMods:master' into Optimization 2025-01-13 08:16:55 -06:00
BallOfEnergy
9fa148c218 just in case I disappear, here's particle threading and crate backpacks, along with spider crates, though opening a spider crate in the inventory will not spawn spiders yet. 2025-01-12 19:21:17 -06:00
Bob
401005c3d8 you know how we do it 2025-01-13 00:24:50 +01:00
Boblet
f39a5b1556 🅱️alls with reverb 2025-01-09 16:52:13 +01:00
HbmMods
8f325e9a5b
Merge pull request #1857 from BallOfEnergy1/Optimization
Miscellaneous fixes for the optimization update.
2025-01-09 08:30:08 +01:00
BallOfEnergy
19af9d769d Fix #4.
Fix timed bombs not showing a time.
2025-01-08 20:48:53 -06:00
BallOfEnergy
6d06227922 Fix #3.
Fix corrupted broadcaster playing inversely.
2025-01-08 20:31:33 -06:00
Boblet
d4c0cb017a spoingus 2025-01-08 16:47:43 +01:00
BallOfEnergy
be01e9efd0 Fix #2.
Packets decaying way too quickly with large bases, remove total time counter.
2025-01-08 08:31:51 -06:00
BallOfEnergy
3882b9b82c Fix #1.
Fix custom machine crashing clients/invalidating packets due to buffer underflow.
2025-01-08 08:20:49 -06:00
HbmMods
5746a90cb7
Merge pull request #1853 from Nycticoraxnightheron/master
zh_CN update
2025-01-07 16:46:01 +01:00
Boblet
9ef98691f6 do the yoinky sploinky 2025-01-07 16:44:33 +01:00
Night Heron
c71647674b
Oh yes♂sir
Oh yes♂sir
2025-01-07 21:44:29 +08:00
HbmMods
702914f03a
Merge pull request #1851 from Vaern/phosphor
Phosphor Vines
2025-01-07 08:20:15 +01:00
Vaern
faf57d6b9c Merge remote-tracking branch 'HbmMods/master' into phosphor 2025-01-06 13:12:04 -08:00
Bob
c34c412810 top 5 videos 2025-01-06 19:56:48 +01:00
HbmMods
3400fed16e
Merge pull request #1843 from Xenox003/master
Add Look overlay to Leviathan Turbine
2025-01-06 18:22:44 +01:00
HbmMods
cc1b56fa9f
Merge branch 'master' into master 2025-01-06 18:22:36 +01:00
HbmMods
50edd0f04b
Merge pull request #1845 from Agarmal/m1tty-nvg
Fix effect conflicts with Night Vision Goggles in the M1TTY Environment Suit
2025-01-06 18:20:23 +01:00
Bob
ae431a3a9b can a special weapon have a b-side? 2025-01-06 18:19:56 +01:00
HbmMods
4a1bb38541
Merge pull request #1733 from BallOfEnergy1/Optimization
NTM Optimization Update!
2025-01-06 15:38:30 +01:00
BallOfEnergy
6bc70ae105 Small fix for upgrades on TileEntityElectrolyser. 2025-01-06 00:09:36 -06:00
BallOfEnergy
34e818b83a Wow, that was bad.
Fix fluids randomly disappearing/appearing in the Heat Exchanging Heater in rare circumstances due to packet compilation times.
2025-01-05 19:19:02 -06:00
BallOfEnergy
8bbb01ae2b Merge remote-tracking branch 'origin/Optimization' into Optimization 2025-01-05 16:28:06 -06:00
BallOfEnergy
dc6f30ba6c Fix TileEntityBroadcaster. 2025-01-05 16:27:47 -06:00
HbmMods
301b66b4f7
Merge branch 'master' into Optimization 2025-01-05 22:39:26 +01:00
Bob
ba12143cc8 🅱️alls 2025-01-05 22:37:16 +01:00
BallOfEnergy
ec6cd544d2 An absolute ton of cleanup. 2025-01-04 01:04:57 -06:00
BallOfEnergy
c25f4c8d60 Fix /ntmpackets command registration.
Fix small race condition with a ReentrantLock.
2025-01-03 20:29:17 -06:00
Agarmal
8391255398 Fixed M1TTY Envsuit mod detection 2025-01-02 20:38:22 +01:00
Agarmal
62116cfb32 Added a check to fix M1TTY's Envsuit incompatibility with NVG goggles 2025-01-02 19:33:16 +01:00
Xenox003
f1bb5f1d17
chore: Update changelog 2025-01-02 00:32:38 +01:00
Xenox003
c94292a667 feat: Add look overlay to Leviathan Turbine (aka. Big Chungus) 2025-01-02 00:10:38 +01:00
BallOfEnergy
9a22c343c9 Chicago Pile fix ClassCastException. 2024-12-31 17:18:04 -06:00
BallOfEnergy
86de688469
Merge branch 'HbmMods:master' into Optimization 2024-12-29 05:58:39 -06:00
BallOfEnergy
c941cb8717 am i retarded
fucky wucky pt. 4
2024-12-29 05:56:26 -06:00
BallOfEnergy
fe23c67967 fucky wucky pt. 3 2024-12-29 05:52:19 -06:00
HbmMods
5cf06f2055
Merge pull request #1837 from Nycticoraxnightheron/101
zh_CN update
2024-12-29 12:42:49 +01:00
BallOfEnergy
78aba275ce fucky wucky pt. 2 2024-12-29 05:41:53 -06:00
Night Heron
c1cea71240
Add files via upload 2024-12-29 00:26:31 +08:00
BallOfEnergy
803320d118 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/main/ResourceManager.java
2024-12-27 17:57:20 -06:00
HbmMods
5c053ea78f
Merge pull request #1833 from Vaern/idk
added new g3 wooden + polymer tex, fixed uv
2024-12-28 00:31:02 +01:00
Bob
dbcb2e2aa2 spontaneous comeback 2024-12-28 00:16:38 +01:00
Vaern
e4b5b40256 added new g3 wooden + polymer tex, fixed uv 2024-12-26 23:37:57 -08:00
BallOfEnergy
e1bdae1241 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/blocks/ModBlocks.java
#	src/main/java/com/hbm/lib/HbmCollection.java
#	src/main/java/com/hbm/main/ClientProxy.java
#	src/main/java/com/hbm/main/MainRegistry.java
#	src/main/java/com/hbm/main/ModEventHandler.java
#	src/main/java/com/hbm/main/NEIConfig.java
#	src/main/java/com/hbm/util/LootGenerator.java
2024-12-26 19:43:36 -06:00
BallOfEnergy
9d3a3b1fff fucky wucky (kms) 2024-12-26 19:27:31 -06:00
Bob
89a3a1f9bc fixes 2024-12-27 01:01:51 +01:00
Bob
d7776b52d5 roblox death sound 2024-12-23 23:56:43 +01:00
HbmMods
e04e5aff1d
Merge pull request #1821 from MellowArpeggiation/master
A few animation fixes more
2024-12-23 21:32:18 +01:00
Bob
1bccba82bb god giveth, and god taketh away 2024-12-23 21:31:33 +01:00
George Paton
2613902a73 wrong swizzle order 2024-12-23 12:57:21 +11:00
George Paton
cca5300deb
Merge branch 'HbmMods:master' into master 2024-12-23 12:43:26 +11:00
George Paton
d56f30a4fa properly add rotmode to animation .json spec, including import/export 2024-12-23 12:33:21 +11:00
Bob
6e44aeea8d return the slab, or suffer my curse 2024-12-23 01:01:29 +01:00
Bob
10f62b88e1 the malicious gigglefish from the silly dimension 2024-12-22 00:41:10 +01:00
BallOfEnergy
9d2aa86e41 well crap this was an oops 2024-12-21 12:40:11 -06:00
BallOfEnergy
88c1632481 fix some stuff, also fix sending exactly 19x more packets than needed lmao 2024-12-20 17:54:45 -06:00
Bob
340de04936 tweaks 2024-12-20 21:46:50 +01:00
BallOfEnergy
90cfd37a31 an absolutely goofy command I'd say (also yet another failsafe, this time for a ton of packet discarding.) 2024-12-19 21:55:41 -06:00
BallOfEnergy
4f06914c39 Packet threading debug command!!
(Also packet threading config option)
2024-12-18 10:52:33 -06:00
BallOfEnergy
6ccb585c40
Merge branch 'HbmMods:master' into Optimization 2024-12-18 09:43:40 -06:00
Boblet
1930670e5f pins and needles 2024-12-18 16:37:11 +01:00
BallOfEnergy
1ffebc5aa2 Merge remote-tracking branch 'origin/Optimization' into Optimization 2024-12-18 08:32:42 -06:00
BallOfEnergy
85743e85f4 More RAM optimizations with buffer releasing. Also fix a bug in RBMK processing and a few merge-related errors. 2024-12-18 08:32:30 -06:00
HbmMods
6d1243b500
Merge pull request #1812 from Nycticoraxnightheron/101
I forgot the oven, but it is done
2024-12-18 08:16:51 +01:00
BallOfEnergy
7a0ee15a7e
Merge branch 'HbmMods:master' into Optimization 2024-12-17 10:51:51 -06:00
Night Heron
d1d20ec4bb
Add files via upload 2024-12-18 00:43:26 +08:00
Boblet
bfdc145eb0 smonking that fentanyl 2024-12-17 16:51:02 +01:00
George Paton
67eb2be5a7 Add swizzling for animations not authored with YZX rotations within blender (haven't updated the import/export yet) 2024-12-17 19:55:37 +08:00
HbmMods
807f1a7525
Merge branch 'master' into Optimization 2024-12-17 11:38:41 +01:00
Boblet
9b149f3e3d trash incineration 2024-12-17 11:37:37 +01:00
George Paton
700e02223f read the damn headers, shitlid 2024-12-17 16:03:07 +08:00
BallOfEnergy
7a16a8ba9f Merge remote-tracking branch 'origin/Optimization' into Optimization
# Conflicts:
#	src/main/java/com/hbm/main/ModEventHandlerClient.java
#	src/main/java/com/hbm/util/CompatExternal.java
2024-12-16 18:25:14 -06:00
BallOfEnergy
2776a6f347 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/blocks/ModBlocks.java
#	src/main/java/com/hbm/handler/EntityEffectHandler.java
#	src/main/java/com/hbm/main/ClientProxy.java
#	src/main/java/com/hbm/main/CraftingManager.java
#	src/main/java/com/hbm/main/MainRegistry.java
#	src/main/java/com/hbm/main/ModEventHandlerClient.java
#	src/main/java/com/hbm/main/ModEventHandlerRenderer.java
#	src/main/java/com/hbm/main/NEIConfig.java
#	src/main/java/com/hbm/main/ResourceManager.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java
#	src/main/java/com/hbm/util/CompatExternal.java
#	src/main/java/com/hbm/util/CrucibleUtil.java
#	src/main/java/com/hbm/util/EntityDamageUtil.java
2024-12-16 18:18:46 -06:00
HbmMods
78d61348bf
Merge pull request #1767 from FOlkvangrField/Custom-fluid-pollution-fix
Custom fluid traits fix
2024-12-16 16:08:51 +01:00
HbmMods
74a87e90e8
Merge pull request #1805 from Nycticoraxnightheron/101
Repair of zh_CN files
2024-12-16 16:07:25 +01:00
Boblet
ce3bff94eb let's go to stalingrad, it will be fun 2024-12-16 15:59:41 +01:00
FOlkvangrField
d009f614d4
Merge branch 'master' into Custom-fluid-pollution-fix 2024-12-16 22:56:43 +08:00
Night Heron
42d52fe060
Add files via upload
i love  my hand
2024-12-16 12:18:34 +08:00
Bob
c60f5cf400 been livin' livid in a mirror maze 2024-12-15 20:50:16 +01:00
Bob
28ae1df25e now that was a rather productive segment 2024-12-14 22:05:48 +01:00
BallOfEnergy
99705897ed Merge remote-tracking branch 'main/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/blocks/ModBlocks.java
#	src/main/java/com/hbm/handler/EntityEffectHandler.java
#	src/main/java/com/hbm/main/ClientProxy.java
#	src/main/java/com/hbm/main/CraftingManager.java
#	src/main/java/com/hbm/main/MainRegistry.java
#	src/main/java/com/hbm/main/ModEventHandlerClient.java
#	src/main/java/com/hbm/main/ModEventHandlerRenderer.java
#	src/main/java/com/hbm/main/ResourceManager.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java
#	src/main/java/com/hbm/util/EntityDamageUtil.java
2024-12-13 12:04:21 -06:00
Bob
c8fe1f3423 my bals 2024-12-12 21:44:32 +01:00
Boblet
bbce45170e why is it called land-mine when it doesn't even belong to me 2024-12-12 16:37:05 +01:00
Boblet
fbe97e8d79 people turn off PVP? 2024-12-11 16:06:51 +01:00
Boblet
7695c189ea too late to turn tail, too good to fail 2024-12-09 16:12:09 +01:00
Bob
f49b832c96 fuck 2024-12-08 22:30:42 +01:00
Bob
da407e6b31 do you dare take a spookie dookie in the skoilet? 2024-12-07 22:48:32 +01:00
Boblet
ddaa086354 armor desc overhaul 2024-12-06 15:19:19 +01:00
Boblet
096c4f4941 hawk tuah 2: eagle tuah 2024-12-05 16:33:13 +01:00
Bob
938d9935bf infrared laser heat ray fuck 2024-12-04 23:30:53 +01:00
Boblet
3e8000a166 get skullanized, idiot 2024-12-04 15:50:59 +01:00
Boblet
ba855a8c0f added high-power skeletonizer engine 2024-12-04 12:06:01 +01:00
Bob
49429c73d9 kill me 2024-12-03 22:27:09 +01:00
Boblet
663f08be56 lasers now turn entities into confetti 2024-12-03 16:40:56 +01:00
Boblet
3b0fe9c14b don't work hard, work smart (while hard) 2024-12-02 14:07:38 +01:00
Bob
142f6a992d ouugh 2024-12-01 20:10:43 +01:00
Bob
b8325218a8 🅱️alls 2024-12-01 00:52:17 +01:00
Boblet
2690b3e96f i want a woman who straight up fucking kills me 2024-11-29 15:05:36 +01:00
Boblet
38ecb23a8e more stupid shit 2024-11-28 16:59:33 +01:00
Bob
dcdc2d9032 yes that deserves its own commit 2024-11-27 23:11:13 +01:00
Boblet
78fa7b2355 variants n shit 2024-11-27 16:49:44 +01:00
Boblet
771938257c fixes, tweaks and other crap 2024-11-25 16:54:25 +01:00
Bob
9192f1cf1b now you're prepped to commit homicide 2024-11-24 21:12:41 +01:00
Bob
e3d8919df5 bullets now determine projectile type, not the guns 2024-11-24 15:44:40 +01:00
Bob
24e0aff405 trotty did nothing wrong 2024-11-23 23:01:38 +01:00
BallOfEnergy1
138e1955ef Merge remote-tracking branch 'refs/remotes/upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/util/CompatExternal.java
#	src/main/java/com/hbm/util/CrucibleUtil.java
#	src/main/java/com/hbm/util/EntityDamageUtil.java
2024-11-21 16:10:02 -06:00
Bob
2a76a6af50 full set bonus handling 2024-11-21 22:15:03 +01:00
Boblet
d791e7e8e4 damage resistance handler crap 2024-11-21 16:45:59 +01:00
Boblet
4469efa601 damage handling crap 2024-11-20 16:48:37 +01:00
HbmMods
b0a90d08f7
Merge pull request #1775 from Voxelstice/turret-compat-fix
Turret CompatExternal fix
2024-11-20 15:46:19 +01:00
Voxelstice
83c209805f The curse
registerTurretTargetingCondition now should work as intended
2024-11-20 17:36:23 +03:00
Boblet
ff405e5aeb custom missile external compat 2024-11-20 09:30:02 +01:00
BallOfEnergy1
3d1ff54dd7 uh oh 2024-11-19 14:43:49 -06:00
BallOfEnergy1
53f20f67a0 Merge remote-tracking branch 'refs/remotes/upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/main/ModEventHandlerClient.java
#	src/main/java/com/hbm/main/ResourceManager.java
#	src/main/java/com/hbm/util/EntityDamageUtil.java
2024-11-19 14:42:25 -06:00
Bob
98ed3fad91 more bolter crap, various fixes 2024-11-18 23:22:15 +01:00
Bob
86e5cd71ce imaginary technique: blunt force trauma 2024-11-17 20:10:30 +01:00
Bob
25b0f19fc7 localization 2024-11-16 22:57:17 +01:00
Bob
9e5724fc5f rather death do us part than shit do its fart 2024-11-16 20:55:43 +01:00
HbmMods
c7f73e2c1d
Merge pull request #1770 from Vaern/hbm
hangman model + texture
2024-11-16 20:54:36 +01:00
Vaern
813f7378bc hangman model + texture 2024-11-16 11:51:37 -08:00
Bob
d66b75b76c "i was in the war" congratulations, i'm gonna be in the next one and
they have laser beams now
2024-11-14 22:50:38 +01:00
Boblet
5e57c86f57 the incredibly impractical mechanism 2024-11-14 16:36:59 +01:00
FOlkvangrField
146e19d463 custom fluid traits fix
Fixed some custom fluid traits buds, like the JSON output error of the polluting trait and the java.lang.InstantiationException issue of the PWRModerator and Pheromone traits. Mean while, the hot reload function of hbmFluidTypes.json and hbmFluidTraits.json has been added.
2024-11-14 21:13:13 +08:00
Bob
ddcb554664 boilerplate crap so i can pretend like i was productive today 2024-11-13 19:09:47 +01:00
HbmMods
e95123c359
Merge pull request #1763 from MellowArpeggiation/master
inspect, jammed, and dry fire animations for SPAS-12
2024-11-13 08:07:56 +01:00
George Paton
586d71911b add Steyr animations 2024-11-13 18:03:33 +11:00
George Paton
08a72afecc add audio to inspect and jammed SPAS-12 animations 2024-11-13 10:07:08 +11:00
Boblet
19bce7c342 explosive fucking buckshot from a peneumatic warhead yeeter 2024-11-12 16:24:31 +01:00
George Paton
26148a277d inspect, jammed, and dry fire animations for SPAS-12 2024-11-12 12:18:11 +11:00
Bob
6bd5c8577b finishing touches on the portable mass extinction machine 2024-11-11 21:23:23 +01:00
Boblet
062fe4205f legalize nuclear bombs 2024-11-11 16:46:46 +01:00
Bob
049bc8c31b go go gadget delete everything in this general area 2024-11-10 22:30:36 +01:00
BallOfEnergy
e3e306b24f small flixes 2024-11-09 23:33:50 -06:00
BallOfEnergy
6e39abcb1a oops, bugfixes!
- Pooled buffers removed due to issues with releasing the memory.
- ExtProps fixed for players/entities; improper deserialization.
2024-11-09 18:48:49 -06:00
BallOfEnergy
9409fba056 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/main/ResourceManager.java
2024-11-09 17:09:17 -06:00
BallOfEnergy
0cc19a4ca4 Merge remote-tracking branch 'origin/Optimization' into Optimization 2024-11-09 17:05:09 -06:00
BallOfEnergy
4bd6f0df53 More shit, also precompiled packets.
also holy shit the whitespace changes, intelliJ wanted to optimize the imports and refactored a ton of whitespace in the process.
2024-11-09 17:04:19 -06:00
Bob
287569fe45 if you hold your foreskin shut while peeing you can do a charged shot 2024-11-09 22:53:29 +01:00
Boblet
cb14ffc638 shotshell recipes, some tweaks 2024-11-08 15:11:01 +01:00
Bob
7d88f73dc6 black powder effects 2024-11-07 22:00:56 +01:00
BallOfEnergy
d056a845e0
Merge branch 'HbmMods:master' into Optimization 2024-11-07 14:46:11 -06:00
Boblet
b9787fa08e the mechanism 2024-11-07 15:50:14 +01:00
Bob
4f60e44f8e let me just *removes entire barrel* 2024-11-06 22:16:39 +01:00
Boblet
e64a21ffd3 recipe crap 2024-11-06 16:37:34 +01:00
BallOfEnergy
88759fb504
Merge branch 'HbmMods:master' into Optimization 2024-11-05 17:53:19 -06:00
Bob
446f2f8c93 stg77 texture 2024-11-05 22:05:10 +01:00
BallOfEnergy
6516ff7aa2
Merge branch 'HbmMods:master' into Optimization 2024-11-05 14:12:38 -06:00
Boblet
1e37d14de2 delete .metadata they said, it'll fix caching issues they said 2024-11-05 16:07:53 +01:00
BallOfEnergy
970485f68c there's actually so many optimizations here that it'd be impossible for be to explain them all 2024-11-04 21:34:48 -06:00
BallOfEnergy
354860c610
Merge branch 'HbmMods:master' into Optimization 2024-11-04 21:17:12 -06:00
Bob
9319fa4088 STG77 2024-11-04 22:13:10 +01:00
Boblet
e6bbd63267 ow 2024-11-04 16:59:46 +01:00
HbmMods
4e82346c5a
Merge pull request #1755 from abel1502/abel-wings
Forgot to remove debug logging
2024-11-03 22:35:55 +01:00
abel1502
7833af674f
Remove debug log spam 2024-11-04 00:34:11 +03:00
Bob
4aea1af8b5 there are spiders under my skin 2024-11-03 21:32:07 +01:00
HbmMods
98193d8e3c
Merge pull request #1753 from abel1502/abel-wings
Jetpack-like wings
2024-11-03 12:08:55 +01:00
Bob
40d5c05b64 :painB: 2024-11-02 23:45:29 +01:00
BallOfEnergy
02e9219b2e Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/extprop/HbmLivingProps.java
#	src/main/java/com/hbm/handler/EntityEffectHandler.java
2024-11-02 15:58:54 -05:00
abel1502
b58ab4520b
Fix wings rendering 2024-11-02 23:44:45 +03:00
abel1502
d39c66ded4
Extend jetpack features to wings 2024-11-02 23:10:58 +03:00
HbmMods
b6f29739a1
Merge pull request #1749 from WolfEclipses/master
German Localization Fixes
2024-11-02 14:20:36 +01:00
HbmMods
8be3cd4943
Merge pull request #1751 from abel1502/abel-take-euphy-home
Allow collecting Euphy's statue with a red key
2024-11-02 14:19:09 +01:00
HbmMods
f21d9230f5
Merge pull request #1752 from abel1502/abel-typo-1
Fix some typos
2024-11-02 14:18:10 +01:00
Bob
a0f6f56279 yet more gun crap 2024-11-02 14:16:44 +01:00
abel1502
6f309f5336
Fix some "it's" vs "its" typos 2024-11-02 02:23:07 +03:00
abel1502
6cc1c09253
Fix drops 2024-11-01 01:24:21 +03:00
abel1502
2f0c25daf8
Allow harvesting statue_elb with a red key 2024-11-01 01:11:05 +03:00
Wolf
beb221af14 new stuff 2024-10-30 23:17:24 -04:00
Wolf
f6911c7730 changes 2024-10-30 21:34:15 -04:00
Wolf
84670a93ba Fixed localization duplicates for German lang 2024-10-30 18:33:47 -04:00
Boblet
2ddb61e5a4 clearly you don't own an M47 WP aerial bomb 2024-10-30 16:50:20 +01:00
HbmMods
98d5633ba7
Merge pull request #1747 from Voxelstice/forcefield-configing
forcefield emitter becomes yet another configurable machine
2024-10-30 07:56:36 +01:00
Bob
acfb786e1a we spiked your explosives with napalm 2024-10-29 21:47:14 +01:00
Boblet
4684058634 crocket 2024-10-29 16:49:26 +01:00
Voxelstice
78cbabf1e6 implement configuration for forcefield emitter
github desktop fucking sucks
2024-10-29 12:52:21 +03:00
Bob
a37dd9e639 better afterburn mechanics 2024-10-28 22:15:34 +01:00
BallOfEnergy
73aff1d158
Merge branch 'HbmMods:master' into Optimization 2024-10-27 23:07:17 -05:00
BallOfEnergy
6443a4c391 Make ExtPropPacket ByteBuf based, along with some other performance improvements such as removing debug fluid net code and making RBMKDials more accepting of new gamerules. 2024-10-27 23:06:40 -05:00
Bob
55bced3b3e fucked up evil weapons 2024-10-27 19:02:46 +01:00
BallOfEnergy
a226685e21 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/main/ModEventHandlerRenderer.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java
2024-10-26 21:17:33 -05:00
Bob
17b667bf3d HUD pain 2024-10-26 01:13:09 +02:00
Boblet
f8de5314f6 it's funny because the gun that's called "broken" is unbreakable 2024-10-25 15:01:12 +02:00
Bob
b57102e4ce four cheese pizza 2024-10-24 21:53:06 +02:00
Boblet
f4018248f1 *BOOM!* *camera zoom noise* *BOOM!* *camera zoom noise* *BOOM!* 2024-10-24 16:36:29 +02:00
HbmMods
82f60873e1
Merge pull request #1744 from MellowArpeggiation/boner-guns
Bones With Guns
2024-10-24 08:35:43 +02:00
George Paton
e94b911a5f shoot a _little_ more frequently 2024-10-24 16:36:13 +11:00
George Paton
847126b7fd inaccuracy now defines cone diameter instead of radius 2024-10-24 16:23:42 +11:00
George Paton
2fed17bac7 Add guns to spawn pool and prevent dropping of guns on death 2024-10-24 16:22:18 +11:00
George Paton
ddfe24e680 Add config option to remove skeleguns 2024-10-24 16:04:01 +11:00
George Paton
557913db64 merge and refactor new content 2024-10-24 15:28:33 +11:00
George Paton
fcfb4e5341 Merge branch 'master' into boner-guns 2024-10-24 15:21:10 +11:00
George Paton
5103577f1d Gun firing AI improvements and skeletons are only given guns when soot is high enough, higher soot adds more powerful weapons 2024-10-24 15:17:31 +11:00
Bob
867a6d38de SHREDDER 2024-10-24 00:14:24 +02:00
Boblet
8f2471986b foundry tweaks, removed more unused crap 2024-10-23 16:21:59 +02:00
Bob
8f135b80d5 .50, bacon medium grease 2024-10-22 22:06:11 +02:00
Boblet
400e0b24ed there are chemicals in my food 2024-10-22 16:36:46 +02:00
George Paton
b6bab36c7f Make guns useable by any EntityLivingBase, and add an AI handler for skeletons to fire them 2024-10-22 15:36:29 +11:00
Bob
10987bee2c lockon funsies 2024-10-21 21:11:45 +02:00
Boblet
038bb626e0 the malicious gigglefish from the silly dimension 2024-10-21 16:34:07 +02:00
BallOfEnergy
b588919736 pushing to prod without testing
woo!!
2024-10-20 14:24:04 -05:00
Bob
17b4a355e5 stinger crap 2024-10-20 20:39:25 +02:00
BallOfEnergy
b64ab034c7 Merge remote-tracking branch 'origin/Optimization' into Optimization 2024-10-20 13:05:55 -05:00
BallOfEnergy
31c6809c65 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/main/ModEventHandlerRenderer.java
2024-10-20 12:54:06 -05:00
Bob
b72a52ef69 imagine looking at indev values and going "yeah this is definitely final
imagine being this much of a fucking idiot, but good thing we aren't that stupid, right? good thing we aren't complete fucking retards who stir though code that is in active development, pick out temporary inconsistencies and then going "oh well the dev must clearly be an idiot, how else could you explain that?", good thing we are reasonable people who aren't this fucking stupid, right?
2024-10-19 21:48:29 +02:00
HbmMods
6898ebe07a
Merge pull request #1739 from Vaern/hbm
added g3 model + wip texture
2024-10-19 14:14:25 +02:00
Bob
be1b1c1df0 one shotgun, two shotgun 2024-10-19 00:32:07 +02:00
Vaern
ef5ed74c65 added g3 model + wip texture 2024-10-18 14:31:00 -07:00
Boblet
805c06c802 in HEAT 2024-10-18 14:13:04 +02:00
Bob
09d11d49da explosive yeeter 2024-10-17 22:22:54 +02:00
Boblet
d271382265 liquid lead cooling (preliminary version, not balanced, no need to yell) 2024-10-17 16:28:54 +02:00
Bob
7d2df857e6 spas12 2024-10-16 22:12:18 +02:00
Boblet
a1401b47e2 my ass is bleeding 2024-10-16 17:00:07 +02:00
BallOfEnergy
1841255b8d
Merge branch 'HbmMods:master' into Optimization 2024-10-15 19:37:35 -05:00
Bob
ee1d3b37cd micro uzi? wrong! macro uzi 2024-10-15 22:44:36 +02:00
Boblet
402690cb87 miserable mutant glyphids 2024-10-15 13:14:18 +02:00
HbmMods
7b8a8e5706
Merge pull request #1734 from abel1502/abel-crates-crafting-fix
Fix mass storage crafting
2024-10-15 10:53:09 +02:00
BallOfEnergy
b4b9042065 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java
2024-10-14 22:02:36 -05:00
BallOfEnergy
e38ce02ccf Upgrade rework, now with 3463% more caching!
(it was slow and needed a redo)
2024-10-14 22:00:39 -05:00
Bob
8e3df0cc22 comically long pistol 2024-10-14 22:56:32 +02:00
abel1502
d27a80fb30
Fix wooden mass storage crafting 2024-10-14 19:31:50 +03:00
Boblet
a9838aedd9 added new explosion effects to more bombs, grabber improvements 2024-10-14 16:48:16 +02:00
BallOfEnergy
42e200ac7a just some final tweaks to make sure that I don't fuck anything up 2024-10-13 17:04:36 -05:00
BallOfEnergy
60536af06c Merge remote-tracking branch 'upstream/master' into Optimization 2024-10-13 15:51:07 -05:00
BallOfEnergy
b63ff682fd Small fixes 2024-10-13 15:50:00 -05:00
BallOfEnergy
94c97bc87a bug fixes part 2
(both me and radium did testing)
2024-10-13 15:27:40 -05:00
Bob
047ebfe8aa better explosion particle effects, flamethrower sound loop 2024-10-13 19:49:31 +02:00
HbmMods
1927110709
Merge pull request #1729 from MellowArpeggiation/master
two bees, or not two bees
2024-10-13 17:07:34 +02:00
HbmMods
c8444cb8b7
Merge branch 'master' into master 2024-10-13 17:07:26 +02:00
Bob
ceb9abbec4 extremely shitty animations 2024-10-13 17:06:46 +02:00
BallOfEnergy
e3cf157501 bug fixes part 1
(thank you radium)
2024-10-13 00:27:55 -05:00
BallOfEnergy
5c909e156f there i fixed it :woo: 2024-10-12 22:32:58 -05:00
BallOfEnergy
ccebbbca24 Holy SHIT! i think i fixed it 2024-10-12 22:14:08 -05:00
BallOfEnergy
4d489bc938 Merge remote-tracking branch 'upstream/master' into Optimization 2024-10-12 22:13:39 -05:00
Bob
44b1604992 eh hehehehehe, fire, FIRE! 2024-10-13 01:05:06 +02:00
George Paton
e57136dc0b yeeth 2024-10-11 22:18:09 +11:00
George Paton
2e2910c2ec
Merge branch 'HbmMods:master' into master 2024-10-11 12:56:52 +11:00
George Paton
c076d4f99b bees v2 2024-10-11 12:56:22 +11:00
BallOfEnergy
063ab4032f yeah these are commits from like a month ago idk what any of this is 2024-10-10 19:44:30 -05:00
BallOfEnergy
88f5ac1cf1 Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/tileentity/TileEntityMachineBase.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityPWRController.java
#	src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java
#	src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java
2024-10-10 19:41:23 -05:00
Bob
19cfc54dee grenade tweaks 2024-10-10 23:21:39 +02:00
Boblet
6d924cbdc5 the rim flappe on a bongfish is mated to the bungus of its fuccbone.
the scrotewad is only present on females above the pootsack (see: snogbag).
2024-10-10 16:53:11 +02:00
HbmMods
ba638e947a
Merge pull request #1727 from MellowArpeggiation/master
BONGO BONGO BONGO I DON'T WANNA LEAVE THE CONGO
2024-10-10 08:04:16 +02:00
George Paton
7c35b1923a Add Congo Lake inspect, jammed, and equip animations, also:
* fix importer breaking nested object offsets (for things like MagPlate inside Mag)
* fix sqrt3d throwing NaN on negative inputs
* >:3
2024-10-10 14:14:11 +11:00
Bob
c7ced50e67 DAY AND NIGHT 2024-10-09 23:19:54 +02:00
Boblet
66711f963e nothing productive for today 2024-10-09 16:25:43 +02:00
Bob
f2b64a82fe cursed 60s quad barrel shotgun from hell 2024-10-09 00:20:08 +02:00
HbmMods
7b127888c8
Merge pull request #1725 from MellowArpeggiation/master
Fixes to bezier fcurves
2024-10-08 20:13:25 +02:00
Boblet
86918a33e6 thorium recipe autogen 2024-10-08 16:54:52 +02:00
George Paton
9f56791abf fixes:
* NaN in `solveCubic`
* degenerate fcurves now autofix
* fix missing swizzle multiplier on export
2024-10-08 22:23:31 +11:00
HbmMods
7e9ee47d47
Merge pull request #1724 from MellowArpeggiation/master
Add support for all Blender f-curve functionality
2024-10-08 10:17:48 +02:00
George Paton
142fec169e taces -> spabs 2024-10-08 19:10:17 +11:00
George Paton
9ae58dfdb3 Support for ALL Blender fcurve functionality!! 2024-10-08 19:07:57 +11:00
Bob
6b0835f19c some very pissed off bees 2024-10-07 22:49:04 +02:00
Bob
41d8fa7478 the PWR longening 2024-10-07 20:22:48 +02:00
Boblet
5819711586 casing smoke is no longer bound to the casing config 2024-10-07 16:47:38 +02:00
HbmMods
060a21a949
Merge pull request #1722 from Vaern/hbm
swarm of angry bees
2024-10-06 22:55:43 +02:00
Vaern
78a33ddedf american 180 model + texture 2024-10-06 13:51:13 -07:00
Bob
cdec9d074d greasy joe, horse leg and 🅱️untsman 2024-10-06 22:37:16 +02:00
HbmMods
fef2074a09
Merge pull request #1715 from abel1502/abel-tiny-silex
Quick way to do #1713
2024-10-04 11:34:25 +02:00
Bob
de238ca0e0 🅱️enry 2024-10-03 21:29:20 +02:00
Boblet
c8d40f0d35 offsets and casing ejection sillies 2024-10-03 16:28:15 +02:00
abel1502
591864a406
Quick way to solve #1713 2024-10-03 13:56:33 +03:00
HbmMods
109e710112
Merge pull request #1712 from abel1502/abel-rbmk-crane
Make RBMK crane rotatable
2024-10-03 08:05:47 +02:00
Bob
59254c7179 the horngus of a dongfish 2024-10-02 22:02:19 +02:00
Boblet
ea895daa85 shells and casings 2024-10-02 16:58:12 +02:00
abel1502
5944999cf9
Fix rbmk crane rotation 2024-10-02 16:21:33 +03:00
abel1502
8da78f6895
Make RBMK crane rotatable visually 2024-10-02 14:07:32 +03:00
Bob
75df8fb945 ATLAS 2024-10-01 21:35:43 +02:00
Boblet
0bdfe286e4 shapes 2024-10-01 16:56:39 +02:00
HbmMods
a4e321f4c9
Merge pull request #1710 from abel1502/abel-strand-caster
Improve strand caster
2024-10-01 07:55:52 +02:00
abel1502
4b59c55c5a
Remove the upgrade, just change the caster 2024-10-01 00:18:24 +03:00
Bob
6cddb3e238 NEI stuff, textures 2024-09-30 22:12:21 +02:00
abel1502
63926ccd4a
Add strand caster unclogging upgrade 2024-09-30 23:04:14 +03:00
Boblet
ad3c4e20ca it's fucking lego! 2024-09-30 16:55:43 +02:00
Bob
a6f694b7b3 GUNMETAL 2024-09-29 20:56:11 +02:00
Boblet
50daf7f8dd texture sheet 2024-09-27 14:35:08 +02:00
Bob
ee895c9bfc WAR 2024-09-26 21:33:17 +02:00
Boblet
f7e804094c it's recoil! 2024-09-26 14:05:48 +02:00
HbmMods
56da81a7ae
Merge pull request #1700 from MellowArpeggiation/push-ups
Revert all that gradle bullshit and do reflection instead
2024-09-26 11:35:29 +02:00
HbmMods
d21f23287b
Merge branch 'master' into push-ups 2024-09-26 11:35:21 +02:00
George Paton
441a46f24f Revert all that gradle bullshit and do reflection instead 2024-09-26 19:27:20 +10:00
Boblet
2584934e0b ended endlessIDs 2024-09-26 11:25:11 +02:00
HbmMods
333c707a5a
Merge pull request #1698 from MellowArpeggiation/push-ups
Upstream Space Shit
2024-09-26 08:28:50 +02:00
George Paton
f2b7ce48dc fuck you gradle 4.4 2024-09-26 16:09:28 +10:00
George Paton
408a03ab47 Fix GL state leak in fluid tank rendering 2024-09-26 13:05:49 +10:00
George Paton
b36cf4213f Horizontal scaffolding 2024-09-26 12:51:29 +10:00
George Paton
8bbed76758 Basalt side textures 2024-09-26 12:50:49 +10:00
George Paton
df5df13396 Fix basalt ores and stalagmites/tites middle-clicking to sulfur 2024-09-26 12:49:40 +10:00
George Paton
5223998fcb middle click fixerrrr 2024-09-26 12:48:47 +10:00
George Paton
15a0f11a74 New basalt textures 2024-09-26 12:44:34 +10:00
George Paton
0f17007306 tabbbbbbbbbbbbbbbs 2024-09-26 12:37:36 +10:00
George Paton
70be7c4cf5 EndlessIDs compat 2024-09-26 12:27:07 +10:00
Bob
2edc4304b5 literally just better mekanism redesign alloys 2024-09-25 22:13:07 +02:00
Bob
eb157ea874 gun jamming 2024-09-25 21:47:45 +02:00
Boblet
0f277657db bullet damage, armor pen, durability stats 2024-09-25 16:45:42 +02:00
Bob
1d92bcbf13 ball and powder torture 2024-09-24 23:53:14 +02:00
Boblet
36a02151bc sure whatever 2024-09-24 16:13:39 +02:00
HbmMods
d4429aa2f8
Merge pull request #1652 from Antineutrino-4444/master
Update zh_CN.lang
2024-09-24 08:14:44 +02:00
HbmMods
d0a61f964a
Merge pull request #1694 from abel1502/abel-cache-packets
Cache tile entity network packets
2024-09-24 08:04:38 +02:00
HbmMods
3ac994c707
Merge pull request #1693 from abel1502/abel-crates-crafting
Fix #1690 (upgrading crates & mass storage)
2024-09-24 07:58:58 +02:00
Bob
b2c2ce9e4e casing ejectors, bullet ricochet 2024-09-23 22:39:38 +02:00
abel1502
c41bdc6886
Fix TileEntityScaffoldDynamic 2024-09-23 18:44:02 +03:00
abel1502
c5fa0c5d2b
Fix builder's choice concrete tooltip 2024-09-23 18:41:57 +03:00
abel1502
df92d913da
Add caching for TileEntityMachineBase update packages
Now they aren't send unless something has changed,
except for one every second as a workaround
for an apparent issue
2024-09-23 18:36:03 +03:00
abel1502
8aad7fb44b
Fix conveyor grabber delay 2024-09-23 18:21:57 +03:00
abel1502
33c8ad70a3
Expand gitignore 2024-09-23 18:21:15 +03:00
abel1502
9942632231
Fix TileEntityScaffoldDynamic 2024-09-23 16:21:57 +03:00
abel1502
cf69c0e4c0
Preserve inventories of crates and mass storages when upgrading 2024-09-23 16:20:17 +03:00
abel1502
d56a9306ff
Expand gitignore 2024-09-23 15:17:12 +03:00
Bob
42b7d1f657 dry fire animations, clicky stuff 2024-09-22 22:52:47 +02:00
Bob
51839e8abb substantial amounts of trolling 2024-09-22 00:03:28 +02:00
Boblet
fcf0f0d2d9 yet more gun stuff! 2024-09-20 15:03:52 +02:00
Bob
ca14f47cbc the malicious gigglefish from the silly dimension 2024-09-19 21:59:18 +02:00
Boblet
b65dd8ef88 minor recipe changes 2024-09-19 16:57:14 +02:00
BallOfEnergy
e7b5240a9d Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts:
#	src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityCore.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnaceRTG.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachinePumpBase.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadGen.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java
#	src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java
#	src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineSolidifier.java
#	src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java
#	src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java
#	src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlAuto.java
#	src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java
#	src/main/java/com/hbm/tileentity/network/TileEntityCraneRouter.java
#	src/main/java/com/hbm/tileentity/network/TileEntityDroneCrate.java
#	src/main/java/com/hbm/tileentity/network/TileEntityDroneRequester.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java
#	src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java
2024-09-18 19:07:46 -05:00
Bob
bc2c2960e3 :PainB: 2024-09-18 21:10:11 +02:00
HbmMods
1faa1b70e2
Merge pull request #1685 from Doctor17-git/master
Updated ru_RU.lang
2024-09-18 07:48:35 +02:00
Bob
1384f14fe3 a ton of gun stuff 2024-09-17 21:30:34 +02:00
Doctor17-git
b5faedba3a
Updated ru_RU.lang
updated russian localization
2024-09-17 17:21:11 +03:00
Boblet
3a81e79554 *pipe falling sound effect* 2024-09-17 15:47:50 +02:00
Boblet
c3bc6c6bba flixes 2024-09-16 16:35:37 +02:00
Bob
ee8089ddf4 my ass is heavy 2024-09-15 22:45:57 +02:00
Boblet
2a81e2c5a7 cleanup 2024-09-13 13:17:51 +02:00
HbmMods
f806dee99f
Merge pull request #1655 from 70000hp/more-more-qol
Settings Tool
2024-09-13 08:12:16 +02:00
HbmMods
23471b1ad1
Merge branch 'master' into more-more-qol 2024-09-13 08:12:03 +02:00
BallOfEnergy
bad3d3f031
Merge branch 'HbmMods:master' into Optimization 2024-09-12 13:06:30 -05:00
HbmMods
89139ec30e
Merge pull request #1669 from 9Valjew/master
Satellite List Command
2024-09-12 16:22:41 +02:00
HbmMods
edd88aed6c
Merge pull request #1672 from 70000hp/miniscule-528-thing
tiny little baby pr
2024-09-12 16:22:13 +02:00
Boblet
85925a54dc fixes 2024-09-12 16:21:56 +02:00
Bob
00f5e8e279 keybind bullshittery 2024-09-10 21:40:39 +02:00
Boblet
699a8759a7 removed a ton of unused crap 2024-09-10 16:44:34 +02:00
70000hp
2b221c880b e
Adds a config for 528 nether burning, and makes nether burning only affect players
2024-09-09 16:04:39 -04:00
BallOfEnergy
a39dbeb2ec
Merge branch 'HbmMods:master' into Optimization 2024-09-08 21:03:31 -05:00
Bob
a0982b09fc please just shoot me 2024-09-08 23:20:53 +02:00
Bob
7f91038b08 conveyor destroyer mode 2024-09-08 21:30:47 +02:00
BallOfEnergy
2706fd2a0c
Merge branch 'HbmMods:master' into Optimization 2024-09-08 14:16:06 -05:00
9Valjews
fffad80638 Added satellite list command 2024-09-08 21:50:34 +03:00
HbmMods
59d54942a3
Merge pull request #1658 from 9Valjew/satunfuck
Xenium Resonator radar Compat
2024-09-08 17:47:07 +02:00
Bob
5d1d96e436 the almighty state machine 2024-09-08 17:45:57 +02:00
BallOfEnergy
7b65e45663 Unused import cleaning! 2024-09-06 22:31:27 -05:00
BallOfEnergy
1bd15dfa78 fixes after the merge conflicts (death) 2024-09-06 22:28:00 -05:00
BallOfEnergy
11a4d5ccf7 Merge remote-tracking branch 'origin/Optimization' into Optimization
# Conflicts:
#	src/main/java/com/hbm/tileentity/TileEntityMachineBase.java
#	src/main/java/com/hbm/tileentity/TileEntityTickingBase.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java
#	src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java
#	src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java
#	src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java
2024-09-06 22:26:53 -05:00
Boblet
0809bc223f Merge master into branch Optimization, intelliJ couldn't do it, so I did it myself. 2024-09-06 22:05:50 -05:00
BallOfEnergy
1195f28d8e holy shit im done (part 2) 2024-09-06 22:04:19 -05:00
BallOfEnergy
851d70d3de part 1 2024-09-06 21:59:06 -05:00
BallOfEnergy
f8e6a60d0f holy shit what the fuck am i smoking 2024-09-06 21:59:06 -05:00
BallOfEnergy
47657366cc the ByteBuf shenanigans begin!! 2024-09-06 21:59:06 -05:00
BallOfEnergy
931bbb3d8c oh my fucking god 2024-09-06 21:59:05 -05:00
BallOfEnergy
bc0d1059d8 i want to kill myself ❤️ 2024-09-06 21:59:03 -05:00
BallOfEnergy
8b5bfda162 more shit 2024-09-06 21:57:32 -05:00
BallOfEnergy
5a06075a9c fix up some imports! 2024-09-06 21:57:30 -05:00
BallOfEnergy
1aea83ad32 i fixed it i fixed it i fixed it i fixed it i fixed it i fixed it
fucking FINALLY
2024-09-06 21:57:00 -05:00
BallOfEnergy
06260e7f2b i am going to kms 2024-09-06 21:57:00 -05:00
BallOfEnergy
a2632a1785 oops 2024-09-06 21:57:00 -05:00
BallOfEnergy
841852cc81 99.999% there
just some more optimization!
(node culling)
2024-09-06 21:56:58 -05:00
BallOfEnergy
639822b48d hooolyyyy shiiiiiiiit
i finally fixed the bug!!!!!!!!!!
2024-09-06 21:56:18 -05:00
BallOfEnergy
e32f67c2b2 this is fucking insane dude
RBMK optimization update soon!!!!!!!
2024-09-06 21:55:28 -05:00
BallOfEnergy
3e487dd528 fuck! 2024-09-06 21:54:17 -05:00
BallOfEnergy
16d2d86add holy shiiiiiiiiiitttt RBMK optimization update 2024-09-06 21:54:14 -05:00
Boblet
b7d0748c26 Merge master into branch Optimization, intelliJ couldn't do it, so I did it myself. 2024-09-06 21:39:50 -05:00
BallOfEnergy
ec15e85e4e holy shit im done (part 2) 2024-09-06 19:43:18 -05:00
Bob
49d49d47e3 this commit has a working faux first person item renderer 2024-09-06 22:11:53 +02:00
Boblet
77cb82b502 item rendering code is stored in the balls 2024-09-06 15:20:08 +02:00
Boblet
32ab93f146 gun crap 2024-09-05 16:59:14 +02:00
BallOfEnergy
f0148a12e9 part 1 2024-09-04 21:55:11 -05:00
BallOfEnergy
4b490d56a1 holy shit what the fuck am i smoking 2024-09-04 21:37:37 -05:00
Bob
833ae407e5 eh 2024-09-04 21:46:08 +02:00
Boblet
c64ca0d40c more gun code 2024-09-04 16:48:58 +02:00
Bob
d227c9d89b more gun crap 2024-09-03 22:45:18 +02:00
Boblet
a3c56e0a11 gun stuff 2024-09-03 16:00:41 +02:00
BallOfEnergy
05ca9203e9 the ByteBuf shenanigans begin!! 2024-09-02 21:39:28 -05:00
BallOfEnergy
bd25da4c1a oh my fucking god 2024-09-02 20:21:12 -05:00
Bob
13ffc6a66a refactor, new keybind system 2024-09-02 22:39:59 +02:00
BallOfEnergy
5902ff5189 i want to kill myself ❤️ 2024-09-02 15:17:07 -05:00
Boblet
2bc76661b0 fixes 2024-09-02 16:44:24 +02:00
BallOfEnergy
e7419ef76b more shit 2024-09-01 19:55:49 -05:00
Bob
5f28c8b289 more assets 2024-09-01 20:21:20 +02:00
9Valjews
37faac3266 Added Xenium Resonator radar compat 2024-08-31 23:53:23 +03:00
9Valjews
e01da0dc81 There was no fucking reason for it so be a seperate item I was just stupid 2024-08-31 23:46:46 +03:00
70000hp
0303477a14 peel off your skim 2024-08-30 18:02:45 -04:00
70000hp
be84276f92 Merge branch 'master' into more-more-qol 2024-08-30 17:34:55 -04:00
70000hp
b5f2bb3355 Merge branch 'master' into more-more-qol 2024-08-30 17:34:39 -04:00
Bob
487503fe87 shitting blood 2024-08-30 22:52:33 +02:00
Boblet
90df232e3d kickstart my shart 2024-08-30 14:43:45 +02:00
BallOfEnergy
9226af0719 fix up some imports! 2024-08-29 21:52:10 -05:00
BallOfEnergy
f245863945 Merge remote-tracking branch 'upstream/master' into RBMK_optimization
# Conflicts:
#	src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java
2024-08-29 21:47:03 -05:00
BallOfEnergy
a8051b8bd9 i fixed it i fixed it i fixed it i fixed it i fixed it i fixed it
fucking FINALLY
2024-08-29 21:44:26 -05:00
70000hp
ffcce8d9bb finishing touches 2024-08-29 20:14:29 -04:00
BallOfEnergy
07a6301774 i am going to kms 2024-08-28 22:37:13 -05:00
Boblet
556e98c0d3 i spent all day doing stupid shit 2024-08-28 16:34:49 +02:00
Bob
e11b9a2a41 lesbian ponies with weapons 2024-08-27 22:27:11 +02:00
70000hp
c135700d7e forgot about the fucking router compat 2024-08-27 15:34:07 -04:00
Boblet
85e3e50d54 ore density scanner HUD fix 2024-08-27 15:42:57 +02:00
β− Decay's Antineutrino
df2aa51f25 Update zh_CN.lang
Updated Chinese translation. Project completed using Paratranz (https://paratranz.cn/projects/11369). Translated untranslated items and refined translation of certain items. Not all items have been reviewed, and further work will be done. Credits are included in Co-Authors.

For those interested in joining the project, check the MCMOD page: https://www.mcmod.cn/class/513.html

Co-Authored-By: Creeper-banner <82984664+Creeper-banner@users.noreply.github.com>
Co-Authored-By: wdsjkkksv <174227161+wdsjkkksv@users.noreply.github.com>
Co-Authored-By: 5467864 <78838200+5467864@users.noreply.github.com>
2024-08-27 12:14:01 +08:00
Bob
b75e0a383c rm -rf 2024-08-26 21:55:37 +02:00
Boblet
a391eda01d legalize 70 ton liquid fuel rocket engines 2024-08-26 16:15:08 +02:00
BallOfEnergy
db8df184cd oops 2024-08-25 22:19:49 -05:00
BallOfEnergy
2e4bdf943f 99.999% there
just some more optimization!
(node culling)
2024-08-25 22:19:04 -05:00
70000hp
8076c77448 Last copy tool lad for a while 2024-08-25 18:10:34 -04:00
Bob
592a2f2410 go go gadget 20 kilobyte template file 2024-08-25 23:10:02 +02:00
70000hp
5de273b5ba five million billion impls
hopefully all fluid impls done outside of the rbmk stuff
Also implemented copy pasting of molten metals, copying from anything that holds molten metal, and pasting into outlets for filters
2024-08-24 14:19:54 -04:00
BallOfEnergy
05cc217bfe hooolyyyy shiiiiiiiit
i finally fixed the bug!!!!!!!!!!
2024-08-24 00:10:20 -05:00
Boblet
7e6ecdefb9 INDEX 2024-08-23 14:23:44 +02:00
Creeper-banner
e681406fec
Merge branch 'HbmMods:master' into bob 2024-08-23 18:45:08 +08:00
Bob
29fb57053d anyway 2024-08-22 22:47:06 +02:00
HbmMods
a14899ad1e
Merge pull request #1625 from RosaTryp/machine-configs
More Machine Configs!
2024-08-22 14:37:16 +02:00
HbmMods
196e544836
Merge pull request #1645 from MellowArpeggiation/master
fix missing FENSU sync (soz bob)
2024-08-22 14:33:35 +02:00
George Paton
0115928304 fix missing FENSU sync (soz bob) 2024-08-22 09:48:21 +10:00
Bob
56cded7415 go go gadget head exploder 2024-08-22 00:31:25 +02:00
RosaTryp
5d394bac15 Merge remote-tracking branch 'upstream/master' into machine-configs 2024-08-21 18:16:23 +02:00
Bob
d0725bb9f0 more battery packs 2024-08-20 23:18:54 +02:00
70000hp
65ae9b45ab some usability improvements 2024-08-20 12:17:31 -04:00
Boblet
b8d24b5c2d battery packs 2024-08-20 16:30:15 +02:00
BallOfEnergy
fce0b08056 this is fucking insane dude
RBMK optimization update soon!!!!!!!
2024-08-19 19:11:54 -05:00
Boblet
680678b5b2 🅱️attery 2024-08-19 16:38:29 +02:00
HbmMods
2f727690b0
Merge pull request #1629 from BallOfEnergy1/OC_bugfix
OC Flixes
2024-08-19 15:48:05 +02:00
HbmMods
0e2b7e09b6
Merge branch 'master' into OC_bugfix 2024-08-19 15:10:57 +02:00
HbmMods
b8eb6586f5
Merge pull request #1642 from MellowArpeggiation/master
Fix Pumpjack sync and ByteBufferize Energy Storage Blocks
2024-08-19 15:06:42 +02:00
George Paton
9ee553fe14 Fix pumpjack tank sync 2024-08-19 12:25:24 +10:00
Creeper-banner
93ca0509c4
Merge branch 'HbmMods:master' into bob 2024-08-19 07:18:01 +08:00
George Paton
402d54d669
Merge branch 'HbmMods:master' into master 2024-08-19 09:17:19 +10:00
BallOfEnergy
84d2528464 kms (fix cutting off of refinery gui) 2024-08-18 15:17:20 -05:00
BallOfEnergy
18bb7f63c4 fuck! 2024-08-18 14:30:34 -05:00
BallOfEnergy
3033d6e08e holy shiiiiiiiiiitttt RBMK optimization update 2024-08-18 14:25:33 -05:00
Bob
1caeec5ea9 d(err)ick 2024-08-18 21:00:27 +02:00
BallOfEnergy
9d59218909 aaaaaaaaaaaaa 2024-08-17 12:26:08 -05:00
Creeper-banner
1073061881
Update zh_CN.lang 2024-08-17 08:01:10 +08:00
70000hp
ec84179e3f god DAMN
Implemented switching between copiable traits + big change in logic thanks martinthedragon
2024-08-16 19:41:53 -04:00
Boblet
8597eda40f inventory peaks 2024-08-16 14:09:01 +02:00
George Paton
f58d97c007 switch TEMachineBattery to bytebuf 2024-08-16 21:57:42 +10:00
BallOfEnergy
89c97abbdc i looked back here and nearly had a fucking stroke from this code 2024-08-15 15:59:01 -05:00
BallOfEnergy
25863311bd New compatibility! This uses OpenComputer's Floppy Disk API, allowing mods to create new loot disks and add them to the tables (this took me a while; I love this system so much, it's my baby ❤️). 2024-08-15 14:13:33 -05:00
Bob
3aef7e1577 i love to drink oil 2024-08-15 20:38:22 +02:00
BallOfEnergy
148a0ab035 whoops!!! 2024-08-14 15:29:50 -05:00
BallOfEnergy
9d0e02cc61 god finally i can get rid of this
Removed Analyzable implementation; terrible idea
Fixed long-standing bug with proxy components, more NBT data!!!
2024-08-14 15:14:08 -05:00
Boblet
9707c4c961 shit 2024-08-14 16:40:42 +02:00
Boblet
6011e9df98 bedrock sellafite 2024-08-14 15:45:58 +02:00
Bob
2ac1b7f622 recipes 2024-08-13 23:27:57 +02:00
Boblet
bd8f3fd01c more fixes 2024-08-13 16:20:33 +02:00
HbmMods
fd1bb4e28d
Merge pull request #1624 from BallOfEnergy1/OC_bugfix
WOO!!
2024-08-13 11:21:53 +02:00
Boblet
1523547467 removed more crap 2024-08-13 11:21:44 +02:00
70000hp
54ec5e7028 Merge branch 'master' into more-more-qol 2024-08-12 17:44:05 -04:00
70000hp
1495dfc2b5 pain 2024-08-12 17:38:15 -04:00
Boblet
d70ea038a0 an big slappy 2024-08-12 16:26:09 +02:00
RosaTryp
8e4d4418b6 Configuration options for ashpit, leviathan turbine and all condensers 2024-08-12 13:56:45 +02:00
BallOfEnergy
b98f2350b6 man i was stupid (fix another bug with CCGT involving starting/stopping) 2024-08-11 23:40:50 -05:00
BallOfEnergy
d8f4b32c05 shit shit shit shit i forgot something 2024-08-11 22:50:31 -05:00
BallOfEnergy
c89f1b411f ughhhh
ok I fixed some bugs with OC compat and added new refinery GUI
(bugs were in CCGT `setThrottle()` function and the TELEX `setSendingText()`)
2024-08-11 22:02:54 -05:00
RosaTryp
bcdd522464 Added config options for industrial steam turbine 2024-08-12 01:26:20 +02:00
RosaTryp
b31105d4d1 Added config options to steam turbine 2024-08-12 00:55:26 +02:00
HbmMods
e6ba0d1e2b
Merge pull request #1615 from Creeper-banner/bob
Update zh_CN.lang
2024-08-10 23:12:39 +02:00
HbmMods
85d3ffae27
Merge pull request #1603 from RosaTryp/machine-configs
Added config options for centrifuge
2024-08-10 23:11:29 +02:00
HbmMods
7411908e7e
Merge pull request #1616 from MellowArpeggiation/master
I fucked up the light recipes
2024-08-10 23:10:58 +02:00
Bob
c560c7d580 missiles with more oomph 2024-08-10 23:10:28 +02:00
Creeper-banner
8fe3912259
Change lore book translations to avoid copyright problems 2024-08-10 22:05:10 +08:00
Creeper-banner
eaaa569a24
Update zh_CN.lang 2024-08-10 19:48:08 +08:00
Creeper-banner
1a5874f6a1
Update zh_CN.lang 2024-08-10 07:15:33 +08:00
George Paton
fc9443b7bf boy I hope somebody got fired for that blunder 2024-08-07 12:54:10 +10:00
Creeper-banner
9ea3196579
Update zh_CN.lang 2024-08-07 07:21:59 +08:00
Creeper-banner
73dd37eaf2
Update and rename zh_CN.lang_ to zh_CN.lang 2024-08-07 06:54:16 +08:00
Creeper-banner
aaa66fcde6
Delete src/main/resources/assets/hbm/lang/zh_CN.lang 2024-08-07 06:54:03 +08:00
Creeper-banner
0a28befc8d
Update and rename zh_CN.lang to src/main/resources/assets/hbm/lang/zh_CN.lang_ 2024-08-07 06:53:49 +08:00
Creeper-banner
0443ead08f
Update zh_CN.lang 2024-08-07 06:51:36 +08:00
Creeper-banner
f88f262383
Merge branch 'HbmMods:master' into bob 2024-08-07 06:47:03 +08:00
Bob
4aa87bc009 just fuck em 2024-08-07 00:11:18 +02:00
Creeper-banner
5217d24904
Update zh_CN.lang 2024-08-06 07:40:36 +08:00
70000hp
622330b4cf forgor 2024-08-05 19:19:24 -04:00
Bob
9ebcab3244 fixes, plushies 2024-08-05 00:47:32 +02:00
70000hp
90d552c03a the power of friendship isn't working anymore
I need to kill this motherfucker
2024-08-03 19:26:15 -04:00
70000hp
492d6520ae Merge branch 'master' into more-more-qol 2024-08-03 17:23:35 -04:00
HbmMods
522c4e1b24
Merge pull request #1608 from MellowArpeggiation/master
Accurate collision geometry on chemplant and assembler
2024-08-03 13:14:46 +02:00
Bob
aaaaac92eb fixes, recipe changes 2024-08-03 13:11:14 +02:00
George Paton
18e1542663 fuck you *adjusts your collision* 2024-08-03 19:12:30 +10:00
Bob
f97076bb94 guh 2024-08-02 23:43:19 +02:00
RosaTryp
6d33277df0
Merge branch 'HbmMods:master' into machine-configs 2024-07-31 08:10:46 +00:00
Bob
7ba7f8c6c6 models 2024-07-30 23:14:04 +02:00
RosaTryp
8aebde12bb Added config options for centrifuge 2024-07-30 22:37:51 +02:00
70000hp
d379e1e3a0 Merge branch 'master' into more-more-qol 2024-07-28 12:11:15 -04:00
Bob
44585d3c8b baa 2024-07-24 13:31:25 +02:00
70000hp
ef586c78c0 Merge branch 'master' into more-more-qol 2024-07-20 20:28:21 -04:00
70000hp
164ec9a192 Settings tool and first impl 2024-07-20 20:28:13 -04:00
Boblet
8e767e51e3 ultra shit sounds 2024-07-19 11:56:38 +02:00
Boblet
8a200a50bd better particle spawner structure, killed off boilers 2024-07-18 16:04:41 +02:00
Boblet
b3047c875e welcome to super cancer world 2024-07-17 16:38:05 +02:00
Boblet
efee0706af you can, in fact, wire a WIAJ into a particle renderer 2024-07-17 10:37:12 +02:00
Boblet
83f8c5a7f9 why 2024-07-16 16:30:03 +02:00
Boblet
02c9582b21 fuck, whatever 2024-07-15 14:29:53 +02:00
Boblet
f8465b5071 flixes 2024-07-15 13:11:13 +02:00
Bob
7896c0443a the death of RNG 2024-07-14 20:48:35 +02:00
HbmMods
eaaa78c384
Merge pull request #1584 from FOlkvangrField/Configurable-Converter
Added conversion ratio configuration options for Rf and He in hbmMachines.json for the two converters
2024-07-14 13:37:35 +02:00
Bob
e7428fb5ab camera, lights, action 2024-07-14 13:35:28 +02:00
FOlkvangrField
d17b1cb4f0 Added conversion ratio configuration options for Rf and He in hbmMachines.json for two converters 2024-07-14 19:18:49 +08:00
Boblet
01830fd877 as straightforward as the nordring 2024-07-12 14:56:47 +02:00
HbmMods
9b0bd4d180
Merge pull request #1576 from 70000hp/electrolyzer-electric-boogaloo
Electrolyzer improvements part 2
2024-07-11 16:06:06 +02:00
Boblet
28e1fdd7f5 cleanup 2024-07-11 16:05:25 +02:00
70000hp
301a932257 cant win with friends and family 2024-07-11 09:48:51 -04:00
HbmMods
6951c73aa4
Merge pull request #1521 from 70000hp/NEI-schenanigans
NEI schenanigans
2024-07-11 08:44:58 +02:00
70000hp
7f666ecaff Fixed items with meta not working + mass storage support 2024-07-10 13:38:45 -04:00
70000hp
d4e9a5d010 Autocrafter uncluttering and drag drop support 2024-07-10 13:02:30 -04:00
70000hp
851d6fb0bf Merge branch 'master' into NEI-schenanigans 2024-07-10 12:16:45 -04:00
Boblet
ef228577d9 the heinous slop 2024-07-10 16:33:33 +02:00
70000hp
8c7b359815 all my homies hate dust 2024-07-09 12:35:01 -04:00
70000hp
1797df5ac1 Merge branch 'master' into electrolyzer-electric-boogaloo 2024-07-09 11:58:40 -04:00
Boblet
27bc38caaa NEI universal handler fix 2024-07-09 16:17:23 +02:00
70000hp
9f4794e01f Merge branch 'master' into electrolyzer-electric-boogaloo 2024-07-08 17:38:25 -04:00
Bob
962686d29e blerp 2024-07-08 22:41:47 +02:00
HbmMods
958a099bac
Merge pull request #1571 from 70000hp/electrolyzer-improvements
Electrolyzer Improvements part 1
2024-07-08 21:39:57 +02:00
Boblet
ae995509e5 recipe tweaks 2024-07-08 16:56:14 +02:00
70000hp
3120268a64 Electrolyzer Improvements part 1
Changes:
Halfed recipe time for water/heavy water electrolysis
Added ore slop electrolysis recipe
Added electrolyzer overdrive support
Rebalanced the power savings upgrade
speed and overdrive upgrades now make the electrolyzer pour out faster
2024-07-08 10:16:15 -04:00
Boblet
b31cb80fa3 tweaks 2024-07-05 15:25:04 +02:00
Boblet
bcaeeab194 the funny 2024-07-04 16:04:37 +02:00
Boblet
49bfc216e6 shit nobody asked for 2024-07-03 16:10:45 +02:00
Bob
b317362c75 models 2024-07-02 23:00:19 +02:00
HbmMods
da80ec858a
Merge pull request #1569 from Doctor17-git/master
Updated ru_RU.lang
2024-07-02 14:32:51 +02:00
HbmMods
f3e354174a
Merge pull request #1568 from BallOfEnergy1/OC_bugfix
sowwy bob
2024-07-02 14:31:58 +02:00
Boblet
2eb341ee33 well that was a massive waste of time 2024-07-02 14:31:12 +02:00
Doctor17-git
492a10cdf8
Updated ru_RU.lang
updated russian localization
2024-07-02 12:03:10 +03:00
BallOfEnergy
ee32fff9be
Change default config value
100 -> 200
2024-07-02 03:20:24 -05:00
BallOfEnergy
604849c3a7
Merge branch 'HbmMods:master' into OC_bugfix 2024-07-02 02:44:50 -05:00
BallOfEnergy
867827f3a3 Merge remote-tracking branch 'origin/OC_bugfix' into OC_bugfix 2024-07-02 02:44:20 -05:00
BallOfEnergy
e1226c94be sowwy 2024-07-02 02:44:06 -05:00
Boblet
34fbf2ecbe the partitioning 2024-07-01 14:10:54 +02:00
Bob
7d1aeb378b yeah whatever 2024-06-30 18:56:27 +02:00
Bob
b111b0cff8 the slop consumes 2024-06-30 16:03:23 +02:00
HbmMods
2be3c60e59
Merge pull request #1557 from 70000hp/drone-stuffs
Drone stuffs
2024-06-30 10:13:08 +02:00
HbmMods
cd55e8d810
Merge pull request #1550 from Hacker6400/master
New it_IT.lang translation
2024-06-30 10:12:26 +02:00
HbmMods
1644cfbf91
Merge pull request #1562 from MellowArpeggiation/master
Add overlay tooltip to Solar Boiler
2024-06-30 10:11:48 +02:00
George Paton
17bee07c88 Add ILookOverlay to Solar Boiler and sync tank levels to connected clients 2024-06-30 13:15:10 +10:00
70000hp
1f4ad4bdfe Adding mellow's nice little helper function
Also includes the conveyor extractor implementing it as a reference
2024-06-29 19:28:37 -04:00
Bob
ec52959304 the creation of slop 2024-06-29 22:26:52 +02:00
70000hp
4951975d99 Merge branch 'master' into NEI-schenanigans 2024-06-29 13:40:41 -04:00
BallOfEnergy
c6868b6c6b
Merge branch 'HbmMods:master' into OC_bugfix 2024-06-28 14:37:49 -05:00
BallOfEnergy
7022dcd1af fix issues with artillery proxy OC compat
also fix a big sound system issue where other mods would run out of sound memory on the sound card if they loaded after NTM reserved 1000 CHANNELS
2024-06-28 14:37:28 -05:00
Boblet
6fff2b6195 slopper 2024-06-28 14:03:17 +02:00
Boblet
f2e9f60e0d more bedrock ore info 2024-06-28 11:52:40 +02:00
HbmMods
09af834a99
Merge pull request #1558 from BallOfEnergy1/OC_bugfix
oops (fixing OC bug)
2024-06-28 11:08:50 +02:00
BallOfEnergy
773db3c54c Merge remote-tracking branch 'origin/OC_bugfix' into OC_bugfix 2024-06-28 03:59:32 -05:00
BallOfEnergy
c2b0343d2f this was a terrible idea looking back on it
revert all the shtuff related to RBMK rods and only making them connect downwards (it would break 99% of existing setups)
2024-06-28 03:59:05 -05:00
BallOfEnergy
3bcfe743c8
Merge branch 'HbmMods:master' into OC_bugfix 2024-06-28 03:45:39 -05:00
BallOfEnergy
0e439714ea whoops... 2024-06-28 03:45:09 -05:00
HbmMods
c866e9c541
Merge pull request #1540 from BallOfEnergy1/OC_bugfix
OC Compatibility part 2: the return of the `@Callback`
2024-06-28 08:19:07 +02:00
BallOfEnergy
6c141e3841 ok this one is a pretty big bug; restructured some radar compat. 2024-06-27 22:41:47 -05:00
BallOfEnergy
0a5c4271f4 smallest fixes ever 2024-06-27 21:25:26 -05:00
BallOfEnergy
72e4cb42e0
Merge branch 'HbmMods:master' into OC_bugfix 2024-06-27 21:09:59 -05:00
70000hp
0456b5bf2a
Merge branch 'master' into drone-stuffs 2024-06-27 18:59:09 -04:00
70000hp
2dc7792860 Redstone support for logi drones 2024-06-27 18:01:04 -04:00
Bob
205742eda5 the almighty perlin noise 2024-06-27 22:19:57 +02:00
Boblet
456a7251d4 a metric fuckton of recipes 2024-06-27 16:37:13 +02:00
Bob
65d9f82b7d slop 2024-06-26 21:51:32 +02:00
Boblet
725a3a8a10 bedrock ore item autogen 2024-06-26 15:19:45 +02:00
Boblet
7eb8eef1f0 slop textures 2024-06-25 16:11:19 +02:00
70000hp
205b537318 fixed drones not placing themselves back properly 2024-06-24 17:55:13 -04:00
70000hp
f868048b1e Revert "no delay for spawning, woo"
This reverts commit 071d3603212285531eb91b0406c671811bee1810.
2024-06-24 11:52:19 -04:00
Boblet
485fbd35da combinator funnel item caching 2024-06-24 16:29:49 +02:00
Bob
b0ae1c8cee config crap, player deco and some fixes 2024-06-23 22:25:48 +02:00
Boblet
07a2dcc295 *deletes half the mod* 2024-06-21 14:36:37 +02:00
Boblet
6c96d88541 mh yes 2024-06-21 10:57:44 +02:00
Hacker6400
b9c3684969
Merge branch 'master' into master 2024-06-19 23:30:46 +02:00
Hacker6400
7023ddb5c2
Add files via upload
Added new translation
2024-06-19 23:21:26 +02:00
Boblet
79cfe0b6c4 yippie 2024-06-19 15:58:12 +02:00
Bob
a016dd906a fixes 2024-06-18 20:45:16 +02:00
70000hp
3596cfedb0 nah nvm
no recipe tweaks
2024-06-16 18:43:58 -04:00
70000hp
071d360321 no delay for spawning, woo 2024-06-16 18:37:29 -04:00
Bob
dda1025fe2 fixes and tweaks 2024-06-16 23:37:10 +02:00
Bob
10002e0c41 PRISM complete 2024-06-16 19:39:59 +02:00
HbmMods
f9075c9247
Merge pull request #1544 from Vaern/hbm
cyclotron touch-up
2024-06-16 15:10:43 +02:00
Vaern
b1b0ba0a93 flixes 2024-06-15 21:35:25 -07:00
HbmMods
a2870e17b1
Merge pull request #1542 from MellowArpeggiation/master
Fix powernet disconnections
2024-06-16 00:06:59 +02:00
70000hp
9481dd490b Drone viability improvements
increased drone speed, tweaked drone recipes
2024-06-15 12:56:34 -04:00
George Paton
7cc50e8ce3 Deglobalize the NodeWorld nodes, dimensions were all sharing the same nodespace! 2024-06-15 13:54:16 +10:00
HbmMods
95a6fa5a76
Merge pull request #1541 from Vaern/hbm
mass byte bufferization
2024-06-14 12:54:28 +02:00
HbmMods
396c53ee4c
Merge pull request #1539 from MellowArpeggiation/master
Fix grate placement crash on servers
2024-06-14 12:48:32 +02:00
BallOfEnergy
6e5b689ed2 New OC Compatibility system! 2024-06-13 20:01:10 -05:00
BallOfEnergy
9d1e20df0f ICF reactor compat done
pellet compat too

probably gonna make a base OC machine class just to fill the name field
2024-06-12 17:47:30 -05:00
Vaern
872f2beb55 mass byte bufferization 2024-06-12 15:43:19 -07:00
BallOfEnergy
b6125ac24f ITER/fusion compat done
blankets, fluid, energy, everything!
2024-06-12 16:30:29 -05:00
BallOfEnergy
45cdf2c823 launch pad compat!!
ITER compat and ICF compat next probably
2024-06-12 16:18:25 -05:00
BallOfEnergy
634804fa2e stupid 2024-06-11 22:14:22 -05:00
BallOfEnergy
7f652931a0 begin work on launch pad compat (again) 2024-06-11 22:10:31 -05:00
BallOfEnergy
a8d3d7e5bd this pisses me off bad
TELEX compatibility

yes it can do multiple lines
yes it limits the amount of characters
yes you have to do the control bytes yourself (Bell, Print, etc.)
2024-06-11 18:03:26 -05:00
BallOfEnergy
bc45b66052 Force PWR to use doubles as control rod values, round to 100s place when displaying to prevent floating-point errors looking terrible.
also add cable gauge and radar compat
telex is next
2024-06-11 16:28:59 -05:00
BallOfEnergy
f1ed151f6b add distance check and begin work on radar OC compat!!!! 2024-06-10 22:35:23 -05:00
BallOfEnergy
3dbb81f337
Merge branch 'HbmMods:master' into OC_bugfix 2024-06-10 21:21:07 -05:00
BallOfEnergy
f2ed1e897d welcome to the age of OC controlled turrets and artillery 2024-06-10 20:46:39 -05:00
George Paton
6ce3ff1a5c guraeto daze 2024-06-11 11:24:57 +10:00
Bob
5010f8812b PRISM pt. 2 2024-06-10 22:08:40 +02:00
Boblet
c645889998 flixes 2024-06-10 16:32:58 +02:00
70000hp
3195cf650e anti piracy feature begone 2024-06-09 18:03:39 -04:00
Bob
da9c44e108 *throws 155 pound anvil at you* 2024-06-09 21:03:47 +02:00
HbmMods
ca1948fa6f
Merge pull request #1533 from MerrittK/crucible
Added magtung crucible recipe
2024-06-09 10:56:21 +02:00
HbmMods
458dd79b3c
Merge pull request #1535 from BallOfEnergy1/OC_bugfix
worlds smallest PR
2024-06-09 10:55:56 +02:00
BallOfEnergy
df34a51913 another small fix 2024-06-08 22:25:59 -05:00
BallOfEnergy
dcac56d4e2 add set color function 2024-06-08 21:06:38 -05:00
BallOfEnergy
5b77cc7697 smallest fix known to man 2024-06-08 21:01:52 -05:00
Bob
a21a0934a6 the malicious gigglefish from the silly dimension 2024-06-09 01:12:53 +02:00
70000hp
d67bbe9c53 Transport drone visualization + fixed low angles for drones 2024-06-08 18:55:05 -04:00
MerrittK
1769d743be Added magtung crucible recipe 2024-06-08 13:38:45 -04:00
HbmMods
49ddcd6f85
Merge pull request #1531 from MellowArpeggiation/master
ByteBuf string reader/writer + performance improvements
2024-06-07 18:55:15 +02:00
Boblet
443d73e3ad PRISM 2024-06-07 14:45:28 +02:00
George Paton
2960c29918 Add ByteBuf string reader/writer, and migrate the biggest CPU time offenders to ByteBuf packets 2024-06-07 18:20:43 +10:00
HbmMods
6a4552a858
Merge pull request #1530 from MellowArpeggiation/master
Fix grate placement and rendering issues
2024-06-07 07:52:54 +02:00
George Paton
7d26a51c6b Fix funky placement issues 2024-06-07 14:25:46 +10:00
George Paton
0c26d45a71 Fix sunk grate side rendering, and prevent sunk placements over air blocks 2024-06-07 13:24:10 +10:00
HbmMods
b9e87b0d30
Merge pull request #1529 from MellowArpeggiation/master
grate
2024-06-06 15:43:31 +02:00
Boblet
ad45288d5f the soldering 2024-06-06 15:42:51 +02:00
George Paton
7eb8900c13 crouch-clicking is grate 2024-06-06 21:15:43 +10:00
Bob
bc1a6e17d3 balls (with reverb) 2024-06-05 21:05:41 +02:00
Boblet
14c5941bab even more throughput 2024-06-05 12:11:18 +02:00
Boblet
8618de3f1c guh 2024-06-04 16:25:19 +02:00
HbmMods
e296fbf636
Merge pull request #1525 from MellowArpeggiation/fence
fenc
2024-06-04 07:41:23 +02:00
George Paton
811a1b92c1 T and X junctions now render posts too 2024-06-04 11:23:51 +10:00
George Paton
27cf5ca091 Fence blocks can be converted into posts 2024-06-04 11:07:53 +10:00
Bob
b3cf22e91a yeah. sure. why not. 2024-06-03 21:23:36 +02:00
HbmMods
9357983184
Merge pull request #1522 from MellowArpeggiation/master
Replace codechicken MathHelper with minecraft MathHelper
2024-06-03 15:57:50 +02:00
HbmMods
891317b54d
Merge pull request #1515 from Ruslanllll/master
Reacher in 528
2024-06-03 15:54:02 +02:00
Boblet
c93ff4faaf comically expensive 2024-06-03 15:41:22 +02:00
George Paton
5241ff661b Automatic fence posts 2024-06-03 19:26:38 +10:00
George Paton
209c1b1691 Replace scala Arrays with java.util Arrays (asList is equivalent) 2024-06-03 17:13:47 +10:00
George Paton
3b160158c1 and the hits keep coming 2024-06-03 17:08:40 +10:00
George Paton
df7675c48e I _might_ be stupid 2024-06-03 17:06:57 +10:00
70000hp
dce3bf8937 fixed logistics drones obliterating items from existance 2024-06-02 19:41:06 -04:00
70000hp
543dd059af drone improvements part 1
fixed the dumb idiot logic that got it stuck all the time
2024-06-02 18:28:33 -04:00
70000hp
518a949306 my bONES 2024-06-02 12:50:52 -04:00
70000hp
eb8155b11b Container base class to make life easier 2024-06-01 15:23:47 -04:00
Bob
bdbe821d9d dosenbier 2024-05-31 10:05:09 +02:00
HbmMods
58815a0b31
Merge pull request #1517 from 70000hp/fast-stair
when the stairs (and slabs) are speedy
2024-05-31 08:31:43 +02:00
70000hp
211beb1e4c when the stairs (and slabs) are speedy 2024-05-30 19:27:33 -04:00
Ruslanllll
d99ac8508f
Reacher working in 528 mode 2024-05-30 12:55:37 +03:00
Boblet
02b56d2eb5 recipes 2024-05-29 16:46:37 +02:00
HbmMods
19c9de43b6
Merge pull request #1512 from Pvndols/master
tenfolded CCGT max power production
2024-05-28 21:58:37 +02:00
Bob
18734b77bc oredict 2024-05-28 21:01:20 +02:00
Boblet
23b710deae let's get silly 2024-05-28 16:30:14 +02:00
Pvndols
2dd5400f8f i eat batteries
tenfolded max power
2024-05-28 16:26:14 +02:00
HbmMods
d4bf13630b
Merge pull request #1508 from Vaern/fixes
Internal Renaming System for Fluids
2024-05-27 19:52:52 +02:00
HbmMods
5072f003a5
Merge branch 'master' into fixes 2024-05-27 19:52:44 +02:00
Bob
493356e73e UTI 2024-05-27 19:47:34 +02:00
Bob
6f2494b8c8 why does it hurt when i pee 2024-05-27 19:46:49 +02:00
Boblet
34092c375d bash it with a rock a couple of times 2024-05-27 16:06:06 +02:00
Vaern
6f86dc4db2 preliminary changes 2024-05-26 23:02:54 -07:00
HbmMods
9f567135d2
Merge pull request #1506 from Doctor17-git/master
Updated ru_RU.lang
2024-05-26 21:22:57 +02:00
Doctor17-git
49892f4640
Updated ru_RU.lang 2024-05-26 22:19:59 +03:00
HbmMods
a75615b8e9
Merge pull request #1505 from MartinTheDragon/master
Prevent EntityItemBuoyant from floating on falling water
2024-05-26 21:17:38 +02:00
Doctor17-git
a1fb7b6a40
Updated ru_RU.lang 2024-05-26 22:16:59 +03:00
Bob
8217dcfb1f shut the fuck up 2024-05-26 21:16:43 +02:00
MartinTheDragon
b1369a365a
Prevent EntityItemBuoyant from floating on falling water 2024-05-26 21:00:44 +02:00
Bob
b1fd87cae4 recipes, soldering station automation 2024-05-25 20:53:41 +02:00
Boblet
7dfba03dff the wire re-wireing 2024-05-24 15:03:17 +02:00
Bob
41f9b41ef9 sold(i)er TF2 2024-05-23 23:12:29 +02:00
Boblet
1f94b6b7a6 arc furnace recipe crap, soldering station 2024-05-23 16:06:43 +02:00
Boblet
6da3baf1fa arc furnace recipe autogen 2024-05-22 16:46:20 +02:00
Hacker6400
dcb2551ec9
Update it_IT.lang
I've translated all the error book of the particle accelerator
2024-05-21 21:25:17 +02:00
Bob
40cc6e009e the axe-pack 2024-05-21 21:22:32 +02:00
HbmMods
6d0095d39b
Merge pull request #1497 from Hacker6400/Hacker6400-patch-2
Hacker6400 patch 2
2024-05-21 10:43:50 +02:00
Hacker6400
058cf7cd91
Update and rename it_IT .lang to it_IT.lang 2024-05-20 22:19:04 +02:00
Hacker6400
88c0b2fba6
Delete src/main/resources/assets/hbm/lang/it_IT.lang 2024-05-20 22:18:26 +02:00
Hacker6400
dda5004fb3
Delete src/main/resources/assets/hbm/lang/it_IT - Copia.lang 2024-05-20 22:18:02 +02:00
Bob
39a855afdd lighting fix 2024-05-20 21:58:58 +02:00
Hacker6400
69098a4b99
Update and rename it_IT .lang to it_IT.lang 2024-05-20 20:04:46 +02:00
Hacker6400
4e7722530d
Delete src/main/resources/assets/hbm/lang/it_IT - Copia.lang 2024-05-20 20:04:11 +02:00
Hacker6400
d8e9b0106a
Delete src/main/resources/assets/hbm/lang/it_IT.lang 2024-05-20 20:03:47 +02:00
Bob
f39b5a0e2c crushin' crushin' (the second) 2024-05-20 19:28:46 +02:00
Hacker6400
9c5be3c86a
Update it_IT.lang
I have traslate and rewrite some words to the italian language but it's not ready yet. I think it will take some time but the result could may very good.
2024-05-20 15:44:23 +02:00
Hacker6400
9d5007fa9c
Add files via upload 2024-05-20 15:36:15 +02:00
Hacker6400
560f2c4805
Add files via upload 2024-05-20 15:33:18 +02:00
Hacker6400
f4b7e42a60
Add files via upload 2024-05-20 13:59:11 +02:00
Bob
d6a364515e more arc furnace crap 2024-05-19 23:43:31 +02:00
Bob
af53a9b09f i need to finger the wall outlet with a fork 2024-05-19 00:22:33 +02:00
Boblet
e975a558ea arc furnace stuff 2024-05-17 15:19:47 +02:00
Boblet
f9748b59f2 guh 2024-05-16 14:54:28 +02:00
Boblet
503b3b15d7 making the voices stop - angle grinder edition 2024-05-15 15:06:08 +02:00
HbmMods
384e81116a
Merge pull request #1491 from 70000hp/soot-moment-and-bugs
for the love of god
2024-05-15 07:53:57 +02:00
70000hp
342ac0dbd9 for the love of god 2024-05-14 17:28:25 -04:00
Bob
19a0bb0132 stats, fixes 2024-05-14 21:05:22 +02:00
Boblet
c38362ae2a textures, silicon 2024-05-14 16:14:27 +02:00
Bob
0365876e99 textures 2024-05-13 22:53:10 +02:00
Boblet
e12cb46093 fixes 2024-05-13 16:23:28 +02:00
HbmMods
18d807eacf
Merge pull request #1487 from Doctor17-git/master
Updated ru_RU.lang
2024-05-13 08:06:39 +02:00
Doctor17-git
a4044c8697
Updated ru_RU.lang
updated russian localization
2024-05-12 23:41:39 +03:00
Bob
e273b494a4 recipes 2024-05-12 22:32:18 +02:00
HbmMods
52821f7b52
Merge pull request #1483 from 70000hp/soot-moment-and-bugs
Soot moment and bugs
2024-05-12 12:33:33 +02:00
Bob
47d75369bd more ICF crap 2024-05-12 12:32:41 +02:00
Bob
be9a87c6af amputation 2024-05-11 20:47:19 +02:00
70000hp
81a3c19e88 Added smokestack support to fluid burning lads 2024-05-10 16:52:38 -04:00
Boblet
5558b8c2a7 finished pellet press, textures 2024-05-10 14:29:48 +02:00
HbmMods
053f5f7b77
Merge pull request #1478 from MellowArpeggiation/master
Improve RBMK render performance (and explosion rework whoops)
2024-05-09 19:31:47 +02:00
Bob
664d251e14 constant restructuring 2024-05-09 19:30:44 +02:00
George Paton
3a5a35a92a Fix indentation, ensuring all tabs 2024-05-09 11:17:44 +10:00
Boblet
ffd0b19620 ICF pellet press 2024-05-08 16:36:47 +02:00
George Paton
1c9c7f47fb
Merge branch 'HbmMods:master' into master 2024-05-08 17:48:29 +10:00
George Paton
1734e45646 Explosive block rework:
* All blocks now spawn entities when destroyed by an explosion, rather than instantly exploding
* Explosive/Waste barrels now fly off as an entity, exploding when contacting a surface
* All other explosives instead spawn a zero tick entity to prevent a stack overflow while retaining existing behaviour
* onShot behaviour added to simplify blocks that should explode when shot at
2024-05-08 13:16:20 +10:00
George Paton
d3e7a9b857 Improve RBMK render CPU performance by switching to VBOs 2024-05-07 16:16:46 +10:00
George Paton
f7dc67eef8 Fix foundry basin inventory rendering 2024-05-07 12:15:11 +10:00
George Paton
87f36271e2 wiki renderer improvements 2024-05-07 12:14:42 +10:00
70000hp
78f9d19b8d fixed bug spawning for good i hope 2024-05-06 18:29:21 -04:00
Bob
fca9fe50da GUI time 2024-05-06 21:46:30 +02:00
Boblet
ed79ad396e pellet stats 2024-05-06 15:49:48 +02:00
Bob
6c234df753 some more of that 2024-05-05 20:50:39 +02:00
HbmMods
c5ae579ab9
Merge pull request #1470 from el3ctro4ndre/master
Adding Italian translation
2024-05-05 19:21:18 +02:00
HbmMods
7ad83d5ae8
Merge pull request #1475 from Doctor17-git/master
Updated ru_RU.lang
2024-05-05 19:14:26 +02:00
HbmMods
fadd6490e8
Merge branch 'master' into master 2024-05-05 19:14:11 +02:00
Doctor17-git
6ee2acf0da
Updated ru_RU.lang 2024-05-05 20:09:33 +03:00
HbmMods
d96c0e4016
Merge pull request #1472 from MellowArpeggiation/master
Fix crash on RBMK meltdown near spotlights
2024-05-05 18:48:10 +02:00
Bob
d88dd38f20 ignition! 2024-05-05 18:44:41 +02:00
George Paton
5dedbd3728 Fix crash on RBMK meltdown near spotlights 2024-05-05 22:50:49 +10:00
Doctor17-git
2703c43365
Updated ru_RU.lang 2024-05-05 10:59:44 +03:00
Bob
39ca87d7a9 the feds are trying to poison me 2024-05-04 22:23:19 +02:00
Andrea
20b834929c
Adding more Italian translation 2024-05-04 10:48:14 +02:00
Andrea
91eb8f726c
Adding Italian translation (WIP) 2024-05-04 10:43:16 +02:00
Andrea
fd51c05a5e
Create it_IT.lang 2024-05-04 10:40:46 +02:00
HbmMods
f64daaa5c8
Merge pull request #1468 from MellowArpeggiation/master
Some more Angelica rendering fixes
2024-05-03 14:52:57 +02:00
Boblet
810038bb60 lasers, pew pew 2024-05-03 14:48:17 +02:00
George Paton
c8067c6568 Fix localization typos 2024-05-03 13:15:40 +10:00
George Paton
c8e7187481 some dingbat forgot to change some door models to the VBO loader (it's me, I'm the dingbat) 2024-05-03 13:14:44 +10:00
Bob
b72b66a083 (it's tia's PJ) 2024-05-02 22:10:02 +02:00
Boblet
696bef065e gooey 2024-05-02 16:32:04 +02:00
HbmMods
ec2468bb18
Merge pull request #1463 from 70000hp/small-tweaks
Small tweaks
2024-05-02 07:53:13 +02:00
HbmMods
338868e77d
Merge pull request #1465 from Majora320/master
Fix quotes in resource file
2024-05-02 07:52:33 +02:00
Bob
ef1e4653ce at a snail's pace 2024-05-01 20:57:51 +02:00
Moses Miller
d88e9eb1f9 Fix quotes in resource file 2024-04-30 08:19:01 -07:00
Boblet
31aa445f31 texture update 2024-04-30 15:54:22 +02:00
Bob
085bde4b99 ICF block stuff 2024-04-29 21:57:18 +02:00
70000hp
949c6dbe0b FUCK YOU GLOWSTONE 2024-04-28 11:56:33 -04:00
70000hp
51a5905546 handful of anvil scrapping recipes 2024-04-28 11:51:23 -04:00
HbmMods
2014609d51
Merge pull request #1459 from Vaern/master
Switch plutonium for neptunium from schraranium processing
2024-04-27 23:32:27 +02:00
Bob
0ab784b7c7 more ICF crap 2024-04-27 23:27:05 +02:00
Bob
cce163f84c wabbledee 2024-04-25 21:17:38 +02:00
Vaern
1efc984d43
Update SILEXRecipes.java
durgh
2024-04-24 13:56:40 -07:00
Vaern
e7324365fa
Update ElectrolyserMetalRecipes.java
hurgh
2024-04-24 13:55:43 -07:00
Vaern
5bb2a802ff
Update CentrifugeRecipes.java 2024-04-24 13:54:15 -07:00
Boblet
e4567bec16 the malicious gigglefish from the silly dimension 2024-04-23 16:11:30 +02:00
HbmMods
3331224e28
Merge pull request #1455 from Vaern/master
i had to switch gears on em
2024-04-23 08:18:07 +02:00
Vaern
0e72180e41 i had to switch gears on em, fish-tail in the rear view mirr-on em
skrttt!
2024-04-22 22:49:03 -07:00
Boblet
3ab501682d even more spring cleaning 2024-04-22 16:15:49 +02:00
Bob
0edf9a42fa and that's that 2024-04-21 21:11:36 +02:00
HbmMods
92fd9014a8
Merge pull request #1452 from 70000hp/aaargh
Aaargh
2024-04-21 18:19:32 +02:00
Bob
5934a17d90 [frantic autism music starts playing] 2024-04-21 18:13:25 +02:00
70000hp
f6ff864d21 Merge branch 'aaargh' of https://github.com/70000hp/Hbm-s-Nuclear-Tech-GIT into aaargh 2024-04-21 12:07:00 -04:00
70000hp
0bb49b1285 Merge branch 'aaargh' of https://github.com/70000hp/Hbm-s-Nuclear-Tech-GIT into aaargh 2024-04-21 11:36:42 -04:00
70000hp
c6eba58fa6 hopefully a serverside crash fix 2024-04-21 11:02:54 -04:00
Bob
13aaa627b2 bronze 2024-04-20 23:41:49 +02:00
Bob
9eaeddca32 that oughta do it 2024-04-20 17:30:33 +02:00
Boblet
d7664c79da power net: compromise edition 2024-04-19 15:21:43 +02:00
Boblet
3460e8dcef and some more fixes 2024-04-18 14:56:08 +02:00
HbmMods
d25a350efa
Merge pull request #1445 from MellowArpeggiation/angelica
Replace DisplayLists with VBOs (Improved Angelica support)
2024-04-18 10:47:58 +02:00
George Paton
8d244baf12 Reduce visibility of VBOBufferData 2024-04-18 17:26:15 +10:00
George Paton
dc8ec31ccd Allow render distances greater than 16 with Angelica installed 2024-04-18 17:17:29 +10:00
George Paton
3c760ba95d Fix up door rendering, moving it to a more generic interface 2024-04-18 17:14:04 +10:00
George Paton
b9fa946440 Fix connected texture blocks not rendering 2024-04-18 16:05:22 +10:00
George Paton
24001a0ae8 Replace DisplayLists with VBOs!
Gotta fix the door rendering though, elided for now
2024-04-18 14:26:20 +10:00
Boblet
efa001ad28 sound engine bullshittery 2024-04-17 16:13:36 +02:00
Boblet
17a9d824aa some fixes, smeltable diamonds and emeralds 2024-04-17 11:32:41 +02:00
HbmMods
664dbd6657 Revert "Merge pull request #1429 from 70000hp/NHNEI-compat"
This reverts commit ef169ac06e51b73b0bb03f25044c07f424080257.
2024-04-17 10:14:36 +02:00
Boblet
5b41c3d83a paintable pylon wires 2024-04-16 14:54:06 +02:00
HbmMods
ef169ac06e
Merge pull request #1429 from 70000hp/NHNEI-compat
GTNH NEI Compat
2024-04-15 14:07:53 +02:00
HbmMods
99f1f6ab06
Merge pull request #1426 from MellowArpeggiation/qol
QoL changes
2024-04-15 14:05:00 +02:00
HbmMods
c0d48730a3
Merge pull request #1425 from 70000hp/yeag
Tweaks for glyphids
2024-04-15 14:02:57 +02:00
Boblet
673628bc02 just keep whacking it until it behaves 2024-04-15 13:30:23 +02:00
Bob
9206755363 kaboom 2024-04-14 21:23:28 +02:00
HbmMods
49e30bf1b0
Merge pull request #1433 from Doctor17-git/master
Updated ru_RU.lang
2024-04-14 17:20:29 +02:00
Bob
bed04f4311 plylons
bylons

plons
2024-04-14 17:18:57 +02:00
Doctor17-git
d106b0205e
Updated ru_RU.lang
updated russian localization
2024-04-14 18:15:26 +03:00
HbmMods
1f271f6b23
Merge pull request #1432 from HbmMods/TSPA
guess what TSPA stands for
2024-04-14 14:23:06 +02:00
Bob
0c111b159a DIE 2024-04-14 14:22:40 +02:00
Bob
e87984cc39 can we get this over with 2024-04-14 14:20:20 +02:00
Bob
8442ee4940 i hope i step on a landmine 2024-04-13 19:51:59 +02:00
Boblet
be3147c80d We must construct additional pylons!! 2024-04-12 13:45:42 +02:00
Boblet
9c7a96d867 CRUSHIN' CRUSHIN' (the second) 2024-04-12 09:42:23 +02:00
70000hp
c66bd21fcc my brain hurts 2024-04-11 18:45:30 -04:00
Bob
e5dffd3d2a NEITHER SNOW NOR RAIN NOR THE GLOOM OF NIGHT 2024-04-11 21:58:47 +02:00
Boblet
c16818c15d i can hear satan's voice, he's telling me to invest in apple.
what does this mean? why does he want me to buy apples??
2024-04-11 16:08:04 +02:00
Boblet
ba58f42ef2 I will kill Horse Ronald Reagan when I become 23 years old 2024-04-10 16:10:55 +02:00
George Paton
879ce28ad9 Allow infinite fluid barrels to fill pressurized tanks 2024-04-10 10:59:15 +10:00
George Paton
93f03208fa Modify GUIs for existing machines that require compressors 2024-04-10 10:21:33 +10:00
George Paton
76ca5c0a93 Prevent players skipping fluid pressurization by just chucking fluid container into machines 2024-04-10 09:29:29 +10:00
Bob
b661b89334 SISTOR! DID YOU USE ALL MY DIAMONDS TO MAKE JUKEBOXES?
yeag
2024-04-09 20:57:33 +02:00
Boblet
c9c6549340 everything is falling the fuck apart 2024-04-09 16:55:53 +02:00
Bob
b1e2fbbbbc congress should pass a bill barring me from using a PC ever again 2024-04-08 20:44:48 +02:00
Boblet
a9c6405f41 project mkultra 2024-04-08 16:44:48 +02:00
George Paton
0b8332d525 Play full counts if the player also has a regular counter 2024-04-07 17:23:59 +10:00
George Paton
180234e245 Integrated geiger counters now generate audio based on dosage AFTER protection 2024-04-07 16:39:33 +10:00
George Paton
0146e82866 Change structure/dungeon configs to be trinary (true|false|flag) 2024-04-07 13:41:48 +10:00
George Paton
30969b281f Automatically focus search box in Multi Fluid Identifier 2024-04-07 11:40:13 +10:00
70000hp
acd2e96c64 minor behemoth buff 2024-04-06 13:34:44 -04:00
70000hp
ebeb276e94 some more stuffs 2024-04-06 10:15:54 -04:00
Boblet
1618d9be12 enough for today, my head hurts 2024-04-05 14:51:36 +02:00
70000hp
319ab19e01 the ferocious leapers 2024-04-04 19:32:03 -04:00
Bob
3cb6e855a8 # WE ARE SO FUCKING BACK 2024-04-04 19:35:03 +02:00
70000hp
fb765174dd moremore light logic 2024-04-03 17:42:10 -04:00
Boblet
7ab30aa136 Do you know what this means? It means that
this damn thing doesn't work at all!
2024-04-03 14:48:50 +02:00
Boblet
7b6467fb37 my head hurts 2024-04-02 14:41:26 +02:00
HbmMods
2519ac3943
Merge pull request #1416 from MellowArpeggiation/wiki
Inventory item rendering for Wiki
2024-04-02 08:05:38 +02:00
HbmMods
4cd53def61
Merge pull request #1415 from 70000hp/augh
bob i swear to god
2024-04-02 08:03:48 +02:00
HbmMods
38a3e11167
Merge pull request #1417 from CM436/master
Fixed steam particles config option
2024-04-02 08:03:29 +02:00
CM436
f4ba0ce7e4 fixed cooling tower config option 2024-04-01 20:16:23 -06:00
George Paton
4e416f18b6 Correctly remove escape sequences from parsed names 2024-04-02 09:56:19 +11:00
70000hp
d844e7ff2a bob i swear to god 2024-04-01 18:44:22 -04:00
Bob
43d3d03df5 nodespace bullshit 2024-04-01 20:56:19 +02:00
George Paton
a259ba716f Include subitems too, with rules for items like RBMK pellets
Ignore unlocalized items
2024-04-01 20:36:30 +11:00
George Paton
6c8677f2c7 Press CTRL+0+1 to fart and sneeze simultaneously 2024-04-01 15:23:51 +11:00
Bob
2bb43e5136 god i love huffing gasoline 2024-03-31 22:49:18 +02:00
HbmMods
6f91612282
Merge pull request #1409 from 70000hp/tiny-beb-pr
Slag tap Improvements, Channel speedup, and caster fixes
2024-03-31 22:01:18 +02:00
HbmMods
1893aab49c
Merge pull request #1407 from CM436/master
Config option to disable cooling tower particle emissions
2024-03-31 22:00:30 +02:00
Bob
f904636517 we're in a rush now 2024-03-31 21:55:59 +02:00
Bob
62d6408558 the shell re-shellening 2024-03-30 22:05:46 +01:00
70000hp
21495449e0 Channel and caster tweaks 2024-03-30 14:11:53 -04:00
70000hp
5fd71bdca4 yeag 2024-03-29 20:07:09 -04:00
CM436
b28d34d554 fix indentation
once again some random minor thing got changed by accident
2024-03-29 11:19:45 -06:00
CM436
20499eb80e remove a single character
most useless change ever but i'm new to this stuff and overly cautious of fucking things up
2024-03-28 11:17:52 -06:00
CM436
f1b444bac9 Revert "added whitespace"
This reverts commit 628a9474acf831ec7f1148b1fc6b49637a5cb700.
2024-03-28 11:12:13 -06:00
CM436
628a9474ac added whitespace
why not
2024-03-28 11:03:47 -06:00
CM436
f4c0ed3f4c removed one line of code
intellij added this thing and i have no clue what it does, removing it doesn't break anything
2024-03-28 10:58:18 -06:00
CM436
e6bfea837a config option for cooling tower particles
added a config option to disable the particles emitted by cooling towers when on "all" or "decreased" particle settings
2024-03-27 16:16:47 -06:00
Bob
71cdc4c788 FUCK 2024-03-25 21:10:20 +01:00
Boblet
7be71dfb99 fixes, foxes, flixes 2024-03-25 14:38:29 +01:00
Bob
1b24a1d860 power net crap 2024-03-23 23:04:30 +01:00
Bob
4869dbb1c8 my eyes are burning 2024-03-21 21:58:49 +01:00
Bob
b65abb526f i can taste colors 2024-03-20 21:07:13 +01:00
Vaern
689393f00b Merge remote-tracking branch 'origin/master' 2023-06-26 14:01:42 -07:00
Vaern
705f051c50 Phosphor vines 2023-05-21 16:37:44 -07:00
5207 changed files with 565117 additions and 398078 deletions

16
.editorconfig Normal file
View File

@ -0,0 +1,16 @@
root = true
[*]
charset = utf-8
end_of_line = crlf
indent_style = tab
indent_size = tab
insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = off
[{*.info,*.json,*.mcmeta,*.md,*.cfg,*.yml,*.toml}]
tab_width = 2
[{*.info,*.mcmeta,*.cfg}]
end_of_line = lf

62
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,62 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
# Yes this is a mostly untouched Github actions template
name: Java CI with Gradle
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'temurin' # Temurin because it's default :P
# Calculate days since 10/10/10
- name: Calculate days since 10/10/10
id: calculate_days
run: |
start_date="2010-10-10"
current_date=$(date +%Y-%m-%d)
days_since=$(( ($(date -d "$current_date" +%s) - $(date -d "$start_date" +%s)) / 86400 ))
echo "days=$days_since" >> $GITHUB_OUTPUT
# Update version files with proper sed syntax
- name: Update version files
run: |
days=${{ steps.calculate_days.outputs.days }}
# Use proper sed syntax for Linux runners
sed -i "s/public static final String VERSION = \".*\";/public static final String VERSION = \"1.0.27 BETA ($days)\";/" src/main/java/com/hbm/lib/RefStrings.java
sed -i "s/mod_build_number=.*/mod_build_number=$days/" gradle.properties
# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
- name: Setup Gradle
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
- name: Build with Gradle Wrapper
run: ./gradlew build
- name: Upload a Build Artifact
uses: actions/upload-artifact@v4.6.0
with:
# A file, directory or wildcard pattern that describes what to upload
path: ./build/libs

33
.gitignore vendored
View File

@ -1,25 +1,28 @@
# eclipse
eclipse
bin
*.launch
.settings
.metadata
.classpath
.project
/eclipse
/bin
/*.launch
/.settings
/.metadata
/.classpath
/.project
# idea
out
*.ipr
*.iws
*.iml
.idea
/out
/*.ipr
/*.iws
/*.iml
/.idea
# gradle
build
.gradle
/build
/.gradle
# vscode
/.vscode
# other
run
/run
# CurseForge configuration
/curseforge.properties

View File

@ -13,6 +13,8 @@ Things you should also avoid include:
* duplicate util functions (just use what we have, man)
* unused or half finished util functions (for obvious reasons)
* half finished or obviously broken features (à la "bob will fix it, i'm sure of it", please don't do that)
* updating the changelog (you're guaranteed to cause a merge conflict with that)
* any use of `I18n`, use `I18nUtil` instead
## Test your code
@ -20,6 +22,9 @@ This should go without saying, but please don't PR code that was never actually
**Addendum:** Because apparently some people think that testing is somehow optional, it is now **mandatory** to test the code both on a client and on a server. If the PR contains compat code, the game has to work **with and without** the mod that the compat is for.
## No refactor PRs
Your refactors suck ass and usually something ends up breaking.
## Communication
If you're planning on adding some new thing or doing a grand change, it's best to ask whether that's a good idea before spending 50 hours on a project that won't end up getting merged, due to issues that could have been entirely avoidable with communication.
@ -30,11 +35,9 @@ This ties together with the previous point - there's no guarantees that your PR
## I want to help but don't know where to start
If you want to help the project, consider getting involved with the [wiki](ntm.fandom.com) first. Writing an article is the easiest and quickest way of helping, and requires no programming knowledge. If you do know Java and want to help, consider these places first:
If you want to help the project, consider getting involved with the [wiki](https://nucleartech.wiki/) first. Writing an article is the easiest and quickest way of helping, and requires no programming knowledge. If you do know Java and want to help, consider these places first:
* Localization, i.e. translations in different language are always accepted.
* `IConfigurableMachine`, an interface that allows machines to be added to the `hbmMachines.json` config, is still not used by many machines.
* F1 Presentations, also known as "Stare" or "Jar Presentations", is a neat system of creating a short movie explaining functionality. All the relevant code can be found in `com.hbm.wiaj`.
* Some guns still use the old "bow-style" systems and not `ItemGunBase`.
* Many guns don't have any animations whatsoever, just adding a minor recoil would already improve them by a lot.
* Adding tooltips to more machines, explaining some of the basics.

View File

@ -2,14 +2,19 @@
[NTM on Modrinth](https://modrinth.com/mod/ntm)
[NTM on CurseForge](https://minecraft.curseforge.com/projects/hbms-nuclear-tech-mod?gameCategorySlug=mc-mods&projectID=235439)
[NTM on CurseForge](https://www.curseforge.com/minecraft/mc-mods/hbms-nuclear-tech-mod)
[Official NTM Wiki](https://nucleartech.wiki/wiki/Main_Page)
[Bobcat's Blog (the blag)](https://hbmmods.github.io/), you can find lengthy yapping, upcoming features and some secrets here.
**This is for 1.7.10!** For 1.12, check out these projects:
* NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases
* NTM Community Edition (WarFactory): https://github.com/MisterNorwood/Hbm-s-Nuclear-Tech-CE
* NTM Extended Edition (Alcater): https://github.com/Alcatergit/Hbm-s-Nuclear-Tech-GIT/releases
* NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases
For 1.18, try Martin's remake: https://github.com/MartinTheDragon/Nuclear-Tech-Mod-Remake/releases
For 1.18, try Martin's remake: https://codeberg.org/MartinTheDragon/Nuclear-Tech-Mod-Remake/releases
## Downloading pre-compiled versions from GitHub
@ -20,7 +25,7 @@ Simply navigate to "Releases" on the right side of the page, download links for
Tired of waiting until the next version comes out? Here is a tutorial on how to compile the very newest version yourself:
Please note that these installation instructions are assuming you're running Microsoft Windows operating system. Linux users should know what to do by looking at the same guide.
1. Make sure you have JDK8 installed. If not, download it from [adoptium.net](https://adoptium.net/?variant=openjdk8&jvmVariant=hotspot)
1. Make sure you have JDK8 installed. If not, download it from [adoptium.net](https://adoptium.net/temurin/releases?version=8)
2. If you don't have git installed, download&install it from [here](https://git-scm.com/downloads).
3. Open up "Git Bash":
* Press Windows Button, type "Git Bash" and press ENTER
@ -91,9 +96,29 @@ If you want to make some changes to the mod, follow this guide:
* Click **Add Standard VM**; in the JRE home, navigate to the directory where the JDK is installed, then click finish and select it.
10. Code!
## Contributing animations
Weapon animations in NTM are stored in JSON files, which are used alongside OBJ models to produce high quality animations with reasonable filesizes. Import/Export Blender addons are available for versions 2.79, 3.2, and 4.0 in `tools`, and they should function reasonably well in newer versions as well. See the comments in the header of the export scripts for usage instructions.
## Compatibility notice
NTM has certain behaviors intended to fix vanilla code or to increase compatibility in certain cases where it otherwise would not be possible. These behaviors have the potential of not playing well with other mods, and while no such cases are currently known, here's a list of them.
### Thermos
Thermos servers (along with its forks such as Crucible) have a "performance" feature that causes all tile entity ticking to slow down if there's no player present in the same chunk. For obvious reasons, this will heavily impact machines and cause phantom issues that, not having knowledge of this "performance" feature, are near impossible to diagnose. By default, NTM will crash on servers running the Thermos base code and print a lengthy message informing server owners about this "performance" feature as well as how to fix the issues it causes. The error message is printed in plain English on the top of the crash log, failure to read (as well as understand) it will leave the server inoperable.
### Shaders
Shaders (loaded by either Optifine, Iris or otherwise) will in all likelihood break when a gun is held. This is because guns need to skip vanilla's first person item setup for the rendering, however shaders apparently use the setup step for setting certain GL states, and skipping that will break rendering. [Shader Fixer](https://modrinth.com/mod/shader-fixer) is a mod with various fixes, among which is explicit compatibility for NTM's guns.
### Optifine
One of the most common "performance" mods on 1.7.10, Optifine, achieves an increase in performance by breaking small things in spots that are usually hard to notice, although this can cause severe issues with NTM. A short list of problems, along with some solutions, follows:
* Get rid of Optifine and use one of the many [other, less intrusive performance mods](https://gist.github.com/makamys/7cb74cd71d93a4332d2891db2624e17c).
* Blocks with connected textures may become invisible. This can be fixed by toggling triangulation (I do not know what or where this setting is, I just have been told that it exists and that it can fix the problem) or multicore chunk rendering (same here).
* Entity "optimization" has a tendency to break chunkloading, this is especially noticeable with missiles which rely heavily on chunkloading to work, causing them to freeze mid-air. It's unclear what setting might fix this, and analysis of Optifine's source code (or rather, lack thereof) has not proven useful either.
### Angelica
In older versions, Angelica caused issues regarding model rendering, often times making 3D models transparent. Ever since the switch to VBOs, models work fine. Another issue was blocks with connected textures not rendering at all, but this too was fixed, meaning as of time of writing there are no major incompatibilities known with Angelica. However there a few minor issues that persist, but those can be fixed:
* Often times when making a new world, all items appear as white squares. Somehow, scrolling though the NEI pages fixes this permanently
* Reeds will render weirdly, this is an incompatibility with the "Compact Vertex Format" feature. Disabling it will make reeds look normal. Alternatively, reed rendering can be disabled by using `/ntmclient set RENDER_REEDS false`, which works around the issue by not rendering the underwater portion of reeds at all.
### Skybox chainloader
NTM adds a few small things to the skybox using a custom skybox renderer. Minecraft can only have a single skybox renderer loaded, so setting the skybox to the NTM custom one would break compatibility with other mods' skyboxes. To mend this, NTM employs a **chainloader**. This chainloader will detect if a different skybox is loaded, save a reference to that skybox and then use NTM's skybox, which when used will also make sure to run the previous modded skybox renderer. In the event that NTM's skybox were to cause trouble, it can be disabled with the config option `1.31_enableSkyboxes`.
@ -106,5 +131,14 @@ An often overlooked aspect of Minecraft is its stats, the game keeps track of ho
### Keybind overlap
An often annoying aspect of modded Minecraft is its keybinds. Even though multiple binds can be assigned the same key, all but one will show up as "conflicting" and only the non-conflicting one will work. Which one this is is usually arbitrary, and there is no reason to have such limitation. Often times keybinds are only applicable in certain scenarios, and a commonly found degree of overlap is within reason. Therefore, NTM will run its own key handling code which allows conflicting keybinds to work. If there should be any issues with this behavior, it can be disabled with the config option `1.34_enableKeybindOverlap`.
### Render distance capping
There is a common crash caused by Minecraft's render distance slider going out of bounds, this usually happens when uninstalling a mod that extends the render distance (like Optifine) or when downgrading the Minecraft version (newer versions have higher render distance caps). To prevent crashes, the mod will attempt to decrease the render distance if it's above 16 unless Optifine is installed. If this behavior is not desired (for example, because another mod that allows higher render distance is being used), it can be disabled with the config option `1.25_enableRenderDistCheck`.
### Log spam caused by ComparableStack
In some modpacks (exact mods needed to replicate this are unknown), it's possible that invalid registered items may cause problems for NEI handlers. To prevent crashes, the ComparableStack class used to represent stacks will default to a safe registered item, and print a log message. In certain situations, this may cause dozens of errors to be printed at once, potentially even lagging the game. If that happens, the log message (but not the error handling) can be disabled with the config option `1.28_enableSilentCompStackErrors`.
### Sound system limit
By default, the sound system only allows a limited amount of sounds to run at once (28 regular sounds and 4 streaming sounds), this causes issues when there's many machines running at once, since their looped sounds will constantly interrupt each other, causing them to immediately restart, which in some isolated cases has proven to cause massive lagspikes. To prevent this, NTM will increase the sound limit to 1000 regular sounds and 50 streaming sounds, this can be disabled with the config option `1.39_enableSoundExtension`.
# License
This software is licensed under the GNU Lesser General Public License version 3. In short: This software is free, you may run the software freely, create modified versions, distribute this software and distribute modified versions, as long as the modified software too has a free software license (with an exception for linking to this software, as stated by the "Lesser" part of the LGPL, where this may not be required). You win this round, Stallman. The full license can be found in the `LICENSE` and `LICENSE.LESSER` files.

View File

@ -6,6 +6,7 @@ import java.nio.file.StandardCopyOption
buildscript {
repositories {
maven { url = 'https://maven.ntmr.dev/proxy/' }
maven { url = 'https://maven.minecraftforge.net/' }
maven { url = 'https://plugins.gradle.org/m2' }
mavenCentral()
@ -67,14 +68,34 @@ eclipse.classpath.file.whenMerged { cp ->
}
repositories {
maven {
name = 'Blerg'
url = 'https://maven.ntmr.dev/proxy/'
}
maven {
name = 'ModMaven'
url = 'https://modmaven.dev'
}
maven {
name = "gt"
url = "https://gregtech.mechaenetia.com/"
}
//maven {
// name = "CurseForge"
// url = "https://minecraft.curseforge.com/api/maven/"
//}
maven {
name = "Jitpack"
url = "https://jitpack.io"
}
maven {
name = "CurseMaven"
url = "https://cursemaven.com"
}
maven {
name = "OpenComputers"
url = "https://maven.cil.li/"
}
}
dependencies {
@ -87,8 +108,11 @@ dependencies {
implementation 'codechicken:NotEnoughItems:1.7.10-1.0.3.74:dev'
compileOnly 'codechicken:NotEnoughItems:1.7.10-1.0.3.74:src'
//compileOnly 'inventory-tweaks:InventoryTweaks:1.62+beta.84:api'
compileOnly "inventorytweaks:InventoryTweaks:1.59-dev:deobf"
implementation "li.cil.oc:OpenComputers:MC1.7.10-1.5.+:api"
compileOnly "com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta.56-GTNH:dev"
}
processResources {

View File

@ -1,66 +1,27 @@
## Added
* More axes
* Bismuth, volcanic, chlorophyte and mese tool materials now have axes
* Axes also double as offensive weapons, being a lot more powerful than their pickaxe counterparts
* Drainage pipe
* Spills fluid, allowing to void up to 1.000mB per tick
* Might slightly alter the landscape, depending on whether the fluid was poisonous
* Viscous, flammable liquids cause oil spill blocks to appear
* Not all liquids have the appropriate pollution stats yet, the system is still subject to change
## Changed
* After three quarters of a decade, three separate models, countless rebalances and hours of senseless yapping, the industrial generator has finally met its end. Suddenly, yet not unsurprisingly, on this here day the industrial generator has closed its eyes for the final time. It was a long and eventful journey, but as with all things in life, it too had to come to an end.
* And this is why we can't ever have anything nice
* Rebalanced glyphids
* We'll see how it goes
* Still prone to changes, there's still a few inconsistencies and some behavior has barely been tested it all, but I have consulted the almighty spreadsheet and it said "yeah it ok"
* Did some spring cleaning
* Removed cloud residue (looked horrible, allowed for weird dupes and made no sense overall)
* Bottlecap blocks now use a single block ID and metadata instead of using one ID per type. This change however will delete all existing bottlecap blocks in the world
* Removed the config option for silos (the option no longer works anyway since the new silos use the structure component system)
* Finally removed the deaerator and the large shredder
* Removed some of the ancient test blocks that haven't been needed in about 8 years
* Removed all the siege blocks, since siege mode will never be finished anyway
* Removed reinforced niter
* Removed a few other minor things that won't be mentioned because nobody's gonna even notice their absence anyway
* Retextured the laser detonator to look more like the old detonator, but keeping the 3D model
* Bedrock ores can now be customized in creative mode. Using a drillbit sets the tier, a fluid container sets the borefluid requirement and any other item sets the resource.
* The texture used is random, and the color applied is based on the auto detect system. The system doesn't work with layered items, so the resulting color won't be the same as naturally generated bedrock ore. The bedrock ore item in particular will always result in a white ore, no matter the type
* The polluting fluid trait is now recognized by machines, which means that pollution amounts now depend on the fluid used, not the machine
* This means that flare stacks are now significantly less polluting, assuming natural gas is burned
* Flare stacks and barrels now also respect the spilling tag, which means that simply venting the gas may cause poison pollution
* Hydrogen doesn't have the polluting tag, so hydrogen burning generators won't create soot anymore
* Compressing blood no longer creates oil, rather it makes heavy oil (250mB)
* Tier 2 pickaxes (bismuth and up) now use the large item renderer
* Added the metal block material to the sellafite conversion list of nuclear explosions
* Changed the mechanics for schottky particle diodes
* Instead of randomizing directions, schottky diodes will now split particles into "virtual particles" which take mutliple paths at once
* The particles will collapse as soon as the first virtual particle with a valid outcome reaches the end
* This change allows branching accelerators to be made, where the particle will always take the shortest path necessary to complete the operation. In essence, it allows a single accelerator to do any recipe, without requiring to power the entire accelerator, as only the path of the finishing particle will use up energy.
* The particle accelerator as well as the schottky particle diodes now have presentations explaining how they work
* Loot pools are now configurable. Loot is divided into different categories, and structures may generate things from certain categories.
* The config currently includes all items spawned in dungeon chests/crates/safes/lockers, excluding black book spawns, but also including the loot pool for red room pedestals
* Also added satellites as configurable loot pools. Yay!
* Pylons and wire connectors now use a texture instead of a solid colored wire
* The cable model has been simplified, being only a single face instead of three faces stuck inside each other at weird angles
* Cables now sag slightly more at long ranges
* There are now configs for toggling the startup message as well as the guidebook
* Cybercrab spawners will only start spawning as soon as a player is within 25 blocks of the spawner
* Improved inventory shift-clicking for the FEL, assembler, chemplant, large mining drill, gas centrifuge, shredder and turbofan
* Updated chinese localization
* Updated russian localization
* Rad absorbers now use metadata, existing blocks will be converted automatically
* Fissure bombs that go off in crater biomes now create fissures with metadata 1 which creates radioactive volcanic lava
* If a crater biome is created on top of an existing fissure, it will keep producing normal volcanic lava
* Simplified the battery socket's client packets, reducing CPU load
* Muzzle flashes on guns now work in third person mode, including on other players and on NPCs, making it more apparent when you're being fired at
* This includes non-standard special effects like the .44 gap flash and the .35-800 ejector plume
* Removed the old unused satelite deco blocks, freeing up 6 block IDs
* Crucibles that smelt metal with no template set will no place the metal in the recipe stack instead of the waste stack, this should make it easier to get a recipe to work in the many, many cases where people add the template after smelting the material
* Battery sockets and the FENSU now support the copy tool
* Removed unused displaylist support from the model loader
* DLs have been long phased out in favor of VBOs anyway
* Rebranded canned horse slime
* Now with extra bone marrow
* Updated the deuterium tower's model
* Increased the energy requirement for welding osmiridium
## Fixed
* WarTec should now be compatible again
* Fixed the "Hold shift for more info" line appearing on fluid info when shift is held, and disappearing otherwise
* Fixed smokestacks being able to void any fluid under certain conditions
* Fixed the hydrotreater only using half as much crude oil per operation as it should
* Fixed the old launchpad printing the wrong message when successfully launched via detonator
* Oil spills should no longer save, fixing an issue where chunkloaded derricks would constantly spill oil entities into unloaded chunks, causing them to get stuck
* Fixed schrabidium conversion happening outside the main crater instead of inside
* Fixed wood burning generator creating smoke even if no power is being generated
* Fixed one of the woodburner's ports being offset in certain orientations
* Fixed fog caching causing weird behavior with the sky color change in response to crater biomes (or lack thereof)
* Fixed "F1 for help" keybind not working on non-standard inventories such as the NEI item list
* Fixed pylon wire rendering having incorrect corrdinates for brightness checks
* Fixed dupe caused by shift clicking certain slots in the fusion reactor
* Fixed snowglobe rendering lighting setup leak causing blocks rendered after them in inventory to not have correct lighting
# Fixed
* Potentially fixed yet another issue regarding crates
* Fixed battery socket `fillpercent` RoR function always assuming a max power of 1
* Fixed issue where multiblock ports would generate many OpenComputers component entries
* Fixed RBMK automatic control rods having incorrect settings when using the copy tool
* Fixed battery sockets producing junk debug data in the logs
* Fixed an issue where the charging station would crash when trying to charge certain items
* Fixed the DFC's core component not dropping its contents when mined
* Fixed audio problems with guns

View File

@ -1,21 +1,80 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=4914
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\
\ porting), UFFR (RTGs, guns, casings, euphemium capacitor), Pu-238 (Tom impact effects), Bismarck\
\ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\
\ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\
\ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\
\ (calculator, chunk-based fallout, bendable cranes, pipe improvements), haru315 (spiral point algorithm),\
\ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002\
\ (project settings), Nos (models), Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie\
\ (reacher radiation function), Toshayo (satellite loot system, project settings, gradle curse task), Silly541\
\ (config for safe ME drives), Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1\
\ (OpenComputers integration), martemen (project settings), Pvndols (thorium fuel recipe, gas turbine),\
\ JamesH2 (blood mechanics, nitric acid, particle emitter), sdddddf80 (recipe configs, chinese localization,\
\ custom machine holograms, I18n improvements), SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC),\
\ 70k (textures, glyphid AI, strand caster), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks),\
\ 245tt (anvil GUI improvements), MellowArpeggiation (new animation system, turbine sounds, sound fixes,\
\ industrial lights, better particle diodes), FOlkvangrField (custom machine parts)
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=5572
credits=HbMinecraft,\
\ rodolphito (explosion algorithms),\
\ grangerave (explosion algorithms),\
\ Hoboy (textures, models),\
\ Drillgon200 (effects, models),\
\ MartinTheDragon (calculator, chunk-based fallout, bendable cranes, pipe improvements, PWR sounds),\
\ Alcater (GUI textures),\
\ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, conveyor wand, NBT structures, MSU displays),\
\ Pheo (textures, various machines, models, weapons),\
\ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide, new cyclotron, weapon animations),\
\ UFFR (RTG pellets, guns, casings, euphemium capacitor, nucleartech.wiki),\
\ LePeep (coilgun model, BDCL QC),\
\ Adam29 (liquid petroleum, ethanol, electric furnace),\
\ Pvndols (thorium fuel recipe, gas turbine),\
\ JamesH2 (blood mechanics, nitric acid, particle emitter),\
\ Lazzzycat (structures, mob gear),\
\ PastaBaguette (coal horse decal),\
\ Doctor17 (russian localization)),\
\ Pashtet (russian localization),\
\ 7H40 (russian localization),\
\ RayzerHan (russian localization),\
\ Bismarck (chinese localization),\
\ Creeper-banner (chinese localization),\
\ 5467864 (chinese localization),\
\ eeeeee0a (chinese localization),\
\ hz0909adc (chinese localization),\
\ LSKLW (chinese localization),\
\ R-Kaenbyou (chinese localization),\
\ scp-000000000 (chinese localization),\
\ UnnameTokiko (chinese localization),\
\ Herobrine 457985 (chinese localization),\
\ xxwinhere (chinese localization),\
\ Nycticoraxnightheron (chinese localization),\
\ NarekoMichigami810 (chinese localization),\
\ Maksymisio (polish localization)\
\ el3ctro4ndre (italian localization),\
\ Goaty1208 (italian localization),\
\ Pu-238 (Tom impact effects),\
\ Frooz (gun models),\
\ VT-6/24 (models, textures),\
\ Nos (models),\
\ WushiThe (models),\
\ Minecreep (models),\
\ ackbarcrowbars (models),\
\ haru315 (spiral point algorithm),\
\ mlbv (threaded MK5),\
\ 70k (textures, glyphid AI, strand caster, electrolyzer changes, cryolite),\
\ instantnootles (concept artist),\
\ Sten89 (models),\
\ Pixelguru26 (textures),\
\ TheBlueHat (textures),\
\ Burningwater202 (laminate glass),\
\ TehTemmie (reacher radiation function),\
\ Silly541 (config for safe ME drives),\
\ Voxelstice (OpenComputers integration, turbine spinup),\
\ BallOfEnergy1 (OpenComputers integration, RBMK and packet optimization, crate backpacks),\
\ PewPewCricket (OpenComputers integration),\
\ kelllllen (OpenComputers integration),\
\ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\
\ Abel1502 (abilities GUI, optimization, crate upgrade recipes, strand caster improvements, varous tweaks),\
\ Darek505 (armor rendering compatibility fix),\
\ ranch21 (improved HUD gauges),\
\ SuperCraftAlex (tooltips)\
\ Ice-Arrow (research reactor tweaks),\
\ 245tt (anvil GUI improvements),\
\ KoblizekXD (doors),\
\ FOlkvangrField (custom machine parts),\
\ RosaTryp (centrifuge config),\
\ Toshayo (satellite loot system, project settings, gradle curse task, OpenComputers integration, fluid counter valve),\
\ Dash (PA particle serialization fix),\
\ archiecarrot123 (armor rendering compatibility fix),\
\ mikkerlo (mining laser & builder's jetpack improvements),\
\ icomet (refactoring),\
\ martemen (project settings),\
\ OvermindDL1 (project settings),\
\ impbk2002 (project settings)\

Binary file not shown.

View File

@ -3,6 +3,7 @@ package api.hbm.block;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@Deprecated
public interface IDrillInteraction {
/**

View File

@ -0,0 +1,15 @@
package api.hbm.block;
import com.hbm.entity.item.EntityTNTPrimedBase;
import net.minecraft.world.World;
public interface IFuckingExplode {
// Anything that can be detonated by another explosion should implement this and spawn an EntityTNTPrimedBase when hit by an explosion
// This prevents chained explosions causing a stack overflow
// Note that the block can still safely immediately explode, as long as the source isn't another explosion
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity);
}

View File

@ -1,5 +1,6 @@
package api.hbm.block;
@Deprecated
public interface IMiningDrill {
/**

View File

@ -1,160 +0,0 @@
package api.hbm.energy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
/**
* For compatible cables with no buffer, using the IPowertNet. You can make your own cables with IEnergyConnector as well, but they won't join their power network.
* @author hbm
*/
public interface IEnergyConductor extends IEnergyConnector {
public IPowerNet getPowerNet();
public void setPowerNet(IPowerNet network);
/**
* A unique identifier for every conductor tile. Used to prevent duplicates when loading previously persistent unloaded tiles.
* @return
*/
public default int getIdentity() {
return getIdentityFromTile((TileEntity) this);
}
public static int getIdentityFromTile(TileEntity te) {
return getIdentityFromPos(te.xCoord, te.yCoord, te.zCoord);
}
public static int getIdentityFromPos(int x, int y, int z) {
final int prime = 27644437; // must be this large to minimize localized collisions
int result = 1;
result = prime * result + x;
result = prime * result + y;
result = prime * result + z;
return result;
}
/**
* Whether the link should be part of reeval when the network is changed.
* I.e. if this link should join any of the new networks (FALSE for switches that are turned off for example)
* @return
*/
public default boolean canReevaluate() {
return !((TileEntity) this).isInvalid();
}
/**
* When a link leaves the network, the net has to manually calculate the resulting networks.
* Each link has to decide what other links will join the same net.
* @param copy
*/
public default void reevaluate(HashMap<Integer, IEnergyConductor> copy, HashMap<Integer, Integer> proxies) {
for(int[] pos : getConnectionPoints()) {
int newX = pos[0];
int newY = pos[1];
int newZ = pos[2];
int id = IEnergyConductor.getIdentityFromPos(newX, newY, newZ);
IEnergyConductor neighbor = copy.get(id);
if(neighbor == null) {
Integer newId = proxies.get(id);
if(newId != null) {
neighbor = copy.get(newId);
}
}
if(neighbor != null && this.canReevaluate() && neighbor.canReevaluate()) {
if(neighbor.getPowerNet() != null) {
//neighbor net and no self net
if(this.getPowerNet() == null) {
neighbor.getPowerNet().joinLink(this);
//neighbor net and self net
} else {
this.getPowerNet().joinNetworks(neighbor.getPowerNet());
}
//bidirectional re-eval, experimental and technically optional, only useful as a fallback
} /*else {
//no neighbor net and no self net
if(this.getPowerNet() == null) {
this.setPowerNet(new PowerNet().joinLink(this));
neighbor.setPowerNet(this.getPowerNet().joinLink(neighbor));
//no neighbor net and self net
} else {
neighbor.setPowerNet(this.getPowerNet().joinLink(neighbor));
}
}*/
//extensive debugging has shown that bidirectional re-eval is complete shit
}
}
}
/**
* Creates a list of positions for the re-eval process. In short - what positions should be considered as connected.
* Also used by pylons to quickly figure out what positions to connect to.
* DEFAULT: Connects to all six neighboring blocks.
* @return
*/
public default List<int[]> getConnectionPoints() {
List<int[]> pos = new ArrayList();
TileEntity tile = (TileEntity) this;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
int newX = tile.xCoord + dir.offsetX;
int newY = tile.yCoord + dir.offsetY;
int newZ = tile.zCoord + dir.offsetZ;
pos.add(new int[] {newX, newY, newZ});
}
return pos;
}
/**
* Since isLoaded is only currently used for weeding out unwanted subscribers, and cables shouldn't (although technically can) be
* subscribers, we just default to true because I don't feel like wasting time implementing things that we don't actually need.
* Perhaps this indicates a minor flaw in the new API, but I physically lack the ability to worry about it.
*/
@Override
public default boolean isLoaded() {
return true;
}
//TODO: check if this standard implementation doesn't break anything (it shouldn't but right now it's a bit redundant) also: remove duplicate implementations
@Override
public default long transferPower(long power) {
if(this.getPowerNet() == null)
return power;
return this.getPowerNet().transferPower(power);
}
/**
* Returns whether the conductor has mutliblock proxies which need to be taken into consideration for re-eval.
* @return
*/
public default boolean hasProxies() {
return false;
}
/**
* Returns the identities (position-based) of proxies which resolve into the conductor's own identity.
* @return
*/
public default List<Integer> getProxies() {
return new ArrayList();
}
}

View File

@ -1,128 +0,0 @@
package api.hbm.energy;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.util.CompatEnergyControl;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
/**
* For anything that connects to power and can be transferred power to, the bottom-level interface.
* This is mean for TILE ENTITIES
* @author hbm
*/
public interface IEnergyConnector extends ILoadedTile {
/**
* Returns the amount of power that remains in the source after transfer
* @param power
* @return
*/
public long transferPower(long power);
/**
* Whether the given side can be connected to
* dir refers to the side of this block, not the connecting block doing the check
* @param dir
* @return
*/
public default boolean canConnect(ForgeDirection dir) {
return dir != ForgeDirection.UNKNOWN;
}
/**
* The current power of either the machine or an entire network
* @return
*/
public long getPower();
/**
* The capacity of either the machine or an entire network
* @return
*/
public long getMaxPower();
public default long getTransferWeight() {
return Math.max(getMaxPower() - getPower(), 0);
}
/**
* Basic implementation of subscribing to a nearby power grid
* @param world
* @param x
* @param y
* @param z
*/
public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = world.getTileEntity(x, y, z);
boolean red = false;
if(te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te;
if(!con.canConnect(dir.getOpposite()))
return;
if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this))
con.getPowerNet().subscribe(this);
if(con.getPowerNet() != null)
red = true;
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "power");
double posX = x + 0.5 + dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 + dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 + dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", -dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", -dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", -dir.offsetZ * (red ? 0.025 : 0.1));
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
public default void tryUnsubscribe(World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te;
if(con.getPowerNet() != null && con.getPowerNet().isSubscribed(this))
con.getPowerNet().unsubscribe(this);
}
}
public static final boolean particleDebug = false;
public default Vec3 getDebugParticlePos() {
TileEntity te = (TileEntity) this;
Vec3 vec = Vec3.createVectorHelper(te.xCoord + 0.5, te.yCoord + 1, te.zCoord + 0.5);
return vec;
}
/** Shortcut for adding energy data to tiles that implement IInfoProviderEC, should NOT be used externally for compat! Use IInfoProviderEC.provideInfo() instead! */
public default void provideInfoForEC(NBTTagCompound data) {
data.setLong(CompatEnergyControl.L_ENERGY_HE, this.getPower());
data.setLong(CompatEnergyControl.L_CAPACITY_HE, this.getMaxPower());
}
public default ConnectionPriority getPriority() {
return ConnectionPriority.NORMAL;
}
public enum ConnectionPriority {
LOW,
NORMAL,
HIGH
}
}

View File

@ -1,19 +0,0 @@
package api.hbm.energy;
public interface IEnergyGenerator extends IEnergyUser {
/**
* Standard implementation for machines that can only send energy but never receive it.
* @param power
*/
@Override
public default long transferPower(long power) {
return power;
}
/* should stop making non-receivers from interfering by applying their weight which doesn't even matter */
@Override
public default long getTransferWeight() {
return 0;
}
}

View File

@ -1,114 +0,0 @@
package api.hbm.energy;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
/**
* For machines and things that have an energy buffer and are affected by EMPs
* @author hbm
*/
public interface IEnergyUser extends IEnergyConnector {
/**
* Not to be used for actual energy transfer, rather special external things like EMPs and sync packets
*/
public void setPower(long power);
/**
* Standard implementation for power transfer.
* Turns out you can override interfaces to provide a default implementation. Neat.
* @param long power
*/
@Override
public default long transferPower(long power) {
if(this.getPower() + power > this.getMaxPower()) {
long overshoot = this.getPower() + power - this.getMaxPower();
this.setPower(this.getMaxPower());
return overshoot;
}
if(this.getPower() + power < 0) return 0; //safeguard for negative energy or overflows
this.setPower(this.getPower() + power);
return 0;
}
/**
* Standard implementation of sending power
* @param world
* @param x
* @param y
* @param z
* @param dir
*/
public default void sendPower(World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = world.getTileEntity(x, y, z);
boolean wasSubscribed = false;
boolean red = false;
// first we make sure we're not subscribed to the network that we'll be supplying
if(te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te;
if(con.canConnect(dir.getOpposite()) && con.getPowerNet() != null && con.getPowerNet().isSubscribed(this)) {
con.getPowerNet().unsubscribe(this);
wasSubscribed = true;
}
}
//then we add energy
if(te instanceof IEnergyConnector) {
IEnergyConnector con = (IEnergyConnector) te;
if(con.canConnect(dir.getOpposite())) {
long oldPower = this.getPower();
long transfer = oldPower - con.transferPower(oldPower);
this.setPower(oldPower - transfer);
red = true;
}
}
//then we subscribe if possible
if(wasSubscribed && te instanceof IEnergyConductor) {
IEnergyConductor con = (IEnergyConductor) te;
if(con.getPowerNet() != null && !con.getPowerNet().isSubscribed(this)) {
con.getPowerNet().subscribe(this);
}
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "power");
double posX = x + 0.5 - dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 - dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 - dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", dir.offsetZ * (red ? 0.025 : 0.1));
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
public default void updateStandardConnections(World world, TileEntity te) {
updateStandardConnections(world, te.xCoord, te.yCoord, te.zCoord);
}
public default void updateStandardConnections(World world, int x, int y, int z) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
this.trySubscribe(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir);
}
}
}

View File

@ -1,6 +0,0 @@
package api.hbm.energy;
public interface ILoadedTile {
public boolean isLoaded();
}

View File

@ -1,37 +0,0 @@
package api.hbm.energy;
import java.math.BigInteger;
import java.util.List;
/**
* Not mandatory to use, but making your cables IPowerNet-compliant will allow them to connect to NTM cables.
* Cables will still work without it as long as they implement IEnergyConductor (or even IEnergyConnector) + self-built network code
* @author hbm
*/
public interface IPowerNet {
public void joinNetworks(IPowerNet network);
public IPowerNet joinLink(IEnergyConductor conductor);
public void leaveLink(IEnergyConductor conductor);
public void subscribe(IEnergyConnector connector);
public void unsubscribe(IEnergyConnector connector);
public boolean isSubscribed(IEnergyConnector connector);
public void destroy();
/**
* When a link is removed, instead of destroying the network, causing it to be recreated from currently loaded conductors,
* we re-evaluate it, creating new nets based on the previous links.
*/
public void reevaluate();
public boolean isValid();
public List<IEnergyConductor> getLinks();
public List<IEnergyConnector> getSubscribers();
public long transferPower(long power);
public BigInteger getTotalTransfer();
}

View File

@ -1,257 +0,0 @@
package api.hbm.energy;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.hbm.config.GeneralConfig;
import api.hbm.energy.IEnergyConnector.ConnectionPriority;
import net.minecraft.tileentity.TileEntity;
/**
* Basic IPowerNet implementation. The behavior of this demo might change inbetween releases, but the API remains the same.
* For more consistency please implement your own IPowerNet.
* @author hbm
*/
public class PowerNet implements IPowerNet {
private boolean valid = true;
private HashMap<Integer, IEnergyConductor> links = new HashMap();
private HashMap<Integer, Integer> proxies = new HashMap();
private List<IEnergyConnector> subscribers = new ArrayList();
public static List<PowerNet> trackingInstances = null;
protected BigInteger totalTransfer = BigInteger.ZERO;
@Override
public void joinNetworks(IPowerNet network) {
if(network == this)
return; //wtf?!
for(IEnergyConductor conductor : network.getLinks()) {
joinLink(conductor);
}
network.getLinks().clear();
for(IEnergyConnector connector : network.getSubscribers()) {
this.subscribe(connector);
}
network.destroy();
}
@Override
public IPowerNet joinLink(IEnergyConductor conductor) {
if(conductor.getPowerNet() != null)
conductor.getPowerNet().leaveLink(conductor);
conductor.setPowerNet(this);
int identity = conductor.getIdentity();
this.links.put(identity, conductor);
if(conductor.hasProxies()) {
for(Integer i : conductor.getProxies()) {
this.proxies.put(i, identity);
}
}
return this;
}
@Override
public void leaveLink(IEnergyConductor conductor) {
conductor.setPowerNet(null);
int identity = conductor.getIdentity();
this.links.remove(identity);
if(conductor.hasProxies()) {
for(Integer i : conductor.getProxies()) {
this.proxies.remove(i);
}
}
}
@Override
public void subscribe(IEnergyConnector connector) {
this.subscribers.add(connector);
}
@Override
public void unsubscribe(IEnergyConnector connector) {
this.subscribers.remove(connector);
}
@Override
public boolean isSubscribed(IEnergyConnector connector) {
return this.subscribers.contains(connector);
}
@Override
public List<IEnergyConductor> getLinks() {
List<IEnergyConductor> linkList = new ArrayList();
linkList.addAll(this.links.values());
return linkList;
}
public HashMap<Integer, Integer> getProxies() {
HashMap<Integer, Integer> proxyCopy = new HashMap(proxies);
return proxyCopy;
}
@Override
public List<IEnergyConnector> getSubscribers() {
return this.subscribers;
}
@Override
public void destroy() {
this.valid = false;
this.subscribers.clear();
for(IEnergyConductor link : this.links.values()) {
link.setPowerNet(null);
}
this.links.clear();
}
@Override
public boolean isValid() {
return this.valid;
}
@Override
public BigInteger getTotalTransfer() {
return this.totalTransfer;
}
public long lastCleanup = System.currentTimeMillis();
@Override
public long transferPower(long power) {
/*if(lastCleanup + 45 < System.currentTimeMillis()) {
cleanup(this.subscribers);
lastCleanup = System.currentTimeMillis();
}*/
List<PowerNet> cache = new ArrayList();
if(trackingInstances != null && !trackingInstances.isEmpty()) {
cache.addAll(trackingInstances);
}
trackingInstances = new ArrayList();
trackingInstances.add(this);
long result = fairTransfer(this.subscribers, power);
trackingInstances.addAll(cache);
return result;
}
public static void cleanup(List<IEnergyConnector> subscribers) {
subscribers.removeIf(x ->
x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() || !x.isLoaded()
);
}
public static long fairTransfer(List<IEnergyConnector> subscribers, long power) {
if(power <= 0) return 0;
if(subscribers.isEmpty())
return power;
cleanup(subscribers);
ConnectionPriority[] priorities = new ConnectionPriority[] {ConnectionPriority.HIGH, ConnectionPriority.NORMAL, ConnectionPriority.LOW};
long totalTransfer = 0;
for(ConnectionPriority p : priorities) {
List<IEnergyConnector> subList = new ArrayList();
subscribers.forEach(x -> {
if(x.getPriority() == p) {
subList.add(x);
}
});
if(subList.isEmpty())
continue;
List<Long> weight = new ArrayList();
long totalReq = 0;
for(IEnergyConnector con : subList) {
long req = con.getTransferWeight();
weight.add(req);
totalReq += req;
}
if(totalReq == 0)
continue;
long totalGiven = 0;
for(int i = 0; i < subList.size(); i++) {
IEnergyConnector con = subList.get(i);
long req = weight.get(i);
double fraction = (double)req / (double)totalReq;
long given = (long) Math.floor(fraction * power);
totalGiven += (given - con.transferPower(given));
if(con instanceof TileEntity) {
TileEntity tile = (TileEntity) con;
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
}
}
power -= totalGiven;
totalTransfer += totalGiven;
}
if(trackingInstances != null) {
for(int i = 0; i < trackingInstances.size(); i++) {
PowerNet net = trackingInstances.get(i);
net.totalTransfer = net.totalTransfer.add(BigInteger.valueOf(totalTransfer));
}
trackingInstances.clear();
}
return power;
}
@Override
public void reevaluate() {
if(!GeneralConfig.enableReEval) {
this.destroy();
return;
}
HashMap<Integer, IEnergyConductor> copy = new HashMap(links);
HashMap<Integer, Integer> proxyCopy = new HashMap(proxies);
for(IEnergyConductor link : copy.values()) {
this.leaveLink(link);
}
for(IEnergyConductor link : copy.values()) {
link.setPowerNet(null);
link.reevaluate(copy, proxyCopy);
if(link.getPowerNet() == null) {
link.setPowerNet(new PowerNet().joinLink(link));
}
}
}
}

View File

@ -1,4 +1,4 @@
package api.hbm.energy;
package api.hbm.energymk2;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -10,9 +10,9 @@ public interface IBatteryItem {
public void setCharge(ItemStack stack, long i);
public void dischargeBattery(ItemStack stack, long i);
public long getCharge(ItemStack stack);
public long getMaxCharge();
public long getChargeRate();
public long getDischargeRate();
public long getMaxCharge(ItemStack stack);
public long getChargeRate(ItemStack stack);
public long getDischargeRate(ItemStack stack);
/** Returns a string for the NBT tag name of the long storing power */
public default String getChargeTagName() {

View File

@ -0,0 +1,23 @@
package api.hbm.energymk2;
import com.hbm.lib.Library;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.util.fauxpointtwelve.DirPos;
import api.hbm.energymk2.Nodespace.PowerNode;
import net.minecraft.tileentity.TileEntity;
public interface IEnergyConductorMK2 extends IEnergyConnectorMK2 {
public default PowerNode createNode() {
TileEntity tile = (TileEntity) this;
return new PowerNode(new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections(
new DirPos(tile.xCoord + 1, tile.yCoord, tile.zCoord, Library.POS_X),
new DirPos(tile.xCoord - 1, tile.yCoord, tile.zCoord, Library.NEG_X),
new DirPos(tile.xCoord, tile.yCoord + 1, tile.zCoord, Library.POS_Y),
new DirPos(tile.xCoord, tile.yCoord - 1, tile.zCoord, Library.NEG_Y),
new DirPos(tile.xCoord, tile.yCoord, tile.zCoord + 1, Library.POS_Z),
new DirPos(tile.xCoord, tile.yCoord, tile.zCoord - 1, Library.NEG_Z)
);
}
}

View File

@ -1,4 +1,4 @@
package api.hbm.energy;
package api.hbm.energymk2;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;

View File

@ -0,0 +1,16 @@
package api.hbm.energymk2;
import net.minecraftforge.common.util.ForgeDirection;
public interface IEnergyConnectorMK2 {
/**
* Whether the given side can be connected to
* dir refers to the side of this block, not the connecting block doing the check
* @param dir
* @return
*/
public default boolean canConnect(ForgeDirection dir) {
return dir != ForgeDirection.UNKNOWN;
}
}

View File

@ -0,0 +1,29 @@
package api.hbm.energymk2;
import com.hbm.util.CompatEnergyControl;
import api.hbm.tile.ILoadedTile;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3;
/** DO NOT USE DIRECTLY! This is simply the common ancestor to providers and receivers, because all this behavior has to be excluded from conductors! */
public interface IEnergyHandlerMK2 extends IEnergyConnectorMK2, ILoadedTile {
public long getPower();
public void setPower(long power);
public long getMaxPower();
public static final boolean particleDebug = false;
public default Vec3 getDebugParticlePosMK2() {
TileEntity te = (TileEntity) this;
Vec3 vec = Vec3.createVectorHelper(te.xCoord + 0.5, te.yCoord + 1, te.zCoord + 0.5);
return vec;
}
public default void provideInfoForECMK2(NBTTagCompound data) {
data.setLong(CompatEnergyControl.L_ENERGY_HE, this.getPower());
data.setLong(CompatEnergyControl.L_CAPACITY_HE, this.getMaxPower());
}
}

View File

@ -0,0 +1,67 @@
package api.hbm.energymk2;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import api.hbm.energymk2.Nodespace.PowerNode;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
/** If it sends energy, use this */
public interface IEnergyProviderMK2 extends IEnergyHandlerMK2 {
/** Uses up available power, default implementation has no sanity checking, make sure that the requested power is lequal to the current power */
public default void usePower(long power) {
this.setPower(this.getPower() - power);
}
public default long getProviderSpeed() {
return this.getMaxPower();
}
public default void tryProvide(World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
boolean red = false;
if(te instanceof IEnergyConductorMK2) {
IEnergyConductorMK2 con = (IEnergyConductorMK2) te;
if(con.canConnect(dir.getOpposite())) {
PowerNode node = Nodespace.getNode(world, x, y, z);
if(node != null && node.net != null) {
node.net.addProvider(this);
red = true;
}
}
}
if(te instanceof IEnergyReceiverMK2 && te != this) {
IEnergyReceiverMK2 rec = (IEnergyReceiverMK2) te;
if(rec.canConnect(dir.getOpposite()) && rec.allowDirectProvision()) {
long provides = Math.min(this.getPower(), this.getProviderSpeed());
long receives = Math.min(rec.getMaxPower() - rec.getPower(), rec.getReceiverSpeed());
long toTransfer = Math.min(provides, receives);
toTransfer -= rec.transferPower(toTransfer);
this.usePower(toTransfer);
}
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "power");
double posX = x + 0.5 - dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 - dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 - dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", dir.offsetZ * (red ? 0.025 : 0.1));
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
}

View File

@ -0,0 +1,95 @@
package api.hbm.energymk2;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.interfaces.NotableComments;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.util.fauxpointtwelve.DirPos;
import api.hbm.energymk2.Nodespace.PowerNode;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
/** If it receives energy, use this */
@NotableComments
public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 {
public default long transferPower(long power) {
if(power + this.getPower() <= this.getMaxPower()) {
this.setPower(power + this.getPower());
return 0;
}
long capacity = this.getMaxPower() - this.getPower();
long overshoot = power - capacity;
this.setPower(this.getMaxPower());
return overshoot;
}
public default long getReceiverSpeed() {
return this.getMaxPower();
}
/** Whether a provider can provide power by touching the block (i.e. via proxies), bypassing the need for a network entirely */
public default boolean allowDirectProvision() { return true; }
public default void trySubscribe(World world, DirPos pos) { trySubscribe(world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); }
public default void trySubscribe(World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
boolean red = false;
if(te instanceof IEnergyConductorMK2) {
IEnergyConductorMK2 con = (IEnergyConductorMK2) te;
if(!con.canConnect(dir.getOpposite())) return;
PowerNode node = Nodespace.getNode(world, x, y, z);
if(node != null && node.net != null) {
node.net.addReceiver(this);
red = true;
}
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "power");
double posX = x + 0.5 + dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 + dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 + dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", -dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", -dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", -dir.offsetZ * (red ? 0.025 : 0.1));
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
public default void tryUnsubscribe(World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof IEnergyConductorMK2) {
IEnergyConductorMK2 con = (IEnergyConductorMK2) te;
PowerNode node = con.createNode();
if(node != null && node.net != null) {
node.net.removeReceiver(this);
}
}
}
public enum ConnectionPriority {
LOWEST,
LOW,
NORMAL,
HIGH,
HIGHEST
}
public default ConnectionPriority getPriority() {
return ConnectionPriority.NORMAL;
}
}

View File

@ -0,0 +1,62 @@
package api.hbm.energymk2;
import com.hbm.interfaces.NotableComments;
import com.hbm.uninos.GenNode;
import com.hbm.uninos.UniNodespace;
import com.hbm.uninos.networkproviders.PowerNetProvider;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.util.fauxpointtwelve.DirPos;
import net.minecraft.world.World;
/**
* The dead fucking corpse of nodespace MK1.
* A fantastic proof of concept, but ultimately it was killed for being just not that versatile.
* This class is mostly just a compatibility husk that should allow uninodespace to slide into the mod with as much lubrication as it deserves.
*
* @author hbm
*/
@NotableComments
public class Nodespace {
public static final PowerNetProvider THE_POWER_PROVIDER = new PowerNetProvider();
@Deprecated public static PowerNode getNode(World world, int x, int y, int z) {
return (PowerNode) UniNodespace.getNode(world, x, y, z, THE_POWER_PROVIDER);
}
@Deprecated public static void createNode(World world, PowerNode node) {
UniNodespace.createNode(world, node);
}
@Deprecated public static void destroyNode(World world, int x, int y, int z) {
UniNodespace.destroyNode(world, x, y, z, THE_POWER_PROVIDER);
}
@NotableComments
public static class PowerNode extends GenNode<PowerNetMK2> {
/**
* Okay so here's the deal: The code has shit idiot brain fungus. I don't know why. I re-tested every part involved several times.
* I don't know why. But for some reason, during neighbor checks, on certain arbitrary fucking places, the joining operation just fails.
* Disallowing nodes to create new networks fixed the problem completely, which is hardly surprising since they wouldn't be able to make
* a new net anyway and they will re-check neighbors until a net is found, so the solution is tautological in nature. So I tried limiting
* creation of new networks. Didn't work. So what's there left to do? Hand out a mark to any node that has changed networks, and let those
* recently modified nodes do another re-check. This creates a second layer of redundant operations, and in theory doubles (in practice,
* it might be an extra 20% due to break-off section sizes) the amount of CPU time needed for re-building the networks after joining or
* breaking, but it seems to allow those parts to connect back to their neighbor nets as they are supposed to. I am not proud of this solution,
* this issue shouldn't exist to begin with and I am going fucking insane but it is what it is.
*/
public PowerNode(BlockPos... positions) {
super(THE_POWER_PROVIDER, positions);
this.positions = positions;
}
@Override
public PowerNode setConnections(DirPos... connections) {
super.setConnections(connections);
return this;
}
}
}

View File

@ -0,0 +1,156 @@
package api.hbm.energymk2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.hbm.uninos.NodeNet;
import com.hbm.util.Tuple.Pair;
import java.util.Map.Entry;
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
import api.hbm.energymk2.Nodespace.PowerNode;
/**
* Technically MK3 since it's now UNINOS compatible, although UNINOS was build out of 95% nodespace code
*
* @author hbm
*/
public class PowerNetMK2 extends NodeNet<IEnergyReceiverMK2, IEnergyProviderMK2, PowerNode> {
public long energyTracker = 0L;
protected static int timeout = 3_000;
@Override public void resetTrackers() { this.energyTracker = 0; }
@Override
public void update() {
if(providerEntries.isEmpty()) return;
if(receiverEntries.isEmpty()) return;
long timestamp = System.currentTimeMillis();
List<Pair<IEnergyProviderMK2, Long>> providers = new ArrayList();
long powerAvailable = 0;
// sum up available power
Iterator<Entry<IEnergyProviderMK2, Long>> provIt = providerEntries.entrySet().iterator();
while(provIt.hasNext()) {
Entry<IEnergyProviderMK2, Long> entry = provIt.next();
if(timestamp - entry.getValue() > timeout || isBadLink(entry.getKey())) { provIt.remove(); continue; }
long src = Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed());
if(src > 0) {
providers.add(new Pair(entry.getKey(), src));
powerAvailable += src;
}
}
// sum up total demand, categorized by priority
List<Pair<IEnergyReceiverMK2, Long>>[] receivers = new ArrayList[ConnectionPriority.values().length];
for(int i = 0; i < receivers.length; i++) receivers[i] = new ArrayList();
long[] demand = new long[ConnectionPriority.values().length];
long totalDemand = 0;
Iterator<Entry<IEnergyReceiverMK2, Long>> recIt = receiverEntries.entrySet().iterator();
while(recIt.hasNext()) {
Entry<IEnergyReceiverMK2, Long> entry = recIt.next();
if(timestamp - entry.getValue() > timeout || isBadLink(entry.getKey())) { recIt.remove(); continue; }
long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed());
if(rec > 0) {
int p = entry.getKey().getPriority().ordinal();
receivers[p].add(new Pair(entry.getKey(), rec));
demand[p] += rec;
totalDemand += rec;
}
}
long toTransfer = Math.min(powerAvailable, totalDemand);
long energyUsed = 0;
// add power to receivers, ordered by priority
for(int i = ConnectionPriority.values().length - 1; i >= 0; i--) {
List<Pair<IEnergyReceiverMK2, Long>> list = receivers[i];
long priorityDemand = demand[i];
for(Pair<IEnergyReceiverMK2, Long> entry : list) {
double weight = (double) entry.getValue() / (double) (priorityDemand);
long toSend = (long) Math.min(Math.max(toTransfer * weight, 0D), entry.getValue());
energyUsed += (toSend - entry.getKey().transferPower(toSend)); //leftovers are subtracted from the intended amount to use up
}
toTransfer -= energyUsed;
}
this.energyTracker += energyUsed;
long leftover = energyUsed;
// remove power from providers
for(Pair<IEnergyProviderMK2, Long> entry : providers) {
double weight = (double) entry.getValue() / (double) powerAvailable;
long toUse = (long) Math.max(energyUsed * weight, 0D);
entry.getKey().usePower(toUse);
leftover -= toUse;
}
// rounding error compensation, detects surplus that hasn't been used and removes it from random providers
int iterationsLeft = 100; // whiles without emergency brakes are a bad idea
while(iterationsLeft > 0 && leftover > 0 && providers.size() > 0) {
iterationsLeft--;
Pair<IEnergyProviderMK2, Long> selected = providers.get(rand.nextInt(providers.size()));
IEnergyProviderMK2 scapegoat = selected.getKey();
long toUse = Math.min(leftover, scapegoat.getPower());
scapegoat.usePower(toUse);
leftover -= toUse;
}
}
public long sendPowerDiode(long power) {
if(receiverEntries.isEmpty()) return power;
long timestamp = System.currentTimeMillis();
List<Pair<IEnergyReceiverMK2, Long>>[] receivers = new ArrayList[ConnectionPriority.values().length];
for(int i = 0; i < receivers.length; i++) receivers[i] = new ArrayList();
long[] demand = new long[ConnectionPriority.values().length];
long totalDemand = 0;
Iterator<Entry<IEnergyReceiverMK2, Long>> recIt = receiverEntries.entrySet().iterator();
while(recIt.hasNext()) {
Entry<IEnergyReceiverMK2, Long> entry = recIt.next();
if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; }
long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed());
int p = entry.getKey().getPriority().ordinal();
receivers[p].add(new Pair(entry.getKey(), rec));
demand[p] += rec;
totalDemand += rec;
}
long toTransfer = Math.min(power, totalDemand);
long energyUsed = 0;
for(int i = ConnectionPriority.values().length - 1; i >= 0; i--) {
List<Pair<IEnergyReceiverMK2, Long>> list = receivers[i];
long priorityDemand = demand[i];
for(Pair<IEnergyReceiverMK2, Long> entry : list) {
double weight = (double) entry.getValue() / (double) (priorityDemand);
long toSend = (long) Math.max(toTransfer * weight, 0D);
energyUsed += (toSend - entry.getKey().transferPower(toSend)); //leftovers are subtracted from the intended amount to use up
}
toTransfer -= energyUsed;
}
this.energyTracker += energyUsed;
return power - energyUsed;
}
}

View File

@ -0,0 +1,33 @@
/**
*
*/
/**
* @author hbm
*
*/
package api.hbm.energymk2;
// i have snorted two lines of pure caffeine and taken one large paracetamol laced with even more caffine, let's fucking go
//most of the new classes are just copy pasted mashed up shit from yesteryear, what a productive segment that was
/*
before my caffine high ends entirely and i black out, here's the gist:
* diodes are handled like energy receiver and simply chain-load the power net they output into in a recursive function, this might be a bit laggy compared to the rest of the system, but it's still way less laggy than the old one
* instead of power nets being bound to tile entities directly, tiles spawn ethereal "nodes" similar to the drone waypoints which can be saved using world data, meaning that breaking cables will delete nodes, but unloading them will keep them alive in "node space" which is what's actually used to check for connections
* power nets may cache some positional info in order to limit the amount of nodes, this should prevent horrific freezes in the unlikely event that some retard makes a superflat world out of cables
* general energy transmission will work in a similar fashion as martin explained his, but somewhat simplified; the system will determine supply and demand and then split those evenly if possible, retrying within one operation is only necessary for minor restrictions like priority, any leftovers from rounding don't have to be re-tried because the next tick will already take care of that
* invest funds in more coal mare nudes
* battery "fair share" transfer will most likely no longer work, but that's not really as relevant these days considering there's capacitors and because batteries have transfer speed limits anyway
* most of the machine's functions will be repurposed, the "sendPower" method will no longer send power directly but register the machine to the network as a power source
* if all else fails and martin still hasn't surrendered his code, i will beg greg for his wisdom (but without loss or tiering because fuck that)
*
* | | ||
* ____|____
* |
* || | |_
*
* ...i said WITHOUT loss
*/

View File

@ -0,0 +1,16 @@
package api.hbm.entity;
import net.minecraft.util.DamageSource;
/**
* Allows custom entities to specify threshold and resistance values based on incoming damage, type and piercing values, along with whatever other internal stats
* the entity has (like glyphid armor). Obviously only works for our own custom entities implementing this, everything else will have to work with the less powerful
* (but still very useful) entity stats in the DamageResistanceHandler.
*
* @author hbm
*/
public interface IResistanceProvider {
public float[] getCurrentDTDR(DamageSource damage, float amount, float pierceDT, float pierce);
public void onDamageDealt(DamageSource damage, float amount);
}

View File

@ -1,19 +0,0 @@
package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType;
public interface IFluidConductor extends IFluidConnector {
public IPipeNet getPipeNet(FluidType type);
public void setPipeNet(FluidType type, IPipeNet network);
@Override
public default long transferFluid(FluidType type, int pressure, long amount) {
if(this.getPipeNet(type) == null)
return amount;
return this.getPipeNet(type).transferFluid(amount, pressure);
}
}

View File

@ -1,92 +1,6 @@
package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import api.hbm.fluidmk2.IFluidConnectorMK2;
import api.hbm.energy.ILoadedTile;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public interface IFluidConnector extends ILoadedTile {
/**
* Returns the amount of fluid that remains
* @param power
* @return
*/
public long transferFluid(FluidType type, int pressure, long fluid);
/**
* Whether the given side can be connected to
* @param dir
* @return
*/
public default boolean canConnect(FluidType type, ForgeDirection dir) {
return dir != ForgeDirection.UNKNOWN;
}
/**
* Returns the amount of fluid that this machine is able to receive
* @param type
* @return
*/
public long getDemand(FluidType type, int pressure);
/**
* Basic implementation of subscribing to a nearby power grid
* @param world
* @param x
* @param y
* @param z
*/
public default void trySubscribe(FluidType type, World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = world.getTileEntity(x, y, z);
boolean red = false;
if(te instanceof IFluidConductor) {
IFluidConductor con = (IFluidConductor) te;
if(!con.canConnect(type, dir))
return;
if(con.getPipeNet(type) != null && !con.getPipeNet(type).isSubscribed(this))
con.getPipeNet(type).subscribe(this);
if(con.getPipeNet(type) != null)
red = true;
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "fluid");
data.setInteger("color", type.getColor());
double posX = x + 0.5 + dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 + dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 + dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", -dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", -dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", -dir.offsetZ * (red ? 0.025 : 0.1));
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
public default void tryUnsubscribe(FluidType type, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof IFluidConductor) {
IFluidConductor con = (IFluidConductor) te;
if(con.getPipeNet(type) != null && con.getPipeNet(type).isSubscribed(this))
con.getPipeNet(type).unsubscribe(this);
}
}
public static final boolean particleDebug = false;
}
@Deprecated
public interface IFluidConnector extends IFluidConnectorMK2 { }

View File

@ -1,12 +1,6 @@
package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType;
import api.hbm.fluidmk2.IFluidConnectorBlockMK2;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
public interface IFluidConnectorBlock {
/** dir is the face that is connected to, the direction going outwards from the block */
public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir);
}
@Deprecated
public interface IFluidConnectorBlock extends IFluidConnectorBlockMK2 { }

View File

@ -1,49 +1,35 @@
package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.uninos.GenNode;
import com.hbm.uninos.UniNodespace;
/**
* Uses default implementation to make the underlying interfaces easier to use for the most common fluid users.
* Only handles a single input tank of the same type.
* Uses standard FluidTanks which use int32.
* Don't use this as part of the API!
* @author hbm
*
*/
public interface IFluidStandardReceiver extends IFluidUser {
@Override
public default long transferFluid(FluidType type, int pressure, long amount) {
import api.hbm.fluidmk2.IFluidStandardReceiverMK2;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
tank.setFill(tank.getFill() + (int) amount);
if(tank.getFill() > tank.getMaxFill()) {
long overshoot = tank.getFill() - tank.getMaxFill();
tank.setFill(tank.getMaxFill());
return overshoot;
}
return 0;
}
}
return amount;
@Deprecated
public interface IFluidStandardReceiver extends IFluidStandardReceiverMK2 {
public default void subscribeToAllAround(FluidType type, TileEntity tile) {
subscribeToAllAround(type, tile.getWorldObj(), tile.xCoord, tile.yCoord, tile.zCoord);
}
public FluidTank[] getReceivingTanks();
@Override
public default long getDemand(FluidType type, int pressure) {
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
return tank.getMaxFill() - tank.getFill();
}
public default void subscribeToAllAround(FluidType type, World world, int x, int y, int z) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
trySubscribe(type, world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir);
}
}
public default void tryUnsubscribe(FluidType type, World world, int x, int y, int z) {
GenNode node = UniNodespace.getNode(world, x, y, z, type.getNetworkProvider());
if(node != null && node.net != null) node.net.removeReceiver(this);
}
public default void unsubscribeToAllAround(FluidType type, TileEntity tile) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
tryUnsubscribe(type, tile.getWorldObj(), tile.xCoord + dir.offsetX, tile.yCoord + dir.offsetY, tile.zCoord + dir.offsetZ);
}
return 0;
}
}

View File

@ -1,50 +1,22 @@
package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.tank.FluidTank;
/**
* Uses default implementation to make the underlying interfaces easier to use for the most common fluid users.
* Only handles a single output tank of the same type.
* Uses standard FluidTanks which use int32.
* Don't use this as part of the API!
* @author hbm
*
*/
public interface IFluidStandardSender extends IFluidUser {
import api.hbm.fluidmk2.IFluidStandardSenderMK2;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public FluidTank[] getSendingTanks();
@Override
public default long getTotalFluidForSend(FluidType type, int pressure) {
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
return tank.getFill();
}
@Deprecated
public interface IFluidStandardSender extends IFluidStandardSenderMK2 {
public default void sendFluid(FluidTank tank, World world, int x, int y, int z, ForgeDirection dir) {
tryProvide(tank, world, x, y, z, dir);
}
public default void sendFluidToAll(FluidTank tank, TileEntity tile) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
tryProvide(tank, tile.getWorldObj(), tile.xCoord + dir.offsetX, tile.yCoord + dir.offsetY, tile.zCoord + dir.offsetZ, dir);
}
return 0;
}
@Override
public default void removeFluidForTransfer(FluidType type, int pressure, long amount) {
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
tank.setFill(tank.getFill() - (int) amount);
return;
}
}
}
@Override
public default long transferFluid(FluidType type, int pressure, long fluid) {
return fluid;
}
@Override
public default long getDemand(FluidType type, int pressure) {
return 0;
}
}

View File

@ -1,79 +1,4 @@
package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.tank.FluidTank;
/**
* transceiver [trăn-vər], noun
*
* 1. A transmitter and receiver housed together in a single unit and having some circuits in common, often for portable or mobile use.
* 2. A combined radio transmitter and receiver.
* 3. A device that performs transmitting and receiving functions, especially if using common components.
*
* The American Heritage® Dictionary of the English Language, 5th Edition.
*
* Only supports one tank per type (for in- and output separately)
*
* @author hbm
*
*/
public interface IFluidStandardTransceiver extends IFluidUser {
public FluidTank[] getSendingTanks();
public FluidTank[] getReceivingTanks();
@Override
public default long getTotalFluidForSend(FluidType type, int pressure) {
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
return tank.getFill();
}
}
return 0;
}
@Override
public default void removeFluidForTransfer(FluidType type, int pressure, long amount) {
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
tank.setFill(tank.getFill() - (int) amount);
return;
}
}
}
@Override
public default long getDemand(FluidType type, int pressure) {
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
return tank.getMaxFill() - tank.getFill();
}
}
return 0;
}
@Override
public default long transferFluid(FluidType type, int pressure, long amount) {
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
tank.setFill(tank.getFill() + (int) amount);
if(tank.getFill() > tank.getMaxFill()) {
long overshoot = tank.getFill() - tank.getMaxFill();
tank.setFill(tank.getMaxFill());
return overshoot;
}
return 0;
}
}
return amount;
}
}
@Deprecated
public interface IFluidStandardTransceiver extends IFluidStandardReceiver, IFluidStandardSender { }

View File

@ -1,129 +0,0 @@
package api.hbm.fluid;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public interface IFluidUser extends IFluidConnector {
public default void sendFluid(FluidTank tank, World world, int x, int y, int z, ForgeDirection dir) {
sendFluid(tank.getTankType(), tank.getPressure(), world, x, y, z, dir);
}
public default void sendFluid(FluidType type, int pressure, World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = world.getTileEntity(x, y, z);
boolean wasSubscribed = false;
boolean red = false;
if(te instanceof IFluidConductor) {
IFluidConductor con = (IFluidConductor) te;
if(con.getPipeNet(type) != null && con.getPipeNet(type).isSubscribed(this)) {
con.getPipeNet(type).unsubscribe(this);
wasSubscribed = true;
}
}
if(te instanceof IFluidConnector) {
IFluidConnector con = (IFluidConnector) te;
if(con.canConnect(type, dir.getOpposite())) {
long toSend = this.getTotalFluidForSend(type, pressure);
if(toSend > 0) {
long transfer = toSend - con.transferFluid(type, pressure, toSend);
this.removeFluidForTransfer(type, pressure, transfer);
}
red = true;
}
}
if(wasSubscribed && te instanceof IFluidConductor) {
IFluidConductor con = (IFluidConductor) te;
if(con.getPipeNet(type) != null && !con.getPipeNet(type).isSubscribed(this)) {
con.getPipeNet(type).subscribe(this);
}
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "fluid");
data.setInteger("color", type.getColor());
double posX = x + 0.5 - dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 - dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 - dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", dir.offsetZ * (red ? 0.025 : 0.1));
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
public static IPipeNet getPipeNet(World world, int x, int y, int z, FluidType type) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof IFluidConductor) {
IFluidConductor con = (IFluidConductor) te;
if(con.getPipeNet(type) != null) {
return con.getPipeNet(type);
}
}
return null;
}
/** Use more common conPos method instead */
@Deprecated public default void sendFluidToAll(FluidTank tank, TileEntity te) {
sendFluidToAll(tank.getTankType(), tank.getPressure(), te);
}
/** Use more common conPos method instead */
@Deprecated public default void sendFluidToAll(FluidType type, int pressure, TileEntity te) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
sendFluid(type, pressure, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir);
}
}
public default long getTotalFluidForSend(FluidType type, int pressure) { return 0; }
public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { }
public default void subscribeToAllAround(FluidType type, TileEntity te) {
subscribeToAllAround(type, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord);
}
public default void subscribeToAllAround(FluidType type, World world, int x, int y, int z) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
this.trySubscribe(type, world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir);
}
public default void unsubscribeToAllAround(FluidType type, TileEntity te) {
unsubscribeToAllAround(type, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord);
}
public default void unsubscribeToAllAround(FluidType type, World world, int x, int y, int z) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
this.tryUnsubscribe(type, world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
}
/**
* Returns all internal tanks of this tile. Not used by the fluid network, it should only be used for display purposes or edge cases that can't be solved otherwise.
* The array is either composed of the original tank or outright the original tank array, so changes done to this array will extend to the IFluidUser.
* @return
*/
public FluidTank[] getAllTanks();
}

View File

@ -1,30 +0,0 @@
package api.hbm.fluid;
import java.math.BigInteger;
import java.util.HashSet;
import java.util.List;
import com.hbm.inventory.fluid.FluidType;
public interface IPipeNet {
public void joinNetworks(IPipeNet network);
public List<IFluidConductor> getLinks();
public HashSet<IFluidConnector> getSubscribers();
public IPipeNet joinLink(IFluidConductor conductor);
public void leaveLink(IFluidConductor conductor);
public void subscribe(IFluidConnector connector);
public void unsubscribe(IFluidConnector connector);
public boolean isSubscribed(IFluidConnector connector);
public void destroy();
public boolean isValid();
public long transferFluid(long fill, int pressure);
public FluidType getType();
public BigInteger getTotalTransfer();
}

View File

@ -1,206 +0,0 @@
package api.hbm.fluid;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.TimeZone;
import com.hbm.inventory.fluid.FluidType;
import net.minecraft.tileentity.TileEntity;
public class PipeNet implements IPipeNet {
private boolean valid = true;
private FluidType type;
private List<IFluidConductor> links = new ArrayList();
private HashSet<IFluidConnector> subscribers = new HashSet();
public static List<PipeNet> trackingInstances = null;
protected BigInteger totalTransfer = BigInteger.ZERO;
public List<String> debug = new ArrayList();
public PipeNet(FluidType type) {
this.type = type;
}
@Override
public void joinNetworks(IPipeNet network) {
if(network == this)
return;
for(IFluidConductor conductor : network.getLinks()) {
conductor.setPipeNet(type, this);
this.getLinks().add(conductor);
}
network.getLinks().clear();
for(IFluidConnector connector : network.getSubscribers()) {
this.subscribe(connector);
}
network.destroy();
}
@Override
public List<IFluidConductor> getLinks() {
return links;
}
@Override
public HashSet<IFluidConnector> getSubscribers() {
return subscribers;
}
@Override
public IPipeNet joinLink(IFluidConductor conductor) {
if(conductor.getPipeNet(type) != null)
conductor.getPipeNet(type).leaveLink(conductor);
conductor.setPipeNet(type, this);
this.links.add(conductor);
return this;
}
@Override
public void leaveLink(IFluidConductor conductor) {
conductor.setPipeNet(type, null);
this.links.remove(conductor);
}
@Override
public void subscribe(IFluidConnector connector) {
this.subscribers.add(connector);
}
@Override
public void unsubscribe(IFluidConnector connector) {
this.subscribers.remove(connector);
}
@Override
public boolean isSubscribed(IFluidConnector connector) {
return this.subscribers.contains(connector);
}
@Override
public long transferFluid(long fill, int pressure) {
subscribers.removeIf(x ->
x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() || !x.isLoaded()
);
if(this.subscribers.isEmpty())
return fill;
trackingInstances = new ArrayList();
trackingInstances.add(this);
List<IFluidConnector> subList = new ArrayList(subscribers);
return fairTransfer(subList, type, pressure, fill);
}
public static long fairTransfer(List<IFluidConnector> subList, FluidType type, int pressure, long fill) {
if(fill <= 0) return 0;
List<Long> weight = new ArrayList();
long totalReq = 0;
for(IFluidConnector con : subList) {
long req = con.getDemand(type, pressure);
weight.add(req);
totalReq += req;
}
if(totalReq == 0)
return fill;
long totalGiven = 0;
for(int i = 0; i < subList.size(); i++) {
IFluidConnector con = subList.get(i);
long req = weight.get(i);
double fraction = (double)req / (double)totalReq;
long given = (long) Math.floor(fraction * fill);
if(given > 0) {
totalGiven += (given - con.transferFluid(type, pressure, given));
if(con instanceof TileEntity) {
TileEntity tile = (TileEntity) con;
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
}
if(trackingInstances != null) {
for(int j = 0; j < trackingInstances.size(); j++) {
PipeNet net = trackingInstances.get(j);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SSS");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
log(net, sdf.format(new Date(System.currentTimeMillis())) + " Sending " + given + "mB to " + conToString(con));
}
}
}
}
if(trackingInstances != null) {
for(int i = 0; i < trackingInstances.size(); i++) {
PipeNet net = trackingInstances.get(i);
net.totalTransfer = net.totalTransfer.add(BigInteger.valueOf(totalGiven));
}
}
return fill - totalGiven;
}
@Override
public FluidType getType() {
return type;
}
@Override
public void destroy() {
this.valid = false;
this.subscribers.clear();
for(IFluidConductor con : this.links)
con.setPipeNet(type, null);
this.links.clear();
}
@Override
public boolean isValid() {
return this.valid;
}
@Override
public BigInteger getTotalTransfer() {
return this.totalTransfer;
}
public static void log(PipeNet net, String msg) {
net.debug.add(msg);
while(net.debug.size() > 50) {
net.debug.remove(0);
}
}
public static String conToString(IFluidConnector con) {
if(con instanceof TileEntity) {
TileEntity tile = (TileEntity) con;
return tile.getClass().getSimpleName() + " @ " + tile.xCoord + "/" + tile.yCoord + "/" + tile.zCoord;
}
return "" + con;
}
}

View File

@ -0,0 +1,152 @@
package api.hbm.fluidmk2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.uninos.NodeNet;
import com.hbm.util.Tuple.Pair;
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
public class FluidNetMK2 extends NodeNet<IFluidReceiverMK2, IFluidProviderMK2, FluidNode> {
public long fluidTracker = 0L;
protected static int timeout = 3_000;
protected static long currentTime = 0;
protected FluidType type;
public FluidNetMK2(FluidType type) {
this.type = type;
for(int i = 0; i < IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1; i++) providers[i] = new ArrayList();
for(int i = 0; i < IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1; i++) for(int j = 0; j < ConnectionPriority.values().length; j++) receivers[i][j] = new ArrayList();
}
@Override public void resetTrackers() { this.fluidTracker = 0; }
@Override
public void update() {
if(providerEntries.isEmpty()) return;
if(receiverEntries.isEmpty()) return;
currentTime = System.currentTimeMillis();
setupFluidProviders();
setupFluidReceivers();
transferFluid();
cleanUp();
}
//this sucks ass, but it makes the code just a smidge more structured
public long[] fluidAvailable = new long[IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1];
public List<Pair<IFluidProviderMK2, Long>>[] providers = new ArrayList[IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1];
public long[][] fluidDemand = new long[IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1][ConnectionPriority.values().length];
public List<Pair<IFluidReceiverMK2, Long>>[][] receivers = new ArrayList[IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1][ConnectionPriority.values().length];
public long[] transfered = new long[IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1];
public void setupFluidProviders() {
Iterator<Entry<IFluidProviderMK2, Long>> iterator = providerEntries.entrySet().iterator();
while(iterator.hasNext()) {
Entry<IFluidProviderMK2, Long> entry = iterator.next();
if(currentTime - entry.getValue() > timeout || isBadLink(entry.getKey())) { iterator.remove(); continue; }
IFluidProviderMK2 provider = entry.getKey();
int[] pressureRange = provider.getProvidingPressureRange(type);
for(int p = pressureRange[0]; p <= pressureRange[1]; p++) {
long available = Math.min(provider.getFluidAvailable(type, p), provider.getProviderSpeed(type, p));
providers[p].add(new Pair(provider, available));
fluidAvailable[p] += available;
}
}
}
public void setupFluidReceivers() {
Iterator<Entry<IFluidReceiverMK2, Long>> iterator = receiverEntries.entrySet().iterator();
while(iterator.hasNext()) {
Entry<IFluidReceiverMK2, Long> entry = iterator.next();
if(currentTime - entry.getValue() > timeout || isBadLink(entry.getKey())) { iterator.remove(); continue; }
IFluidReceiverMK2 receiver = entry.getKey();
int[] pressureRange = receiver.getReceivingPressureRange(type);
for(int p = pressureRange[0]; p <= pressureRange[1]; p++) {
long required = Math.min(receiver.getDemand(type, p), receiver.getReceiverSpeed(type, p));
int priority = receiver.getFluidPriority().ordinal();
receivers[p][priority].add(new Pair(receiver, required));
fluidDemand[p][priority] += required;
}
}
}
public void transferFluid() {
long[] received = new long[IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1];
long[] notAccountedFor = new long[IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1];
for(int p = 0; p <= IFluidUserMK2.HIGHEST_VALID_PRESSURE; p++) { // if the pressure range were ever to increase, we might have to rethink this
long totalAvailable = fluidAvailable[p];
for(int i = ConnectionPriority.values().length - 1; i >= 0; i--) {
long toTransfer = Math.min(fluidDemand[p][i], totalAvailable);
if(toTransfer <= 0) continue;
long priorityDemand = fluidDemand[p][i];
for(Pair<IFluidReceiverMK2, Long> entry : receivers[p][i]) {
double weight = (double) entry.getValue() / (double) (priorityDemand);
long toSend = (long) Math.max(toTransfer * weight, 0D);
toSend -= entry.getKey().transferFluid(type, p, toSend);
received[p] += toSend;
fluidTracker += toSend;
}
totalAvailable -= received[p];
}
notAccountedFor[p] = received[p];
}
for(int p = 0; p <= IFluidUserMK2.HIGHEST_VALID_PRESSURE; p++) {
for(Pair<IFluidProviderMK2, Long> entry : providers[p]) {
double weight = (double) entry.getValue() / (double) fluidAvailable[p];
long toUse = (long) Math.max(received[p] * weight, 0D);
entry.getKey().useUpFluid(type, p, toUse);
notAccountedFor[p] -= toUse;
}
}
for(int p = 0; p <= IFluidUserMK2.HIGHEST_VALID_PRESSURE; p++) {
int iterationsLeft = 100;
while(iterationsLeft > 0 && notAccountedFor[p] > 0 && providers[p].size() > 0) {
iterationsLeft--;
Pair<IFluidProviderMK2, Long> selected = providers[p].get(rand.nextInt(providers[p].size()));
IFluidProviderMK2 scapegoat = selected.getKey();
long toUse = Math.min(notAccountedFor[p], scapegoat.getFluidAvailable(type, p));
scapegoat.useUpFluid(type, p, toUse);
notAccountedFor[p] -= toUse;
}
}
}
public void cleanUp() {
for(int i = 0; i < IFluidUserMK2.HIGHEST_VALID_PRESSURE + 1; i++) {
fluidAvailable[i] = 0;
providers[i].clear();
transfered[i] = 0;
for(int j = 0; j < ConnectionPriority.values().length; j++) {
fluidDemand[i][j] = 0;
receivers[i][j].clear();
}
}
}
}

View File

@ -0,0 +1,19 @@
package api.hbm.fluidmk2;
import com.hbm.uninos.GenNode;
import com.hbm.uninos.INetworkProvider;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.util.fauxpointtwelve.DirPos;
public class FluidNode extends GenNode<FluidNetMK2> {
public FluidNode(INetworkProvider<FluidNetMK2> provider, BlockPos... positions) {
super(provider, positions);
}
@Override
public FluidNode setConnections(DirPos... connections) {
super.setConnections(connections);
return this;
}
}

View File

@ -1,4 +1,4 @@
package api.hbm.fluid;
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.FluidType;

View File

@ -0,0 +1,12 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.FluidType;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;
public interface IFluidConnectorBlockMK2 {
/** dir is the face that is connected to, the direction going outwards from the block */
public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir);
}

View File

@ -0,0 +1,17 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.FluidType;
import net.minecraftforge.common.util.ForgeDirection;
public interface IFluidConnectorMK2 {
/**
* Whether the given side can be connected to
* @param dir
* @return
*/
public default boolean canConnect(FluidType type, ForgeDirection dir) {
return dir != ForgeDirection.UNKNOWN;
}
}

View File

@ -0,0 +1,27 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.lib.Library;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.util.fauxpointtwelve.DirPos;
import net.minecraft.tileentity.TileEntity;
/**
* IFluidConductorMK2 with added node creation method
* @author hbm
*/
public interface IFluidPipeMK2 extends IFluidConnectorMK2 {
public default FluidNode createNode(FluidType type) {
TileEntity tile = (TileEntity) this;
return new FluidNode(type.getNetworkProvider(), new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections(
new DirPos(tile.xCoord + 1, tile.yCoord, tile.zCoord, Library.POS_X),
new DirPos(tile.xCoord - 1, tile.yCoord, tile.zCoord, Library.NEG_X),
new DirPos(tile.xCoord, tile.yCoord + 1, tile.zCoord, Library.POS_Y),
new DirPos(tile.xCoord, tile.yCoord - 1, tile.zCoord, Library.NEG_Y),
new DirPos(tile.xCoord, tile.yCoord, tile.zCoord + 1, Library.POS_Z),
new DirPos(tile.xCoord, tile.yCoord, tile.zCoord - 1, Library.NEG_Z)
);
}
}

View File

@ -0,0 +1,12 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.FluidType;
public interface IFluidProviderMK2 extends IFluidUserMK2 {
public void useUpFluid(FluidType type, int pressure, long amount);
public default long getProviderSpeed(FluidType type, int pressure) { return 1_000_000_000; }
public long getFluidAvailable(FluidType type, int pressure);
public default int[] getProvidingPressureRange(FluidType type) { return DEFAULT_PRESSURE_RANGE; }
}

View File

@ -0,0 +1,63 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.uninos.GenNode;
import com.hbm.uninos.UniNodespace;
import com.hbm.util.fauxpointtwelve.DirPos;
import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public interface IFluidReceiverMK2 extends IFluidUserMK2 {
/** Sends fluid of the desired type and pressure to the receiver, returns the remainder */
public long transferFluid(FluidType type, int pressure, long amount);
public default long getReceiverSpeed(FluidType type, int pressure) { return 1_000_000_000; }
public long getDemand(FluidType type, int pressure);
public default int[] getReceivingPressureRange(FluidType type) { return DEFAULT_PRESSURE_RANGE; }
public default void trySubscribe(FluidType type, World world, DirPos pos) { trySubscribe(type, world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); }
public default void trySubscribe(FluidType type, World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
boolean red = false;
if(te instanceof IFluidConnectorMK2) {
IFluidConnectorMK2 con = (IFluidConnectorMK2) te;
if(!con.canConnect(type, dir.getOpposite())) return;
GenNode node = UniNodespace.getNode(world, x, y, z, type.getNetworkProvider());
if(node != null && node.net != null) {
node.net.addReceiver(this);
red = true;
}
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "fluid");
data.setInteger("color", type.getColor());
double posX = x + 0.5 + dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 + dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 + dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", -dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", -dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", -dir.offsetZ * (red ? 0.025 : 0.1));
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
public default ConnectionPriority getFluidPriority() {
return ConnectionPriority.NORMAL;
}
}

View File

@ -0,0 +1,9 @@
package api.hbm.fluidmk2;
public interface IFluidRegisterListener {
/**
* Called when the fluid registry initializes all fluids. Use CompatFluidRegistry to create new instances of FluidType, which are automatically registered.
*/
public void onFluidsLoad();
}

View File

@ -0,0 +1,68 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.tank.FluidTank;
/**
* IFluidReceiverMK2 with standard implementation for transfer and demand getter.
* @author hbm
*/
public interface IFluidStandardReceiverMK2 extends IFluidReceiverMK2 {
public FluidTank[] getReceivingTanks();
@Override
public default long getDemand(FluidType type, int pressure) {
long amount = 0;
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) amount += (tank.getMaxFill() - tank.getFill());
}
return amount;
}
@Override
public default long transferFluid(FluidType type, int pressure, long amount) {
int tanks = 0;
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) tanks++;
}
if(tanks > 1) {
int firstRound = (int) Math.floor((double) amount / (double) tanks);
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
int toAdd = Math.min(firstRound, tank.getMaxFill() - tank.getFill());
tank.setFill(tank.getFill() + toAdd);
amount -= toAdd;
}
}
}
if(amount > 0) for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
int toAdd = (int) Math.min(amount, tank.getMaxFill() - tank.getFill());
tank.setFill(tank.getFill() + toAdd);
amount -= toAdd;
}
}
return amount;
}
@Override
public default int[] getReceivingPressureRange(FluidType type) {
int lowest = HIGHEST_VALID_PRESSURE;
int highest = 0;
for(FluidTank tank : getReceivingTanks()) {
if(tank.getTankType() == type) {
if(tank.getPressure() < lowest) lowest = tank.getPressure();
if(tank.getPressure() > highest) highest = tank.getPressure();
}
}
return lowest <= highest ? new int[] {lowest, highest} : DEFAULT_PRESSURE_RANGE;
}
@Override
public default long getReceiverSpeed(FluidType type, int pressure) {
return 1_000_000_000;
}
}

View File

@ -0,0 +1,129 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.uninos.GenNode;
import com.hbm.uninos.UniNodespace;
import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
/**
* IFluidProviderMK2 with standard implementation for fluid provision and fluid removal.
* @author hbm
*/
public interface IFluidStandardSenderMK2 extends IFluidProviderMK2 {
public default void tryProvide(FluidTank tank, World world, DirPos pos) { tryProvide(tank.getTankType(), tank.getPressure(), world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); }
public default void tryProvide(FluidType type, World world, DirPos pos) { tryProvide(type, 0, world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); }
public default void tryProvide(FluidType type, int pressure, World world, DirPos pos) { tryProvide(type, pressure, world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); }
public default void tryProvide(FluidTank tank, World world, int x, int y, int z, ForgeDirection dir) { tryProvide(tank.getTankType(), tank.getPressure(), world, x, y, z, dir); }
public default void tryProvide(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { tryProvide(type, 0, world, x, y, z, dir); }
public default void tryProvide(FluidType type, int pressure, World world, int x, int y, int z, ForgeDirection dir) {
TileEntity te = TileAccessCache.getTileOrCache(world, x, y, z);
boolean red = false;
if(te instanceof IFluidConnectorMK2) {
IFluidConnectorMK2 con = (IFluidConnectorMK2) te;
if(con.canConnect(type, dir.getOpposite())) {
GenNode<FluidNetMK2> node = UniNodespace.getNode(world, x, y, z, type.getNetworkProvider());
if(node != null && node.net != null) {
node.net.addProvider(this);
red = true;
}
}
}
if(te != this && te instanceof IFluidReceiverMK2) {
IFluidReceiverMK2 rec = (IFluidReceiverMK2) te;
if(rec.canConnect(type, dir.getOpposite())) {
long provides = Math.min(this.getFluidAvailable(type, pressure), this.getProviderSpeed(type, pressure));
long receives = Math.min(rec.getDemand(type, pressure), rec.getReceiverSpeed(type, pressure));
long toTransfer = Math.min(provides, receives);
toTransfer -= rec.transferFluid(type, pressure, toTransfer);
this.useUpFluid(type, pressure, toTransfer);
}
}
if(particleDebug) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "network");
data.setString("mode", "fluid");
data.setInteger("color", type.getColor());
double posX = x + 0.5 - dir.offsetX * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posY = y + 0.5 - dir.offsetY * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
double posZ = z + 0.5 - dir.offsetZ * 0.5 + world.rand.nextDouble() * 0.5 - 0.25;
data.setDouble("mX", dir.offsetX * (red ? 0.025 : 0.1));
data.setDouble("mY", dir.offsetY * (red ? 0.025 : 0.1));
data.setDouble("mZ", dir.offsetZ * (red ? 0.025 : 0.1));
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY, posZ), new TargetPoint(world.provider.dimensionId, posX, posY, posZ, 25));
}
}
public FluidTank[] getSendingTanks();
@Override
public default long getFluidAvailable(FluidType type, int pressure) {
long amount = 0;
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) amount += tank.getFill();
}
return amount;
}
@Override
public default void useUpFluid(FluidType type, int pressure, long amount) {
int tanks = 0;
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) tanks++;
}
if(tanks > 1) {
int firstRound = (int) Math.floor((double) amount / (double) tanks);
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
int toRem = Math.min(firstRound, tank.getFill());
tank.setFill(tank.getFill() - toRem);
amount -= toRem;
}
}
}
if(amount > 0) for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type && tank.getPressure() == pressure) {
int toRem = (int) Math.min(amount, tank.getFill());
tank.setFill(tank.getFill() - toRem);
amount -= toRem;
}
}
}
@Override
public default int[] getProvidingPressureRange(FluidType type) {
int lowest = HIGHEST_VALID_PRESSURE;
int highest = 0;
for(FluidTank tank : getSendingTanks()) {
if(tank.getTankType() == type) {
if(tank.getPressure() < lowest) lowest = tank.getPressure();
if(tank.getPressure() > highest) highest = tank.getPressure();
}
}
return lowest <= highest ? new int[] {lowest, highest} : DEFAULT_PRESSURE_RANGE;
}
@Override
public default long getProviderSpeed(FluidType type, int pressure) {
return 1_000_000_000;
}
}

View File

@ -0,0 +1,5 @@
package api.hbm.fluidmk2;
public interface IFluidStandardTransceiverMK2 extends IFluidStandardReceiverMK2, IFluidStandardSenderMK2 {
}

View File

@ -0,0 +1,15 @@
package api.hbm.fluidmk2;
import com.hbm.inventory.fluid.tank.FluidTank;
import api.hbm.tile.ILoadedTile;
public interface IFluidUserMK2 extends IFluidConnectorMK2, ILoadedTile {
public static final int HIGHEST_VALID_PRESSURE = 5;
public static final int[] DEFAULT_PRESSURE_RANGE = new int[] {0, 0};
public static final boolean particleDebug = false;
public FluidTank[] getAllTanks();
}

View File

@ -0,0 +1,24 @@
package api.hbm.fluidmk2;
/*
It's rather shrimple: the shiny new energy system using universal nodespace, but hit with a hammer until it works with fluids.
Has a few extra bits and pieces for handling, but the concept is basically the same.
Sounds good?
*/
/*
Quick explanation for implementing new fluids via addon:
Fluids are subject to /ntmreload so they get wiped and rebuilt using the init function in Fluids, which means that if fluids
are simply added externally during startup, they are removed permanently until the game restarts. Same concept as with recipes, really.
To fix this we need to make sure that externally registered fluids are re-registered during reload, for that purpose we have
IFluidRegisterListener, a simple interface with a small method that runs whenever the fluid list is reloaded. IFluidRegisterListeners
need to be registered with CompatExternal.registerFluidRegisterListener to be used, make sure to do this during PreInit.
Inside the IFluidRegisterListener, fluids can be added using CompatFluidRegistry.registerFluid, which will generate a Fluid instance
using the supplied arguments and automatically register it. Do note that like with custom fluids, fluids need numeric IDs assigned manually.
To prevent collisions with stock fluids when NTM updates, make sure to choose a high starting ID (e.g. 10,000).
The fluid created by registerFluid can have traits added to them, just like how NTM does it with its stock fluids.
*/

View File

@ -1,17 +0,0 @@
package api.hbm.item;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public interface IButtonReceiver {
/**
* Called in ModEventHandlerClient for any keyboard input related to this item
* @param stack
* @param player
*/
@SideOnly(Side.CLIENT)
public void handleKeyboardInput(ItemStack stack, EntityPlayer player);
}

View File

@ -1,20 +0,0 @@
package api.hbm.item;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public interface IClickReceiver {
/**
* Called in ModEventHandlerClient for any mouse input related to this item
* @param stack
* @param player
* @param button
* @param state
* @return true if the event should be canceled
*/
@SideOnly(Side.CLIENT)
public boolean handleMouseInput(ItemStack stack, EntityPlayer player, int button, boolean state);
}

View File

@ -0,0 +1,13 @@
package api.hbm.recipe;
public interface IRecipeRegisterListener {
/**
* Called during SerializableRecipe.initialize(), after the defaults are loaded but before the template is written.
* Due to the way the recipes are handled, calling it once is not enough, it has to be called once for every SerializableRecipe
* instance handled, therefore the load operation passes the type name of the recipe, so that the listeners know what type of recipe
* to register at that point. Note that the actual SerializableRecipe instance is irrelevant, since recipes are static anyway,
* and direct tampering with SerializableRecipes is not recommended.
*/
public void onRecipeLoad(String recipeClassName);
}

View File

@ -0,0 +1,17 @@
package api.hbm.recipe;
/*
Quick guide on how to make robust and safe recipe integration:
* Implement IRecipeRegisterListener, the resulting class will handle all recipes, and the onRecipeLoad method is called every time the SerializableRecipe system updates
* Register your IRecipeRegisterListener using CompatExternal.registerRecipeRegisterListener, this has to happen before the SerializableRecipe initializes, doing this during PreInit should be safe
* In your IRecipeRegisterListener, check the supplied recipe type string (which will be the class name of the SerializableRecipe currently being registered) and register your custom recipes accordingly using CompatRecipeRegistry
Explanation:
* Order of operations is important for the recipes to work, if recipes are loaded outside the scope of SerializableRecipe.initialize, they will not work correctly
* If recipes are registered before the init, they are deleted, if they are registered after the init, they will not be part of the config template file, and get deleted when running /ntmreload
* Machines change all the time, so the recipe classes should not be considered API, since the compat would break immediately if a machine is changed or removed
* CompatRecipeRegistry promises to never change its method signatures, and have solid sanity checking when recipes are registered, allowing it to make the bst of whatever data is thrown at it
* Using this dedicated registry class means that even if a machine is changed or removed, the recipes will continue to work to the best of its abilities
*/

View File

@ -0,0 +1,9 @@
package api.hbm.redstoneoverradio;
public interface IRORInfo {
public static String PREFIX_VALUE = "VAL:";
public static String PREFIX_FUNCTION = "FUN:";
public String[] getFunctionInfo();
}

View File

@ -0,0 +1,41 @@
package api.hbm.redstoneoverradio;
public interface IRORInteractive extends IRORInfo {
public static String NAME_SEPARATOR = "!";
public static String PARAM_SEPARATOR = ":";
public static String EX_NULL = "Exception: Null Command";
public static String EX_NAME = "Exception: Multiple Name Separators";
public static String EX_FORMAT = "Exception: Parameter in Invalid Format";
/** Runs a function on the ROR component, usually causing the component to change or do something. Returns are optional. */
public String runRORFunction(String name, String[] params);
/** Extracts the command name from a full command string */
public static String getCommand(String input) {
if(input == null || input.isEmpty()) throw new RORFunctionException(EX_NULL);
String[] parts = input.split(NAME_SEPARATOR);
if(parts.length <= 0 || parts.length > 2) throw new RORFunctionException(EX_NAME);
if(parts[0].isEmpty()) throw new RORFunctionException(EX_NULL);
return parts[0];
}
/** Extracts the param list from a full command string */
public static String[] getParams(String input) {
if(input == null || input.isEmpty()) throw new RORFunctionException(EX_NULL);
String[] parts = input.split(NAME_SEPARATOR);
if(parts.length <= 0 || parts.length > 2) throw new RORFunctionException(EX_NAME);
if(parts.length == 1) return new String[0];
String paramList = parts[1];
String[] params = paramList.split(PARAM_SEPARATOR);
return params;
}
public static int parseInt(String val, int min, int max) {
int result = 0;
try { result = Integer.parseInt(val); } catch(Exception x) { throw new RORFunctionException(EX_FORMAT); };
if(result < min || result > max) throw new RORFunctionException(EX_FORMAT);
return result;
}
}

View File

@ -0,0 +1,7 @@
package api.hbm.redstoneoverradio;
public interface IRORValueProvider extends IRORInfo {
/** Grabs the specified value from this ROR component, operations should not cause any changes with the component itself */
public String provideRORValue(String name);
}

View File

@ -0,0 +1,8 @@
package api.hbm.redstoneoverradio;
public class RORFunctionException extends RuntimeException {
public RORFunctionException(String message) {
super(message);
}
}

View File

@ -0,0 +1,49 @@
/**
* @author hbm
*
*/
package api.hbm.redstoneoverradio;
/*
__ __ __ _________ ________ __ __ __ __ ______ __
/_/| /_/\ /_/| /________/\ /_______/| /_/| /_/| /_/|_____ /_/| /_____/| /_/|
| || | \\ | || | ___ \ \ | ______|/ | |\_| || | |/_____| || |___ || | ||
| || | \ \\ | || | || \ \/ | ||___ | \/_/ |/ | ______ || /__| || | ||__
| || | |\ \\| || | || \ || | |/__/| \ // | |/_____| || | ___|/ | |/_/|
| || | ||\ \| || | || | || | ____|/ > </\ |____ ____|/_ | |/__/| | __|/
| || | || \ | || | ||___/ |/ | ||_____ / __ \/| /_____| |______/| |______|/ | ||
| || | || \ || | |/__/ / | |/____/| | /| \ || |________________|/ | ||
|__|/ |__|/ \__|/ |_________/ |________|/ |__|/ |__|/ |__|/
(not AN index, INDEX is just the codename)
(also no i did not use an ASCII font generator i spent like half an hour on this)
INDEX includes Redstone-over-Radio APIs for interacting with ROR torches in ways more complex than simple comparator output,
simply put, certain ROR torches may run functions on the ROR component or read more complex values. This means that with the ROR
system alone, one can make complex monitoring and logic systems controlling machines via redstone automation.
INDEX includes:
- IRORInfo, an interface that provides a list of all valid functions. This interface should never be implemented directly because
it is worthless on its own, rather it is extended by all other ROR API interfaces
- IRORValueProvider, a simple interface that returns values based on names, serving as a simple getter. Get operations should never
cause changes within the ROR component, and should be kept simple
- IRORInteractive, an interface providing functions equivalent to java, usually performing a state change within the component and
optionally returning a value
On the implementation side we can expect:
- ROR readers, torches which have a list of named values which are read, as well as frequencies on which these values are broadcasted
- ROR controllers, torches which have one frequency and can receive commands with parameters which will be executed on the component
- ROR programmers, torches which have a list of frequencies and return frequencies which can receive commands with parameters and
then send the return value on the return frequency
- ROR logic receivers, torches which can turn signals into redstone based on various factors like arithmetic comparison and string
operators like matches, matches not and substring (thanks to vær for taking care of that)
ROR programmers can indeed do everything that the readers and controllers can, but their added complexity requires more GUI elements
which are more time-consuming to set up and limits the amount of command channels available, hence why readers and controllers exist
when only a simple solution is required
Addendum: While the RTTY system can support any arbitrary object as a signal, INDEX will strictly use strings, since that simplifies
things regarding serialization and saving signals to NBT. Counters already use a parse to int32 function, so this still checks out.
*/

View File

@ -0,0 +1,55 @@
package api.hbm.tile;
import java.util.HashMap;
import java.util.Map;
import com.hbm.util.Compat;
import com.hbm.util.Tuple.Quartet;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
/** For anything that should be removed off networks when considered unloaded, only affects providers and receivers, not links. Must not necessarily be a tile. */
public interface ILoadedTile {
public boolean isLoaded();
// should we gunk this into the API? no, but i don't care
public static class TileAccessCache {
public static Map<Quartet, TileAccessCache> cache = new HashMap();
public static int NULL_CACHE = 20;
public static int NONNULL_CACHE = 60;
public TileEntity tile;
public long expiresOn;
public TileAccessCache(TileEntity tile, long expiresOn) {
this.tile = tile;
this.expiresOn = expiresOn;
}
public boolean hasExpired(long worldTime) {
if(tile != null && tile.isInvalid()) return true;
if(worldTime >= expiresOn) return true;
if(tile instanceof ILoadedTile && !((ILoadedTile) tile).isLoaded()) return true;
return false;
}
public static Quartet publicCumRag = new Quartet(0, 0, 0, 0);
public static TileEntity getTileOrCache(World world, int x, int y, int z) {
publicCumRag.mangle(x, y, z, world.provider.dimensionId);
TileAccessCache cache = TileAccessCache.cache.get(publicCumRag);
if(cache == null || cache.hasExpired(world.getTotalWorldTime())) {
TileEntity tile = Compat.getTileStandard(world, x, y, z);
cache = new TileAccessCache(tile, world.getTotalWorldTime() + (tile == null ? NULL_CACHE : NONNULL_CACHE));
TileAccessCache.cache.put(publicCumRag.clone(), cache);
return tile;
} else {
return cache.tile;
}
}
}
}

View File

@ -1,17 +1,18 @@
package com.hbm.blocks;
import com.hbm.lib.RefStrings;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public class BlockBase extends Block {
private boolean beaconable = false;
private boolean canSpawn = true;
public BlockBase() {
super(Material.rock);
@ -20,14 +21,14 @@ public class BlockBase extends Block {
public BlockBase(Material material) {
super(material);
}
@Override
public Block setBlockName(String name) {
super.setBlockName(name);
this.setBlockTextureName(RefStrings.MODID + ":" + name);
return this;
}
/**
* Daisychainable setter for making the block a beacon base block
* @return
@ -37,11 +38,21 @@ public class BlockBase extends Block {
return this;
}
public BlockBase noMobSpawn() {
this.canSpawn = false;
return this;
}
@Override
public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) {
return this.canSpawn ? super.canCreatureSpawn(type, world, x, y, z) : false;
}
@Override
public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ) {
return this.beaconable;
}
/**
* Sets the block to air and drops it
* @param world
@ -50,7 +61,7 @@ public class BlockBase extends Block {
* @param z
*/
public void dismantle(World world, int x, int y, int z) {
world.setBlockToAir(x, y, z);
ItemStack itemstack = new ItemStack(this, 1);

View File

@ -1,13 +1,11 @@
package com.hbm.blocks;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.handler.ThreeInts;
import com.hbm.interfaces.ICopiable;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.world.gen.nbt.INBTBlockTransformable;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
@ -15,6 +13,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
@ -27,12 +26,18 @@ import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight {
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable, INBTBlockTransformable {
public BlockDummyable(Material mat) {
super(mat);
@ -49,7 +54,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
public static final int offset = 10;
// meta offset from dummy to extra rotation
public static final int extra = 6;
/*
* An extra integer that can be set before block set operations (such as makeExtra) and intercepted in createNewTileEntity.
* This way we can inelegantly add variation to the tiles created even if the metadata would be the same.
@ -59,11 +64,11 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
public static int overrideTileMeta = 0;
public static boolean safeRem = false;
public static void setOverride(int i) {
overrideTileMeta = i;
}
public static void resetOverride() {
overrideTileMeta = 0;
}
@ -72,27 +77,20 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
super.onNeighborBlockChange(world, x, y, z, block);
if(world.isRemote || safeRem)
if(safeRem)
return;
int metadata = world.getBlockMetadata(x, y, z);
// if it's an extra, remove the extra-ness
if(metadata >= extra)
metadata -= extra;
ForgeDirection dir = ForgeDirection.getOrientation(metadata).getOpposite();
Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
if(b != this) {
world.setBlockToAir(x, y, z);
}
destroyIfOrphan(world, x, y, z);
}
public void updateTick(World world, int x, int y, int z, Random rand) {
super.updateTick(world, x, y, z, rand);
destroyIfOrphan(world, x, y, z);
}
private void destroyIfOrphan(World world, int x, int y, int z) {
if(world.isRemote)
return;
@ -105,10 +103,32 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
ForgeDirection dir = ForgeDirection.getOrientation(metadata).getOpposite();
Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
if(b != this) {
world.setBlockToAir(x, y, z);
// An extra precaution against multiblocks on chunk borders being erroneously deleted.
// Technically, this might be used to persist ghost dummy blocks by manipulating
// loaded chunks and block destruction, but this gives no benefit to the player,
// cannot be done accidentally, and is definitely preferable to multiblocks
// just vanishing when their chunks are unloaded in an unlucky way.
if(b != this && world.checkChunksExist(x - 1, y - 1, z - 1, x + 1, y + 1, z + 1)) {
if (isLegacyMonoblock(world, x, y, z)) {
fixLegacyMonoblock(world, x, y, z);
} else {
world.setBlockToAir(x, y, z);
}
}
}
// Override this when turning a single block into a pseudo-multiblock.
// If this returns true, instead of being deleted as an orphan, the block
// will be promoted to a core of a dummyable, however without any dummies.
// This is only called if the block is presumed an orphan, so you don't
// need to check that here.
protected boolean isLegacyMonoblock(World world, int x, int y, int z) {
return false;
}
protected void fixLegacyMonoblock(World world, int x, int y, int z) {
// Promote to a lone core block with the same effective rotation as before the change
world.setBlockMetadataWithNotify(x, y, z, offset + world.getBlockMetadata(x, y, z), 3);
}
public int[] findCore(World world, int x, int y, int z) {
@ -116,7 +136,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
return findCoreRec(world, x, y, z);
}
List<ThreeInts> positions = new ArrayList();
List<ThreeInts> positions = new ArrayList<>();
public int[] findCoreRec(World world, int x, int y, int z) {
@ -178,7 +198,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
if(i == 3) {
dir = ForgeDirection.getOrientation(4);
}
dir = getDirModified(dir);
if(!checkRequirement(world, x, y, z, dir, o)) {
@ -216,11 +236,6 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
super.onBlockPlacedBy(world, x, y, z, player, itemStack);
}
/*@Override
public void onBlockAdded(World world, int x, int y, int z) {
lastBlockSet = new BlockPos(x, y, z);
}*/
/**
* A bit more advanced than the dir modifier, but it is important that the resulting direction meta is in the core range.
* Using the "extra" metas is technically possible but requires a bit of tinkering, e.g. preventing a recursive loop
@ -236,7 +251,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
protected int getMetaForCore(World world, int x, int y, int z, EntityPlayer player, int original) {
return original;
}
/**
* Allows to modify the general placement direction as if the player had another rotation.
* Quite basic due to only having 1 param but it's more meant to fix/limit the amount of directions
@ -267,11 +282,11 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
return;
// world.setBlockMetadataWithNotify(x, y, z, meta + extra, 3);
this.safeRem = true;
safeRem = true;
world.setBlock(x, y, z, this, meta + extra, 3);
this.safeRem = false;
safeRem = false;
}
public void removeExtra(World world, int x, int y, int z) {
if(world.getBlock(x, y, z) != this)
@ -283,9 +298,9 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
return;
// world.setBlockMetadataWithNotify(x, y, z, meta + extra, 3);
this.safeRem = true;
safeRem = true;
world.setBlock(x, y, z, this, meta - extra, 3);
this.safeRem = false;
safeRem = false;
}
// checks if the dummy metadata is within the extra range
@ -309,7 +324,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
// if(pos != null) {
ForgeDirection d = ForgeDirection.getOrientation(i);
if(world.getBlock(x - d.offsetX, y - d.offsetY, z - d.offsetZ) == this)
world.setBlockToAir(x - d.offsetX, y - d.offsetY, z - d.offsetZ);
// }
@ -384,7 +399,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
}
protected boolean standardOpenBehavior(World world, int x, int y, int z, EntityPlayer player, int id) {
if(world.isRemote) {
return true;
} else if(!player.isSneaking()) {
@ -402,14 +417,14 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
@Override
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
if(!player.capabilities.isCreativeMode) {
harvesters.set(player);
this.dropBlockAsItem(world, x, y, z, meta, 0);
harvesters.set(null);
}
}
/*
* Called after the block and TE are already gone, so this method is of no use to us.
*/
@ -418,56 +433,85 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
player.addExhaustion(0.025F);
}
public boolean useDetailedHitbox() {
return !bounding.isEmpty();
}
public List<AxisAlignedBB> bounding = new ArrayList();
public List<AxisAlignedBB> bounding = new ArrayList<>();
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) {
if(!this.useDetailedHitbox()) {
super.addCollisionBoxesToList(world, x, y, z, entityBounding, list, entity);
return;
}
int[] pos = this.findCore(world, x, y, z);
if(pos == null)
return;
x = pos[0];
y = pos[1];
z = pos[2];
for(AxisAlignedBB aabb :this.bounding) {
AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - this.offset).getRotation(ForgeDirection.UP));
ForgeDirection rot = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - offset).getRotation(ForgeDirection.UP);
for(AxisAlignedBB aabb : this.bounding) {
AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, rot);
if(entityBounding.intersectsWith(boxlet)) {
list.add(boxlet);
}
}
}
public static AxisAlignedBB getAABBRotationOffset(AxisAlignedBB aabb, double x, double y, double z, ForgeDirection dir) {
AxisAlignedBB newBox = null;
if(dir == ForgeDirection.NORTH) newBox = AxisAlignedBB.getBoundingBox(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ);
if(dir == ForgeDirection.EAST) newBox = AxisAlignedBB.getBoundingBox(-aabb.maxZ, aabb.minY, aabb.minX, -aabb.minZ, aabb.maxY, aabb.maxX);
if(dir == ForgeDirection.SOUTH) newBox = AxisAlignedBB.getBoundingBox(-aabb.maxX, aabb.minY, -aabb.maxZ, -aabb.minX, aabb.maxY, -aabb.minZ);
if(dir == ForgeDirection.WEST) newBox = AxisAlignedBB.getBoundingBox(aabb.minZ, aabb.minY, -aabb.maxX, aabb.maxZ, aabb.maxY, -aabb.minX);
if(newBox != null) {
newBox.offset(x, y, z);
return newBox;
}
return AxisAlignedBB.getBoundingBox(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ).offset(x + 0.5, y + 0.5, z + 0.5);
}
// Don't mutate the xyz parameters, or the interaction max distance will bite you
@Override
public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 startVec, Vec3 endVec) {
if(!this.useDetailedHitbox()) {
return super.collisionRayTrace(world, x, y, z, startVec, endVec);
}
int[] pos = this.findCore(world, x, y, z);
if(pos == null)
return super.collisionRayTrace(world, x, y, z, startVec, endVec);
ForgeDirection rot = ForgeDirection.getOrientation(world.getBlockMetadata(pos[0], pos[1], pos[2]) - offset).getRotation(ForgeDirection.UP);
for(AxisAlignedBB aabb : this.bounding) {
AxisAlignedBB boxlet = getAABBRotationOffset(aabb, pos[0] + 0.5, pos[1], pos[2] + 0.5, rot);
MovingObjectPosition intercept = boxlet.calculateIntercept(startVec, endVec);
if(intercept != null) {
return new MovingObjectPosition(x, y, z, intercept.sideHit, intercept.hitVec);
}
}
return null;
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
if(!this.useDetailedHitbox()) {
@ -476,35 +520,86 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.999F, 1.0F); //for some fucking reason setting maxY to something that isn't 1 magically fixes item collisions
}
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldDrawHighlight(World world, int x, int y, int z) {
return !this.bounding.isEmpty();
}
@Override
@SideOnly(Side.CLIENT)
public void drawHighlight(DrawBlockHighlightEvent event, World world, int x, int y, int z) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return;
x = pos[0];
y = pos[1];
z = pos[2];
EntityPlayer player = event.player;
float interp = event.partialTicks;
double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) interp;
double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) interp;
double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp;
float exp = 0.002F;
int meta = world.getBlockMetadata(x, y, z);
ForgeDirection rot = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - offset).getRotation(ForgeDirection.UP);
ICustomBlockHighlight.setup();
for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
for(AxisAlignedBB aabb : this.bounding) RenderGlobal.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, rot).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
ICustomBlockHighlight.cleanup();
}
}
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
int[] pos = findCore(world, x, y, z);
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if (tile instanceof ICopiable)
return ((ICopiable) tile).getSettings(world, pos[0], pos[1], pos[2]);
else
return null;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
int[] pos = findCore(world, x, y, z);
if(pos == null) return;
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if (tile instanceof ICopiable)
((ICopiable) tile).pasteSettings(nbt, index, world, player, pos[0], pos[1], pos[2]);
}
@Override
public String[] infoForDisplay(World world, int x, int y, int z) {
int[] pos = findCore(world, x, y, z);
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if (tile instanceof ICopiable)
return ((ICopiable) tile).infoForDisplay(world, x, y, z);
return null;
}
@Override
public int transformMeta(int meta, int coordBaseMode) {
boolean isOffset = meta >= 12; // squishing causes issues
boolean isExtra = !isOffset && meta >= extra;
if(isOffset) {
meta -= offset;
} else if(isExtra) {
meta -= extra;
}
meta = INBTBlockTransformable.transformMetaDeco(meta, coordBaseMode);
if(isOffset) {
meta += offset;
} else if(isExtra) {
meta += extra;
}
return meta;
}
}

View File

@ -1,9 +1,6 @@
package com.hbm.blocks;
import java.util.Locale;
import com.hbm.util.EnumUtil;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
@ -11,6 +8,8 @@ import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import java.util.Locale;
public class BlockEnumMulti extends BlockMulti {
public Class<? extends Enum> theEnum;
@ -23,17 +22,17 @@ public class BlockEnumMulti extends BlockMulti {
this.multiName = multiName;
this.multiTexture = multiTexture;
}
protected IIcon[] icons;
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
if(multiTexture) {
Enum[] enums = theEnum.getEnumConstants();
this.icons = new IIcon[enums.length];
for(int i = 0; i < icons.length; i++) {
Enum num = enums[i];
this.icons[i] = reg.registerIcon(this.getTextureMultiName(num));
@ -42,25 +41,25 @@ public class BlockEnumMulti extends BlockMulti {
this.blockIcon = reg.registerIcon(this.getTextureName());
}
}
public String getUnlocalizedName(ItemStack stack) {
if(this.multiName) {
Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage());
return getUnlocalizedMultiName(num);
}
return this.getUnlocalizedName();
}
public String getTextureMultiName(Enum num) {
return this.getTextureName() + "." + num.name().toLowerCase(Locale.US);
}
public String getUnlocalizedMultiName(Enum num) {
return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {

View File

@ -11,6 +11,14 @@ public class BlockEnums {
BAUXITE
}
public static enum EnumMeteorType {
IRON,
COPPER,
ALUMINIUM,
RAREEARTH,
COBALT
}
public static enum EnumBiomeType {
DESERT,
WOODLAND
@ -50,6 +58,14 @@ public class BlockEnums {
SMALL
}
public static enum LightstoneType {
UNREFINED,
TILE,
BRICKS,
BRICKS_CHISELED,
CHISELED
}
public static enum DecoComputerEnum {
IBM_300PL
}
@ -64,4 +80,5 @@ public class BlockEnums {
FLUORESCENT,
HALOGEN
}
}

View File

@ -1,9 +1,6 @@
package com.hbm.blocks;
import java.util.Random;
import com.hbm.entity.item.EntityFallingBlockNT;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
@ -14,6 +11,8 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import java.util.Random;
public class BlockFallingNT extends Block {
public static boolean fallInstantly;
@ -45,7 +44,7 @@ public class BlockFallingNT extends Block {
}
protected void fall(World world, int x, int y, int z) {
if(canFallThrough(world, x, y - 1, z) && y >= 0) {
byte range = 32;

View File

@ -1,7 +1,5 @@
package com.hbm.blocks;
import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
@ -9,6 +7,8 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import java.util.List;
public abstract class BlockMulti extends BlockBase implements IBlockMulti {
public BlockMulti() {
@ -31,8 +31,4 @@ public abstract class BlockMulti extends BlockBase implements IBlockMulti {
list.add(new ItemStack(item, 1, i));
}
}
public String getUnlocalizedName(ItemStack stack) {
return this.getUnlocalizedName();
}
}

View File

@ -1,8 +1,5 @@
package com.hbm.blocks;
import java.util.ArrayList;
import java.util.Random;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
@ -12,8 +9,11 @@ import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import java.util.ArrayList;
import java.util.Random;
public class BlockRemap extends Block implements ILookOverlay {
public Block remapBlock;
public int remapMeta;
@ -29,7 +29,7 @@ public class BlockRemap extends Block implements ILookOverlay {
public IIcon getIcon(int meta, int side) {
return this.remapBlock.getIcon(meta, side);
}
@Override
public Item getItemDropped(int meta, Random rand, int fortune) {
return this.remapBlock.getItemDropped(meta, rand, fortune);

View File

@ -1,9 +1,9 @@
package com.hbm.blocks;
import java.util.List;
import net.minecraft.world.World;
import java.util.List;
public interface IAnalyzable {
public List<String> getDebugInfo(World world, int x, int y, int z);

View File

@ -1,9 +1,20 @@
package com.hbm.blocks;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
public interface IBlockMulti {
public int getSubCount();
public default String getUnlocalizedName(ItemStack stack) {
return ((Block)this).getUnlocalizedName();
}
public default String getOverrideDisplayName(ItemStack stack) {
return null;
}
public default int rectify(int meta) {
return Math.abs(meta % getSubCount());
}

View File

@ -11,4 +11,27 @@ public interface IBlockSideRotation {
public static int getRenderType() {
return renderID;
}
// 0 1 3 2 becomes 0 2 3 1
// I want to smoke that swedish kush because it clearly makes you fucking stupid
public static int topToBottom(int topRotation) {
switch(topRotation) {
case 1: return 2;
case 2: return 1;
default: return topRotation;
}
}
public static boolean isOpposite(int from, int to) {
switch(from) {
case 0: return to == 1;
case 1: return to == 0;
case 2: return to == 3;
case 3: return to == 2;
case 4: return to == 5;
case 5: return to == 4;
default: return false;
}
}
}

View File

@ -1,18 +1,17 @@
package com.hbm.blocks;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import org.lwjgl.opengl.GL11;
public interface ICustomBlockHighlight {
@SideOnly(Side.CLIENT) public boolean shouldDrawHighlight(World world, int x, int y, int z);
@SideOnly(Side.CLIENT) public void drawHighlight(DrawBlockHighlightEvent event, World world, int x, int y, int z);
@SideOnly(Side.CLIENT)
public static void setup() {
GL11.glEnable(GL11.GL_BLEND);
@ -22,7 +21,7 @@ public interface ICustomBlockHighlight {
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glDepthMask(false);
}
@SideOnly(Side.CLIENT)
public static void cleanup() {
GL11.glDepthMask(true);

View File

@ -1,9 +1,5 @@
package com.hbm.blocks;
import java.util.List;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
@ -11,6 +7,9 @@ import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import org.lwjgl.opengl.GL11;
import java.util.List;
public interface ILookOverlay {
@ -33,14 +32,14 @@ public interface ILookOverlay {
try {
for(String line : text) {
int color = 0xFFFFFF;
if(line.startsWith("&[")) {
int end = line.lastIndexOf("&]");
color = Integer.parseInt(line.substring(2, end));
line = line.substring(end + 2);
}
mc.fontRenderer.drawStringWithShadow(line, pX, pZ, color);
pZ += 10;
}

View File

@ -1,11 +1,11 @@
package com.hbm.blocks;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import java.util.List;
public interface IPersistentInfoProvider {
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext);

View File

@ -1,23 +1,22 @@
package com.hbm.blocks;
import java.util.List;
import org.lwjgl.input.Keyboard;
import com.hbm.util.I18nUtil;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import org.lwjgl.input.Keyboard;
import com.hbm.util.i18n.I18nUtil;
import java.util.List;
public interface ITooltipProvider {
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext);
public default void addStandardInfo(ItemStack stack, EntityPlayer player, List list, boolean ext) {
if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
for(String s : I18nUtil.resolveKeyArray(((Block)this).getUnlocalizedName() + ".desc")) list.add(EnumChatFormatting.YELLOW + s);
} else {
@ -26,7 +25,7 @@ public interface ITooltipProvider {
EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info");
}
}
public default EnumRarity getRarity(ItemStack stack) {
return EnumRarity.common;
}

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,10 @@ import static net.minecraftforge.common.util.ForgeDirection.SOUTH;
import static net.minecraftforge.common.util.ForgeDirection.UP;
import static net.minecraftforge.common.util.ForgeDirection.WEST;
import java.awt.Color;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.potion.HbmPotion;
import cpw.mods.fml.relauncher.Side;
@ -47,9 +49,9 @@ public class Balefire extends BlockFire {
return icon;
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
if(world.getGameRules().getGameRuleBooleanValue("doFireTick")) {
boolean onNetherrack = world.getBlock(x, y - 1, z).isFireSource(world, x, y - 1, z, UP);
if(!this.canPlaceBlockAt(world, x, y, z)) {
world.setBlockToAir(x, y, z);
@ -57,12 +59,10 @@ public class Balefire extends BlockFire {
int meta = world.getBlockMetadata(x, y, z);
world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world) + rand.nextInt(10));
if(meta < 15) world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world) + rand.nextInt(10));
if(!onNetherrack && !this.canNeighborBurn(world, x, y, z)) {
if(!World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)) {
world.setBlockToAir(x, y, z);
}
if(!this.canNeighborBurn(world, x, y, z) && !World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)) {
world.setBlockToAir(x, y, z);
} else {
if(meta < 15) {
this.tryCatchFire(world, x + 1, y, z, 500, rand, meta, WEST);
@ -71,31 +71,33 @@ public class Balefire extends BlockFire {
this.tryCatchFire(world, x, y + 1, z, 300, rand, meta, DOWN);
this.tryCatchFire(world, x, y, z - 1, 500, rand, meta, SOUTH);
this.tryCatchFire(world, x, y, z + 1, 500, rand, meta, NORTH);
}
int h = 3;
for(int i1 = x - 1; i1 <= x + 1; ++i1) {
for(int j1 = z - 1; j1 <= z + 1; ++j1) {
for(int k1 = y - 1; k1 <= y + 4; ++k1) {
if(i1 != x || k1 != y || j1 != z) {
int l1 = 100;
for(int ix = x - h; ix <= x + h; ++ix) {
for(int iz = z - h; iz <= z + h; ++iz) {
for(int iy = y - 1; iy <= y + 4; ++iy) {
if(ix != x || iy != y || iz != z) {
int fireLimit = 100;
if(k1 > y + 1) {
l1 += (k1 - (y + 1)) * 100;
}
if(iy > y + 1) {
fireLimit += (iy - (y + 1)) * 100;
}
if(world.getBlock(ix, iy, iz) == ModBlocks.balefire && world.getBlockMetadata(ix, iy, iz) > meta + 1) {
world.setBlock(ix, iy, iz, this, meta + 1, 3);
continue;
}
int i2 = this.getChanceOfNeighborsEncouragingFire(world, i1, k1, j1);
int neighborFireChance = this.getChanceOfNeighborsEncouragingFire(world, ix, iy, iz);
if(i2 > 0) {
int j2 = (i2 + 40 + world.difficultySetting.getDifficultyId() * 7) / (meta + 30);
if(neighborFireChance > 0) {
int adjustedFireChance = (neighborFireChance + 40 + world.difficultySetting.getDifficultyId() * 7) / (meta + 30);
if(j2 > 0 && rand.nextInt(l1) <= j2) {
int k2 = meta + rand.nextInt(5) / 4;
if(k2 > 15) {
k2 = 15;
if(adjustedFireChance > 0 && rand.nextInt(fireLimit) <= adjustedFireChance) {
world.setBlock(ix, iy, iz, this, meta + 1, 3);
}
world.setBlock(i1, k1, j1, this, k2, 3);
}
}
}
@ -156,5 +158,15 @@ public class Balefire extends BlockFire {
if(entity instanceof EntityLivingBase) ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 5 * 20, 9));
}
@SideOnly(Side.CLIENT)
public int colorMultiplier(IBlockAccess world, int x, int y, int z) {
int meta = world.getBlockMetadata(x, y, z);
return Color.HSBtoRGB(0F, 0F, 1F - meta / 30F);
}
@Override
public int getRenderType() {
return 1;
}
}

View File

@ -8,6 +8,6 @@ public class BlockC4 extends BlockTNTBase {
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
world.createExplosion(entity, x, y, z, 26F, true);
world.createExplosion(entity, x, y, z, 15F, true);
}
}

View File

@ -12,10 +12,13 @@ import java.util.Random;
import com.hbm.blocks.BlockContainerBase;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.item.EntityTNTPrimedBase;
import com.hbm.interfaces.IBomb;
import com.hbm.tileentity.bomb.TileEntityCharge;
import api.hbm.block.IFuckingExplode;
import api.hbm.block.IToolable;
import net.minecraft.util.MathHelper;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
@ -29,7 +32,7 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class BlockChargeBase extends BlockContainerBase implements IBomb, IToolable, ITooltipProvider {
public abstract class BlockChargeBase extends BlockContainerBase implements IBomb, IToolable, ITooltipProvider, IFuckingExplode {
public static boolean safe = false;
@ -134,8 +137,18 @@ public abstract class BlockChargeBase extends BlockContainerBase implements IBom
}
@Override
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_) {
this.explode(world, x, y, z);
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) {
if(!world.isRemote) {
EntityTNTPrimedBase tntPrimed = new EntityTNTPrimedBase(world, x + 0.5D, y + 0.5D, z + 0.5D, explosion != null ? explosion.getExplosivePlacedBy() : null, this);
tntPrimed.fuse = 0;
tntPrimed.detonateOnCollision = false;
world.spawnEntityInWorld(tntPrimed);
}
}
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
explode(world, MathHelper.floor_double(x), MathHelper.floor_double(y), MathHelper.floor_double(z));
}
@Override

View File

@ -5,6 +5,9 @@ import java.util.List;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
import com.hbm.explosion.vanillant.standard.EntityProcessorStandard;
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
import com.hbm.particle.helper.ExplosionCreator;
import cpw.mods.fml.client.registry.RenderingRegistry;
import net.minecraft.entity.player.EntityPlayer;
@ -22,10 +25,13 @@ public class BlockChargeC4 extends BlockChargeBase {
world.setBlockToAir(x, y, z);
safe = false;
ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 15F).makeStandard();
ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 15F);
xnt.setBlockAllocator(new BlockAllocatorStandard(32));
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop());
xnt.setEntityProcessor(new EntityProcessorStandard());
xnt.setPlayerProcessor(new PlayerProcessorStandard());
xnt.explode();
ExplosionCreator.composeEffectSmall(world, x + 0.5, y + 1, z + 0.5);
return BombReturnCode.DETONATED;
}

View File

@ -1,7 +1,7 @@
package com.hbm.blocks.bomb;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT;
import com.hbm.particle.helper.ExplosionSmallCreator;
import cpw.mods.fml.client.registry.RenderingRegistry;
import net.minecraft.world.World;
@ -17,7 +17,7 @@ public class BlockChargeDynamite extends BlockChargeBase {
safe = false;
ExplosionNT exp = new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 4F);
exp.explode();
ExplosionLarge.spawnParticles(world, x + 0.5, y + 0.5, z + 0.5, 20);
ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 0.5, z + 0.5, 15, 3F, 1.25F);
return BombReturnCode.DETONATED;
}

View File

@ -2,9 +2,9 @@ package com.hbm.blocks.bomb;
import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT;
import com.hbm.explosion.ExplosionNT.ExAttrib;
import com.hbm.particle.helper.ExplosionSmallCreator;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@ -23,7 +23,7 @@ public class BlockChargeMiner extends BlockChargeBase {
ExplosionNT exp = new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 4F);
exp.addAllAttrib(ExAttrib.NOHURT, ExAttrib.ALLDROP);
exp.explode();
ExplosionLarge.spawnParticles(world, x + 0.5, y + 0.5, z + 0.5, 20);
ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 0.5, z + 0.5, 15, 3F, 1.25F);
return BombReturnCode.DETONATED;
}

View File

@ -5,7 +5,7 @@ import java.util.List;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard;
import com.hbm.particle.helper.ExplosionCreator;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@ -27,8 +27,8 @@ public class BlockChargeSemtex extends BlockChargeBase {
xnt.setBlockProcessor(new BlockProcessorStandard()
.setAllDrop()
.setFortune(3));
xnt.setSFX(new ExplosionEffectStandard());
xnt.explode();
ExplosionCreator.composeEffectSmall(world, x + 0.5, y + 1, z + 0.5);
return BombReturnCode.DETONATED;
}

View File

@ -1,91 +1,77 @@
package com.hbm.blocks.bomb;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.BlockEnumMulti;
import com.hbm.config.BombConfig;
import com.hbm.entity.logic.EntityBalefire;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
import com.hbm.explosion.vanillant.standard.EntityProcessorCross;
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.interfaces.IBomb;
import com.hbm.items.ModItems;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.main.MainRegistry;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.particle.helper.ExplosionCreator;
import com.hbm.tileentity.bomb.TileEntityCrashedBomb;
import com.hbm.util.EnumUtil;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class BlockCrashedBomb extends BlockContainer implements IBomb {
public class BlockCrashedBomb extends BlockEnumMulti implements ITileEntityProvider, IBomb {
public static enum EnumDudType {
BALEFIRE, CONVENTIONAL, NUKE, SALTED
}
public BlockCrashedBomb(Material p_i45386_1_) {
super(p_i45386_1_);
public BlockCrashedBomb(Material mat) {
super(mat, EnumDudType.class, false, false);
}
@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityCrashedBomb();
}
@Override
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
return Item.getItemFromBlock(ModBlocks.crashed_balefire);
}
@Override
public int getRenderType() {
return -1;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
if(i == 0) {
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
}
if(i == 1) {
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
}
if(i == 2) {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(i == 3) {
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
}
}
@Override public int getRenderType() { return -1; }
@Override public boolean isOpaqueCube() { return false; }
@Override public boolean renderAsNormalBlock() { return false; }
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) {
if(world.isRemote)
return true;
if(world.isRemote) return true;
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.defuser) {
EnumDudType type = EnumUtil.grabEnumSafely(EnumDudType.class, world.getBlockMetadata(x, y, z));
//TODO: make this less scummy
if(type == type.BALEFIRE) {
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.egg_balefire_shard)));
}
if(type == type.CONVENTIONAL) {
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ball_tnt, 16)));
}
if(type == type.NUKE) {
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ball_tnt, 8)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.billet_plutonium, 4)));
}
if(type == type.SALTED) {
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ball_tnt, 8)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.billet_plutonium, 2)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.ingot_cobalt, 12)));
}
world.func_147480_a(x, y, z, false);
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.egg_balefire_shard)));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_steel, 10 + world.rand.nextInt(15))));
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_titanium, 2 + world.rand.nextInt(7))));
return true;
}
@ -97,21 +83,46 @@ public class BlockCrashedBomb extends BlockContainer implements IBomb {
if(!world.isRemote) {
EnumDudType type = EnumUtil.grabEnumSafely(EnumDudType.class, world.getBlockMetadata(x, y, z));
world.setBlockToAir(x, y, z);
EntityBalefire bf = new EntityBalefire(world).mute();
bf.posX = x;
bf.posY = y;
bf.posZ = z;
bf.destructionRange = (int) (BombConfig.fatmanRadius * 1.25);
world.spawnEntityInWorld(bf);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "muke");
data.setBoolean("balefire", true);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250));
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
if(type == type.BALEFIRE) {
EntityBalefire bf = new EntityBalefire(world);
bf.setPosition(x, y, z);
bf.destructionRange = (int) (BombConfig.fatmanRadius * 1.25);
world.spawnEntityInWorld(bf);
spawnMush(world, x, y, z, true);
}
if(type == type.CONVENTIONAL) {
ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 35F);
xnt.setBlockAllocator(new BlockAllocatorStandard(24));
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop());
xnt.setEntityProcessor(new EntityProcessorCross(5D).withRangeMod(1.5F));
xnt.setPlayerProcessor(new PlayerProcessorStandard());
xnt.explode();
ExplosionCreator.composeEffectLarge(world, x + 0.5, y + 0.5, z + 0.5);
}
if(type == type.NUKE) {
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 35, x + 0.5, y + 0.5, z + 0.5));
spawnMush(world, x, y, z, MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0);
}
if(type == type.SALTED) {
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, 25, x + 0.5, y + 0.5, z + 0.5).moreFallout(25));
spawnMush(world, x, y, z, MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0);
}
}
return BombReturnCode.DETONATED;
}
public static void spawnMush(World world, int x, int y, int z, boolean balefire) {
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "muke");
data.setBoolean("balefire", balefire);
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250));
}
}

View File

@ -0,0 +1,55 @@
package com.hbm.blocks.bomb;
import com.hbm.blocks.generic.BlockFlammable;
import com.hbm.entity.item.EntityTNTPrimedBase;
import api.hbm.block.IFuckingExplode;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
public abstract class BlockDetonatable extends BlockFlammable implements IFuckingExplode {
protected int popFuse; // A shorter fuse for when this explosive is dinked by another
protected boolean detonateOnCollision;
protected boolean detonateOnShot;
public BlockDetonatable(Material mat, int en, int flam, int popFuse, boolean detonateOnCollision, boolean detonateOnShot) {
super(mat, en, flam);
this.popFuse = popFuse;
this.detonateOnCollision = detonateOnCollision;
this.detonateOnShot = detonateOnShot;
}
@Override
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) {
if(!world.isRemote) {
EntityTNTPrimedBase tntPrimed = new EntityTNTPrimedBase(world, x + 0.5D, y + 0.5D, z + 0.5D, explosion != null ? explosion.getExplosivePlacedBy() : null, this);
tntPrimed.fuse = popFuse <= 0 ? 0 : world.rand.nextInt(popFuse) + popFuse / 2;
tntPrimed.detonateOnCollision = detonateOnCollision;
world.spawnEntityInWorld(tntPrimed);
}
}
@Override
public boolean canDropFromExplosion(Explosion explosion) {
return false;
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
if(!world.isRemote && shouldIgnite(world, x, y, z)) {
world.setBlockToAir(x, y, z);
onBlockDestroyedByExplosion(world, x, y, z, null);
}
}
public void onShot(World world, int x, int y, int z) {
if (!detonateOnShot) return;
world.setBlockToAir(x, y, z);
explodeEntity(world, x, y, z, null); // insta-explod
}
}

View File

@ -3,6 +3,7 @@ package com.hbm.blocks.bomb;
import com.hbm.blocks.ModBlocks;
import com.hbm.entity.item.EntityTNTPrimedBase;
import com.hbm.explosion.ExplosionNukeSmall;
import com.hbm.world.biome.BiomeGenCraterBase;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
@ -16,6 +17,8 @@ public class BlockFissureBomb extends BlockTNTBase {
int range = 5;
boolean crater = world.getBiomeGenForCoords((int) Math.floor(x), (int) Math.floor(z)) instanceof BiomeGenCraterBase;
for(int i = -range; i <= range; i++) {
for(int j = -range; j <= range; j++) {
for(int k = -range; k <= range; k++) {
@ -27,7 +30,7 @@ public class BlockFissureBomb extends BlockTNTBase {
Block block = world.getBlock(a, b, c);
if(block == ModBlocks.ore_bedrock) {
world.setBlock(a, b, c, ModBlocks.ore_volcano);
world.setBlock(a, b, c, ModBlocks.ore_volcano, crater ? 1 : 0, 3);
} else if(block == ModBlocks.ore_bedrock_oil) {
world.setBlock(a, b, c, Blocks.bedrock);
}

View File

@ -1,7 +1,8 @@
package com.hbm.blocks.bomb;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT;
import com.hbm.entity.item.EntityTNTPrimedBase;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
import com.hbm.interfaces.IBomb;
import cpw.mods.fml.relauncher.Side;
@ -13,17 +14,16 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockPlasticExplosive extends Block implements IBomb {
public class BlockPlasticExplosive extends BlockDetonatable implements IBomb {
@SideOnly(Side.CLIENT)
private IIcon topIcon;
public BlockPlasticExplosive(Material mat) {
super(mat);
super(mat, 0, 0, 0, false, false);
}
@SideOnly(Side.CLIENT)
@ -68,12 +68,7 @@ public class BlockPlasticExplosive extends Block implements IBomb {
}
@Override
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) {
this.explode(world, x, y, z);
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) {
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
this.explode(world, x, y, z);
}
@ -83,10 +78,14 @@ public class BlockPlasticExplosive extends Block implements IBomb {
public BombReturnCode explode(World world, int x, int y, int z) {
if(!world.isRemote) {
new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 50).overrideResolution(64).explode();
ExplosionLarge.spawnParticles(world, x, y, z, ExplosionLarge.cloudFunction(15));
new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 20).makeStandard().setBlockProcessor(new BlockProcessorStandard().setNoDrop()).explode();
}
return BombReturnCode.DETONATED;
}
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
explode(world, MathHelper.floor_double(x), MathHelper.floor_double(y), MathHelper.floor_double(z));
}
}

View File

@ -8,6 +8,6 @@ public class BlockSemtex extends BlockTNTBase {
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
world.createExplosion(entity, x, y, z, 20F, true);
world.createExplosion(entity, x, y, z, 12F, true);
}
}

View File

@ -8,6 +8,6 @@ public class BlockTNT extends BlockTNTBase {
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
world.createExplosion(entity, x, y, z, 12F, true);
world.createExplosion(entity, x, y, z, 10F, true);
}
}

View File

@ -2,7 +2,6 @@ package com.hbm.blocks.bomb;
import java.util.Random;
import com.hbm.blocks.generic.BlockFlammable;
import com.hbm.entity.item.EntityTNTPrimedBase;
import com.hbm.util.ChatBuilder;
@ -16,21 +15,18 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public abstract class BlockTNTBase extends BlockFlammable implements IToolable {
public abstract class BlockTNTBase extends BlockDetonatable implements IToolable {
@SideOnly(Side.CLIENT) private IIcon topIcon;
@SideOnly(Side.CLIENT) private IIcon bottomIcon;
public BlockTNTBase() {
super(Material.tnt, 15, 100);
super(Material.tnt, 15, 100, 20, false, false);
}
@Override
@ -62,13 +58,9 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable {
}
public void checkAndIgnite(World world, int x, int y, int z) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.fire) {
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
world.setBlockToAir(x, y, z);
return;
}
if (shouldIgnite(world, x, y, z)) {
this.onBlockDestroyedByPlayer(world, x, y, z, 1);
world.setBlockToAir(x, y, z);
}
}
@ -77,15 +69,6 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable {
return 1;
}
@Override
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) {
if(!world.isRemote) {
EntityTNTPrimedBase entitytntprimed = new EntityTNTPrimedBase(world, x + 0.5D, y + 0.5D, z + 0.5D, explosion.getExplosivePlacedBy(), this);
entitytntprimed.fuse = world.rand.nextInt(entitytntprimed.fuse / 4) + entitytntprimed.fuse / 8;
world.spawnEntityInWorld(entitytntprimed);
}
}
@Override
public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) {
this.prime(world, x, y, z, meta, (EntityLivingBase) null);
@ -125,19 +108,12 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable {
}
}
@Override
public boolean canDropFromExplosion(Explosion explosion) {
return false;
}
public abstract void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity);
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister p_149651_1_) {
this.blockIcon = p_149651_1_.registerIcon(this.getTextureName() + "_side");
this.topIcon = p_149651_1_.registerIcon(this.getTextureName() + "_top");
this.bottomIcon = p_149651_1_.registerIcon(this.getTextureName() + "_bottom");
public void registerBlockIcons(IIconRegister iconRegister) {
this.blockIcon = iconRegister.registerIcon(this.getTextureName() + "_side");
this.topIcon = iconRegister.registerIcon(this.getTextureName() + "_top");
this.bottomIcon = iconRegister.registerIcon(this.getTextureName() + "_bottom");
}
@Override

View File

@ -4,169 +4,72 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.entity.mob.EntityTaintCrab;
import com.hbm.entity.mob.EntityCreeperTainted;
import com.hbm.entity.mob.EntityTeslaCrab;
import com.hbm.potion.HbmPotion;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFalling;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityFallingBlock;
import net.minecraft.entity.monster.EntityCreeper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class BlockTaint extends Block/*Container*/ {
@SideOnly(Side.CLIENT)
private IIcon[] icons;
public class BlockTaint extends Block implements ITooltipProvider {
public BlockTaint(Material p_i45386_1_) {
super(p_i45386_1_);
this.setTickRandomly(true);
public BlockTaint(Material mat) {
super(mat);
this.setTickRandomly(true);
}
/*@Override
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileEntityTaint();
}*/
@SideOnly(Side.CLIENT)
public IIcon getIcon(int p_149691_1_, int meta)
{
return this.icons[meta % this.icons.length];
}
public int damageDropped(int meta)
{
return 0;
}
@Override public MapColor getMapColor(int meta) { return MapColor.grayColor; }
@Override public Item getItemDropped(int i, Random rand, int j) { return null; }
public static int func_150032_b(int p_150032_0_)
{
return func_150031_c(p_150032_0_);
}
public static int func_150031_c(int p_150031_0_)
{
return p_150031_0_ & 15;
}
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_)
{
for (int i = 0; i < 16; ++i)
{
p_149666_3_.add(new ItemStack(p_149666_1_, 1, i));
}
}
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister p_149651_1_)
{
this.icons = new IIcon[16];
for (int i = 0; i < this.icons.length; ++i)
{
this.icons[i] = p_149651_1_.registerIcon("hbm:taint_" + i);
}
}
public MapColor getMapColor(int p_149728_1_)
{
return MapColor.purpleColor;
}
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@Override
public int getRenderType(){
return renderID;
public void updateTick(World world, int x, int y, int z, Random rand) {
int meta = world.getBlockMetadata(x, y, z);
if(meta >= 15) return;
for(int i = -3; i <= 3; i++) for(int j = -3; j <= 3; j++) for(int k = -3; k <= 3; k++) {
if(Math.abs(i) + Math.abs(j) + Math.abs(k) > 4) continue;
if(rand.nextFloat() > 0.25F) continue;
Block b = world.getBlock(x + i, y + j, z + k);
if(b.isAir(world, x + i, y + j, z + k) || b == Blocks.bedrock) continue;
int targetMeta = meta + 1;
boolean hasAir = false;
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
if(world.getBlock(x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ).isAir(world, x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ)) {
hasAir = true;
break;
}
}
if(!hasAir) targetMeta = meta + 3;
if(targetMeta > 15) continue;
if(b == this && world.getBlockMetadata(x + i, y + j, z + k) >= targetMeta) continue;
world.setBlock(x + i, y + j, z + k, this, targetMeta, 3);
if(rand.nextFloat() < 0.25F && BlockFalling.func_149831_e(world, x + i, y + j - 1, z + k)) {
EntityFallingBlock falling = new EntityFallingBlock(world, x + i + 0.5, y + j + 0.5, z + k + 0.5, this, targetMeta);
world.spawnEntityInWorld(falling);
}
}
}
@Override
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
{
return null;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
public void onNeighborBlockChange(World world, int x, int y, int z, Block b)
{
if(!hasPosNeightbour(world, x, y, z) && !world.isRemote)
world.setBlockToAir(x, y, z);
}
public void updateTick(World world, int x, int y, int z, Random rand)
{
int meta = world.getBlockMetadata(x, y, z);
if(!world.isRemote && meta < 15) {
for(int i = 0; i < 15; i++) {
int a = rand.nextInt(11) + x - 5;
int b = rand.nextInt(11) + y - 5;
int c = rand.nextInt(11) + z - 5;
if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c))
world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2);
}
for(int i = 0; i < 85; i++) {
int a = rand.nextInt(7) + x - 3;
int b = rand.nextInt(7) + y - 3;
int c = rand.nextInt(7) + z - 3;
if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c))
world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2);
}
}
}
public static boolean hasPosNeightbour(World world, int x, int y, int z) {
Block b0 = world.getBlock(x + 1, y, z);
Block b1 = world.getBlock(x, y + 1, z);
Block b2 = world.getBlock(x, y, z + 1);
Block b3 = world.getBlock(x - 1, y, z);
Block b4 = world.getBlock(x, y - 1, z);
Block b5 = world.getBlock(x, y, z - 1);
boolean b = (b0.renderAsNormalBlock() && b0.getMaterial().isOpaque()) ||
(b1.renderAsNormalBlock() && b1.getMaterial().isOpaque()) ||
(b2.renderAsNormalBlock() && b2.getMaterial().isOpaque()) ||
(b3.renderAsNormalBlock() && b3.getMaterial().isOpaque()) ||
(b4.renderAsNormalBlock() && b4.getMaterial().isOpaque()) ||
(b5.renderAsNormalBlock() && b5.getMaterial().isOpaque());
return b;
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
{
return null;
}
@Override
public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
{
return AxisAlignedBB.getBoundingBox(par2, par3, par4, par2, par3, par4);
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 0.75, z + 1);
}
@Override
@ -174,36 +77,43 @@ public class BlockTaint extends Block/*Container*/ {
int meta = world.getBlockMetadata(x, y, z);
int level = 15 - meta;
List<ItemStack> list = new ArrayList<ItemStack>();
PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level);
effect.setCurativeItems(list);
if(entity instanceof EntityLivingBase) {
if(world.rand.nextInt(50) == 0) {
((EntityLivingBase)entity).addPotionEffect(effect);
}
}
if(entity != null && entity.getClass().equals(EntityCreeper.class)) {
EntityCreeperTainted creep = new EntityCreeperTainted(world);
creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch);
if(!world.isRemote) {
entity.setDead();
world.spawnEntityInWorld(creep);
}
}
if(entity instanceof EntityTeslaCrab) {
EntityTaintCrab crab = new EntityTaintCrab(world);
crab.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch);
entity.motionX *= 0.6;
entity.motionZ *= 0.6;
if(!world.isRemote) {
entity.setDead();
world.spawnEntityInWorld(crab);
}
}
List<ItemStack> list = new ArrayList<ItemStack>();
PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level);
effect.setCurativeItems(list);
if(entity instanceof EntityLivingBase) {
if(world.rand.nextInt(50) == 0) {
((EntityLivingBase) entity).addPotionEffect(effect);
}
}
if(entity != null && entity.getClass().equals(EntityCreeper.class)) {
EntityCreeperTainted creep = new EntityCreeperTainted(world);
creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch);
if(!world.isRemote) {
entity.setDead();
world.spawnEntityInWorld(creep);
}
}
if(entity instanceof EntityTeslaCrab) {
EntityTaintCrab crab = new EntityTaintCrab(world);
crab.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch);
if(!world.isRemote) {
entity.setDead();
world.spawnEntityInWorld(crab);
}
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
list.add("DO NOT TOUCH, BREATHE OR STARE AT.");
}
}

View File

@ -9,8 +9,8 @@ import com.hbm.blocks.ModBlocks;
import com.hbm.entity.projectile.EntityShrapnel;
import com.hbm.explosion.ExplosionNT;
import com.hbm.explosion.ExplosionNT.ExAttrib;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
@ -43,10 +43,10 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
public int getSubCount() {
return 5;
}
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < 5; ++i) {
list.add(new ItemStack(item, 1, i));
}
@ -54,14 +54,14 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
int meta = stack.getItemDamage();
if(meta == META_SMOLDERING) {
list.add(EnumChatFormatting.GOLD + "SHIELD VOLCANO");
return;
}
list.add(BlockVolcano.isGrowing(meta) ? (EnumChatFormatting.RED + "DOES GROW") : (EnumChatFormatting.DARK_GRAY + "DOES NOT GROW"));
list.add(BlockVolcano.isExtinguishing(meta) ? (EnumChatFormatting.RED + "DOES EXTINGUISH") : (EnumChatFormatting.DARK_GRAY + "DOES NOT EXTINGUISH"));
}
@ -71,25 +71,25 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
public static final int META_GROWING_ACTIVE = 2;
public static final int META_GROWING_EXTINGUISHING = 3;
public static final int META_SMOLDERING = 4;
public static boolean isGrowing(int meta) {
return meta == META_GROWING_ACTIVE || meta == META_GROWING_EXTINGUISHING;
}
public static boolean isExtinguishing(int meta) {
return meta == META_STATIC_EXTINGUISHING || meta == META_GROWING_EXTINGUISHING;
}
public static class TileEntityVolcanoCore extends TileEntity {
private static List<ExAttrib> volcanoExplosion = Arrays.asList(new ExAttrib[] {ExAttrib.NODROP, ExAttrib.LAVA_V, ExAttrib.NOSOUND, ExAttrib.ALLMOD, ExAttrib.NOHURT});
private static List<ExAttrib> volcanoRadExplosion = Arrays.asList(new ExAttrib[] {ExAttrib.NODROP, ExAttrib.LAVA_R, ExAttrib.NOSOUND, ExAttrib.ALLMOD, ExAttrib.NOHURT});
public int volcanoTimer;
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
this.volcanoTimer++;
@ -99,24 +99,24 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
this.blastMagmaChannel();
this.raiseMagma();
}
double magmaChamber = this.magmaChamberSize();
if(magmaChamber > 0) this.blastMagmaChamber(magmaChamber);
Object[] melting = this.surfaceMeltingParams();
if(melting != null) this.meltSurface((int)melting[0], (double)melting[1], (double)melting[2]);
//self-explanatory
if(this.isSpewing()) this.spawnBlobs();
if(this.isSmoking()) this.spawnSmoke();
//generates a 3x3x3 cube of lava
this.surroundLava();
}
if(this.volcanoTimer >= this.getUpdateRate()) {
this.volcanoTimer = 0;
if(this.shouldGrow()) {
worldObj.setBlock(xCoord, yCoord + 1, zCoord, this.getBlockType(), this.getBlockMetadata(), 3);
worldObj.setBlock(xCoord, yCoord, zCoord, getLava());
@ -128,16 +128,16 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
}
}
}
public boolean isRadioacitve() {
return this.getBlockType() == ModBlocks.volcano_rad_core;
}
protected Block getLava() {
if(isRadioacitve()) return ModBlocks.rad_lava_block;
return ModBlocks.volcanic_lava_block;
}
protected List<ExAttrib> getExpAttrb() {
return this.isRadioacitve() ? this.volcanoRadExplosion : this.volcanoExplosion;
}
@ -151,44 +151,44 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setInteger("tier", this.volcanoTimer);
nbt.setInteger("timer", this.volcanoTimer);
}
private boolean shouldGrow() {
return isGrowing() && yCoord < 200;
}
private boolean isGrowing() {
int meta = this.getBlockMetadata();
return meta == META_GROWING_ACTIVE || meta == META_GROWING_EXTINGUISHING;
}
private boolean isExtinguishing() {
int meta = this.getBlockMetadata();
return meta == META_STATIC_EXTINGUISHING || meta == META_GROWING_EXTINGUISHING;
}
private boolean isSmoking() {
return this.getBlockMetadata() != META_SMOLDERING;
}
private boolean isSpewing() {
return this.getBlockMetadata() != META_SMOLDERING;
}
private boolean hasVerticalChannel() {
return this.getBlockMetadata() != META_SMOLDERING;
}
private double magmaChamberSize() {
return this.getBlockMetadata() == META_SMOLDERING ? 15 : 0;
}
/* count per tick, radius, depth */
private Object[] surfaceMeltingParams() {
return this.getBlockMetadata() == META_SMOLDERING ? new Object[] {50, 50D, 10D} : null;
}
private int getUpdateRate() {
switch(this.getBlockMetadata()) {
case META_STATIC_EXTINGUISHING: return 60 * 60 * 20; //once per hour
@ -197,7 +197,7 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
default: return 10;
}
}
/** Causes two magma explosions, one from bedrock to the core and one from the core to 15 blocks above. */
private void blastMagmaChannel() {
ExplosionNT explosion = new ExplosionNT(worldObj, null, xCoord + 0.5, yCoord + worldObj.rand.nextInt(15) + 1.5, zCoord + 0.5, 7);
@ -205,53 +205,53 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
ExplosionNT explosion2 = new ExplosionNT(worldObj, null, xCoord + 0.5 + worldObj.rand.nextGaussian() * 3, worldObj.rand.nextInt(yCoord + 1), zCoord + 0.5 + worldObj.rand.nextGaussian() * 3, 10);
explosion2.addAllAttrib(getExpAttrb()).explode();
}
/** Causes two magma explosions at a random position around the core, one at normal and one at half range. */
private void blastMagmaChamber(double size) {
for(int i = 0; i < 2; i++) {
double dist = size / (double) (i + 1);
ExplosionNT explosion = new ExplosionNT(worldObj, null, xCoord + 0.5 + worldObj.rand.nextGaussian() * dist, yCoord + 0.5 + worldObj.rand.nextGaussian() * dist, zCoord + 0.5 + worldObj.rand.nextGaussian() * dist, 7);
explosion.addAllAttrib(getExpAttrb()).explode();
}
}
/** Randomly selects surface blocks and converts them into lava if solid or air if not solid. */
private void meltSurface(int count, double radius, double depth) {
for(int i = 0; i < count; i++) {
int x = (int) Math.floor(xCoord + worldObj.rand.nextGaussian() * radius);
int z = (int) Math.floor(zCoord + worldObj.rand.nextGaussian() * radius);
//gaussian distribution makes conversions more likely on the surface and rarer at the bottom
int y = worldObj.getHeightValue(x, z) + 1 - (int) Math.floor(Math.abs(worldObj.rand.nextGaussian() * depth));
Block b = worldObj.getBlock(x, y, z);
if(!b.isAir(worldObj, x, y, z) && b.getExplosionResistance(null) < Blocks.obsidian.getExplosionResistance(null)) {
//turn into lava if solid block, otherwise just break
worldObj.setBlock(x, y, z, b.isNormalCube() ? this.getLava() : Blocks.air);
}
}
}
/** Increases the magma level in a small radius around the core. */
private void raiseMagma() {
int rX = xCoord - 10 + worldObj.rand.nextInt(21);
int rY = yCoord + worldObj.rand.nextInt(11);
int rZ = zCoord - 10 + worldObj.rand.nextInt(21);
if(worldObj.getBlock(rX, rY, rZ) == Blocks.air && worldObj.getBlock(rX, rY - 1, rZ) == this.getLava())
worldObj.setBlock(rX, rY, rZ, this.getLava());
}
/** Creates a 3x3x3 lava sphere around the core. */
private void surroundLava() {
for(int i = -1; i <= 1; i++) {
for(int j = -1; j <= 1; j++) {
for(int k = -1; k <= 1; k++) {
if(i != 0 || j != 0 || k != 0) {
worldObj.setBlock(xCoord + i, yCoord + j, zCoord + k, this.getLava());
}
@ -259,10 +259,10 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
}
}
}
/** Spews specially tagged shrapnels which create volcanic lava and monoxide clouds. */
private void spawnBlobs() {
for(int i = 0; i < 3; i++) {
EntityShrapnel frag = new EntityShrapnel(worldObj);
frag.setLocationAndAngles(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 0.0F, 0.0F);
@ -277,13 +277,13 @@ public class BlockVolcano extends BlockContainer implements ITooltipProvider, IB
worldObj.spawnEntityInWorld(frag);
}
}
/** I SEE SMOKE, AND WHERE THERE'S SMOKE THERE'S FIRE! */
private void spawnSmoke() {
NBTTagCompound dPart = new NBTTagCompound();
dPart.setString("type", "vanillaExt");
dPart.setString("mode", "volcano");
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(dPart, xCoord + 0.5, yCoord + 10, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 10, zCoord + 0.5, 250));
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(dPart, xCoord + 0.5, yCoord + 10, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 10, zCoord + 0.5, 250));
}
}
}

View File

@ -1,7 +1,13 @@
package com.hbm.blocks.bomb;
import com.hbm.explosion.ExplosionChaos;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth;
import com.hbm.explosion.vanillant.standard.ExplosionEffectTiny;
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
import com.hbm.interfaces.IBomb;
import com.hbm.particle.helper.ExplosionCreator;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@ -17,9 +23,7 @@ public class BombFlameWar extends Block implements IBomb {
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
ExplosionChaos.explode(world, x, y, z, 15);
ExplosionChaos.spawnExplosion(world, x, y, z, 75);
ExplosionChaos.flameDeath(world, x, y, z, 100);
explode(world, x, y, z);
}
}
@ -27,9 +31,24 @@ public class BombFlameWar extends Block implements IBomb {
public BombReturnCode explode(World world, int x, int y, int z) {
if(!world.isRemote) {
ExplosionChaos.explode(world, x, y, z, 15);
ExplosionChaos.spawnExplosion(world, x, y, z, 75);
ExplosionChaos.flameDeath(world, x, y, z, 100);
world.func_147480_a(x, y, z, false);
for(int i = 0; i < 150; i++) {
ExplosionVNT vnt = new ExplosionVNT(world, x + world.rand.nextInt(51) - 25, y + world.rand.nextInt(11) - 5, z + world.rand.nextInt(51) - 25, 4, null);
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 25));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectTiny());
vnt.explode();
}
ExplosionVNT xnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 15F);
xnt.setBlockAllocator(new BlockAllocatorStandard(32));
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop());
xnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, 200));
xnt.setPlayerProcessor(new PlayerProcessorStandard());
xnt.explode();
ExplosionCreator.composeEffectSmall(world, x + 0.5, y + 0.5, z + 0.5);
}
return BombReturnCode.DETONATED;

View File

@ -18,10 +18,12 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import com.hbm.blocks.ModBlocks;
import com.hbm.entity.effect.EntityMist;
import com.hbm.explosion.ExplosionChaos;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNukeGeneric;
import com.hbm.interfaces.IBomb;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.bomb.TileEntityBombMulti;
@ -169,7 +171,11 @@ public class BombMulti extends BlockContainer implements IBomb {
}
if(gasCloud > 0) {
ExplosionChaos.spawnChlorine(world, x, y, z, gasCloud, gasCloud / 50, 0);
EntityMist mist = new EntityMist(world);
mist.setType(Fluids.CHLORINE);
mist.setPosition(x + 0.5, y + 0.5, z + 0.5);
mist.setArea(gasCloud * 15F / 50F, gasCloud * 7.5F / 50F);
world.spawnEntityInWorld(mist);
}
return BombReturnCode.DETONATED;

View File

@ -1,16 +1,18 @@
package com.hbm.blocks.bomb;
import com.hbm.entity.item.EntityTNTPrimedBase;
import net.minecraft.util.MathHelper;
import cpw.mods.fml.client.registry.RenderingRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
public class DetCord extends Block implements IDetConnectible {
public class DetCord extends BlockDetonatable implements IDetConnectible {
public DetCord(Material p_i45394_1_) {
super(p_i45394_1_);
public DetCord(Material material) {
super(material, 0, 0, 0, false, false);
}
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@ -30,16 +32,6 @@ public class DetCord extends Block implements IDetConnectible {
return false;
}
@Override
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_) {
this.explode(world, x, y, z);
}
@Override
public boolean canDropFromExplosion(Explosion explosion) {
return false;
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) {
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
@ -48,10 +40,14 @@ public class DetCord extends Block implements IDetConnectible {
}
public void explode(World world, int x, int y, int z) {
if(!world.isRemote) {
world.setBlock(x, y, z, Blocks.air);
world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 1.5F, true);
}
}
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
explode(world, MathHelper.floor_double(x), MathHelper.floor_double(y), MathHelper.floor_double(z));
}
}

View File

@ -3,18 +3,21 @@ package com.hbm.blocks.bomb;
import java.util.Random;
import com.hbm.blocks.machine.BlockPillar;
import com.hbm.entity.item.EntityTNTPrimedBase;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT;
import com.hbm.explosion.ExplosionNT.ExAttrib;
import com.hbm.interfaces.IBomb;
import api.hbm.block.IFuckingExplode;
import net.minecraft.util.MathHelper;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
public class DetMiner extends BlockPillar implements IBomb {
public class DetMiner extends BlockPillar implements IBomb, IFuckingExplode {
public DetMiner(Material mat, String top) {
super(mat, top);
@ -44,8 +47,13 @@ public class DetMiner extends BlockPillar implements IBomb {
}
@Override
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_) {
this.explode(world, x, y, z);
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion) {
if(!world.isRemote) {
EntityTNTPrimedBase tntPrimed = new EntityTNTPrimedBase(world, x + 0.5D, y + 0.5D, z + 0.5D, explosion != null ? explosion.getExplosivePlacedBy() : null, this);
tntPrimed.fuse = 0;
tntPrimed.detonateOnCollision = false;
world.spawnEntityInWorld(tntPrimed);
}
}
@Override
@ -54,4 +62,9 @@ public class DetMiner extends BlockPillar implements IBomb {
this.explode(world, x, y, z);
}
}
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
explode(world, MathHelper.floor_double(x), MathHelper.floor_double(y), MathHelper.floor_double(z));
}
}

View File

@ -3,12 +3,14 @@ package com.hbm.blocks.bomb;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.BombConfig;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.item.EntityTNTPrimedBase;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT;
import com.hbm.interfaces.IBomb;
import com.hbm.lib.RefStrings;
import com.hbm.particle.helper.ExplosionCreator;
import net.minecraft.util.MathHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
@ -16,16 +18,15 @@ import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.init.Blocks;
import net.minecraft.util.IIcon;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
public class ExplosiveCharge extends Block implements IBomb, IDetConnectible {
public class ExplosiveCharge extends BlockDetonatable implements IBomb, IDetConnectible {
@SideOnly(Side.CLIENT)
private IIcon iconTop;
public ExplosiveCharge(Material p_i45394_1_) {
super(p_i45394_1_);
public ExplosiveCharge(Material material) {
super(material, 0, 0, 0, false, false);
}
@Override
@ -47,16 +48,6 @@ public class ExplosiveCharge extends Block implements IBomb, IDetConnectible {
return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon);
}
@Override
public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion p_149723_5_) {
this.explode(world, x, y, z);
}
@Override
public boolean canDropFromExplosion(Explosion explosion) {
return false;
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) {
if(world.isBlockIndirectlyGettingPowered(x, y, z)) {
@ -74,15 +65,20 @@ public class ExplosiveCharge extends Block implements IBomb, IDetConnectible {
}
if(this == ModBlocks.det_charge) {
new ExplosionNT(world, null, x + 0.5, y + 0.5, z + 0.5, 15).overrideResolution(64).explode();
ExplosionLarge.spawnParticles(world, x, y, z, ExplosionLarge.cloudFunction(15));
ExplosionCreator.composeEffectStandard(world, x + 0.5, y + 1, z + 0.5);
}
if(this == ModBlocks.det_nuke) {
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, BombConfig.missileRadius, x + 0.5, y + 0.5, z + 0.5));
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius);
EntityNukeTorex.statFacStandard(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius);
}
}
return BombReturnCode.DETONATED;
}
@Override
public void explodeEntity(World world, double x, double y, double z, EntityTNTPrimedBase entity) {
explode(world, MathHelper.floor_double(x), MathHelper.floor_double(y), MathHelper.floor_double(z));
}
}

View File

@ -3,20 +3,29 @@ package com.hbm.blocks.bomb;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.config.ServerConfig;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNukeSmall;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.*;
import com.hbm.interfaces.IBomb;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.XFactoryCatapult;
import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.bomb.TileEntityLandmine;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.BlockFence;
import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess;
@ -31,7 +40,6 @@ public class Landmine extends BlockContainer implements IBomb {
public Landmine(Material mat, double range, double height) {
super(mat);
this.range = range;
this.height = height;
}
@ -41,20 +49,9 @@ public class Landmine extends BlockContainer implements IBomb {
return new TileEntityLandmine();
}
@Override
public int getRenderType() {
return -1;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override public int getRenderType() { return -1; }
@Override public boolean isOpaqueCube() { return false; }
@Override public boolean renderAsNormalBlock() { return false; }
@Override
public Item getItemDropped(int i, Random rand, int j) {
@ -64,15 +61,10 @@ public class Landmine extends BlockContainer implements IBomb {
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
float f = 0.0625F;
if(this == ModBlocks.mine_ap)
this.setBlockBounds(6 * f, 0.0F, 6 * f, 10 * f, 2 * f, 10 * f);
if(this == ModBlocks.mine_he)
this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
if(this == ModBlocks.mine_shrap)
this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
if(this == ModBlocks.mine_fat)
this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f);
}
if(this == ModBlocks.mine_ap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f);
if(this == ModBlocks.mine_he) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
if(this == ModBlocks.mine_shrap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f);
if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f);}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
@ -137,6 +129,18 @@ public class Landmine extends BlockContainer implements IBomb {
return false;
}
public boolean isWaterAbove(World world, int x, int y, int z) {
for(int xo = -1; xo <= 1; xo++) {
for(int zo = -1; zo <= 1; zo++) {
Block blockAbove = world.getBlock(x + xo, y + 1, z + zo);
if(blockAbove == Blocks.water || blockAbove == Blocks.flowing_water) {
return true;
}
}
}
return false;
}
@Override
public BombReturnCode explode(World world, int x, int y, int z) {
@ -147,20 +151,64 @@ public class Landmine extends BlockContainer implements IBomb {
Landmine.safeMode = false;
if(this == ModBlocks.mine_ap) {
world.newExplosion(null, x + 0.5, y + 0.5, z + 0.5, 2.5F, false, false);
ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F);
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_AP_DAMAGE.get()).setupPiercing(5F, 0.2F));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F));
vnt.explode();
} else if(this == ModBlocks.mine_he) {
ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 3F, true, false, false);
world.newExplosion(null, x + 0.5, y + 2, z + 0.5, 15F, false, false);
ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 4F);
vnt.setBlockAllocator(new BlockAllocatorStandard());
vnt.setBlockProcessor(new BlockProcessorStandard());
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, ServerConfig.MINE_HE_DAMAGE.get()).setupPiercing(15F, 0.2F));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F));
vnt.explode();
} else if(this == ModBlocks.mine_shrap) {
ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 1, true, false, false);
ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F);
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_SHRAP_DAMAGE.get()));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F));
vnt.explode();
ExplosionLarge.spawnShrapnelShower(world, x + 0.5, y + 0.5, z + 0.5, 0, 1D, 0, 45, 0.2D);
ExplosionLarge.spawnShrapnels(world, x + 0.5, y + 0.5, z + 0.5, 5);
} else if(this == ModBlocks.mine_naval) {
ExplosionVNT vnt = new ExplosionVNT(world, x + 5, y + 5, z + 5, 25F);
vnt.setBlockAllocator(new BlockAllocatorWater(32));
vnt.setBlockProcessor(new BlockProcessorStandard());
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_NAVAL_DAMAGE.get()).setupPiercing(5F, 0.2F));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(10, 1F, 0.5F));
vnt.explode();
ExplosionLarge.spawnParticlesRadial(world, x + 0.5, y + 2, z + 0.5, 30);
ExplosionLarge.spawnRubble(world,x + 0.5, y + 0.5, z + 0.5, 5 );
// Only spawn water effects if there's water above the mine
if (isWaterAbove(world, x, y, z)) {
ExplosionLarge.spawnFoam(world, x + 0.5, y + 0.5, z + 0.5, 60);
}
} else if(this == ModBlocks.mine_fat) {
ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, ExplosionNukeSmall.PARAMS_MEDIUM);
ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 10);
vnt.setBlockAllocator(new BlockAllocatorStandard(64));
vnt.setBlockProcessor(new BlockProcessorStandard());
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, ServerConfig.MINE_NUKE_DAMAGE.get()).withRangeMod(1.5F));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.explode();
XFactoryCatapult.incrementRad(world, x, y, z, 1.5F);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "muke");
data.setBoolean("balefire", MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250));
world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:weapon.mukeExplosion", 25.0F, 0.9F); // this has to be the single worst solution ever
}
}
return BombReturnCode.DETONATED;
}
}

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