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
|
@ -115,10 +115,12 @@ dependencies {
|
|||
}
|
||||
modCompileOnly '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.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')
|
||||
}
|
||||
|
@ -155,7 +157,7 @@ curseforge {
|
|||
releaseType = 'alpha'
|
||||
addGameVersion '1.17'
|
||||
mainArtifact(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar")) {
|
||||
displayName = "[${project.minecraft_version}] Dimensional Doors ${version}"
|
||||
displayName = "[21w06a] Dimensional Doors ${version}"
|
||||
}
|
||||
afterEvaluate {
|
||||
uploadTask.dependsOn("remapJar")
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
minecraft_version=1.16.4
|
||||
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
|
||||
mod_version=4.0.0+alpha.2
|
||||
|
||||
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;
|
||||
|
||||
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.item.ModItems;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.util.DyeColor;
|
||||
import net.minecraft.Bootstrap;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
|
||||
public class DatagenInitializer {
|
||||
public static void main(String[] args) {
|
||||
ModBlocks.init();
|
||||
ModItems.init();
|
||||
DataGeneratorHandler handler = DataGeneratorHandler.create(Paths.get("./generated"));
|
||||
RecipeData recipes = handler.getRecipes();
|
||||
for (Map.Entry<DyeColor, Block> entry : ModBlocks.FABRIC_BLOCKS.entrySet()) {
|
||||
// TODO
|
||||
import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint;
|
||||
|
||||
public class DatagenInitializer implements PreLaunchEntrypoint {
|
||||
public static RecipeConsumer RECIPE_CONSUMER;
|
||||
public static LootTableConsumer LOOT_TABLE_CONSUMER;
|
||||
|
||||
// How to run the data generator:-
|
||||
// - 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
|
||||
public int gatewayGenChance = 200;
|
||||
@RequiresRestart
|
||||
public List<Integer> clusterDimBlacklist = new LinkedList<>();
|
||||
public List<String> clusterDimBlacklist = new LinkedList<>();
|
||||
@RequiresRestart
|
||||
public List<Integer> gatewayDimBlacklist = new LinkedList<>();
|
||||
public List<String> gatewayDimBlacklist = new LinkedList<>();
|
||||
}
|
||||
|
||||
public static class Dungeons {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package org.dimdev.dimdoors.block;
|
||||
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
||||
import org.dimdev.dimdoors.block.entity.DetachedRiftBlockEntity;
|
||||
import org.dimdev.dimdoors.block.entity.EntranceRiftBlockEntity;
|
||||
import org.dimdev.dimdoors.util.math.MathUtil;
|
||||
|
@ -37,8 +39,6 @@ public class DimensionalDoorBlock extends DoorBlock implements RiftProvider<Entr
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// TODO: replace with dimdoor cooldown?
|
||||
if (entity.hasNetherPortalCooldown()) {
|
||||
entity.resetNetherPortalCooldown();
|
||||
|
@ -46,10 +46,16 @@ public class DimensionalDoorBlock extends DoorBlock implements RiftProvider<Entr
|
|||
}
|
||||
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
|
||||
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 static DirectionProperty FACING = HorizontalFacingBlock.FACING;
|
||||
|
||||
public DimensionalPortalBlock(Settings settings) {
|
||||
super(settings);
|
||||
setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH));
|
||||
this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -52,18 +53,18 @@ public class DimensionalPortalBlock extends Block implements RiftProvider<Entran
|
|||
|
||||
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());
|
||||
((DetachedRiftBlockEntity) world.getBlockEntity(pos)).setData(rift.getData());
|
||||
}
|
||||
|
||||
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) {
|
||||
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) {
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
package org.dimdev.dimdoors.block;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockEntityProvider;
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -19,11 +16,10 @@ import net.minecraft.util.math.BlockPos;
|
|||
import net.minecraft.world.World;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import org.dimdev.dimdoors.util.InstanceMap;
|
||||
|
||||
public class FabricBlock extends Block {
|
||||
FabricBlock(DyeColor color) {
|
||||
super(FabricBlockSettings.of(Material.STONE, color).lightLevel(15));
|
||||
super(FabricBlockSettings.of(Material.STONE, color).strength(1.2F).luminance(15));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -16,22 +16,23 @@ import net.fabricmc.api.EnvType;
|
|||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
|
||||
|
||||
public final class ModBlocks {
|
||||
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> 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 QUARTZ_DOOR = register("dimdoors:quartz_door", new DoorBlock(FabricBlockSettings.of(Material.STONE, MapColor.OFF_WHITE).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 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 GOLD_DIMENSIONAL_DOOR = register("dimdoors:gold_dimensional_door", new DimensionalDoorBlock(FabricBlockSettings.of(Material.METAL, MapColor.GOLD).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).nonOpaque().lightLevel(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 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).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).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).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).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).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).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 DETACHED_RIFT = register("dimdoors:detached_rift", new DetachedRiftBlock(FabricBlockSettings.of(Material.AIR).noCollision().nonOpaque()));
|
||||
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).strength(-1.0F, 3600000.0F).noCollision().nonOpaque()));
|
||||
|
||||
public static final Block WHITE_FABRIC = registerFabric("dimdoors:white_fabric", DyeColor.WHITE);
|
||||
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 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 UNRAVELLED_FABRIC = register("dimdoors:unravelled_fabric", new UnravelledFabricBlock(FabricBlockSettings.of(Material.STONE, MapColor.BLACK).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).ticksRandomly().luminance(15)));
|
||||
|
||||
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)
|
||||
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) {
|
||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.block.BlockState;
|
|||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Direction;
|
||||
import net.minecraft.world.TickPriority;
|
||||
import net.minecraft.world.WorldAccess;
|
||||
|
||||
public class UnravelledFabricBlock extends Block {
|
||||
|
@ -37,7 +38,7 @@ public class UnravelledFabricBlock extends Block {
|
|||
@Override
|
||||
public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) {
|
||||
if (world instanceof ServerWorld) {
|
||||
this.randomTick(state, (ServerWorld) world, pos, new Random());
|
||||
world.getBlockTickScheduler().schedule(pos, this, 10, TickPriority.NORMAL);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
|
|
@ -5,15 +5,16 @@ import net.minecraft.util.math.Direction;
|
|||
import net.minecraft.util.math.Vec3f;
|
||||
|
||||
public enum DefaultTransformation implements Transformer {
|
||||
NONE {
|
||||
DOWN {
|
||||
@Override
|
||||
public void transform(MatrixStack matrices) {
|
||||
|
||||
}
|
||||
},
|
||||
DIMENSIONAL_PORTAL {
|
||||
UP {
|
||||
@Override
|
||||
public void transform(MatrixStack matrices) {
|
||||
matrices.translate(0, 0, 0.5F);
|
||||
|
||||
}
|
||||
},
|
||||
NORTH_DOOR {
|
||||
|
@ -43,6 +44,17 @@ public enum DefaultTransformation implements Transformer {
|
|||
matrices.multiply(Vec3f.NEGATIVE_Y.getDegreesQuaternion(90.0F));
|
||||
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();
|
||||
|
|
|
@ -8,6 +8,9 @@ import org.dimdev.dimdoors.DimensionalDoorsInitializer;
|
|||
import org.dimdev.dimdoors.entity.MonolithEntity;
|
||||
import org.dimdev.dimdoors.item.ModItems;
|
||||
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.goal.Goal;
|
||||
|
@ -18,6 +21,8 @@ import net.minecraft.sound.SoundCategory;
|
|||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
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 org.dimdev.dimdoors.entity.MonolithEntity.MAX_AGGRO;
|
||||
|
||||
|
@ -65,7 +70,7 @@ public class MonolithAggroGoal extends Goal {
|
|||
Random random = new Random();
|
||||
int i = random.nextInt(64);
|
||||
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(1).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());
|
||||
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
|
||||
if (this.mob.getAggro() >= MAX_AGGRO && DimensionalDoorsInitializer.getConfig().getMonolithsConfig().monolithTeleportation && !this.target.isCreative() && this.mob.isDangerous()) {
|
||||
this.mob.setAggro(0);
|
||||
//Location destination = LimboDimension.getLimboSkySpawn(player);
|
||||
//TeleportUtil.teleport(player, destination, 0, 0);
|
||||
this.target.teleport(this.target.getX(), this.target.getY() + 256, this.target.getZ());
|
||||
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")
|
||||
public static final Item UNSTABLE_DIMENSIONAL_DOOR = create(new DimensionalDoorItem(
|
||||
ModBlocks.IRON_DIMENSIONAL_DOOR,
|
||||
|
@ -122,7 +121,9 @@ public final class ModItems {
|
|||
.negativeDepthFactor(80)
|
||||
.positiveDepthFactor(Double.MAX_VALUE)
|
||||
.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(
|
||||
ModBlocks.OAK_DIMENSIONAL_TRAPDOOR,
|
||||
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")
|
||||
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")
|
||||
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")
|
||||
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.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);
|
||||
} else if (RaycastHelper.hitsDetachedRift(hit, world)) {
|
||||
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) {
|
||||
if (DimensionalDoorsInitializer.getConfig()
|
||||
.getWorldConfig()
|
||||
.gatewayDimBlacklist
|
||||
.contains(world.toServerWorld().getRegistryKey().getValue().toString())
|
||||
) {
|
||||
return;
|
||||
}
|
||||
if (!this.replaced) {
|
||||
TemplateUtils.replacePlaceholders(this.schematic, world);
|
||||
this.replaced = true;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
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.nbt.CompoundTag;
|
||||
|
||||
public class Counter implements Component {
|
||||
public class Counter implements ComponentV3 {
|
||||
private final ItemStack stack;
|
||||
private int counter;
|
||||
|
||||
|
|
|
@ -10,11 +10,11 @@ import dev.onyxstudios.cca.api.v3.level.LevelComponentFactoryRegistry;
|
|||
import dev.onyxstudios.cca.api.v3.level.LevelComponentInitializer;
|
||||
import org.dimdev.dimdoors.item.ModItems;
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
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<Counter> COUNTER_COMPONENT_KEY = ComponentRegistryV3.INSTANCE.getOrCreate(new Identifier("dimdoors:counter"), Counter.class);
|
||||
|
||||
|
||||
@Override
|
||||
public void registerLevelComponentFactories(LevelComponentFactoryRegistry registry) {
|
||||
registry.register(DIMENSIONAL_REGISTRY_COMPONENT_KEY, level -> new DimensionalRegistry());
|
||||
|
|
|
@ -195,5 +195,17 @@
|
|||
"dimdoors.config.screen.reload": "Reload Config",
|
||||
"dimdoors.linkProperties.oneWay": "One way: %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.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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper"
|
||||
}
|
||||
"parent": "block/door_bottom",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper",
|
||||
"particle": "dimdoors:block/gold_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"parent": "block/door_bottom_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper"
|
||||
}
|
||||
"parent": "block/door_bottom_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper",
|
||||
"particle": "dimdoors:block/gold_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"parent": "block/door_top",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper"
|
||||
}
|
||||
"parent": "block/door_top",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper",
|
||||
"particle": "dimdoors:block/gold_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"parent": "block/door_top_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper"
|
||||
}
|
||||
"parent": "block/door_top_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/gold_door_lower",
|
||||
"top": "dimdoors:block/gold_door_upper",
|
||||
"particle": "dimdoors:block/gold_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"parent": "block/door_bottom",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
||||
}
|
||||
"parent": "block/door_bottom",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"parent": "block/door_bottom_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
||||
}
|
||||
"parent": "block/door_bottom_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"parent": "block/door_top",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
||||
}
|
||||
"parent": "block/door_top",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
{
|
||||
"parent": "block/door_top_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper"
|
||||
}
|
||||
"parent": "block/door_top_rh",
|
||||
"textures": {
|
||||
"bottom": "dimdoors:block/iron_dimensional_door_lower",
|
||||
"top": "dimdoors:block/iron_dimensional_door_upper",
|
||||
"particle": "dimdoors:block/iron_dimensional_door_lower"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
"parent": "block/door_bottom",
|
||||
"textures": {
|
||||
"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",
|
||||
"textures": {
|
||||
"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",
|
||||
"textures": {
|
||||
"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",
|
||||
"textures": {
|
||||
"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",
|
||||
"textures": {
|
||||
"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",
|
||||
"textures": {
|
||||
"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",
|
||||
"textures": {
|
||||
"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",
|
||||
"textures": {
|
||||
"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 Width: | Height: | 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…
Reference in a new issue