mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-14 09:05:17 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fb47104fa | ||
|
|
3177d55579 | ||
|
|
d8249b7886 | ||
|
|
4d27393c91 | ||
|
|
e98cd386e0 | ||
|
|
4538062e70 | ||
|
|
f3fdf4303a | ||
|
|
330812dfa8 | ||
|
|
980845b61b | ||
|
|
5a20950902 | ||
|
|
9f28c90365 | ||
|
|
d9bdaef468 | ||
|
|
26b5059396 | ||
|
|
8fdd76bae1 | ||
|
|
9c9107c434 | ||
|
|
84bfeddc1c | ||
|
|
d9e0a653e0 | ||
|
|
c519812ea1 | ||
|
|
e8098133ea | ||
|
|
d090c2834b | ||
|
|
35999f9a20 | ||
|
|
fa21f2b44c | ||
|
|
205f5c13c8 | ||
|
|
c560af69a5 | ||
|
|
68cd48287b | ||
|
|
2a3774def3 | ||
|
|
a018e14939 | ||
|
|
03584ec411 | ||
|
|
2a4067a539 | ||
|
|
8fefac110e | ||
|
|
fbe628d058 | ||
|
|
72edc41a7c | ||
|
|
db04370830 | ||
|
|
7973984227 | ||
|
|
07a2b67b7f | ||
|
|
fb0bdd1276 | ||
|
|
a48fd56fdc | ||
|
|
e68908e9d5 | ||
|
|
045e8bf806 | ||
|
|
7587ca7c71 | ||
|
|
b9d18a263c | ||
|
|
8d50c9e988 | ||
|
|
cb7685a3b0 | ||
|
|
bf16d0066b | ||
|
|
628613d27f | ||
|
|
63a6a2e50b | ||
|
|
ab2b07f149 | ||
|
|
d44c9082fa | ||
|
|
25d7b80119 | ||
|
|
68023ce40b | ||
|
|
8180bed027 | ||
|
|
034efaff3d | ||
|
|
e8ea52558b | ||
|
|
8f49ea7c5f | ||
|
|
8fd0817c81 | ||
|
|
ce4bb8fe93 | ||
|
|
9f1505dd53 | ||
|
|
6342bfea3e | ||
|
|
2ae47c0903 | ||
|
|
879b7b5a61 | ||
|
|
dbe9053d50 | ||
|
|
1e3df55689 | ||
|
|
9c3def9cb0 | ||
|
|
1811d88266 | ||
|
|
132e0d8f93 | ||
|
|
bc2b5ad517 | ||
|
|
df1adb577c | ||
|
|
21d39f6558 | ||
|
|
9baabf9249 | ||
|
|
77772ac3f5 | ||
|
|
fc57d5e6c6 | ||
|
|
d13449b1b3 | ||
|
|
087a7d8c59 | ||
|
|
8374a80283 | ||
|
|
34c3af7e85 | ||
|
|
8058c675ab | ||
|
|
404995122a | ||
|
|
efcb9ee570 | ||
|
|
4c8da35655 | ||
|
|
c74216bdf2 | ||
|
|
c44ed8fbde | ||
|
|
e72c224294 | ||
|
|
acf8220414 | ||
|
|
6e04a6c572 | ||
|
|
b427b26583 | ||
|
|
7668472c26 | ||
|
|
5862aaf3a0 | ||
|
|
74a0709356 | ||
|
|
b7327e6a35 | ||
|
|
42e4d1fa77 | ||
|
|
82f964c00d | ||
|
|
7a8475df6e | ||
|
|
38c57d9038 | ||
|
|
9b9e48b3db | ||
|
|
c662810814 | ||
|
|
746c07fc6c | ||
|
|
1083984c8a | ||
|
|
90758f8c96 | ||
|
|
a073b0e386 | ||
|
|
0f06365e1f | ||
|
|
70e85b5eec | ||
|
|
45881d1c90 | ||
|
|
efa7fd4dfe | ||
|
|
6e68aa4106 | ||
|
|
6385d7cc9f | ||
|
|
c6ce6a00a2 | ||
|
|
da2964fbd3 | ||
|
|
c891d9fe16 | ||
|
|
dd201c066e | ||
|
|
75032ebf9c | ||
|
|
756c58d5cb | ||
|
|
08c00662a0 | ||
|
|
1d25d9ff49 | ||
|
|
a9d23f5e78 | ||
|
|
7e4d7077a5 | ||
|
|
bc5313c67b | ||
|
|
640670052c | ||
|
|
8a6dafc3bb | ||
|
|
ecd6f4c1d2 | ||
|
|
1d608c6fe4 | ||
|
|
884cc690ea | ||
|
|
9edd056f55 | ||
|
|
0ce790ca2b | ||
|
|
25cd7cc3e1 | ||
|
|
a596984bfd | ||
|
|
08663587d4 | ||
|
|
a4d5760539 | ||
|
|
b38cfc1769 | ||
|
|
3ce53a7ee0 | ||
|
|
d878c866b3 | ||
|
|
2a1c98048e | ||
|
|
ac44fe298a | ||
|
|
81e0f2350d | ||
|
|
5cb4fe33bc | ||
|
|
a365582b58 | ||
|
|
caf3d01586 | ||
|
|
f14f77d445 | ||
|
|
dabb17f869 | ||
|
|
c7b8020279 | ||
|
|
08a3b654b9 | ||
|
|
cc5dea0df6 | ||
|
|
2ca7cff075 | ||
|
|
1830d6de89 | ||
|
|
6fd9a2c00e | ||
|
|
ba294d48dc | ||
|
|
bebf22c0b0 | ||
|
|
9eb04ce1ef | ||
|
|
438145995c | ||
|
|
4e6ad80370 | ||
|
|
c589a3a299 | ||
|
|
30db41be9a | ||
|
|
4b53f0716b | ||
|
|
286c8c05b7 | ||
|
|
5f62404f8a | ||
|
|
558348125d | ||
|
|
4c5bc9c613 | ||
|
|
b00af6828f | ||
|
|
449bf3a292 | ||
|
|
17589e61bd | ||
|
|
313d7bbc11 | ||
|
|
5ad2fc90cb | ||
|
|
9e475300f9 | ||
|
|
d4cb82b019 | ||
|
|
3d7a16d32e | ||
|
|
76e93e854a | ||
|
|
ce8a758667 | ||
|
|
af4b74b079 | ||
|
|
c39328993e | ||
|
|
ee6c041424 | ||
|
|
8c38f6c1d3 | ||
|
|
590f3f610e | ||
|
|
b1a5339b29 | ||
|
|
d5d0374015 | ||
|
|
8ea90eb39e | ||
|
|
ad03581fbe | ||
|
|
7795570421 | ||
|
|
f37a80b302 | ||
|
|
3f3989f6ac | ||
|
|
093646e6f1 | ||
|
|
a81dfbc4ef | ||
|
|
2c55969ff3 | ||
|
|
b8bb8c374c | ||
|
|
02e228095e | ||
|
|
0b0b5097e5 | ||
|
|
1d2d9ebc83 | ||
|
|
c442cd2909 | ||
|
|
1591373bf6 | ||
|
|
f22ed86ad9 | ||
|
|
6b926f9a06 | ||
|
|
8b4bce37de | ||
|
|
87f4351783 | ||
|
|
4189f63905 | ||
|
|
12c051d52b | ||
|
|
78a397bc69 | ||
|
|
b81a13d010 | ||
|
|
2bdb614fda | ||
|
|
05801a74af | ||
|
|
ae72fa7ceb | ||
|
|
7b0d8f09e9 | ||
|
|
28ae283b96 | ||
|
|
3839d33770 | ||
|
|
9e74f9e7c0 | ||
|
|
c27b13c705 | ||
|
|
5d352bda6c | ||
|
|
a799bbad2d | ||
|
|
bda688b9b5 | ||
|
|
4650ee2789 | ||
|
|
ba80ead005 | ||
|
|
bcab92daf6 | ||
|
|
52e877bdd0 | ||
|
|
93c1c737e1 | ||
|
|
018c67d969 | ||
|
|
5c9808ada8 | ||
|
|
cdf8a820a6 | ||
|
|
8e9b403fbf | ||
|
|
cf93859095 | ||
|
|
98f606d4d2 | ||
|
|
301d4b9fa0 | ||
|
|
173cec4149 | ||
|
|
873899a62b | ||
|
|
e4da09df2a | ||
|
|
90b2c86a9f | ||
|
|
7b7156e87f | ||
|
|
846910b8c8 | ||
|
|
e8a7e28110 | ||
|
|
aa24916736 | ||
|
|
c11732fc40 | ||
|
|
56a0d125bd | ||
|
|
25256c8ddd | ||
|
|
a44d76652b | ||
|
|
fffbc0f078 | ||
|
|
befbb45522 | ||
|
|
4b4146bbed | ||
|
|
776eb00ed3 | ||
|
|
26ca27193c | ||
|
|
f0e5baa8e5 | ||
|
|
ade3bbad14 | ||
|
|
020bf5ee98 | ||
|
|
2dcb2187c0 | ||
|
|
e49e6a9e09 | ||
|
|
01912a459a | ||
|
|
b342bf8481 | ||
|
|
2847644368 | ||
|
|
a83fe44d8a | ||
|
|
09bac53ed6 | ||
|
|
206a21d563 | ||
|
|
ee82341312 | ||
|
|
3e22a2b90d | ||
|
|
70670d70ea | ||
|
|
0f2cead3c8 | ||
|
|
3c7bda77e3 | ||
|
|
7735ff7791 | ||
|
|
c5e10c8cb8 | ||
|
|
cb909eeb59 | ||
|
|
ed8a8b415b | ||
|
|
74b2c3dfe6 | ||
|
|
8a506022d7 | ||
|
|
f821759c21 | ||
|
|
ec882538c0 | ||
|
|
c87feabd6e | ||
|
|
b096f58a6d | ||
|
|
b6bcf7bf4b | ||
|
|
706e894cbb | ||
|
|
b15667a7e6 | ||
|
|
becb0a9e0e | ||
|
|
cff4bf21ae | ||
|
|
d44d82e19d | ||
|
|
24b66ff9f3 | ||
|
|
3fd09af1d3 | ||
|
|
7fadb5aeb8 | ||
|
|
636a89c195 | ||
|
|
8863aab9e5 | ||
|
|
8fe432230d | ||
|
|
ad788880e5 | ||
|
|
728319cbb5 | ||
|
|
d9b69fda65 | ||
|
|
d5c4b1825c | ||
|
|
d35c38d261 | ||
|
|
153fb6b30d | ||
|
|
c9a01a439d | ||
|
|
c1744f00e0 | ||
|
|
ac7c4d2f6c | ||
|
|
1f80eb17df | ||
|
|
f654157adb | ||
|
|
bf7527d3cd | ||
|
|
213abdb561 | ||
|
|
d29b9f8752 | ||
|
|
95d1ba5dc5 | ||
|
|
250a77b359 | ||
|
|
0e35c3125a | ||
|
|
f1ad05dd8e | ||
|
|
c4ca8270b9 | ||
|
|
ecfb9accaa | ||
|
|
0dd796fb16 | ||
|
|
17e960c158 | ||
|
|
76f867561d | ||
|
|
b009546a94 | ||
|
|
de1c270644 | ||
|
|
0ddd897446 | ||
|
|
e495b7599c | ||
|
|
3e4107a222 | ||
|
|
c88bc769ef | ||
|
|
34382745ab | ||
|
|
9b128aaed2 | ||
|
|
fe340a213f | ||
|
|
9eb22c3154 | ||
|
|
ad69f0f447 | ||
|
|
e6b3c7ba64 | ||
|
|
c0915526ff | ||
|
|
3c4a2b0f42 | ||
|
|
1b3699d90b | ||
|
|
50f77a71ae | ||
|
|
6f9e63e3ee | ||
|
|
5c229dd6c7 | ||
|
|
f77d50b48c | ||
|
|
13a25ee0ba | ||
|
|
e8915b6a55 | ||
|
|
eb879b3020 | ||
|
|
6b51665c42 | ||
|
|
1055206ba8 | ||
|
|
74fe690227 | ||
|
|
9760b3b52f | ||
|
|
b875274c4f | ||
|
|
4d33fe6b26 | ||
|
|
94f99faf87 | ||
|
|
ccf5da2113 | ||
|
|
776f5b91d5 | ||
|
|
06130912c5 | ||
|
|
70fe18c163 | ||
|
|
f4b0506515 | ||
|
|
fa6610b3c8 | ||
|
|
bd6af1e49a | ||
|
|
53301e1aeb | ||
|
|
a607a48719 | ||
|
|
a9ea634141 | ||
|
|
124799d633 | ||
|
|
9070ab56e3 | ||
|
|
ed9517a8b4 | ||
|
|
a9a022f45e | ||
|
|
7e7b855ddf | ||
|
|
2c6af18a81 | ||
|
|
32a2bd1dea | ||
|
|
12c924751a | ||
|
|
4ae2a1fa35 | ||
|
|
cb70f1378c | ||
|
|
8af1624f9e | ||
|
|
085b28ba35 | ||
|
|
e611162de5 | ||
|
|
bfa17d2f0d | ||
|
|
3bdc75ad49 | ||
|
|
7103862bf9 | ||
|
|
76f659c02e | ||
|
|
63798d6a8f | ||
|
|
741fdd0a85 | ||
|
|
7b7d18f676 | ||
|
|
be6c2bd588 | ||
|
|
a0bf0155ac | ||
|
|
e45d111685 | ||
|
|
b71b963301 | ||
|
|
7a0a801740 | ||
|
|
960717eb0c | ||
|
|
026d179c0d | ||
|
|
e929199758 | ||
|
|
e9be24700e | ||
|
|
0710bdf3f5 | ||
|
|
01919e4eed | ||
|
|
5257739d06 | ||
|
|
e9a86f27fb | ||
|
|
a1e41f5464 | ||
|
|
3b9741613c | ||
|
|
d480ae5380 | ||
|
|
bce7c6d61f | ||
|
|
82647f5b66 | ||
|
|
be6577b9ce | ||
|
|
568061864f | ||
|
|
c7dafeed5f | ||
|
|
be8eb484d1 | ||
|
|
66340a7ec9 | ||
|
|
a3d4fe5d25 | ||
|
|
17e8de8a3a | ||
|
|
447a87c0c7 | ||
|
|
f3c2eb8e9c | ||
|
|
968b7cae40 | ||
|
|
812e69cee3 | ||
|
|
3c5103acfb | ||
|
|
b8238e7f22 | ||
|
|
7574b32b47 | ||
|
|
fae5ff67ed | ||
|
|
accf6cf218 | ||
|
|
90d1abebd4 | ||
|
|
cc593d4b54 | ||
|
|
66895a520a | ||
|
|
30ac80f978 | ||
|
|
7b92a27908 | ||
|
|
dad870ea0b | ||
|
|
2857b710f8 | ||
|
|
38531a5ba8 | ||
|
|
aee1bd6014 | ||
|
|
9a737b0c90 | ||
|
|
2ba595b207 | ||
|
|
17db34ae31 | ||
|
|
4672f7bab0 | ||
|
|
aff6b0004c | ||
|
|
2594196c15 | ||
|
|
afc46fa59a | ||
|
|
76c40896e4 | ||
|
|
4dbf1965df | ||
|
|
f42137907e | ||
|
|
0921473f53 | ||
|
|
591cd5c1b0 | ||
|
|
c78a7ce41e | ||
|
|
5c5d946ff5 | ||
|
|
95615cb4bf | ||
|
|
68339f51cf | ||
|
|
949e77b46a | ||
|
|
632d8e553d | ||
|
|
035dd4c245 | ||
|
|
d8440de49b | ||
|
|
4732acc1c4 | ||
|
|
b8dd4c54e1 | ||
|
|
f562579054 | ||
|
|
856a9c3cdd | ||
|
|
826b1d20f8 | ||
|
|
686b32bfd0 | ||
|
|
3c08c104cc | ||
|
|
dc4dc55dcd | ||
|
|
1a31ff9f06 | ||
|
|
fb54ea94c0 | ||
|
|
d105c444ee | ||
|
|
40a124d571 | ||
|
|
577f607b5f | ||
|
|
104feb2973 | ||
|
|
a4123580b1 | ||
|
|
cf2bbd1353 | ||
|
|
6e90348dc5 | ||
|
|
50f235c81b | ||
|
|
755df95c96 | ||
|
|
e0f0273c5e | ||
|
|
3665d7bf73 | ||
|
|
ea2beba5ca | ||
|
|
6c40b15d04 | ||
|
|
23a2316157 | ||
|
|
10658f682e | ||
|
|
33b1f8f30f | ||
|
|
db3e039b31 | ||
|
|
09e9a181ee | ||
|
|
56eba05237 | ||
|
|
6644e8c9ed | ||
|
|
ad40f24fb1 | ||
|
|
509cc79112 | ||
|
|
cce0f7a2ed | ||
|
|
7f52bc6547 | ||
|
|
7298b21cb5 | ||
|
|
af1e769895 | ||
|
|
d2248c3774 | ||
|
|
1cd0bf9ee4 | ||
|
|
097c0c6130 | ||
|
|
a54b939ea3 | ||
|
|
95825e5de0 | ||
|
|
54e9a36b67 | ||
|
|
53227982e3 | ||
|
|
bcecf59a87 | ||
|
|
5562c14c45 | ||
|
|
d8ca68b280 | ||
|
|
6a8a9b3097 | ||
|
|
cb609dbab3 | ||
|
|
c7790f7b35 | ||
|
|
4f6784b733 | ||
|
|
56f35f4401 | ||
|
|
f8473adf6f | ||
|
|
b665026378 | ||
|
|
1dcc9abab2 | ||
|
|
80ba13be89 | ||
|
|
d67c57827a | ||
|
|
f0ae51bb34 | ||
|
|
7c4d643de2 | ||
|
|
86c09722a0 | ||
|
|
d6ee373e87 | ||
|
|
9032f7e37e | ||
|
|
82537e5763 | ||
|
|
bf779e6803 | ||
|
|
a319adba53 | ||
|
|
94eadab9fd | ||
|
|
8db720151d | ||
|
|
2ed4f39a13 | ||
|
|
0632f2aadf | ||
|
|
bf6c31c879 | ||
|
|
c6d64cd94a | ||
|
|
cef50616d8 | ||
|
|
3631955641 | ||
|
|
46840fb71a | ||
|
|
5fd04595f2 | ||
|
|
ea75a3be69 | ||
|
|
c356105e6d | ||
|
|
dcda451a0a | ||
|
|
2302963a9f | ||
|
|
b9d1d92654 | ||
|
|
3f163fd41e | ||
|
|
4c4223a817 | ||
|
|
724405d6d8 | ||
|
|
3254e2acc6 | ||
|
|
12cd28715a | ||
|
|
01f4a627be | ||
|
|
2324c2fd20 | ||
|
|
bb3596b31e | ||
|
|
30bc2653c5 | ||
|
|
ee61baee73 | ||
|
|
f8447264e6 | ||
|
|
4416537776 | ||
|
|
606b402c2d | ||
|
|
31faf63e94 | ||
|
|
e6681ada93 | ||
|
|
7a960edb35 | ||
|
|
a703367553 | ||
|
|
8e9feb21fa | ||
|
|
d967c6d5d4 | ||
|
|
5087f30ca5 | ||
|
|
413f380781 | ||
|
|
8187f48ddc | ||
|
|
a2e06d968e | ||
|
|
ff42107b92 | ||
|
|
cf4c0ca001 | ||
|
|
321665efff | ||
|
|
55e707cc07 | ||
|
|
0af45cbf25 | ||
|
|
d58ad8db68 | ||
|
|
57d1a657a0 | ||
|
|
a13ed35031 | ||
|
|
21173c3b65 | ||
|
|
02e9b9d99c | ||
|
|
97ef6a5d1f | ||
|
|
5549b06f96 | ||
|
|
e2818a2803 | ||
|
|
d878a2ae26 | ||
|
|
81f9f3f20d | ||
|
|
eb26b3ca0f | ||
|
|
7e5a2cb5ca | ||
|
|
2ecc92c4b3 | ||
|
|
cb2d5992d2 | ||
|
|
cde6be7742 | ||
|
|
4f2feee931 | ||
|
|
1351215182 | ||
|
|
91fe229bf0 | ||
|
|
85d7b69d19 | ||
|
|
c5a980f8a4 | ||
|
|
8c5038c301 | ||
|
|
f227f4ff72 | ||
|
|
aa40a8edd7 | ||
|
|
44c4011575 | ||
|
|
1280462ec7 | ||
|
|
c713309769 | ||
|
|
b4dc15a9cb | ||
|
|
22e99a2cff | ||
|
|
68dfcccd57 | ||
|
|
84c3ef0f5c | ||
|
|
231ec7eaea | ||
|
|
9815d729b5 | ||
|
|
11d237f5f2 | ||
|
|
0d06ea6758 | ||
|
|
b5af11a89d | ||
|
|
f6ab01843c | ||
|
|
f9024d2eb3 | ||
|
|
918d59d6a6 | ||
|
|
4320a0f1ed | ||
|
|
2abca14a05 | ||
|
|
e70fb50b51 | ||
|
|
82d83feab1 | ||
|
|
b5815a3b8d | ||
|
|
aeff5272f3 | ||
|
|
059ba15b5a | ||
|
|
e24c38bbb0 | ||
|
|
c4742aadbc | ||
|
|
62d0f01236 | ||
|
|
1246f1a791 | ||
|
|
8b70d770d5 | ||
|
|
6e68d8fe74 | ||
|
|
48b82567d2 | ||
|
|
07ccf667e4 | ||
|
|
7689ea4f28 | ||
|
|
767d733948 | ||
|
|
904a30123d | ||
|
|
a3a16d6593 | ||
|
|
13d7530e43 | ||
|
|
eb73c30b28 | ||
|
|
06a2af3386 | ||
|
|
41e971ecc9 | ||
|
|
39e77bf468 | ||
|
|
f4c59a3a5d | ||
|
|
deb26f5c80 | ||
|
|
41c3846c51 | ||
|
|
02e6d581d3 | ||
|
|
c5ee4e6451 | ||
|
|
fe7f713b67 | ||
|
|
da03639bd7 | ||
|
|
a26c4017b1 | ||
|
|
ce40f91fb0 | ||
|
|
8f94ff14ff | ||
|
|
df56bea102 | ||
|
|
7258d577cd | ||
|
|
b77b036459 | ||
|
|
3a5b7427a1 | ||
|
|
e80f66778b | ||
|
|
bf63855292 | ||
|
|
a8a69775a1 | ||
|
|
c976ec494e | ||
|
|
8000e22830 | ||
|
|
9deb54b75f | ||
|
|
632c190e6f | ||
|
|
b6f91817f0 | ||
|
|
426340fed5 | ||
|
|
13c7d038eb | ||
|
|
5147742049 | ||
|
|
41bd8a41fa | ||
|
|
49d4005805 | ||
|
|
dee0b2084b | ||
|
|
5670868c5e | ||
|
|
1f20abde59 | ||
|
|
112c41a707 | ||
|
|
aa8eaf2b28 | ||
|
|
d08cf58d80 | ||
|
|
d31ca0dbd8 | ||
|
|
df05edaa11 | ||
|
|
adddfab850 | ||
|
|
4c4d1096a7 | ||
|
|
f20b40fb80 | ||
|
|
e833ee81fb | ||
|
|
c474da04b3 | ||
|
|
98125a97c9 | ||
|
|
1a6c816bac | ||
|
|
bc05bfda4f | ||
|
|
ffbad6633d | ||
|
|
b1aa31215f | ||
|
|
ff19efe146 | ||
|
|
95b30f5153 | ||
|
|
e6d8fde415 | ||
|
|
b6664c76c5 | ||
|
|
cbe2766c0a | ||
|
|
8a11ad7a7a | ||
|
|
3d03461a52 | ||
|
|
f466a0c387 | ||
|
|
729fca7722 | ||
|
|
d790008353 | ||
|
|
479c7f8b54 | ||
|
|
d0a33c4d9d | ||
|
|
c3141b6ed6 | ||
|
|
cf8972262a | ||
|
|
bdbcf31fc2 | ||
|
|
6dc50ace6b | ||
|
|
51653fb9b7 | ||
|
|
12e6fe9db7 | ||
|
|
c3b15e3f6c | ||
|
|
a92f2a263b | ||
|
|
945d3887d2 | ||
|
|
887f3bf31d | ||
|
|
a9d5d0097d | ||
|
|
3d972a11a8 | ||
|
|
7a20543d5f | ||
|
|
4c1e3ac7db | ||
|
|
d6a6316771 | ||
|
|
459e20df3f | ||
|
|
7d5b860ff3 | ||
|
|
6fc96ef94e | ||
|
|
5214ed29b7 | ||
|
|
6b10b41b02 | ||
|
|
ef2bcb056d | ||
|
|
da19eda51e | ||
|
|
b75593b0c6 | ||
|
|
a96ba1b7f7 | ||
|
|
7c7547227c | ||
|
|
cf568ae85f | ||
|
|
8c82b0296a | ||
|
|
33e2e0b028 | ||
|
|
d1b220f6a3 | ||
|
|
d5a658b5ea | ||
|
|
dd365d7220 | ||
|
|
336eaa336b | ||
|
|
ebdcc11c80 | ||
|
|
ebe9b6d4cb | ||
|
|
7cc7ce3ba2 | ||
|
|
b9f5e152de | ||
|
|
76753c06df | ||
|
|
e280f72cfb | ||
|
|
d71384bc33 | ||
|
|
605457deec | ||
|
|
90829a3164 | ||
|
|
05f6ede2ea | ||
|
|
1e7fbb7018 | ||
|
|
385159c25e | ||
|
|
fb9ffa40fd | ||
|
|
eacffb2b6e | ||
|
|
fb7b47adb4 | ||
|
|
d70ca1a357 | ||
|
|
31a3a18ec7 | ||
|
|
5074f26ccd | ||
|
|
4315637f75 | ||
|
|
b7e8dcff7b | ||
|
|
5a9129f802 | ||
|
|
b175d265b9 | ||
|
|
e5ee9377fd | ||
|
|
edcb45640f | ||
|
|
d61a55b661 | ||
|
|
b312584ca4 | ||
|
|
ac5c7124de | ||
|
|
57d575f941 | ||
|
|
d41e51f47b | ||
|
|
90a88efd8a | ||
|
|
4b299529b7 | ||
|
|
589465bb81 | ||
|
|
0d320e2e31 | ||
|
|
4903febd96 | ||
|
|
bbe96a3577 | ||
|
|
b211aca5ce | ||
|
|
58ab3de7c1 | ||
|
|
ba8ae53867 | ||
|
|
7e600c0dd8 | ||
|
|
9a0a00c7a4 | ||
|
|
91927e6bc7 | ||
|
|
fc045f210d | ||
|
|
eecc691cdf | ||
|
|
7a6557a9e2 | ||
|
|
b45fd787f3 | ||
|
|
c2523c685a | ||
|
|
dfd62a3bd8 | ||
|
|
614bbcb0da | ||
|
|
9a859f8d5c | ||
|
|
5045d8df68 | ||
|
|
9908310384 | ||
|
|
7b18eab02d | ||
|
|
bd4b3debc3 | ||
|
|
5623634f56 | ||
|
|
87bbbfafcc | ||
|
|
2a85ab0eab | ||
|
|
65123c66a0 | ||
|
|
d72caa5005 | ||
|
|
e580d3b6b6 | ||
|
|
5eea9cebae | ||
|
|
b8fe3913e9 | ||
|
|
04d4b2cf76 | ||
|
|
81bb69b6c9 | ||
|
|
0cf1f0d51c | ||
|
|
c308a47124 | ||
|
|
cd313c195b | ||
|
|
9f571ff15d | ||
|
|
e2ee54a27d | ||
|
|
0f456b4684 | ||
|
|
8636eb1883 | ||
|
|
50677ad87a | ||
|
|
81eb6a8bb4 | ||
|
|
97f8c246b8 | ||
|
|
20bf76464a | ||
|
|
c4f370a7e6 | ||
|
|
9ebc77ef22 | ||
|
|
2fce67c8b7 | ||
|
|
a55536c0dc | ||
|
|
1ae0498534 | ||
|
|
c02c379bed | ||
|
|
c5ac5b0264 | ||
|
|
0fb705f8f5 | ||
|
|
bbfae84ee8 | ||
|
|
cab151ec44 | ||
|
|
7a733d635e | ||
|
|
44077774be | ||
|
|
37b4936e9d | ||
|
|
637e2c6f56 | ||
|
|
2bfa1ffc05 | ||
|
|
e55ee43fd5 | ||
|
|
204cb16bc4 | ||
|
|
ebef4553f3 | ||
|
|
fe2c4c569d | ||
|
|
b2033d642c | ||
|
|
74501f509f | ||
|
|
8f65678b99 | ||
|
|
510b5523d5 | ||
|
|
d7c4a06ce8 | ||
|
|
1582e401ed | ||
|
|
bae83e6724 | ||
|
|
16ff1be093 | ||
|
|
8bb34107f1 | ||
|
|
2c24c7618a | ||
|
|
240ed53a88 | ||
|
|
2cb971c38f | ||
|
|
7041fbc27e | ||
|
|
e519278888 | ||
|
|
4235ca36ea | ||
|
|
6527792d06 | ||
|
|
716dfdae47 | ||
|
|
c158af902f | ||
|
|
ed09a25c65 | ||
|
|
94dc49e522 | ||
|
|
40bc035d74 | ||
|
|
01aac69514 | ||
|
|
953ddae475 | ||
|
|
ab548afbfb | ||
|
|
f2eec981ff | ||
|
|
07038f8342 | ||
|
|
f59b0a2932 | ||
|
|
030084f2b3 | ||
|
|
bf63879a92 | ||
|
|
ed8b8bcf8f | ||
|
|
1dc7a80d4f | ||
|
|
87b55860af | ||
|
|
453ec39496 | ||
|
|
6ec1ec2575 | ||
|
|
e7724c13cc | ||
|
|
38a85280de | ||
|
|
20ea3bc0ce | ||
|
|
b45c90ceb8 | ||
|
|
e94288bbb1 | ||
|
|
d0902c096e | ||
|
|
c50adf2433 | ||
|
|
64263a9f8e | ||
|
|
114ac38910 | ||
|
|
1f6086c175 | ||
|
|
c84f7a740f | ||
|
|
16be913abc | ||
|
|
b3a1548cfa | ||
|
|
b94c2799ab | ||
|
|
d4f6e9e419 | ||
|
|
847c0246cd | ||
|
|
b985384fab | ||
|
|
851f9c1da6 | ||
|
|
acbb330214 | ||
|
|
db7d82a889 | ||
|
|
9ef7b13442 | ||
|
|
db42d1f532 | ||
|
|
7406e3df9f | ||
|
|
8b50f9ab36 | ||
|
|
fef959d1e9 | ||
|
|
f62ee5c4f5 | ||
|
|
486c0955cf | ||
|
|
0373920f99 | ||
|
|
1ad05f7f22 | ||
|
|
15a1d4cf0d | ||
|
|
1b689802a4 | ||
|
|
b35aec4347 | ||
|
|
ee1e229b66 | ||
|
|
e007f7cf39 | ||
|
|
5cd4564a32 | ||
|
|
26bc23602a | ||
|
|
d6bc936ffa | ||
|
|
581363fddd | ||
|
|
685a97fd93 | ||
|
|
897d41fa77 | ||
|
|
5064d33519 | ||
|
|
107e760aa3 | ||
|
|
9b53b7e111 | ||
|
|
63f2300794 | ||
|
|
61f9c5a201 | ||
|
|
267e1ee62f | ||
|
|
950da28d54 | ||
|
|
e2dc863086 | ||
|
|
f8cb411df1 | ||
|
|
41cae458a4 | ||
|
|
885d7602f9 | ||
|
|
e6eeb03108 | ||
|
|
f088b1b460 | ||
|
|
3c640fa32d | ||
|
|
d02636213a | ||
|
|
bd6630810f | ||
|
|
3331d2a496 | ||
|
|
f9b1e4e23b | ||
|
|
2bb090bf2b | ||
|
|
76f8843017 | ||
|
|
9fa51447a2 | ||
|
|
c608e7c04e | ||
|
|
19d7e16fa6 | ||
|
|
e3211eec04 | ||
|
|
89994bda39 | ||
|
|
df5e594e95 | ||
|
|
8d7b999506 | ||
|
|
2798fc4e49 | ||
|
|
61b2929ae6 | ||
|
|
1501f467cf | ||
|
|
306af4feee | ||
|
|
d3ab6d36a4 | ||
|
|
6a299a483a | ||
|
|
8944983d0f | ||
|
|
06398fa259 | ||
|
|
3bbf5c04a6 | ||
|
|
fe327fbd76 | ||
|
|
686db5e5eb | ||
|
|
5fe653cf82 | ||
|
|
58fdfb6fa1 | ||
|
|
dca8a4a550 | ||
|
|
4270f0fb4a | ||
|
|
dd49a0cd84 | ||
|
|
88a7c0b233 | ||
|
|
1b1fbbb70d | ||
|
|
815b97bf7c | ||
|
|
37075d0437 | ||
|
|
63e71af229 | ||
|
|
66a4db5fa0 | ||
|
|
55cbba0764 | ||
|
|
a297a615b9 | ||
|
|
c12bb689fb | ||
|
|
50215307f2 | ||
|
|
96cbadb874 | ||
|
|
50608986fe | ||
|
|
7bbe8df2b8 | ||
|
|
0543828603 | ||
|
|
7e9d2fb509 | ||
|
|
dcb2f2588c | ||
|
|
178acfbb20 | ||
|
|
57408af2a3 | ||
|
|
54af750717 | ||
|
|
1effc27790 | ||
|
|
61984561cd | ||
|
|
cd3bbfb02c | ||
|
|
81ab4cbc5f | ||
|
|
475d7fc02d | ||
|
|
b30b551197 | ||
|
|
3cd7f6bd87 | ||
|
|
277495c8e4 | ||
|
|
5c88164211 | ||
|
|
230d757a89 | ||
|
|
9671179453 | ||
|
|
eb12936a52 | ||
|
|
345d905438 | ||
|
|
6049d371f3 | ||
|
|
6d3494a853 | ||
|
|
37d63b3fe9 | ||
|
|
291c57b624 | ||
|
|
186f92479d | ||
|
|
7e9dfb1a11 | ||
|
|
806b4a3bdf | ||
|
|
433b7ca589 | ||
|
|
78db5732ca | ||
|
|
dfd42ab573 | ||
|
|
24802143eb | ||
|
|
a42cf1ae37 | ||
|
|
02ebc9ca21 | ||
|
|
1fd39578b0 | ||
|
|
1eb535f14f | ||
|
|
4f0e2fb9c4 | ||
|
|
f7395f517b | ||
|
|
defaddecec | ||
|
|
7506a5b7ad | ||
|
|
3fc40b955a | ||
|
|
38b9febfe5 | ||
|
|
e837b2e2cd | ||
|
|
75c7862e78 |
No files matched your search
+2
-1
@@ -4,6 +4,7 @@
|
||||
*.java text eol=lf
|
||||
*.gradle text eol=crlf
|
||||
*.png binary
|
||||
*.gif binary
|
||||
*.exe binary
|
||||
*.dll binary
|
||||
*.jar binary
|
||||
@@ -11,4 +12,4 @@
|
||||
*.zip binary
|
||||
*.pyd binary
|
||||
*.cfg text eol=lf
|
||||
*.py text eol=lf
|
||||
*.py text eol=lf
|
||||
+6
-2
@@ -3,8 +3,12 @@
|
||||
/.settings
|
||||
/.classpath
|
||||
|
||||
#In case people make their workspace in the repo
|
||||
/eclipse/
|
||||
|
||||
#idea
|
||||
/.idea
|
||||
/classes
|
||||
*.iml
|
||||
|
||||
#gradle
|
||||
@@ -12,13 +16,13 @@
|
||||
/.gradle
|
||||
|
||||
#occupational hazards
|
||||
/eclipse/
|
||||
/projects/
|
||||
/repo/
|
||||
/buildSrc
|
||||
|
||||
#Patch rejects
|
||||
*.rej
|
||||
/patches-/
|
||||
|
||||
# FML changelog
|
||||
changelog.txt
|
||||
/patches_old/
|
||||
|
||||
File renamed without changes.
File renamed without changes.
+483
@@ -0,0 +1,483 @@
|
||||
Minecraft Forge is licensed under the terms of the LGPL 2.1 found
|
||||
here http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt and copied
|
||||
below.
|
||||
|
||||
A note on authorship:
|
||||
All source artifacts are property of their original author, with
|
||||
the exclusion of the contents of the patches directory and others
|
||||
copied from it from time to time. Authorship of the contents of
|
||||
the patches directory is retained by the Minecraft Forge project.
|
||||
This is because the patches are partially machine generated
|
||||
artifacts, and are changed heavily due to the way forge works.
|
||||
Individual attribution within them is impossible.
|
||||
|
||||
Consent:
|
||||
All contributions to Forge must consent to the release of any
|
||||
patch content to the Forge project.
|
||||
|
||||
A note on infectivity:
|
||||
The LGPL is chosen specifically so that projects may depend on Forge
|
||||
features without being infected with its license. That is the
|
||||
purpose of the LGPL. Mods and others using this code via ordinary
|
||||
Java mechanics for referencing libraries are specifically not bound
|
||||
by Forge's license for the Mod code.
|
||||
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
+332
-81
@@ -1,11 +1,6 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
maven {
|
||||
name = "central_mirrior"
|
||||
url = "http://uk.maven.org/maven2"
|
||||
}
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
maven {
|
||||
name = "forge"
|
||||
url = "http://files.minecraftforge.net/maven"
|
||||
@@ -16,71 +11,240 @@ buildscript {
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
|
||||
}
|
||||
}
|
||||
|
||||
configurations {
|
||||
deployJars
|
||||
}
|
||||
|
||||
import static net.minecraftforge.gradle.dev.ForgeDevPlugin.*
|
||||
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'forgedev'
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
name = "central_mirrior"
|
||||
url = "http://uk.maven.org/maven2"
|
||||
}
|
||||
mavenLocal()
|
||||
flatDir {
|
||||
name "fileRepo"
|
||||
dirs "repo"
|
||||
}
|
||||
maven {
|
||||
name = "local"
|
||||
url = "file:///home/cpw/projects/repo"
|
||||
}
|
||||
}
|
||||
apply plugin: "maven"
|
||||
apply plugin: "net.minecraftforge.gradle.patcher"
|
||||
apply plugin: "net.minecraftforge.gradle.launch4j"
|
||||
|
||||
minecraft {
|
||||
version = '1.8'
|
||||
mcpVersion = '9.10'
|
||||
mappings = 'snapshot_nodoc_20141130'
|
||||
fmlDir = projectDir.getAbsolutePath() + "/fml";
|
||||
mainClass = 'net.minecraftforge.fml.relauncher.ServerLaunchWrapper'
|
||||
tweakClass = 'net.minecraftforge.fml.common.launcher.FMLTweaker'
|
||||
version = "1.9"
|
||||
mappings = 'snapshot_nodoc_20160312'
|
||||
//mappings = "snapshot_nodoc_20151122"
|
||||
workspaceDir = "projects"
|
||||
versionJson = "jsons/1.9-dev.json"
|
||||
buildUserdev = true
|
||||
buildInstaller = true
|
||||
installerVersion = "1.4"
|
||||
|
||||
def common = {
|
||||
patchPrefixOriginal "../src-base/minecraft"
|
||||
patchPrefixChanged "../src-work/minecraft"
|
||||
mainClassClient "net.minecraft.launchwrapper.Launch"
|
||||
tweakClassClient "net.minecraftforge.fml.common.launcher.FMLTweaker"
|
||||
mainClassServer "net.minecraft.launchwrapper.Launch"
|
||||
tweakClassServer "net.minecraftforge.fml.common.launcher.FMLServerTweaker"
|
||||
}
|
||||
|
||||
projects {
|
||||
forge {
|
||||
rootDir "."
|
||||
patchDir "patches/minecraft"
|
||||
patchAfter "clean"
|
||||
genPatchesFrom "clean"
|
||||
genMcpPatches = false
|
||||
applyMcpPatches = false
|
||||
with common
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group = 'net.minecraftforge'
|
||||
version = getVersionFromJava(getProject(), 'src/main/java/net/minecraftforge/common/ForgeVersion.java')
|
||||
version = getVersionFromJava(file("src/main/java/net/minecraftforge/common/ForgeVersion.java"))
|
||||
|
||||
jenkins {
|
||||
job = 'minecraftforge'
|
||||
extractForgeSources { exclude "**/SideOnly.java", "**/Side.java" }
|
||||
extractForgeResources { exclude "**/log4j2.xml" }
|
||||
|
||||
genGradleProjects { addTestCompileDep "junit:junit:4.12" }
|
||||
|
||||
processJson {
|
||||
releaseJson = "jsons/1.9-rel.json"
|
||||
addReplacements([
|
||||
"@minecraft_version@": project.minecraft.version,
|
||||
"@version@": project.version,
|
||||
"@project@": "forge",
|
||||
"@artifact@": "net.minecraftforge:forge:${project.version}",
|
||||
"@universal_jar@": { outputJar.archiveName },
|
||||
"@timestamp@": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
||||
])
|
||||
}
|
||||
|
||||
// crowdin stuff
|
||||
if (project.hasProperty("crowdinKey"))
|
||||
tasks.getLocalizations.apiKey = project.crowdinKey
|
||||
task changelog(type: JenkinsChangelog) {
|
||||
|
||||
// skip if there is no forge jenkins pass
|
||||
onlyIf {
|
||||
project.hasProperty('forgeJenkinsPass')
|
||||
// Not sure what abrar was trying to do here...
|
||||
//project.file("build/distributions/${project.name}-${project.version}-changelog.txt").text = ""
|
||||
}
|
||||
|
||||
outputs.upToDateWhen { false } // never up to date
|
||||
serverRoot = "http://ci.jenkins.minecraftforge.net/"
|
||||
jobName = "minecraftforge"
|
||||
targetBuild = System.env['BUILD_NUMBER'] ?: 0;
|
||||
authName = "console_script"
|
||||
authPassword = project.hasProperty('forgeJenkinsPass') ? project.getProperty('forgeJenkinsPass') : "";
|
||||
output = "build/distributions/${project.name}-${project.version}-changelog.txt"
|
||||
}
|
||||
|
||||
task crowdin(type: CrowdinDownload) {
|
||||
output = "build/crowdin.zip"
|
||||
projectId = 'minecraft-forge'
|
||||
extract = false // we wanna keep it as a zip. not extract it to a folder named "crowdin.zip"
|
||||
|
||||
// task auomatically skips if this is null
|
||||
if (project.hasProperty('crowdinKey'))
|
||||
apiKey = project.crowdinKey
|
||||
}
|
||||
|
||||
def extraTxts = [
|
||||
changelog, // yeah we can do thi, because gradle and groovy are awesome
|
||||
"LICENSE-fml.txt",
|
||||
"CREDITS-fml.txt",
|
||||
"MinecraftForge-Credits.txt",
|
||||
"MinecraftForge-License.txt",
|
||||
"Paulscode SoundSystem CodecIBXM License.txt",
|
||||
"Paulscode IBXM Library License.txt"
|
||||
]
|
||||
|
||||
outputJar {
|
||||
classifier = 'universal'
|
||||
from extraTxts
|
||||
|
||||
// add crowdin locales
|
||||
from { crowdin.getDidWork() ? zipTree(crowdin.output) : null}
|
||||
dependsOn 'crowdin'
|
||||
|
||||
manifest.attributes([
|
||||
"Main-Class": "net.minecraftforge.fml.relauncher.ServerLaunchWrapper",
|
||||
"TweakClass": "net.minecraftforge.fml.common.launcher.FMLTweaker",
|
||||
"Class-Path": getServerClasspath(file("jsons/${minecraft.version}-rel.json"))
|
||||
])
|
||||
}
|
||||
|
||||
installer {
|
||||
classifier = 'installer'
|
||||
from extraTxts
|
||||
from "src/main/resources/forge_logo.png"
|
||||
rename "forge_logo\\.png", "big_logo.png"
|
||||
}
|
||||
|
||||
task signUniversal(type: SignJar, dependsOn: 'outputJar') {
|
||||
onlyIf {
|
||||
project.hasProperty('jarsigner')
|
||||
}
|
||||
|
||||
def jarsigner = [:];
|
||||
|
||||
if (project.hasProperty('jarsigner'))
|
||||
jarsigner = project.jarsigner;
|
||||
|
||||
alias = 'forge'
|
||||
exclude "paulscode/**"
|
||||
storePass = jarsigner.storepass
|
||||
keyPass = jarsigner.keypass
|
||||
keyStore = jarsigner.keystore
|
||||
inputFile = outputJar.archivePath
|
||||
outputFile = outputJar.archivePath
|
||||
}
|
||||
uploadArchives.dependsOn signUniversal
|
||||
build.dependsOn signUniversal
|
||||
installer.dependsOn signUniversal
|
||||
|
||||
// MDK package
|
||||
|
||||
import org.apache.tools.ant.filters.ReplaceTokens
|
||||
task makeMdk(type: Zip) {
|
||||
baseName = project.name
|
||||
classifier = "mdk"
|
||||
version = project.version
|
||||
destinationDir = file('build/distributions')
|
||||
|
||||
from 'gradlew'
|
||||
from 'gradlew.bat'
|
||||
into ('gradle') {
|
||||
from 'gradle'
|
||||
}
|
||||
into ('eclipse') {
|
||||
from 'mdk/eclipse'
|
||||
}
|
||||
from changelog.output
|
||||
from ('mdk') {
|
||||
filter(ReplaceTokens, tokens: [
|
||||
VERSION: project.version,
|
||||
MAPPINGS: minecraft.mappings.replace('nodoc_', '')
|
||||
])
|
||||
exclude 'eclipse'
|
||||
rename 'gitignore\\.txt', '.gitignore'
|
||||
from 'MinecraftForge-Credits.txt'
|
||||
from 'MinecraftForge-License.txt'
|
||||
from 'Paulscode IBXM Library License.txt'
|
||||
from 'Paulscode SoundSystem CodecIBXM License.txt'
|
||||
from 'CREDITS-fml.txt'
|
||||
from 'LICENSE-fml.txt'
|
||||
}
|
||||
}
|
||||
tasks.build.dependsOn makeMdk
|
||||
|
||||
// launch4j
|
||||
|
||||
launch4j {
|
||||
jar = installer.archivePath.canonicalPath
|
||||
outfile = file("build/distributions/${project.name}-${project.version}-installer-win.exe").canonicalPath
|
||||
icon = file('icon.ico').canonicalPath
|
||||
manifest = file('l4jManifest.xml').canonicalPath
|
||||
jreMinVersion = '1.6.0'
|
||||
initialHeapPercent = 5;
|
||||
maxHeapPercent = 100;
|
||||
}
|
||||
tasks.generateXmlConfig.dependsOn installer
|
||||
tasks.build.dependsOn 'launch4j'
|
||||
|
||||
// MAVEN
|
||||
|
||||
artifacts {
|
||||
archives changelog.output
|
||||
archives file("build/distributions/${project.name}-${project.version}-installer-win.exe")
|
||||
archives makeMdk
|
||||
}
|
||||
|
||||
task ciWriteBuildNumber << {
|
||||
def file = file("src/main/java/net/minecraftforge/common/ForgeVersion.java");
|
||||
def bn = System.getenv("BUILD_NUMBER")?:0;
|
||||
def outfile = "";
|
||||
def ln = System.getProperty('line.separator')
|
||||
|
||||
file.eachLine{ String s ->
|
||||
if (s.contains("buildVersion") && s.contains("= 0;")) {
|
||||
s = " public static final int buildVersion = ${bn};";
|
||||
}
|
||||
outfile += (s+ln);
|
||||
}
|
||||
file.write(outfile);
|
||||
}
|
||||
|
||||
uploadArchives {
|
||||
repositories {
|
||||
add getProject().repositories.mavenLocal()
|
||||
}
|
||||
repositories.mavenDeployer {
|
||||
configuration = configurations.deployJars
|
||||
|
||||
if (project.hasProperty("filesmaven")) {
|
||||
logger.info('Publishing to files server')
|
||||
repository(url: project.filesmaven.url) {
|
||||
authentication(userName: project.filesmaven.username, privateKey: project.filesmaven.key)
|
||||
dependsOn 'build'
|
||||
|
||||
if (project.hasProperty('forgeMavenPass'))
|
||||
{
|
||||
repository(url: "http://files.minecraftforge.net/maven/manage/upload") {
|
||||
authentication(userName: "forge", password: project.getProperty('forgeMavenPass')) // the elvis operator. look it up.
|
||||
}
|
||||
} else {
|
||||
logger.info('Publishing to repo folder')
|
||||
}
|
||||
else
|
||||
{
|
||||
// local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local
|
||||
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
|
||||
}
|
||||
|
||||
@@ -88,49 +252,136 @@ uploadArchives {
|
||||
groupId = project.group
|
||||
version = project.version
|
||||
artifactId = project.archivesBaseName
|
||||
}
|
||||
pom.project {
|
||||
name project.archivesBaseName
|
||||
packaging 'jar'
|
||||
description 'Minecraft Forge API'
|
||||
url 'https://github.com/MinecraftForge/MinecraftForge'
|
||||
|
||||
scm {
|
||||
project {
|
||||
name project.archivesBaseName
|
||||
packaging 'jar'
|
||||
description 'Minecraft Forge API'
|
||||
url 'https://github.com/MinecraftForge/MinecraftForge'
|
||||
connection 'scm:git:git://github.com/MinecraftForge/MinecraftForge.git'
|
||||
developerConnection 'scm:git:[email protected]:MinecraftForge/MinecraftForge.git'
|
||||
}
|
||||
|
||||
issueManagement {
|
||||
system 'github'
|
||||
url 'https://github.com/MinecraftForge/MinecraftForge/issues'
|
||||
}
|
||||
scm {
|
||||
url 'https://github.com/MinecraftForge/MinecraftForge'
|
||||
connection 'scm:git:git://github.com/MinecraftForge/MinecraftForge.git'
|
||||
developerConnection 'scm:git:[email protected]:MinecraftForge/MinecraftForge.git'
|
||||
}
|
||||
|
||||
licenses {
|
||||
license {
|
||||
name 'Forge Public License'
|
||||
url 'https://raw.github.com/MinecraftForge/MinecraftForge/master/MinecraftForge-License.txt'
|
||||
distribution 'repo'
|
||||
issueManagement {
|
||||
system 'github'
|
||||
url 'https://github.com/MinecraftForge/MinecraftForge/issues'
|
||||
}
|
||||
}
|
||||
|
||||
developers {
|
||||
developer {
|
||||
id 'cpw'
|
||||
name 'cpw'
|
||||
roles { role 'developer' }
|
||||
licenses {
|
||||
license {
|
||||
name 'Forge Public License'
|
||||
url 'https://raw.github.com/MinecraftForge/MinecraftForge/master/MinecraftForge-License.txt'
|
||||
distribution 'repo'
|
||||
}
|
||||
}
|
||||
developer {
|
||||
id 'LexManos'
|
||||
name 'Lex Manos'
|
||||
roles { role 'developer' }
|
||||
}
|
||||
developer {
|
||||
id 'AbrarSyed'
|
||||
name 'Abrar Syed'
|
||||
roles { role 'contributor' }
|
||||
|
||||
developers {
|
||||
developer {
|
||||
id 'cpw'
|
||||
name 'cpw'
|
||||
roles { role 'developer' }
|
||||
}
|
||||
developer {
|
||||
id 'LexManos'
|
||||
name 'Lex Manos'
|
||||
roles { role 'developer' }
|
||||
}
|
||||
developer {
|
||||
id 'AbrarSyed'
|
||||
name 'Abrar Syed'
|
||||
roles { role 'contributor' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// HELPER METHODS
|
||||
|
||||
import groovy.json.JsonSlurper;
|
||||
|
||||
String getServerClasspath(File file)
|
||||
{
|
||||
def node = new JsonSlurper().parse(file);
|
||||
def out = new StringBuilder()
|
||||
node.versionInfo.libraries.each { lib ->
|
||||
if (lib.serverreq)
|
||||
{
|
||||
// group : artifact : version
|
||||
def split = lib.name.split(':')
|
||||
def group = split[0].replace('.', '/')
|
||||
def artifact = split[1]
|
||||
def version = split[2]
|
||||
out += "libraries/$group/$artifact/$version/$artifact-${version}.jar "
|
||||
}
|
||||
}
|
||||
out += "minecraft_server.${minecraft.version}.jar"
|
||||
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
String getVersionFromJava(File file)
|
||||
{
|
||||
String major = "0";
|
||||
String minor = "0";
|
||||
String revision = "0";
|
||||
String build = "0";
|
||||
|
||||
String prefix = "public static final int";
|
||||
file.eachLine{ String s ->
|
||||
s = s.trim();
|
||||
if (s.startsWith(prefix))
|
||||
{
|
||||
s = s.substring(prefix.length(), s.length() - 1);
|
||||
s = s.replace('=', ' ').replace("Version", "").replaceAll(" +", " ").trim();
|
||||
String[] pts = s.split(" ");
|
||||
|
||||
if (pts[0].equals("major")) major = pts[pts.length - 1];
|
||||
else if (pts[0] == "minor") minor = pts[pts.length - 1];
|
||||
else if (pts[0] == "revision") revision = pts[pts.length - 1];
|
||||
}
|
||||
}
|
||||
|
||||
if (System.getenv().containsKey("BUILD_NUMBER"))
|
||||
{
|
||||
build = System.getenv("BUILD_NUMBER");
|
||||
}
|
||||
|
||||
String branch = null;
|
||||
if (!System.getenv().containsKey("GIT_BRANCH"))
|
||||
{
|
||||
// TODO: use grgit
|
||||
branch = "git rev-parse --abbrev-ref HEAD".execute().text.trim()
|
||||
}
|
||||
else
|
||||
{
|
||||
branch = System.getenv("GIT_BRANCH");
|
||||
branch = branch.substring(branch.lastIndexOf('/') + 1);
|
||||
}
|
||||
|
||||
def out = "${minecraft.version.replace('-', '_')}-$major.$minor.$revision.$build"
|
||||
|
||||
if (branch && branch != 'master' && branch != 'HEAD')
|
||||
out += "-$branch"
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
// re-add old tasks for jenkins compat
|
||||
// should be remvoed, and the jenkisn fixed when no longer building with FG 1.2
|
||||
task setupForge { dependsOn 'setup' }
|
||||
task buildPackages { dependsOn 'build' }
|
||||
|
||||
//Temporary hack to fix compile errors caused by mappings shading in Bootstrap
|
||||
task fixParams << {
|
||||
logger.lifecycle('Fixing param names!')
|
||||
def params = new File(extractMcpMappings.destinationDir, 'params.csv')
|
||||
def text = params.text
|
||||
text = text.replaceAll('p_82499_3_,stack,', 'p_82499_3_,stackIn,')
|
||||
params.write(text)
|
||||
}
|
||||
fixParams.dependsOn('extractMcpMappings')
|
||||
extractMcpMappings.finalizedBy('fixParams')
|
||||
Binary file not shown.
@@ -1,14 +0,0 @@
|
||||
* text eol=lf
|
||||
*.bat text eol=crlf
|
||||
*.patch text eol=lf
|
||||
*.java text eol=lf
|
||||
*.gradle text eol=crlf
|
||||
*.png binary
|
||||
*.exe binary
|
||||
*.dll binary
|
||||
*.jar binary
|
||||
*.lzma binary
|
||||
*.zip binary
|
||||
*.pyd binary
|
||||
*.cfg text eol=lf
|
||||
*.py text eol=lf
|
||||
@@ -1,21 +0,0 @@
|
||||
#eclipse
|
||||
/bin
|
||||
/.settings
|
||||
/.classpath
|
||||
|
||||
#idea
|
||||
/.idea
|
||||
*.iml
|
||||
|
||||
#gradle
|
||||
/build
|
||||
/buildSrc
|
||||
/.gradle
|
||||
|
||||
#occupational hazards
|
||||
/eclipse/
|
||||
/repo/
|
||||
|
||||
|
||||
#Patch reject
|
||||
*.rej
|
||||
@@ -1,94 +0,0 @@
|
||||
This is Forge Mod Loader, or FML for short, by cpw.
|
||||
|
||||
More information can be found at https://github.com/MinecraftForge/FML/wiki
|
||||
|
||||
It is a clean reimplementation of a mod loading system for client and server.
|
||||
|
||||
It can be installed on its own, or as part of Minecraft Forge.
|
||||
|
||||
----------------------
|
||||
About Forge Mod Loader
|
||||
----------------------
|
||||
|
||||
Environments and compatibility
|
||||
==============================
|
||||
FML covers two main environments: client and server. All environments share
|
||||
the main mod loading code base, with additional varying hooks based on the
|
||||
specific environment.
|
||||
|
||||
There are some very visible changes to the client when FML is installed.
|
||||
|
||||
There are some bukkit compatibility hooks available, consult MCPC+, now known as Cauldron
|
||||
for more information.
|
||||
|
||||
Minecraft Forge in all cases bundles FML as it's modloading technology of choice
|
||||
because FML is open source, freely distributable, and can be easily updated by
|
||||
contributors through github.
|
||||
|
||||
Notable integrations
|
||||
====================
|
||||
Optifine has FML compatibility. It varies from Optifine release to release, however
|
||||
in general it will work well alongside an FML or
|
||||
Minecraft Forge installation. FML will detect and ensure the good operation of
|
||||
Optifine (you can see it in your client as an additional data line on the
|
||||
bottom left).
|
||||
|
||||
Mod information
|
||||
===============
|
||||
FML exposes the mod information through a mod list visible on the main screen as
|
||||
well as some small branding enhancements. For full data mods need to provide an
|
||||
information file. This file is a standard format so hopefully tools providing
|
||||
launch capabilities can also leverage this content.
|
||||
|
||||
-------------------------------
|
||||
Binary installation information
|
||||
-------------------------------
|
||||
If you have downloaded a binary zip file you can install it as follows (client
|
||||
or server):
|
||||
|
||||
Installation
|
||||
============
|
||||
To install on a server, simply execute the FML or Forge jar file, with a copy of
|
||||
minecraft_server-@[email protected] placed in the same directory. FML will launch
|
||||
it's patched copy.
|
||||
|
||||
To install on a client, run the installer by executing java -jar <installer>.jar.
|
||||
It will identify the location of you minecraft installation (this can be customized)
|
||||
and create a new profile "FML" there.
|
||||
|
||||
Forge Installation
|
||||
==================
|
||||
This code also ships as a part of Minecraft Forge. You do not need to install it
|
||||
separately from your Minecraft Forge installation. Minecraft Forge contains the
|
||||
exact same code as this. You should not install FML if you are also installing
|
||||
Minecraft Forge.
|
||||
|
||||
-------------------------------------------
|
||||
Source installation information for modders
|
||||
-------------------------------------------
|
||||
This code follows the Minecraft Forge installation methodology. It will apply
|
||||
some small patches to the vanilla MCP source code, giving you and it access
|
||||
to some of the data and functions you need to build a successful mod.
|
||||
|
||||
Note also that the patches are built against "unrenamed" MCP source code (aka
|
||||
srgnames) - this means that you will not be able to read them directly against
|
||||
normal code.
|
||||
|
||||
Source pack installation information:
|
||||
|
||||
Standalone source installation
|
||||
==============================
|
||||
|
||||
To install this source code for development purposes, extract this zip file.
|
||||
It ships with a demonstration mod. Run "gradle setupDevWorkspace" to create
|
||||
a gradle environment primed with FML. Run gradle eclipse or gradle idea to
|
||||
create an IDE workspace of your choice.
|
||||
Refer to ForgeGradle for more information about the gradle environment
|
||||
|
||||
Forge source installation
|
||||
=========================
|
||||
MinecraftForge ships with this code and installs it as part of the forge
|
||||
installation process, no further action is required on your part.
|
||||
|
||||
For reference this is version @MAJOR@.@MINOR@.@REV@.@BUILD@ of FML
|
||||
for Minecraft version @MCVERSION@.
|
||||
@@ -1,112 +0,0 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
maven {
|
||||
name = "forge"
|
||||
url = "http://files.minecraftforge.net/maven"
|
||||
}
|
||||
maven {
|
||||
name = "sonatype"
|
||||
url = "https://oss.sonatype.org/content/repositories/snapshots/"
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
||||
}
|
||||
}
|
||||
|
||||
import static net.minecraftforge.gradle.dev.FmlDevPlugin.*
|
||||
|
||||
apply plugin: 'maven'
|
||||
apply plugin: 'fmldev'
|
||||
|
||||
repositories {
|
||||
flatDir {
|
||||
name "fileRepo"
|
||||
dirs "repo"
|
||||
}
|
||||
}
|
||||
|
||||
minecraft {
|
||||
version = '1.8'
|
||||
mcpVersion = '9.10'
|
||||
mappings = 'snapshot_nodoc_20141130'
|
||||
fmlDir = projectDir.getAbsolutePath();
|
||||
mainClass = 'net.minecraftforge.fml.relauncher.ServerLaunchWrapper'
|
||||
tweakClass = 'net.minecraftforge.fml.common.launcher.FMLTweaker'
|
||||
installerVersion = "1.4"
|
||||
}
|
||||
|
||||
group = 'net.minecraftforge'
|
||||
version = getVersionFromGit(getProject())
|
||||
|
||||
jenkins {
|
||||
job = 'fml'
|
||||
}
|
||||
|
||||
uploadArchives {
|
||||
repositories {
|
||||
if (project.hasProperty("filesmaven")) {
|
||||
logger.info('Publishing to files server')
|
||||
|
||||
mavenDeployer {
|
||||
configuration = configurations.deployJars
|
||||
|
||||
repository(url: project.filesmaven.url) {
|
||||
authentication(userName: project.filesmaven.username, privateKey: project.filesmaven.key)
|
||||
}
|
||||
|
||||
pom {
|
||||
groupId = project.group
|
||||
version = project.version
|
||||
artifactId = project.archivesBaseName
|
||||
project {
|
||||
name project.archivesBaseName
|
||||
packaging 'jar'
|
||||
description 'ForgeModLoader'
|
||||
url 'https://github.com/MinecraftForge/FML'
|
||||
|
||||
scm {
|
||||
url 'https://github.com/MinecraftForge/FML'
|
||||
connection 'scm:git:git://github.com/MinecraftForge/FML.git'
|
||||
developerConnection 'scm:git:[email protected]:MinecraftForge/FML.git'
|
||||
}
|
||||
|
||||
issueManagement {
|
||||
system 'github'
|
||||
url 'https://github.com/MinecraftForge/FML/issues'
|
||||
}
|
||||
|
||||
licenses {
|
||||
license {
|
||||
name 'GNU Lesser Public License (LGPL), Version 2.1'
|
||||
url 'http://www.gnu.org/licenses/lgpl-2.1.txt'
|
||||
distribution 'repo'
|
||||
}
|
||||
}
|
||||
|
||||
developers {
|
||||
developer {
|
||||
id 'cpw'
|
||||
name 'cpw'
|
||||
roles { role 'developer' }
|
||||
}
|
||||
developer {
|
||||
id 'LexManos'
|
||||
name 'Lex Manos'
|
||||
roles { role 'developer' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logger.info('Publishing to repo folder')
|
||||
|
||||
mavenDeployer {
|
||||
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
# Artistic Style format configuration
|
||||
# see http://astyle.sourceforge.net/astyle.html
|
||||
|
||||
style=allman
|
||||
|
||||
add-brackets
|
||||
break-closing-brackets
|
||||
|
||||
indent-switches
|
||||
|
||||
max-instatement-indent=40
|
||||
|
||||
pad-oper
|
||||
pad-header
|
||||
unpad-paren
|
||||
|
||||
break-blocks
|
||||
|
||||
delete-empty-lines
|
||||
-18447
File diff suppressed because it is too large.
Load diff
-5012
File diff suppressed because it is too large.
Load diff
-27537
File diff suppressed because it is too large.
Load diff
@@ -1,172 +0,0 @@
|
||||
[DEFAULT]
|
||||
DirTemp = temp
|
||||
DirSrc = src
|
||||
DirLogs = logs
|
||||
DirBin = bin
|
||||
DirJars = jars
|
||||
DirReobf = reobf
|
||||
DirConf = conf
|
||||
DirRuntime = runtime
|
||||
DirLib = lib
|
||||
DirTempSrc = temp/src
|
||||
DirTempCls = temp/cls
|
||||
DirTempBin = temp/bin
|
||||
DirModSrc = modsrc
|
||||
DirEclipse = eclipse
|
||||
|
||||
[CSV]
|
||||
Classes = %(DirConf)s/classes.csv
|
||||
Methods = %(DirConf)s/methods.csv
|
||||
Fields = %(DirConf)s/fields.csv
|
||||
Params = %(DirConf)s/params.csv
|
||||
NewIds = %(DirConf)s/newids.csv
|
||||
|
||||
[SRGS]
|
||||
ConfClient = %(DirConf)s/joined.srg
|
||||
ConfServer = %(DirConf)s/joined.srg
|
||||
Client = %(DirTemp)s/client_rg.srg
|
||||
Server = %(DirTemp)s/server_rg.srg
|
||||
DeobfClient = %(DirTemp)s/client_deobf.srg
|
||||
DeobfServer = %(DirTemp)s/server_deobf.srg
|
||||
ReobfClient = %(DirTemp)s/client_ro.srg
|
||||
ReobfServer = %(DirTemp)s/server_ro.srg
|
||||
ReobfClientSrg = %(DirTemp)s/client_ro_srg.srg
|
||||
ReobfServerSrg = %(DirTemp)s/server_ro_srg.srg
|
||||
ReobfClientCls = %(DirTemp)s/client_ro_cls.srg
|
||||
ReobfServerCls = %(DirTemp)s/server_ro_cls.srg
|
||||
|
||||
[JAR]
|
||||
DirNatives = %(DirJars)s/bin/natives
|
||||
Client = %(DirJars)s/bin/minecraft.jar
|
||||
Server = %(DirJars)s/minecraft_server.jar
|
||||
LWJGL = %(DirJars)s/bin/jinput.jar,%(DirJars)s/bin/lwjgl.jar,%(DirJars)s/bin/lwjgl_util.jar
|
||||
MD5Client = 8663a10cecc10eaa683a927ef5371852
|
||||
MD5Server = 5b19d1a562a8a7c5f9a787ad96c8148b
|
||||
|
||||
[RETROGUARD]
|
||||
Location = %(DirRuntime)s/bin/retroguard.jar
|
||||
RetroConf = %(DirTemp)s/retroguard.cfg
|
||||
RetroReobConf = %(DirTemp)s/retroguard_ro.cfg
|
||||
ClientConf = %(DirTemp)s/client_rg.cfg
|
||||
ServerConf = %(DirTemp)s/server_rg.cfg
|
||||
ClientReobConf = %(DirTemp)s/client_ro.cfg
|
||||
ServerReobConf = %(DirTemp)s/server_ro.cfg
|
||||
ClientOut = %(DirTemp)s/minecraft_rg.jar
|
||||
ServerOut = %(DirTemp)s/minecraft_server_rg.jar
|
||||
ClientLog = %(DirLogs)s/client_rg.log
|
||||
ServerLog = %(DirLogs)s/server_rg.log
|
||||
ClientDeobLog = %(DirLogs)s/client_deob.log
|
||||
ServerDeobLog = %(DirLogs)s/server_deob.log
|
||||
NullPkg = net/minecraft/src
|
||||
|
||||
[EXCEPTOR]
|
||||
XClientJson = %(DirConf)s/exceptor.json
|
||||
XServerJson = %(DirConf)s/exceptor.json
|
||||
XClientCfg = %(DirConf)s/joined.exc
|
||||
XServerCfg = %(DirConf)s/joined.exc
|
||||
XClientOut = %(DirTemp)s/minecraft_exc.jar
|
||||
XServerOut = %(DirTemp)s/minecraft_server_exc.jar
|
||||
XClientLog = %(DirLogs)s/client_exc.log
|
||||
XServerLog = %(DirLogs)s/server_exc.log
|
||||
XClientLogReobf = %(DirLogs)s/client_reobf_exc.log
|
||||
XServerLogReobf = %(DirLogs)s/server_reobf_exc.log
|
||||
XClientMeta = %(DirTemp)s/client_meta.log
|
||||
XServerMeta = %(DirTemp)s/server_meta.log
|
||||
|
||||
|
||||
[DECOMPILE]
|
||||
ClsClientTemp = %(DirTempCls)s/minecraft
|
||||
ClsServerTemp = %(DirTempCls)s/minecraft_server
|
||||
SrcClientTemp = %(DirTempSrc)s/minecraft
|
||||
SrcServerTemp = %(DirTempSrc)s/minecraft_server
|
||||
FFSource = net
|
||||
FFClientIn = %(DirTemp)s/minecraft_ff_in.jar
|
||||
FFServerIn = %(DirTemp)s/minecraft_server_ff_in.jar
|
||||
|
||||
[OUTPUT]
|
||||
BinClientTemp = %(DirTempBin)s/minecraft
|
||||
BinServerTemp = %(DirTempBin)s/minecraft_server
|
||||
SrcClient = %(DirSrc)s/minecraft
|
||||
SrcServer = %(DirSrc)s/minecraft_server
|
||||
TestClient = net/minecraft/client/main/Main
|
||||
TestServer = net/minecraft/server/MinecraftServer
|
||||
|
||||
[PATCHES]
|
||||
PatchClient = %(DirConf)s/patches/minecraft.patch
|
||||
PatchServer = %(DirConf)s/patches/minecraft_server.patch
|
||||
PatchTemp = %(DirTemp)s/temp.patch
|
||||
FFPatchClient = %(DirConf)s/patches/minecraft_ff
|
||||
FFPatchServer = %(DirConf)s/patches/minecraft_server_ff
|
||||
PatchClient_osx = %(DirConf)s/patches/minecraft_osx.patch
|
||||
PatchServer_osx = %(DirConf)s/patches/minecraft_server_osx.patch
|
||||
|
||||
[RECOMPILE]
|
||||
BinClient = %(DirBin)s/minecraft
|
||||
BinServer = %(DirBin)s/minecraft_server
|
||||
LogClient = %(DirLogs)s/client_compile.log
|
||||
LogServer = %(DirLogs)s/server_compile.log
|
||||
ClassPathClient = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/bin/minecraft.jar,%(DirJars)s/bin/jinput.jar,%(DirJars)s/bin/lwjgl.jar,%(DirJars)s/bin/lwjgl_util.jar
|
||||
ClassPathServer = %(DirLib)s/,%(DirLib)s/*,%(DirJars)s/minecraft_server.jar
|
||||
ClientFixes = %(DirConf)s/patches
|
||||
FixStart = Start
|
||||
IgnorePkg = paulscode,com,isom,ibxm,de/matthiasmann/twl,org,javax,argo,gnu,io/netty
|
||||
|
||||
[REOBF]
|
||||
MD5Client = %(DirTemp)s/client.md5
|
||||
MD5Server = %(DirTemp)s/server.md5
|
||||
MD5PreReobfClient = %(DirTemp)s/client_reobf.md5
|
||||
MD5PreReobfServer = %(DirTemp)s/server_reobf.md5
|
||||
RecompJarClient = %(DirTemp)s/client_recomp.jar
|
||||
RecompJarServer = %(DirTemp)s/server_recomp.jar
|
||||
ObfJarClient = %(DirTemp)s/client_reobf.jar
|
||||
ObfJarServer = %(DirTemp)s/server_reobf.jar
|
||||
ReobfDirClient = %(DirReobf)s/minecraft
|
||||
ReobfDirServer = %(DirReobf)s/minecraft_server
|
||||
ClientRoLog = %(DirLogs)s/client_ro.log
|
||||
ServerRoLog = %(DirLogs)s/server_ro.log
|
||||
ReobfClientLog = %(DirLogs)s/client_reob.log
|
||||
ReobfServerLog = %(DirLogs)s/server_reob.log
|
||||
|
||||
[GETMODSOURCE]
|
||||
OutSRCClient = %(DirModSrc)s/minecraft
|
||||
OutSRCServer = %(DirModSrc)s/minecraft_server
|
||||
|
||||
[MCP]
|
||||
LogFile = %(DirLogs)s/mcp.log
|
||||
LogFileErr = %(DirLogs)s/mcperr.log
|
||||
UpdateUrl = http://mcp.ocean-labs.de/files/mcprolling_{version}/
|
||||
IgnoreUpdate = %(DirBin)s,%(DirLib)s,%(DirLogs)s,%(DirModSrc)s,%(DirReobf)s,%(DirSrc)s,%(DirTemp)s,%(DirEclipse)s/Client/bin,%(DirEclipse)s/Server/bin,%(DirJars)s/world,%(DirJars)s/saves,%(DirJars)s/resources
|
||||
RGIndex = 180425
|
||||
|
||||
[ASTYLE]
|
||||
AstyleConfig = %(DirConf)s/astyle.cfg
|
||||
|
||||
[COMMANDS]
|
||||
Wine = wine
|
||||
Patcher_win = %(DirRuntime)s/bin/applydiff.exe
|
||||
Patcher_linux = patch
|
||||
Patcher_osx = patch
|
||||
Jad_win = %(DirRuntime)s/bin/jad.exe
|
||||
Jad_osx = %(DirRuntime)s/bin/jad-osx
|
||||
AStyle_win = %(DirRuntime)s/bin/astyle.exe
|
||||
AStyle_linux = astyle
|
||||
AStyle_osx = %(DirRuntime)s/bin/astyle-osx
|
||||
JadRetro = %(DirRuntime)s/bin/jadretro.jar
|
||||
Fernflower = %(DirRuntime)s/bin/fernflower.jar
|
||||
Exceptor = %(DirRuntime)s/bin/mcinjector.jar
|
||||
SpecialSource = %(DirRuntime)s/bin/specialsource.jar
|
||||
CmdPatch = %s -p1 -u -i {patchfile} -d {srcdir}
|
||||
CmdJad = %s -b -d {outdir} -dead -o -r -s .java -stat -ff {classes}
|
||||
CmdAStyle = %s --suffix=none --quiet --options={conffile} {classes}
|
||||
CmdRG = %s -cp "{classpath}" RetroGuard -searge {conffile}
|
||||
CmdRGReobf = %s -cp "{classpath}" RetroGuard -notch {conffile}
|
||||
CmdSS = %s -cp "{classpath}" -jar %s -i {injar} -o {outjar} -m {mapfile} --kill-source
|
||||
CmdSSReobf = %s -cp "{classpath}" -jar %s -i {injar} -o {outjar} -r -m {mapfile} -d {identifier} -e %s
|
||||
CmdJadretro = %s -jar %s {targetdir}
|
||||
CmdFernflower = %s -jar %s -din=1 -rbr=0 -dgs=1 -asc=1 -log=WARN {indir} {outdir}
|
||||
CmdExceptor = %s -jar %s --jarIn {input} --jarOut {output} --mapIn {conf} --log {log} --jsonIn {json} --applyMarkers --generateParams
|
||||
CmdExceptorDry = %s -jar %s --jarIn {input} --mapIn {conf} --log {log} --jsonIn {json} --applyMarkers
|
||||
CmdRecomp = %s -Xlint:-options -deprecation -g -source 1.6 -target 1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs}
|
||||
CmdRecompScala = %s -encoding UTF-8 -deprecation -target:jvm-1.6 -classpath "{classpath}" -sourcepath {sourcepath} -d {outpath} {pkgs}
|
||||
CmdStartSrv = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" net.minecraft.server.MinecraftServer
|
||||
CmdStartClt = %s -Xincgc -Xms1024M -Xmx1024M -cp "{classpath}" -Djava.library.path={natives} Start
|
||||
@@ -1,114 +0,0 @@
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Arrays;
|
||||
|
||||
import joptsimple.ArgumentAcceptingOptionSpec;
|
||||
import joptsimple.OptionParser;
|
||||
import joptsimple.OptionSet;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.main.Main;
|
||||
|
||||
public class Start
|
||||
{
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
int userIndex = -1;
|
||||
int passIndex = -1;
|
||||
int sessIndex = -1;
|
||||
int versIndex = -1;
|
||||
|
||||
for( int x = 0; x < args.length; x++)
|
||||
{
|
||||
if (args[x].equals("--username")) userIndex = x + 1;
|
||||
else if (args[x].equals("--password")) passIndex = x + 1;
|
||||
else if (args[x].equals("--session")) sessIndex = x + 1;
|
||||
else if (args[x].equals("--version")) versIndex = x + 1;
|
||||
}
|
||||
|
||||
if (userIndex != 0-1 && passIndex != -1 && sessIndex == -1)
|
||||
{
|
||||
String[] session = getSession(args[userIndex], args[passIndex]);
|
||||
if (session != null)
|
||||
{
|
||||
args[userIndex] = session[0];
|
||||
args = concat(args, new String[]{"--session", session[1]});
|
||||
}
|
||||
}
|
||||
|
||||
//Kill the password if its there so it isn't printed to the console.
|
||||
if (passIndex != -1)
|
||||
{
|
||||
args[passIndex-1] = "no_password_for_joo";
|
||||
args[passIndex] = "no_password_for_joo";
|
||||
}
|
||||
|
||||
if (versIndex == -1)
|
||||
{
|
||||
args = concat(args, new String[]{ "--version", "fml_mcp" });
|
||||
}
|
||||
|
||||
Main.main(args);
|
||||
}
|
||||
|
||||
private static String[] getSession(String username, String password) throws UnsupportedEncodingException
|
||||
{
|
||||
String parameters = "http://login.minecraft.net/?user=" + URLEncoder.encode(username, "UTF-8") +
|
||||
"&password=" + URLEncoder.encode(password, "UTF-8") +
|
||||
"&version=" + 13;
|
||||
String result = openUrl(parameters);
|
||||
|
||||
if (result == null)
|
||||
{
|
||||
System.out.println("Can't connect to minecraft.net");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!result.contains(":"))
|
||||
{
|
||||
System.out.println("Login Failed: " + result);
|
||||
return null;
|
||||
}
|
||||
String[] values = result.split(":");
|
||||
return new String[]{ values[2].trim(), values[3].trim() };
|
||||
}
|
||||
|
||||
private static String openUrl(String addr)
|
||||
{
|
||||
try
|
||||
{
|
||||
URL url = new URL(addr);
|
||||
java.io.InputStream is;
|
||||
is = url.openConnection().getInputStream();
|
||||
java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(is));
|
||||
String buf = "";
|
||||
String line = null;
|
||||
|
||||
while ((line = reader.readLine()) != null)
|
||||
{
|
||||
buf += "\n" + line;
|
||||
}
|
||||
|
||||
reader.close();
|
||||
return buf;
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static <T> T[] concat(T[] first, T[] second)
|
||||
{
|
||||
T[] result = Arrays.copyOf(first, first.length + second.length);
|
||||
System.arraycopy(second, 0, result, first.length, second.length);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\Minecraft.java minecraft_patched\net\minecraft\client\Minecraft.java
|
||||
--- minecraft\net\minecraft\client\Minecraft.java
|
||||
+++ minecraft_patched\net\minecraft\client\Minecraft.java
|
||||
@@ -695,9 +695,7 @@
|
||||
|
||||
while(true) {
|
||||
try {
|
||||
- if(!this.field_71425_J) {
|
||||
- break;
|
||||
- }
|
||||
+ while(this.field_71425_J) {
|
||||
|
||||
if(!this.field_71434_R || this.field_71433_S == null) {
|
||||
try {
|
||||
@@ -711,6 +709,7 @@
|
||||
}
|
||||
|
||||
this.func_71377_b(this.field_71433_S);
|
||||
+ }
|
||||
} catch (MinecraftError var12) {
|
||||
break;
|
||||
} catch (ReportedException var13) {
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\Minecraft.java minecraft_patched\net\minecraft\client\Minecraft.java
|
||||
--- minecraft\net\minecraft\client\Minecraft.java
|
||||
+++ minecraft_patched\net\minecraft\client\Minecraft.java
|
||||
@@ -326,7 +326,7 @@
|
||||
|
||||
while(true) {
|
||||
try {
|
||||
- if(this.field_71425_J) {
|
||||
+ while(this.field_71425_J) {
|
||||
if(!this.field_71434_R || this.field_71433_S == null) {
|
||||
try {
|
||||
this.func_71411_J();
|
||||
@@ -1,21 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\gui\FontRenderer.java minecraft_patched\net\minecraft\client\gui\FontRenderer.java
|
||||
--- minecraft\net\minecraft\client\gui\FontRenderer.java
|
||||
+++ minecraft_patched\net\minecraft\client\gui\FontRenderer.java
|
||||
@@ -592,8 +592,6 @@
|
||||
case 10:
|
||||
--var5;
|
||||
break;
|
||||
- case 32:
|
||||
- var6 = var5;
|
||||
case 167:
|
||||
if(var5 < var3 - 1) {
|
||||
++var5;
|
||||
@@ -607,6 +605,8 @@
|
||||
}
|
||||
}
|
||||
break;
|
||||
+ case 32:
|
||||
+ var6 = var5;
|
||||
default:
|
||||
var4 += this.func_78263_a(var8);
|
||||
if(var7) {
|
||||
-37
@@ -1,37 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\network\NetHandlerPlayClient.java minecraft_patched\net\minecraft\client\network\NetHandlerPlayClient.java
|
||||
--- minecraft\net\minecraft\client\network\NetHandlerPlayClient.java
|
||||
+++ minecraft_patched\net\minecraft\client\network\NetHandlerPlayClient.java
|
||||
@@ -1275,14 +1275,14 @@
|
||||
private static final String __OBFID = "CL_00002622";
|
||||
|
||||
public void func_73878_a(boolean p_73878_1_, int p_73878_2_) {
|
||||
- NetHandlerPlayClient.thisxxx.field_147299_f = Minecraft.func_71410_x();
|
||||
+ NetHandlerPlayClient.this.field_147299_f = Minecraft.func_71410_x();
|
||||
if(p_73878_1_) {
|
||||
- if(NetHandlerPlayClient.thisxx.field_147299_f.func_147104_D() != null) {
|
||||
- NetHandlerPlayClient.thisxxxxxxx.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.ENABLED);
|
||||
+ if(NetHandlerPlayClient.this.field_147299_f.func_147104_D() != null) {
|
||||
+ NetHandlerPlayClient.this.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.ENABLED);
|
||||
}
|
||||
|
||||
NetHandlerPlayClient.this.field_147302_e.func_179290_a(new C19PacketResourcePackStatus(var3, C19PacketResourcePackStatus.Action.ACCEPTED));
|
||||
- Futures.addCallback(NetHandlerPlayClient.thisx.field_147299_f.func_110438_M().func_180601_a(var2, var3), new FutureCallback() {
|
||||
+ Futures.addCallback(NetHandlerPlayClient.this.field_147299_f.func_110438_M().func_180601_a(var2, var3), new FutureCallback() {
|
||||
|
||||
private static final String __OBFID = "CL_00002621";
|
||||
|
||||
@@ -1294,11 +1294,11 @@
|
||||
}
|
||||
});
|
||||
} else {
|
||||
- if(NetHandlerPlayClient.thisxxxx.field_147299_f.func_147104_D() != null) {
|
||||
- NetHandlerPlayClient.thisxxxxx.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.DISABLED);
|
||||
+ if(NetHandlerPlayClient.this.field_147299_f.func_147104_D() != null) {
|
||||
+ NetHandlerPlayClient.this.field_147299_f.func_147104_D().func_152584_a(ServerData.ServerResourceMode.DISABLED);
|
||||
}
|
||||
|
||||
- NetHandlerPlayClient.thisxxxxxx.field_147302_e.func_179290_a(new C19PacketResourcePackStatus(var3x, C19PacketResourcePackStatus.Action.DECLINED));
|
||||
+ NetHandlerPlayClient.this.field_147302_e.func_179290_a(new C19PacketResourcePackStatus(var3, C19PacketResourcePackStatus.Action.DECLINED));
|
||||
}
|
||||
|
||||
ServerList.func_147414_b(NetHandlerPlayClient.this.field_147299_f.func_147104_D());
|
||||
@@ -1,13 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\particle\EffectRenderer.java minecraft_patched\net\minecraft\client\particle\EffectRenderer.java
|
||||
--- minecraft\net\minecraft\client\particle\EffectRenderer.java
|
||||
+++ minecraft_patched\net\minecraft\client\particle\EffectRenderer.java
|
||||
@@ -242,7 +242,8 @@
|
||||
GlStateManager.func_179112_b(770, 771);
|
||||
GlStateManager.func_179092_a(516, 0.003921569F);
|
||||
|
||||
- for(final int var8 = 0; var8 < 3; ++var8) {
|
||||
+ for(int var8_nf = 0; var8_nf < 3; ++var8_nf) {
|
||||
+ final int var8 = var8_nf;
|
||||
for(int var9 = 0; var9 < 2; ++var9) {
|
||||
if(!this.field_78876_b[var8][var9].isEmpty()) {
|
||||
switch(var9) {
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java minecraft_patched\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java
|
||||
--- minecraft\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java
|
||||
+++ minecraft_patched\net\minecraft\client\renderer\block\model\ModelBlockDefinition.java
|
||||
@@ -82,7 +82,7 @@
|
||||
public ModelBlockDefinition func_178336_a(JsonElement p_178336_1_, Type p_178336_2_, JsonDeserializationContext p_178336_3_) {
|
||||
JsonObject var4 = p_178336_1_.getAsJsonObject();
|
||||
List var5 = this.func_178334_a(p_178336_3_, var4);
|
||||
- return new ModelBlockDefinition(var5);
|
||||
+ return new ModelBlockDefinition((Collection)var5);
|
||||
}
|
||||
|
||||
protected List func_178334_a(JsonDeserializationContext p_178334_1_, JsonObject p_178334_2_) {
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\renderer\texture\TextureManager.java minecraft_patched\net\minecraft\client\renderer\texture\TextureManager.java
|
||||
--- minecraft\net\minecraft\client\renderer\texture\TextureManager.java
|
||||
+++ minecraft_patched\net\minecraft\client\renderer\texture\TextureManager.java
|
||||
@@ -57,13 +57,14 @@
|
||||
|
||||
public boolean func_110579_a(ResourceLocation p_110579_1_, final ITextureObject p_110579_2_) {
|
||||
boolean var3 = true;
|
||||
-
|
||||
+ ITextureObject p_110579_2_2 = p_110579_2_;
|
||||
+
|
||||
try {
|
||||
((ITextureObject)p_110579_2_).func_110551_a(this.field_110582_d);
|
||||
} catch (IOException var8) {
|
||||
field_147646_a.warn("Failed to load texture: " + p_110579_1_, var8);
|
||||
- p_110579_2_ = TextureUtil.field_111001_a;
|
||||
- this.field_110585_a.put(p_110579_1_, p_110579_2_);
|
||||
+ p_110579_2_2 = TextureUtil.field_111001_a;
|
||||
+ this.field_110585_a.put(p_110579_1_, p_110579_2_2);
|
||||
var3 = false;
|
||||
} catch (Throwable var9) {
|
||||
CrashReport var5 = CrashReport.func_85055_a(var9, "Registering texture");
|
||||
@@ -80,7 +81,7 @@
|
||||
throw new ReportedException(var5);
|
||||
}
|
||||
|
||||
- this.field_110585_a.put(p_110579_1_, p_110579_2_);
|
||||
+ this.field_110585_a.put(p_110579_1_, p_110579_2_2);
|
||||
return var3;
|
||||
}
|
||||
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\client\resources\FolderResourcePack.java minecraft_patched\net\minecraft\client\resources\FolderResourcePack.java
|
||||
--- minecraft\net\minecraft\client\resources\FolderResourcePack.java
|
||||
+++ minecraft_patched\net\minecraft\client\resources\FolderResourcePack.java
|
||||
@@ -31,7 +31,7 @@
|
||||
HashSet var1 = Sets.newHashSet();
|
||||
File var2 = new File(this.field_110597_b, "assets/");
|
||||
if(var2.isDirectory()) {
|
||||
- File[] var3 = var2.listFiles(DirectoryFileFilter.DIRECTORY);
|
||||
+ File[] var3 = var2.listFiles((java.io.FileFilter)DirectoryFileFilter.DIRECTORY);
|
||||
int var4 = var3.length;
|
||||
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
@@ -1,100 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\command\PlayerSelector.java minecraft_patched\net\minecraft\command\PlayerSelector.java
|
||||
--- minecraft\net\minecraft\command\PlayerSelector.java
|
||||
+++ minecraft_patched\net\minecraft\command\PlayerSelector.java
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
private static List func_179663_a(Map p_179663_0_, String p_179663_1_) {
|
||||
ArrayList var2 = Lists.newArrayList();
|
||||
- final String var3 = func_179651_b(p_179663_0_, "type");
|
||||
+ String var3 = func_179651_b(p_179663_0_, "type");
|
||||
final boolean var4 = var3 != null && var3.startsWith("!");
|
||||
if(var4) {
|
||||
var3 = var3.substring(1);
|
||||
@@ -159,12 +159,13 @@
|
||||
});
|
||||
}
|
||||
} else {
|
||||
+ final String var3_f = var3;
|
||||
var2.add(new Predicate() {
|
||||
|
||||
private static final String __OBFID = "CL_00002362";
|
||||
|
||||
public boolean func_179613_a(Entity p_179613_1_) {
|
||||
- return EntityList.func_180123_a(p_179613_1_, var3) != var4;
|
||||
+ return EntityList.func_180123_a(p_179613_1_, var3_f) != var4;
|
||||
}
|
||||
// $FF: synthetic method
|
||||
public boolean apply(Object p_apply_1_) {
|
||||
@@ -231,13 +232,14 @@
|
||||
|
||||
private static List func_179659_d(Map p_179659_0_) {
|
||||
ArrayList var1 = Lists.newArrayList();
|
||||
- final String var2 = func_179651_b(p_179659_0_, "team");
|
||||
+ String var2 = func_179651_b(p_179659_0_, "team");
|
||||
final boolean var3 = var2 != null && var2.startsWith("!");
|
||||
if(var3) {
|
||||
var2 = var2.substring(1);
|
||||
}
|
||||
|
||||
if(var2 != null) {
|
||||
+ final String var2_f = var2;
|
||||
var1.add(new Predicate() {
|
||||
|
||||
private static final String __OBFID = "CL_00002355";
|
||||
@@ -249,7 +251,7 @@
|
||||
EntityLivingBase var2x = (EntityLivingBase)p_179621_1_;
|
||||
Team var3x = var2x.func_96124_cp();
|
||||
String var4 = var3x == null?"":var3x.func_96661_b();
|
||||
- return var4.equals(var2) != var3;
|
||||
+ return var4.equals(var2_f) != var3;
|
||||
}
|
||||
}
|
||||
// $FF: synthetic method
|
||||
@@ -321,19 +323,20 @@
|
||||
|
||||
private static List func_179647_f(Map p_179647_0_) {
|
||||
ArrayList var1 = Lists.newArrayList();
|
||||
- final String var2 = func_179651_b(p_179647_0_, "name");
|
||||
+ String var2 = func_179651_b(p_179647_0_, "name");
|
||||
final boolean var3 = var2 != null && var2.startsWith("!");
|
||||
if(var3) {
|
||||
var2 = var2.substring(1);
|
||||
}
|
||||
|
||||
if(var2 != null) {
|
||||
+ final String var2_f = var2;
|
||||
var1.add(new Predicate() {
|
||||
|
||||
private static final String __OBFID = "CL_00002353";
|
||||
|
||||
public boolean func_179600_a(Entity p_179600_1_) {
|
||||
- return p_179600_1_.func_70005_c_().equals(var2) != var3;
|
||||
+ return p_179600_1_.func_70005_c_().equals(var2_f) != var3;
|
||||
}
|
||||
// $FF: synthetic method
|
||||
public boolean apply(Object p_apply_1_) {
|
||||
@@ -372,11 +375,9 @@
|
||||
|
||||
private static List func_179662_g(Map p_179662_0_) {
|
||||
ArrayList var1 = Lists.newArrayList();
|
||||
- final int var2;
|
||||
- final int var3;
|
||||
if(p_179662_0_.containsKey("rym") || p_179662_0_.containsKey("ry")) {
|
||||
- var2 = func_179650_a(func_179653_a(p_179662_0_, "rym", 0));
|
||||
- var3 = func_179650_a(func_179653_a(p_179662_0_, "ry", 359));
|
||||
+ final int var2 = func_179650_a(func_179653_a(p_179662_0_, "rym", 0));
|
||||
+ final int var3 = func_179650_a(func_179653_a(p_179662_0_, "ry", 359));
|
||||
var1.add(new Predicate() {
|
||||
|
||||
private static final String __OBFID = "CL_00002351";
|
||||
@@ -393,8 +394,8 @@
|
||||
}
|
||||
|
||||
if(p_179662_0_.containsKey("rxm") || p_179662_0_.containsKey("rx")) {
|
||||
- var2 = func_179650_a(func_179653_a(p_179662_0_, "rxm", 0));
|
||||
- var3 = func_179650_a(func_179653_a(p_179662_0_, "rx", 359));
|
||||
+ final int var2 = func_179650_a(func_179653_a(p_179662_0_, "rxm", 0));
|
||||
+ final int var3 = func_179650_a(func_179653_a(p_179662_0_, "rx", 359));
|
||||
var1.add(new Predicate() {
|
||||
|
||||
private static final String __OBFID = "CL_00002361";
|
||||
@@ -1,34 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\inventory\ContainerPlayer.java minecraft_patched\net\minecraft\inventory\ContainerPlayer.java
|
||||
--- minecraft\net\minecraft\inventory\ContainerPlayer.java
|
||||
+++ minecraft_patched\net\minecraft\inventory\ContainerPlayer.java
|
||||
@@ -28,7 +28,7 @@
|
||||
this.field_82862_h = p_i1819_3_;
|
||||
this.func_75146_a(new SlotCrafting(p_i1819_1_.field_70458_d, this.field_75181_e, this.field_75179_f, 0, 144, 36));
|
||||
|
||||
- final int var4;
|
||||
+ int var4;
|
||||
int var5;
|
||||
for(var4 = 0; var4 < 2; ++var4) {
|
||||
for(var5 = 0; var5 < 2; ++var5) {
|
||||
@@ -37,6 +37,7 @@
|
||||
}
|
||||
|
||||
for(var4 = 0; var4 < 4; ++var4) {
|
||||
+ final int var44 = var4;
|
||||
this.func_75146_a(new Slot(p_i1819_1_, p_i1819_1_.func_70302_i_() - 1 - var4, 8, 8 + var4 * 18) {
|
||||
|
||||
private static final String __OBFID = "CL_00001755";
|
||||
@@ -45,11 +46,11 @@
|
||||
return 1;
|
||||
}
|
||||
public boolean func_75214_a(ItemStack p_75214_1_) {
|
||||
- return p_75214_1_ == null?false:(p_75214_1_.func_77973_b() instanceof ItemArmor?((ItemArmor)p_75214_1_.func_77973_b()).field_77881_a == var4:(p_75214_1_.func_77973_b() != Item.func_150898_a(Blocks.field_150423_aK) && p_75214_1_.func_77973_b() != Items.field_151144_bL?false:var4 == 0));
|
||||
+ return p_75214_1_ == null?false:(p_75214_1_.func_77973_b() instanceof ItemArmor?((ItemArmor)p_75214_1_.func_77973_b()).field_77881_a == var44:(p_75214_1_.func_77973_b() != Item.func_150898_a(Blocks.field_150423_aK) && p_75214_1_.func_77973_b() != Items.field_151144_bL?false:var44 == 0));
|
||||
}
|
||||
@SideOnly(Side.CLIENT)
|
||||
public String func_178171_c() {
|
||||
- return ItemArmor.field_94603_a[var4];
|
||||
+ return ItemArmor.field_94603_a[var44];
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\network\PacketBuffer.java minecraft_patched\net\minecraft\network\PacketBuffer.java
|
||||
--- minecraft\net\minecraft\network\PacketBuffer.java
|
||||
+++ minecraft_patched\net\minecraft\network\PacketBuffer.java
|
||||
@@ -799,10 +799,4 @@
|
||||
public boolean release(int p_release_1_) {
|
||||
return this.field_150794_a.release(p_release_1_);
|
||||
}
|
||||
-
|
||||
- // $FF: synthetic method
|
||||
- // $FF: bridge method
|
||||
- public int compareTo(Object p_compareTo_1_) {
|
||||
- return this.compareTo((ByteBuf)p_compareTo_1_);
|
||||
- }
|
||||
}
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\server\network\NetHandlerLoginServer.java minecraft_patched\net\minecraft\server\network\NetHandlerLoginServer.java
|
||||
--- minecraft\net\minecraft\server\network\NetHandlerLoginServer.java
|
||||
+++ minecraft_patched\net\minecraft\server\network\NetHandlerLoginServer.java
|
||||
@@ -95,10 +95,6 @@
|
||||
public void operationComplete(ChannelFuture p_operationComplete_1_) {
|
||||
NetHandlerLoginServer.this.field_147333_a.func_179289_a(NetHandlerLoginServer.this.field_147327_f.func_175577_aI());
|
||||
}
|
||||
- // $FF: synthetic method
|
||||
- public void operationComplete(Future p_operationComplete_1_) {
|
||||
- this.operationComplete((ChannelFuture)p_operationComplete_1_);
|
||||
- }
|
||||
}, new GenericFutureListener[0]);
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\util\BlockPos.java minecraft_patched\net\minecraft\util\BlockPos.java
|
||||
--- minecraft\net\minecraft\util\BlockPos.java
|
||||
+++ minecraft_patched\net\minecraft\util\BlockPos.java
|
||||
@@ -194,7 +194,7 @@
|
||||
|
||||
protected BlockPos.MutableBlockPos func_179313_a() {
|
||||
if(this.field_179314_b == null) {
|
||||
- this.field_179314_b = new BlockPos.MutableBlockPos(var2xxx.func_177958_n(), var2.func_177956_o(), var2x.func_177952_p(), null);
|
||||
+ this.field_179314_b = new BlockPos.MutableBlockPos(var2.func_177958_n(), var2.func_177956_o(), var2.func_177952_p(), null);
|
||||
return this.field_179314_b;
|
||||
} else if(this.field_179314_b.equals(var3)) {
|
||||
return (BlockPos.MutableBlockPos)this.endOfData();
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
diff -r -U 3 minecraft\net\minecraft\world\storage\ThreadedFileIOBase.java minecraft_patched\net\minecraft\world\storage\ThreadedFileIOBase.java
|
||||
--- minecraft\net\minecraft\world\storage\ThreadedFileIOBase.java
|
||||
+++ minecraft_patched\net\minecraft\world\storage\ThreadedFileIOBase.java
|
||||
@@ -25,6 +25,7 @@
|
||||
}
|
||||
|
||||
public void run() {
|
||||
+ while(true)
|
||||
this.func_75736_b();
|
||||
}
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
[VERSION]
|
||||
MCPVersion = 9.10
|
||||
ClientVersion = 1.8
|
||||
ServerVersion = 1.8
|
||||
Binary file not shown.
BIN
Binary file not shown.
Vendored
-164
@@ -1,164 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
||||
if $cygwin ; then
|
||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
fi
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >&-
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >&-
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||
Vendored
-90
@@ -1,90 +0,0 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
||||
@@ -1,37 +0,0 @@
|
||||
-------------------------------------------
|
||||
Source installation information for modders
|
||||
-------------------------------------------
|
||||
This code follows the Minecraft Forge installation methodology. It will apply
|
||||
some small patches to the vanilla MCP source code, giving you and it access
|
||||
to some of the data and functions you need to build a successful mod.
|
||||
|
||||
Note also that the patches are built against "unrenamed" MCP source code (aka
|
||||
srgnames) - this means that you will not be able to read them directly against
|
||||
normal code.
|
||||
|
||||
Source pack installation information:
|
||||
|
||||
Standalone source installation
|
||||
==============================
|
||||
|
||||
To install this source code for development purposes, extract this zip file.
|
||||
It ships with a demonstration mod. Run 'gradlew setupDevWorkspace' to create
|
||||
a gradle environment primed with FML. Run 'gradlew eclipse' or 'gradlew idea' to
|
||||
create an IDE workspace of your choice.
|
||||
Refer to ForgeGradle for more information about the gradle environment
|
||||
Note: On macs or linux you run the './gradlew.sh' instead of 'gradlew'
|
||||
|
||||
Forge source installation
|
||||
=========================
|
||||
MinecraftForge ships with this code and installs it as part of the forge
|
||||
installation process, no further action is required on your part.
|
||||
|
||||
For reference this is version @MAJOR@.@MINOR@.@REV@.@BUILD@ of FML
|
||||
for Minecraft version @MCVERSION@.
|
||||
|
||||
LexManos' Install Video
|
||||
=======================
|
||||
https://www.youtube.com/watch?v=8VEdtQLuLO0&feature=youtu.be
|
||||
|
||||
For more details update more often refer to the Forge Forums:
|
||||
http://www.minecraftforge.net/forum/index.php/topic,14048.0.html
|
||||
Binary file not shown.
@@ -1,9 +0,0 @@
|
||||
^org/bouncycastle
|
||||
^org/apache
|
||||
^com/google
|
||||
^com/mojang/authlib
|
||||
^com/mojang/util
|
||||
^gnu/trove
|
||||
^io/netty
|
||||
^javax/annotation
|
||||
^argo
|
||||
@@ -1,24 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/block/Block.java
|
||||
+++ ../src-work/minecraft/net/minecraft/block/Block.java
|
||||
@@ -39,8 +39,9 @@
|
||||
public class Block
|
||||
{
|
||||
private static final ResourceLocation field_176230_a = new ResourceLocation("air");
|
||||
- public static final RegistryNamespacedDefaultedByKey field_149771_c = new RegistryNamespacedDefaultedByKey(field_176230_a);
|
||||
- public static final ObjectIntIdentityMap field_176229_d = new ObjectIntIdentityMap();
|
||||
+ public static final RegistryNamespacedDefaultedByKey field_149771_c = net.minecraftforge.fml.common.registry.GameData.getBlockRegistry();
|
||||
+ @Deprecated //Modders: DO NOT use this! Use GameRegistry
|
||||
+ public static final ObjectIntIdentityMap field_176229_d = net.minecraftforge.fml.common.registry.GameData.getBlockStateIDMap();
|
||||
private CreativeTabs field_149772_a;
|
||||
public static final Block.SoundType field_149769_e = new Block.SoundType("stone", 1.0F, 1.0F);
|
||||
public static final Block.SoundType field_149766_f = new Block.SoundType("wood", 1.0F, 1.0F);
|
||||
@@ -124,6 +125,9 @@
|
||||
private String field_149770_b;
|
||||
private static final String __OBFID = "CL_00000199";
|
||||
|
||||
+ public final net.minecraftforge.fml.common.registry.RegistryDelegate<Block> delegate =
|
||||
+ ((net.minecraftforge.fml.common.registry.FMLControlledNamespacedRegistry)field_149771_c).getDelegate(this, Block.class);
|
||||
+
|
||||
public static int func_149682_b(Block p_149682_0_)
|
||||
{
|
||||
return field_149771_c.func_148757_b(p_149682_0_);
|
||||
@@ -1,197 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/Minecraft.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/Minecraft.java
|
||||
@@ -410,10 +410,10 @@
|
||||
this.field_110451_am = new SimpleReloadableResourceManager(this.field_110452_an);
|
||||
this.field_135017_as = new LanguageManager(this.field_110452_an, this.field_71474_y.field_74363_ab);
|
||||
this.field_110451_am.func_110542_a(this.field_135017_as);
|
||||
- this.func_110436_a();
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().beginMinecraftLoading(this, this.field_110449_ao, this.field_110451_am);
|
||||
this.field_71446_o = new TextureManager(this.field_110451_am);
|
||||
this.field_110451_am.func_110542_a(this.field_71446_o);
|
||||
- this.func_180510_a(this.field_71446_o);
|
||||
+ net.minecraftforge.fml.client.SplashProgress.drawVanillaScreen(this.field_71446_o);
|
||||
this.func_175595_al();
|
||||
this.field_152350_aA = new SkinManager(this.field_71446_o, new File(this.field_110446_Y, "skins"), this.field_152355_az);
|
||||
this.field_71469_aa = new AnvilSaveConverter(new File(this.field_71412_D, "saves"));
|
||||
@@ -449,6 +449,8 @@
|
||||
}
|
||||
});
|
||||
this.field_71417_B = new MouseHelper();
|
||||
+ net.minecraftforge.fml.common.ProgressManager.ProgressBar bar= net.minecraftforge.fml.common.ProgressManager.push("Rendering Setup", 9);
|
||||
+ bar.step("GL Setup");
|
||||
this.func_71361_d("Pre startup");
|
||||
GlStateManager.func_179098_w();
|
||||
GlStateManager.func_179103_j(7425);
|
||||
@@ -462,17 +464,21 @@
|
||||
GlStateManager.func_179096_D();
|
||||
GlStateManager.func_179128_n(5888);
|
||||
this.func_71361_d("Startup");
|
||||
+ bar.step("Loading Texture Map");
|
||||
this.field_147128_au = new TextureMap("textures");
|
||||
this.field_147128_au.func_147633_a(this.field_71474_y.field_151442_I);
|
||||
this.field_71446_o.func_110580_a(TextureMap.field_110575_b, this.field_147128_au);
|
||||
this.field_71446_o.func_110577_a(TextureMap.field_110575_b);
|
||||
this.field_147128_au.func_174937_a(false, this.field_71474_y.field_151442_I > 0);
|
||||
+ bar.step("Loading Model Manager");
|
||||
this.field_175617_aL = new ModelManager(this.field_147128_au);
|
||||
this.field_110451_am.func_110542_a(this.field_175617_aL);
|
||||
+ bar.step("Loading Item Renderer");
|
||||
this.field_175621_X = new RenderItem(this.field_71446_o, this.field_175617_aL);
|
||||
this.field_175616_W = new RenderManager(this.field_71446_o, this.field_175621_X);
|
||||
this.field_175620_Y = new ItemRenderer(this);
|
||||
this.field_110451_am.func_110542_a(this.field_175621_X);
|
||||
+ bar.step("Loading Entity Renderer");
|
||||
this.field_71460_t = new EntityRenderer(this, this.field_110451_am);
|
||||
this.field_110451_am.func_110542_a(this.field_71460_t);
|
||||
this.field_175618_aM = new BlockRendererDispatcher(this.field_175617_aL.func_174954_c(), this.field_71474_y);
|
||||
@@ -482,19 +488,21 @@
|
||||
this.field_71458_u = new GuiAchievement(this);
|
||||
GlStateManager.func_179083_b(0, 0, this.field_71443_c, this.field_71440_d);
|
||||
this.field_71452_i = new EffectRenderer(this.field_71441_e, this.field_71446_o);
|
||||
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().finishMinecraftLoading();
|
||||
this.func_71361_d("Post startup");
|
||||
this.field_71456_v = new GuiIngame(this);
|
||||
|
||||
if (this.field_71475_ae != null)
|
||||
{
|
||||
- this.func_147108_a(new GuiConnecting(new GuiMainMenu(), this, this.field_71475_ae, this.field_71477_af));
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().connectToServerAtStartup(this.field_71475_ae, this.field_71477_af);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.func_147108_a(new GuiMainMenu());
|
||||
}
|
||||
|
||||
- this.field_71446_o.func_147645_c(this.field_152354_ay);
|
||||
+ net.minecraftforge.fml.client.SplashProgress.clearVanillaResources(field_71446_o, field_152354_ay);
|
||||
this.field_152354_ay = null;
|
||||
this.field_71461_s = new LoadingScreenRenderer(this);
|
||||
|
||||
@@ -503,6 +511,7 @@
|
||||
this.func_71352_k();
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().onInitializationComplete();
|
||||
try
|
||||
{
|
||||
Display.setVSyncEnabled(this.field_71474_y.field_74352_v);
|
||||
@@ -681,21 +690,23 @@
|
||||
File file2 = new File(file1, "crash-" + (new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss")).format(new Date()) + "-client.txt");
|
||||
Bootstrap.func_179870_a(p_71377_1_.func_71502_e());
|
||||
|
||||
+ int retVal;
|
||||
if (p_71377_1_.func_71497_f() != null)
|
||||
{
|
||||
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + p_71377_1_.func_71497_f());
|
||||
- System.exit(-1);
|
||||
+ retVal = -1;
|
||||
}
|
||||
else if (p_71377_1_.func_147149_a(file2))
|
||||
{
|
||||
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + file2.getAbsolutePath());
|
||||
- System.exit(-1);
|
||||
+ retVal = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Bootstrap.func_179870_a("#@?@# Game crashed! Crash report could not be saved. #@?@#");
|
||||
- System.exit(-2);
|
||||
+ retVal = -2;
|
||||
}
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleExit(retVal);
|
||||
}
|
||||
|
||||
public boolean func_152349_b()
|
||||
@@ -999,7 +1010,7 @@
|
||||
{
|
||||
while (!this.field_152351_aB.isEmpty())
|
||||
{
|
||||
- ((FutureTask)this.field_152351_aB.poll()).run();
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.callFuture(((FutureTask)this.field_152351_aB.poll()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1034,9 +1045,11 @@
|
||||
|
||||
if (!this.field_71454_w)
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onRenderTickStart(this.field_71428_T.field_74281_c);
|
||||
this.field_71424_I.func_76318_c("gameRenderer");
|
||||
this.field_71460_t.func_78480_b(this.field_71428_T.field_74281_c);
|
||||
this.field_71424_I.func_76319_b();
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onRenderTickEnd(this.field_71428_T.field_74281_c);
|
||||
}
|
||||
|
||||
this.field_71424_I.func_76319_b();
|
||||
@@ -1591,6 +1604,8 @@
|
||||
--this.field_71467_ac;
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPreClientTick();
|
||||
+
|
||||
this.field_71424_I.func_76320_a("gui");
|
||||
|
||||
if (!this.field_71445_n)
|
||||
@@ -1744,6 +1759,7 @@
|
||||
this.field_71462_r.func_146274_d();
|
||||
}
|
||||
}
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireMouseInput();
|
||||
}
|
||||
|
||||
if (this.field_71429_W > 0)
|
||||
@@ -1920,6 +1936,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().fireKeyInput();
|
||||
}
|
||||
|
||||
for (i = 0; i < 9; ++i)
|
||||
@@ -2120,12 +2137,15 @@
|
||||
this.field_71453_ak.func_74428_b();
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPostClientTick();
|
||||
+
|
||||
this.field_71424_I.func_76319_b();
|
||||
this.field_71423_H = func_71386_F();
|
||||
}
|
||||
|
||||
public void func_71371_a(String p_71371_1_, String p_71371_2_, WorldSettings p_71371_3_)
|
||||
{
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().startIntegratedServer(p_71371_1_, p_71371_2_, p_71371_3_);
|
||||
this.func_71403_a((WorldClient)null);
|
||||
System.gc();
|
||||
ISaveHandler isavehandler = this.field_71469_aa.func_75804_a(p_71371_1_, false);
|
||||
@@ -2161,6 +2181,12 @@
|
||||
|
||||
while (!this.field_71437_Z.func_71200_ad())
|
||||
{
|
||||
+ if (!net.minecraftforge.fml.common.StartupQuery.check())
|
||||
+ {
|
||||
+ func_71403_a(null);
|
||||
+ func_147108_a(null);
|
||||
+ return;
|
||||
+ }
|
||||
String s2 = this.field_71437_Z.func_71195_b_();
|
||||
|
||||
if (s2 != null)
|
||||
@@ -2186,7 +2212,7 @@
|
||||
SocketAddress socketaddress = this.field_71437_Z.func_147137_ag().func_151270_a();
|
||||
NetworkManager networkmanager = NetworkManager.func_150722_a(socketaddress);
|
||||
networkmanager.func_150719_a(new NetHandlerLoginClient(networkmanager, this, (GuiScreen)null));
|
||||
- networkmanager.func_179290_a(new C00Handshake(47, socketaddress.toString(), 0, EnumConnectionState.LOGIN));
|
||||
+ networkmanager.func_179290_a(new C00Handshake(47, socketaddress.toString(), 0, EnumConnectionState.LOGIN, true));
|
||||
networkmanager.func_179290_a(new C00PacketLoginStart(this.func_110432_I().func_148256_e()));
|
||||
this.field_71453_ak = networkmanager;
|
||||
}
|
||||
@@ -2237,6 +2263,7 @@
|
||||
|
||||
this.func_71351_a((ServerData)null);
|
||||
this.field_71455_al = false;
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().handleClientWorldClosing(this.field_71441_e);
|
||||
}
|
||||
|
||||
this.field_147127_av.func_147690_c();
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/gui/GuiCreateWorld.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiCreateWorld.java
|
||||
@@ -213,6 +213,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ WorldType.field_77139_a[this.field_146331_K].onGUICreateWorldPress();
|
||||
+
|
||||
WorldSettings.GameType gametype = WorldSettings.GameType.func_77142_a(this.field_146342_r);
|
||||
WorldSettings worldsettings = new WorldSettings(i, gametype, this.field_146341_s, this.field_146337_w, WorldType.field_77139_a[this.field_146331_K]);
|
||||
worldsettings.func_82750_a(this.field_146334_a);
|
||||
@@ -1,24 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/gui/GuiIngameMenu.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiIngameMenu.java
|
||||
@@ -30,8 +30,9 @@
|
||||
|
||||
this.field_146292_n.add(new GuiButton(4, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 24 + b0, I18n.func_135052_a("menu.returnToGame", new Object[0])));
|
||||
this.field_146292_n.add(new GuiButton(0, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 96 + b0, 98, 20, I18n.func_135052_a("menu.options", new Object[0])));
|
||||
+ this.field_146292_n.add(new GuiButton(12, this.field_146294_l / 2 + 2, this.field_146295_m / 4 + 96 + b0, 98, 20, I18n.func_135052_a("fml.menu.modoptions")));
|
||||
GuiButton guibutton;
|
||||
- this.field_146292_n.add(guibutton = new GuiButton(7, this.field_146294_l / 2 + 2, this.field_146295_m / 4 + 96 + b0, 98, 20, I18n.func_135052_a("menu.shareToLan", new Object[0])));
|
||||
+ this.field_146292_n.add(guibutton = new GuiButton(7, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 72 + b0, 200, 20, I18n.func_135052_a("menu.shareToLan", new Object[0])));
|
||||
this.field_146292_n.add(new GuiButton(5, this.field_146294_l / 2 - 100, this.field_146295_m / 4 + 48 + b0, 98, 20, I18n.func_135052_a("gui.achievements", new Object[0])));
|
||||
this.field_146292_n.add(new GuiButton(6, this.field_146294_l / 2 + 2, this.field_146295_m / 4 + 48 + b0, 98, 20, I18n.func_135052_a("gui.stats", new Object[0])));
|
||||
guibutton.field_146124_l = this.field_146297_k.func_71356_B() && !this.field_146297_k.func_71401_C().func_71344_c();
|
||||
@@ -65,6 +66,10 @@
|
||||
break;
|
||||
case 7:
|
||||
this.field_146297_k.func_147108_a(new GuiShareToLan(this));
|
||||
+ break;
|
||||
+ case 12:
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().showInGameModOptions(this);
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/gui/GuiMainMenu.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiMainMenu.java
|
||||
@@ -198,6 +198,11 @@
|
||||
this.field_146292_n.add(new GuiButton(1, this.field_146294_l / 2 - 100, p_73969_1_, I18n.func_135052_a("menu.singleplayer", new Object[0])));
|
||||
this.field_146292_n.add(new GuiButton(2, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.func_135052_a("menu.multiplayer", new Object[0])));
|
||||
this.field_146292_n.add(this.field_175372_K = new GuiButton(14, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.func_135052_a("menu.online", new Object[0])));
|
||||
+ GuiButton fmlModButton = new GuiButton(6, this.field_146294_l / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.func_135052_a("fml.menu.mods"));
|
||||
+ fmlModButton.field_146128_h = this.field_146294_l / 2 + 2;
|
||||
+ field_175372_K.field_146120_f = 98;
|
||||
+ fmlModButton.field_146120_f = 98;
|
||||
+ this.field_146292_n.add(fmlModButton);
|
||||
}
|
||||
|
||||
private void func_73972_b(int p_73972_1_, int p_73972_2_)
|
||||
@@ -245,6 +250,11 @@
|
||||
this.field_146297_k.func_71400_g();
|
||||
}
|
||||
|
||||
+ if (p_146284_1_.field_146127_k == 6)
|
||||
+ {
|
||||
+ this.field_146297_k.func_147108_a(new net.minecraftforge.fml.client.GuiModList(this));
|
||||
+ }
|
||||
+
|
||||
if (p_146284_1_.field_146127_k == 11)
|
||||
{
|
||||
this.field_146297_k.func_71371_a("Demo_World", "Demo_World", DemoWorldServer.field_73071_a);
|
||||
@@ -492,7 +502,15 @@
|
||||
s = s + " Demo";
|
||||
}
|
||||
|
||||
- this.func_73731_b(this.field_146289_q, s, 2, this.field_146295_m - 10, -1);
|
||||
+ java.util.List<String> brandings = com.google.common.collect.Lists.reverse(net.minecraftforge.fml.common.FMLCommonHandler.instance().getBrandings(true));
|
||||
+ for (int i = 0; i < brandings.size(); i++)
|
||||
+ {
|
||||
+ String brd = brandings.get(i);
|
||||
+ if (!com.google.common.base.Strings.isNullOrEmpty(brd))
|
||||
+ {
|
||||
+ this.func_73731_b(this.field_146289_q, brd, 2, this.field_146295_m - ( 10 + i * (this.field_146289_q.field_78288_b + 1)), 16777215);
|
||||
+ }
|
||||
+ }
|
||||
String s1 = "Copyright Mojang AB. Do not distribute!";
|
||||
this.func_73731_b(this.field_146289_q, s1, this.field_146294_l - this.field_146289_q.func_78256_a(s1) - 2, this.field_146295_m - 10, -1);
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/gui/GuiOverlayDebug.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiOverlayDebug.java
|
||||
@@ -170,6 +170,9 @@
|
||||
long l = j - k;
|
||||
ArrayList arraylist = Lists.newArrayList(new String[] {String.format("Java: %s %dbit", new Object[]{System.getProperty("java.version"), Integer.valueOf(this.field_175242_a.func_147111_S() ? 64 : 32)}), String.format("Mem: % 2d%% %03d/%03dMB", new Object[]{Long.valueOf(l * 100L / i), Long.valueOf(func_175240_a(l)), Long.valueOf(func_175240_a(i))}), String.format("Allocated: % 2d%% %03dMB", new Object[]{Long.valueOf(j * 100L / i), Long.valueOf(func_175240_a(j))}), "", String.format("Display: %dx%d (%s)", new Object[]{Integer.valueOf(Display.getWidth()), Integer.valueOf(Display.getHeight()), GL11.glGetString(GL11.GL_VENDOR)}), GL11.glGetString(GL11.GL_RENDERER), GL11.glGetString(GL11.GL_VERSION)});
|
||||
|
||||
+ arraylist.add("");
|
||||
+ arraylist.addAll(net.minecraftforge.fml.common.FMLCommonHandler.instance().getBrandings(false));
|
||||
+
|
||||
if (this.func_175236_d())
|
||||
{
|
||||
return arraylist;
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/gui/GuiSelectWorld.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/gui/GuiSelectWorld.java
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
if (this.field_146297_k.func_71359_d().func_90033_f(s))
|
||||
{
|
||||
- this.field_146297_k.func_71371_a(s, s1, (WorldSettings)null);
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().tryLoadExistingWorld(this, s, s1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/gui/ServerListEntryNormal.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/gui/ServerListEntryNormal.java
|
||||
@@ -84,7 +84,7 @@
|
||||
boolean flag2 = this.field_148301_e.field_82821_f < 47;
|
||||
boolean flag3 = flag1 || flag2;
|
||||
this.field_148300_d.field_71466_p.func_78276_b(this.field_148301_e.field_78847_a, p_180790_2_ + 32 + 3, p_180790_3_ + 1, 16777215);
|
||||
- List list = this.field_148300_d.field_71466_p.func_78271_c(this.field_148301_e.field_78843_d, p_180790_4_ - 32 - 2);
|
||||
+ List list = this.field_148300_d.field_71466_p.func_78271_c(net.minecraftforge.fml.client.FMLClientHandler.instance().fixDescription(this.field_148301_e.field_78843_d), p_180790_4_ - 48 - 2);
|
||||
|
||||
for (int l1 = 0; l1 < Math.min(list.size(), 2); ++l1)
|
||||
{
|
||||
@@ -178,6 +178,11 @@
|
||||
int k2 = p_180790_6_ - p_180790_2_;
|
||||
int l2 = p_180790_7_ - p_180790_3_;
|
||||
|
||||
+ String tooltip = net.minecraftforge.fml.client.FMLClientHandler.instance().enhanceServerListEntry(this, this.field_148301_e, p_180790_2_, p_180790_4_, p_180790_3_, k2, l2);
|
||||
+ if (tooltip != null)
|
||||
+ {
|
||||
+ this.field_148303_c.func_146793_a(tooltip);
|
||||
+ } else
|
||||
if (k2 >= p_180790_4_ - 15 && k2 <= p_180790_4_ - 5 && l2 >= 0 && l2 <= 8)
|
||||
{
|
||||
this.field_148303_c.func_146793_a(s1);
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/network/NetHandlerPlayClient.java
|
||||
@@ -247,7 +247,7 @@
|
||||
{
|
||||
PacketThreadUtil.func_180031_a(p_147282_1_, this, this.field_147299_f);
|
||||
this.field_147299_f.field_71442_b = new PlayerControllerMP(this.field_147299_f, this);
|
||||
- this.field_147300_g = new WorldClient(this, new WorldSettings(0L, p_147282_1_.func_149198_e(), false, p_147282_1_.func_149195_d(), p_147282_1_.func_149196_i()), p_147282_1_.func_149194_f(), p_147282_1_.func_149192_g(), this.field_147299_f.field_71424_I);
|
||||
+ this.field_147300_g = new WorldClient(this, new WorldSettings(0L, p_147282_1_.func_149198_e(), false, p_147282_1_.func_149195_d(), p_147282_1_.func_149196_i()), net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.get(func_147298_b()).getOverrideDimension(p_147282_1_), p_147282_1_.func_149192_g(), this.field_147299_f.field_71424_I);
|
||||
this.field_147299_f.field_71474_y.field_74318_M = p_147282_1_.func_149192_g();
|
||||
this.field_147299_f.func_71403_a(this.field_147300_g);
|
||||
this.field_147299_f.field_71439_g.field_71093_bK = p_147282_1_.func_149194_f();
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/network/OldServerPinger.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/network/OldServerPinger.java
|
||||
@@ -148,6 +148,7 @@
|
||||
p_147224_1_.func_147407_a((String)null);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().bindServerListData(p_147224_1_, serverstatusresponse);
|
||||
this.field_175092_e = Minecraft.func_71386_F();
|
||||
networkmanager.func_179290_a(new C01PacketPing(this.field_175092_e));
|
||||
this.field_147403_d = true;
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/renderer/entity/RenderVillager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/renderer/entity/RenderVillager.java
|
||||
@@ -48,7 +48,7 @@
|
||||
case 4:
|
||||
return field_110906_m;
|
||||
default:
|
||||
- return field_110903_f;
|
||||
+ return net.minecraftforge.fml.common.registry.VillagerRegistry.getVillagerSkin(p_110775_1_.func_70946_n(), field_110903_f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/renderer/texture/TextureMap.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/renderer/texture/TextureMap.java
|
||||
@@ -91,6 +91,7 @@
|
||||
this.field_94258_i.clear();
|
||||
int j = Integer.MAX_VALUE;
|
||||
int k = 1 << this.field_147636_j;
|
||||
+ net.minecraftforge.fml.common.ProgressManager.ProgressBar bar = net.minecraftforge.fml.common.ProgressManager.push("Texture stitching", this.field_110574_e.size());
|
||||
Iterator iterator = this.field_110574_e.entrySet().iterator();
|
||||
|
||||
while (iterator.hasNext())
|
||||
@@ -99,6 +100,7 @@
|
||||
TextureAtlasSprite textureatlassprite = (TextureAtlasSprite)entry.getValue();
|
||||
ResourceLocation resourcelocation = new ResourceLocation(textureatlassprite.func_94215_i());
|
||||
ResourceLocation resourcelocation1 = this.func_147634_a(resourcelocation, 0);
|
||||
+ bar.step(resourcelocation1.func_110623_a());
|
||||
|
||||
try
|
||||
{
|
||||
@@ -150,12 +152,14 @@
|
||||
}
|
||||
catch (RuntimeException runtimeexception)
|
||||
{
|
||||
- field_147635_d.error("Unable to parse metadata from " + resourcelocation1, runtimeexception);
|
||||
+ //logger.error("Unable to parse metadata from " + resourcelocation1, runtimeexception);
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackBrokenTexture(resourcelocation1, runtimeexception.getMessage());
|
||||
continue;
|
||||
}
|
||||
catch (IOException ioexception1)
|
||||
{
|
||||
- field_147635_d.error("Using missing texture, unable to load " + resourcelocation1, ioexception1);
|
||||
+ //logger.error("Using missing texture, unable to load " + resourcelocation1, ioexception1);
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackMissingTexture(resourcelocation1);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -171,6 +175,7 @@
|
||||
stitcher.func_110934_a(textureatlassprite);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
|
||||
int j1 = Math.min(j, k);
|
||||
int k1 = MathHelper.func_151239_c(j1);
|
||||
|
||||
@@ -181,10 +186,12 @@
|
||||
}
|
||||
|
||||
Iterator iterator1 = this.field_110574_e.values().iterator();
|
||||
+ bar = net.minecraftforge.fml.common.ProgressManager.push("Mipmap generation", this.field_110574_e.size());
|
||||
|
||||
while (iterator1.hasNext())
|
||||
{
|
||||
final TextureAtlasSprite textureatlassprite1 = (TextureAtlasSprite)iterator1.next();
|
||||
+ bar.step(textureatlassprite1.func_94215_i());
|
||||
|
||||
try
|
||||
{
|
||||
@@ -225,9 +232,12 @@
|
||||
|
||||
this.field_94249_f.func_147963_d(this.field_147636_j);
|
||||
stitcher.func_110934_a(this.field_94249_f);
|
||||
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
|
||||
+ bar = net.minecraftforge.fml.common.ProgressManager.push("Texture creation", 3);
|
||||
|
||||
try
|
||||
{
|
||||
+ bar.step("Stitching");
|
||||
stitcher.func_94305_f();
|
||||
}
|
||||
catch (StitcherException stitcherexception)
|
||||
@@ -236,11 +246,13 @@
|
||||
}
|
||||
|
||||
field_147635_d.info("Created: {}x{} {}-atlas", new Object[] {Integer.valueOf(stitcher.func_110935_a()), Integer.valueOf(stitcher.func_110936_b()), this.field_94254_c});
|
||||
+ bar.step("Allocating GL texture");
|
||||
TextureUtil.func_180600_a(this.func_110552_b(), this.field_147636_j, stitcher.func_110935_a(), stitcher.func_110936_b());
|
||||
HashMap hashmap = Maps.newHashMap(this.field_110574_e);
|
||||
Iterator iterator2 = stitcher.func_94309_g().iterator();
|
||||
TextureAtlasSprite textureatlassprite2;
|
||||
|
||||
+ bar.step("Uploading GL texture");
|
||||
while (iterator2.hasNext())
|
||||
{
|
||||
textureatlassprite2 = (TextureAtlasSprite)iterator2.next();
|
||||
@@ -276,6 +288,7 @@
|
||||
}
|
||||
|
||||
TextureUtil.func_177055_a(this.field_94254_c.replaceAll("/", "_"), this.func_110552_b(), this.field_147636_j, stitcher.func_110935_a(), stitcher.func_110936_b());
|
||||
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
|
||||
}
|
||||
|
||||
private ResourceLocation func_147634_a(ResourceLocation p_147634_1_, int p_147634_2_)
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/resources/LanguageManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/resources/LanguageManager.java
|
||||
@@ -83,6 +83,7 @@
|
||||
}
|
||||
|
||||
field_135049_a.func_135022_a(p_110549_1_, arraylist);
|
||||
+ net.minecraftforge.fml.common.registry.LanguageRegistry.instance().mergeLanguageTable(field_135049_a.field_135032_a, this.field_135048_c);
|
||||
StringTranslate.func_135063_a(field_135049_a.field_135032_a);
|
||||
}
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/resources/model/ModelBakery.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/resources/model/ModelBakery.java
|
||||
@@ -318,6 +318,7 @@
|
||||
|
||||
private void func_177592_e()
|
||||
{
|
||||
+ this.field_177613_u.clear(); //FML clear this to prevent double ups.
|
||||
this.field_177613_u.put(Item.func_150898_a(Blocks.field_150348_b), Lists.newArrayList(new String[] {"stone", "granite", "granite_smooth", "diorite", "diorite_smooth", "andesite", "andesite_smooth"}));
|
||||
this.field_177613_u.put(Item.func_150898_a(Blocks.field_150346_d), Lists.newArrayList(new String[] {"dirt", "coarse_dirt", "podzol"}));
|
||||
this.field_177613_u.put(Item.func_150898_a(Blocks.field_150344_f), Lists.newArrayList(new String[] {"oak_planks", "spruce_planks", "birch_planks", "jungle_planks", "acacia_planks", "dark_oak_planks"}));
|
||||
@@ -360,6 +361,10 @@
|
||||
this.field_177613_u.put(Item.func_150898_a(Blocks.field_180390_bo), Lists.newArrayList(new String[] {"oak_fence_gate"}));
|
||||
this.field_177613_u.put(Item.func_150898_a(Blocks.field_180407_aO), Lists.newArrayList(new String[] {"oak_fence"}));
|
||||
this.field_177613_u.put(Items.field_179570_aq, Lists.newArrayList(new String[] {"oak_door"}));
|
||||
+ for (Entry<net.minecraftforge.fml.common.registry.RegistryDelegate<Item>, Set<String>> e : customVariantNames.entrySet())
|
||||
+ {
|
||||
+ this.field_177613_u.put(e.getKey().get(), Lists.newArrayList(e.getValue().iterator()));
|
||||
+ }
|
||||
}
|
||||
|
||||
private List func_177596_a(Item p_177596_1_)
|
||||
@@ -809,4 +814,19 @@
|
||||
field_177617_q.field_178317_b = "class generation marker";
|
||||
field_177616_r.field_178317_b = "block entity marker";
|
||||
}
|
||||
+
|
||||
+ /***********************************************************
|
||||
+ * FML Start
|
||||
+ ***********************************************************/
|
||||
+ private static Map<net.minecraftforge.fml.common.registry.RegistryDelegate<Item>, Set<String>> customVariantNames = Maps.newHashMap();
|
||||
+ public static void addVariantName(Item item, String... names)
|
||||
+ {
|
||||
+ if (customVariantNames.containsKey(item.delegate))
|
||||
+ customVariantNames.get(item.delegate).addAll(Lists.newArrayList(names));
|
||||
+ else
|
||||
+ customVariantNames.put(item.delegate, Sets.newHashSet(names));
|
||||
+ }
|
||||
+ /***********************************************************
|
||||
+ * FML End
|
||||
+ ***********************************************************/
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/settings/GameSettings.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/settings/GameSettings.java
|
||||
@@ -1067,6 +1067,7 @@
|
||||
|
||||
public void func_74303_b()
|
||||
{
|
||||
+ if (net.minecraftforge.fml.client.FMLClientHandler.instance().isLoading()) return;
|
||||
try
|
||||
{
|
||||
PrintWriter printwriter = new PrintWriter(new FileWriter(this.field_74354_ai));
|
||||
@@ -1,32 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/EntityList.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/EntityList.java
|
||||
@@ -153,9 +153,10 @@
|
||||
p_75615_0_.func_82580_o("Type");
|
||||
}
|
||||
|
||||
+ Class oclass = null;
|
||||
try
|
||||
{
|
||||
- Class oclass = (Class)field_75625_b.get(p_75615_0_.func_74779_i("id"));
|
||||
+ oclass = (Class)field_75625_b.get(p_75615_0_.func_74779_i("id"));
|
||||
|
||||
if (oclass != null)
|
||||
{
|
||||
@@ -169,7 +170,17 @@
|
||||
|
||||
if (entity != null)
|
||||
{
|
||||
+ try
|
||||
+ {
|
||||
entity.func_70020_e(p_75615_0_);
|
||||
+ }
|
||||
+ catch (Exception e)
|
||||
+ {
|
||||
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, e,
|
||||
+ "An Entity %s(%s) has thrown an exception during loading, its state cannot be restored. Report this to the mod author",
|
||||
+ p_75615_0_.func_74779_i("id"), oclass.getName());
|
||||
+ entity = null;
|
||||
+ }
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/EntityTracker.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/EntityTracker.java
|
||||
@@ -58,6 +58,8 @@
|
||||
|
||||
public void func_72786_a(Entity p_72786_1_)
|
||||
{
|
||||
+ if (net.minecraftforge.fml.common.registry.EntityRegistry.instance().tryTrackingEntity(this, p_72786_1_)) return;
|
||||
+
|
||||
if (p_72786_1_ instanceof EntityPlayerMP)
|
||||
{
|
||||
this.func_72791_a(p_72786_1_, 512, 2);
|
||||
@@ -1,27 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/EntityTrackerEntry.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/EntityTrackerEntry.java
|
||||
@@ -388,6 +388,14 @@
|
||||
this.field_73138_k = this.field_73132_a.field_70181_x;
|
||||
this.field_73135_l = this.field_73132_a.field_70179_y;
|
||||
|
||||
+ int posX = MathHelper.func_76128_c(this.field_73132_a.field_70165_t * 32.0D);
|
||||
+ int posY = MathHelper.func_76128_c(this.field_73132_a.field_70163_u * 32.0D);
|
||||
+ int posZ = MathHelper.func_76128_c(this.field_73132_a.field_70161_v * 32.0D);
|
||||
+ if (posX != this.field_73128_d || posY != this.field_73129_e || posZ != this.field_73126_f)
|
||||
+ {
|
||||
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.makeEntitySpawnAdjustment(this.field_73132_a, p_73117_1_, this.field_73128_d, this.field_73129_e, this.field_73126_f);
|
||||
+ }
|
||||
+
|
||||
if (this.field_73143_t && !(packet instanceof S0FPacketSpawnMob))
|
||||
{
|
||||
p_73117_1_.field_71135_a.func_147359_a(new S12PacketEntityVelocity(this.field_73132_a.func_145782_y(), this.field_73132_a.field_70159_w, this.field_73132_a.field_70181_x, this.field_73132_a.field_70179_y));
|
||||
@@ -474,6 +482,9 @@
|
||||
field_151262_p.warn("Fetching addPacket for removed entity");
|
||||
}
|
||||
|
||||
+ Packet pkt = net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.getEntitySpawningPacket(this.field_73132_a);
|
||||
+ if (pkt != null) return pkt;
|
||||
+
|
||||
if (this.field_73132_a instanceof EntityItem)
|
||||
{
|
||||
return new S0EPacketSpawnObject(this.field_73132_a, 2, 1);
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/boss/IBossDisplayData.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/boss/IBossDisplayData.java
|
||||
@@ -4,7 +4,6 @@
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
-@SideOnly(Side.CLIENT)
|
||||
public interface IBossDisplayData
|
||||
{
|
||||
float func_110138_aP();
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/item/EntityItem.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/item/EntityItem.java
|
||||
@@ -366,6 +366,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerItemPickupEvent(p_70100_1_, this);
|
||||
if (!this.func_174814_R())
|
||||
{
|
||||
this.field_70170_p.func_72956_a(p_70100_1_, "random.pop", 0.2F, ((this.field_70146_Z.nextFloat() - this.field_70146_Z.nextFloat()) * 0.7F + 1.0F) * 2.0F);
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/monster/EntitySlime.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntitySlime.java
|
||||
@@ -271,7 +271,7 @@
|
||||
{
|
||||
Chunk chunk = this.field_70170_p.func_175726_f(new BlockPos(MathHelper.func_76128_c(this.field_70165_t), 0, MathHelper.func_76128_c(this.field_70161_v)));
|
||||
|
||||
- if (this.field_70170_p.func_72912_H().func_76067_t() == WorldType.field_77138_c && this.field_70146_Z.nextInt(4) != 1)
|
||||
+ if (this.field_70170_p.func_72912_H().func_76067_t().handleSlimeSpawnReduction(field_70146_Z, field_70170_p))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/passive/EntityVillager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/passive/EntityVillager.java
|
||||
@@ -83,6 +83,7 @@
|
||||
private boolean field_82190_bM;
|
||||
private boolean field_175564_by;
|
||||
private InventoryBasic field_175560_bz;
|
||||
+ @Deprecated //Use VillagerRegistry
|
||||
private static final EntityVillager.ITradeList[][][][] field_175561_bA = new EntityVillager.ITradeList[][][][] {{{{new EntityVillager.EmeraldForItems(Items.field_151015_O, new EntityVillager.PriceInfo(18, 22)), new EntityVillager.EmeraldForItems(Items.field_151174_bG, new EntityVillager.PriceInfo(15, 19)), new EntityVillager.EmeraldForItems(Items.field_151172_bF, new EntityVillager.PriceInfo(15, 19)), new EntityVillager.ListItemForEmeralds(Items.field_151025_P, new EntityVillager.PriceInfo(-4, -2))}, {new EntityVillager.EmeraldForItems(Item.func_150898_a(Blocks.field_150423_aK), new EntityVillager.PriceInfo(8, 13)), new EntityVillager.ListItemForEmeralds(Items.field_151158_bO, new EntityVillager.PriceInfo(-3, -2))}, {new EntityVillager.EmeraldForItems(Item.func_150898_a(Blocks.field_150440_ba), new EntityVillager.PriceInfo(7, 12)), new EntityVillager.ListItemForEmeralds(Items.field_151034_e, new EntityVillager.PriceInfo(-5, -7))}, {new EntityVillager.ListItemForEmeralds(Items.field_151106_aX, new EntityVillager.PriceInfo(-6, -10)), new EntityVillager.ListItemForEmeralds(Items.field_151105_aU, new EntityVillager.PriceInfo(1, 1))}}, {{new EntityVillager.EmeraldForItems(Items.field_151007_F, new EntityVillager.PriceInfo(15, 20)), new EntityVillager.EmeraldForItems(Items.field_151044_h, new EntityVillager.PriceInfo(16, 24)), new EntityVillager.ItemAndEmeraldToItem(Items.field_151115_aP, new EntityVillager.PriceInfo(6, 6), Items.field_179566_aV, new EntityVillager.PriceInfo(6, 6))}, {new EntityVillager.ListEnchantedItemForEmeralds(Items.field_151112_aM, new EntityVillager.PriceInfo(7, 8))}}, {{new EntityVillager.EmeraldForItems(Item.func_150898_a(Blocks.field_150325_L), new EntityVillager.PriceInfo(16, 22)), new EntityVillager.ListItemForEmeralds(Items.field_151097_aZ, new EntityVillager.PriceInfo(3, 4))}, {new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 0), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 1), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 2), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 3), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 4), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 5), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 6), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 7), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 8), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 9), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 10), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 11), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 12), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 13), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 14), new EntityVillager.PriceInfo(1, 2)), new EntityVillager.ListItemForEmeralds(new ItemStack(Item.func_150898_a(Blocks.field_150325_L), 1, 15), new EntityVillager.PriceInfo(1, 2))}}, {{new EntityVillager.EmeraldForItems(Items.field_151007_F, new EntityVillager.PriceInfo(15, 20)), new EntityVillager.ListItemForEmeralds(Items.field_151032_g, new EntityVillager.PriceInfo(-12, -8))}, {new EntityVillager.ListItemForEmeralds(Items.field_151031_f, new EntityVillager.PriceInfo(2, 3)), new EntityVillager.ItemAndEmeraldToItem(Item.func_150898_a(Blocks.field_150351_n), new EntityVillager.PriceInfo(10, 10), Items.field_151145_ak, new EntityVillager.PriceInfo(6, 10))}}}, {{{new EntityVillager.EmeraldForItems(Items.field_151121_aF, new EntityVillager.PriceInfo(24, 36)), new EntityVillager.ListEnchantedBookForEmeralds()}, {new EntityVillager.EmeraldForItems(Items.field_151122_aG, new EntityVillager.PriceInfo(8, 10)), new EntityVillager.ListItemForEmeralds(Items.field_151111_aL, new EntityVillager.PriceInfo(10, 12)), new EntityVillager.ListItemForEmeralds(Item.func_150898_a(Blocks.field_150342_
Line truncated
|
||||
private static final String __OBFID = "CL_00001707";
|
||||
|
||||
@@ -540,6 +541,7 @@
|
||||
|
||||
private void func_175554_cu()
|
||||
{
|
||||
+ //TODO: Hook into VillagerRegistry
|
||||
EntityVillager.ITradeList[][][] aitradelist = field_175561_bA[this.func_70946_n()];
|
||||
|
||||
if (this.field_175563_bv != 0 && this.field_175562_bw != 0)
|
||||
@@ -648,6 +650,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ //TODO: Hook into VillagerRegistry to get name
|
||||
if (s1 != null)
|
||||
{
|
||||
ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("entity.Villager." + s1, new Object[0]);
|
||||
@@ -710,7 +713,7 @@
|
||||
public IEntityLivingData func_180482_a(DifficultyInstance p_180482_1_, IEntityLivingData p_180482_2_)
|
||||
{
|
||||
p_180482_2_ = super.func_180482_a(p_180482_1_, p_180482_2_);
|
||||
- this.func_70938_b(this.field_70170_p.field_73012_v.nextInt(5));
|
||||
+ net.minecraftforge.fml.common.registry.VillagerRegistry.setRandomProfession(this, this.field_70170_p.field_73012_v);
|
||||
this.func_175552_ct();
|
||||
return p_180482_2_;
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/player/EntityPlayer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/player/EntityPlayer.java
|
||||
@@ -200,6 +200,7 @@
|
||||
|
||||
public void func_70071_h_()
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPlayerPreTick(this);
|
||||
this.field_70145_X = this.func_175149_v();
|
||||
|
||||
if (this.func_175149_v())
|
||||
@@ -344,6 +345,7 @@
|
||||
{
|
||||
this.func_70107_b(d3, this.field_70163_u, d4);
|
||||
}
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPlayerPostTick(this);
|
||||
}
|
||||
|
||||
public int func_82145_z()
|
||||
@@ -2139,6 +2141,22 @@
|
||||
this.field_175153_bG = p_175150_1_;
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * Opens a GUI with this player, uses FML's IGuiHandler system.
|
||||
+ * Allows for extension by modders.
|
||||
+ *
|
||||
+ * @param mod The mod trying to open a GUI
|
||||
+ * @param modGuiId GUI ID
|
||||
+ * @param world Current World
|
||||
+ * @param x Passed directly to IGuiHandler, data meaningless Typically world X position
|
||||
+ * @param y Passed directly to IGuiHandler, data meaningless Typically world Y position
|
||||
+ * @param z Passed directly to IGuiHandler, data meaningless Typically world Z position
|
||||
+ */
|
||||
+ public void openGui(Object mod, int modGuiId, World world, int x, int y, int z)
|
||||
+ {
|
||||
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(this, mod, modGuiId, world, x, y, z);
|
||||
+ }
|
||||
+
|
||||
public static enum EnumChatVisibility
|
||||
{
|
||||
FULL(0, "options.chat.visibility.full"),
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/inventory/SlotCrafting.java
|
||||
+++ ../src-work/minecraft/net/minecraft/inventory/SlotCrafting.java
|
||||
@@ -113,6 +113,7 @@
|
||||
|
||||
public void func_82870_a(EntityPlayer p_82870_1_, ItemStack p_82870_2_)
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerCraftingEvent(p_82870_1_, p_82870_2_, field_75239_a);
|
||||
this.func_75208_c(p_82870_2_);
|
||||
ItemStack[] aitemstack = CraftingManager.func_77594_a().func_180303_b(this.field_75239_a, p_82870_1_.field_70170_p);
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/Item.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/Item.java
|
||||
@@ -47,8 +47,8 @@
|
||||
|
||||
public class Item
|
||||
{
|
||||
- public static final RegistryNamespaced field_150901_e = new RegistryNamespaced();
|
||||
- private static final Map field_179220_a = Maps.newHashMap();
|
||||
+ public static final RegistryNamespaced field_150901_e = net.minecraftforge.fml.common.registry.GameData.getItemRegistry();
|
||||
+ private static final Map field_179220_a = net.minecraftforge.fml.common.registry.GameData.getBlockItemMap();
|
||||
protected static final UUID field_111210_e = UUID.fromString("CB3F55D3-645C-4F38-A497-9C13A33DB5CF");
|
||||
private CreativeTabs field_77701_a;
|
||||
protected static Random field_77697_d = new Random();
|
||||
@@ -61,6 +61,9 @@
|
||||
private String field_77774_bZ;
|
||||
private static final String __OBFID = "CL_00000041";
|
||||
|
||||
+ public final net.minecraftforge.fml.common.registry.RegistryDelegate<Item> delegate =
|
||||
+ ((net.minecraftforge.fml.common.registry.FMLControlledNamespacedRegistry)field_150901_e).getDelegate(this, Item.class);
|
||||
+
|
||||
public static int func_150891_b(Item p_150891_0_)
|
||||
{
|
||||
return p_150891_0_ == null ? 0 : field_150901_e.func_148757_b(p_150891_0_);
|
||||
@@ -1,50 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/ItemStack.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/ItemStack.java
|
||||
@@ -52,6 +52,7 @@
|
||||
private boolean field_179551_k;
|
||||
private static final String __OBFID = "CL_00000043";
|
||||
|
||||
+ private net.minecraftforge.fml.common.registry.RegistryDelegate<Item> delegate;
|
||||
public ItemStack(Block p_i1876_1_)
|
||||
{
|
||||
this(p_i1876_1_, 1);
|
||||
@@ -83,7 +84,7 @@
|
||||
this.field_179553_i = false;
|
||||
this.field_179550_j = null;
|
||||
this.field_179551_k = false;
|
||||
- this.field_151002_e = p_i1881_1_;
|
||||
+ this.func_150996_a(p_i1881_1_);
|
||||
this.field_77994_a = p_i1881_2_;
|
||||
this.field_77991_e = p_i1881_3_;
|
||||
|
||||
@@ -123,7 +124,7 @@
|
||||
|
||||
public Item func_77973_b()
|
||||
{
|
||||
- return this.field_151002_e;
|
||||
+ return this.delegate != null ? this.delegate.get() : null;
|
||||
}
|
||||
|
||||
public boolean func_179546_a(EntityPlayer p_179546_1_, World p_179546_2_, BlockPos p_179546_3_, EnumFacing p_179546_4_, float p_179546_5_, float p_179546_6_, float p_179546_7_)
|
||||
@@ -172,11 +173,11 @@
|
||||
{
|
||||
if (p_77963_1_.func_150297_b("id", 8))
|
||||
{
|
||||
- this.field_151002_e = Item.func_111206_d(p_77963_1_.func_74779_i("id"));
|
||||
+ this.func_150996_a(Item.func_111206_d(p_77963_1_.func_74779_i("id")));
|
||||
}
|
||||
else
|
||||
{
|
||||
- this.field_151002_e = Item.func_150899_d(p_77963_1_.func_74765_d("id"));
|
||||
+ this.func_150996_a(Item.func_150899_d(p_77963_1_.func_74765_d("id")));
|
||||
}
|
||||
|
||||
this.field_77994_a = p_77963_1_.func_74771_c("Count");
|
||||
@@ -870,6 +871,7 @@
|
||||
|
||||
public void func_150996_a(Item p_150996_1_)
|
||||
{
|
||||
+ this.delegate = p_150996_1_ != null ? p_150996_1_.delegate : null;
|
||||
this.field_151002_e = p_150996_1_;
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/NetworkSystem.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/NetworkSystem.java
|
||||
@@ -110,7 +110,7 @@
|
||||
;
|
||||
}
|
||||
|
||||
- p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(30)).addLast("legacy_query", new PingResponseHandler(NetworkSystem.this)).addLast("splitter", new MessageDeserializer2()).addLast("decoder", new MessageDeserializer(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new MessageSerializer2()).addLast("encoder", new MessageSerializer(EnumPacketDirection.CLIENTBOUND));
|
||||
+ p_initChannel_1_.pipeline().addLast("timeout", new ReadTimeoutHandler(net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.READ_TIMEOUT)).addLast("legacy_query", new PingResponseHandler(NetworkSystem.this)).addLast("splitter", new MessageDeserializer2()).addLast("decoder", new MessageDeserializer(EnumPacketDirection.SERVERBOUND)).addLast("prepender", new MessageSerializer2()).addLast("encoder", new MessageSerializer(EnumPacketDirection.CLIENTBOUND));
|
||||
NetworkManager networkmanager = new NetworkManager(EnumPacketDirection.SERVERBOUND);
|
||||
NetworkSystem.this.field_151272_f.add(networkmanager);
|
||||
p_initChannel_1_.pipeline().addLast("packet_handler", networkmanager);
|
||||
@@ -1,18 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/ServerStatusResponse.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/ServerStatusResponse.java
|
||||
@@ -233,6 +233,7 @@
|
||||
serverstatusresponse.func_151320_a(JsonUtils.func_151200_h(jsonobject, "favicon"));
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().captureAdditionalData(serverstatusresponse, jsonobject);
|
||||
return serverstatusresponse;
|
||||
}
|
||||
|
||||
@@ -260,6 +261,7 @@
|
||||
jsonobject.addProperty("favicon", p_serialize_1_.func_151316_d());
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.enhanceStatusQuery(jsonobject);
|
||||
return jsonobject;
|
||||
}
|
||||
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/play/server/S3FPacketCustomPayload.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/play/server/S3FPacketCustomPayload.java
|
||||
@@ -46,7 +46,11 @@
|
||||
public void func_148840_b(PacketBuffer p_148840_1_) throws IOException
|
||||
{
|
||||
p_148840_1_.func_180714_a(this.field_149172_a);
|
||||
+ synchronized(this) { //This may be access multiple times, from multiple threads, lets be safe.
|
||||
+ this.field_149171_b.markReaderIndex();
|
||||
p_148840_1_.writeBytes((ByteBuf)this.field_149171_b);
|
||||
+ this.field_149171_b.resetReaderIndex();
|
||||
+ }
|
||||
}
|
||||
|
||||
public void func_180734_a(INetHandlerPlayClient p_180734_1_)
|
||||
@@ -1,115 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/server/MinecraftServer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/MinecraftServer.java
|
||||
@@ -399,7 +399,7 @@
|
||||
|
||||
public void func_71260_j()
|
||||
{
|
||||
- if (!this.field_71290_O)
|
||||
+ if (!this.field_71290_O && net.minecraftforge.fml.common.Loader.instance().hasReachedState(net.minecraftforge.fml.common.LoaderState.SERVER_STARTED) && !field_71316_v) // make sure the save is valid and we don't save twice
|
||||
{
|
||||
field_147145_h.info("Stopping server");
|
||||
|
||||
@@ -456,6 +456,7 @@
|
||||
{
|
||||
if (this.func_71197_b())
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStarted();
|
||||
this.field_175591_ab = func_130071_aq();
|
||||
long i = 0L;
|
||||
this.field_147147_p.func_151315_a(new ChatComponentText(this.field_71286_C));
|
||||
@@ -500,12 +501,20 @@
|
||||
Thread.sleep(Math.max(1L, 50L - i));
|
||||
this.field_71296_Q = true;
|
||||
}
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStopping();
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
|
||||
}
|
||||
else
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
|
||||
this.func_71228_a((CrashReport)null);
|
||||
}
|
||||
}
|
||||
+ catch (net.minecraftforge.fml.common.StartupQuery.AbortedException e)
|
||||
+ {
|
||||
+ // ignore silently
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
|
||||
+ }
|
||||
catch (Throwable throwable1)
|
||||
{
|
||||
field_147145_h.error("Encountered an unexpected exception", throwable1);
|
||||
@@ -531,6 +540,7 @@
|
||||
field_147145_h.error("We were unable to save this crash report to disk.");
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().expectServerStopped(); // has to come before finalTick to avoid race conditions
|
||||
this.func_71228_a(crashreport);
|
||||
}
|
||||
finally
|
||||
@@ -546,6 +556,8 @@
|
||||
}
|
||||
finally
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStopped();
|
||||
+ this.field_71316_v = true;
|
||||
this.func_71240_o();
|
||||
}
|
||||
}
|
||||
@@ -591,6 +603,7 @@
|
||||
public void func_71217_p()
|
||||
{
|
||||
long i = System.nanoTime();
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPreServerTick();
|
||||
++this.field_71315_w;
|
||||
|
||||
if (this.field_71295_T)
|
||||
@@ -644,6 +657,7 @@
|
||||
|
||||
this.field_71304_b.func_76319_b();
|
||||
this.field_71304_b.func_76319_b();
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPostServerTick();
|
||||
}
|
||||
|
||||
public void func_71190_q()
|
||||
@@ -657,7 +671,7 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
- ((FutureTask)this.field_175589_i.poll()).run();
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.callFuture(((FutureTask)this.field_175589_i.poll()));
|
||||
}
|
||||
catch (Throwable throwable2)
|
||||
{
|
||||
@@ -686,6 +700,7 @@
|
||||
}
|
||||
|
||||
this.field_71304_b.func_76320_a("tick");
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPreWorldTick(worldserver);
|
||||
CrashReport crashreport;
|
||||
|
||||
try
|
||||
@@ -710,6 +725,7 @@
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().onPostWorldTick(worldserver);
|
||||
this.field_71304_b.func_76319_b();
|
||||
this.field_71304_b.func_76320_a("tracker");
|
||||
worldserver.func_73039_n().func_72788_a();
|
||||
@@ -741,6 +757,7 @@
|
||||
|
||||
public void func_71256_s()
|
||||
{
|
||||
+ net.minecraftforge.fml.common.StartupQuery.reset();
|
||||
this.field_175590_aa = new Thread(this, "Server thread");
|
||||
this.field_175590_aa.start();
|
||||
}
|
||||
@@ -787,7 +804,7 @@
|
||||
|
||||
public String getServerModName()
|
||||
{
|
||||
- return "vanilla";
|
||||
+ return net.minecraftforge.fml.common.FMLCommonHandler.instance().getModName();
|
||||
}
|
||||
|
||||
public CrashReport func_71230_b(CrashReport p_71230_1_)
|
||||
@@ -1,23 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/server/integrated/IntegratedServer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/integrated/IntegratedServer.java
|
||||
@@ -144,9 +144,10 @@
|
||||
this.func_71245_h(true);
|
||||
field_147148_h.info("Generating keypair");
|
||||
this.func_71253_a(CryptManager.func_75891_b());
|
||||
+ if (!net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerAboutToStart(this)) return false;
|
||||
this.func_71247_a(this.func_71270_I(), this.func_71221_J(), this.field_71350_m.func_77160_d(), this.field_71350_m.func_77165_h(), this.field_71350_m.func_82749_j());
|
||||
this.func_71205_p(this.func_71214_G() + " - " + this.field_71305_c[0].func_72912_H().func_76065_j());
|
||||
- return true;
|
||||
+ return net.minecraftforge.fml.common.FMLCommonHandler.instance().handleServerStarting(this);
|
||||
}
|
||||
|
||||
public void func_71217_p()
|
||||
@@ -171,7 +172,7 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
- ((FutureTask)this.field_175589_i.poll()).run();
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.callFuture(((FutureTask)this.field_175589_i.poll()));
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
{
|
||||
@@ -1,50 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/server/management/PlayerProfileCache.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/management/PlayerProfileCache.java
|
||||
@@ -204,26 +204,12 @@
|
||||
{
|
||||
List list = null;
|
||||
BufferedReader bufferedreader = null;
|
||||
- label64:
|
||||
{
|
||||
try
|
||||
{
|
||||
bufferedreader = Files.newReader(this.field_152665_g, Charsets.UTF_8);
|
||||
list = (List)this.field_152660_b.fromJson(bufferedreader, field_152666_h);
|
||||
- break label64;
|
||||
- }
|
||||
- catch (FileNotFoundException filenotfoundexception)
|
||||
- {
|
||||
- ;
|
||||
- }
|
||||
- finally
|
||||
- {
|
||||
- IOUtils.closeQuietly(bufferedreader);
|
||||
- }
|
||||
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
if (list != null)
|
||||
{
|
||||
this.field_152661_c.clear();
|
||||
@@ -242,6 +228,20 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
+ }
|
||||
+ catch (FileNotFoundException filenotfoundexception)
|
||||
+ {
|
||||
+ ;
|
||||
+ }
|
||||
+ catch (com.google.gson.JsonParseException parsefail)
|
||||
+ {
|
||||
+ // No op - the cache can quietly rebuild if it's junk
|
||||
+ }
|
||||
+ finally
|
||||
+ {
|
||||
+ IOUtils.closeQuietly(bufferedreader);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
public void func_152658_c()
|
||||
-76
@@ -1,76 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/management/ServerConfigurationManager.java
|
||||
@@ -103,7 +103,7 @@
|
||||
this.field_72405_c = 8;
|
||||
}
|
||||
|
||||
- public void func_72355_a(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_)
|
||||
+ public void func_72355_a(NetworkManager p_72355_1_, EntityPlayerMP p_72355_2_, NetHandlerPlayServer nethandlerplayserver)
|
||||
{
|
||||
GameProfile gameprofile = p_72355_2_.func_146103_bH();
|
||||
PlayerProfileCache playerprofilecache = this.field_72400_f.func_152358_ax();
|
||||
@@ -125,7 +125,7 @@
|
||||
WorldInfo worldinfo = worldserver.func_72912_H();
|
||||
BlockPos blockpos = worldserver.func_175694_M();
|
||||
this.func_72381_a(p_72355_2_, (EntityPlayerMP)null, worldserver);
|
||||
- NetHandlerPlayServer nethandlerplayserver = new NetHandlerPlayServer(this.field_72400_f, p_72355_1_, p_72355_2_);
|
||||
+ p_72355_2_.field_71135_a = nethandlerplayserver;
|
||||
nethandlerplayserver.func_147359_a(new S01PacketJoinGame(p_72355_2_.func_145782_y(), p_72355_2_.field_71134_c.func_73081_b(), worldinfo.func_76093_s(), worldserver.field_73011_w.func_177502_q(), worldserver.func_175659_aa(), this.func_72352_l(), worldinfo.func_76067_t(), worldserver.func_82736_K().func_82766_b("reducedDebugInfo")));
|
||||
nethandlerplayserver.func_147359_a(new S3FPacketCustomPayload("MC|Brand", (new PacketBuffer(Unpooled.buffer())).func_180714_a(this.func_72365_p().getServerModName())));
|
||||
nethandlerplayserver.func_147359_a(new S41PacketServerDifficulty(worldinfo.func_176130_y(), worldinfo.func_176123_z()));
|
||||
@@ -168,6 +168,7 @@
|
||||
|
||||
p_72355_2_.func_71116_b();
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerLoggedIn(p_72355_2_);
|
||||
if (nbttagcompound != null && nbttagcompound.func_150297_b("Riding", 10))
|
||||
{
|
||||
Entity entity = EntityList.func_75615_a(nbttagcompound.func_74775_l("Riding"), worldserver);
|
||||
@@ -281,8 +282,23 @@
|
||||
return nbttagcompound1;
|
||||
}
|
||||
|
||||
+ public NBTTagCompound getPlayerNBT(EntityPlayerMP player)
|
||||
+ {
|
||||
+ // Hacky method to allow loading the NBT for a player prior to login
|
||||
+ NBTTagCompound nbttagcompound = this.field_72400_f.field_71305_c[0].func_72912_H().func_76072_h();
|
||||
+ if (player.func_70005_c_().equals(this.field_72400_f.func_71214_G()) && nbttagcompound != null)
|
||||
+ {
|
||||
+ return nbttagcompound;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ return ((net.minecraft.world.storage.SaveHandler)this.field_72412_k).getPlayerNBT(player);
|
||||
+ }
|
||||
+ }
|
||||
protected void func_72391_b(EntityPlayerMP p_72391_1_)
|
||||
{
|
||||
+ if (p_72391_1_.field_71135_a == null) return;
|
||||
+
|
||||
this.field_72412_k.func_75753_a(p_72391_1_);
|
||||
StatisticsFile statisticsfile = (StatisticsFile)this.field_148547_k.get(p_72391_1_.func_110124_au());
|
||||
|
||||
@@ -315,6 +331,7 @@
|
||||
|
||||
public void func_72367_e(EntityPlayerMP p_72367_1_)
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerLoggedOut(p_72367_1_);
|
||||
p_72367_1_.func_71029_a(StatList.field_75947_j);
|
||||
this.func_72391_b(p_72367_1_);
|
||||
WorldServer worldserver = p_72367_1_.func_71121_q();
|
||||
@@ -473,6 +490,7 @@
|
||||
this.field_177454_f.put(entityplayermp1.func_110124_au(), entityplayermp1);
|
||||
entityplayermp1.func_71116_b();
|
||||
entityplayermp1.func_70606_j(entityplayermp1.func_110143_aJ());
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerRespawnEvent(entityplayermp1);
|
||||
return entityplayermp1;
|
||||
}
|
||||
|
||||
@@ -498,6 +516,7 @@
|
||||
PotionEffect potioneffect = (PotionEffect)iterator.next();
|
||||
p_72356_1_.field_71135_a.func_147359_a(new S1DPacketEntityEffect(p_72356_1_.func_145782_y(), potioneffect));
|
||||
}
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerChangedDimensionEvent(p_72356_1_, j, p_72356_2_);
|
||||
}
|
||||
|
||||
public void func_82448_a(Entity p_82448_1_, int p_82448_2_, WorldServer p_82448_3_, WorldServer p_82448_4_)
|
||||
@@ -1,20 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/server/network/NetHandlerLoginServer.java
|
||||
@@ -62,7 +62,7 @@
|
||||
this.func_147326_c();
|
||||
}
|
||||
|
||||
- if (this.field_147336_h++ == 600)
|
||||
+ if (this.field_147336_h++ == net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.LOGIN_TIMEOUT)
|
||||
{
|
||||
this.func_147322_a("Took too long to log in");
|
||||
}
|
||||
@@ -113,7 +113,7 @@
|
||||
}
|
||||
|
||||
this.field_147333_a.func_179290_a(new S02PacketLoginSuccess(this.field_147337_i));
|
||||
- this.field_147327_f.func_71203_ab().func_72355_a(this.field_147333_a, this.field_147327_f.func_71203_ab().func_148545_a(this.field_147337_i));
|
||||
+ net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.fmlServerHandshake(this.field_147327_f.func_71203_ab(), this.field_147333_a, this.field_147327_f.func_71203_ab().func_148545_a(this.field_147337_i));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/tileentity/TileEntity.java
|
||||
+++ ../src-work/minecraft/net/minecraft/tileentity/TileEntity.java
|
||||
@@ -89,9 +89,10 @@
|
||||
{
|
||||
TileEntity tileentity = null;
|
||||
|
||||
+ Class oclass = null;
|
||||
try
|
||||
{
|
||||
- Class oclass = (Class)field_145855_i.get(p_145827_0_.func_74779_i("id"));
|
||||
+ oclass = (Class)field_145855_i.get(p_145827_0_.func_74779_i("id"));
|
||||
|
||||
if (oclass != null)
|
||||
{
|
||||
@@ -109,7 +110,17 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
+ try
|
||||
+ {
|
||||
field_145852_a.warn("Skipping BlockEntity with id " + p_145827_0_.func_74779_i("id"));
|
||||
+ }
|
||||
+ catch (Exception ex)
|
||||
+ {
|
||||
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, ex,
|
||||
+ "A TileEntity %s(%s) has thrown an exception during loading, its state cannot be restored. Report this to the mod author",
|
||||
+ p_145827_0_.func_74779_i("id"), oclass.getName());
|
||||
+ tileentity = null;
|
||||
+ }
|
||||
}
|
||||
|
||||
return tileentity;
|
||||
@@ -141,7 +152,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- @SideOnly(Side.CLIENT)
|
||||
public double func_145835_a(double p_145835_1_, double p_145835_3_, double p_145835_5_)
|
||||
{
|
||||
double d3 = (double)this.field_174879_c.func_177958_n() + 0.5D - p_145835_1_;
|
||||
@@ -1,19 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
|
||||
+++ ../src-work/minecraft/net/minecraft/tileentity/TileEntityFurnace.java
|
||||
@@ -348,7 +348,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
- return item instanceof ItemTool && ((ItemTool)item).func_77861_e().equals("WOOD") ? 200 : (item instanceof ItemSword && ((ItemSword)item).func_150932_j().equals("WOOD") ? 200 : (item instanceof ItemHoe && ((ItemHoe)item).func_77842_f().equals("WOOD") ? 200 : (item == Items.field_151055_y ? 100 : (item == Items.field_151044_h ? 1600 : (item == Items.field_151129_at ? 20000 : (item == Item.func_150898_a(Blocks.field_150345_g) ? 100 : (item == Items.field_151072_bj ? 2400 : 0)))))));
|
||||
+ if (item instanceof ItemTool && ((ItemTool)item).func_77861_e().equals("WOOD")) return 200;
|
||||
+ if (item instanceof ItemSword && ((ItemSword)item).func_150932_j().equals("WOOD")) return 200;
|
||||
+ if (item instanceof ItemHoe && ((ItemHoe)item).func_77842_f().equals("WOOD")) return 200;
|
||||
+ if (item == Items.field_151055_y) return 100;
|
||||
+ if (item == Items.field_151044_h) return 1600;
|
||||
+ if (item == Items.field_151129_at) return 20000;
|
||||
+ if (item == Item.func_150898_a(Blocks.field_150345_g)) return 100;
|
||||
+ if (item == Items.field_151072_bj) return 2400;
|
||||
+ return net.minecraftforge.fml.common.registry.GameRegistry.getFuelValue(p_145952_0_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/util/MessageSerializer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/util/MessageSerializer.java
|
||||
@@ -49,7 +49,7 @@
|
||||
{
|
||||
if (p_encode_2_ instanceof S0CPacketSpawnPlayer)
|
||||
{
|
||||
- p_encode_2_ = p_encode_2_;
|
||||
+ //p_encode_2_ = p_encode_2_; FML: Kill warning
|
||||
}
|
||||
|
||||
p_encode_2_.func_148840_b(packetbuffer);
|
||||
@@ -1,26 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/util/ResourceLocation.java
|
||||
+++ ../src-work/minecraft/net/minecraft/util/ResourceLocation.java
|
||||
@@ -1,7 +1,5 @@
|
||||
package net.minecraft.util;
|
||||
|
||||
-import net.minecraftforge.fml.relauncher.Side;
|
||||
-import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
||||
public class ResourceLocation
|
||||
@@ -22,7 +20,6 @@
|
||||
this(0, func_177516_a(p_i1293_1_));
|
||||
}
|
||||
|
||||
- @SideOnly(Side.CLIENT)
|
||||
public ResourceLocation(String p_i1292_1_, String p_i1292_2_)
|
||||
{
|
||||
this(0, new String[] {p_i1292_1_, p_i1292_2_});
|
||||
@@ -51,7 +48,6 @@
|
||||
return this.field_110625_b;
|
||||
}
|
||||
|
||||
- @SideOnly(Side.CLIENT)
|
||||
public String func_110624_b()
|
||||
{
|
||||
return this.field_110626_a;
|
||||
@@ -1,64 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/util/StringTranslate.java
|
||||
+++ ../src-work/minecraft/net/minecraft/util/StringTranslate.java
|
||||
@@ -18,16 +18,38 @@
|
||||
{
|
||||
private static final Pattern field_111053_a = Pattern.compile("%(\\d+\\$)?[\\d\\.]*[df]");
|
||||
private static final Splitter field_135065_b = Splitter.on('=').limit(2);
|
||||
+ private final Map field_74816_c;
|
||||
private static StringTranslate field_74817_a = new StringTranslate();
|
||||
- private final Map field_74816_c = Maps.newHashMap();
|
||||
private long field_150511_e;
|
||||
private static final String __OBFID = "CL_00001212";
|
||||
|
||||
public StringTranslate()
|
||||
{
|
||||
+ InputStream inputstream = StringTranslate.class.getResourceAsStream("/assets/minecraft/lang/en_US.lang");
|
||||
+ field_74816_c = Maps.newHashMap();
|
||||
+ inject(this, inputstream);
|
||||
+ }
|
||||
+
|
||||
+ public static void inject(InputStream inputstream)
|
||||
+ {
|
||||
+ inject(field_74817_a, inputstream);
|
||||
+ }
|
||||
+
|
||||
+ private static void inject(StringTranslate inst, InputStream inputstream)
|
||||
+ {
|
||||
+ java.util.HashMap<String, String> map = parseLangFile(inputstream);
|
||||
+ inst.field_74816_c.putAll(map);
|
||||
+ inst.field_150511_e = System.currentTimeMillis();
|
||||
+ }
|
||||
+
|
||||
+ public static java.util.HashMap<String,String> parseLangFile(InputStream inputstream)
|
||||
+ {
|
||||
+ java.util.HashMap<String,String> table = Maps.newHashMap();
|
||||
try
|
||||
{
|
||||
- InputStream inputstream = StringTranslate.class.getResourceAsStream("/assets/minecraft/lang/en_US.lang");
|
||||
+ inputstream = net.minecraftforge.fml.common.FMLCommonHandler.instance().loadLanguage(table, inputstream);
|
||||
+ if (inputstream == null) return table;
|
||||
+
|
||||
Iterator iterator = IOUtils.readLines(inputstream, Charsets.UTF_8).iterator();
|
||||
|
||||
while (iterator.hasNext())
|
||||
@@ -42,17 +64,17 @@
|
||||
{
|
||||
String s1 = astring[0];
|
||||
String s2 = field_111053_a.matcher(astring[1]).replaceAll("%$1s");
|
||||
- this.field_74816_c.put(s1, s2);
|
||||
+ table.put(s1, s2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- this.field_150511_e = System.currentTimeMillis();
|
||||
}
|
||||
- catch (IOException ioexception)
|
||||
+ catch (Exception ioexception)
|
||||
{
|
||||
;
|
||||
}
|
||||
+ return table;
|
||||
}
|
||||
|
||||
static StringTranslate func_74808_a()
|
||||
@@ -1,29 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/World.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/World.java
|
||||
@@ -1626,8 +1626,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- this.field_147481_N = false;
|
||||
-
|
||||
if (!this.field_147483_b.isEmpty())
|
||||
{
|
||||
this.field_175730_i.removeAll(this.field_147483_b);
|
||||
@@ -1635,6 +1633,8 @@
|
||||
this.field_147483_b.clear();
|
||||
}
|
||||
|
||||
+ this.field_147481_N = false; //FML Move below remove to prevent CMEs
|
||||
+
|
||||
this.field_72984_F.func_76318_c("pendingBlockEntities");
|
||||
|
||||
if (!this.field_147484_a.isEmpty())
|
||||
@@ -3429,7 +3429,7 @@
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double func_72919_O()
|
||||
{
|
||||
- return this.field_72986_A.func_76067_t() == WorldType.field_77138_c ? 0.0D : 63.0D;
|
||||
+ return this.field_72986_A.func_76067_t().getHorizon(this);
|
||||
}
|
||||
|
||||
public void func_175715_c(int p_175715_1_, BlockPos p_175715_2_, int p_175715_3_)
|
||||
@@ -1,47 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/WorldProvider.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/WorldProvider.java
|
||||
@@ -52,26 +52,12 @@
|
||||
|
||||
protected void func_76572_b()
|
||||
{
|
||||
- WorldType worldtype = this.field_76579_a.func_72912_H().func_76067_t();
|
||||
-
|
||||
- if (worldtype == WorldType.field_77138_c)
|
||||
- {
|
||||
- FlatGeneratorInfo flatgeneratorinfo = FlatGeneratorInfo.func_82651_a(this.field_76579_a.func_72912_H().func_82571_y());
|
||||
- this.field_76578_c = new WorldChunkManagerHell(BiomeGenBase.func_180276_a(flatgeneratorinfo.func_82648_a(), BiomeGenBase.field_180279_ad), 0.5F);
|
||||
- }
|
||||
- else if (worldtype == WorldType.field_180272_g)
|
||||
- {
|
||||
- this.field_76578_c = new WorldChunkManagerHell(BiomeGenBase.field_76772_c, 0.0F);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- this.field_76578_c = new WorldChunkManager(this.field_76579_a);
|
||||
- }
|
||||
+ this.field_76578_c = field_76577_b.getChunkManager(field_76579_a);
|
||||
}
|
||||
|
||||
public IChunkProvider func_76555_c()
|
||||
{
|
||||
- return (IChunkProvider)(this.field_76577_b == WorldType.field_77138_c ? new ChunkProviderFlat(this.field_76579_a, this.field_76579_a.func_72905_C(), this.field_76579_a.func_72912_H().func_76089_r(), this.field_82913_c) : (this.field_76577_b == WorldType.field_180272_g ? new ChunkProviderDebug(this.field_76579_a) : (this.field_76577_b == WorldType.field_180271_f ? new ChunkProviderGenerate(this.field_76579_a, this.field_76579_a.func_72905_C(), this.field_76579_a.func_72912_H().func_76089_r(), this.field_82913_c) : new ChunkProviderGenerate(this.field_76579_a, this.field_76579_a.func_72905_C(), this.field_76579_a.func_72912_H().func_76089_r(), this.field_82913_c))));
|
||||
+ return field_76577_b.getChunkGenerator(field_76579_a, field_82913_c);
|
||||
}
|
||||
|
||||
public boolean func_76566_a(int p_76566_1_, int p_76566_2_)
|
||||
@@ -177,13 +163,13 @@
|
||||
|
||||
public int func_76557_i()
|
||||
{
|
||||
- return this.field_76577_b == WorldType.field_77138_c ? 4 : 64;
|
||||
+ return this.field_76577_b.getMinimumSpawnHeight(this.field_76579_a);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double func_76565_k()
|
||||
{
|
||||
- return this.field_76577_b == WorldType.field_77138_c ? 1.0D : 0.03125D;
|
||||
+ return this.field_76577_b.voidFadeMagnitude();
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@@ -1,56 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/WorldType.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/WorldType.java
|
||||
@@ -114,4 +114,53 @@
|
||||
this.field_151361_l = true;
|
||||
return this;
|
||||
}
|
||||
+
|
||||
+ public net.minecraft.world.biome.WorldChunkManager getChunkManager(World world)
|
||||
+ {
|
||||
+ if (this == field_77138_c)
|
||||
+ {
|
||||
+ net.minecraft.world.gen.FlatGeneratorInfo flatgeneratorinfo = net.minecraft.world.gen.FlatGeneratorInfo.func_82651_a(world.func_72912_H().func_82571_y());
|
||||
+ return new net.minecraft.world.biome.WorldChunkManagerHell(net.minecraft.world.biome.BiomeGenBase.func_180276_a(flatgeneratorinfo.func_82648_a(), net.minecraft.world.biome.BiomeGenBase.field_180279_ad), 0.5F);
|
||||
+ }
|
||||
+ else if (this == field_180272_g)
|
||||
+ {
|
||||
+ return new net.minecraft.world.biome.WorldChunkManagerHell(net.minecraft.world.biome.BiomeGenBase.field_76772_c, 0.0F);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ return new net.minecraft.world.biome.WorldChunkManager(world);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public net.minecraft.world.chunk.IChunkProvider getChunkGenerator(World world, String generatorOptions)
|
||||
+ {
|
||||
+ if (this == field_77138_c) return new net.minecraft.world.gen.ChunkProviderFlat(world, world.func_72905_C(), world.func_72912_H().func_76089_r(), generatorOptions);
|
||||
+ if (this == field_180272_g) return new net.minecraft.world.gen.ChunkProviderDebug(world);
|
||||
+ return new net.minecraft.world.gen.ChunkProviderGenerate(world, world.func_72905_C(), world.func_72912_H().func_76089_r(), generatorOptions);
|
||||
+ }
|
||||
+
|
||||
+ public int getMinimumSpawnHeight(World world)
|
||||
+ {
|
||||
+ return this == field_77138_c ? 4 : 64;
|
||||
+ }
|
||||
+
|
||||
+ public double getHorizon(World world)
|
||||
+ {
|
||||
+ return this == field_77138_c ? 0.0D : 63.0D;
|
||||
+ }
|
||||
+
|
||||
+ public double voidFadeMagnitude()
|
||||
+ {
|
||||
+ return this == field_77138_c ? 1.0D : 0.03125D;
|
||||
+ }
|
||||
+
|
||||
+ public boolean handleSlimeSpawnReduction(java.util.Random random, World world)
|
||||
+ {
|
||||
+ return this == field_77138_c ? random.nextInt(4) != 1 : false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called when 'Create New World' button is pressed before starting game
|
||||
+ */
|
||||
+ public void onGUICreateWorldPress() { }
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/chunk/storage/AnvilChunkLoader.java
|
||||
@@ -287,11 +287,20 @@
|
||||
Entity entity = (Entity)iterator.next();
|
||||
nbttagcompound1 = new NBTTagCompound();
|
||||
|
||||
+ try
|
||||
+ {
|
||||
if (entity.func_70039_c(nbttagcompound1))
|
||||
{
|
||||
p_75820_1_.func_177409_g(true);
|
||||
nbttaglist1.func_74742_a(nbttagcompound1);
|
||||
}
|
||||
+ }
|
||||
+ catch (Exception e)
|
||||
+ {
|
||||
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, e,
|
||||
+ "An Entity type %s has thrown an exception trying to write state. It will not persist. Report this to the mod author",
|
||||
+ entity.getClass().getName());
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -303,8 +312,17 @@
|
||||
{
|
||||
TileEntity tileentity = (TileEntity)iterator.next();
|
||||
nbttagcompound1 = new NBTTagCompound();
|
||||
+ try
|
||||
+ {
|
||||
tileentity.func_145841_b(nbttagcompound1);
|
||||
nbttaglist2.func_74742_a(nbttagcompound1);
|
||||
+ }
|
||||
+ catch (Exception e)
|
||||
+ {
|
||||
+ net.minecraftforge.fml.common.FMLLog.log(org.apache.logging.log4j.Level.ERROR, e,
|
||||
+ "A TileEntity type %s has throw an exception trying to write state. It will not persist. Report this to the mod author",
|
||||
+ tileentity.getClass().getName());
|
||||
+ }
|
||||
}
|
||||
|
||||
p_75820_3_.func_74782_a("TileEntities", nbttaglist2);
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/gen/ChunkProviderServer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/gen/ChunkProviderServer.java
|
||||
@@ -209,6 +209,7 @@
|
||||
if (this.field_73246_d != null)
|
||||
{
|
||||
this.field_73246_d.func_73153_a(p_73153_1_, p_73153_2_, p_73153_3_);
|
||||
+ net.minecraftforge.fml.common.registry.GameRegistry.generateWorld(p_73153_2_, p_73153_3_, field_73251_h, field_73246_d, p_73153_1_);
|
||||
chunk.func_76630_e();
|
||||
}
|
||||
}
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/gen/structure/StructureVillagePieces.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/gen/structure/StructureVillagePieces.java
|
||||
@@ -59,6 +59,8 @@
|
||||
arraylist.add(new StructureVillagePieces.PieceWeight(StructureVillagePieces.Field2.class, 3, MathHelper.func_76136_a(p_75084_0_, 2 + p_75084_1_, 4 + p_75084_1_ * 2)));
|
||||
arraylist.add(new StructureVillagePieces.PieceWeight(StructureVillagePieces.House2.class, 15, MathHelper.func_76136_a(p_75084_0_, 0, 1 + p_75084_1_)));
|
||||
arraylist.add(new StructureVillagePieces.PieceWeight(StructureVillagePieces.House3.class, 8, MathHelper.func_76136_a(p_75084_0_, 0 + p_75084_1_, 3 + p_75084_1_ * 2)));
|
||||
+ net.minecraftforge.fml.common.registry.VillagerRegistry.addExtraVillageComponents(arraylist, p_75084_0_, p_75084_1_);
|
||||
+
|
||||
Iterator iterator = arraylist.iterator();
|
||||
|
||||
while (iterator.hasNext())
|
||||
@@ -132,6 +134,10 @@
|
||||
{
|
||||
object = StructureVillagePieces.House3.func_175849_a(p_176065_0_, p_176065_2_, p_176065_3_, p_176065_4_, p_176065_5_, p_176065_6_, p_176065_7_, p_176065_8_);
|
||||
}
|
||||
+ else
|
||||
+ {
|
||||
+ object = net.minecraftforge.fml.common.registry.VillagerRegistry.getVillageComponent(p_176065_1_, p_176065_0_ , p_176065_2_, p_176065_3_, p_176065_4_, p_176065_5_, p_176065_6_, p_176065_7_, p_176065_8_);
|
||||
+ }
|
||||
|
||||
return (StructureVillagePieces.Village)object;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/storage/MapData.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/storage/MapData.java
|
||||
@@ -22,7 +22,7 @@
|
||||
{
|
||||
public int field_76201_a;
|
||||
public int field_76199_b;
|
||||
- public byte field_76200_c;
|
||||
+ public int field_76200_c; //FML byte -> int
|
||||
public byte field_76197_d;
|
||||
public byte[] field_76198_e = new byte[16384];
|
||||
public List field_76196_g = Lists.newArrayList();
|
||||
@@ -46,7 +46,17 @@
|
||||
|
||||
public void func_76184_a(NBTTagCompound p_76184_1_)
|
||||
{
|
||||
- this.field_76200_c = p_76184_1_.func_74771_c("dimension");
|
||||
+ net.minecraft.nbt.NBTBase dimension = p_76184_1_.func_74781_a("dimension");
|
||||
+
|
||||
+ if (dimension instanceof net.minecraft.nbt.NBTTagByte)
|
||||
+ {
|
||||
+ this.field_76200_c = ((net.minecraft.nbt.NBTTagByte)dimension).func_150290_f();
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ this.field_76200_c = ((net.minecraft.nbt.NBTTagInt)dimension).func_150287_d();
|
||||
+ }
|
||||
+
|
||||
this.field_76201_a = p_76184_1_.func_74762_e("xCenter");
|
||||
this.field_76199_b = p_76184_1_.func_74762_e("zCenter");
|
||||
this.field_76197_d = p_76184_1_.func_74771_c("scale");
|
||||
@@ -87,7 +97,7 @@
|
||||
|
||||
public void func_76187_b(NBTTagCompound p_76187_1_)
|
||||
{
|
||||
- p_76187_1_.func_74774_a("dimension", this.field_76200_c);
|
||||
+ p_76187_1_.func_74768_a("dimension", this.field_76200_c);
|
||||
p_76187_1_.func_74768_a("xCenter", this.field_76201_a);
|
||||
p_76187_1_.func_74768_a("zCenter", this.field_76199_b);
|
||||
p_76187_1_.func_74774_a("scale", this.field_76197_d);
|
||||
@@ -1,89 +0,0 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/storage/SaveHandler.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/storage/SaveHandler.java
|
||||
@@ -107,20 +107,29 @@
|
||||
NBTTagCompound nbttagcompound;
|
||||
NBTTagCompound nbttagcompound1;
|
||||
|
||||
+ WorldInfo worldInfo = null;
|
||||
+
|
||||
if (file1.exists())
|
||||
{
|
||||
try
|
||||
{
|
||||
nbttagcompound = CompressedStreamTools.func_74796_a(new FileInputStream(file1));
|
||||
nbttagcompound1 = nbttagcompound.func_74775_l("Data");
|
||||
- return new WorldInfo(nbttagcompound1);
|
||||
+ worldInfo = new WorldInfo(nbttagcompound1);
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataLoad(this, worldInfo, nbttagcompound);
|
||||
+ return worldInfo;
|
||||
}
|
||||
+ catch (net.minecraftforge.fml.common.StartupQuery.AbortedException e)
|
||||
+ {
|
||||
+ throw e;
|
||||
+ }
|
||||
catch (Exception exception1)
|
||||
{
|
||||
exception1.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().confirmBackupLevelDatUse(this);
|
||||
file1 = new File(this.field_75770_b, "level.dat_old");
|
||||
|
||||
if (file1.exists())
|
||||
@@ -129,7 +138,13 @@
|
||||
{
|
||||
nbttagcompound = CompressedStreamTools.func_74796_a(new FileInputStream(file1));
|
||||
nbttagcompound1 = nbttagcompound.func_74775_l("Data");
|
||||
- return new WorldInfo(nbttagcompound1);
|
||||
+ worldInfo = new WorldInfo(nbttagcompound1);
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataLoad(this, worldInfo, nbttagcompound);
|
||||
+ return worldInfo;
|
||||
+ }
|
||||
+ catch (net.minecraftforge.fml.common.StartupQuery.AbortedException e)
|
||||
+ {
|
||||
+ throw e;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
@@ -146,6 +161,8 @@
|
||||
NBTTagCompound nbttagcompound2 = new NBTTagCompound();
|
||||
nbttagcompound2.func_74782_a("Data", nbttagcompound1);
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataSave(this, p_75755_1_, nbttagcompound2);
|
||||
+
|
||||
try
|
||||
{
|
||||
File file1 = new File(this.field_75770_b, "level.dat_new");
|
||||
@@ -184,6 +201,8 @@
|
||||
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
|
||||
nbttagcompound1.func_74782_a("Data", nbttagcompound);
|
||||
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().handleWorldDataSave(this, p_75761_1_, nbttagcompound1);
|
||||
+
|
||||
try
|
||||
{
|
||||
File file1 = new File(this.field_75770_b, "level.dat_new");
|
||||
@@ -301,4 +320,22 @@
|
||||
{
|
||||
return this.field_75767_f;
|
||||
}
|
||||
+
|
||||
+ public NBTTagCompound getPlayerNBT(net.minecraft.entity.player.EntityPlayerMP player)
|
||||
+ {
|
||||
+ try
|
||||
+ {
|
||||
+ File file1 = new File(this.field_75771_c, player.func_110124_au().toString() + ".dat");
|
||||
+
|
||||
+ if (file1.exists() && file1.isFile())
|
||||
+ {
|
||||
+ return CompressedStreamTools.func_74796_a(new FileInputStream(file1));
|
||||
+ }
|
||||
+ }
|
||||
+ catch (Exception exception)
|
||||
+ {
|
||||
+ field_151478_a.warn("Failed to load player data for " + player.func_70005_c_());
|
||||
+ }
|
||||
+ return null;
|
||||
+ }
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
rootProject.name = 'fml'
|
||||
@@ -1,55 +0,0 @@
|
||||
package net.minecraftforge.fml.client;
|
||||
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
|
||||
public class GuiIngameModOptions extends GuiScreen
|
||||
{
|
||||
private final GuiScreen parentScreen;
|
||||
protected String title = "Mod Options";
|
||||
private GuiModOptionList optionList;
|
||||
|
||||
public GuiIngameModOptions(GuiScreen parentScreen)
|
||||
{
|
||||
this.parentScreen = parentScreen;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void initGui()
|
||||
{
|
||||
this.optionList=new GuiModOptionList(this);
|
||||
this.optionList.registerScrollButtons(this.buttonList, 7, 8);
|
||||
this.buttonList.add(new GuiButton(200, this.width / 2 - 100, this.height / 6 + 168, I18n.format("gui.done", new Object[0])));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button)
|
||||
{
|
||||
if (button.enabled)
|
||||
{
|
||||
if (button.id == 200)
|
||||
{
|
||||
this.mc.gameSettings.saveOptions();
|
||||
this.mc.displayGuiScreen(this.parentScreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks)
|
||||
{
|
||||
// force a non-transparent background
|
||||
this.drawDefaultBackground();
|
||||
this.optionList.drawScreen(mouseX, mouseY, partialTicks);
|
||||
this.drawCenteredString(this.fontRendererObj, this.title, this.width / 2, 15, 0xFFFFFF);
|
||||
super.drawScreen(mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
FontRenderer getFontRenderer() {
|
||||
return fontRendererObj;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,452 +0,0 @@
|
||||
/*
|
||||
* The FML Forge Mod Loader suite.
|
||||
* Copyright (C) 2012 cpw
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free
|
||||
* Software Foundation; either version 2.1 of the License, or any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51
|
||||
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.client;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.client.resources.IResourcePack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.StringUtils;
|
||||
import net.minecraftforge.fml.common.FMLLog;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.ModContainer;
|
||||
import net.minecraftforge.fml.common.ModContainer.Disableable;
|
||||
|
||||
import org.apache.logging.log4j.Level;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
|
||||
/**
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
public class GuiModList extends GuiScreen
|
||||
{
|
||||
private enum SortType implements Comparator<ModContainer>
|
||||
{
|
||||
NORMAL(24),
|
||||
A_TO_Z(25){ @Override protected int compare(String name1, String name2){ return name1.compareTo(name2); }},
|
||||
Z_TO_A(26){ @Override protected int compare(String name1, String name2){ return name2.compareTo(name1); }};
|
||||
|
||||
private int buttonID;
|
||||
|
||||
private SortType(int buttonID)
|
||||
{
|
||||
this.buttonID = buttonID;
|
||||
}
|
||||
|
||||
public static SortType getTypeForButton(GuiButton button)
|
||||
{
|
||||
for (SortType t : values())
|
||||
{
|
||||
if (t.buttonID == button.id)
|
||||
{
|
||||
return t;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
protected int compare(String name1, String name2){ return 0; }
|
||||
|
||||
@Override
|
||||
public int compare(ModContainer o1, ModContainer o2)
|
||||
{
|
||||
String name1 = StringUtils.stripControlCodes(o1.getName()).toLowerCase();
|
||||
String name2 = StringUtils.stripControlCodes(o2.getName()).toLowerCase();
|
||||
return compare(name1, name2);
|
||||
}
|
||||
}
|
||||
|
||||
private GuiScreen mainMenu;
|
||||
private GuiSlotModList modList;
|
||||
private int selected = -1;
|
||||
private ModContainer selectedMod;
|
||||
private int listWidth;
|
||||
private ArrayList<ModContainer> mods;
|
||||
private GuiButton configModButton;
|
||||
private GuiButton disableModButton;
|
||||
private ResourceLocation cachedLogo;
|
||||
private Dimension cachedLogoDimensions;
|
||||
|
||||
private int buttonMargin = 1;
|
||||
private int numButtons = SortType.values().length;
|
||||
|
||||
private String lastFilterText = "";
|
||||
|
||||
private GuiTextField search;
|
||||
private boolean sorted = false;
|
||||
private SortType sortType = SortType.NORMAL;
|
||||
|
||||
/**
|
||||
* @param mainMenu
|
||||
*/
|
||||
public GuiModList(GuiScreen mainMenu)
|
||||
{
|
||||
this.mainMenu = mainMenu;
|
||||
this.mods = new ArrayList<ModContainer>();
|
||||
FMLClientHandler.instance().addSpecialModEntries(mods);
|
||||
// Add child mods to their parent's list
|
||||
for (ModContainer mod : Loader.instance().getModList())
|
||||
{
|
||||
if (mod.getMetadata() != null && mod.getMetadata().parentMod == null && !Strings.isNullOrEmpty(mod.getMetadata().parent))
|
||||
{
|
||||
String parentMod = mod.getMetadata().parent;
|
||||
ModContainer parentContainer = Loader.instance().getIndexedModList().get(parentMod);
|
||||
if (parentContainer != null)
|
||||
{
|
||||
mod.getMetadata().parentMod = parentContainer;
|
||||
parentContainer.getMetadata().childMods.add(mod);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (mod.getMetadata() != null && mod.getMetadata().parentMod != null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
mods.add(mod);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void initGui()
|
||||
{
|
||||
for (ModContainer mod : mods)
|
||||
{
|
||||
listWidth = Math.max(listWidth,getFontRenderer().getStringWidth(mod.getName()) + 10);
|
||||
listWidth = Math.max(listWidth,getFontRenderer().getStringWidth(mod.getVersion()) + 10);
|
||||
}
|
||||
listWidth = Math.min(listWidth, 150);
|
||||
this.modList = new GuiSlotModList(this, mods, listWidth);
|
||||
this.modList.registerScrollButtons(this.buttonList, 7, 8);
|
||||
|
||||
this.buttonList.add(new GuiButton(6, ((modList.right + this.width) / 2) - 100, this.height - 38, I18n.format("gui.done")));
|
||||
configModButton = new GuiButton(20, 10, this.height - 49, this.listWidth, 20, "Config");
|
||||
disableModButton = new GuiButton(21, 10, this.height - 27, this.listWidth, 20, "Disable");
|
||||
this.buttonList.add(configModButton);
|
||||
this.buttonList.add(disableModButton);
|
||||
|
||||
search = new GuiTextField(0, getFontRenderer(), 12, modList.bottom + 17, modList.listWidth - 4, 14);
|
||||
search.setFocused(true);
|
||||
search.setCanLoseFocus(true);
|
||||
|
||||
int width = (modList.listWidth / numButtons);
|
||||
int x = 10, y = 10;
|
||||
GuiButton normalSort = new GuiButton(SortType.NORMAL.buttonID, x, y, width - buttonMargin, 20, I18n.format("fml.menu.mods.normal"));
|
||||
normalSort.enabled = false;
|
||||
buttonList.add(normalSort);
|
||||
x += width + buttonMargin;
|
||||
buttonList.add(new GuiButton(SortType.A_TO_Z.buttonID, x, y, width - buttonMargin, 20, "A-Z"));
|
||||
x += width + buttonMargin;
|
||||
buttonList.add(new GuiButton(SortType.Z_TO_A.buttonID, x, y, width - buttonMargin, 20, "Z-A"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int button) throws IOException
|
||||
{
|
||||
super.mouseClicked(x, y, button);
|
||||
search.mouseClicked(x, y, button);
|
||||
if (button == 1 && x >= search.xPosition && x < search.xPosition + search.width && y >= search.yPosition && y < search.yPosition + search.height) {
|
||||
search.setText("");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(char c, int keyCode) throws IOException
|
||||
{
|
||||
super.keyTyped(c, keyCode);
|
||||
search.textboxKeyTyped(c, keyCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen()
|
||||
{
|
||||
super.updateScreen();
|
||||
search.updateCursorCounter();
|
||||
|
||||
if (!search.getText().equals(lastFilterText))
|
||||
{
|
||||
reloadMods();
|
||||
sorted = false;
|
||||
}
|
||||
|
||||
if (!sorted)
|
||||
{
|
||||
reloadMods();
|
||||
Collections.sort(mods, sortType);
|
||||
selected = modList.selectedIndex = mods.indexOf(selectedMod);
|
||||
sorted = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void reloadMods()
|
||||
{
|
||||
ArrayList<ModContainer> mods = modList.getMods();
|
||||
mods.clear();
|
||||
for (ModContainer m : Loader.instance().getActiveModList())
|
||||
{
|
||||
// If it passes the filter, and is not a child mod
|
||||
if (m.getName().toLowerCase().contains(search.getText().toLowerCase()) && m.getMetadata().parentMod == null)
|
||||
{
|
||||
mods.add(m);
|
||||
}
|
||||
}
|
||||
this.mods = mods;
|
||||
lastFilterText = search.getText();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton button) throws IOException {
|
||||
if (button.enabled)
|
||||
{
|
||||
SortType type = SortType.getTypeForButton(button);
|
||||
|
||||
if (type != null)
|
||||
{
|
||||
for (GuiButton b : (List<GuiButton>) buttonList)
|
||||
{
|
||||
if (SortType.getTypeForButton(b) != null)
|
||||
{
|
||||
b.enabled = true;
|
||||
}
|
||||
}
|
||||
button.enabled = false;
|
||||
sorted = false;
|
||||
sortType = type;
|
||||
this.mods = modList.getMods();
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (button.id)
|
||||
{
|
||||
case 6:
|
||||
this.mc.displayGuiScreen(this.mainMenu);
|
||||
return;
|
||||
case 20:
|
||||
try
|
||||
{
|
||||
IModGuiFactory guiFactory = FMLClientHandler.instance().getGuiFactoryFor(selectedMod);
|
||||
GuiScreen newScreen = guiFactory.mainConfigGuiClass().getConstructor(GuiScreen.class).newInstance(this);
|
||||
this.mc.displayGuiScreen(newScreen);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
FMLLog.log(Level.ERROR, e, "There was a critical issue trying to build the config GUI for %s", selectedMod.getModId());
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
super.actionPerformed(button);
|
||||
}
|
||||
|
||||
public int drawLine(String line, int offset, int shifty)
|
||||
{
|
||||
this.fontRendererObj.drawString(line, offset, shifty, 0xd7edea);
|
||||
return shifty + 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int p_571_1_, int p_571_2_, float p_571_3_)
|
||||
{
|
||||
this.modList.drawScreen(p_571_1_, p_571_2_, p_571_3_);
|
||||
this.drawCenteredString(this.fontRendererObj, "Mod List", this.width / 2, 16, 0xFFFFFF);
|
||||
int offset = this.listWidth + 20;
|
||||
if (selectedMod != null)
|
||||
{
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
if (!selectedMod.getMetadata().autogenerated)
|
||||
{
|
||||
configModButton.visible = true;
|
||||
disableModButton.visible = true;
|
||||
disableModButton.packedFGColour = 0xFF3377;
|
||||
configModButton.enabled = false;
|
||||
int shifty = 35;
|
||||
String logoFile = selectedMod.getMetadata().logoFile;
|
||||
if (!logoFile.isEmpty())
|
||||
{
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
TextureManager tm = mc.getTextureManager();
|
||||
IResourcePack pack = FMLClientHandler.instance().getResourcePackFor(selectedMod.getModId());
|
||||
try
|
||||
{
|
||||
if (cachedLogo == null)
|
||||
{
|
||||
BufferedImage logo = null;
|
||||
if (pack!=null)
|
||||
{
|
||||
logo = pack.getPackImage();
|
||||
}
|
||||
else
|
||||
{
|
||||
InputStream logoResource = getClass().getResourceAsStream(logoFile);
|
||||
if (logoResource != null)
|
||||
{
|
||||
logo = ImageIO.read(logoResource);
|
||||
}
|
||||
}
|
||||
if (logo != null)
|
||||
{
|
||||
cachedLogo = tm.getDynamicTextureLocation("modlogo", new DynamicTexture(logo));
|
||||
cachedLogoDimensions = new Dimension(logo.getWidth(), logo.getHeight());
|
||||
}
|
||||
}
|
||||
if (cachedLogo != null)
|
||||
{
|
||||
this.mc.renderEngine.bindTexture(cachedLogo);
|
||||
double scaleX = cachedLogoDimensions.width / 200.0;
|
||||
double scaleY = cachedLogoDimensions.height / 65.0;
|
||||
double scale = 1.0;
|
||||
if (scaleX > 1 || scaleY > 1)
|
||||
{
|
||||
scale = 1.0 / Math.max(scaleX, scaleY);
|
||||
}
|
||||
cachedLogoDimensions.width *= scale;
|
||||
cachedLogoDimensions.height *= scale;
|
||||
int top = 32;
|
||||
Tessellator tess = Tessellator.getInstance();
|
||||
WorldRenderer world = tess.getWorldRenderer();
|
||||
world.startDrawingQuads();
|
||||
world.addVertexWithUV(offset, top + cachedLogoDimensions.height, zLevel, 0, 1);
|
||||
world.addVertexWithUV(offset + cachedLogoDimensions.width, top + cachedLogoDimensions.height, zLevel, 1, 1);
|
||||
world.addVertexWithUV(offset + cachedLogoDimensions.width, top, zLevel, 1, 0);
|
||||
world.addVertexWithUV(offset, top, zLevel, 0, 0);
|
||||
tess.draw();
|
||||
|
||||
shifty += 65;
|
||||
}
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
this.fontRendererObj.drawStringWithShadow(selectedMod.getMetadata().name, offset, shifty, 0xFFFFFF);
|
||||
shifty += 12;
|
||||
|
||||
shifty = drawLine(String.format("Version: %s (%s)", selectedMod.getDisplayVersion(), selectedMod.getVersion()), offset, shifty);
|
||||
shifty = drawLine(String.format("Mod ID: '%s' Mod State: %s", selectedMod.getModId(), Loader.instance().getModState(selectedMod)), offset, shifty);
|
||||
if (!selectedMod.getMetadata().credits.isEmpty())
|
||||
{
|
||||
shifty = drawLine(String.format("Credits: %s", selectedMod.getMetadata().credits), offset, shifty);
|
||||
}
|
||||
shifty = drawLine(String.format("Authors: %s", selectedMod.getMetadata().getAuthorList()), offset, shifty);
|
||||
shifty = drawLine(String.format("URL: %s", selectedMod.getMetadata().url), offset, shifty);
|
||||
shifty = drawLine(selectedMod.getMetadata().childMods.isEmpty() ? "No child mods for this mod" : String.format("Child mods: %s", selectedMod.getMetadata().getChildModList()), offset, shifty);
|
||||
int rightSide = this.width - offset - 20;
|
||||
if (rightSide > 20)
|
||||
{
|
||||
this.getFontRenderer().drawSplitString(selectedMod.getMetadata().description, offset, shifty + 10, rightSide, 0xDDDDDD);
|
||||
}
|
||||
Disableable disableable = selectedMod.canBeDisabled();
|
||||
if (disableable == Disableable.RESTART)
|
||||
{
|
||||
disableModButton.enabled = true;
|
||||
disableModButton.visible = true;
|
||||
disableModButton.packedFGColour = 0xFF3377;
|
||||
}
|
||||
else if (disableable == Disableable.YES)
|
||||
{
|
||||
disableModButton.enabled = true;
|
||||
disableModButton.visible = true;
|
||||
disableModButton.packedFGColour = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
disableModButton.packedFGColour = 0;
|
||||
disableModButton.visible = true;
|
||||
disableModButton.enabled = false;
|
||||
}
|
||||
IModGuiFactory guiFactory = FMLClientHandler.instance().getGuiFactoryFor(selectedMod);
|
||||
if (guiFactory == null || guiFactory.mainConfigGuiClass() == null)
|
||||
{
|
||||
configModButton.visible = true;
|
||||
configModButton.enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
configModButton.visible = true;
|
||||
configModButton.enabled = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = ( this.listWidth + this.width ) / 2;
|
||||
this.drawCenteredString(this.fontRendererObj, selectedMod.getName(), offset, 35, 0xFFFFFF);
|
||||
this.drawCenteredString(this.fontRendererObj, String.format("Version: %s",selectedMod.getVersion()), offset, 45, 0xFFFFFF);
|
||||
this.drawCenteredString(this.fontRendererObj, String.format("Mod State: %s",Loader.instance().getModState(selectedMod)), offset, 55, 0xFFFFFF);
|
||||
this.drawCenteredString(this.fontRendererObj, "No mod information found", offset, 65, 0xDDDDDD);
|
||||
this.drawCenteredString(this.fontRendererObj, "Ask your mod author to provide a mod mcmod.info file", offset, 75, 0xDDDDDD);
|
||||
configModButton.visible = false;
|
||||
disableModButton.visible = false;
|
||||
}
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
}
|
||||
else
|
||||
{
|
||||
configModButton.visible = false;
|
||||
disableModButton.visible = false;
|
||||
}
|
||||
super.drawScreen(p_571_1_, p_571_2_, p_571_3_);
|
||||
|
||||
String text = I18n.format("fml.menu.mods.search");
|
||||
int x = ((10 + modList.right) / 2) - (getFontRenderer().getStringWidth(text) / 2);
|
||||
getFontRenderer().drawString(text, x, modList.bottom + 5, 0xFFFFFF);
|
||||
search.drawTextBox();
|
||||
}
|
||||
|
||||
Minecraft getMinecraftInstance()
|
||||
{
|
||||
return mc;
|
||||
}
|
||||
|
||||
FontRenderer getFontRenderer()
|
||||
{
|
||||
return fontRendererObj;
|
||||
}
|
||||
|
||||
public void selectModIndex(int index)
|
||||
{
|
||||
this.selected = index;
|
||||
this.selectedMod = (index >= 0 && index <= mods.size()) ? mods.get(selected) : null;
|
||||
cachedLogo = null;
|
||||
}
|
||||
|
||||
public boolean modIndexSelected(int index)
|
||||
{
|
||||
return index == selected;
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
package net.minecraftforge.fml.client;
|
||||
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
|
||||
public class GuiModOptionList extends GuiScrollingList {
|
||||
|
||||
private GuiIngameModOptions parent;
|
||||
|
||||
public GuiModOptionList(GuiIngameModOptions parent)
|
||||
{
|
||||
super(parent.mc, 150, parent.height, 32, parent.height - 65 + 4, 10, 35);
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSize()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void elementClicked(int index, boolean doubleClick)
|
||||
{
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isSelected(int index)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawBackground()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawSlot(int var1, int var2, int var3, int var4, Tessellator var5)
|
||||
{
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("Test 1", listWidth - 10), this.left + 3 , var3 + 2, 0xFF2222);
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("TEST 2", listWidth - 10), this.left + 3 , var3 + 12, 0xFF2222);
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("DISABLED", listWidth - 10), this.left + 3 , var3 + 22, 0xFF2222);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,458 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.GuiButton;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public abstract class GuiScrollingList
|
||||
{
|
||||
private final Minecraft client;
|
||||
protected final int listWidth;
|
||||
protected final int listHeight;
|
||||
protected final int top;
|
||||
protected final int bottom;
|
||||
protected final int right;
|
||||
protected final int left;
|
||||
protected final int slotHeight;
|
||||
private int scrollUpActionId;
|
||||
private int scrollDownActionId;
|
||||
protected int mouseX;
|
||||
protected int mouseY;
|
||||
private float initialMouseClickY = -2.0F;
|
||||
private float scrollFactor;
|
||||
private float scrollDistance;
|
||||
protected int selectedIndex = -1;
|
||||
private long lastClickTime = 0L;
|
||||
private boolean field_25123_p = true;
|
||||
private boolean field_27262_q;
|
||||
private int field_27261_r;
|
||||
|
||||
public GuiScrollingList(Minecraft client, int width, int height, int top, int bottom, int left, int entryHeight)
|
||||
{
|
||||
this.client = client;
|
||||
this.listWidth = width;
|
||||
this.listHeight = height;
|
||||
this.top = top;
|
||||
this.bottom = bottom;
|
||||
this.slotHeight = entryHeight;
|
||||
this.left = left;
|
||||
this.right = width + this.left;
|
||||
}
|
||||
|
||||
public void func_27258_a(boolean p_27258_1_)
|
||||
{
|
||||
this.field_25123_p = p_27258_1_;
|
||||
}
|
||||
|
||||
protected void func_27259_a(boolean p_27259_1_, int p_27259_2_)
|
||||
{
|
||||
this.field_27262_q = p_27259_1_;
|
||||
this.field_27261_r = p_27259_2_;
|
||||
|
||||
if (!p_27259_1_)
|
||||
{
|
||||
this.field_27261_r = 0;
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract int getSize();
|
||||
|
||||
protected abstract void elementClicked(int index, boolean doubleClick);
|
||||
|
||||
protected abstract boolean isSelected(int index);
|
||||
|
||||
protected int getContentHeight()
|
||||
{
|
||||
return this.getSize() * this.slotHeight + this.field_27261_r;
|
||||
}
|
||||
|
||||
protected abstract void drawBackground();
|
||||
|
||||
protected abstract void drawSlot(int var1, int var2, int var3, int var4, Tessellator var5);
|
||||
|
||||
protected void func_27260_a(int p_27260_1_, int p_27260_2_, Tessellator p_27260_3_) {}
|
||||
|
||||
protected void func_27255_a(int p_27255_1_, int p_27255_2_) {}
|
||||
|
||||
protected void func_27257_b(int p_27257_1_, int p_27257_2_) {}
|
||||
|
||||
public int func_27256_c(int p_27256_1_, int p_27256_2_)
|
||||
|
||||
{
|
||||
int var3 = this.left + 1;
|
||||
int var4 = this.left + this.listWidth - 7;
|
||||
int var5 = p_27256_2_ - this.top - this.field_27261_r + (int)this.scrollDistance - 4;
|
||||
int var6 = var5 / this.slotHeight;
|
||||
return p_27256_1_ >= var3 && p_27256_1_ <= var4 && var6 >= 0 && var5 >= 0 && var6 < this.getSize() ? var6 : -1;
|
||||
}
|
||||
|
||||
public void registerScrollButtons(@SuppressWarnings("rawtypes") List p_22240_1_, int p_22240_2_, int p_22240_3_)
|
||||
{
|
||||
this.scrollUpActionId = p_22240_2_;
|
||||
this.scrollDownActionId = p_22240_3_;
|
||||
}
|
||||
|
||||
private void applyScrollLimits()
|
||||
{
|
||||
int var1 = this.getContentHeight() - (this.bottom - this.top - 4);
|
||||
|
||||
if (var1 < 0)
|
||||
{
|
||||
var1 /= 2;
|
||||
}
|
||||
|
||||
if (this.scrollDistance < 0.0F)
|
||||
{
|
||||
this.scrollDistance = 0.0F;
|
||||
}
|
||||
|
||||
if (this.scrollDistance > (float)var1)
|
||||
{
|
||||
this.scrollDistance = (float)var1;
|
||||
}
|
||||
}
|
||||
|
||||
public void actionPerformed(GuiButton button)
|
||||
{
|
||||
if (button.enabled)
|
||||
{
|
||||
if (button.id == this.scrollUpActionId)
|
||||
{
|
||||
this.scrollDistance -= (float)(this.slotHeight * 2 / 3);
|
||||
this.initialMouseClickY = -2.0F;
|
||||
this.applyScrollLimits();
|
||||
}
|
||||
else if (button.id == this.scrollDownActionId)
|
||||
{
|
||||
this.scrollDistance += (float)(this.slotHeight * 2 / 3);
|
||||
this.initialMouseClickY = -2.0F;
|
||||
this.applyScrollLimits();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void drawScreen(int mouseX, int mouseY, float p_22243_3_)
|
||||
{
|
||||
this.mouseX = mouseX;
|
||||
this.mouseY = mouseY;
|
||||
this.drawBackground();
|
||||
int listLength = this.getSize();
|
||||
int scrollBarXStart = this.left + this.listWidth - 6;
|
||||
int scrollBarXEnd = scrollBarXStart + 6;
|
||||
int boxLeft = this.left;
|
||||
int boxRight = scrollBarXStart-1;
|
||||
int var10;
|
||||
int var11;
|
||||
int var13;
|
||||
int var19;
|
||||
|
||||
if (Mouse.isButtonDown(0))
|
||||
{
|
||||
if (this.initialMouseClickY == -1.0F)
|
||||
{
|
||||
boolean var7 = true;
|
||||
|
||||
if (mouseY >= this.top && mouseY <= this.bottom)
|
||||
{
|
||||
var10 = mouseY - this.top - this.field_27261_r + (int)this.scrollDistance - 4;
|
||||
var11 = var10 / this.slotHeight;
|
||||
|
||||
if (mouseX >= boxLeft && mouseX <= boxRight && var11 >= 0 && var10 >= 0 && var11 < listLength)
|
||||
{
|
||||
boolean var12 = var11 == this.selectedIndex && System.currentTimeMillis() - this.lastClickTime < 250L;
|
||||
this.elementClicked(var11, var12);
|
||||
this.selectedIndex = var11;
|
||||
this.lastClickTime = System.currentTimeMillis();
|
||||
}
|
||||
else if (mouseX >= boxLeft && mouseX <= boxRight && var10 < 0)
|
||||
{
|
||||
this.func_27255_a(mouseX - boxLeft, mouseY - this.top + (int)this.scrollDistance - 4);
|
||||
var7 = false;
|
||||
}
|
||||
|
||||
if (mouseX >= scrollBarXStart && mouseX <= scrollBarXEnd)
|
||||
{
|
||||
this.scrollFactor = -1.0F;
|
||||
var19 = this.getContentHeight() - (this.bottom - this.top - 4);
|
||||
|
||||
if (var19 < 1)
|
||||
{
|
||||
var19 = 1;
|
||||
}
|
||||
|
||||
var13 = (int)((float)((this.bottom - this.top) * (this.bottom - this.top)) / (float)this.getContentHeight());
|
||||
|
||||
if (var13 < 32)
|
||||
{
|
||||
var13 = 32;
|
||||
}
|
||||
|
||||
if (var13 > this.bottom - this.top - 8)
|
||||
{
|
||||
var13 = this.bottom - this.top - 8;
|
||||
}
|
||||
|
||||
this.scrollFactor /= (float)(this.bottom - this.top - var13) / (float)var19;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.scrollFactor = 1.0F;
|
||||
}
|
||||
|
||||
if (var7)
|
||||
{
|
||||
this.initialMouseClickY = (float)mouseY;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.initialMouseClickY = -2.0F;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.initialMouseClickY = -2.0F;
|
||||
}
|
||||
}
|
||||
else if (this.initialMouseClickY >= 0.0F)
|
||||
{
|
||||
this.scrollDistance -= ((float)mouseY - this.initialMouseClickY) * this.scrollFactor;
|
||||
this.initialMouseClickY = (float)mouseY;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (Mouse.next())
|
||||
{
|
||||
int var16 = Mouse.getEventDWheel();
|
||||
|
||||
if (var16 != 0)
|
||||
{
|
||||
if (var16 > 0)
|
||||
{
|
||||
var16 = -1;
|
||||
}
|
||||
else if (var16 < 0)
|
||||
{
|
||||
var16 = 1;
|
||||
}
|
||||
|
||||
this.scrollDistance += (float)(var16 * this.slotHeight / 2);
|
||||
}
|
||||
}
|
||||
|
||||
this.initialMouseClickY = -1.0F;
|
||||
}
|
||||
|
||||
this.applyScrollLimits();
|
||||
Tessellator tess = Tessellator.getInstance();
|
||||
WorldRenderer worldr = tess.getWorldRenderer();
|
||||
if (this.client.theWorld != null)
|
||||
{
|
||||
this.drawGradientRect(this.left, this.top, this.right, this.bottom, -1072689136, -804253680);
|
||||
}
|
||||
else
|
||||
{
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_FOG);
|
||||
this.client.renderEngine.bindTexture(Gui.optionsBackground);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
float var17 = 32.0F;
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorOpaque_I(2105376);
|
||||
worldr.addVertexWithUV((double)this.left, (double)this.bottom, 0.0D, (double)((float)this.left / var17), (double)((float)(this.bottom + (int)this.scrollDistance) / var17));
|
||||
worldr.addVertexWithUV((double)this.right, (double)this.bottom, 0.0D, (double)((float)this.right / var17), (double)((float)(this.bottom + (int)this.scrollDistance) / var17));
|
||||
worldr.addVertexWithUV((double)this.right, (double)this.top, 0.0D, (double)((float)this.right / var17), (double)((float)(this.top + (int)this.scrollDistance) / var17));
|
||||
worldr.addVertexWithUV((double)this.left, (double)this.top, 0.0D, (double)((float)this.left / var17), (double)((float)(this.top + (int)this.scrollDistance) / var17));
|
||||
tess.draw();
|
||||
}
|
||||
// boxRight = this.listWidth / 2 - 92 - 16;
|
||||
var10 = this.top + 4 - (int)this.scrollDistance;
|
||||
|
||||
if (this.field_27262_q)
|
||||
{
|
||||
this.func_27260_a(boxRight, var10, tess);
|
||||
}
|
||||
|
||||
int var14;
|
||||
|
||||
for (var11 = 0; var11 < listLength; ++var11)
|
||||
{
|
||||
var19 = var10 + var11 * this.slotHeight + this.field_27261_r;
|
||||
var13 = this.slotHeight - 4;
|
||||
|
||||
if (var19 <= this.bottom && var19 + var13 >= this.top)
|
||||
{
|
||||
if (this.field_25123_p && this.isSelected(var11))
|
||||
{
|
||||
var14 = boxLeft;
|
||||
int var15 = boxRight;
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorOpaque_I(8421504);
|
||||
worldr.addVertexWithUV((double)var14, (double)(var19 + var13 + 2), 0.0D, 0.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)var15, (double)(var19 + var13 + 2), 0.0D, 1.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)var15, (double)(var19 - 2), 0.0D, 1.0D, 0.0D);
|
||||
worldr.addVertexWithUV((double)var14, (double)(var19 - 2), 0.0D, 0.0D, 0.0D);
|
||||
worldr.setColorOpaque_I(0);
|
||||
worldr.addVertexWithUV((double)(var14 + 1), (double)(var19 + var13 + 1), 0.0D, 0.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)(var15 - 1), (double)(var19 + var13 + 1), 0.0D, 1.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)(var15 - 1), (double)(var19 - 1), 0.0D, 1.0D, 0.0D);
|
||||
worldr.addVertexWithUV((double)(var14 + 1), (double)(var19 - 1), 0.0D, 0.0D, 0.0D);
|
||||
tess.draw();
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
this.drawSlot(var11, boxRight, var19, var13, tess);
|
||||
}
|
||||
}
|
||||
|
||||
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||||
byte var20 = 4;
|
||||
if (this.client.theWorld == null)
|
||||
{
|
||||
this.overlayBackground(0, this.top, 255, 255);
|
||||
this.overlayBackground(this.bottom, this.listHeight, 255, 255);
|
||||
}
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorRGBA_I(0, 0);
|
||||
worldr.addVertexWithUV((double)this.left, (double)(this.top + var20), 0.0D, 0.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)this.right, (double)(this.top + var20), 0.0D, 1.0D, 1.0D);
|
||||
worldr.setColorRGBA_I(0, 255);
|
||||
worldr.addVertexWithUV((double)this.right, (double)this.top, 0.0D, 1.0D, 0.0D);
|
||||
worldr.addVertexWithUV((double)this.left, (double)this.top, 0.0D, 0.0D, 0.0D);
|
||||
tess.draw();
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorRGBA_I(0, 255);
|
||||
worldr.addVertexWithUV((double)this.left, (double)this.bottom, 0.0D, 0.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)this.right, (double)this.bottom, 0.0D, 1.0D, 1.0D);
|
||||
worldr.setColorRGBA_I(0, 0);
|
||||
worldr.addVertexWithUV((double)this.right, (double)(this.bottom - var20), 0.0D, 1.0D, 0.0D);
|
||||
worldr.addVertexWithUV((double)this.left, (double)(this.bottom - var20), 0.0D, 0.0D, 0.0D);
|
||||
tess.draw();
|
||||
var19 = this.getContentHeight() - (this.bottom - this.top - 4);
|
||||
|
||||
if (var19 > 0)
|
||||
{
|
||||
var13 = (this.bottom - this.top) * (this.bottom - this.top) / this.getContentHeight();
|
||||
|
||||
if (var13 < 32)
|
||||
{
|
||||
var13 = 32;
|
||||
}
|
||||
|
||||
if (var13 > this.bottom - this.top - 8)
|
||||
{
|
||||
var13 = this.bottom - this.top - 8;
|
||||
}
|
||||
|
||||
var14 = (int)this.scrollDistance * (this.bottom - this.top - var13) / var19 + this.top;
|
||||
|
||||
if (var14 < this.top)
|
||||
{
|
||||
var14 = this.top;
|
||||
}
|
||||
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorRGBA_I(0, 255);
|
||||
worldr.addVertexWithUV((double)scrollBarXStart, (double)this.bottom, 0.0D, 0.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)scrollBarXEnd, (double)this.bottom, 0.0D, 1.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)scrollBarXEnd, (double)this.top, 0.0D, 1.0D, 0.0D);
|
||||
worldr.addVertexWithUV((double)scrollBarXStart, (double)this.top, 0.0D, 0.0D, 0.0D);
|
||||
tess.draw();
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorRGBA_I(8421504, 255);
|
||||
worldr.addVertexWithUV((double)scrollBarXStart, (double)(var14 + var13), 0.0D, 0.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)scrollBarXEnd, (double)(var14 + var13), 0.0D, 1.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)scrollBarXEnd, (double)var14, 0.0D, 1.0D, 0.0D);
|
||||
worldr.addVertexWithUV((double)scrollBarXStart, (double)var14, 0.0D, 0.0D, 0.0D);
|
||||
tess.draw();
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorRGBA_I(12632256, 255);
|
||||
worldr.addVertexWithUV((double)scrollBarXStart, (double)(var14 + var13 - 1), 0.0D, 0.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)(scrollBarXEnd - 1), (double)(var14 + var13 - 1), 0.0D, 1.0D, 1.0D);
|
||||
worldr.addVertexWithUV((double)(scrollBarXEnd - 1), (double)var14, 0.0D, 1.0D, 0.0D);
|
||||
worldr.addVertexWithUV((double)scrollBarXStart, (double)var14, 0.0D, 0.0D, 0.0D);
|
||||
tess.draw();
|
||||
}
|
||||
|
||||
this.func_27257_b(mouseX, mouseY);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
}
|
||||
|
||||
private void overlayBackground(int p_22239_1_, int p_22239_2_, int p_22239_3_, int p_22239_4_)
|
||||
{
|
||||
Tessellator var5 = Tessellator.getInstance();
|
||||
WorldRenderer worldr = var5.getWorldRenderer();
|
||||
this.client.renderEngine.bindTexture(Gui.optionsBackground);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
float var6 = 32.0F;
|
||||
worldr.startDrawingQuads();
|
||||
worldr.setColorRGBA_I(4210752, p_22239_4_);
|
||||
worldr.addVertexWithUV(0.0D, (double)p_22239_2_, 0.0D, 0.0D, (double)((float)p_22239_2_ / var6));
|
||||
worldr.addVertexWithUV((double)this.listWidth + 30, (double)p_22239_2_, 0.0D, (double)((float)(this.listWidth + 30) / var6), (double)((float)p_22239_2_ / var6));
|
||||
worldr.setColorRGBA_I(4210752, p_22239_3_);
|
||||
worldr.addVertexWithUV((double)this.listWidth + 30, (double)p_22239_1_, 0.0D, (double)((float)(this.listWidth + 30) / var6), (double)((float)p_22239_1_ / var6));
|
||||
worldr.addVertexWithUV(0.0D, (double)p_22239_1_, 0.0D, 0.0D, (double)((float)p_22239_1_ / var6));
|
||||
var5.draw();
|
||||
}
|
||||
|
||||
protected void drawGradientRect(int par1, int par2, int par3, int par4, int par5, int par6)
|
||||
{
|
||||
float f = (float)(par5 >> 24 & 255) / 255.0F;
|
||||
float f1 = (float)(par5 >> 16 & 255) / 255.0F;
|
||||
float f2 = (float)(par5 >> 8 & 255) / 255.0F;
|
||||
float f3 = (float)(par5 & 255) / 255.0F;
|
||||
float f4 = (float)(par6 >> 24 & 255) / 255.0F;
|
||||
float f5 = (float)(par6 >> 16 & 255) / 255.0F;
|
||||
float f6 = (float)(par6 >> 8 & 255) / 255.0F;
|
||||
float f7 = (float)(par6 & 255) / 255.0F;
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glDisable(GL11.GL_ALPHA_TEST);
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
|
||||
worldrenderer.startDrawingQuads();
|
||||
worldrenderer.setColorRGBA_F(f1, f2, f3, f);
|
||||
worldrenderer.addVertex((double)par3, (double)par2, 0.0D);
|
||||
worldrenderer.addVertex((double)par1, (double)par2, 0.0D);
|
||||
worldrenderer.setColorRGBA_F(f5, f6, f7, f4);
|
||||
worldrenderer.addVertex((double)par1, (double)par4, 0.0D);
|
||||
worldrenderer.addVertex((double)par3, (double)par4, 0.0D);
|
||||
tessellator.draw();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glEnable(GL11.GL_ALPHA_TEST);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
}
|
||||
}
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.client;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.util.StringUtils;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.LoaderState.ModState;
|
||||
import net.minecraftforge.fml.common.ModContainer;
|
||||
|
||||
/**
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
public class GuiSlotModList extends GuiScrollingList
|
||||
{
|
||||
private GuiModList parent;
|
||||
private ArrayList<ModContainer> mods;
|
||||
|
||||
public GuiSlotModList(GuiModList parent, ArrayList<ModContainer> mods, int listWidth)
|
||||
{
|
||||
super(parent.getMinecraftInstance(), listWidth, parent.height, 32, parent.height - 88 + 4, 10, 35);
|
||||
this.parent=parent;
|
||||
this.mods=mods;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSize()
|
||||
{
|
||||
return mods.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void elementClicked(int var1, boolean var2)
|
||||
{
|
||||
this.parent.selectModIndex(var1);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isSelected(int var1)
|
||||
{
|
||||
return this.parent.modIndexSelected(var1);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawBackground()
|
||||
{
|
||||
this.parent.drawDefaultBackground();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getContentHeight()
|
||||
{
|
||||
return (this.getSize()) * 35 + 1;
|
||||
}
|
||||
|
||||
ArrayList<ModContainer> getMods()
|
||||
{
|
||||
return mods;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawSlot(int listIndex, int var2, int var3, int var4, Tessellator var5)
|
||||
{
|
||||
ModContainer mc=mods.get(listIndex);
|
||||
String name = StringUtils.stripControlCodes(mc.getName());
|
||||
String version = StringUtils.stripControlCodes(mc.getDisplayVersion());
|
||||
if (Loader.instance().getModState(mc)==ModState.DISABLED)
|
||||
{
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(name, listWidth - 10), this.left + 3 , var3 + 2, 0xFF2222);
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(version, listWidth - 10), this.left + 3 , var3 + 12, 0xFF2222);
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth("DISABLED", listWidth - 10), this.left + 3 , var3 + 22, 0xFF2222);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(name, listWidth - 10), this.left + 3 , var3 + 2, 0xFFFFFF);
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(version, listWidth - 10), this.left + 3 , var3 + 12, 0xCCCCCC);
|
||||
this.parent.getFontRenderer().drawString(this.parent.getFontRenderer().trimStringToWidth(mc.getMetadata() !=null ? mc.getMetadata().getChildModCountString() : "Metadata not found", listWidth - 10), this.left + 3 , var3 + 22, 0xCCCCCC);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,196 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2014 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors (this class):
|
||||
* bspkrs - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.client.config;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
/**
|
||||
* This class provides several methods and constants used by the Config GUI classes.
|
||||
*
|
||||
* @author bspkrs
|
||||
*/
|
||||
public class GuiUtils
|
||||
{
|
||||
public static final String UNDO_CHAR = "\u21B6";
|
||||
public static final String RESET_CHAR = "\u2604";
|
||||
public static final String VALID = "\u2714";
|
||||
public static final String INVALID = "\u2715";
|
||||
|
||||
public static int[] colorCodes = new int[] { 0, 170, 43520, 43690, 11141120, 11141290, 16755200, 11184810, 5592405, 5592575, 5635925, 5636095, 16733525, 16733695, 16777045, 16777215,
|
||||
0, 42, 10752, 10794, 2752512, 2752554, 2763264, 2763306, 1381653, 1381695, 1392405, 1392447, 4134165, 4134207, 4144917, 4144959 };
|
||||
|
||||
public static int getColorCode(char c, boolean isLighter)
|
||||
{
|
||||
return colorCodes[isLighter ? "0123456789abcdef".indexOf(c) : "0123456789abcdef".indexOf(c) + 16];
|
||||
}
|
||||
/**
|
||||
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
|
||||
* and filler. It is assumed that the desired texture ResourceLocation object has been bound using
|
||||
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
|
||||
*
|
||||
* @param x x axis offset
|
||||
* @param y y axis offset
|
||||
* @param u bound resource location image x offset
|
||||
* @param v bound resource location image y offset
|
||||
* @param width the desired box width
|
||||
* @param height the desired box height
|
||||
* @param textureWidth the width of the box texture in the resource location image
|
||||
* @param textureHeight the height of the box texture in the resource location image
|
||||
* @param borderSize the size of the box's borders
|
||||
* @param zLevel the zLevel to draw at
|
||||
*/
|
||||
public static void drawContinuousTexturedBox(int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
|
||||
int borderSize, float zLevel)
|
||||
{
|
||||
drawContinuousTexturedBox(x, y, u, v, width, height, textureWidth, textureHeight, borderSize, borderSize, borderSize, borderSize, zLevel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
|
||||
* and filler. The provided ResourceLocation object will be bound using
|
||||
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
|
||||
*
|
||||
* @param res the ResourceLocation object that contains the desired image
|
||||
* @param x x axis offset
|
||||
* @param y y axis offset
|
||||
* @param u bound resource location image x offset
|
||||
* @param v bound resource location image y offset
|
||||
* @param width the desired box width
|
||||
* @param height the desired box height
|
||||
* @param textureWidth the width of the box texture in the resource location image
|
||||
* @param textureHeight the height of the box texture in the resource location image
|
||||
* @param borderSize the size of the box's borders
|
||||
* @param zLevel the zLevel to draw at
|
||||
*/
|
||||
public static void drawContinuousTexturedBox(ResourceLocation res, int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
|
||||
int borderSize, float zLevel)
|
||||
{
|
||||
drawContinuousTexturedBox(res, x, y, u, v, width, height, textureWidth, textureHeight, borderSize, borderSize, borderSize, borderSize, zLevel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
|
||||
* and filler. The provided ResourceLocation object will be bound using
|
||||
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
|
||||
*
|
||||
* @param res the ResourceLocation object that contains the desired image
|
||||
* @param x x axis offset
|
||||
* @param y y axis offset
|
||||
* @param u bound resource location image x offset
|
||||
* @param v bound resource location image y offset
|
||||
* @param width the desired box width
|
||||
* @param height the desired box height
|
||||
* @param textureWidth the width of the box texture in the resource location image
|
||||
* @param textureHeight the height of the box texture in the resource location image
|
||||
* @param topBorder the size of the box's top border
|
||||
* @param bottomBorder the size of the box's bottom border
|
||||
* @param leftBorder the size of the box's left border
|
||||
* @param rightBorder the size of the box's right border
|
||||
* @param zLevel the zLevel to draw at
|
||||
*/
|
||||
public static void drawContinuousTexturedBox(ResourceLocation res, int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
|
||||
int topBorder, int bottomBorder, int leftBorder, int rightBorder, float zLevel)
|
||||
{
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(res);
|
||||
drawContinuousTexturedBox(x, y, u, v, width, height, textureWidth, textureHeight, topBorder, bottomBorder, leftBorder, rightBorder, zLevel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws a textured box of any size (smallest size is borderSize * 2 square) based on a fixed size textured box with continuous borders
|
||||
* and filler. It is assumed that the desired texture ResourceLocation object has been bound using
|
||||
* Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation).
|
||||
*
|
||||
* @param x x axis offset
|
||||
* @param y y axis offset
|
||||
* @param u bound resource location image x offset
|
||||
* @param v bound resource location image y offset
|
||||
* @param width the desired box width
|
||||
* @param height the desired box height
|
||||
* @param textureWidth the width of the box texture in the resource location image
|
||||
* @param textureHeight the height of the box texture in the resource location image
|
||||
* @param topBorder the size of the box's top border
|
||||
* @param bottomBorder the size of the box's bottom border
|
||||
* @param leftBorder the size of the box's left border
|
||||
* @param rightBorder the size of the box's right border
|
||||
* @param zLevel the zLevel to draw at
|
||||
*/
|
||||
public static void drawContinuousTexturedBox(int x, int y, int u, int v, int width, int height, int textureWidth, int textureHeight,
|
||||
int topBorder, int bottomBorder, int leftBorder, int rightBorder, float zLevel)
|
||||
{
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
int fillerWidth = textureWidth - leftBorder - rightBorder;
|
||||
int fillerHeight = textureHeight - topBorder - bottomBorder;
|
||||
int canvasWidth = width - leftBorder - rightBorder;
|
||||
int canvasHeight = height - topBorder - bottomBorder;
|
||||
int xPasses = canvasWidth / fillerWidth;
|
||||
int remainderWidth = canvasWidth % fillerWidth;
|
||||
int yPasses = canvasHeight / fillerHeight;
|
||||
int remainderHeight = canvasHeight % fillerHeight;
|
||||
|
||||
// Draw Border
|
||||
// Top Left
|
||||
drawTexturedModalRect(x, y, u, v, leftBorder, topBorder, zLevel);
|
||||
// Top Right
|
||||
drawTexturedModalRect(x + leftBorder + canvasWidth, y, u + leftBorder + fillerWidth, v, rightBorder, topBorder, zLevel);
|
||||
// Bottom Left
|
||||
drawTexturedModalRect(x, y + topBorder + canvasHeight, u, v + topBorder + fillerHeight, leftBorder, bottomBorder, zLevel);
|
||||
// Bottom Right
|
||||
drawTexturedModalRect(x + leftBorder + canvasWidth, y + topBorder + canvasHeight, u + leftBorder + fillerWidth, v + topBorder + fillerHeight, rightBorder, bottomBorder, zLevel);
|
||||
|
||||
for (int i = 0; i < xPasses + (remainderWidth > 0 ? 1 : 0); i++)
|
||||
{
|
||||
// Top Border
|
||||
drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y, u + leftBorder, v, (i == xPasses ? remainderWidth : fillerWidth), topBorder, zLevel);
|
||||
// Bottom Border
|
||||
drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y + topBorder + canvasHeight, u + leftBorder, v + topBorder + fillerHeight, (i == xPasses ? remainderWidth : fillerWidth), bottomBorder, zLevel);
|
||||
|
||||
// Throw in some filler for good measure
|
||||
for (int j = 0; j < yPasses + (remainderHeight > 0 ? 1 : 0); j++)
|
||||
drawTexturedModalRect(x + leftBorder + (i * fillerWidth), y + topBorder + (j * fillerHeight), u + leftBorder, v + topBorder, (i == xPasses ? remainderWidth : fillerWidth), (j == yPasses ? remainderHeight : fillerHeight), zLevel);
|
||||
}
|
||||
|
||||
// Side Borders
|
||||
for (int j = 0; j < yPasses + (remainderHeight > 0 ? 1 : 0); j++)
|
||||
{
|
||||
// Left Border
|
||||
drawTexturedModalRect(x, y + topBorder + (j * fillerHeight), u, v + topBorder, leftBorder, (j == yPasses ? remainderHeight : fillerHeight), zLevel);
|
||||
// Right Border
|
||||
drawTexturedModalRect(x + leftBorder + canvasWidth, y + topBorder + (j * fillerHeight), u + leftBorder + fillerWidth, v + topBorder, rightBorder, (j == yPasses ? remainderHeight : fillerHeight), zLevel);
|
||||
}
|
||||
}
|
||||
|
||||
public static void drawTexturedModalRect(int x, int y, int u, int v, int width, int height, float zLevel)
|
||||
{
|
||||
float var7 = 0.00390625F;
|
||||
float var8 = 0.00390625F;
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
WorldRenderer worldr = tessellator.getWorldRenderer();
|
||||
worldr.startDrawingQuads();
|
||||
worldr.addVertexWithUV((x + 0), (y + height), zLevel, ((u + 0) * var7), ((v + height) * var8));
|
||||
worldr.addVertexWithUV((x + width), (y + height), zLevel, ((u + width) * var7), ((v + height) * var8));
|
||||
worldr.addVertexWithUV((x + width), (y + 0), zLevel, ((u + width) * var7), ((v + 0) * var8));
|
||||
worldr.addVertexWithUV((x + 0), (y + 0), zLevel, ((u + 0) * var7), ((v + 0) * var8));
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
package net.minecraftforge.fml.client.registry;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
/**
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
public class RenderingRegistry
|
||||
{
|
||||
private static final RenderingRegistry INSTANCE = new RenderingRegistry();
|
||||
|
||||
private List<EntityRendererInfo> entityRenderers = Lists.newArrayList();
|
||||
|
||||
/**
|
||||
* Register an entity rendering handler. This will, after mod initialization, be inserted into the main
|
||||
* render map for entities
|
||||
*
|
||||
* @param entityClass
|
||||
* @param renderer
|
||||
*/
|
||||
public static void registerEntityRenderingHandler(Class<? extends Entity> entityClass, Render renderer)
|
||||
{
|
||||
INSTANCE.entityRenderers.add(new EntityRendererInfo(entityClass, renderer));
|
||||
}
|
||||
|
||||
private static class EntityRendererInfo
|
||||
{
|
||||
public EntityRendererInfo(Class<? extends Entity> target, Render renderer)
|
||||
{
|
||||
this.target = target;
|
||||
this.renderer = renderer;
|
||||
}
|
||||
private Class<? extends Entity> target;
|
||||
private Render renderer;
|
||||
}
|
||||
|
||||
public static void loadEntityRenderers(Map<Class<? extends Entity>, Render> rendererMap)
|
||||
{
|
||||
for (EntityRendererInfo info : INSTANCE.entityRenderers)
|
||||
{
|
||||
rendererMap.put(info.target, info.renderer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.common;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Declare a variable to be populated by a Bukkit Plugin proxy instance if the bukkit coremod
|
||||
* is available. It can only be applied to field typed as {@link BukkitProxy}
|
||||
* Generally it should be used in conjunction with {@link Mod#bukkitPlugin()} specifying the
|
||||
* plugin to load.
|
||||
*
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface BukkitPluginRef
|
||||
{
|
||||
/**
|
||||
* A reference (possibly version specific) to a Bukkit Plugin by name, using the name@versionbound
|
||||
* specification. If this is a bukkit enabled environment the field annotated by this
|
||||
* will be populated with a {@link BukkitProxy} instance if possible. This proxy will be gotten by
|
||||
* reflectively calling the "getModProxy" method on the bukkit plugin instance.
|
||||
* @return The name of the plugin which we will inject into this field
|
||||
*/
|
||||
String value();
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.common;
|
||||
|
||||
/**
|
||||
* A marker interface for retrieving a proxy to a bukkit plugin.
|
||||
* Fields associated with {@link BukkitPluginRef} annotations should
|
||||
* declare this type and cast down if the target is available (not null)
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
public interface BukkitProxy
|
||||
{
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.common;
|
||||
|
||||
import org.objectweb.asm.tree.ClassNode;
|
||||
|
||||
public interface IASMHook {
|
||||
/**
|
||||
* Inject the {@link Mod} class node into this instance. This allows retrieval from custom
|
||||
* attributes or other artifacts in your mod class
|
||||
*
|
||||
* @param modClassNode The mod class
|
||||
* @return optionally some code generated classes that will be injected into the classloader
|
||||
*/
|
||||
ClassNode[] inject(ClassNode modClassNode);
|
||||
/**
|
||||
* Allow mods to manipulate classes loaded from this {@link Mod}'s jar file. The {@link Mod}
|
||||
* class is always guaranteed to be called first.
|
||||
* The node state should be changed in place.
|
||||
*
|
||||
* @param node The class being loaded
|
||||
*/
|
||||
void modifyClass(String className, ClassNode node);
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.common;
|
||||
|
||||
public class WrongMinecraftVersionException extends RuntimeException
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
public ModContainer mod;
|
||||
|
||||
public WrongMinecraftVersionException(ModContainer mod)
|
||||
{
|
||||
super(String.format("Wrong Minecraft version for %s", mod.getModId()));
|
||||
this.mod = mod;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,218 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.common.event;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import net.minecraftforge.fml.common.FMLLog;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.LoaderState;
|
||||
import net.minecraftforge.fml.common.ModContainer;
|
||||
import net.minecraftforge.fml.common.Mod.Instance;
|
||||
|
||||
import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
/**
|
||||
* Simple intermod communications to receive simple messages directed at you
|
||||
* from other mods
|
||||
*
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
public class FMLInterModComms {
|
||||
private static final ImmutableList<IMCMessage> emptyIMCList = ImmutableList.<IMCMessage>of();
|
||||
private static ArrayListMultimap<String, IMCMessage> modMessages = ArrayListMultimap.create();
|
||||
|
||||
/**
|
||||
* Subscribe to this event to receive your messages (they are sent between
|
||||
* {@link Init} and {@link PostInit})
|
||||
*
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
public static class IMCEvent extends FMLEvent {
|
||||
private ModContainer activeContainer;
|
||||
|
||||
@Override
|
||||
public void applyModContainer(ModContainer activeContainer)
|
||||
{
|
||||
this.activeContainer = activeContainer;
|
||||
this.currentList = null;
|
||||
FMLLog.finer("Attempting to deliver %d IMC messages to mod %s", modMessages.get(activeContainer.getModId()).size(), activeContainer.getModId());
|
||||
}
|
||||
|
||||
private ImmutableList<IMCMessage> currentList;
|
||||
|
||||
public ImmutableList<IMCMessage> getMessages()
|
||||
{
|
||||
if (currentList == null)
|
||||
{
|
||||
currentList = ImmutableList.copyOf(modMessages.removeAll(activeContainer.getModId()));
|
||||
}
|
||||
return currentList;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* You will receive an instance of this for each message sent
|
||||
*
|
||||
* @author cpw
|
||||
*
|
||||
*/
|
||||
public static final class IMCMessage {
|
||||
/**
|
||||
* This is the modid of the mod that sent you the message
|
||||
*/
|
||||
private String sender;
|
||||
/**
|
||||
* This field, and {@link #value} are both at the mod's discretion
|
||||
*/
|
||||
public final String key;
|
||||
/**
|
||||
* This field, and {@link #key} are both at the mod's discretion
|
||||
*/
|
||||
private Object value;
|
||||
|
||||
private IMCMessage(String key, Object value)
|
||||
{
|
||||
this.key = key;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return sender;
|
||||
}
|
||||
|
||||
public String getSender()
|
||||
{
|
||||
return this.sender;
|
||||
}
|
||||
|
||||
void setSender(ModContainer activeModContainer)
|
||||
{
|
||||
this.sender = activeModContainer.getModId();
|
||||
}
|
||||
|
||||
public String getStringValue()
|
||||
{
|
||||
return (String) value;
|
||||
}
|
||||
|
||||
public NBTTagCompound getNBTValue()
|
||||
{
|
||||
return (NBTTagCompound) value;
|
||||
}
|
||||
|
||||
public ItemStack getItemStackValue()
|
||||
{
|
||||
return (ItemStack) value;
|
||||
}
|
||||
|
||||
public Class<?> getMessageType()
|
||||
{
|
||||
return value.getClass();
|
||||
}
|
||||
|
||||
public boolean isStringMessage()
|
||||
{
|
||||
return String.class.isAssignableFrom(getMessageType());
|
||||
}
|
||||
|
||||
public boolean isItemStackMessage()
|
||||
{
|
||||
return ItemStack.class.isAssignableFrom(getMessageType());
|
||||
}
|
||||
|
||||
public boolean isNBTMessage()
|
||||
{
|
||||
return NBTTagCompound.class.isAssignableFrom(getMessageType());
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean sendMessage(String modId, String key, NBTTagCompound value)
|
||||
{
|
||||
return enqueueStartupMessage(modId, new IMCMessage(key, value));
|
||||
}
|
||||
public static boolean sendMessage(String modId, String key, ItemStack value)
|
||||
{
|
||||
return enqueueStartupMessage(modId, new IMCMessage(key, value));
|
||||
}
|
||||
public static boolean sendMessage(String modId, String key, String value)
|
||||
{
|
||||
return enqueueStartupMessage(modId, new IMCMessage(key, value));
|
||||
}
|
||||
|
||||
public static void sendRuntimeMessage(Object sourceMod, String modId, String key, NBTTagCompound value)
|
||||
{
|
||||
enqueueMessage(sourceMod, modId, new IMCMessage(key, value));
|
||||
}
|
||||
|
||||
public static void sendRuntimeMessage(Object sourceMod, String modId, String key, ItemStack value)
|
||||
{
|
||||
enqueueMessage(sourceMod, modId, new IMCMessage(key, value));
|
||||
}
|
||||
|
||||
public static void sendRuntimeMessage(Object sourceMod, String modId, String key, String value)
|
||||
{
|
||||
enqueueMessage(sourceMod, modId, new IMCMessage(key, value));
|
||||
}
|
||||
|
||||
private static boolean enqueueStartupMessage(String modTarget, IMCMessage message)
|
||||
{
|
||||
if (Loader.instance().activeModContainer() == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
enqueueMessage(Loader.instance().activeModContainer(), modTarget, message);
|
||||
return Loader.isModLoaded(modTarget) && !Loader.instance().hasReachedState(LoaderState.POSTINITIALIZATION);
|
||||
|
||||
}
|
||||
private static void enqueueMessage(Object sourceMod, String modTarget, IMCMessage message)
|
||||
{
|
||||
ModContainer mc;
|
||||
if (sourceMod instanceof ModContainer) {
|
||||
mc = (ModContainer) sourceMod;
|
||||
}
|
||||
else
|
||||
{
|
||||
mc = FMLCommonHandler.instance().findContainerFor(sourceMod);
|
||||
}
|
||||
if (mc != null && Loader.isModLoaded(modTarget))
|
||||
{
|
||||
message.setSender(mc);
|
||||
modMessages.put(modTarget, message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve any pending runtime messages for the mod
|
||||
* @param forMod The {@link Instance} of the Mod to fetch messages for
|
||||
* @return any messages - the collection will never be null
|
||||
*/
|
||||
public static ImmutableList<IMCMessage> fetchRuntimeMessages(Object forMod)
|
||||
{
|
||||
ModContainer mc = FMLCommonHandler.instance().findContainerFor(forMod);
|
||||
if (mc != null)
|
||||
{
|
||||
return ImmutableList.copyOf(modMessages.removeAll(mc.getModId()));
|
||||
}
|
||||
else
|
||||
{
|
||||
return emptyIMCList;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Forge Mod Loader
|
||||
* Copyright (c) 2012-2013 cpw.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the GNU Lesser Public License v2.1
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* Contributors:
|
||||
* cpw - implementation
|
||||
*/
|
||||
|
||||
package net.minecraftforge.fml.common.event;
|
||||
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.LoaderState.ModState;
|
||||
|
||||
import com.google.common.base.Throwables;
|
||||
|
||||
public class FMLPostInitializationEvent extends FMLStateEvent
|
||||
{
|
||||
public FMLPostInitializationEvent(Object... data)
|
||||
{
|
||||
super(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModState getModState()
|
||||
{
|
||||
return ModState.POSTINITIALIZED;
|
||||
}
|
||||
|
||||
public Object buildSoftDependProxy(String modId, String className)
|
||||
{
|
||||
if (Loader.isModLoaded(modId))
|
||||
{
|
||||
try
|
||||
{
|
||||
Class<?> clz = Class.forName(className,true,Loader.instance().getModClassLoader());
|
||||
return clz.newInstance();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Throwables.propagateIfPossible(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Loaded 100 of 1201 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user