Merge remote-tracking branch 'origin/1.17' into 1.17
This commit is contained in:
commit
fe827cebe3
125 changed files with 2405 additions and 164 deletions
build.gradlegradle.properties
src
datagen
java/org/dimdev/dimdoors/datagen
AdvancementProvider.javaAdvancementTab.javaDatagenInitializer.javaFabricRecipeProvider.javaLootTableConsumer.javaLootTableProvider.javaRecipeConsumer.java
resources
main
java/org/dimdev/dimdoors
ModConfig.java
block
DimensionalDoorBlock.javaDimensionalPortalBlock.javaFabricBlock.javaModBlocks.javaUnravelledFabricBlock.java
client
entity/ai
item
mixin
world
resources
assets/dimdoors
blockstates
lang
models
block
dimensional_trapdoor_bottom.jsondimensional_trapdoor_open.jsondimensional_trapdoor_top.jsongold_door_bottom.jsongold_door_bottom_rh.jsongold_door_top.jsongold_door_top_rh.jsoniron_dimensional_door_bottom.jsoniron_dimensional_door_bottom_rh.jsoniron_dimensional_door_top.jsoniron_dimensional_door_top_rh.jsonoak_dimensional_door_bottom.jsonoak_dimensional_door_bottom_rh.jsonoak_dimensional_door_top.jsonoak_dimensional_door_top_rh.jsonquartz_door_bottom.jsonquartz_door_bottom_rh.jsonquartz_door_top.jsonquartz_door_top_rh.json
item
textures/item
data/dimdoors
advancements
dimdoor
dimdoors
recipes/dimdoors.dimensional_doors
loot_tables/blocks
black_fabric.jsonblue_fabric.jsonbrown_fabric.jsoncyan_fabric.jsongold_dimensional_door.jsongold_door.jsongray_fabric.jsongreen_fabric.jsoniron_dimensional_door.jsonlight_blue_fabric.jsonlight_gray_fabric.jsonlime_fabric.jsonmagenta_fabric.jsonmarking_plate.jsonoak_dimensional_door.jsonorange_fabric.jsonpink_fabric.jsonpurple_fabric.jsonquartz_dimensional_door.jsonquartz_door.jsonred_fabric.jsonwhite_fabric.jsonwood_dimensional_trapdoor.jsonyellow_fabric.json
pockets/generators/custom
|
@ -115,10 +115,12 @@ dependencies {
|
||||||
}
|
}
|
||||||
modCompileOnly 'com.github.badasintended:wthit:3.0.0'
|
modCompileOnly 'com.github.badasintended:wthit:3.0.0'
|
||||||
modRuntime 'com.github.badasintended:wthit:3.0.0'
|
modRuntime 'com.github.badasintended:wthit:3.0.0'
|
||||||
|
modCompileOnly "me.shedaniel.cloth.api:cloth-datagen-api-v1:2.0.0"
|
||||||
|
modRuntime "me.shedaniel.cloth.api:cloth-datagen-api-v1:2.0.0"
|
||||||
|
|
||||||
datagenImplementation sourceSets.main.output
|
datagenImplementation sourceSets.main.output
|
||||||
datagenImplementation sourceSets.main.compileClasspath
|
datagenImplementation sourceSets.main.compileClasspath
|
||||||
datagenImplementation "me.shedaniel.cloth.api:cloth-datagen-api-v1:2.0.0"
|
datagenRuntimeOnly sourceSets.main.runtimeClasspath
|
||||||
|
|
||||||
testImplementation('org.junit.jupiter:junit-jupiter:5.5.2')
|
testImplementation('org.junit.jupiter:junit-jupiter:5.5.2')
|
||||||
}
|
}
|
||||||
|
@ -155,7 +157,7 @@ curseforge {
|
||||||
releaseType = 'alpha'
|
releaseType = 'alpha'
|
||||||
addGameVersion '1.17'
|
addGameVersion '1.17'
|
||||||
mainArtifact(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar")) {
|
mainArtifact(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar")) {
|
||||||
displayName = "[${project.minecraft_version}] Dimensional Doors ${version}"
|
displayName = "[21w06a] Dimensional Doors ${version}"
|
||||||
}
|
}
|
||||||
afterEvaluate {
|
afterEvaluate {
|
||||||
uploadTask.dependsOn("remapJar")
|
uploadTask.dependsOn("remapJar")
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
minecraft_version=1.16.4
|
mod_version=4.0.0+alpha.2
|
||||||
yarn_mappings=1.16.4+build.7
|
|
||||||
loader_version=0.10.8
|
|
||||||
|
|
||||||
fabric_version=0.29.3+1.16
|
|
||||||
|
|
||||||
mod_version=4.0.0+alpha.1
|
|
||||||
|
|
||||||
org.gradle.jvmargs=-Xmx2048m
|
org.gradle.jvmargs=-Xmx2048m
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
package org.dimdev.dimdoors.datagen;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import net.minecraft.advancement.Advancement;
|
||||||
|
import net.minecraft.data.DataCache;
|
||||||
|
import net.minecraft.data.DataGenerator;
|
||||||
|
import net.minecraft.data.DataProvider;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
public class AdvancementProvider implements DataProvider {
|
||||||
|
private static final Logger LOGGER = LogManager.getLogger();
|
||||||
|
private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create();
|
||||||
|
private final DataGenerator root;
|
||||||
|
private final List<Consumer<Consumer<Advancement>>> tabGenerators = ImmutableList.of(new AdvancementTab());
|
||||||
|
|
||||||
|
public AdvancementProvider(DataGenerator dataGenerator) {
|
||||||
|
this.root = dataGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Path getOutput(Path root, Advancement advancement) {
|
||||||
|
return root.resolve("data/" + advancement.getId().getNamespace() + "/advancements/" + advancement.getId().getPath() + ".json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(DataCache dataCache) {
|
||||||
|
Path outputRoot = this.root.getOutput();
|
||||||
|
Set<Identifier> ids = new HashSet<>();
|
||||||
|
Consumer<Advancement> writer = advancement -> {
|
||||||
|
if (!ids.add(advancement.getId())) {
|
||||||
|
throw new IllegalStateException("Duplicate advancement " + advancement.getId());
|
||||||
|
}
|
||||||
|
Path output = getOutput(outputRoot, advancement);
|
||||||
|
|
||||||
|
try {
|
||||||
|
DataProvider.writeToPath(GSON, dataCache, advancement.createTask().toJson(), output);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
LOGGER.error("Couldn't save advancement {}", output, ex);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
for (Consumer<Consumer<Advancement>> generator : this.tabGenerators) {
|
||||||
|
generator.accept(writer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Dimdoors Advancements";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
package org.dimdev.dimdoors.datagen;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import org.dimdev.dimdoors.item.ModItems;
|
||||||
|
import org.dimdev.dimdoors.world.ModDimensions;
|
||||||
|
|
||||||
|
import net.minecraft.advancement.Advancement;
|
||||||
|
import net.minecraft.advancement.AdvancementDisplay;
|
||||||
|
import net.minecraft.advancement.AdvancementFrame;
|
||||||
|
import net.minecraft.advancement.criterion.ChangedDimensionCriterion;
|
||||||
|
import net.minecraft.advancement.criterion.InventoryChangedCriterion;
|
||||||
|
import net.minecraft.item.ItemConvertible;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
|
import net.minecraft.predicate.entity.EntityPredicate;
|
||||||
|
import net.minecraft.text.TranslatableText;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
public class AdvancementTab implements Consumer<Consumer<Advancement>> {
|
||||||
|
static AdvancementDisplay makeDisplay(ItemConvertible item, String titleKey) {
|
||||||
|
return new AdvancementDisplay(item.asItem().getDefaultStack(),
|
||||||
|
new TranslatableText("dimdoors.advancement." + titleKey),
|
||||||
|
new TranslatableText("dimdoors.advancement." + titleKey + ".desc"),
|
||||||
|
new Identifier("dimdoors:textures/block/unravelled_fabric.png"),
|
||||||
|
AdvancementFrame.TASK,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static AdvancementDisplay makeDisplay(ItemConvertible item, String titleKey, AdvancementFrame advancementFrame) {
|
||||||
|
return new AdvancementDisplay(item.asItem().getDefaultStack(),
|
||||||
|
new TranslatableText("dimdoors.advancement." + titleKey),
|
||||||
|
new TranslatableText("dimdoors.advancement." + titleKey + ".desc"),
|
||||||
|
new Identifier("dimdoors:textures/block/unravelled_fabric.png"),
|
||||||
|
advancementFrame,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(Consumer<Advancement> advancementConsumer) {
|
||||||
|
Advancement root = Advancement.Task.create()
|
||||||
|
.display(makeDisplay(ModItems.RIFT_BLADE, "root"))
|
||||||
|
.criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(Items.ENDER_PEARL))
|
||||||
|
.build(advancementConsumer, "dimdoors:dimdoors/root");
|
||||||
|
|
||||||
|
Advancement.Task.create()
|
||||||
|
.display(makeDisplay(ModItems.IRON_DIMENSIONAL_DOOR, "public_pocket"))
|
||||||
|
.criterion("changed_dimension", ChangedDimensionCriterion.Conditions.to(ModDimensions.PUBLIC))
|
||||||
|
.parent(root)
|
||||||
|
.build(advancementConsumer, "dimdoors:dimdoors/public_pocket");
|
||||||
|
Advancement.Task.create()
|
||||||
|
.display(makeDisplay(ModItems.QUARTZ_DIMENSIONAL_DOOR, "private_pocket"))
|
||||||
|
.criterion("changed_dimension", ChangedDimensionCriterion.Conditions.to(ModDimensions.PERSONAL))
|
||||||
|
.parent(root)
|
||||||
|
.build(advancementConsumer, "dimdoors:dimdoors/private_pocket");
|
||||||
|
Advancement.Task.create()
|
||||||
|
.display(makeDisplay(ModItems.GOLD_DIMENSIONAL_DOOR, "dungeon"))
|
||||||
|
.criterion("changed_dimension", ChangedDimensionCriterion.Conditions.to(ModDimensions.DUNGEON))
|
||||||
|
.parent(root)
|
||||||
|
.build(advancementConsumer, "dimdoors:dimdoors/dungeon");
|
||||||
|
Advancement limbo = Advancement.Task.create()
|
||||||
|
.display(makeDisplay(ModItems.UNRAVELLED_FABRIC, "limbo"))
|
||||||
|
.criterion("changed_dimension", ChangedDimensionCriterion.Conditions.to(ModDimensions.LIMBO))
|
||||||
|
.parent(root)
|
||||||
|
.build(advancementConsumer, "dimdoors:dimdoors/limbo");
|
||||||
|
Advancement.Task.create()
|
||||||
|
.display(makeDisplay(ModItems.ETERNAL_FLUID_BUCKET, "escape_limbo"))
|
||||||
|
.criterion("changed_dimension", new ChangedDimensionCriterion.Conditions(EntityPredicate.Extended.EMPTY, ModDimensions.LIMBO, null))
|
||||||
|
.parent(limbo)
|
||||||
|
.build(advancementConsumer, "dimdoors:dimdoors/escape_limbo");
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,24 +1,40 @@
|
||||||
package org.dimdev.dimdoors.datagen;
|
package org.dimdev.dimdoors.datagen;
|
||||||
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Map;
|
import java.util.Collections;
|
||||||
|
|
||||||
import me.shedaniel.cloth.api.datagen.v1.DataGeneratorHandler;
|
|
||||||
import me.shedaniel.cloth.api.datagen.v1.RecipeData;
|
|
||||||
import org.dimdev.dimdoors.block.ModBlocks;
|
import org.dimdev.dimdoors.block.ModBlocks;
|
||||||
import org.dimdev.dimdoors.item.ModItems;
|
import org.dimdev.dimdoors.item.ModItems;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.Bootstrap;
|
||||||
import net.minecraft.util.DyeColor;
|
import net.minecraft.data.DataGenerator;
|
||||||
|
|
||||||
public class DatagenInitializer {
|
import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint;
|
||||||
public static void main(String[] args) {
|
|
||||||
ModBlocks.init();
|
public class DatagenInitializer implements PreLaunchEntrypoint {
|
||||||
ModItems.init();
|
public static RecipeConsumer RECIPE_CONSUMER;
|
||||||
DataGeneratorHandler handler = DataGeneratorHandler.create(Paths.get("./generated"));
|
public static LootTableConsumer LOOT_TABLE_CONSUMER;
|
||||||
RecipeData recipes = handler.getRecipes();
|
|
||||||
for (Map.Entry<DyeColor, Block> entry : ModBlocks.FABRIC_BLOCKS.entrySet()) {
|
// How to run the data generator:-
|
||||||
// TODO
|
// - Duplicate the Minecraft Client run config
|
||||||
|
// - Change the module from DimensionalDoors.main to DimensionalDoors.datagen
|
||||||
|
// - Profit
|
||||||
|
@Override
|
||||||
|
public void onPreLaunch() {
|
||||||
|
try {
|
||||||
|
Bootstrap.initialize();
|
||||||
|
ModBlocks.init();
|
||||||
|
ModItems.init();
|
||||||
|
DataGenerator dataGenerator = new DataGenerator(Paths.get("./generated"), Collections.emptyList());
|
||||||
|
dataGenerator.install(new FabricRecipeProvider(dataGenerator));
|
||||||
|
dataGenerator.install(new AdvancementProvider(dataGenerator));
|
||||||
|
dataGenerator.install(new LootTableProvider(dataGenerator));
|
||||||
|
dataGenerator.install(RECIPE_CONSUMER = new RecipeConsumer(dataGenerator));
|
||||||
|
dataGenerator.install(LOOT_TABLE_CONSUMER = new LootTableConsumer(dataGenerator));
|
||||||
|
dataGenerator.run();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
System.exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package org.dimdev.dimdoors.datagen;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.dimdev.dimdoors.block.ModBlocks;
|
||||||
|
import org.dimdev.dimdoors.item.ModItems;
|
||||||
|
|
||||||
|
import net.minecraft.advancement.criterion.InventoryChangedCriterion;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.data.DataCache;
|
||||||
|
import net.minecraft.data.DataGenerator;
|
||||||
|
import net.minecraft.data.DataProvider;
|
||||||
|
import net.minecraft.data.server.recipe.ShapedRecipeJsonFactory;
|
||||||
|
import net.minecraft.item.DyeItem;
|
||||||
|
import net.minecraft.util.DyeColor;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
import static org.dimdev.dimdoors.datagen.DatagenInitializer.RECIPE_CONSUMER;
|
||||||
|
|
||||||
|
public class FabricRecipeProvider implements DataProvider {
|
||||||
|
private final DataGenerator dataGenerator;
|
||||||
|
|
||||||
|
public FabricRecipeProvider(DataGenerator dataGenerator) {
|
||||||
|
this.dataGenerator = dataGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(DataCache cache) {
|
||||||
|
for (Map.Entry<DyeColor, Block> entry : ModBlocks.FABRIC_BLOCKS.entrySet()) {
|
||||||
|
DyeColor dyeColor = entry.getKey();
|
||||||
|
Block block = entry.getValue();
|
||||||
|
ShapedRecipeJsonFactory.create(block)
|
||||||
|
.group("colored_fabric")
|
||||||
|
.criterion("inventory_changed", InventoryChangedCriterion.Conditions.items(ModItems.WORLD_THREAD))
|
||||||
|
.pattern(" X ")
|
||||||
|
.pattern("XDX")
|
||||||
|
.pattern(" X ")
|
||||||
|
.input('X', ModItems.WORLD_THREAD)
|
||||||
|
.input('D', DyeItem.byColor(dyeColor))
|
||||||
|
.offerTo(RECIPE_CONSUMER, new Identifier("dimdoors", dyeColor.getName() + "_fabric"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Colored Fabric Recipes";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
/*
|
||||||
|
* This is free and unencumbered software released into the public domain.
|
||||||
|
*
|
||||||
|
* Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||||
|
* distribute this software, either in source code form or as a compiled
|
||||||
|
* binary, for any purpose, commercial or non-commercial, and by any
|
||||||
|
* means.
|
||||||
|
*
|
||||||
|
* In jurisdictions that recognize copyright laws, the author or authors
|
||||||
|
* of this software dedicate any and all copyright interest in the
|
||||||
|
* software to the public domain. We make this dedication for the benefit
|
||||||
|
* of the public at large and to the detriment of our heirs and
|
||||||
|
* successors. We intend this dedication to be an overt act of
|
||||||
|
* relinquishment in perpetuity of all present and future rights to this
|
||||||
|
* software under copyright law.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* For more information, please refer to <http://unlicense.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.dimdev.dimdoors.datagen;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.google.common.collect.HashBasedTable;
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.google.common.collect.Table;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import me.shedaniel.cloth.api.datagen.v1.LootTableData;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import net.minecraft.data.DataCache;
|
||||||
|
import net.minecraft.data.DataGenerator;
|
||||||
|
import net.minecraft.data.DataProvider;
|
||||||
|
import net.minecraft.loot.LootManager;
|
||||||
|
import net.minecraft.loot.LootTable;
|
||||||
|
import net.minecraft.loot.context.LootContextType;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
public class LootTableConsumer implements DataProvider, LootTableData {
|
||||||
|
private static final Logger LOGGER = LogManager.getLogger();
|
||||||
|
private final DataGenerator dataGenerator;
|
||||||
|
private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create();
|
||||||
|
private final Table<LootContextType, Identifier, LootTable.Builder> lootTables = HashBasedTable.create();
|
||||||
|
|
||||||
|
public LootTableConsumer(DataGenerator dataGenerator) {
|
||||||
|
this.dataGenerator = dataGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void register(LootContextType type, Identifier identifier, LootTable.Builder lootTable) {
|
||||||
|
this.lootTables.put(type, identifier, lootTable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(DataCache cache) {
|
||||||
|
Path path = this.dataGenerator.getOutput();
|
||||||
|
Map<Identifier, LootTable> map = Maps.newHashMap();
|
||||||
|
this.lootTables.rowMap().forEach((type, tableMap) -> tableMap.forEach((identifier, builder) -> {
|
||||||
|
if (map.put(identifier, builder.type(type).build()) != null) {
|
||||||
|
throw new IllegalStateException("Duplicate loot table " + identifier);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
map.forEach((identifier, lootTable) -> {
|
||||||
|
Path outputPath = getOutput(path, identifier);
|
||||||
|
|
||||||
|
try {
|
||||||
|
DataProvider.writeToPath(GSON, cache, LootManager.toJson(lootTable), outputPath);
|
||||||
|
} catch (IOException var6) {
|
||||||
|
LOGGER.error("Couldn't save loot table {}", outputPath, var6);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Path getOutput(Path rootOutput, Identifier lootTableId) {
|
||||||
|
return rootOutput.resolve("data/" + lootTableId.getNamespace() + "/loot_tables/" + lootTableId.getPath() + ".json");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Loot Table Provider";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package org.dimdev.dimdoors.datagen;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import org.dimdev.dimdoors.block.ModBlocks;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.data.DataCache;
|
||||||
|
import net.minecraft.data.DataGenerator;
|
||||||
|
import net.minecraft.data.DataProvider;
|
||||||
|
|
||||||
|
import static org.dimdev.dimdoors.datagen.DatagenInitializer.LOOT_TABLE_CONSUMER;
|
||||||
|
|
||||||
|
public class LootTableProvider implements DataProvider {
|
||||||
|
private final DataGenerator dataGenerator;
|
||||||
|
|
||||||
|
public LootTableProvider(DataGenerator dataGenerator) {
|
||||||
|
this.dataGenerator = dataGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(DataCache cache) throws IOException {
|
||||||
|
for (Block block : ModBlocks.FABRIC_BLOCKS.values()) {
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelfRequiresSilkTouch(block);
|
||||||
|
}
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.GOLD_DOOR);
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.QUARTZ_DOOR);
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.OAK_DIMENSIONAL_DOOR);
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.IRON_DIMENSIONAL_DOOR);
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.GOLD_DIMENSIONAL_DOOR);
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.QUARTZ_DIMENSIONAL_DOOR);
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.OAK_DIMENSIONAL_TRAPDOOR);
|
||||||
|
LOOT_TABLE_CONSUMER.registerBlockDropSelf(ModBlocks.MARKING_PLATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Dimdoors Loot Tables";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package org.dimdev.dimdoors.datagen;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import org.dimdev.dimdoors.mixin.RecipesProviderAccessor;
|
||||||
|
|
||||||
|
import net.minecraft.data.DataCache;
|
||||||
|
import net.minecraft.data.DataGenerator;
|
||||||
|
import net.minecraft.data.DataProvider;
|
||||||
|
import net.minecraft.data.server.recipe.RecipeJsonProvider;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
|
|
||||||
|
public class RecipeConsumer implements DataProvider, Consumer<RecipeJsonProvider> {
|
||||||
|
private final DataGenerator dataGenerator;
|
||||||
|
|
||||||
|
public RecipeConsumer(DataGenerator dataGenerator) {
|
||||||
|
this.dataGenerator = dataGenerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final Set<RecipeJsonProvider> recipes = new HashSet<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(DataCache cache) throws IOException {
|
||||||
|
Path path = this.dataGenerator.getOutput();
|
||||||
|
Set<Identifier> set = Sets.newHashSet();
|
||||||
|
this.recipes.forEach((recipeJsonProvider) -> {
|
||||||
|
if (!set.add(recipeJsonProvider.getRecipeId())) {
|
||||||
|
throw new IllegalStateException("Duplicate recipe " + recipeJsonProvider.getRecipeId());
|
||||||
|
} else {
|
||||||
|
RecipesProviderAccessor.callSaveRecipe(cache, recipeJsonProvider.toJson(), path.resolve("data/" + recipeJsonProvider.getRecipeId().getNamespace() + "/recipes/" + recipeJsonProvider.getRecipeId().getPath() + ".json"));
|
||||||
|
JsonObject jsonObject = recipeJsonProvider.toAdvancementJson();
|
||||||
|
if (jsonObject != null) {
|
||||||
|
RecipesProviderAccessor.callSaveRecipeAdvancement(cache, jsonObject, path.resolve("data/" + recipeJsonProvider.getRecipeId().getNamespace() + "/advancements/" + recipeJsonProvider.getAdvancementId().getPath() + ".json"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "Recipe Provider";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(RecipeJsonProvider recipeJsonProvider) {
|
||||||
|
this.recipes.add(recipeJsonProvider);
|
||||||
|
}
|
||||||
|
}
|
10
src/datagen/resources/fabric.mod.json
Normal file
10
src/datagen/resources/fabric.mod.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"schemaVersion": 1,
|
||||||
|
"id": "dimdoors-datagen",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"entrypoints": {
|
||||||
|
"preLaunch": [
|
||||||
|
"org.dimdev.dimdoors.datagen.DatagenInitializer"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -92,9 +92,9 @@ public final class ModConfig implements ConfigData {
|
||||||
@RequiresRestart
|
@RequiresRestart
|
||||||
public int gatewayGenChance = 200;
|
public int gatewayGenChance = 200;
|
||||||
@RequiresRestart
|
@RequiresRestart
|
||||||
public List<Integer> clusterDimBlacklist = new LinkedList<>();
|
public List<String> clusterDimBlacklist = new LinkedList<>();
|
||||||
@RequiresRestart
|
@RequiresRestart
|
||||||
public List<Integer> gatewayDimBlacklist = new LinkedList<>();
|
public List<String> gatewayDimBlacklist = new LinkedList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Dungeons {
|
public static class Dungeons {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package org.dimdev.dimdoors.block;
|
package org.dimdev.dimdoors.block;
|
||||||
|
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
||||||
import org.dimdev.dimdoors.block.entity.DetachedRiftBlockEntity;
|
import org.dimdev.dimdoors.block.entity.DetachedRiftBlockEntity;
|
||||||
import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity;
|
import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity;
|
||||||
import org.dimdev.dimdoors.util.math.MathUtil;
|
import org.dimdev.dimdoors.util.math.MathUtil;
|
||||||
|
@ -37,8 +39,6 @@ public class DimensionalDoorBlock extends DoorBlock implements RiftProvider<Entr
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// TODO: replace with dimdoor cooldown?
|
// TODO: replace with dimdoor cooldown?
|
||||||
if (entity.hasNetherPortalCooldown()) {
|
if (entity.hasNetherPortalCooldown()) {
|
||||||
entity.resetNetherPortalCooldown();
|
entity.resetNetherPortalCooldown();
|
||||||
|
@ -46,10 +46,16 @@ public class DimensionalDoorBlock extends DoorBlock implements RiftProvider<Entr
|
||||||
}
|
}
|
||||||
entity.resetNetherPortalCooldown();
|
entity.resetNetherPortalCooldown();
|
||||||
|
|
||||||
BlockState doorState = world.getBlockState(state.get(HALF) == DoubleBlockHalf.UPPER ? pos.down() : pos);
|
BlockPos top = state.get(HALF) == DoubleBlockHalf.UPPER ? pos : pos.up();
|
||||||
|
BlockPos bottom = top.down();
|
||||||
|
BlockState doorState = world.getBlockState(bottom);
|
||||||
|
|
||||||
if (doorState.getBlock() == this && doorState.get(DoorBlock.OPEN)) { // '== this' to check if not half-broken
|
if (doorState.getBlock() == this && doorState.get(DoorBlock.OPEN)) { // '== this' to check if not half-broken
|
||||||
this.getRift(world, pos, state).teleport(entity);
|
this.getRift(world, pos, state).teleport(entity);
|
||||||
|
if (DimensionalDoorsInitializer.getConfig().getGeneralConfig().closeDoorBehind) {
|
||||||
|
world.setBlockState(top, world.getBlockState(top).with(DoorBlock.OPEN, false));
|
||||||
|
world.setBlockState(bottom, world.getBlockState(bottom).with(DoorBlock.OPEN, false));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,10 @@ import net.minecraft.world.World;
|
||||||
|
|
||||||
public class DimensionalPortalBlock extends Block implements RiftProvider<EntranceRiftBlockEntity> {
|
public class DimensionalPortalBlock extends Block implements RiftProvider<EntranceRiftBlockEntity> {
|
||||||
public static DirectionProperty FACING = HorizontalFacingBlock.FACING;
|
public static DirectionProperty FACING = HorizontalFacingBlock.FACING;
|
||||||
|
|
||||||
public DimensionalPortalBlock(Settings settings) {
|
public DimensionalPortalBlock(Settings settings) {
|
||||||
super(settings);
|
super(settings);
|
||||||
setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH));
|
this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -52,18 +53,18 @@ public class DimensionalPortalBlock extends Block implements RiftProvider<Entran
|
||||||
|
|
||||||
this.getRift(world, pos, state).teleport(entity);
|
this.getRift(world, pos, state).teleport(entity);
|
||||||
|
|
||||||
EntranceRiftBlockEntity rift = getRift(world, pos, state);
|
EntranceRiftBlockEntity rift = this.getRift(world, pos, state);
|
||||||
|
|
||||||
world.setBlockState(pos, ModBlocks.DETACHED_RIFT.getDefaultState());
|
world.setBlockState(pos, ModBlocks.DETACHED_RIFT.getDefaultState());
|
||||||
((DetachedRiftBlockEntity) world.getBlockEntity(pos)).setData(rift.getData());
|
((DetachedRiftBlockEntity) world.getBlockEntity(pos)).setData(rift.getData());
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockState rotate(BlockState state, BlockRotation rotation) {
|
public BlockState rotate(BlockState state, BlockRotation rotation) {
|
||||||
return (BlockState)state.with(FACING, rotation.rotate((Direction)state.get(FACING)));
|
return state.with(FACING, rotation.rotate(state.get(FACING)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockState mirror(BlockState state, BlockMirror mirror) {
|
public BlockState mirror(BlockState state, BlockMirror mirror) {
|
||||||
return state.rotate(mirror.getRotation((Direction)state.get(FACING)));
|
return state.rotate(mirror.getRotation(state.get(FACING)));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
|
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
package org.dimdev.dimdoors.block;
|
package org.dimdev.dimdoors.block;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockEntityProvider;
|
import net.minecraft.block.BlockEntityProvider;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
@ -19,11 +16,10 @@ import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import org.dimdev.dimdoors.util.InstanceMap;
|
|
||||||
|
|
||||||
public class FabricBlock extends Block {
|
public class FabricBlock extends Block {
|
||||||
FabricBlock(DyeColor color) {
|
FabricBlock(DyeColor color) {
|
||||||
super(FabricBlockSettings.of(Material.STONE, color).lightLevel(15));
|
super(FabricBlockSettings.of(Material.STONE, color).strength(1.2F).luminance(15));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,22 +16,23 @@ import net.fabricmc.api.EnvType;
|
||||||
import net.fabricmc.api.Environment;
|
import net.fabricmc.api.Environment;
|
||||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
|
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||||
|
|
||||||
public final class ModBlocks {
|
public final class ModBlocks {
|
||||||
private static final Map<String, Block> BLOCKS = Maps.newLinkedHashMap();
|
private static final Map<String, Block> BLOCKS = Maps.newLinkedHashMap();
|
||||||
public static final Map<DyeColor, Block> FABRIC_BLOCKS = new HashMap<>();
|
public static final Map<DyeColor, Block> FABRIC_BLOCKS = new HashMap<>();
|
||||||
public static final Map<DyeColor, Block> ANCIENT_FABRIC_BLOCKS = new HashMap<>();
|
private static final Map<DyeColor, Block> ANCIENT_FABRIC_BLOCKS = new HashMap<>();
|
||||||
|
|
||||||
public static final Block GOLD_DOOR = register("dimdoors:gold_door", new DoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).nonOpaque()));
|
public static final Block GOLD_DOOR = register("dimdoors:gold_door", new DoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque()));
|
||||||
public static final Block QUARTZ_DOOR = register("dimdoors:quartz_door", new DoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).nonOpaque()));
|
public static final Block QUARTZ_DOOR = register("dimdoors:quartz_door", new DoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque()));
|
||||||
public static final Block OAK_DIMENSIONAL_DOOR = register("dimdoors:oak_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).nonOpaque().lightLevel(state -> 10)));
|
public static final Block OAK_DIMENSIONAL_DOOR = register("dimdoors:oak_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).strength(3.0F).breakByTool(FabricToolTags.AXES).breakByHand(true).nonOpaque().luminance(state -> 10)));
|
||||||
public static final Block IRON_DIMENSIONAL_DOOR = register("dimdoors:iron_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.IRON_GRAY).nonOpaque().lightLevel(state -> 10)));
|
public static final Block IRON_DIMENSIONAL_DOOR = register("dimdoors:iron_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.IRON_GRAY).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque().luminance(state -> 10)));
|
||||||
public static final Block GOLD_DIMENSIONAL_DOOR = register("dimdoors:gold_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).nonOpaque().lightLevel(state -> 10)));
|
public static final Block GOLD_DIMENSIONAL_DOOR = register("dimdoors:gold_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque().luminance(state -> 10)));
|
||||||
public static final Block QUARTZ_DIMENSIONAL_DOOR = register("dimdoors:quartz_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).nonOpaque().lightLevel(state -> 10)));
|
public static final Block QUARTZ_DIMENSIONAL_DOOR = register("dimdoors:quartz_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).strength(5.0F).breakByHand(false).breakByTool(FabricToolTags.PICKAXES).nonOpaque().luminance(state -> 10)));
|
||||||
public static final Block OAK_DIMENSIONAL_TRAPDOOR = register("dimdoors:wood_dimensional_trapdoor", new DimensionalTrapdoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).nonOpaque()));
|
public static final Block OAK_DIMENSIONAL_TRAPDOOR = register("dimdoors:wood_dimensional_trapdoor", new DimensionalTrapdoorBlock(FabricBlockSettings.of(Material.WOOD, MapColor.OAK_TAN).strength(3.0F).breakByTool(FabricToolTags.AXES).breakByHand(true).nonOpaque()));
|
||||||
|
|
||||||
public static final Block DIMENSIONAL_PORTAL = register("dimdoors:dimensional_portal", new DimensionalPortalBlock(FabricBlockSettings.of(Material.AIR).collidable(false).nonOpaque().dropsNothing().lightLevel(10)));
|
public static final Block DIMENSIONAL_PORTAL = register("dimdoors:dimensional_portal", new DimensionalPortalBlock(FabricBlockSettings.of(Material.AIR).collidable(false).strength(-1.0F, 3600000.0F).nonOpaque().dropsNothing().luminance(10)));
|
||||||
public static final Block DETACHED_RIFT = register("dimdoors:detached_rift", new DetachedRiftBlock(FabricBlockSettings.of(Material.AIR).noCollision().nonOpaque()));
|
public static final Block DETACHED_RIFT = register("dimdoors:detached_rift", new DetachedRiftBlock(FabricBlockSettings.of(Material.AIR).strength(-1.0F, 3600000.0F).noCollision().nonOpaque()));
|
||||||
|
|
||||||
public static final Block WHITE_FABRIC = registerFabric("dimdoors:white_fabric", DyeColor.WHITE);
|
public static final Block WHITE_FABRIC = registerFabric("dimdoors:white_fabric", DyeColor.WHITE);
|
||||||
public static final Block ORANGE_FABRIC = registerFabric("dimdoors:orange_fabric", DyeColor.ORANGE);
|
public static final Block ORANGE_FABRIC = registerFabric("dimdoors:orange_fabric", DyeColor.ORANGE);
|
||||||
|
@ -67,8 +68,8 @@ public final class ModBlocks {
|
||||||
public static final Block RED_ANCIENT_FABRIC = registerAncientFabric("dimdoors:red_ancient_fabric", DyeColor.RED);
|
public static final Block RED_ANCIENT_FABRIC = registerAncientFabric("dimdoors:red_ancient_fabric", DyeColor.RED);
|
||||||
public static final Block BLACK_ANCIENT_FABRIC = registerAncientFabric("dimdoors:black_ancient_fabric", DyeColor.BLACK);
|
public static final Block BLACK_ANCIENT_FABRIC = registerAncientFabric("dimdoors:black_ancient_fabric", DyeColor.BLACK);
|
||||||
|
|
||||||
public static final Block ETERNAL_FLUID = register("dimdoors:eternal_fluid", new EternalFluidBlock(FabricBlockSettings.of(Material.STONE, MapColor.RED).lightLevel(15)));
|
public static final Block ETERNAL_FLUID = register("dimdoors:eternal_fluid", new EternalFluidBlock(FabricBlockSettings.of(Material.STONE, MapColor.RED).luminance(15)));
|
||||||
public static final Block UNRAVELLED_FABRIC = register("dimdoors:unravelled_fabric", new UnravelledFabricBlock(FabricBlockSettings.of(Material.STONE, MapColor.BLACK).lightLevel(15)));
|
public static final Block UNRAVELLED_FABRIC = register("dimdoors:unravelled_fabric", new UnravelledFabricBlock(FabricBlockSettings.of(Material.STONE, MapColor.BLACK).ticksRandomly().luminance(15)));
|
||||||
|
|
||||||
public static final Block MARKING_PLATE = register("dimdoors:marking_plate", new MarkingPlateBlock(FabricBlockSettings.of(Material.METAL, DyeColor.BLACK).nonOpaque()));
|
public static final Block MARKING_PLATE = register("dimdoors:marking_plate", new MarkingPlateBlock(FabricBlockSettings.of(Material.METAL, DyeColor.BLACK).nonOpaque()));
|
||||||
|
|
||||||
|
@ -98,7 +99,13 @@ public final class ModBlocks {
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public static void initClient() {
|
public static void initClient() {
|
||||||
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), ModBlocks.OAK_DIMENSIONAL_DOOR, ModBlocks.GOLD_DIMENSIONAL_DOOR, ModBlocks.IRON_DIMENSIONAL_DOOR, ModBlocks.OAK_DIMENSIONAL_TRAPDOOR, ModBlocks.QUARTZ_DIMENSIONAL_DOOR, ModBlocks.QUARTZ_DOOR);
|
BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(),
|
||||||
|
ModBlocks.OAK_DIMENSIONAL_DOOR,
|
||||||
|
ModBlocks.GOLD_DIMENSIONAL_DOOR,
|
||||||
|
ModBlocks.IRON_DIMENSIONAL_DOOR,
|
||||||
|
ModBlocks.OAK_DIMENSIONAL_TRAPDOOR,
|
||||||
|
ModBlocks.QUARTZ_DIMENSIONAL_DOOR,
|
||||||
|
ModBlocks.QUARTZ_DOOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Block ancientFabricFromDye(DyeColor color) {
|
public static Block ancientFabricFromDye(DyeColor color) {
|
||||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
|
import net.minecraft.world.TickPriority;
|
||||||
import net.minecraft.world.WorldAccess;
|
import net.minecraft.world.WorldAccess;
|
||||||
|
|
||||||
public class UnravelledFabricBlock extends Block {
|
public class UnravelledFabricBlock extends Block {
|
||||||
|
@ -37,7 +38,7 @@ public class UnravelledFabricBlock extends Block {
|
||||||
@Override
|
@Override
|
||||||
public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) {
|
public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) {
|
||||||
if (world instanceof ServerWorld) {
|
if (world instanceof ServerWorld) {
|
||||||
this.randomTick(state, (ServerWorld) world, pos, new Random());
|
world.getBlockTickScheduler().schedule(pos, this, 10, TickPriority.NORMAL);
|
||||||
}
|
}
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,15 +5,16 @@ import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.util.math.Vec3f;
|
import net.minecraft.util.math.Vec3f;
|
||||||
|
|
||||||
public enum DefaultTransformation implements Transformer {
|
public enum DefaultTransformation implements Transformer {
|
||||||
NONE {
|
DOWN {
|
||||||
@Override
|
@Override
|
||||||
public void transform(MatrixStack matrices) {
|
public void transform(MatrixStack matrices) {
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
DIMENSIONAL_PORTAL {
|
UP {
|
||||||
@Override
|
@Override
|
||||||
public void transform(MatrixStack matrices) {
|
public void transform(MatrixStack matrices) {
|
||||||
matrices.translate(0, 0, 0.5F);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
NORTH_DOOR {
|
NORTH_DOOR {
|
||||||
|
@ -43,6 +44,17 @@ public enum DefaultTransformation implements Transformer {
|
||||||
matrices.multiply(Vec3f.NEGATIVE_Y.getDegreesQuaternion(90.0F));
|
matrices.multiply(Vec3f.NEGATIVE_Y.getDegreesQuaternion(90.0F));
|
||||||
matrices.translate(0, 0, -0.19F);
|
matrices.translate(0, 0, -0.19F);
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
NONE {
|
||||||
|
@Override
|
||||||
|
public void transform(MatrixStack matrices) {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
DIMENSIONAL_PORTAL {
|
||||||
|
@Override
|
||||||
|
public void transform(MatrixStack matrices) {
|
||||||
|
matrices.translate(0, 0, 0.5F);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final DefaultTransformation[] VALUES = values();
|
private static final DefaultTransformation[] VALUES = values();
|
||||||
|
|
|
@ -8,6 +8,9 @@ import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
||||||
import org.dimdev.dimdoors.entity.MonolithEntity;
|
import org.dimdev.dimdoors.entity.MonolithEntity;
|
||||||
import org.dimdev.dimdoors.item.ModItems;
|
import org.dimdev.dimdoors.item.ModItems;
|
||||||
import org.dimdev.dimdoors.sound.ModSoundEvents;
|
import org.dimdev.dimdoors.sound.ModSoundEvents;
|
||||||
|
import org.dimdev.dimdoors.util.Location;
|
||||||
|
import org.dimdev.dimdoors.util.TeleportUtil;
|
||||||
|
import org.dimdev.dimdoors.world.ModDimensions;
|
||||||
|
|
||||||
import net.minecraft.entity.ai.TargetPredicate;
|
import net.minecraft.entity.ai.TargetPredicate;
|
||||||
import net.minecraft.entity.ai.goal.Goal;
|
import net.minecraft.entity.ai.goal.Goal;
|
||||||
|
@ -18,6 +21,8 @@ import net.minecraft.sound.SoundCategory;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
|
import net.fabricmc.fabric.api.network.ServerSidePacketRegistry;
|
||||||
|
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
|
||||||
|
|
||||||
import static net.minecraft.predicate.entity.EntityPredicates.EXCEPT_SPECTATOR;
|
import static net.minecraft.predicate.entity.EntityPredicates.EXCEPT_SPECTATOR;
|
||||||
import static org.dimdev.dimdoors.entity.MonolithEntity.MAX_AGGRO;
|
import static org.dimdev.dimdoors.entity.MonolithEntity.MAX_AGGRO;
|
||||||
|
|
||||||
|
@ -65,7 +70,7 @@ public class MonolithAggroGoal extends Goal {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
int i = random.nextInt(64);
|
int i = random.nextInt(64);
|
||||||
if (this.target instanceof ServerPlayerEntity) {
|
if (this.target instanceof ServerPlayerEntity) {
|
||||||
if (i < 6) {
|
if (i < 4) {
|
||||||
this.target.getInventory().armor.get(0).damage(i, random, (ServerPlayerEntity) this.target);
|
this.target.getInventory().armor.get(0).damage(i, random, (ServerPlayerEntity) this.target);
|
||||||
this.target.getInventory().armor.get(1).damage(i, random, (ServerPlayerEntity) this.target);
|
this.target.getInventory().armor.get(1).damage(i, random, (ServerPlayerEntity) this.target);
|
||||||
this.target.getInventory().armor.get(2).damage(i, random, (ServerPlayerEntity) this.target);
|
this.target.getInventory().armor.get(2).damage(i, random, (ServerPlayerEntity) this.target);
|
||||||
|
@ -91,14 +96,13 @@ public class MonolithAggroGoal extends Goal {
|
||||||
|
|
||||||
PacketByteBuf data = new PacketByteBuf(Unpooled.buffer());
|
PacketByteBuf data = new PacketByteBuf(Unpooled.buffer());
|
||||||
data.writeInt(this.mob.getAggro());
|
data.writeInt(this.mob.getAggro());
|
||||||
ServerSidePacketRegistry.INSTANCE.sendToPlayer(this.target, DimensionalDoorsInitializer.MONOLITH_PARTICLE_PACKET, data);
|
ServerPlayNetworking.send((ServerPlayerEntity) this.target, DimensionalDoorsInitializer.MONOLITH_PARTICLE_PACKET, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Teleport the target player if various conditions are met
|
// Teleport the target player if various conditions are met
|
||||||
if (this.mob.getAggro() >= MAX_AGGRO && DimensionalDoorsInitializer.getConfig().getMonolithsConfig().monolithTeleportation && !this.target.isCreative() && this.mob.isDangerous()) {
|
if (this.mob.getAggro() >= MAX_AGGRO && DimensionalDoorsInitializer.getConfig().getMonolithsConfig().monolithTeleportation && !this.target.isCreative() && this.mob.isDangerous()) {
|
||||||
this.mob.setAggro(0);
|
this.mob.setAggro(0);
|
||||||
//Location destination = LimboDimension.getLimboSkySpawn(player);
|
this.target.teleport(this.target.getX(), this.target.getY() + 256, this.target.getZ());
|
||||||
//TeleportUtil.teleport(player, destination, 0, 0);
|
|
||||||
this.target.world.playSound(null, new BlockPos(this.target.getPos()), ModSoundEvents.CRACK, SoundCategory.HOSTILE, 13, 1);
|
this.target.world.playSound(null, new BlockPos(this.target.getPos()), ModSoundEvents.CRACK, SoundCategory.HOSTILE, 13, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,6 @@ public final class ModItems {
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
// TODO
|
|
||||||
@RegistryObject("unstable_dimensional_door")
|
@RegistryObject("unstable_dimensional_door")
|
||||||
public static final Item UNSTABLE_DIMENSIONAL_DOOR = create(new DimensionalDoorItem(
|
public static final Item UNSTABLE_DIMENSIONAL_DOOR = create(new DimensionalDoorItem(
|
||||||
ModBlocks.IRON_DIMENSIONAL_DOOR,
|
ModBlocks.IRON_DIMENSIONAL_DOOR,
|
||||||
|
@ -122,7 +121,9 @@ public final class ModItems {
|
||||||
.negativeDepthFactor(80)
|
.negativeDepthFactor(80)
|
||||||
.positiveDepthFactor(Double.MAX_VALUE)
|
.positiveDepthFactor(Double.MAX_VALUE)
|
||||||
.weightMaximum(100)
|
.weightMaximum(100)
|
||||||
.noLink(false).newRiftWeight(0).build()
|
.noLink(false)
|
||||||
|
.newRiftWeight(0)
|
||||||
|
.build()
|
||||||
)
|
)
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -130,10 +131,18 @@ public final class ModItems {
|
||||||
public static final Item OAK_DIMENSIONAL_TRAPDOOR = create(new DimensionalTrapdoorItem(
|
public static final Item OAK_DIMENSIONAL_TRAPDOOR = create(new DimensionalTrapdoorItem(
|
||||||
ModBlocks.OAK_DIMENSIONAL_TRAPDOOR,
|
ModBlocks.OAK_DIMENSIONAL_TRAPDOOR,
|
||||||
new Item.Settings().group(DIMENSIONAL_DOORS).maxCount(1),
|
new Item.Settings().group(DIMENSIONAL_DOORS).maxCount(1),
|
||||||
rift -> rift.setDestination(new EscapeTarget(false))
|
rift -> rift.setDestination(
|
||||||
|
RandomTarget.builder()
|
||||||
|
.acceptedGroups(Collections.singleton(0))
|
||||||
|
.coordFactor(1)
|
||||||
|
.negativeDepthFactor(80)
|
||||||
|
.positiveDepthFactor(Double.MAX_VALUE)
|
||||||
|
.weightMaximum(100)
|
||||||
|
.noLink(false)
|
||||||
|
.newRiftWeight(0)
|
||||||
|
.build())
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
@RegistryObject("world_thread")
|
@RegistryObject("world_thread")
|
||||||
public static final Item WORLD_THREAD = create(new Item(new Item.Settings().group(DIMENSIONAL_DOORS)));
|
public static final Item WORLD_THREAD = create(new Item(new Item.Settings().group(DIMENSIONAL_DOORS)));
|
||||||
|
|
||||||
|
@ -155,6 +164,9 @@ public final class ModItems {
|
||||||
@RegistryObject("rift_stabilizer")
|
@RegistryObject("rift_stabilizer")
|
||||||
public static final Item RIFT_STABILIZER = create(new RiftStabilizerItem(new Item.Settings().maxCount(1).maxDamage(6).group(DIMENSIONAL_DOORS)));
|
public static final Item RIFT_STABILIZER = create(new RiftStabilizerItem(new Item.Settings().maxCount(1).maxDamage(6).group(DIMENSIONAL_DOORS)));
|
||||||
|
|
||||||
|
@RegistryObject("rift_key")
|
||||||
|
public static final Item RIFT_KEY = create(new RiftKeyItem(new Item.Settings().group(DIMENSIONAL_DOORS).maxCount(1)));
|
||||||
|
|
||||||
@RegistryObject("dimensional_eraser")
|
@RegistryObject("dimensional_eraser")
|
||||||
public static final Item DIMENSIONAL_ERASER = create(new DimensionalEraserItem(new Item.Settings().maxDamage(100).group(DIMENSIONAL_DOORS)));
|
public static final Item DIMENSIONAL_ERASER = create(new DimensionalEraserItem(new Item.Settings().maxDamage(100).group(DIMENSIONAL_DOORS)));
|
||||||
|
|
||||||
|
|
|
@ -85,8 +85,7 @@ public class RiftBladeItem extends SwordItem {
|
||||||
player.teleport(teleportPosition.getX(), teleportPosition.getY(), teleportPosition.getZ());
|
player.teleport(teleportPosition.getX(), teleportPosition.getY(), teleportPosition.getZ());
|
||||||
player.setYaw((float) (Math.random() * 2 * Math.PI));
|
player.setYaw((float) (Math.random() * 2 * Math.PI));
|
||||||
|
|
||||||
stack.damage(1, player, a -> {
|
stack.damage(1, player, a -> a.sendToolBreakStatus(hand));
|
||||||
});
|
|
||||||
return new TypedActionResult<>(ActionResult.SUCCESS, stack);
|
return new TypedActionResult<>(ActionResult.SUCCESS, stack);
|
||||||
} else if (RaycastHelper.hitsDetachedRift(hit, world)) {
|
} else if (RaycastHelper.hitsDetachedRift(hit, world)) {
|
||||||
BlockHitResult blockHitResult = (BlockHitResult) hit;
|
BlockHitResult blockHitResult = (BlockHitResult) hit;
|
||||||
|
|
34
src/main/java/org/dimdev/dimdoors/item/RiftKeyItem.java
Normal file
34
src/main/java/org/dimdev/dimdoors/item/RiftKeyItem.java
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
package org.dimdev.dimdoors.item;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import dev.onyxstudios.cca.api.v3.component.ComponentV3;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import net.minecraft.client.item.TooltipContext;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class RiftKeyItem extends Item {
|
||||||
|
public RiftKeyItem(Settings settings) {
|
||||||
|
super(settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void appendTooltip(ItemStack stack, @Nullable World world, List<Text> tooltip, TooltipContext context) {
|
||||||
|
super.appendTooltip(stack, world, tooltip, context); // TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasGlint(ItemStack stack) {
|
||||||
|
return super.hasGlint(stack); // TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMaxUseTime(ItemStack stack) {
|
||||||
|
return 30;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package org.dimdev.dimdoors.mixin;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Invoker;
|
||||||
|
|
||||||
|
import net.minecraft.data.DataCache;
|
||||||
|
import net.minecraft.data.server.RecipesProvider;
|
||||||
|
|
||||||
|
@Mixin(RecipesProvider.class)
|
||||||
|
public interface RecipesProviderAccessor {
|
||||||
|
@Invoker
|
||||||
|
static void callSaveRecipe(DataCache cache, JsonObject json, Path path) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Invoker
|
||||||
|
static void callSaveRecipeAdvancement(DataCache cache, JsonObject json, Path path) {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
}
|
|
@ -48,6 +48,13 @@ public abstract class SchematicV2Gateway implements Gateway, BiPredicate<Structu
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void generate(StructureWorldAccess world, BlockPos pos) {
|
public final void generate(StructureWorldAccess world, BlockPos pos) {
|
||||||
|
if (DimensionalDoorsInitializer.getConfig()
|
||||||
|
.getWorldConfig()
|
||||||
|
.gatewayDimBlacklist
|
||||||
|
.contains(world.toServerWorld().getRegistryKey().getValue().toString())
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!this.replaced) {
|
if (!this.replaced) {
|
||||||
TemplateUtils.replacePlaceholders(this.schematic, world);
|
TemplateUtils.replacePlaceholders(this.schematic, world);
|
||||||
this.replaced = true;
|
this.replaced = true;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package org.dimdev.dimdoors.world.level;
|
package org.dimdev.dimdoors.world.level;
|
||||||
|
|
||||||
import dev.onyxstudios.cca.api.v3.component.Component;
|
import dev.onyxstudios.cca.api.v3.component.ComponentV3;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
|
||||||
public class Counter implements Component {
|
public class Counter implements ComponentV3 {
|
||||||
private final ItemStack stack;
|
private final ItemStack stack;
|
||||||
private int counter;
|
private int counter;
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@ import dev.onyxstudios.cca.api.v3.level.LevelComponentFactoryRegistry;
|
||||||
import dev.onyxstudios.cca.api.v3.level.LevelComponentInitializer;
|
import dev.onyxstudios.cca.api.v3.level.LevelComponentInitializer;
|
||||||
import org.dimdev.dimdoors.item.ModItems;
|
import org.dimdev.dimdoors.item.ModItems;
|
||||||
|
|
||||||
|
@SuppressWarnings("UnstableApiUsage")
|
||||||
public class DimensionalDoorsComponents implements LevelComponentInitializer, ItemComponentInitializer {
|
public class DimensionalDoorsComponents implements LevelComponentInitializer, ItemComponentInitializer {
|
||||||
public static final ComponentKey<DimensionalRegistry> DIMENSIONAL_REGISTRY_COMPONENT_KEY = ComponentRegistryV3.INSTANCE.getOrCreate(new Identifier("dimdoors:dimensional_registry"), DimensionalRegistry.class);
|
public static final ComponentKey<DimensionalRegistry> DIMENSIONAL_REGISTRY_COMPONENT_KEY = ComponentRegistryV3.INSTANCE.getOrCreate(new Identifier("dimdoors:dimensional_registry"), DimensionalRegistry.class);
|
||||||
public static final ComponentKey<Counter> COUNTER_COMPONENT_KEY = ComponentRegistryV3.INSTANCE.getOrCreate(new Identifier("dimdoors:counter"), Counter.class);
|
public static final ComponentKey<Counter> COUNTER_COMPONENT_KEY = ComponentRegistryV3.INSTANCE.getOrCreate(new Identifier("dimdoors:counter"), Counter.class);
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerLevelComponentFactories(LevelComponentFactoryRegistry registry) {
|
public void registerLevelComponentFactories(LevelComponentFactoryRegistry registry) {
|
||||||
registry.register(DIMENSIONAL_REGISTRY_COMPONENT_KEY, level -> new DimensionalRegistry());
|
registry.register(DIMENSIONAL_REGISTRY_COMPONENT_KEY, level -> new DimensionalRegistry());
|
||||||
|
|
|
@ -195,5 +195,17 @@
|
||||||
"dimdoors.config.screen.reload": "Reload Config",
|
"dimdoors.config.screen.reload": "Reload Config",
|
||||||
"dimdoors.linkProperties.oneWay": "One way: %s",
|
"dimdoors.linkProperties.oneWay": "One way: %s",
|
||||||
"dimdoors.linkProperties.linksRemaining": "Remaining links: %s",
|
"dimdoors.linkProperties.linksRemaining": "Remaining links: %s",
|
||||||
"dimdoors.color": "Color: "
|
"dimdoors.color": "Color: ",
|
||||||
|
"dimdoors.advancement.root": "Dimensional Doors",
|
||||||
|
"dimdoors.advancement.root.desc": "Venture into the depths",
|
||||||
|
"dimdoors.advancement.public_pocket": "Public Pockets",
|
||||||
|
"dimdoors.advancement.public_pocket.desc": "Enter a public pocket",
|
||||||
|
"dimdoors.advancement.private_pocket": "Private Pockets",
|
||||||
|
"dimdoors.advancement.private_pocket.desc": "Enter a private pocket",
|
||||||
|
"dimdoors.advancement.dungeon": "Dungeons",
|
||||||
|
"dimdoors.advancement.dungeon.desc": "Enter a dungeon",
|
||||||
|
"dimdoors.advancement.limbo": "Decay",
|
||||||
|
"dimdoors.advancement.limbo.desc": "Enter limbo",
|
||||||
|
"dimdoors.advancement.escape_limbo": "Escape",
|
||||||
|
"dimdoors.advancement.escape_limbo.desc": "Escape limbo"
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,4 +44,4 @@
|
||||||
"item.unstable_dimensional_door.info": "Attenziione: Porta a una destinazione casuale",
|
"item.unstable_dimensional_door.info": "Attenziione: Porta a una destinazione casuale",
|
||||||
"item.oak_dimensional_door.info": "Piazzalo sul blocco sotto una \\nfrattura per creare un portale, \\no piazzalo da qualunque altra parte \\nin una dimensione tascabile per uscire.",
|
"item.oak_dimensional_door.info": "Piazzalo sul blocco sotto una \\nfrattura per creare un portale, \\no piazzalo da qualunque altra parte \\nin una dimensione tascabile per uscire.",
|
||||||
"entity.dimdoors.monolith": "Monolito"
|
"entity.dimdoors.monolith": "Monolito"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent": "block/trapdoor_bottom",
|
|
||||||
"textures": {
|
|
||||||
"texture": "dimdoors:block/dimensional_trapdoor"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent": "block/trapdoor_open",
|
|
||||||
"textures": {
|
|
||||||
"texture": "dimdoors:block/dimensional_trapdoor"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent": "block/trapdoor_top",
|
|
||||||
"textures": {
|
|
||||||
"texture": "dimdoors:block/dimensional_trapdoor"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_bottom",
|
"parent": "block/door_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/gold_door_lower",
|
"bottom": "dimdoors:block/gold_door_lower",
|
||||||
"top": "dimdoors:block/gold_door_upper"
|
"top": "dimdoors:block/gold_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/gold_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_bottom_rh",
|
"parent": "block/door_bottom_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/gold_door_lower",
|
"bottom": "dimdoors:block/gold_door_lower",
|
||||||
"top": "dimdoors:block/gold_door_upper"
|
"top": "dimdoors:block/gold_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/gold_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_top",
|
"parent": "block/door_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/gold_door_lower",
|
"bottom": "dimdoors:block/gold_door_lower",
|
||||||
"top": "dimdoors:block/gold_door_upper"
|
"top": "dimdoors:block/gold_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/gold_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_top_rh",
|
"parent": "block/door_top_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/gold_door_lower",
|
"bottom": "dimdoors:block/gold_door_lower",
|
||||||
"top": "dimdoors:block/gold_door_upper"
|
"top": "dimdoors:block/gold_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/gold_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_bottom",
|
"parent": "block/door_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_bottom_rh",
|
"parent": "block/door_bottom_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_top",
|
"parent": "block/door_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
{
|
{
|
||||||
"parent": "block/door_top_rh",
|
"parent": "block/door_top_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||||
}
|
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_bottom",
|
"parent": "block/door_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/oak_dimensional_door_upper"
|
"top": "dimdoors:block/oak_dimensional_door_upper",
|
||||||
|
"particle": "dimdoors:block/oak_dimensional_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_bottom_rh",
|
"parent": "block/door_bottom_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/oak_dimensional_door_upper"
|
"top": "dimdoors:block/oak_dimensional_door_upper",
|
||||||
|
"particle": "dimdoors:block/oak_dimensional_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_top",
|
"parent": "block/door_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/oak_dimensional_door_upper"
|
"top": "dimdoors:block/oak_dimensional_door_upper",
|
||||||
|
"particle": "dimdoors:block/oak_dimensional_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_top_rh",
|
"parent": "block/door_top_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
"bottom": "dimdoors:block/oak_dimensional_door_lower",
|
||||||
"top": "dimdoors:block/oak_dimensional_door_upper"
|
"top": "dimdoors:block/oak_dimensional_door_upper",
|
||||||
|
"particle": "dimdoors:block/oak_dimensional_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_bottom",
|
"parent": "block/door_bottom",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/quartz_door_lower",
|
"bottom": "dimdoors:block/quartz_door_lower",
|
||||||
"top": "dimdoors:block/quartz_door_upper"
|
"top": "dimdoors:block/quartz_door_upper",
|
||||||
|
"particle": "dimdoors:block/quartz_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_bottom_rh",
|
"parent": "block/door_bottom_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/quartz_door_lower",
|
"bottom": "dimdoors:block/quartz_door_lower",
|
||||||
"top": "dimdoors:block/quartz_door_upper"
|
"top": "dimdoors:block/quartz_door_upper",
|
||||||
|
"particle": "dimdoors:block/quartz_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_top",
|
"parent": "block/door_top",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/quartz_door_lower",
|
"bottom": "dimdoors:block/quartz_door_lower",
|
||||||
"top": "dimdoors:block/quartz_door_upper"
|
"top": "dimdoors:block/quartz_door_upper",
|
||||||
|
"particle": "dimdoors:block/quartz_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
"parent": "block/door_top_rh",
|
"parent": "block/door_top_rh",
|
||||||
"textures": {
|
"textures": {
|
||||||
"bottom": "dimdoors:block/quartz_door_lower",
|
"bottom": "dimdoors:block/quartz_door_lower",
|
||||||
"top": "dimdoors:block/quartz_door_upper"
|
"top": "dimdoors:block/quartz_door_upper",
|
||||||
|
"particle": "dimdoors:block/quartz_door_lower"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"parent": "dimdoors:block/dimensional_trapdoor_bottom"
|
|
||||||
}
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "item/generated",
|
||||||
|
"textures": {
|
||||||
|
"layer0": "dimdoors:item/rift_key"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "block/oak_trapdoor"
|
||||||
|
}
|
BIN
src/main/resources/assets/dimdoors/textures/item/rift_key.png
Normal file
BIN
src/main/resources/assets/dimdoors/textures/item/rift_key.png
Normal file
Binary file not shown.
After (image error) Size: 3.2 KiB |
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
"display": {
|
|
||||||
"icon": {
|
|
||||||
"item": "dimdoors:unravelled_fabric"
|
|
||||||
},
|
|
||||||
"title": {
|
|
||||||
"translate": "Space between Spaces"
|
|
||||||
},
|
|
||||||
"description": {
|
|
||||||
"translate": "advancements.end.root.description"
|
|
||||||
},
|
|
||||||
"background": "minecraft:textures/gui/advancements/backgrounds/end.png",
|
|
||||||
"show_toast": true,
|
|
||||||
"announce_to_chat": true
|
|
||||||
},
|
|
||||||
"criteria": {
|
|
||||||
"entered_end": {
|
|
||||||
"trigger": "minecraft:changed_dimension",
|
|
||||||
"conditions": {
|
|
||||||
"to": "private_pockets"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "dimdoors:dimdoors/root",
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "dimdoors:gold_dimensional_door"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "dimdoors.advancement.dungeon"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "dimdoors.advancement.dungeon.desc"
|
||||||
|
},
|
||||||
|
"frame": "task",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false,
|
||||||
|
"background": "dimdoors:textures/block/unravelled_fabric.png"
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"changed_dimension": {
|
||||||
|
"trigger": "minecraft:changed_dimension",
|
||||||
|
"conditions": {
|
||||||
|
"to": "dimdoors:dungeon_pockets"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"changed_dimension"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "dimdoors:dimdoors/limbo",
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "dimdoors:eternal_fluid_bucket"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "dimdoors.advancement.escape_limbo"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "dimdoors.advancement.escape_limbo.desc"
|
||||||
|
},
|
||||||
|
"frame": "task",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false,
|
||||||
|
"background": "dimdoors:textures/block/unravelled_fabric.png"
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"changed_dimension": {
|
||||||
|
"trigger": "minecraft:changed_dimension",
|
||||||
|
"conditions": {
|
||||||
|
"from": "dimdoors:limbo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"changed_dimension"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "dimdoors:dimdoors/root",
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "dimdoors:unravelled_fabric"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "dimdoors.advancement.limbo"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "dimdoors.advancement.limbo.desc"
|
||||||
|
},
|
||||||
|
"frame": "task",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false,
|
||||||
|
"background": "dimdoors:textures/block/unravelled_fabric.png"
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"changed_dimension": {
|
||||||
|
"trigger": "minecraft:changed_dimension",
|
||||||
|
"conditions": {
|
||||||
|
"to": "dimdoors:limbo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"changed_dimension"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "dimdoors:dimdoors/root",
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "dimdoors:quartz_dimensional_door"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "dimdoors.advancement.private_pocket"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "dimdoors.advancement.private_pocket.desc"
|
||||||
|
},
|
||||||
|
"frame": "task",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false,
|
||||||
|
"background": "dimdoors:textures/block/unravelled_fabric.png"
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"changed_dimension": {
|
||||||
|
"trigger": "minecraft:changed_dimension",
|
||||||
|
"conditions": {
|
||||||
|
"to": "dimdoors:personal_pockets"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"changed_dimension"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "dimdoors:dimdoors/root",
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "dimdoors:iron_dimensional_door"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "dimdoors.advancement.public_pocket"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "dimdoors.advancement.public_pocket.desc"
|
||||||
|
},
|
||||||
|
"frame": "task",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false,
|
||||||
|
"background": "dimdoors:textures/block/unravelled_fabric.png"
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"changed_dimension": {
|
||||||
|
"trigger": "minecraft:changed_dimension",
|
||||||
|
"conditions": {
|
||||||
|
"to": "dimdoors:public_pockets"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"changed_dimension"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"display": {
|
||||||
|
"icon": {
|
||||||
|
"item": "dimdoors:rift_blade",
|
||||||
|
"nbt": "{Damage:0}"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"translate": "dimdoors.advancement.root"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"translate": "dimdoors.advancement.root.desc"
|
||||||
|
},
|
||||||
|
"frame": "task",
|
||||||
|
"show_toast": true,
|
||||||
|
"announce_to_chat": true,
|
||||||
|
"hidden": false,
|
||||||
|
"background": "dimdoors:textures/block/unravelled_fabric.png"
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "minecraft:ender_pearl"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:black_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:black_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:blue_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:blue_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:brown_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:brown_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:cyan_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:cyan_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:gray_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:gray_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:green_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:green_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:light_blue_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:light_blue_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:light_gray_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:light_gray_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:lime_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:lime_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:magenta_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:magenta_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:orange_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:orange_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:pink_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:pink_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:purple_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:purple_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:red_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:red_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:white_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:white_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:recipes/root",
|
||||||
|
"rewards": {
|
||||||
|
"recipes": [
|
||||||
|
"dimdoors:yellow_fabric"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"criteria": {
|
||||||
|
"inventory_changed": {
|
||||||
|
"trigger": "minecraft:inventory_changed",
|
||||||
|
"conditions": {
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"item": "dimdoors:world_thread"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"has_the_recipe": {
|
||||||
|
"trigger": "minecraft:recipe_unlocked",
|
||||||
|
"conditions": {
|
||||||
|
"recipe": "dimdoors:yellow_fabric"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirements": [
|
||||||
|
[
|
||||||
|
"inventory_changed",
|
||||||
|
"has_the_recipe"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:black_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:blue_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:brown_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:cyan_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:gold_dimensional_door"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:gold_door"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:gray_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:green_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:unstable_dimensional_door"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:light_blue_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:light_gray_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:lime_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:magenta_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:marking_plate"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:oak_dimensional_door"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:orange_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:pink_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:purple_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:quartz_dimensional_door"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:quartz_door"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:red_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:white_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:wood_dimensional_trapdoor"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:survives_explosion"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"type": "minecraft:block",
|
||||||
|
"pools": [
|
||||||
|
{
|
||||||
|
"rolls": 1.0,
|
||||||
|
"bonus_rolls": 0.0,
|
||||||
|
"entries": [
|
||||||
|
{
|
||||||
|
"type": "minecraft:item",
|
||||||
|
"name": "dimdoors:yellow_fabric"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"condition": "minecraft:match_tool",
|
||||||
|
"predicate": {
|
||||||
|
"enchantments": [
|
||||||
|
{
|
||||||
|
"enchantment": "minecraft:silk_touch",
|
||||||
|
"levels": {
|
||||||
|
"min": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"type": "dimdoors:schematic",
|
||||||
|
"id": "v2/custom/lantredom",
|
||||||
|
"modifiers": [
|
||||||
|
{
|
||||||
|
"type": "dimdoors:rift_data",
|
||||||
|
"ids": [0],
|
||||||
|
"rift_data": "rift_data/pocket_entrance"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dimdoors:rift_data",
|
||||||
|
"ids": [2],
|
||||||
|
"rift_data": "rift_data/available_link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dimdoors:relative",
|
||||||
|
"point_a": 1,
|
||||||
|
"point_b": 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"type": "dimdoors:schematic",
|
||||||
|
"id": "v2/custom/lantredom_end",
|
||||||
|
"modifiers": [
|
||||||
|
{
|
||||||
|
"type": "dimdoors:rift_data",
|
||||||
|
"ids": [0],
|
||||||
|
"rift_data": "rift_data/pocket_entrance"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dimdoors:rift_data",
|
||||||
|
"ids": [2],
|
||||||
|
"rift_data": "rift_data/available_link"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dimdoors:relative",
|
||||||
|
"point_a": 1,
|
||||||
|
"point_b": 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue