-
Notifications
You must be signed in to change notification settings - Fork 69
Expand file tree
/
Copy pathCS.java
More file actions
2336 lines (2111 loc) · 149 KB
/
CS.java
File metadata and controls
2336 lines (2111 loc) · 149 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/**
* Copyright (c) 2024 GregTech-6 Team
*
* This file is part of GregTech.
*
* GregTech 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 3 of the License, or
* (at your option) any later version.
*
* GregTech 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 GregTech. If not, see <http://www.gnu.org/licenses/>.
*/
package gregapi.data;
import gregapi.api.Abstract_Mod;
import gregapi.block.BlockBase;
import gregapi.block.IBlockBase;
import gregapi.block.IBlockPlacable;
import gregapi.block.IPrefixBlock;
import gregapi.block.fluid.BlockBaseFluid;
import gregapi.code.*;
import gregapi.compat.buildcraft.ICompatBC;
import gregapi.compat.computercraft.ICompatCC;
import gregapi.compat.forestry.ICompatFR;
import gregapi.compat.galacticraft.ICompatGC;
import gregapi.compat.industrialcraft.ICompatIC2;
import gregapi.compat.industrialcraft.ICompatIC2EUItem;
import gregapi.compat.opencomputers.ICompatOC;
import gregapi.compat.thaumcraft.ICompatTC;
import gregapi.compat.warpdrive.ICompatWD;
import gregapi.config.Config;
import gregapi.dummies.DummyWorld;
import gregapi.fluid.FluidTankGT;
import gregapi.item.ItemArmorBase;
import gregapi.item.multiitem.MultiItemRandom;
import gregapi.item.multiitem.MultiItemTool;
import gregapi.item.multiitem.food.IFoodStat;
import gregapi.log.LogBuffer;
import gregapi.network.INetworkHandler;
import gregapi.oredict.OreDictItemData;
import gregapi.oredict.OreDictMaterial;
import gregapi.oredict.OreDictMaterialStack;
import gregapi.oredict.OreDictPrefix;
import gregapi.recipes.Recipe;
import gregapi.render.IIconContainer;
import gregapi.render.ITexture;
import gregapi.render.IconContainerCopied;
import gregapi.util.ST;
import gregapi.util.UT;
import gregapi.wooddict.PlankEntry;
import gregapi.worldgen.WorldgenObject;
import net.minecraft.block.Block;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.*;
import net.minecraftforge.oredict.OreDictionary;
import java.io.File;
import java.io.PrintStream;
import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
/**
* @author Gregorius Techneticies
*
* Class containing useful Constants and Lists.
*
* Mainly made for use with static imports.
* I am doing this to have a better Table alike view on my Code, so I can change things faster using the Block Selection Mode of eclipse.
*
* For static imports in Eclipse go to "Window > Preferences > Java > Editor > Content Assist > Favorites" to set static importable Constant Classes such as this one as AutoCompleteable.
*/
public class CS {
/** The Object containing the actual Mod GregTech and its API. */
public static Abstract_Mod GT, GAPI, GAPI_POST;
// unused: A, D, E, G, H, I, J, K, M, N, O, P, Q, R, S, X, Y, Z
/** Because "true" and "false" are too long. Some Programmers might wanna kill me for that, but this looks much better than true and false, and also it is better to have something that is not 4 and 5 Characters long, because of symmetry */
public static final boolean T = true, F = false;
/** Character Set with all Numbers */
public static final HashSet<Character> Ch_N = new HashSet<>(Arrays.asList('0', '1', '2', '3', '4', '5', '6', '7', '8', '9'));
/** Character Set with all lowercased Characters */
public static final HashSet<Character> Ch_L = new HashSet<>(Arrays.asList('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'));
/** Character Set with all uppercased Characters */
public static final HashSet<Character> Ch_U = new HashSet<>(Arrays.asList('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'));
/** The first 32 Bits */
public static final int[] B = {1<<0,1<<1,1<<2,1<<3,1<<4,1<<5,1<<6,1<<7,1<<8,1<<9,1<<10,1<<11,1<<12,1<<13,1<<14,1<<15,1<<16,1<<17,1<<18,1<<19,1<<20,1<<21,1<<22,1<<23,1<<24,1<<25,1<<26,1<<27,1<<28,1<<29,1<<30,1<<31};
/**
* Renamed from "MATERIAL_UNIT" to just "U"
*
* This is worth exactly one normal Item.
* This Constant can be divided by many commonly used Numbers such as
* 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, ... 64, 81, 96, 144 or 1000
* without loosing precision and is for that reason used as Unit of Amount.
* But it is also small enough to be multiplied with larger Numbers.
*
* This is used to determine the amount of Material contained inside a prefixed Ore.
* For example Nugget = U / 9 as it contains out of 1/9th of an Ingot.
*/
public static final long U = 648648000, U2 = U/2, U3 = U/3, U4 = U/4, U5 = U/5, U6 = U/6, U7 = U/7, U8 = U/8, U9 = U/9, U10 = U/10, U11 = U/11, U12 = U/12, U13 = U/13, U14 = U/14, U15 = U/15, U16 = U/16, U17 = U/17, U18 = U/18, U20 = U/20, U24 = U/24, U25 = U/25, U32 = U/32, U36 = U/36, U40 = U/40, U48 = U/48, U50 = U/50, U64 = U/64, U72 = U/72, U80 = U/80, U96 = U/96, U100 = U/100, U128 = U/128, U144 = U/144, U192 = U/192, U200 = U/200, U240 = U/240, U256 = U/256, U288 = U/288, U480 = U/480, U500 = U/500, U512 = U/512, U1000 = U/1000, U1440 = U/1440;
/** The Double Version of the Material Unit "U" */
public static final double UD = U;
/**
* Renamed from "FLUID_MATERIAL_UNIT" to just "L"
*
* Fluid per Material Unit (Prime Factors: 3 * 3 * 2 * 2 * 2 * 2)
*/
public static final long L = 144;
/** The offset between Celsius and Kelvin. */
public static final long C = 273; // 273.15 IRL
/** The Default Environment Temperature in Kelvin */
public static final long DEF_ENV_TEMP = C + 20, DEFAULT_ENVIRONMENT_TEMPERATURE = C + 20; // 293.15 IRL
/** The Item WildCard Tag. Even shorter than the "-1" of the past */
public static final short W = OreDictionary.WILDCARD_VALUE;
/** Used Client Side as a placeholder for "is owned by someone other than you" */
public static final UUID NOT_YOU = new UUID(+1, -1);
/** The Size of an infinite NEI ItemStack */
public static final byte NEI_INFINITE = 111;
/** The Voltage Tiers. */
public static final long[]
VMIN = { 1, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824L, 4294967296L},
VREC = { 8, 32, 128, 512, 2048, 8192, 32768, 131072, 524288, 2097152, 8388608, 33554432, 134217728, 536870912, 2147483648L, 8589934592L},
VMAX = {16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824, 4294967296L, 17179869184L},
V = { 8, 32, 128, 512, 2048, 8192, 32768, 131072, 524288, 2097152, 8388608, 33554432, 134217728, 536870912, 2147483648L, 8589934592L};
/** The short Names for the Voltages */
public static final String[] VN = {"ULV", "LV", "MV", "HV", "EV", "IV", "LuV", "ZPM", "UV", "PUV1", "PUV2", "PUV3", "PUV4", "PUV5", "ΩV", "ΩV"};
/** The long Names for the Voltages */
public static final String[] VOLTAGE_NAMES = {"Ultra Low Voltage", "Low Voltage", "Medium Voltage", "High Voltage", "Extreme Voltage", "Insane Voltage", "Ludicrous Voltage", "ZPM Voltage", "Ultimate Voltage", "Post Ultimate Voltage 1", "Post Ultimate Voltage 2", "Post Ultimate Voltage 3", "Post Ultimate Voltage 4", "Post Ultimate Voltage 5", "Omega Voltage of Doom", "Omega Voltage of Doom"};
/** The short Names for the USB Sticks */
public static final String[] OD_USB_STICKS = {"gt:usbstick0", "gt:usbstick1", "gt:usbstick2", "gt:usbstick3", "gt:usbstick4", "gt:usbstick5", "gt:usbstick6", "gt:usbstick7", "gt:usbstick8", "gt:usbstick9"};
/** The short Names for the USB Cables */
public static final String[] OD_USB_CABLES = {"gt:usbcable0", "gt:usbcable1", "gt:usbcable2", "gt:usbcable3", "gt:usbcable4", "gt:usbcable5", "gt:usbcable6", "gt:usbcable7", "gt:usbcable8", "gt:usbcable9"};
/** The short Names for the USB Drives */
public static final String[] OD_USB_DRIVES = {"gt:usbdrive0", "gt:usbdrive1", "gt:usbdrive2", "gt:usbdrive3", "gt:usbdrive4", "gt:usbdrive5", "gt:usbdrive6", "gt:usbdrive7", "gt:usbdrive8", "gt:usbdrive9"};
/** The short Names for the Circuits */
public static final String[] OD_CIRCUITS = {"gt:circuit0", "gt:circuit1", "gt:circuit2", "gt:circuit3", "gt:circuit4", "gt:circuit5", "gt:circuit6", "gt:circuit7", "gt:circuit8", "gt:circuit9"};
/** Subtext Numbers from 0 to 1000. */
public static final String[] NUM_SUB = {
"\u2080", "\u2081", "\u2082", "\u2083", "\u2084", "\u2085", "\u2086", "\u2087", "\u2088", "\u2089"
, "\u2081\u2080", "\u2081\u2081", "\u2081\u2082", "\u2081\u2083", "\u2081\u2084", "\u2081\u2085", "\u2081\u2086", "\u2081\u2087", "\u2081\u2088", "\u2081\u2089"
, "\u2082\u2080", "\u2082\u2081", "\u2082\u2082", "\u2082\u2083", "\u2082\u2084", "\u2082\u2085", "\u2082\u2086", "\u2082\u2087", "\u2082\u2088", "\u2082\u2089"
, "\u2083\u2080", "\u2083\u2081", "\u2083\u2082", "\u2083\u2083", "\u2083\u2084", "\u2083\u2085", "\u2083\u2086", "\u2083\u2087", "\u2083\u2088", "\u2083\u2089"
, "\u2084\u2080", "\u2084\u2081", "\u2084\u2082", "\u2084\u2083", "\u2084\u2084", "\u2084\u2085", "\u2084\u2086", "\u2084\u2087", "\u2084\u2088", "\u2084\u2089"
, "\u2085\u2080", "\u2085\u2081", "\u2085\u2082", "\u2085\u2083", "\u2085\u2084", "\u2085\u2085", "\u2085\u2086", "\u2085\u2087", "\u2085\u2088", "\u2085\u2089"
, "\u2086\u2080", "\u2086\u2081", "\u2086\u2082", "\u2086\u2083", "\u2086\u2084", "\u2086\u2085", "\u2086\u2086", "\u2086\u2087", "\u2086\u2088", "\u2086\u2089"
, "\u2087\u2080", "\u2087\u2081", "\u2087\u2082", "\u2087\u2083", "\u2087\u2084", "\u2087\u2085", "\u2087\u2086", "\u2087\u2087", "\u2087\u2088", "\u2087\u2089"
, "\u2088\u2080", "\u2088\u2081", "\u2088\u2082", "\u2088\u2083", "\u2088\u2084", "\u2088\u2085", "\u2088\u2086", "\u2088\u2087", "\u2088\u2088", "\u2088\u2089"
, "\u2089\u2080", "\u2089\u2081", "\u2089\u2082", "\u2089\u2083", "\u2089\u2084", "\u2089\u2085", "\u2089\u2086", "\u2089\u2087", "\u2089\u2088", "\u2089\u2089"
, "\u2081\u2080\u2080", "\u2081\u2080\u2081", "\u2081\u2080\u2082", "\u2081\u2080\u2083", "\u2081\u2080\u2084", "\u2081\u2080\u2085", "\u2081\u2080\u2086", "\u2081\u2080\u2087", "\u2081\u2080\u2088", "\u2081\u2080\u2089"
, "\u2081\u2081\u2080", "\u2081\u2081\u2081", "\u2081\u2081\u2082", "\u2081\u2081\u2083", "\u2081\u2081\u2084", "\u2081\u2081\u2085", "\u2081\u2081\u2086", "\u2081\u2081\u2087", "\u2081\u2081\u2088", "\u2081\u2081\u2089"
, "\u2081\u2082\u2080", "\u2081\u2082\u2081", "\u2081\u2082\u2082", "\u2081\u2082\u2083", "\u2081\u2082\u2084", "\u2081\u2082\u2085", "\u2081\u2082\u2086", "\u2081\u2082\u2087", "\u2081\u2082\u2088", "\u2081\u2082\u2089"
, "\u2081\u2083\u2080", "\u2081\u2083\u2081", "\u2081\u2083\u2082", "\u2081\u2083\u2083", "\u2081\u2083\u2084", "\u2081\u2083\u2085", "\u2081\u2083\u2086", "\u2081\u2083\u2087", "\u2081\u2083\u2088", "\u2081\u2083\u2089"
, "\u2081\u2084\u2080", "\u2081\u2084\u2081", "\u2081\u2084\u2082", "\u2081\u2084\u2083", "\u2081\u2084\u2084", "\u2081\u2084\u2085", "\u2081\u2084\u2086", "\u2081\u2084\u2087", "\u2081\u2084\u2088", "\u2081\u2084\u2089"
, "\u2081\u2085\u2080", "\u2081\u2085\u2081", "\u2081\u2085\u2082", "\u2081\u2085\u2083", "\u2081\u2085\u2084", "\u2081\u2085\u2085", "\u2081\u2085\u2086", "\u2081\u2085\u2087", "\u2081\u2085\u2088", "\u2081\u2085\u2089"
, "\u2081\u2086\u2080", "\u2081\u2086\u2081", "\u2081\u2086\u2082", "\u2081\u2086\u2083", "\u2081\u2086\u2084", "\u2081\u2086\u2085", "\u2081\u2086\u2086", "\u2081\u2086\u2087", "\u2081\u2086\u2088", "\u2081\u2086\u2089"
, "\u2081\u2087\u2080", "\u2081\u2087\u2081", "\u2081\u2087\u2082", "\u2081\u2087\u2083", "\u2081\u2087\u2084", "\u2081\u2087\u2085", "\u2081\u2087\u2086", "\u2081\u2087\u2087", "\u2081\u2087\u2088", "\u2081\u2087\u2089"
, "\u2081\u2088\u2080", "\u2081\u2088\u2081", "\u2081\u2088\u2082", "\u2081\u2088\u2083", "\u2081\u2088\u2084", "\u2081\u2088\u2085", "\u2081\u2088\u2086", "\u2081\u2088\u2087", "\u2081\u2088\u2088", "\u2081\u2088\u2089"
, "\u2081\u2089\u2080", "\u2081\u2089\u2081", "\u2081\u2089\u2082", "\u2081\u2089\u2083", "\u2081\u2089\u2084", "\u2081\u2089\u2085", "\u2081\u2089\u2086", "\u2081\u2089\u2087", "\u2081\u2089\u2088", "\u2081\u2089\u2089"
, "\u2082\u2080\u2080", "\u2082\u2080\u2081", "\u2082\u2080\u2082", "\u2082\u2080\u2083", "\u2082\u2080\u2084", "\u2082\u2080\u2085", "\u2082\u2080\u2086", "\u2082\u2080\u2087", "\u2082\u2080\u2088", "\u2082\u2080\u2089"
, "\u2082\u2081\u2080", "\u2082\u2081\u2081", "\u2082\u2081\u2082", "\u2082\u2081\u2083", "\u2082\u2081\u2084", "\u2082\u2081\u2085", "\u2082\u2081\u2086", "\u2082\u2081\u2087", "\u2082\u2081\u2088", "\u2082\u2081\u2089"
, "\u2082\u2082\u2080", "\u2082\u2082\u2081", "\u2082\u2082\u2082", "\u2082\u2082\u2083", "\u2082\u2082\u2084", "\u2082\u2082\u2085", "\u2082\u2082\u2086", "\u2082\u2082\u2087", "\u2082\u2082\u2088", "\u2082\u2082\u2089"
, "\u2082\u2083\u2080", "\u2082\u2083\u2081", "\u2082\u2083\u2082", "\u2082\u2083\u2083", "\u2082\u2083\u2084", "\u2082\u2083\u2085", "\u2082\u2083\u2086", "\u2082\u2083\u2087", "\u2082\u2083\u2088", "\u2082\u2083\u2089"
, "\u2082\u2084\u2080", "\u2082\u2084\u2081", "\u2082\u2084\u2082", "\u2082\u2084\u2083", "\u2082\u2084\u2084", "\u2082\u2084\u2085", "\u2082\u2084\u2086", "\u2082\u2084\u2087", "\u2082\u2084\u2088", "\u2082\u2084\u2089"
, "\u2082\u2085\u2080", "\u2082\u2085\u2081", "\u2082\u2085\u2082", "\u2082\u2085\u2083", "\u2082\u2085\u2084", "\u2082\u2085\u2085", "\u2082\u2085\u2086", "\u2082\u2085\u2087", "\u2082\u2085\u2088", "\u2082\u2085\u2089"
, "\u2082\u2086\u2080", "\u2082\u2086\u2081", "\u2082\u2086\u2082", "\u2082\u2086\u2083", "\u2082\u2086\u2084", "\u2082\u2086\u2085", "\u2082\u2086\u2086", "\u2082\u2086\u2087", "\u2082\u2086\u2088", "\u2082\u2086\u2089"
, "\u2082\u2087\u2080", "\u2082\u2087\u2081", "\u2082\u2087\u2082", "\u2082\u2087\u2083", "\u2082\u2087\u2084", "\u2082\u2087\u2085", "\u2082\u2087\u2086", "\u2082\u2087\u2087", "\u2082\u2087\u2088", "\u2082\u2087\u2089"
, "\u2082\u2088\u2080", "\u2082\u2088\u2081", "\u2082\u2088\u2082", "\u2082\u2088\u2083", "\u2082\u2088\u2084", "\u2082\u2088\u2085", "\u2082\u2088\u2086", "\u2082\u2088\u2087", "\u2082\u2088\u2088", "\u2082\u2088\u2089"
, "\u2082\u2089\u2080", "\u2082\u2089\u2081", "\u2082\u2089\u2082", "\u2082\u2089\u2083", "\u2082\u2089\u2084", "\u2082\u2089\u2085", "\u2082\u2089\u2086", "\u2082\u2089\u2087", "\u2082\u2089\u2088", "\u2082\u2089\u2089"
, "\u2083\u2080\u2080\u208A"
};
/** The value of how many Voltz/Mekanism Joules are worth an EU. */
public static final int J_PER_EU = 10;
/** The value of how many RF are worth an MJ. */
public static final int RF_PER_MJ = 10;
/** The value of how many RF are worth an EU. */
public static final int RF_PER_EU = 4;
/** The value of how many Fuel Ticks a Furnace Smelt has. */
public static int TICKS_PER_SMELT = 200;
/** The value of how many Energy Units are worth a Furnace Tick in regards of Fuel -> Energy */
public static int EU_PER_FURNACE_TICK = 25;
/** The value of how many Energy Units are worth a Smelt Operation in regards of Energy -> Smelt, because many Mods including IC2 have cheaper smelting. In GT, I go for a Max Efficiency of 19.53125 times that value, so 256 GU per Furnace Operation. */
public static int EU_PER_SMELT = 256;
/** The value of how many Energy Units a Liter of Lava is worth. It is worth about 180 to 333 RF in TE. Well, I go for 320 RF in GT, meaning 80 GU/L or 80000 GU per Bucket. Cannot be above 200 GU/L or else MFR exploit with infinite Lava! */
public static int EU_PER_LAVA = 80;
/** The value of how many Energy Units a Liter of Hot Coolant also known as "Heatant" is worth. It is worth 20 EU in IC2 Experimental, so it's the same 20 GU in GT6. */
public static int EU_PER_COOLANT = 20;
/** The value of how many Energy Units a Liter of Semiheavy Water needs to turn into Hot Semiheavy Water. */
public static int EU_PER_SEMI_HEAVY_WATER = 40;
/** The value of how many Energy Units a Liter of Heavy Water needs to turn into Hot Heavy Water. */
public static int EU_PER_HEAVY_WATER = 50;
/** The value of how many Energy Units a Liter of Heavy Water needs to turn into Hot Tritiated Water. */
public static int EU_PER_TRITIATED_WATER = 60;
/** The value of how many Energy Units a Liter of Molten Sodium needs to turn into Hot Molten Sodium. */
public static int EU_PER_SODIUM = 30;
/** The value of how many Energy Units a Liter of Molten Tin needs to turn into Hot Molten Tin. */
public static int EU_PER_TIN = 40;
/** The value of how many Energy Units a Liter of Carbon Dioxide needs to turn into Hot Carbon Dioxide. */
public static int EU_PER_CO2 = 20;
/** The value of how many Energy Units a Liter of Helium needs to turn into Hot Helium. */
public static int EU_PER_HELIUM = 30;
/** The value of how many Energy Units a Liter of Lithium Chloride needs to turn into Hot Helium. */
public static int EU_PER_LICL = 15;
/** The value of how many Energy Units a Liter of Molten Thorium Salt needs to turn into Molten Salt. */
public static int EU_PER_THORIUM_SALT = 2560000;
/** The value of how many Energy Units a Liter of Water needs to turn into Steam. */
public static int EU_PER_WATER = 80;
/** The value of how much Steam an Energy Unit is worth. The Standard is 2 Steam = 1 EU. */
public static int STEAM_PER_EU = 2;
/** The value of how much Steam a Liter of Water is worth. The Standard is 160 Steam = 1 Water. */
public static int STEAM_PER_WATER = 160;
/** A few Default Values for Light Opacity. */
public static final int LIGHT_OPACITY_NONE = 0, LIGHT_OPACITY_LEAVES = 1, LIGHT_OPACITY_WATER = 3, LIGHT_OPACITY_MAX = 255;
public static final Set<String>
BIOMES_RIVER = new BiomeNameSet(BiomeGenBase.river, BiomeGenBase.frozenRiver, "Lush River", "Estuary", "Twilight Stream", "Tropical River", "Riparian Zone", "Sandstone Canyon", "Sandstone Canyon 2", "Creek Bed", "rwg_riverIce", "Ice River", "rwg_riverCold", "Cold River", "rwg_riverTemperate", "Temperate River", "rwg_riverHot", "Hot River", "rwg_riverWet", "Wet River", "rwg_riverOasis", "River Oasis")
, BIOMES_RIVER_LAKE = new BiomeNameSet(BiomeGenBase.river, BiomeGenBase.frozenRiver, "Lush River", "Estuary", "Twilight Stream", "Tropical River", "Riparian Zone", "Sandstone Canyon", "Sandstone Canyon 2", "Creek Bed", "rwg_riverIce", "Ice River", "rwg_riverCold", "Cold River", "rwg_riverTemperate", "Temperate River", "rwg_riverHot", "Hot River", "rwg_riverWet", "Wet River", "rwg_riverOasis", "River Oasis", "Tropical Lake", "Twilight Lake", "Lake", "Oasis", "Woodland Lake", "Woodland Lake Edge") // "Ephemeral Lake", "Ephemeral Lake Edge" those are vapourizing Lakes that vanish depending on Season.
, BIOMES_LAKE = new BiomeNameSet("Tropical Lake", "Twilight Lake", "Lake", "Oasis", "Woodland Lake", "Woodland Lake Edge", "Ephemeral Lake", "Ephemeral Lake Edge")
, BIOMES_OCEAN = new BiomeNameSet(BiomeGenBase.ocean, BiomeGenBase.frozenOcean, BiomeGenBase.deepOcean, "Coral Reef", "Kelp Forest", "Mangrove", "Ocean Oil Field", "Improved Oceans", "Tropical Ocean", "rwg_oceanIce", "rwg_oceanCold", "rwg_oceanTemperate", "rwg_oceanHot", "rwg_oceanWet", "rwg_oceanOasis", "Ice Ocean", "Cold Ocean", "Temperate Ocean", "Hot Ocean", "Wet Ocean", "Ocean Oasis")
, BIOMES_OCEAN_BEACH = new BiomeNameSet(BiomeGenBase.ocean, BiomeGenBase.frozenOcean, BiomeGenBase.deepOcean, BiomeGenBase.beach, BiomeGenBase.coldBeach, BiomeGenBase.stoneBeach, BiomeGenBase.mushroomIslandShore, "Coral Reef", "Kelp Forest", "Mangrove", "Ocean Oil Field", "Improved Oceans", "Tropical Ocean", "rwg_oceanIce", "rwg_oceanCold", "rwg_oceanTemperate", "rwg_oceanHot", "rwg_oceanWet", "rwg_oceanOasis", "Ice Ocean", "Cold Ocean", "Temperate Ocean", "Hot Ocean", "Wet Ocean", "Ocean Oasis", "Tropical Beach")
, BIOMES_INFINITE_WATER = new BiomeNameSet(BiomeGenBase.ocean, BiomeGenBase.frozenOcean, BiomeGenBase.deepOcean, BiomeGenBase.beach, BiomeGenBase.coldBeach, BiomeGenBase.stoneBeach, BiomeGenBase.mushroomIslandShore, "Coral Reef", "Kelp Forest", "Mangrove", "Ocean Oil Field", "Improved Oceans", "Tropical Ocean", "rwg_oceanIce", "rwg_oceanCold", "rwg_oceanTemperate", "rwg_oceanHot", "rwg_oceanWet", "rwg_oceanOasis", "Ice Ocean", "Cold Ocean", "Temperate Ocean", "Hot Ocean", "Wet Ocean", "Ocean Oasis", "Tropical Beach", BiomeGenBase.river, BiomeGenBase.frozenRiver, "Lush River", "Estuary", "Twilight Stream", "Tropical River", "Riparian Zone", "Sandstone Canyon", "Sandstone Canyon 2", "Creek Bed", "rwg_riverIce", "Ice River", "rwg_riverCold", "Cold River", "rwg_riverTemperate", "Temperate River", "rwg_riverHot", "Hot River", "rwg_riverWet", "Wet River", "rwg_riverOasis", "River Oasis", "Tropical Lake", "Twilight Lake", "Lake", "Oasis", "Woodland Lake", "Woodland Lake Edge")
, BIOMES_JUNGLE = new BiomeNameSet(BiomeGenBase.jungle, BiomeGenBase.jungleHills, BiomeGenBase.jungleEdge, "Undergound Jungle", "Jungle Island", "Extreme Jungle", "Mini Jungle", "Rainforest Hills", "Jungle (RWG)")
, BIOMES_CINNAMON = new BiomeNameSet(BiomeGenBase.jungle, BiomeGenBase.jungleHills, BiomeGenBase.jungleEdge, "Undergound Jungle", "Jungle Island", "Extreme Jungle", "Mini Jungle", "Rainforest Hills", "Jungle (RWG)")
, BIOMES_BLUEMAHOE = new BiomeNameSet(BiomeGenBase.jungle, BiomeGenBase.jungleHills, BiomeGenBase.jungleEdge, "Undergound Jungle", "Jungle Island", "Extreme Jungle", "Mini Jungle", "Rainforest Hills", "Jungle (RWG)")
, BIOMES_DESERT = new BiomeNameSet(BiomeGenBase.desert, BiomeGenBase.desertHills, "Sahara", "Red Desert", "Desert Archipelago", "Oasis", "Sandstone Canyon", "Sandstone Canyon 2", "Sandstone Ranges", "Sahel", "Lush Desert", "Desert Oil Field", "Desert Island", "Mountainous Desert", "Desert Mountains", "Volcanic Desert", "Ulterior Outback", "Hot Desert")
, BIOMES_MESA = new BiomeNameSet(BiomeGenBase.mesa, BiomeGenBase.mesaPlateau, BiomeGenBase.mesaPlateau_F, "Canyon", "Mesa (Bryce)", "Mesa", "Clay Hills")
, BIOMES_SAVANNA = new BiomeNameSet(BiomeGenBase.savanna, BiomeGenBase.savannaPlateau, "Steppe", "Subterranean Savannah", "Oak Savanna", "Savannah", "Savanna", "Shrubland", "Shrublands", "Roofed Shrublands", "Xeric Savanna", "Xeric Shrubland", "Prairie", "Canyon")
, BIOMES_SWAMP = new BiomeNameSet(BiomeGenBase.swampland, "Green Swamplands", "DeepSwamp", "Land of Lakes Marsh", "Marsh", "Lush Swamp", "Moor", "Mire", "Bog", "Twilight Swamp", "Submerged Swamp", "Fire Swamp")
, BIOMES_WILLOW = new BiomeNameSet(BiomeGenBase.swampland, "Green Swamplands", "DeepSwamp", "Land of Lakes Marsh", "Marsh", "Lush Swamp", "Moor", "Mire", "Bog", "Twilight Swamp", "Submerged Swamp")
, BIOMES_TAIGA = new BiomeNameSet(BiomeGenBase.taiga, BiomeGenBase.taigaHills, BiomeGenBase.coldTaiga, BiomeGenBase.coldTaigaHills, BiomeGenBase.megaTaiga, BiomeGenBase.megaTaigaHills, "Mountain Taiga", "Pinelands", "Tall Pine Forest", "Shield", "Cold Boreal Forest", "Cold Cypress Forest", "Cold Fir Forest", "Cold Pine Forest", "Boreal Archipelago", "Boreal Forest", "Boreal Plateau", "Twilight Highlands", "Snowy Forest")
, BIOMES_RUBBER = new BiomeNameSet(BiomeGenBase.taiga, BiomeGenBase.taigaHills, BiomeGenBase.coldTaiga, BiomeGenBase.coldTaigaHills, BiomeGenBase.megaTaiga, BiomeGenBase.megaTaigaHills, "Mountain Taiga", "Pinelands", "Tall Pine Forest", "Shield", "Cold Boreal Forest", "Cold Cypress Forest", "Cold Fir Forest", "Cold Pine Forest", "Boreal Archipelago", "Boreal Forest", "Boreal Plateau", "Twilight Highlands", "Snowy Forest")
, BIOMES_FROZEN = new BiomeNameSet(BiomeGenBase.icePlains, BiomeGenBase.iceMountains, BiomeGenBase.coldTaiga, BiomeGenBase.coldTaigaHills, BiomeGenBase.frozenRiver, "Snow Island", "Ice Plains Spikes", "Ice Wasteland", "Frost Forest", "Snowy Rainforest", "Snow Forest", "Snowy Forest", "Snow Desert", "Twilight Glacier", "Alpine", "Glacier", "Tundra", "Snowy Desert", "Snowy Plateau", "Snowy Ranges", "Snowy Wastelands", "Polar Desert", "Ice Sheet", "Frozen Archipelago", "Alpine Mountains", "Alpine Mountains Edge", "Alpine Tundra", "rwg_riverIce", "Ice River", "Ice Ocean")
, BIOMES_WOODS = new BiomeNameSet(BiomeGenBase.forest, BiomeGenBase.forestHills, "Autumn Forest", "Elysian Forest", "Meadow Forest", "Seasonal Forest", "Seasonal Forest Clearing", "Forested Hills", "Forested Island", "Snow Forest", "Forest Island", "Forested Archipelago", "Forested Mountains", "Forested Valley", "Temperate Forest", "Redwood Forest", "Lush Redwoods", "Redwood", "Woodlands", "Woodland Mountains", "Woodland Field", "Woodland Hills", "Woodland Lake", "Woodland Lake Edge", "Dark Forest", "Dark Forest Center", "Dense Twilight Forest", "Twilight Forest", "Firefly Forest", "Maple Woods", BiomeGenBase.roofedForest, BiomeGenBase.birchForest, BiomeGenBase.birchForestHills, "Pine Forest", "Rainforest", "Rainforest Valley", "Spruce Woods", "Autumn Woods", "Flower Forest", "Birch Hills", "Woodlands", "Temperate Rainforest", "Pinelands", "Tall Pine Forest", "Shield", "Mystic Grove", "Ominous Woods", "Blossom Hills", "Blossom Woods", "Aspen Forest", "Aspen Hills", "Cypress Forest", "Silver Pine Forest", "Silver Pine Hills", "Fir Forest", "Flowery Archipelago", "Oak Forest", "Pine Forest", "Pine Forest Archipelago", "Rainforest Hills", "Rainforest Mountains", "Extreme Rainforest Mountains")
, BIOMES_FOREST = new BiomeNameSet(BiomeGenBase.forest, BiomeGenBase.forestHills, "Autumn Forest", "Elysian Forest", "Meadow Forest", "Seasonal Forest", "Seasonal Forest Clearing", "Forested Hills", "Forested Island", "Snow Forest", "Forest Island", "Forested Archipelago", "Forested Mountains", "Forested Valley", "Temperate Forest", "Redwood Forest", "Lush Redwoods", "Redwood", "Woodlands", "Woodland Mountains", "Woodland Field", "Woodland Hills", "Woodland Lake", "Woodland Lake Edge", "Dark Forest", "Dark Forest Center", "Dense Twilight Forest", "Twilight Forest", "Firefly Forest")
, BIOMES_MAPLE = new BiomeNameSet(BiomeGenBase.forest, BiomeGenBase.forestHills, "Autumn Forest", "Elysian Forest", "Meadow Forest", "Seasonal Forest", "Seasonal Forest Clearing", "Forested Hills", "Forested Island", "Snow Forest", "Forest Island", "Forested Archipelago", "Forested Mountains", "Forested Valley", "Temperate Forest", "Maple Woods", "Firefly Forest")
, BIOMES_DARK_FOREST = new BiomeNameSet(BiomeGenBase.roofedForest, "Dark Forest", "Dark Forest Center")
, BIOMES_PLAINS = new BiomeNameSet(BiomeGenBase.plains, "Meadow", "Grassland", "Flower Field", "Sunflower Plains", "Plains (RWG)", "Clearing", "Twilight Clearing", "Elysian Fields", "Lowlands", "Origin Valley", "Grassy Archipelago", "Alfheim", "Rainforest Plains", "Tropics", "Highlands", "Bald Hill", "Tundra", "Low Hills", "Mining Biome")
, BIOMES_HAZEL = new BiomeNameSet(BiomeGenBase.plains, "Meadow", "Grassland", "Flower Field", "Sunflower Plains", "Plains (RWG)", "Clearing", "Twilight Clearing", "Elysian Fields", "Lowlands", "Origin Valley", "Grassy Archipelago", "Alfheim")
, BIOMES_COCONUT = new BiomeNameSet(BiomeGenBase.beach, "Tropical Ocean", "Tropical Beach", "Tropical River", "Tropical Lake", "Tropical Archipelago", "Tropical Island", "Tropical Islands", "Tropics", "Oasis")
, BIOMES_MOUNTAINS = new BiomeNameSet(BiomeGenBase.extremeHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.extremeHillsPlus, BiomeGenBase.stoneBeach, "Mountainous Archipelago", "Mountains", "Mountains Edge", "Plateau", "Highlands", "Highlands Center", "Twilight Highlands", "Thornlands", "Alps", "Cliffs", "Flying Mountains", "Rock Mountains", "Snow Mountains", "Rock Island", "Valley", "Alpine Mountains", "Alpine Mountains Edge", "Alpine Tundra", "Stone Canyon", "Stone Canyon 2", "Rocky Desert", "Rocky Hills", "Rainforest Mountains", "Extreme Rainforest Mountains")
, BIOMES_BLUESPRUCE = new BiomeNameSet(BiomeGenBase.extremeHills, BiomeGenBase.extremeHillsEdge, BiomeGenBase.extremeHillsPlus, BiomeGenBase.stoneBeach, "Mountainous Archipelago", "Mountains", "Mountains Edge", "Plateau", "Highlands", "Highlands Center", "Twilight Highlands", "Thornlands", "Alps", "Cliffs", "Flying Mountains", "Rock Mountains", "Snow Mountains", "Rock Island", "Valley", "Alpine Mountains", "Alpine Mountains Edge", "Alpine Tundra", "Stone Canyon", "Stone Canyon 2", "Rocky Desert", "Rocky Hills", "Rainforest Mountains", "Extreme Rainforest Mountains")
, BIOMES_VOLCANIC = new BiomeNameSet("Fire Swamp", "Volcano", "Volcano Island", "Volcanic Desert")
, BIOMES_SHROOM = new BiomeNameSet(BiomeGenBase.mushroomIsland, BiomeGenBase.mushroomIslandShore, "Fungal Forest", "Mushroom Forest", "Deep Mushroom Forest")
, BIOMES_MAGICAL = new BiomeNameSet("Magical Forest", "Eldritch", "Enchanted Forest", "Mystic Grove", "Alfheim", "Tainted Land", "Eerie", "WyvernBiome", "Ominous Woods")
, BIOMES_RAINBOWOOD = new BiomeNameSet("Enchanted Forest")
, BIOMES_MAGICAL_GOOD = new BiomeNameSet("Magical Forest", "Eldritch", "Enchanted Forest", "Mystic Grove", "Alfheim")
, BIOMES_MAGICAL_BAD = new BiomeNameSet("Tainted Land", "Eerie", "WyvernBiome", "Ominous Woods")
, BIOMES_WASTELANDS = new BiomeNameSet("Wasteland", "Wastelands", "Wasteland Mountains", "Wasteland Forest", "Radioactive Wasteland")
, BIOMES_RADIOACTIVE = new BiomeNameSet("Radioactive Wasteland")
, BIOMES_NETHER = new BiomeNameSet(BiomeGenBase.hell, "Ruptured Chasm", "Abyssal Shadowland", "Crystalline Crag", "Basalt Deltas", "Crimson Forest", "Soul Sand Valley", "Warped Forest", "Foxfire Swamp")
, BIOMES_END = new BiomeNameSet(BiomeGenBase.sky)
, BIOMES_EREBUS = new BiomeNameSet("Undergound Jungle", "Volcanic Desert", "Subterranean Savannah", "Elysian Fields", "Ulterior Outback", "Fungal Forest", "Submerged Swamp", "Elysian Forest")
, BIOMES_VOID = new BiomeNameSet("Space", "space")
, BIOMES_MOON = new BiomeNameSet("Moon", "moon")
, BIOMES_MARS = new BiomeNameSet("Mars", "mars", "marsFlat")
, BIOMES_ASTEROIDS = new BiomeNameSet("Asteroids", "asteroids")
, BIOMES_SPACE = new BiomeNameSet("Space", "Alien Forest", "Moon", "mercury", "venus", "jupiter", "saturn", "uranus", "neptune", "pluto", "ceres", "eris", "europa", "io", "deimos", "phobos", "triton", "callisto", "ganymede", "rhea", "titan", "Hot Dry Rock", "Stormland", "CrystalChasms", "moon", "marsFlat", "Asteroids", "asteroids", "space", "DeepSwamp", "Marsh", "OceanSpires", "SpacePartiallySubmerged", "SpaceLowIslands", "SpaceRockyWaters", "SpaceMidHills", "SpaceHighPlateaus", "SpaceLowHills", "SpaceMidPlains", "SpaceLowPlains", "SpaceDeepOceans", "SpaceOceans", "SpaceShallowWaters", "SpaceDefault", "Pluto", "Pluto2", "Pluto3", "Pluto4", "Kuiper Belt", "Io", "IoAsh", "Haumea");
// "Wasteland City", "Fens", "Carr", "Kakadu", "Scree", "Scrub", "Basin", "Badlands", "Outback", "Windy Island", "Cold Plains", "Cold Forest", "Hot Plains", "Hot Forest"
/** Stores the Coordinates that any given Player last interacted with. */
public static final Map<EntityPlayer, ChunkCoordinates> PLAYER_LAST_CLICKED = new IdentityHashMap<>();
/** a Random generator so I don't need to instantiate a new one all the time. */
public static final Random RNGSUS = new Random(), RANDOM = RNGSUS;
/** Current Time on the Server, since the last Reboot. */
public static long SERVER_TIME = 0;
/** Synchronizes all Server to Client Updates to be at the same time. */
public static boolean SYNC_SECOND = T;
/** Current Time on the Client. Used for Animations. */
public static long CLIENT_TIME = 0;
/** Is locked updateEntities and similar are running on the tick. */
public static final ReentrantLock TICK_LOCK = new ReentrantLock();
/** If I ever need to talk in Chat. XD */
public static final String CHAT_GREG = LH.Chat.WHITE+"<"+LH.Chat.BLUE+"GregoriusT"+LH.Chat.WHITE+"> ";
/** The Colour White as RGB Short Array. */
public static final short[] UNCOLOURED = {255, 255, 255, 255};
/** The Colour White as simple Integer (0x00ffffff). */
public static final int UNCOLORED = 16777215;
public static final int ALL_NON_ALPHA_COLOR = 0x00ffffff;
public static final int[] RAINBOW_ARRAY = {
0xff0000,
0xff4000,
0xff8000,
0xffc000,
0xffff00,
0xc0ff00,
0x80ff00,
0x40ff00,
0x00ff00,
0x00ff40,
0x00ff80,
0x00ffc0,
0x00ffff,
0x00c0ff,
0x0080ff,
0x0040ff,
0x0000ff,
0x4000ff,
0x8000ff,
0xc000ff,
0xff00ff,
0xff00c0,
0xff0080,
0xff0040,
};
/** Some Colour Arrays */
public static final short[]
CA_WHITE = {255, 255, 255, 255}
, CA_GRAY_192 = {192, 192, 192, 255}
, CA_GRAY_128 = {128, 128, 128, 255}
, CA_GRAY_64 = { 64, 64, 64, 255}
, CA_GRAY_32 = { 32, 32, 32, 255}
, CA_RED_255 = {255, 0, 0, 255}
, CA_RED_192 = {192, 0, 0, 255}
, CA_RED_128 = {128, 0, 0, 255}
, CA_RED_64 = { 64, 0, 0, 255}
, CA_RED_32 = { 32, 0, 0, 255}
, CA_GREEN_255 = { 0, 255, 0, 255}
, CA_GREEN_192 = { 0, 192, 0, 255}
, CA_GREEN_128 = { 0, 128, 0, 255}
, CA_GREEN_64 = { 0, 64, 0, 255}
, CA_GREEN_32 = { 0, 32, 0, 255}
, CA_CYAN_255 = { 0, 255, 255, 255}
, CA_CYAN_192 = { 0, 192, 192, 255}
, CA_CYAN_128 = { 0, 128, 128, 255}
, CA_CYAN_64 = { 0, 64, 64, 255}
, CA_CYAN_32 = { 0, 32, 32, 255}
, CA_BLUE_255 = { 0, 0, 255, 255}
, CA_BLUE_192 = { 0, 0, 192, 255}
, CA_BLUE_128 = { 0, 0, 128, 255}
, CA_BLUE_64 = { 0, 0, 64, 255}
, CA_BLUE_32 = { 0, 0, 32, 255}
, CA_LIGHT_BLUE_255 = {128, 128, 255, 255}
, CA_LIGHT_BLUE_192 = { 96, 96, 192, 255}
, CA_LIGHT_BLUE_128 = { 64, 64, 128, 255}
, CA_LIGHT_BLUE_64 = { 32, 32, 64, 255}
, CA_LIGHT_BLUE_32 = { 16, 16, 32, 255}
, CA_YELLOW_255 = {255, 255, 0, 255}
, CA_YELLOW_192 = {192, 192, 0, 255}
, CA_YELLOW_128 = {128, 128, 0, 255}
, CA_YELLOW_64 = { 64, 64, 0, 255}
, CA_YELLOW_32 = { 32, 32, 0, 255}
, CA_LIGHT_YELLOW_255 = {255, 255, 128, 255}
, CA_LIGHT_YELLOW_192 = {192, 192, 96, 255}
, CA_LIGHT_YELLOW_128 = {128, 128, 64, 255}
, CA_LIGHT_YELLOW_64 = { 64, 64, 32, 255}
, CA_LIGHT_YELLOW_32 = { 32, 32, 16, 255}
;
public static final short[]
DYE_None = {255, 255, 255, 255}
, DYE_Black = { 32, 32, 32, 255}
, DYE_Red = {255, 0, 0, 255}
, DYE_Green = { 0, 255, 0, 255}
, DYE_Brown = { 96, 64, 0, 255}
, DYE_Blue = { 0, 0, 255, 255}
, DYE_Purple = {128, 0, 128, 255}
, DYE_Cyan = { 0, 255, 255, 255}
, DYE_LightGray = {192, 192, 192, 255}
, DYE_Gray = {128, 128, 128, 255}
, DYE_Pink = {255, 192, 192, 255}
, DYE_Lime = {128, 255, 128, 255}
, DYE_Yellow = {255, 255, 0, 255}
, DYE_LightBlue = {128, 128, 255, 255}
, DYE_Magenta = {255, 0, 255, 255}
, DYE_Orange = {255, 128, 0, 255}
, DYE_White = {255, 255, 255, 255}
;
public static final int
DYE_INT_None = UT.Code.getRGBInt(DYE_None)
, DYE_INT_Black = UT.Code.getRGBInt(DYE_Black)
, DYE_INT_Red = UT.Code.getRGBInt(DYE_Red)
, DYE_INT_Green = UT.Code.getRGBInt(DYE_Green)
, DYE_INT_Brown = UT.Code.getRGBInt(DYE_Brown)
, DYE_INT_Blue = UT.Code.getRGBInt(DYE_Blue)
, DYE_INT_Purple = UT.Code.getRGBInt(DYE_Purple)
, DYE_INT_Cyan = UT.Code.getRGBInt(DYE_Cyan)
, DYE_INT_LightGray = UT.Code.getRGBInt(DYE_LightGray)
, DYE_INT_Gray = UT.Code.getRGBInt(DYE_Gray)
, DYE_INT_Pink = UT.Code.getRGBInt(DYE_Pink)
, DYE_INT_Lime = UT.Code.getRGBInt(DYE_Lime)
, DYE_INT_Yellow = UT.Code.getRGBInt(DYE_Yellow)
, DYE_INT_LightBlue = UT.Code.getRGBInt(DYE_LightBlue)
, DYE_INT_Magenta = UT.Code.getRGBInt(DYE_Magenta)
, DYE_INT_Orange = UT.Code.getRGBInt(DYE_Orange)
, DYE_INT_White = UT.Code.getRGBInt(DYE_White)
;
public static final byte
DYE_INDEX_Black = 0,
DYE_INDEX_Red = 1,
DYE_INDEX_Green = 2,
DYE_INDEX_Brown = 3,
DYE_INDEX_Blue = 4,
DYE_INDEX_Purple = 5,
DYE_INDEX_Cyan = 6,
DYE_INDEX_LightGray = 7,
DYE_INDEX_Gray = 8,
DYE_INDEX_Pink = 9,
DYE_INDEX_Lime = 10,
DYE_INDEX_Yellow = 11,
DYE_INDEX_LightBlue = 12,
DYE_INDEX_Magenta = 13,
DYE_INDEX_Orange = 14,
DYE_INDEX_White = 15;
public static final String[] DYE_NAMES = {"Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "Light Gray", "Gray", "Pink", "Lime", "Yellow", "Light Blue", "Magenta", "Orange", "White"};
public static final String[] DYE_OREDICTS = {"dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan", "dyeLightGray", "dyeGray", "dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite"};
public static final String[] DYE_OREDICTS_CERAMIC = {"dyeCeramicBlack", "dyeCeramicRed", "dyeCeramicGreen", "dyeCeramicBrown", "dyeCeramicBlue", "dyeCeramicPurple", "dyeCeramicCyan", "dyeCeramicLightGray", "dyeCeramicGray", "dyeCeramicPink", "dyeCeramicLime", "dyeCeramicYellow", "dyeCeramicLightBlue", "dyeCeramicMagenta", "dyeCeramicOrange", "dyeCeramicWhite"};
public static final String[] DYE_OREDICTS_MIXABLE = {"dyeMixableBlack", "dyeMixableRed", "dyeMixableGreen", "dyeMixableBrown", "dyeMixableBlue", "dyeMixablePurple", "dyeMixableCyan", "dyeMixableLightGray", "dyeMixableGray", "dyeMixablePink", "dyeMixableLime", "dyeMixableYellow", "dyeMixableLightBlue", "dyeMixableMagenta", "dyeMixableOrange", "dyeMixableWhite"};
public static final String[] DYE_OREDICTS_LENS = {"craftingLensBlack", "craftingLensRed", "craftingLensGreen", "craftingLensBrown", "craftingLensBlue", "craftingLensPurple", "craftingLensCyan", "craftingLensLightGray", "craftingLensGray", "craftingLensPink", "craftingLensLime", "craftingLensYellow", "craftingLensLightBlue", "craftingLensMagenta", "craftingLensOrange", "craftingLensWhite"};
public static final String[] DYE_OREDICTS_POST = {"Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange", "White"};
public static final String[] HEXORIUM_MONOLITHS = {"blockEnergizedHexoriumMonolithBlack", "blockEnergizedHexoriumMonolithRed", "blockEnergizedHexoriumMonolithGreen", "blockEnergizedHexoriumMonolithDarkGray", "blockEnergizedHexoriumMonolithBlue", "blockEnergizedHexoriumMonolithPurple", "blockEnergizedHexoriumMonolithCyan", "blockEnergizedHexoriumMonolithLightGray", "blockEnergizedHexoriumMonolithGray", "blockEnergizedHexoriumMonolithPink", "blockEnergizedHexoriumMonolithLime", "blockEnergizedHexoriumMonolithYellow", "blockEnergizedHexoriumMonolithSkyBlue", "blockEnergizedHexoriumMonolithMagenta", "blockEnergizedHexoriumMonolithOrange", "blockEnergizedHexoriumMonolithWhite", "blockEnergizedHexoriumMonolithTurquoise", "blockEnergizedHexoriumMonolithRainbow"};
public static final short[][] DYES = {DYE_Black, DYE_Red, DYE_Green, DYE_Brown, DYE_Blue, DYE_Purple, DYE_Cyan, DYE_LightGray, DYE_Gray, DYE_Pink, DYE_Lime, DYE_Yellow, DYE_LightBlue, DYE_Magenta, DYE_Orange, DYE_White};
public static final short[][] DYES_INVERTED = {DYES[15], DYES[14], DYES[13], DYES[12], DYES[11], DYES[10], DYES[ 9], DYES[ 8], DYES[ 7], DYES[ 6], DYES[ 5], DYES[ 4], DYES[ 3], DYES[ 2], DYES[ 1], DYES[ 0]};
public static final int[] DYES_INT = {DYE_INT_Black, DYE_INT_Red, DYE_INT_Green, DYE_INT_Brown, DYE_INT_Blue, DYE_INT_Purple, DYE_INT_Cyan, DYE_INT_LightGray, DYE_INT_Gray, DYE_INT_Pink, DYE_INT_Lime, DYE_INT_Yellow, DYE_INT_LightBlue, DYE_INT_Magenta, DYE_INT_Orange, DYE_INT_White};
public static final int[] DYES_INT_INVERTED = {DYES_INT[15], DYES_INT[14], DYES_INT[13], DYES_INT[12], DYES_INT[11], DYES_INT[10], DYES_INT[ 9], DYES_INT[ 8], DYES_INT[ 7], DYES_INT[ 6], DYES_INT[ 5], DYES_INT[ 4], DYES_INT[ 3], DYES_INT[ 2], DYES_INT[ 1], DYES_INT[ 0]};
public static final FluidStack[] DYED_C_FOAMS = new FluidStack[16];
public static final FluidStack[] DYED_C_FOAMS_OWNED = new FluidStack[16];
public static final FluidStack[] DYE_FLUIDS_WATER = new FluidStack[16];
public static final FluidStack[] DYE_FLUIDS_FLOWER = new FluidStack[16];
public static final FluidStack[] DYE_FLUIDS_CHEMICAL = new FluidStack[16];
public static final FluidStack[][] DYE_FLUIDCATEGORIES = {DYE_FLUIDS_WATER, DYE_FLUIDS_FLOWER, DYE_FLUIDS_CHEMICAL};
@SuppressWarnings("unchecked")
public static final ArrayListNoNulls<FluidStack>[] DYE_FLUIDS = new ArrayListNoNulls[] {new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>(), new ArrayListNoNulls<FluidStack>()};
/** Offset for Rendering Text on Surfaces. */
public static final float PX_OFFSET = 0.005F;
/** Default Size Box. */
public static final float[] PX_BOX = {0,0,0,1,1,1};
/** Array with length 17 and some overflow containing the Coordinates of Pixels from 0/16 to 16/16 */
public static final float[] PX_P = {
0.0000F, 0.0625F, 0.1250F, 0.1875F
, 0.2500F, 0.3125F, 0.3750F, 0.4375F
, 0.5000F, 0.5625F, 0.6250F, 0.6875F
, 0.7500F, 0.8125F, 0.8750F, 0.9375F
, 1.0000F, 1.0625F, 1.1250F, 1.1875F
, 1.2500F, 1.3125F, 1.3750F, 1.4375F
, 1.5000F, 1.5625F, 1.6250F, 1.6875F
, 1.7500F, 1.8125F, 1.8750F, 1.9375F
, 2.0000F}, PIXELS_POS = PX_P;
/** Array with length 17 and some overflow containing the Coordinates of Pixels from 16/16 to 0/16 */
public static final float[] PX_N = {
1.0000F, 0.9375F, 0.8750F, 0.8125F
, 0.7500F, 0.6875F, 0.6250F, 0.5625F
, 0.5000F, 0.4375F, 0.3750F, 0.3125F
, 0.2500F, 0.1875F, 0.1250F, 0.0625F
, 0.0000F,-0.0625F,-0.1250F,-0.1875F
,-0.2500F,-0.3125F,-0.3750F,-0.4375F
,-0.5000F,-0.5625F,-0.6250F,-0.6875F
,-0.7500F,-0.8125F,-0.8750F,-0.9375F
,-1.0000F}, PIXELS_NEG = PX_N;
/** Different Side Variables for easier comprehension. */
public static final byte SIDE_Y_NEG = 0, SIDE_BOTTOM = 0, SIDE_DOWN = 0,
SIDE_Y_POS = 1, SIDE_TOP = 1, SIDE_UP = 1,
SIDE_Z_NEG = 2, SIDE_NORTH = 2, // Also a Side with a stupidly mirrored Texture
SIDE_Z_POS = 3, SIDE_SOUTH = 3,
SIDE_X_NEG = 4, SIDE_WEST = 4,
SIDE_X_POS = 5, SIDE_EAST = 5, // Also a Side with a stupidly mirrored Texture
SIDE_ANY = 6, SIDE_UNKNOWN = 6, SIDE_INVALID = 6, SIDE_INSIDE = 6, SIDE_UNDEFINED = 6;
/**
* [Facing,Side]->Side Mappings for Blocks, which don't face up- and downwards.
* 0 = bottom, 1 = top, 2 = left, 3 = front, 4 = right, 5 = back, 6 = undefined.
*/
public static final byte[][] FACING_ROTATIONS = {
{0,1,2,3,4,5,6,6},
{0,1,2,3,4,5,6,6},
{0,1,3,5,4,2,6,6},
{0,1,5,3,2,4,6,6},
{0,1,2,4,3,5,6,6},
{0,1,4,2,5,3,6,6},
{0,1,2,3,4,5,6,6},
{0,1,2,3,4,5,6,6}
};
/**
* [Facing,Side]->Orientation Mappings for Blocks, which don't face up- and downwards.
* 0 = bottom, 1 = top, 2 = left, 3 = front, 4 = right, 5 = back, 6 = undefined.
*/
public static final byte[][] FACING_TO_SIDE = {
{0,1,2,3,4,5,6,6},
{0,1,2,3,4,5,6,6},
{0,1,5,2,4,3,6,6},
{0,1,4,3,5,2,6,6},
{0,1,2,4,3,5,6,6},
{0,1,3,5,2,4,6,6},
{0,1,2,3,4,5,6,6},
{0,1,2,3,4,5,6,6}
};
/** Gives you the Sides, which are not the Front nor the Back of the Facing. */
public static final byte[][] FACING_SIDES = {{2,3,4,5},{2,3,4,5},{0,1,4,5},{0,1,4,5},{0,1,2,3},{0,1,2,3},{}};
/** Gives you the Sides, which are the Front and the Back, with the Front being the first one. */
public static final byte[][] FACING_FRONT_BACK = {{0,1},{1,0},{2,3},{3,2},{4,5},{5,4},{}};
/** Gives you the Sides, which are the Front and the Back, with the Back being the first one. */
public static final byte[][] FACING_BACK_FRONT = {{1,0},{0,1},{3,2},{2,3},{5,4},{4,5},{}};
/** Checks if two Sides are along the same Axis */
public static final boolean[][] ALONG_AXIS = {
{T,T,F,F,F,F,F,F},
{T,T,F,F,F,F,F,F},
{F,F,T,T,F,F,F,F},
{F,F,T,T,F,F,F,F},
{F,F,F,F,T,T,F,F},
{F,F,F,F,T,T,F,F},
{F,F,F,F,F,F,T,T},
{F,F,F,F,F,F,T,T}
};
/** Checks if two Sides are along the shifted Axis */
public static final boolean[][] ALONG_AXIS_1 = {
{F,F,T,T,F,F,F,F},
{F,F,T,T,F,F,F,F},
{F,F,F,F,T,T,F,F},
{F,F,F,F,T,T,F,F},
{T,T,F,F,F,F,F,F},
{T,T,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F}
};
/** Checks if two Sides are along the double shifted Axis */
public static final boolean[][] ALONG_AXIS_2 = {
{F,F,F,F,T,T,F,F},
{F,F,F,F,T,T,F,F},
{T,T,F,F,F,F,F,F},
{T,T,F,F,F,F,F,F},
{F,F,T,T,F,F,F,F},
{F,F,T,T,F,F,F,F},
{F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F}
};
/** Insert Facing and a Connectivity BitMask to see if it is connecting to that Side. Technically this is a simple Bit Operation, but accessing an Array with "FACE_CONNECTED[aSide][aConnections]" just looks nicer than "(aConnections & (1 << aSide) != 0)". */
public static final boolean[][] FACE_CONNECTED = {
{F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T,F,T},
{F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T,F,F,T,T},
{F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T,F,F,F,F,T,T,T,T},
{F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T},
{F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T},
{F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T},
{F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,F,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T,T}
};
/** Fast lookup to see how many Connections a Mask has. It is recommended to do either &63 or &127 on the Index depending on how you use it. */
public static final byte[] FACE_CONNECTION_COUNT = {0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7};
/** Side Bits for quick reference.*/
public static final byte SBIT[] = { 1, 2, 4, 8,16,32,64,64}, SIDE_BITS[] = SBIT, SBIT_D = 1, SBIT_U = 2, SBIT_L = 4, SBIT_F = 8, SBIT_R = 16, SBIT_B = 32, SBIT_N = 4, SBIT_S = 8, SBIT_W = 16, SBIT_E = 32, SBIT_A = 64, SBIT_I = 64;
/** Those are not representing actual directions! They are for the "FACING_ROTATIONS" Array-Map */
public static final byte SIDE_LEFT = 2, SIDE_FRONT = 3, SIDE_RIGHT = 4, SIDE_BACK = 5;
/** Converts Sides to a Top-Bottom-Side Value, this limits the Range to a Number between [0 and 2] */
public static final byte[] FACES_TBS = { 0, 1, 2, 2, 2, 2, 2, 2};
/** Side->Opposite Mappings. */
public static final byte[] OPOS = { 1, 0, 3, 2, 5, 4, 6, 6};
/** Side->Offset Mappings. */
public static final byte[] OFFX = { 0, 0, 0, 0,-1,+1, 0, 0},
OFFY = {-1,+1, 0, 0, 0, 0, 0, 0},
OFFZ = { 0, 0,-1,+1, 0, 0, 0, 0};
@Deprecated
public static final byte[] OPPOSITES = OPOS, OFFSETS_X = OFFX, OFFSETS_Y = OFFY, OFFSETS_Z = OFFZ;
/** 3x3x3 Mappings. */
public static final byte[] CUBE_3_X = {0, 0, 0, 0, 0,-1,+1, 0, 0,-1,+1, 0, 0,-1,+1,-1,+1,+1,-1,-1,+1,+1,-1,-1,+1,+1,-1},
CUBE_3_Y = {0,-1,+1, 0, 0, 0, 0,-1,-1,-1,-1,+1,+1,+1,+1, 0, 0, 0, 0,-1,-1,-1,-1,+1,+1,+1,+1},
CUBE_3_Z = {0, 0, 0,-1,+1, 0, 0,-1,+1, 0, 0,-1,+1, 0, 0,-1,+1,-1,+1,-1,+1,-1,+1,-1,+1,-1,+1},
CUBE_3[] = {{ 0, 0, 0}, { 0,-1, 0}, { 0,+1, 0}, { 0, 0,-1}, { 0, 0,+1}, {-1, 0, 0}, {+1, 0, 0}, { 0,-1,-1}, { 0,-1,+1}, {-1,-1, 0}, {+1,-1, 0}, { 0,+1,-1}, { 0,+1,+1}, {-1,+1, 0}, {+1,+1, 0}, {-1, 0,-1}, {+1, 0,+1}, {+1, 0,-1}, {-1, 0,+1}, {-1,-1,-1}, {+1,-1,+1}, {+1,-1,-1}, {-1,-1,+1}, {-1,+1,-1}, {+1,+1,+1}, {+1,+1,-1}, {-1,+1,+1}};
/** Side->ForgeDirection Mappings. */
public static final ForgeDirection[] FORGE_DIR = {ForgeDirection.DOWN, ForgeDirection.UP, ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.WEST, ForgeDirection.EAST, ForgeDirection.UNKNOWN};
/** Side->Opposite Mappings with ForgeDirection. */
public static final ForgeDirection[] FORGE_DIR_OPPOSITES = {ForgeDirection.UP, ForgeDirection.DOWN, ForgeDirection.SOUTH, ForgeDirection.NORTH, ForgeDirection.EAST, ForgeDirection.WEST, ForgeDirection.UNKNOWN};
/** Compass alike Array for the proper ordering of North, East, South and West. */
public static final byte[] COMPASS_DIRECTIONS = {SIDE_NORTH, SIDE_EAST, SIDE_SOUTH, SIDE_WEST};
/** Side -> Compass Direction. Defaults to North if wrong value. */
public static final byte[] COMPASS_FROM_SIDE = { 0, 0, 0, 2, 3, 1, 0, 0};
/** Rotate */
public static final byte[] ROTATE_090 = { 0, 1, 5, 4, 2, 3, 6, 6},
ROTATE_180 = { 0, 1, 3, 2, 5, 4, 6, 6},
ROTATE_270 = { 0, 1, 4, 5, 3, 2, 6, 6};
/** Meta -> Side+1 */
public static final byte[] META_TO_SIDE_0 = { 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6},
META_TO_SIDE_1 = { 6, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6},
META_TO_SIDE_2 = { 6, 6, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6},
META_TO_SIDE_3 = { 6, 6, 6, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6},
META_TO_SIDE_4 = { 6, 6, 6, 6, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6},
META_TO_SIDE_5 = { 6, 6, 6, 6, 6, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6},
META_TO_SIDE_6 = { 6, 6, 6, 6, 6, 6, 0, 1, 2, 3, 4, 5, 6, 6, 6, 6},
META_TO_SIDE_7 = { 6, 6, 6, 6, 6, 6, 6, 0, 1, 2, 3, 4, 5, 6, 6, 6},
META_TO_SIDE_8 = { 6, 6, 6, 6, 6, 6, 6, 6, 0, 1, 2, 3, 4, 5, 6, 6},
META_TO_SIDE_9 = { 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 1, 2, 3, 4, 5, 6},
META_TO_SIDE10 = { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 1, 2, 3, 4, 5};
/** Used for Meta => Side */
public static final byte[] VALIDATE = { 0, 1, 2, 3, 4, 5, 0, 0, 0, 1, 2, 3, 4, 5, 0, 0},
VALIDATE_VERTICAL = { 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
VALIDATE_HORIZONTAL = { 3, 3, 2, 3, 4, 5, 3, 3, 3, 3, 2, 3, 4, 5, 3, 3};
/** An Array containing all Sides which follow the Condition, in order to iterate over them for example. */
public static final byte[] ALL_SIDES = {0,1,2,3,4,5,6},
ALL_SIDES_MIDDLE = {6,0,1,2,3,4,5},
ALL_SIDES_MIDDLE_UP = {6,1,2,3,4,5,0},
ALL_SIDES_MIDDLE_DOWN = {6,0,2,3,4,5,1},
ALL_SIDES_VALID = {0,1,2,3,4,5 },
ALL_SIDES_VALID_ORDER[] = {{0,1,2,3,4,5 },{1,2,3,4,5,0 },{2,3,4,5,0,1 },{3,4,5,0,1,2 },{4,5,0,1,2,3 },{5,0,1,2,3,4 },{0,1,2,3,4,5 }},
ALL_SIDES_VALID_FIRST[] = {{0,1,2,3,4,5 },{1,0,2,3,4,5 },{2,0,1,3,4,5 },{3,0,1,2,4,5 },{4,0,1,2,3,5 },{5,0,1,2,3,4 },{0,1,2,3,4,5 }},
ALL_SIDES_VALID_ONLY[] = {{0 },{1 },{2 },{3 },{4 },{5 },{0,1,2,3,4,5 }},
ALL_SIDES_VALID_BUT[] = {{ 1,2,3,4,5 },{0 ,2,3,4,5 },{0,1 ,3,4,5 },{0,1,2 ,4,5 },{0,1,2,3 ,5 },{0,1,2,3,4 },{0,1,2,3,4,5 }},
ALL_SIDES_VALID_BUT_AXIS[] = {{ 2,3,4,5 },{ 2,3,4,5 },{0,1 ,4,5 },{0,1 ,4,5 },{0,1,2,3 },{0,1,2,3 },{0,1,2,3,4,5 }},
ALL_SIDES_THIS_AND_ANY[] = {{0 ,6},{1 ,6},{2 ,6},{3 ,6},{4 ,6},{5 ,6},{0,1,2,3,4,5,6}},
ALL_SIDES_VERTICAL = {0,1},
ALL_SIDES_BOTTOM = {0},
ALL_SIDES_TOP = {1},
ALL_SIDES_HORIZONTAL_ORDER[] = {{2,3,4,5}, {3,4,5,2}, {4,5,2,3}, {5,2,3,4}},
ALL_SIDES_HORIZONTAL = {2,3,4,5},
ALL_SIDES_HORIZONTAL_UP = {2,3,4,5,1},
ALL_SIDES_HORIZONTAL_DOWN = {2,3,4,5,0},
ALL_SIDES_BUT_TOP = {0,2,3,4,5},
ALL_SIDES_BUT_BOTTOM = {1,2,3,4,5},
ALL_SIDES_X = {4,5},
ALL_SIDES_Y = {0,1},
ALL_SIDES_Z = {2,3};
/** For Facing Checks. */
public static final boolean[] SIDES_BOTTOM = {T,F,F,F,F,F,F,F},
SIDES_TOP = {F,T,F,F,F,F,F,F},
SIDES_LEFT = {F,F,T,F,F,F,F,F},
SIDES_FRONT = {F,F,F,T,F,F,F,F},
SIDES_RIGHT = {F,F,F,F,T,F,F,F},
SIDES_BACK = {F,F,F,F,F,T,F,F},
SIDES_INVALID = {F,F,F,F,F,F,T,T},
SIDES_VALID = {T,T,T,T,T,T,F,F},
SIDES_ALL = {T,T,T,T,T,T,T,T},
SIDES_NONE = {F,F,F,F,F,F,F,F},
SIDES_LEFT_RIGHT = {F,F,T,F,T,F,F,F},
SIDES_FRONT_BACK = {F,F,F,T,F,T,F,F},
SIDES_AXIS_X = {F,F,F,F,T,T,F,F},
SIDES_AXIS_Y = {T,T,F,F,F,F,F,F},
SIDES_AXIS_Z = {F,F,T,T,F,F,F,F},
SIDES_COMPASS = {F,F,T,T,T,T,F,F},
SIDES_VERTICAL = {T,T,F,F,F,F,F,F},
SIDES_HORIZONTAL = {F,F,T,T,T,T,F,F},
SIDES_TOP_HORIZONTAL = {F,T,T,T,T,T,F,F},
SIDES_BOTTOM_HORIZONTAL = {T,F,T,T,T,T,F,F},
SIDES_ITEM_RENDER = {T,T,T,T,T,T,F,F};
/** For Facing Checks. */
public static final boolean[][]
SIDES_ANY_BUT = {
{F,T,T,T,T,T,F,F},
{T,F,T,T,T,T,F,F},
{T,T,F,T,T,T,F,F},
{T,T,T,F,T,T,F,F},
{T,T,T,T,F,T,F,F},
{T,T,T,T,T,F,F,F},
{T,T,T,T,T,T,F,F},
{T,T,T,T,T,T,F,F}
},
SIDES_THIS = {
{T,F,F,F,F,F,F,F},
{F,T,F,F,F,F,F,F},
{F,F,T,F,F,F,F,F},
{F,F,F,T,F,F,F,F},
{F,F,F,F,T,F,F,F},
{F,F,F,F,F,T,F,F},
{F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F}
},
SIDES_EQUAL = {
{T,F,F,F,F,F,T,T},
{F,T,F,F,F,F,T,T},
{F,F,T,F,F,F,T,T},
{F,F,F,T,F,F,T,T},
{F,F,F,F,T,F,T,T},
{F,F,F,F,F,T,T,T},
{T,T,T,T,T,T,T,T},
{T,T,T,T,T,T,T,T}
},
SIDES_UNEQUAL = {
{F,T,T,T,T,T,F,F},
{T,F,T,T,T,T,F,F},
{T,T,F,T,T,T,F,F},
{T,T,T,F,T,T,F,F},
{T,T,T,T,F,T,F,F},
{T,T,T,T,T,F,F,F},
{F,F,F,F,F,F,F,F},
{F,F,F,F,F,F,F,F}
},
AXIS_XYZ = {
SIDES_NONE,
SIDES_AXIS_X,
SIDES_AXIS_Y,
SIDES_AXIS_Z
};
/** Pillar Stuff for more understandable references. */
public static final byte PILLAR_X = 4, PILLAR_Y = 0, PILLAR_Z = 8, PILLAR_BITS = 12, PILLAR_DATA = 3, PILLAR_RENDER = 31
, PILLARS_X[] = {4,5,6,7}, PILLARS_Y[] = {0,1,2,3}, PILLARS_Z[] = {8,9,10,11}
, PILLAR_BITS_SIDE[] = {0,0,8,8,4,4,0,0}
, PILLAR_DATA_SIDE[][] = {
{0,0,8,8,4,4,0,0}, {1,1,9,9,5,5,1,1}, {2,2,10,10,6,6,2,2}, {3,3,11,11,7,7,3,3}
, {0,0,8,8,4,4,0,0}, {1,1,9,9,5,5,1,1}, {2,2,10,10,6,6,2,2}, {3,3,11,11,7,7,3,3}
, {0,0,8,8,4,4,0,0}, {1,1,9,9,5,5,1,1}, {2,2,10,10,6,6,2,2}, {3,3,11,11,7,7,3,3}
// Pillar Blocks that are fully covered in "Bark" (if they were Logs)
, {12,12,12,12,12,12,12,12}
, {13,13,13,13,13,13,13,13}
, {14,14,14,14,14,14,14,14}
, {15,15,15,15,15,15,15,15}
};
/** Pillar Axis Stuff for more understandable references. */
public static final boolean[][] PILLAR_TO_AXIS = {
SIDES_AXIS_Y, SIDES_AXIS_Y, SIDES_AXIS_Y, SIDES_AXIS_Y,
SIDES_AXIS_X, SIDES_AXIS_X, SIDES_AXIS_X, SIDES_AXIS_X,
SIDES_AXIS_Z, SIDES_AXIS_Z, SIDES_AXIS_Z, SIDES_AXIS_Z,
SIDES_NONE , SIDES_NONE , SIDES_NONE , SIDES_NONE ,
};
/** Used for Networking Covers, for the most Part. */
public static final boolean[] TRUE_6 = {T,T,T,T,T,T};
/** To Scan Coordinates in a somewhat "close stuff gets scanned first" order. */
public static final int[]
SCAN_NEG_0 = {0}
, SCAN_NEG_1 = {0, -1, +1}
, SCAN_NEG_2 = {0, -1, +1, -2, +2}
, SCAN_NEG_3 = {0, -1, +1, -2, +2, -3, +3}
, SCAN_NEG_4 = {0, -1, +1, -2, +2, -3, +3, -4, +4}
, SCAN_NEG_5 = {0, -1, +1, -2, +2, -3, +3, -4, +4, -5, +5}
, SCAN_NEG_6 = {0, -1, +1, -2, +2, -3, +3, -4, +4, -5, +5, -6, +6}
, SCAN_NEG_7 = {0, -1, +1, -2, +2, -3, +3, -4, +4, -5, +5, -6, +6, -7, +7}
, SCAN_NEG_8 = {0, -1, +1, -2, +2, -3, +3, -4, +4, -5, +5, -6, +6, -7, +7, -8, +8}
, SCAN_NEG_9 = {0, -1, +1, -2, +2, -3, +3, -4, +4, -5, +5, -6, +6, -7, +7, -8, +8, -9, +9}
, SCAN_POS_0 = {0}
, SCAN_POS_1 = {0, +1, -1}
, SCAN_POS_2 = {0, +1, -1, +2, -2}
, SCAN_POS_3 = {0, +1, -1, +2, -2, +3, -3}
, SCAN_POS_4 = {0, +1, -1, +2, -2, +3, -3, +4, -4}
, SCAN_POS_5 = {0, +1, -1, +2, -2, +3, -3, +4, -4, +5, -5}
, SCAN_POS_6 = {0, +1, -1, +2, -2, +3, -3, +4, -4, +5, -5, +6, -6}
, SCAN_POS_7 = {0, +1, -1, +2, -2, +3, -3, +4, -4, +5, -5, +6, -6, +7, -7}
, SCAN_POS_8 = {0, +1, -1, +2, -2, +3, -3, +4, -4, +5, -5, +6, -6, +7, -7, +8, -8}
, SCAN_POS_9 = {0, +1, -1, +2, -2, +3, -3, +4, -4, +5, -5, +6, -6, +7, -7, +8, -8, +9, -9}
, SCANS_POS[] = {SCAN_POS_0, SCAN_POS_1, SCAN_POS_2, SCAN_POS_3, SCAN_POS_4, SCAN_POS_5, SCAN_POS_6, SCAN_POS_7, SCAN_POS_8, SCAN_POS_9}
, SCANS_NEG[] = {SCAN_NEG_0, SCAN_NEG_1, SCAN_NEG_2, SCAN_NEG_3, SCAN_NEG_4, SCAN_NEG_5, SCAN_NEG_6, SCAN_NEG_7, SCAN_NEG_8, SCAN_NEG_9}
;
/** Zero-Length Array to save on Memory. */ public static final Object [] ZL = new Object[0], ZL_OBJECT = ZL;
/** Zero-Length Array to save on Memory. */ public static final byte [] ZL_BYTE = new byte[0];
/** Zero-Length Array to save on Memory. */ public static final short [] ZL_SHORT = new short[0];
/** Zero-Length Array to save on Memory. */ public static final int [] ZL_INTEGER = new int[0];
/** Zero-Length Array to save on Memory. */ public static final long [] ZL_LONG = new long[0], L12_LONG_1 = new long[] {1,1,1,1,1,1,1,1,1,1,1,1};
/** Zero-Length Array to save on Memory. */ public static final float [] ZL_FLOAT = new float[0];
/** Zero-Length Array to save on Memory. */ public static final double [] ZL_DOUBLE = new double[0];
/** Zero-Length Array to save on Memory. */ public static final String [] ZL_STRING = new String[0];
/** Zero-Length Array to save on Memory. */ public static final ItemStack [] ZL_IS = new ItemStack[0], ZL_ITEMSTACK = ZL_IS;
/** Zero-Length Array to save on Memory. */ public static final ItemStackContainer [] ZL_ISC = new ItemStackContainer[0];
/** Zero-Length Array to save on Memory. */ public static final FluidStack [] ZL_FS = new FluidStack[0], ZL_FLUIDSTACK = ZL_FS;
/** Zero-Length Array to save on Memory. */ public static final FluidTankGT [] ZL_FT = new FluidTankGT[0], ZL_FLUIDTANKGT = ZL_FT;
/** Zero-Length Array to save on Memory. */ public static final TagData [] ZL_TD = new TagData[0], ZL_TAGDATA = ZL_TD;
/** Zero-Length Array to save on Memory. */ public static final OreDictMaterial [] ZL_MT = new OreDictMaterial[0], ZL_MATERIAL = ZL_MT;
/** Zero-Length Array to save on Memory. */ public static final OreDictMaterialStack [] ZL_MS = new OreDictMaterialStack[0], ZL_MATERIALSTACK = ZL_MS;
/** Zero-Length Array to save on Memory. */ public static final Enchantment [] ZL_ENCHANTMENT = new Enchantment[0];
/** Zero-Length Array to save on Memory. */ public static final FluidTank [] ZL_FLUIDTANK = new FluidTank[0];
/** Zero-Length Array to save on Memory. */ public static final IFluidTank [] ZL_IFLUIDTANK = new IFluidTank[0];
/** Zero-Length Array to save on Memory. */ public static final FluidTankInfo [] ZL_FLUIDTANKINFO = new FluidTankInfo[0], L1_FLUIDTANKINFO_DUMMY = new FluidTankInfo[] {new FluidTankInfo(null, Integer.MAX_VALUE)};
/** Zero-Length Array to save on Memory. */ public static final OreDictItemData [] ZL_OREDICTITEMDATA = new OreDictItemData[0];
/** Zero-Length Array to save on Memory. */ public static final OreDictPrefix [] ZL_OREDICTPREFIX = new OreDictPrefix[0];
/** Zero-Length Array to save on Memory. */ public static final ObjectStack<?> [] ZL_OBJECTSTACK = new ObjectStack[0];
/** Zero-Length Array to save on Memory. */ public static final ForgeDirection [] ZL_FORGEDIRECTION = new ForgeDirection[0];
/** Zero-Length Array to save on Memory. */ public static final ChunkCoordinates [] ZL_COORDS = new ChunkCoordinates[0];
/** Zero-Length Array to save on Memory. */ public static final Recipe [] ZL_RECIPE = new Recipe[0];
/** Zero-Length Array to save on Memory. */ public static final IIconContainer [] ZL_IICONCONTAINER = new IIconContainer[0], L6_IICONCONTAINER = new IIconContainer[6], L1L6_IICONCONTAINER[] = new IIconContainer[][] {L6_IICONCONTAINER};
/** This way it is possible to have a Call Hierarchy of NullPointers in ItemStack based Functions, and also because most of the time I don't know what kind of Data Type the "null" stands for, when there are shitloads of Parameters for a Function */
public static final ItemStack NI = null;
/** This way it is possible to have a Call Hierarchy of NullPointers in FluidStack based Functions, and also because most of the time I don't know what kind of Data Type the "null" stands for, when there are shitloads of Parameters for a Function */
public static final FluidStack NF = null;
/** This way it is possible to have a Call Hierarchy of NullPointers in Block based Functions, and also because most of the time I don't know what kind of Data Type the "null" stands for, when there are shitloads of Parameters for a Function */
public static final Block NB = Blocks.air;
/** The Logs: Debug, Output, Error, OreDict and Material List. */
public static PrintStream DEB = new LogBuffer(), OUT = new LogBuffer(), ERR = new LogBuffer(), ORD = new LogBuffer(), MAT_LOG = null;
/** States of Matter */
public static final byte STATE_SOLID = 0, STATE_LIQUID = 1, STATE_GASEOUS = 2, STATE_PLASMA = 3;
/** The weight of Air at Atmospheric Pressure per Cubic Centimetre. */
public static final double WEIGHT_AIR_G_PER_CUBIC_CENTIMETER = 0.0012;
/** The weight of Air at Atmospheric Pressure per Cubic Meter. */
public static final double WEIGHT_AIR_KG_PER_CUBIC_METER = 1.2;
/** The weight of Air at Atmospheric Pressure per Material Unit. */
public static final double WEIGHT_AIR_KG_PER_UNIT = WEIGHT_AIR_KG_PER_CUBIC_METER / 9;
/** Not really Constants, but they set using the Config and therefore should be constant. */
public static boolean D1 = F, D2 = F, D3 = F, ALWAYS_TRUE = T, ALWAYS_FALSE = F, EXPERIMENTS = F, CLIENT_BLOCKUPDATE_SOUNDS = F, NEI = F, TOOL_SOUNDS = T, TOOL_SOUNDS_SETTING = T, EMIT_EU_AS_RF = F, DISABLE_GT6_CRAFTING_RECIPES = F, ENABLE_ADDING_IC2_MACERATOR_RECIPES = T, DISABLE_ALL_IC2_MACERATOR_RECIPES = F, ENABLE_ADDING_IC2_EXTRACTOR_RECIPES = T, DISABLE_ALL_IC2_EXTRACTOR_RECIPES = F, ENABLE_ADDING_IC2_COMPRESSOR_RECIPES = T, DISABLE_ALL_IC2_COMPRESSOR_RECIPES = F, ENABLE_ADDING_IC2_OREWASHER_RECIPES = T, DISABLE_ALL_IC2_OREWASHER_RECIPES = F, ENABLE_ADDING_IC2_CENTRIFUGE_RECIPES = T, DISABLE_ALL_IC2_CENTRIFUGE_RECIPES = F, SLOW_LEAF_DECAY = F, FAST_LEAF_DECAY = T, FORCE_GRAVEL_NO_FLINT = F, NERFED_WOOD = T, FOOD_OVERDOSE_DEATH = T, NUTRITION_SYSTEM = T, OBSTRUCTION_CHECKS = T, OWNERSHIP_RESET = F, SPAWN_ZONE_MOB_PROTECTION = T, SPAWN_NO_BATS = T, SPAWN_HOSTILES_ONLY_IN_DARKNESS = T, CONSTANT_ENERGY = T, RAIN_EXPLOSIONS = F, WATER_EXPLOSIONS = F, THUNDER_EXPLOSIONS = F, FIRE_EXPLOSIONS = F, OVERCHARGE_EXPLOSIONS = F, FIRE_BREAKING = F, RAIN_BREAKING = F, WATER_BREAKING = F, THUNDER_BREAKING = F, OVERCHARGE_BREAKING = F, SHOW_MICROBLOCKS = F, SHOW_CHEM_FORMULAS = T, SHOW_INTERNAL_NAMES = F, SHOW_HIDDEN_MATERIALS = F, SHOW_HIDDEN_PREFIXES = F, SHOW_ORE_BLOCK_PREFIXES = F, SHOW_HIDDEN_ITEMS = F, SHOW_BUMBLEBEES = F, DRINKS_ALWAYS_DRINKABLE = F, HUNGER_BY_INVENTORY_WEIGHT = F, TOOL_BREAK_FATIQUE = T, INVENTORY_UNIFICATION = T, XP_ORB_COMBINING = T, ADVENTURE_MODE_KIT = F, SURVIVAL_INTO_ADVENTURE_MODE = F, MOBS_DROP_LEAD = T, MOBS_DROP_MEAT = T, MOBS_DROP_JUNK = T, MOBS_DROP_BOOK = T, MOBS_DROP_NAME = T, ZOMBIES_DIG_WITH_TOOLS = F, ZOMBIES_DIG_TILEENTITIES = F, ZOMBIES_HOLD_PICKAXES = T, ZOMBIES_HOLD_TNT = T, ZOMBIES_IGNITE_HELD_TNT = T, DISPLAY_TEMP_TOOLTIP = T, GENERATE_STONE = T, GENERATE_STREETS = F, GENERATE_NEXUS = F, GENERATE_TESTING = F, GENERATE_BEACON = F, GENERATE_BIOMES = F, GENERATING_SPECIAL = F;
/** Date based Shenanigans */
@SuppressWarnings("deprecation")
public static boolean
APRIL_FOOLS = (new Date().getMonth() == 3 && new Date().getDate() <= 2),
WOODMANS_BDAY = (new Date().getMonth() == 5 && new Date().getDate() >= 20),
XMAS_IN_JULY = (new Date().getMonth() == 6 && new Date().getDate() >= 23),
XMAS_IN_DECEMBER = (new Date().getMonth() == 11 && new Date().getDate() >= 6);
/** This means that Client or Server specific Base Files are definitely existing and loaded! Not if the World is actually client side or server side! */
public static boolean CODE_UNCHECKED = T, CODE_CLIENT = F, CODE_SERVER = F;
/** Not really Constants, but they set using the Config and therefore should be constant. */
public static double HARDNESS_MULTIPLIER_SAND = 1.0, HARDNESS_MULTIPLIER_ROCK = 1.0, HARDNESS_MULTIPLIER_ORES = 1.0;
/** Those are the values derived directly by the Configuration File. DO NOT USE THEM, USE THE VALUES ABOVE INSTEAD!!! */
public static double CONFIG_HARDNESS_MULTIPLIER_SAND = 1.0, CONFIG_HARDNESS_MULTIPLIER_ROCK = 1.0, CONFIG_HARDNESS_MULTIPLIER_ORES = 1.0;
/** Tree Growth Time Multiplier. */
public static int TREE_GROWTH_TIME = 1;
/** TFC Damage Multiplier. */
public static int TFC_DAMAGE_MULTIPLIER = 80;
/** Entity Cramming */
public static int ENTITY_CRAMMING = 3;
/** Item Related */
public static int ITEM_DESPAWN_TIME = 6000;
/** Gets set when the Player dies. Only works Client Side and gets lost when the Client restarts, but not when the Client just relogs. */
public static ChunkCoordinates LAST_DEATH_OF_THE_PLAYER = null;
/** Gets set when a TileEntity gets broken, in order to be able to access it for Drops, even though it just got deleted. */
public static ThreadLocal<TileEntity> LAST_BROKEN_TILEENTITY = new ThreadLocal<>();
/** If you have to give something a World Parameter but there is no World... (Dummy World) */
public static DummyWorld DW;
/** Dimension Types that I use as parameter for my WorldGenerators, aside from the Vanilla Dimension IDs none of these IDs is accurate as they are just the Defaults of their Respective Mods! */
public static final int DIM_UNKNOWN = Integer.MAX_VALUE
, DIM_OVERWORLD = 0
, DIM_NETHER = -1
, DIM_END = 1
, DIM_ENVM = -2
, DIM_A97 = -6 // Collides with Aether by default
, DIM_ELDRITCH = -42
, DIM_CW2_AquaCavern = -32
, DIM_CW2_Caveland = -33
, DIM_CW2_Cavenia = -34
, DIM_CW2_Cavern = -31
, DIM_CW2_Caveworld = -30
, DIM_MOON = 2
, DIM_MARS = 3
, DIM_ASTEROIDS = 4
, DIM_PLANETS = 5
, DIM_AETHER = 6
, DIM_TWILIGHT = 7
, DIM_ATUM = 17
, DIM_BETWEENLANDS = 20
, DIM_FROZEN_HEARTH = 21
, DIM_SOUL_FOREST = 22
, DIM_CANDY = 23
, DIM_EREBUS = 66
, DIM_ALFHEIM = 105
, DIM_DEEPDARK = -100
, DIM_LASTMILLENIUM = -112
, DIM_TROPICS = -127
;
/** Lists of all the active World generation Features by Dimension Type, these are getting initialised in Load! */
@SuppressWarnings("unchecked")
public static final List<WorldgenObject>
GEN_OVERWORLD = new ArrayListNoNulls<>()
, GEN_GT = new ArrayListNoNulls<>()
, GEN_PFAA = new ArrayListNoNulls<>()
, GEN_TFC = new ArrayListNoNulls<>()
, GEN_NETHER = new ArrayListNoNulls<>()
, GEN_AETHER = new ArrayListNoNulls<>()
, GEN_END = new ArrayListNoNulls<>()
, GEN_MOON = new ArrayListNoNulls<>()
, GEN_MARS = new ArrayListNoNulls<>()
, GEN_PLANETS = new ArrayListNoNulls<>()
, GEN_ASTEROIDS = new ArrayListNoNulls<>()
, GEN_TWILIGHT = new ArrayListNoNulls<>()
, GEN_EREBUS = new ArrayListNoNulls<>()
, GEN_BETWEENLANDS = new ArrayListNoNulls<>()
, GEN_ATUM = new ArrayListNoNulls<>()
, GEN_DEEPDARK = new ArrayListNoNulls<>()
, GEN_ENVM = new ArrayListNoNulls<>()
, GEN_ENVM_GT = new ArrayListNoNulls<>()
, GEN_A97 = new ArrayListNoNulls<>()
, GEN_A97_GT = new ArrayListNoNulls<>()
, GEN_CW2_AquaCavern = new ArrayListNoNulls<>()
, GEN_CW2_AquaCavern_GT = new ArrayListNoNulls<>()
, GEN_CW2_Caveland = new ArrayListNoNulls<>()
, GEN_CW2_Caveland_GT = new ArrayListNoNulls<>()
, GEN_CW2_Cavenia = new ArrayListNoNulls<>()
, GEN_CW2_Cavenia_GT = new ArrayListNoNulls<>()
, GEN_CW2_Cavern = new ArrayListNoNulls<>()
, GEN_CW2_Cavern_GT = new ArrayListNoNulls<>()
, GEN_CW2_Caveworld = new ArrayListNoNulls<>()
, GEN_CW2_Caveworld_GT = new ArrayListNoNulls<>()
, GEN_ALFHEIM = new ArrayListNoNulls<>()
, GEN_TROPICS = new ArrayListNoNulls<>()
, GEN_CANDY = new ArrayListNoNulls<>()
, GEN_GEMS[] = new List[] {GEN_OVERWORLD , GEN_PFAA, GEN_ENVM, GEN_A97, GEN_EREBUS, GEN_BETWEENLANDS, GEN_ATUM, GEN_MARS, GEN_AETHER}
, GEN_FLOOR[] = new List[] {GEN_OVERWORLD, GEN_GT, GEN_PFAA, GEN_ENVM, GEN_ENVM_GT, GEN_A97, GEN_A97_GT, GEN_EREBUS, GEN_BETWEENLANDS, GEN_ATUM, GEN_MARS, GEN_DEEPDARK, GEN_TFC, GEN_NETHER, GEN_MOON, GEN_TWILIGHT, GEN_ALFHEIM, GEN_TROPICS, GEN_CANDY, GEN_CW2_AquaCavern, GEN_CW2_AquaCavern_GT, GEN_CW2_Caveland, GEN_CW2_Caveland_GT, GEN_CW2_Cavenia, GEN_CW2_Cavenia_GT, GEN_CW2_Cavern, GEN_CW2_Cavern_GT, GEN_CW2_Caveworld, GEN_CW2_Caveworld_GT}
, GEN_ALL[] = new List[] {GEN_OVERWORLD, GEN_GT, GEN_PFAA, GEN_ENVM, GEN_ENVM_GT, GEN_A97, GEN_A97_GT, GEN_EREBUS, GEN_BETWEENLANDS, GEN_ATUM, GEN_MARS, GEN_DEEPDARK, GEN_TFC, GEN_NETHER, GEN_MOON, GEN_TWILIGHT, GEN_ALFHEIM, GEN_TROPICS, GEN_CANDY, GEN_CW2_AquaCavern, GEN_CW2_AquaCavern_GT, GEN_CW2_Caveland, GEN_CW2_Caveland_GT, GEN_CW2_Cavenia, GEN_CW2_Cavenia_GT, GEN_CW2_Cavern, GEN_CW2_Cavern_GT, GEN_CW2_Caveworld, GEN_CW2_Caveworld_GT, GEN_AETHER, GEN_END, GEN_PLANETS, GEN_ASTEROIDS}
;
/** Lists of all the active Large Ore Vein generation by Dimension Type, these are getting initialised in Load! */
@SuppressWarnings("unchecked")
public static final List<WorldgenObject>
ORE_OVERWORLD = new ArrayListNoNulls<>()
, ORE_PFAA = new ArrayListNoNulls<>()
, ORE_TFC = new ArrayListNoNulls<>()
, ORE_NETHER = new ArrayListNoNulls<>()
, ORE_AETHER = new ArrayListNoNulls<>()
, ORE_END = new ArrayListNoNulls<>()
, ORE_MOON = new ArrayListNoNulls<>()
, ORE_MARS = new ArrayListNoNulls<>()
, ORE_PLANETS = new ArrayListNoNulls<>()
, ORE_ASTEROIDS = new ArrayListNoNulls<>()
, ORE_TWILIGHT = new ArrayListNoNulls<>()
, ORE_EREBUS = new ArrayListNoNulls<>()
, ORE_BETWEENLANDS = new ArrayListNoNulls<>()
, ORE_ATUM = new ArrayListNoNulls<>()
, ORE_DEEPDARK = new ArrayListNoNulls<>()
, ORE_ENVM = new ArrayListNoNulls<>()
, ORE_A97 = new ArrayListNoNulls<>()
, ORE_CW2_AquaCavern = new ArrayListNoNulls<>()
, ORE_CW2_Caveland = new ArrayListNoNulls<>()
, ORE_CW2_Cavenia = new ArrayListNoNulls<>()
, ORE_CW2_Cavern = new ArrayListNoNulls<>()
, ORE_CW2_Caveworld = new ArrayListNoNulls<>()
, ORE_ALFHEIM = new ArrayListNoNulls<>()
, ORE_TROPICS = new ArrayListNoNulls<>()
, ORE_CANDY = new ArrayListNoNulls<>()
, ORE_FLOOR[] = new List[] {ORE_OVERWORLD, ORE_PFAA, ORE_ENVM, ORE_A97, ORE_TFC, ORE_NETHER, ORE_MOON, ORE_MARS, ORE_TWILIGHT, ORE_EREBUS, ORE_BETWEENLANDS, ORE_ATUM, ORE_ALFHEIM, ORE_DEEPDARK, ORE_TROPICS, ORE_CANDY, ORE_CW2_AquaCavern, ORE_CW2_Caveland, ORE_CW2_Cavenia, ORE_CW2_Cavern, ORE_CW2_Caveworld}
, ORE_ALL[] = new List[] {ORE_OVERWORLD, ORE_PFAA, ORE_ENVM, ORE_A97, ORE_TFC, ORE_NETHER, ORE_MOON, ORE_MARS, ORE_TWILIGHT, ORE_EREBUS, ORE_BETWEENLANDS, ORE_ATUM, ORE_ALFHEIM, ORE_DEEPDARK, ORE_TROPICS, ORE_CANDY, ORE_CW2_AquaCavern, ORE_CW2_Caveland, ORE_CW2_Cavenia, ORE_CW2_Cavern, ORE_CW2_Caveworld, ORE_AETHER, ORE_END, ORE_PLANETS, ORE_ASTEROIDS}
;