Skip to content

Commit b89aae6

Browse files
committed
Minor tweaks
Made it out out the dungeon seed for user convenience Prettied up the console output
1 parent df4aa34 commit b89aae6

File tree

1 file changed

+62
-38
lines changed

1 file changed

+62
-38
lines changed

src/main/java/kinomora/Main.java

Lines changed: 62 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ public class Main {
1515
public static final boolean PARTIAL_OVERRIDE = true;
1616

1717
public static void main(String[] args) {
18+
//Meta data
19+
String appVersion = "v1.1.1_pre-release";
20+
1821
//Program data
1922
Scanner userInput = new Scanner(System.in);
2023
String input;
@@ -56,12 +59,17 @@ public static void main(String[] args) {
5659
testLegacy();
5760
}
5861
if (false) {
59-
crackSingleDungeon(v1_16, -6799, -1473, Biomes.DESERT, 66991252199345L);
62+
crackDungeonSeedSingle(v1_16, -6799, -1473, Biomes.DESERT, 66991252199345L);
6063
}
6164
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);
6366
}
6467

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+
6573
//Ask the user for the MCVersion they want to use
6674
System.out.print("Please provide the version number that the dungeon was created in, as listed below:\n16 Releases 1.16.x and 1.17.x\n15 Release 1.15.x\n13 Releases 1.13.x and 1.14.x\n8 Releases 1.8.x through 1.12.x\n1 Releases 1.7.x and earlier; including beta, alpha, and infdev\nType the corresponding number on the left: ");
6775
//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) {
7684
}
7785
}
7886
validInput = false;
87+
System.out.println("===================================================================================");
7988

8089
//Ask the user if they are using 1 or 2 dungeons
81-
System.out.print("\nDo you have 1 dungeon or 2: ");
90+
System.out.print("Do you have 1 dungeon or 2: ");
8291
while (!validInput) {
8392
input = userInput.nextLine();
8493
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;
8796
validInput = true;
8897
} else if (getIntFromInputString(input) == 2) {
89-
System.out.println("Using 2 dungeons..\n");
98+
//System.out.println("Using 2 dungeons..\n");
9099
doubleSpawnerMode = true;
91100
validInput = true;
92101
} else {
93102
System.out.println("Please enter a valid system mode by typing 1 or 2.\nApplication mode: ");
94103
}
95104
}
96105
validInput = false;
106+
System.out.println("===================================================================================");
97107

98108
if (version.isOlderThan(v1_13) && !doubleSpawnerMode) {
99109
//Ask the user if they want to input dungeon data or seeds
100110
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");
102112
dungeonSeedMode = false;
103113
} else {
104114
//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?\n1 Dungeon Data Mode (Co-ords and Floor Pattern, typical)\n2 Dungeon Seed Mode (Structure seeds, uncommon)\nType the corresponding number on the left: ");
115+
System.out.print("Do you have dungeon data or do you already have a dungeon seed?\n1 Dungeon Data Mode (Co-ords and Floor Pattern; Typical)\n2 Dungeon Seed Mode (Structure seeds; Uncommon)\nType the corresponding number on the left: ");
106116
while (!validInput) {
107117
input = userInput.nextLine();
108118
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;
111121
validInput = true;
112122
} else if (getIntFromInputString(input) == 2) {
113-
System.out.println("Entering Dungeon Seed Mode..\n");
123+
//System.out.println("Entering Dungeon Seed Mode..\n");
114124
dungeonSeedMode = true;
115125
validInput = true;
116126
} else {
@@ -119,66 +129,80 @@ public static void main(String[] args) {
119129
}
120130
}
121131
validInput = false;
132+
System.out.println("===================================================================================");
122133

123134
//If we are running in Dungeon Data mode we will need to gather more input data
124135
if (!dungeonSeedMode) {
125136
if (!doubleSpawnerMode) {
126-
127137
System.out.println("Please input your dungeon data:");
128138
dungeon1x = getDungeonX(0);
129139
dungeon1y = getDungeonY(0);
130140
dungeon1z = getDungeonZ(0);
131141
dungeon1Sequence = getSequence();
132-
if(version.isNewerThan(v1_15))dungeon1Biome = getDungeonBiome();
142+
if (version.isNewerThan(v1_15)) {
143+
dungeon1Biome = getDungeonBiome();
144+
}
133145
} else {
134146
System.out.println("Please provide data for the first dungeon:");
135147
dungeon1x = getDungeonX(1);
136148
dungeon1y = getDungeonY(1);
137149
dungeon1z = getDungeonZ(1);
138150
dungeon1Sequence = getSequence();
139-
if(version.isNewerThan(v1_15))dungeon1Biome = getDungeonBiome();
140-
System.out.println("\nNow 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:");
141155
dungeon2x = getDungeonX(2);
142156
dungeon2y = getDungeonY(2);
143157
dungeon2z = getDungeonZ(2);
144158
dungeon2Sequence = getSequence();
145-
if(version.isNewerThan(v1_15))dungeon2Biome = getDungeonBiome();
159+
if (version.isNewerThan(v1_15)) {
160+
dungeon2Biome = getDungeonBiome();
161+
}
146162
}
147163
} else {
148164
if (!doubleSpawnerMode) {
149165
System.out.println("Please input your dungeon info:");
150166
dungeon1x = getDungeonX(0);
151167
dungeon1z = getDungeonZ(0);
152168
dungeon1Seed = getDungeonSeed(0);
153-
if(version.isNewerThan(v1_15))dungeon1Biome = getDungeonBiome();
169+
if (version.isNewerThan(v1_15)) {
170+
dungeon1Biome = getDungeonBiome();
171+
}
154172
} else {
155173
System.out.println("Please provide info for the first dungeon:");
156174
dungeon1x = getDungeonX(1);
157175
dungeon1z = getDungeonZ(1);
158176
dungeon1Seed = getDungeonSeed(1);
159-
if(version.isNewerThan(v1_15))dungeon1Biome = getDungeonBiome();
160-
System.out.println("\nNow 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:");
161181
dungeon2x = getDungeonX(2);
162182
dungeon2z = getDungeonZ(2);
163183
dungeon2Seed = getDungeonSeed(2);
164-
if(version.isNewerThan(v1_15))dungeon2Biome = getDungeonBiome();
184+
if (version.isNewerThan(v1_15)) {
185+
dungeon2Biome = getDungeonBiome();
186+
}
165187
}
166188
}
167-
189+
System.out.println("===================================================================================");
190+
System.out.println("Process data... Version: " + version + " | Multi-Dungeon: " + doubleSpawnerMode + " | Dungeon Seed Mode: " + dungeonSeedMode);
191+
System.out.println("===================================================================================");
168192

169193
if (!dungeonSeedMode) {
170194
if (!doubleSpawnerMode) {
171195
//Dungeon Data mode with 1 dungeon
172196
if (version.isBetween(vLegacy, v1_17)) {
173-
crackSingle(version, dungeon1x, dungeon1y, dungeon1z, dungeon1Sequence, dungeon1Biome);
197+
crackDungeonDataSingle(version, dungeon1x, dungeon1y, dungeon1z, dungeon1Sequence, dungeon1Biome);
174198
} else {
175199
System.out.println("Unknown supported version error..");
176200
System.exit(0);
177201
}
178202
} else {
179203
//Dungeon Data mode with 2 dungeons
180204
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);
182206
} else {
183207
System.out.println("Unknown supported version error..");
184208
System.exit(0);
@@ -188,15 +212,15 @@ public static void main(String[] args) {
188212
//Dungeon Seed mode with 1 dungeon
189213
if (!doubleSpawnerMode) {
190214
if (version.isNewerThan(v1_13)) {
191-
crackSingleDungeon(version, dungeon1x, dungeon1z, dungeon1Biome, dungeon1Seed);
215+
crackDungeonSeedSingle(version, dungeon1x, dungeon1z, dungeon1Biome, dungeon1Seed);
192216
} else {
193217
System.out.println("You can't run Dungeon Seed mode with only 1 dungeon on versions below 1.13!");
194218
System.exit(0);
195219
}
196220
} else {
197221
//Dungeon Seed mode with 2 dungeons
198222
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);
200224
} else {
201225
System.out.println("Unknown supported version error..");
202226
System.exit(0);
@@ -207,13 +231,11 @@ public static void main(String[] args) {
207231

208232
}
209233

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("\nYour 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();
217239
if (WorldSeeds.isEmpty()) {
218240
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.");
219241
} else {
@@ -222,19 +244,22 @@ private static void crackSingle(MCVersion v, int x, int y, int z, String seq, Bi
222244
}
223245
}
224246

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();
228252

229253
StructureSeeds1.retainAll(StructureSeeds2);
254+
System.out.println("Your dungeon seeds: 1" + DungeonSeeds1 + ", 2" + DungeonSeeds2 + "\n");
230255
if (StructureSeeds1.isEmpty()) {
231256
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.");
232257
} else {
233258
System.out.println("If the data you entered was valid, your world seed is: \n" + new StructureSeedProcessor(StructureSeeds1).getWorldSeedsFromStructureSeeds());
234259
}
235260
}
236261

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) {
238263
Set<Long> WorldSeeds = new StructureSeedProcessor(new DecoratorSeedProcessor(v, x, z, b, Collections.singleton(dSeed)).decoratorSeedsToStructureSeeds()).getWorldSeedsFromStructureSeeds();
239264

240265
if (WorldSeeds.isEmpty()) {
@@ -244,7 +269,7 @@ private static void crackSingleDungeon(MCVersion v, int x, int z, Biome b, long
244269
}
245270
}
246271

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) {
248273
Set<Long> StructureSeeds1 = new DecoratorSeedProcessor(v, x1, z1, b1, Collections.singleton(dSeed1)).decoratorSeedsToStructureSeeds();
249274
Set<Long> StructureSeeds2 = new DecoratorSeedProcessor(v, x2, z2, b2, Collections.singleton(dSeed2)).decoratorSeedsToStructureSeeds();
250275

@@ -478,7 +503,6 @@ private static boolean isSequenceValidChars(String input) {
478503
return true;
479504
}
480505

481-
482506
//Test data, ignore unless you're messing with the code :)
483507
private static void test16_17() {
484508
// 1.17 Dungeon Seed: [137229083672372]; Coords: [25 54 88]; Sequence: [0111010110011110110100010101110110101110111111111]; World Seed: [1488979889728021444]; Biome: Giant_Tree_Taiga

0 commit comments

Comments
 (0)