@@ -15,6 +15,9 @@ public class Main {
15
15
public static final boolean PARTIAL_OVERRIDE = true ;
16
16
17
17
public static void main (String [] args ) {
18
+ //Meta data
19
+ String appVersion = "v1.1.1_pre-release" ;
20
+
18
21
//Program data
19
22
Scanner userInput = new Scanner (System .in );
20
23
String input ;
@@ -56,12 +59,17 @@ public static void main(String[] args) {
56
59
testLegacy ();
57
60
}
58
61
if (false ) {
59
- crackSingleDungeon (v1_16 , -6799 , -1473 , Biomes .DESERT , 66991252199345L );
62
+ crackDungeonSeedSingle (v1_16 , -6799 , -1473 , Biomes .DESERT , 66991252199345L );
60
63
}
61
64
if (false ) {
62
- crackDoubleDungeon (vLegacy , 140 , -35 , Biomes .THE_VOID , 240428811966007L , 171 , -34 , Biomes .THE_VOID , 82449899703950L );
65
+ crackDungeonSeedDouble (vLegacy , 140 , -35 , Biomes .THE_VOID , 240428811966007L , 171 , -34 , Biomes .THE_VOID , 82449899703950L );
63
66
}
64
67
68
+ System .out .println ("===================================================================================" );
69
+ System .out .println ("Minecraft Dungeon Cracker " + appVersion + " | By Kinomora" );
70
+ System .out .println ("Available for free at github.com/Kinomora/DungeonCracker" );
71
+ System .out .println ("===================================================================================" );
72
+
65
73
//Ask the user for the MCVersion they want to use
66
74
System .out .print ("Please provide the version number that the dungeon was created in, as listed below:\n 16 Releases 1.16.x and 1.17.x\n 15 Release 1.15.x\n 13 Releases 1.13.x and 1.14.x\n 8 Releases 1.8.x through 1.12.x\n 1 Releases 1.7.x and earlier; including beta, alpha, and infdev\n Type the corresponding number on the left: " );
67
75
//valid version starts off false and is inverted, then set to true to after a valid input is received
@@ -76,41 +84,43 @@ public static void main(String[] args) {
76
84
}
77
85
}
78
86
validInput = false ;
87
+ System .out .println ("===================================================================================" );
79
88
80
89
//Ask the user if they are using 1 or 2 dungeons
81
- System .out .print ("\n Do you have 1 dungeon or 2: " );
90
+ System .out .print ("Do you have 1 dungeon or 2: " );
82
91
while (!validInput ) {
83
92
input = userInput .nextLine ();
84
93
if (getIntFromInputString (input ) == 1 ) {
85
- System .out .println ("Using 1 dungeon..\n " );
86
- doubleSpawnerMode = false ;
94
+ // System.out.println("Using 1 dungeon..\n");
95
+ // doubleSpawnerMode = false;
87
96
validInput = true ;
88
97
} else if (getIntFromInputString (input ) == 2 ) {
89
- System .out .println ("Using 2 dungeons..\n " );
98
+ // System.out.println("Using 2 dungeons..\n");
90
99
doubleSpawnerMode = true ;
91
100
validInput = true ;
92
101
} else {
93
102
System .out .println ("Please enter a valid system mode by typing 1 or 2.\n Application mode: " );
94
103
}
95
104
}
96
105
validInput = false ;
106
+ System .out .println ("===================================================================================" );
97
107
98
108
if (version .isOlderThan (v1_13 ) && !doubleSpawnerMode ) {
99
109
//Ask the user if they want to input dungeon data or seeds
100
110
System .out .println ("Since you only have 1 dungeon and have selected a version older than 1.13, Dungeon Data Mode has automatically been selected." );
101
- System .out .println ("Entering Dungeon Data Mode..\n " );
111
+ // System.out.println("Entering Dungeon Data Mode..\n");
102
112
dungeonSeedMode = false ;
103
113
} else {
104
114
//Ask the user if they want to input dungeon data or seeds
105
- System .out .print ("Do you have dungeon data or do you already have a dungeon seed?\n 1 Dungeon Data Mode (Co-ords and Floor Pattern, typical )\n 2 Dungeon Seed Mode (Structure seeds, uncommon )\n Type the corresponding number on the left: " );
115
+ System .out .print ("Do you have dungeon data or do you already have a dungeon seed?\n 1 Dungeon Data Mode (Co-ords and Floor Pattern; Typical )\n 2 Dungeon Seed Mode (Structure seeds; Uncommon )\n Type the corresponding number on the left: " );
106
116
while (!validInput ) {
107
117
input = userInput .nextLine ();
108
118
if (getIntFromInputString (input ) == 1 ) {
109
- System .out .println ("Entering Dungeon Data Mode..\n " );
110
- dungeonSeedMode = false ;
119
+ // System.out.println("Entering Dungeon Data Mode..\n");
120
+ // dungeonSeedMode = false;
111
121
validInput = true ;
112
122
} else if (getIntFromInputString (input ) == 2 ) {
113
- System .out .println ("Entering Dungeon Seed Mode..\n " );
123
+ // System.out.println("Entering Dungeon Seed Mode..\n");
114
124
dungeonSeedMode = true ;
115
125
validInput = true ;
116
126
} else {
@@ -119,66 +129,80 @@ public static void main(String[] args) {
119
129
}
120
130
}
121
131
validInput = false ;
132
+ System .out .println ("===================================================================================" );
122
133
123
134
//If we are running in Dungeon Data mode we will need to gather more input data
124
135
if (!dungeonSeedMode ) {
125
136
if (!doubleSpawnerMode ) {
126
-
127
137
System .out .println ("Please input your dungeon data:" );
128
138
dungeon1x = getDungeonX (0 );
129
139
dungeon1y = getDungeonY (0 );
130
140
dungeon1z = getDungeonZ (0 );
131
141
dungeon1Sequence = getSequence ();
132
- if (version .isNewerThan (v1_15 ))dungeon1Biome = getDungeonBiome ();
142
+ if (version .isNewerThan (v1_15 )) {
143
+ dungeon1Biome = getDungeonBiome ();
144
+ }
133
145
} else {
134
146
System .out .println ("Please provide data for the first dungeon:" );
135
147
dungeon1x = getDungeonX (1 );
136
148
dungeon1y = getDungeonY (1 );
137
149
dungeon1z = getDungeonZ (1 );
138
150
dungeon1Sequence = getSequence ();
139
- if (version .isNewerThan (v1_15 ))dungeon1Biome = getDungeonBiome ();
140
- System .out .println ("\n Now enter the data for the second dungeon:" );
151
+ if (version .isNewerThan (v1_15 )) {
152
+ dungeon1Biome = getDungeonBiome ();
153
+ }
154
+ System .out .println ("Now enter the data for the second dungeon:" );
141
155
dungeon2x = getDungeonX (2 );
142
156
dungeon2y = getDungeonY (2 );
143
157
dungeon2z = getDungeonZ (2 );
144
158
dungeon2Sequence = getSequence ();
145
- if (version .isNewerThan (v1_15 ))dungeon2Biome = getDungeonBiome ();
159
+ if (version .isNewerThan (v1_15 )) {
160
+ dungeon2Biome = getDungeonBiome ();
161
+ }
146
162
}
147
163
} else {
148
164
if (!doubleSpawnerMode ) {
149
165
System .out .println ("Please input your dungeon info:" );
150
166
dungeon1x = getDungeonX (0 );
151
167
dungeon1z = getDungeonZ (0 );
152
168
dungeon1Seed = getDungeonSeed (0 );
153
- if (version .isNewerThan (v1_15 ))dungeon1Biome = getDungeonBiome ();
169
+ if (version .isNewerThan (v1_15 )) {
170
+ dungeon1Biome = getDungeonBiome ();
171
+ }
154
172
} else {
155
173
System .out .println ("Please provide info for the first dungeon:" );
156
174
dungeon1x = getDungeonX (1 );
157
175
dungeon1z = getDungeonZ (1 );
158
176
dungeon1Seed = getDungeonSeed (1 );
159
- if (version .isNewerThan (v1_15 ))dungeon1Biome = getDungeonBiome ();
160
- System .out .println ("\n Now enter the info for the second dungeon:" );
177
+ if (version .isNewerThan (v1_15 )) {
178
+ dungeon1Biome = getDungeonBiome ();
179
+ }
180
+ System .out .println ("Now enter the info for the second dungeon:" );
161
181
dungeon2x = getDungeonX (2 );
162
182
dungeon2z = getDungeonZ (2 );
163
183
dungeon2Seed = getDungeonSeed (2 );
164
- if (version .isNewerThan (v1_15 ))dungeon2Biome = getDungeonBiome ();
184
+ if (version .isNewerThan (v1_15 )) {
185
+ dungeon2Biome = getDungeonBiome ();
186
+ }
165
187
}
166
188
}
167
-
189
+ System .out .println ("===================================================================================" );
190
+ System .out .println ("Process data... Version: " + version + " | Multi-Dungeon: " + doubleSpawnerMode + " | Dungeon Seed Mode: " + dungeonSeedMode );
191
+ System .out .println ("===================================================================================" );
168
192
169
193
if (!dungeonSeedMode ) {
170
194
if (!doubleSpawnerMode ) {
171
195
//Dungeon Data mode with 1 dungeon
172
196
if (version .isBetween (vLegacy , v1_17 )) {
173
- crackSingle (version , dungeon1x , dungeon1y , dungeon1z , dungeon1Sequence , dungeon1Biome );
197
+ crackDungeonDataSingle (version , dungeon1x , dungeon1y , dungeon1z , dungeon1Sequence , dungeon1Biome );
174
198
} else {
175
199
System .out .println ("Unknown supported version error.." );
176
200
System .exit (0 );
177
201
}
178
202
} else {
179
203
//Dungeon Data mode with 2 dungeons
180
204
if (version .isBetween (vLegacy , v1_17 )) {
181
- crackDouble (version , dungeon1x , dungeon1y , dungeon1z , dungeon1Sequence , dungeon1Biome , dungeon2x , dungeon2y , dungeon2z , dungeon2Sequence , dungeon2Biome );
205
+ crackDungeonDataDouble (version , dungeon1x , dungeon1y , dungeon1z , dungeon1Sequence , dungeon1Biome , dungeon2x , dungeon2y , dungeon2z , dungeon2Sequence , dungeon2Biome );
182
206
} else {
183
207
System .out .println ("Unknown supported version error.." );
184
208
System .exit (0 );
@@ -188,15 +212,15 @@ public static void main(String[] args) {
188
212
//Dungeon Seed mode with 1 dungeon
189
213
if (!doubleSpawnerMode ) {
190
214
if (version .isNewerThan (v1_13 )) {
191
- crackSingleDungeon (version , dungeon1x , dungeon1z , dungeon1Biome , dungeon1Seed );
215
+ crackDungeonSeedSingle (version , dungeon1x , dungeon1z , dungeon1Biome , dungeon1Seed );
192
216
} else {
193
217
System .out .println ("You can't run Dungeon Seed mode with only 1 dungeon on versions below 1.13!" );
194
218
System .exit (0 );
195
219
}
196
220
} else {
197
221
//Dungeon Seed mode with 2 dungeons
198
222
if (version .isBetween (vLegacy , v1_17 )) {
199
- crackDoubleDungeon (version , dungeon1x , dungeon1z , dungeon1Biome , dungeon1Seed , dungeon2x , dungeon2z , dungeon2Biome , dungeon2Seed );
223
+ crackDungeonSeedDouble (version , dungeon1x , dungeon1z , dungeon1Biome , dungeon1Seed , dungeon2x , dungeon2z , dungeon2Biome , dungeon2Seed );
200
224
} else {
201
225
System .out .println ("Unknown supported version error.." );
202
226
System .exit (0 );
@@ -207,13 +231,11 @@ public static void main(String[] args) {
207
231
208
232
}
209
233
210
- private static void crackSingle (MCVersion v , int x , int y , int z , String seq , Biome b ) {
211
- if (v .isOlderThan (v1_13 )) {
212
- Set <Long > DungeonSeed = new DungeonDataProcessor (v , x , y , z , seq ).dungeonDataToDecoratorSeed ();
213
- System .out .print ("Your dungeon seed is:\n " + DungeonSeed + "\n " );
214
- } else {
215
-
216
- Set <Long > WorldSeeds = new StructureSeedProcessor (new DecoratorSeedProcessor (v , x , z , b , new DungeonDataProcessor (v , x , y , z , seq ).dungeonDataToDecoratorSeed ()).decoratorSeedsToStructureSeeds ()).getWorldSeedsFromStructureSeeds ();
234
+ private static void crackDungeonDataSingle (MCVersion v , int x , int y , int z , String seq , Biome b ) {
235
+ Set <Long > DungeonSeeds = new DungeonDataProcessor (v , x , y , z , seq ).dungeonDataToDecoratorSeed ();
236
+ System .out .print ("\n Your dungeon seed is:\n " + DungeonSeeds + "\n " );
237
+ if (v .isNewerThan (v1_12 )) {
238
+ Set <Long > WorldSeeds = new StructureSeedProcessor (new DecoratorSeedProcessor (v , x , z , b , DungeonSeeds ).decoratorSeedsToStructureSeeds ()).getWorldSeedsFromStructureSeeds ();
217
239
if (WorldSeeds .isEmpty ()) {
218
240
System .out .println ("Either the data you entered was invalid, or the dungeon was modified (either by a player or by internal RNG) as unfortunately no dungeon seed found." );
219
241
} else {
@@ -222,19 +244,22 @@ private static void crackSingle(MCVersion v, int x, int y, int z, String seq, Bi
222
244
}
223
245
}
224
246
225
- private static void crackDouble (MCVersion v , int x1 , int y1 , int z1 , String seq1 , Biome b1 , int x2 , int y2 , int z2 , String seq2 , Biome b2 ) {
226
- Set <Long > StructureSeeds1 = new DecoratorSeedProcessor (v , x1 , z1 , b1 , new DungeonDataProcessor (v , x1 , y1 , z1 , seq1 ).dungeonDataToDecoratorSeed ()).decoratorSeedsToStructureSeeds ();
227
- Set <Long > StructureSeeds2 = new DecoratorSeedProcessor (v , x2 , z2 , b2 , new DungeonDataProcessor (v , x2 , y2 , z2 , seq2 ).dungeonDataToDecoratorSeed ()).decoratorSeedsToStructureSeeds ();
247
+ private static void crackDungeonDataDouble (MCVersion v , int x1 , int y1 , int z1 , String seq1 , Biome b1 , int x2 , int y2 , int z2 , String seq2 , Biome b2 ) {
248
+ Set <Long > DungeonSeeds1 = new DungeonDataProcessor (v , x1 , y1 , z1 , seq1 ).dungeonDataToDecoratorSeed ();
249
+ Set <Long > DungeonSeeds2 = new DungeonDataProcessor (v , x2 , y2 , z2 , seq2 ).dungeonDataToDecoratorSeed ();
250
+ Set <Long > StructureSeeds1 = new DecoratorSeedProcessor (v , x1 , z1 , b1 , DungeonSeeds1 ).decoratorSeedsToStructureSeeds ();
251
+ Set <Long > StructureSeeds2 = new DecoratorSeedProcessor (v , x2 , z2 , b2 , DungeonSeeds2 ).decoratorSeedsToStructureSeeds ();
228
252
229
253
StructureSeeds1 .retainAll (StructureSeeds2 );
254
+ System .out .println ("Your dungeon seeds: 1" + DungeonSeeds1 + ", 2" + DungeonSeeds2 + "\n " );
230
255
if (StructureSeeds1 .isEmpty ()) {
231
256
System .out .println ("Either the data you entered was invalid, or the dungeon was modified (either by a player or by internal RNG) as unfortunately no world seeds were found." );
232
257
} else {
233
258
System .out .println ("If the data you entered was valid, your world seed is: \n " + new StructureSeedProcessor (StructureSeeds1 ).getWorldSeedsFromStructureSeeds ());
234
259
}
235
260
}
236
261
237
- private static void crackSingleDungeon (MCVersion v , int x , int z , Biome b , long dSeed ) {
262
+ private static void crackDungeonSeedSingle (MCVersion v , int x , int z , Biome b , long dSeed ) {
238
263
Set <Long > WorldSeeds = new StructureSeedProcessor (new DecoratorSeedProcessor (v , x , z , b , Collections .singleton (dSeed )).decoratorSeedsToStructureSeeds ()).getWorldSeedsFromStructureSeeds ();
239
264
240
265
if (WorldSeeds .isEmpty ()) {
@@ -244,7 +269,7 @@ private static void crackSingleDungeon(MCVersion v, int x, int z, Biome b, long
244
269
}
245
270
}
246
271
247
- private static void crackDoubleDungeon (MCVersion v , int x1 , int z1 , Biome b1 , long dSeed1 , int x2 , int z2 , Biome b2 , long dSeed2 ) {
272
+ private static void crackDungeonSeedDouble (MCVersion v , int x1 , int z1 , Biome b1 , long dSeed1 , int x2 , int z2 , Biome b2 , long dSeed2 ) {
248
273
Set <Long > StructureSeeds1 = new DecoratorSeedProcessor (v , x1 , z1 , b1 , Collections .singleton (dSeed1 )).decoratorSeedsToStructureSeeds ();
249
274
Set <Long > StructureSeeds2 = new DecoratorSeedProcessor (v , x2 , z2 , b2 , Collections .singleton (dSeed2 )).decoratorSeedsToStructureSeeds ();
250
275
@@ -478,7 +503,6 @@ private static boolean isSequenceValidChars(String input) {
478
503
return true ;
479
504
}
480
505
481
-
482
506
//Test data, ignore unless you're messing with the code :)
483
507
private static void test16_17 () {
484
508
// 1.17 Dungeon Seed: [137229083672372]; Coords: [25 54 88]; Sequence: [0111010110011110110100010101110110101110111111111]; World Seed: [1488979889728021444]; Biome: Giant_Tree_Taiga
0 commit comments