Skip to content

Commit

Permalink
World creation screen get!
Browse files Browse the repository at this point in the history
  • Loading branch information
Electro593 committed Feb 3, 2025
1 parent 80f2eb7 commit d0657b6
Show file tree
Hide file tree
Showing 58 changed files with 75 additions and 82 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package de.dafuqs.spectrum.data_loaders;

import com.google.gson.*;
import com.mojang.datafixers.util.Pair;
import com.mojang.serialization.*;
import com.mojang.serialization.codecs.*;
import de.dafuqs.spectrum.*;
import de.dafuqs.spectrum.recipe.*;
import net.fabricmc.fabric.api.resource.*;
import net.minecraft.block.*;
import net.minecraft.item.*;
Expand All @@ -20,8 +22,14 @@ public class CrystalApothecarySimulationsDataLoader extends JsonDataLoader imple

public static final HashMap<Block, SimulatedBlockGrowthEntry> COMPENSATIONS = new HashMap<>();

public record SimulatedBlockGrowthEntry(Collection<Block> validNeighbors,
int ticksForCompensationLootPerValidNeighbor, ItemStack compensatedStack) {
public record SimulatedBlockGrowthEntry(Collection<Block> validNeighbors, int ticksForCompensationLootPerValidNeighbor, ItemStack compensatedStack) {

public static final Codec<SimulatedBlockGrowthEntry> CODEC = RecordCodecBuilder.create(i -> i.group(
Registries.BLOCK.getCodec().listOf().xmap(list -> (Collection<Block>) list, set -> set.stream().toList()).fieldOf("valid_neighbor_blocks").forGetter(c -> c.validNeighbors),
Codec.INT.optionalFieldOf("ticks_for_compensation_loot_per_valid_neighbor", 10000).forGetter(c -> c.ticksForCompensationLootPerValidNeighbor),
ItemStack.CODEC.fieldOf("compensated_stack").forGetter(c -> c.compensatedStack)
).apply(i, SimulatedBlockGrowthEntry::new));

}

private CrystalApothecarySimulationsDataLoader() {
Expand All @@ -34,34 +42,19 @@ protected void apply(Map<Identifier, JsonElement> prepared, ResourceManager mana
prepared.forEach((identifier, jsonElement) -> {
JsonObject object = jsonElement.getAsJsonObject();

String buddingBlockString = JsonHelper.getString(object, "budding_block");
Block buddingBlock = Registries.BLOCK.get(Identifier.tryParse(buddingBlockString));
if (buddingBlock == Blocks.AIR) {
SpectrumCommon.logError("Crystal Apothecary Simulation '" + identifier + "' has a non-existant 'budding_block' entry: '" + buddingBlockString + "'. Ignoring that one.");
DataResult<Block> buddingBlock = Registries.BLOCK.getCodec().decode(JsonOps.INSTANCE, object.get("budding_block")).map(Pair::getFirst);
if (buddingBlock.error().isPresent() || buddingBlock.result().isEmpty()) {
SpectrumCommon.logError("Crystal Apothecary Simulation error: " + buddingBlock.error().get() + ". Ignoring that one.");
return;
}

Set<Block> validNeighbors = new HashSet<>();
for (JsonElement entry : object.get("valid_neighbor_blocks").getAsJsonArray()) {
Identifier validNeighborBlockId = Identifier.tryParse(entry.getAsString());
Block validNeighborBlock = Registries.BLOCK.get(validNeighborBlockId);
if (validNeighborBlock == Blocks.AIR && !validNeighborBlockId.equals(Identifier.of("air"))) {
SpectrumCommon.logError("Crystal Apothecary Simulation '" + identifier + "' has a non-existant 'valid_neighbor_block' entry: '" + validNeighborBlockId + "'. Ignoring that one.");
} else {
validNeighbors.add(validNeighborBlock);
}
}
int ticksForCompensationLootPerValidNeighbor = JsonHelper.getInt(object, "ticks_for_compensation_loot_per_valid_neighbor", 10000);

ItemStack compensatedStack;
try {
compensatedStack = RecipeUtils.itemStackWithNbtFromJson(object.get("compensated_loot").getAsJsonObject());
} catch (JsonSyntaxException e) {
SpectrumCommon.logError("Crystal Apothecary Simulation '" + identifier + "' has an invalid 'compensated_loot' tag, perhaps with a non-existing item. Ignoring that one.");
DataResult<SimulatedBlockGrowthEntry> entry = SimulatedBlockGrowthEntry.CODEC.decode(JsonOps.INSTANCE, jsonElement).map(Pair::getFirst);
if (entry.error().isPresent() || entry.result().isEmpty()) {
SpectrumCommon.logError("Crystal Apothecary Simulation error: " + entry.error().get() + ". Ignoring that one.");
return;
}

COMPENSATIONS.put(buddingBlock, new SimulatedBlockGrowthEntry(validNeighbors, ticksForCompensationLootPerValidNeighbor, compensatedStack));
COMPENSATIONS.put(buddingBlock.result().get(), entry.result().get());
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 40000,
"compensated_loot": {
"item": "ae2:certus_quartz_crystal",
"id": "ae2:certus_quartz_crystal",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 160000,
"compensated_loot": {
"item": "ae2:certus_quartz_crystal",
"id": "ae2:certus_quartz_crystal",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "ae2:certus_quartz_crystal",
"id": "ae2:certus_quartz_crystal",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 10000,
"compensated_loot": {
"item": "ae2:certus_quartz_crystal",
"id": "ae2:certus_quartz_crystal",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 10000,
"compensated_loot": {
"item": "minecraft:amethyst_shard",
"id": "minecraft:amethyst_shard",
"count": 2
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 10000,
"compensated_loot": {
"item": "biomemakeover:illunite_shard",
"id": "biomemakeover:illunite_shard",
"count": 4
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 10000,
"compensated_loot": {
"item": "byg:ametrine_gems",
"id": "byg:ametrine_gems",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 10000,
"compensated_loot": {
"item": "byg:subzero_crystal_shard",
"id": "byg:subzero_crystal_shard",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 10000,
"compensated_loot": {
"item": "byg:therium_crystal_shard",
"id": "byg:therium_crystal_shard",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 10000,
"compensated_loot": {
"item": "spectrum:citrine_shard",
"id": "spectrum:citrine_shard",
"count": 2
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:netherite_scrap",
"id": "minecraft:netherite_scrap",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:glowstone_dust",
"id": "minecraft:glowstone_dust",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:gold_nugget",
"id": "minecraft:gold_nugget",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:quartz",
"id": "minecraft:quartz",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:netherite_scrap",
"id": "minecraft:netherite_scrap",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:glowstone_dust",
"id": "minecraft:glowstone_dust",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:gold_nugget",
"id": "minecraft:gold_nugget",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:quartz",
"id": "minecraft:quartz",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "geode_plus:celestite_shard",
"id": "geode_plus:celestite_shard",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:diamond",
"id": "minecraft:diamond",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:emerald",
"id": "minecraft:emerald",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:lapis_lazuli",
"id": "minecraft:lapis_lazuli",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:redstone",
"id": "minecraft:redstone",
"count": 3
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:diamond",
"id": "minecraft:diamond",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:echo_shard",
"id": "minecraft:echo_shard",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:emerald",
"id": "minecraft:emerald",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:lapis_lazuli",
"id": "minecraft:lapis_lazuli",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:netherite_scrap",
"id": "minecraft:netherite_scrap",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:glowstone_dust",
"id": "minecraft:glowstone_dust",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:gold_nugget",
"id": "minecraft:gold_nugget",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:quartz",
"id": "minecraft:quartz",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "geode_plus:pink_topaz",
"id": "geode_plus:pink_topaz",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:prismarine_shard",
"id": "minecraft:prismarine_shard",
"count": 2
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:redstone",
"id": "minecraft:redstone",
"count": 3
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:diamond",
"id": "minecraft:diamond",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
],
"ticks_for_compensation_loot_per_valid_neighbor": 20000,
"compensated_loot": {
"item": "minecraft:emerald",
"id": "minecraft:emerald",
"count": 1
},
"fabric:load_conditions": [
Expand Down
Loading

0 comments on commit d0657b6

Please sign in to comment.