-
Notifications
You must be signed in to change notification settings - Fork 83
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Begin work on updating Natura to 1.14! NaturaCommon has been almost a…
…ll ported over to 1.14 besides all the recipes.
- Loading branch information
alexbegt
committed
Sep 11, 2019
1 parent
c8d283d
commit b82e0a4
Showing
135 changed files
with
1,604 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,4 +28,5 @@ version.properties | |
/*.project | ||
/.settings/ | ||
/*.launch | ||
/out | ||
/out | ||
/generated |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package com.progwml6.natura.common; | ||
|
||
import net.minecraft.block.Block; | ||
import net.minecraft.item.Item; | ||
import net.minecraft.tags.BlockTags; | ||
import net.minecraft.tags.ItemTags; | ||
import net.minecraft.tags.Tag; | ||
import net.minecraft.util.ResourceLocation; | ||
|
||
public class Tags { | ||
|
||
public static class Blocks { | ||
|
||
public static final Tag<Block> CLOUDS = tag("clouds"); | ||
|
||
private static Tag<Block> tag(String name) { | ||
return new BlockTags.Wrapper(new ResourceLocation("tconstruct", name)); | ||
} | ||
|
||
private static Tag<Block> forgeTag(String name) { | ||
return new BlockTags.Wrapper(new ResourceLocation("forge", name)); | ||
} | ||
} | ||
|
||
public static class Items { | ||
|
||
public static final Tag<Item> CLOUDS = tag("clouds"); | ||
public static final Tag<Item> CROPS_BARLEY = forgeTag("crops/barley"); | ||
|
||
private static Tag<Item> tag(String name) { | ||
return new ItemTags.Wrapper(new ResourceLocation("tconstruct", name)); | ||
} | ||
|
||
private static Tag<Item> forgeTag(String name) { | ||
return new ItemTags.Wrapper(new ResourceLocation("forge", name)); | ||
} | ||
} | ||
} |
53 changes: 53 additions & 0 deletions
53
src/main/java/com/progwml6/natura/common/conditions/PulseLoadedCondition.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package com.progwml6.natura.common.conditions; | ||
|
||
import com.google.gson.JsonObject; | ||
import com.progwml6.natura.Natura; | ||
import net.minecraft.util.JSONUtils; | ||
import net.minecraft.util.ResourceLocation; | ||
import net.minecraftforge.common.crafting.conditions.ICondition; | ||
import net.minecraftforge.common.crafting.conditions.IConditionSerializer; | ||
|
||
public class PulseLoadedCondition implements ICondition { | ||
|
||
private static final ResourceLocation NAME = new ResourceLocation("natura", "pulse_loaded"); | ||
private final String pulseId; | ||
|
||
public PulseLoadedCondition(String pulseId) { | ||
this.pulseId = pulseId; | ||
} | ||
|
||
@Override | ||
public ResourceLocation getID() { | ||
return NAME; | ||
} | ||
|
||
@Override | ||
public boolean test() { | ||
return Natura.pulseManager.isPulseLoaded(this.pulseId); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "pulse_loaded(\"" + this.pulseId + "\")"; | ||
} | ||
|
||
public static class Serializer implements IConditionSerializer<PulseLoadedCondition> { | ||
|
||
public static final Serializer INSTANCE = new Serializer(); | ||
|
||
@Override | ||
public void write(JsonObject json, PulseLoadedCondition value) { | ||
json.addProperty("pulseid", value.pulseId); | ||
} | ||
|
||
@Override | ||
public PulseLoadedCondition read(JsonObject json) { | ||
return new PulseLoadedCondition(JSONUtils.getString(json, "pulseid")); | ||
} | ||
|
||
@Override | ||
public ResourceLocation getID() { | ||
return PulseLoadedCondition.NAME; | ||
} | ||
} | ||
} |
82 changes: 82 additions & 0 deletions
82
src/main/java/com/progwml6/natura/common/data/NaturaBlockLootTables.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
package com.progwml6.natura.common.data; | ||
|
||
import com.google.common.collect.Maps; | ||
import com.google.common.collect.Sets; | ||
import net.minecraft.block.Block; | ||
import net.minecraft.data.loot.BlockLootTables; | ||
import net.minecraft.util.ResourceLocation; | ||
import net.minecraft.world.storage.loot.LootTable; | ||
import net.minecraft.world.storage.loot.LootTables; | ||
|
||
import java.util.HashSet; | ||
import java.util.Map; | ||
import java.util.Set; | ||
import java.util.function.BiConsumer; | ||
import java.util.function.Function; | ||
|
||
import static com.progwml6.natura.shared.NaturaCommons.ash_cloud; | ||
import static com.progwml6.natura.shared.NaturaCommons.dark_cloud; | ||
import static com.progwml6.natura.shared.NaturaCommons.sulfur_cloud; | ||
import static com.progwml6.natura.shared.NaturaCommons.white_cloud; | ||
|
||
public class NaturaBlockLootTables extends BlockLootTables { | ||
|
||
private final Map<ResourceLocation, LootTable.Builder> loot_tables = Maps.newHashMap(); | ||
|
||
private Set<Block> knownBlocks = new HashSet<>(); | ||
|
||
private void addCommon() { | ||
this.func_218492_c(white_cloud); | ||
this.func_218492_c(dark_cloud); | ||
this.func_218492_c(ash_cloud); | ||
this.func_218492_c(sulfur_cloud); | ||
} | ||
|
||
@Override | ||
public void accept(BiConsumer<ResourceLocation, LootTable.Builder> consumer) { | ||
this.addCommon(); | ||
|
||
Set<ResourceLocation> visited = Sets.newHashSet(); | ||
|
||
for (Block block : this.knownBlocks) { | ||
ResourceLocation lootTable = block.getLootTable(); | ||
if (lootTable != LootTables.EMPTY && visited.add(lootTable)) { | ||
LootTable.Builder builder = this.field_218581_i.remove(lootTable); | ||
if (builder == null) { | ||
throw new IllegalStateException(String.format("Missing loottable '%s' for '%s'", lootTable, block.getRegistryName())); | ||
} | ||
|
||
consumer.accept(lootTable, builder); | ||
} | ||
} | ||
|
||
if (!this.field_218581_i.isEmpty()) { | ||
throw new IllegalStateException("Created block loot tables for non-blocks: " + this.field_218581_i.keySet()); | ||
} | ||
} | ||
|
||
@Override | ||
public void func_218564_a(Block blockIn, Block droppedBlockIn) { | ||
this.knownBlocks.add(blockIn); | ||
super.func_218564_a(blockIn, droppedBlockIn); | ||
} | ||
|
||
@Override | ||
public void func_218492_c(Block block) { | ||
this.knownBlocks.add(block); | ||
super.func_218492_c(block); | ||
} | ||
|
||
@Override | ||
public void registerLootTable(Block blockIn, Function<Block, LootTable.Builder> builderFunction) { | ||
this.knownBlocks.add(blockIn); | ||
super.registerLootTable(blockIn, builderFunction); | ||
} | ||
|
||
@Override | ||
public void registerLootTable(Block blockIn, LootTable.Builder builder) { | ||
this.knownBlocks.add(blockIn); | ||
super.registerLootTable(blockIn, builder); | ||
} | ||
|
||
} |
42 changes: 42 additions & 0 deletions
42
src/main/java/com/progwml6/natura/common/data/NaturaBlockTagsProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package com.progwml6.natura.common.data; | ||
|
||
import com.progwml6.natura.shared.NaturaCommons; | ||
import net.minecraft.data.BlockTagsProvider; | ||
import net.minecraft.data.DataGenerator; | ||
import net.minecraft.tags.Tag; | ||
import net.minecraft.util.ResourceLocation; | ||
|
||
import java.nio.file.Path; | ||
import java.util.Set; | ||
import java.util.stream.Collectors; | ||
|
||
import static com.progwml6.natura.common.Tags.Blocks.CLOUDS; | ||
|
||
public class NaturaBlockTagsProvider extends BlockTagsProvider { | ||
|
||
private Set<ResourceLocation> filter = null; | ||
|
||
public NaturaBlockTagsProvider(DataGenerator generatorIn) { | ||
super(generatorIn); | ||
} | ||
|
||
@Override | ||
public void registerTags() { | ||
super.registerTags(); | ||
|
||
this.filter = this.tagToBuilder.keySet().stream().map(Tag::getId).collect(Collectors.toSet()); | ||
|
||
this.getBuilder(CLOUDS).add(NaturaCommons.white_cloud, NaturaCommons.dark_cloud, NaturaCommons.ash_cloud, NaturaCommons.sulfur_cloud); | ||
} | ||
|
||
@Override | ||
protected Path makePath(ResourceLocation id) { | ||
return this.filter != null && this.filter.contains(id) ? null : super.makePath(id); //We don't want to save vanilla tags. | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "Natura Block Tags"; | ||
} | ||
|
||
} |
43 changes: 43 additions & 0 deletions
43
src/main/java/com/progwml6/natura/common/data/NaturaItemTagsProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package com.progwml6.natura.common.data; | ||
|
||
import com.progwml6.natura.common.Tags; | ||
import com.progwml6.natura.shared.NaturaCommons; | ||
import net.minecraft.data.DataGenerator; | ||
import net.minecraft.data.ItemTagsProvider; | ||
import net.minecraft.tags.Tag; | ||
import net.minecraft.util.ResourceLocation; | ||
|
||
import java.nio.file.Path; | ||
import java.util.Set; | ||
import java.util.stream.Collectors; | ||
|
||
public class NaturaItemTagsProvider extends ItemTagsProvider { | ||
|
||
private Set<ResourceLocation> filter = null; | ||
|
||
public NaturaItemTagsProvider(DataGenerator generatorIn) { | ||
super(generatorIn); | ||
} | ||
|
||
@Override | ||
public void registerTags() { | ||
super.registerTags(); | ||
|
||
this.filter = this.tagToBuilder.keySet().stream().map(Tag::getId).collect(Collectors.toSet()); | ||
|
||
this.copy(Tags.Blocks.CLOUDS, Tags.Items.CLOUDS); | ||
|
||
getBuilder(Tags.Items.CROPS_BARLEY).add(NaturaCommons.barley); | ||
} | ||
|
||
@Override | ||
protected Path makePath(ResourceLocation id) { | ||
return this.filter != null && this.filter.contains(id) ? null : super.makePath(id); //We don't want to save vanilla tags. | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "Tconstruct Item Tags"; | ||
} | ||
|
||
} |
92 changes: 92 additions & 0 deletions
92
src/main/java/com/progwml6/natura/common/data/NaturaLootTableProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
package com.progwml6.natura.common.data; | ||
|
||
import com.google.common.collect.ImmutableList; | ||
import com.google.common.collect.Maps; | ||
import com.google.common.collect.Multimap; | ||
import com.google.common.collect.Sets; | ||
import com.google.gson.Gson; | ||
import com.google.gson.GsonBuilder; | ||
import com.mojang.datafixers.util.Pair; | ||
import net.minecraft.data.DataGenerator; | ||
import net.minecraft.data.DirectoryCache; | ||
import net.minecraft.data.IDataProvider; | ||
import net.minecraft.util.ResourceLocation; | ||
import net.minecraft.world.storage.loot.LootParameterSet; | ||
import net.minecraft.world.storage.loot.LootParameterSets; | ||
import net.minecraft.world.storage.loot.LootTable; | ||
import net.minecraft.world.storage.loot.LootTableManager; | ||
import net.minecraft.world.storage.loot.LootTables; | ||
import net.minecraft.world.storage.loot.ValidationResults; | ||
import org.apache.logging.log4j.LogManager; | ||
import org.apache.logging.log4j.Logger; | ||
|
||
import java.io.IOException; | ||
import java.nio.file.Path; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.function.BiConsumer; | ||
import java.util.function.Consumer; | ||
import java.util.function.Supplier; | ||
|
||
public class NaturaLootTableProvider implements IDataProvider { | ||
|
||
private static final Logger LOGGER = LogManager.getLogger(); | ||
private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create(); | ||
private final DataGenerator dataGenerator; | ||
private final List<Pair<Supplier<Consumer<BiConsumer<ResourceLocation, LootTable.Builder>>>, LootParameterSet>> field_218444_e = ImmutableList.of( | ||
Pair.of(NaturaBlockLootTables::new, LootParameterSets.BLOCK)); | ||
|
||
public NaturaLootTableProvider(DataGenerator dataGeneratorIn) { | ||
this.dataGenerator = dataGeneratorIn; | ||
} | ||
|
||
/** | ||
* Performs this provider's action. | ||
*/ | ||
@Override | ||
public void act(DirectoryCache cache) { | ||
Path path = this.dataGenerator.getOutputFolder(); | ||
Map<ResourceLocation, LootTable> map = Maps.newHashMap(); | ||
this.field_218444_e.forEach((p_218438_1_) -> { | ||
p_218438_1_.getFirst().get().accept((p_218437_2_, p_218437_3_) -> { | ||
if (map.put(p_218437_2_, p_218437_3_.setParameterSet(p_218438_1_.getSecond()).build()) != null) { | ||
throw new IllegalStateException("Duplicate loot table " + p_218437_2_); | ||
} | ||
}); | ||
}); | ||
ValidationResults validationresults = new ValidationResults(); | ||
|
||
for (ResourceLocation resourcelocation : Sets.difference(LootTables.func_215796_a(), map.keySet())) { | ||
validationresults.addProblem("Missing built-in table: " + resourcelocation); | ||
} | ||
|
||
map.forEach((p_218436_2_, p_218436_3_) -> { | ||
LootTableManager.func_215302_a(validationresults, p_218436_2_, p_218436_3_, map::get); | ||
}); | ||
Multimap<String, String> multimap = validationresults.getProblems(); | ||
|
||
map.forEach((p_218440_2_, p_218440_3_) -> { | ||
Path path1 = getPath(path, p_218440_2_); | ||
|
||
try { | ||
IDataProvider.save(GSON, cache, LootTableManager.toJson(p_218440_3_), path1); | ||
} | ||
catch (IOException ioexception) { | ||
LOGGER.error("Couldn't save loot table {}", path1, ioexception); | ||
} | ||
|
||
}); | ||
} | ||
|
||
private static Path getPath(Path pathIn, ResourceLocation id) { | ||
return pathIn.resolve("data/" + id.getNamespace() + "/loot_tables/" + id.getPath() + ".json"); | ||
} | ||
|
||
/** | ||
* Gets a name for this provider, to use in logging. | ||
*/ | ||
@Override | ||
public String getName() { | ||
return "Natura LootTables"; | ||
} | ||
} |
Oops, something went wrong.