Merge remote-tracking branch 'origin/1.17' into 1.17

This commit is contained in:
CreepyCre 2021-02-16 03:50:36 +01:00
commit 9d2c22bdf9
55 changed files with 691 additions and 35 deletions

View file

@ -84,7 +84,11 @@ dependencies {
includeCompile("io.github.BoogieMonster1O1", "OpenWorlds", "c57e3ef")
includeCompile("io.github.cottonmc", "LibGui", "3.3.2+1.16.4")
includeCompile("me.shedaniel.cloth", "config-2", "5.0.0")
includeCompile("io.github.onyxstudios", "Cardinal-Components-API", "3.0.0-nightly.20w48a")
includeCompile("io.github.onyxstudios.Cardinal-Components-API", "cardinal-components-base", "3.0.0-nightly.21w06a")
includeCompile("io.github.onyxstudios.Cardinal-Components-API", "cardinal-components-item", "3.0.0-nightly.21w06a")
includeCompile("io.github.onyxstudios.Cardinal-Components-API", "cardinal-components-level", "3.0.0-nightly.21w06a")
includeCompile("io.github.onyxstudios.Cardinal-Components-API", "cardinal-components-util", "3.0.0-nightly.21w06a")
includeCompile("io.github.onyxstudios.Cardinal-Components-API", "cardinal-components-world", "3.0.0-nightly.21w06a")
includeCompile("me.sargunvohra.mcmods", "autoconfig1u", "3.3.1")
includeCompile("dev.hephaestus", "seedy-behavior", "1.0.1")
@ -105,7 +109,7 @@ archivesBaseName = "DimensionalDoors"
static def computeVersion(String version) {
if (version.contains("alpha")) {
return version + "." + Calendar.getInstance().getTime().format("dd.MM.yyyy")
return version + "-" + Calendar.getInstance().getTime().format("dd.MM.yyyy")
}
return version
}
@ -138,7 +142,7 @@ curseforge {
}
project {
id = '284876'
changelog = 'This is a test release. Please back up your worlds before loading this mod. A changelog can be found at https://github.com/DimensionalDevelopment/DimDoors/commits/1.17'
changelog = 'FOR TESTING ONLY. A changelog can be found at https://github.com/DimensionalDevelopment/DimDoors/commits/1.17'
releaseType = 'alpha'
addGameVersion '1.17'
mainArtifact(file("${project.buildDir}/libs/${archivesBaseName}-${version}.jar")) {

View file

@ -4,6 +4,6 @@ loader_version=0.10.8
fabric_version=0.29.3+1.16
mod_version=4.0.0+beta
mod_version=4.0.0+alpha.1
org.gradle.jvmargs=-Xmx2048m

View file

@ -71,8 +71,6 @@ public final class ModConfig implements ConfigData {
public double riftCloseSpeed = 0.005;
public double riftGrowthSpeed = 1;
public int depthSpreadFactor = 20;
@RequiresRestart
public boolean useEnderPearlsInCrafting = false;
public double endermanSpawnChance = 0.001;
public double endermanAggressiveChance = 0.5;
}

View file

@ -95,13 +95,21 @@ public final class ModItems {
}
));
// public static final Item UNSTABLE_DIMENSIONAL_DOOR = register( new DimensionalDoorItem(
// ModBlocks.IRON_DIMENSIONAL_DOOR,
// new Item.Settings().group(DIMENSIONAL_DOORS).maxCount(1),
// rift -> {
// TODO
// }
// ));
// TODO
@RegistryObject("unstable_dimensional_door")
public static final Item UNSTABLE_DIMENSIONAL_DOOR = create(new DimensionalDoorItem(
ModBlocks.IRON_DIMENSIONAL_DOOR,
new Item.Settings().group(DIMENSIONAL_DOORS).maxCount(1),
rift -> rift.setDestination(RandomTarget.builder()
.acceptedGroups(Collections.singleton(0))
.coordFactor(1)
.negativeDepthFactor(80)
.positiveDepthFactor(Double.MAX_VALUE)
.weightMaximum(100)
.noLink(false)
.noLinkBack(false)
.newRiftWeight(0.5F).build())
));
@RegistryObject("oak_dimensional_door")
public static final Item OAK_DIMENSIONAL_DOOR = create(new DimensionalDoorItem(

View file

@ -101,7 +101,8 @@ public class SchematicV2Handler {
loadJson(directoryPath, directoryIdParts, loader);
}
} catch (IOException e) {
LOGGER.error("could not load pocket data in path " + path.toString() + " due to malformed json.", e);
LOGGER.error("Could not load pocket data in path {}", path.toAbsolutePath());
LOGGER.error("Stacktrace: ", e);
}
} else if(Files.isRegularFile(path) && path.getFileName().toString().endsWith(".json")) {
String id = String.join("/", idParts);
@ -109,7 +110,12 @@ public class SchematicV2Handler {
JsonElement json = GSON.fromJson(String.join("", Files.readAllLines(path)), JsonElement.class);
loader.accept(id, JsonOps.INSTANCE.convertTo(NbtOps.INSTANCE, json));
} catch (IOException e) {
LOGGER.error("could not load pocket data in path " + path.toString() + " due to malformed json.", e);
LOGGER.error("Could not load pocket data in path {}", path.toAbsolutePath());
LOGGER.error("Stacktrace: ", e);
} catch (RuntimeException e) {
LOGGER.error("Error parsing schematic json");
LOGGER.error("Erroring path: {}", path.toAbsolutePath());
throw e;
}
}
}

View file

@ -39,9 +39,9 @@ public abstract class PocketGenerator implements Weighted<PocketGenerationParame
private static final int fallbackWeight = 5; // TODO: make config
private final List<Modifier> modifierList = new ArrayList<>();
private String weight;
private Equation weightEquation;
private Boolean setupLoot;
protected String weight;
protected Equation weightEquation;
protected Boolean setupLoot;
private final List<String> tags = new ArrayList<>();

View file

@ -14,6 +14,8 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry;
import com.google.common.base.MoreObjects;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dimdev.dimdoors.block.DimensionalDoorBlock;
@ -98,6 +100,23 @@ public class DimensionalDoorModifier implements Modifier {
return tag;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("facing", facing)
.add("doorTypeString", doorTypeString)
.add("doorType", doorType)
.add("doorData", doorData)
.add("doorDataReference", doorDataReference)
.add("x", x)
.add("y", y)
.add("z", z)
.add("xEquation", xEquation)
.add("yEquation", yEquation)
.add("zEquation", zEquation)
.toString();
}
@Override
public ModifierType<? extends Modifier> getType() {
return ModifierType.DIMENSIONAL_DOOR_MODIFIER_TYPE;

View file

@ -19,7 +19,6 @@ import java.util.function.Supplier;
public interface Modifier {
Registry<ModifierType<? extends Modifier>> REGISTRY = FabricRegistryBuilder.from(new SimpleRegistry<ModifierType<? extends Modifier>>(RegistryKey.ofRegistry(new Identifier("dimdoors", "modifier_type")), Lifecycle.stable())).buildAndRegister();
static Modifier deserialize(CompoundTag tag) {
Identifier id = Identifier.tryParse(tag.getString("type")); // TODO: return some NONE Modifier if type cannot be found or deserialization fails.
return REGISTRY.get(id).fromTag(tag);

View file

@ -6,6 +6,7 @@ import java.util.Map;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import com.google.common.base.MoreObjects;
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
import org.dimdev.dimdoors.rift.registry.PocketEntrancePointer;
import org.dimdev.dimdoors.rift.targets.PocketEntranceMarker;
@ -40,6 +41,12 @@ public class PocketEntranceModifier implements Modifier {
return tag;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("id", id)
.toString();
}
@Override
public ModifierType<? extends Modifier> getType() {

View file

@ -5,6 +5,7 @@ import java.util.Optional;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.world.ServerWorld;
import com.google.common.base.MoreObjects;
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
import org.dimdev.dimdoors.rift.targets.LocalReference;
import org.dimdev.dimdoors.rift.targets.RiftReference;
@ -55,6 +56,14 @@ public class RelativeReferenceModifier implements Modifier {
}
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("point_a", point_a)
.add("point_b", point_b)
.toString();
}
private boolean addLink(RiftBlockEntity rift, RiftReference link) {
rift.setDestination(link);
return true;

View file

@ -11,6 +11,8 @@ import java.util.stream.IntStream;
import net.minecraft.nbt.CompoundTag;
import net.fabricmc.fabric.api.util.NbtType;
import com.google.common.base.MoreObjects;
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
import org.dimdev.dimdoors.block.entity.RiftData;
import org.dimdev.dimdoors.pockets.SchematicV2Handler;
@ -70,6 +72,15 @@ public class RiftDataModifier implements Modifier {
return KEY;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("doorData", doorData)
.add("doorDataReference", doorDataReference)
.add("ids", ids)
.toString();
}
@Override
public void apply(PocketGenerationParameters parameters, RiftManager manager) {
Map<String, Double> variableMap = manager.getPocket().toVariableMap(new HashMap<>());

View file

@ -5,6 +5,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.base.MoreObjects;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.block.BlockState;
import net.minecraft.nbt.*;
@ -22,7 +23,7 @@ import org.dimdev.dimdoors.util.math.Equation;
import org.dimdev.dimdoors.util.schematic.v2.SchematicBlockPalette;
import org.dimdev.dimdoors.world.pocket.Pocket;
public class ShellModifier implements Modifier{
public class ShellModifier implements Modifier {
private static final Logger LOGGER = LogManager.getLogger();
public static final String KEY = "shell";
@ -97,6 +98,13 @@ public class ShellModifier implements Modifier{
pocket.expand(thickness);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("layers", layers)
.toString();
}
public static class Layer {
private final String blockStateString;
private final String thickness;
@ -136,4 +144,3 @@ public class ShellModifier implements Modifier{
}
}
}

View file

@ -1,6 +1,8 @@
package org.dimdev.dimdoors.pockets.virtual.reference;
import net.minecraft.nbt.CompoundTag;
import com.google.common.base.MoreObjects;
import org.dimdev.dimdoors.pockets.SchematicV2Handler;
import org.dimdev.dimdoors.pockets.generator.PocketGenerator;
import org.dimdev.dimdoors.pockets.virtual.VirtualSingularPocket;
@ -49,4 +51,14 @@ public class IdReference extends PocketGeneratorReference {
return KEY;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("id", id)
.add("weight", weight)
.add("weightEquation", weightEquation)
.add("setupLoot", setupLoot)
.add("modifierList", modifierList)
.toString();
}
}

View file

@ -1,12 +1,11 @@
package org.dimdev.dimdoors.pockets.virtual.reference;
import java.util.List;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dimdev.dimdoors.pockets.generator.PocketGenerator;
import org.dimdev.dimdoors.pockets.modifier.Modifier;
import org.dimdev.dimdoors.pockets.modifier.RiftManager;
@ -16,17 +15,18 @@ import org.dimdev.dimdoors.util.math.Equation;
import org.dimdev.dimdoors.util.math.Equation.EquationParseException;
import org.dimdev.dimdoors.world.pocket.Pocket;
import java.util.List;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
public abstract class PocketGeneratorReference extends VirtualSingularPocket {
private static final Logger LOGGER = LogManager.getLogger();
private static final String defaultWeightEquation = "5"; // TODO: make config
private static final int fallbackWeight = 5; // TODO: make config
private String weight;
private Equation weightEquation;
private Boolean setupLoot;
private final List<Modifier> modifierList = Lists.newArrayList();
protected String weight;
protected Equation weightEquation;
protected Boolean setupLoot;
protected final List<Modifier> modifierList = Lists.newArrayList();
private void parseWeight() {
try {
@ -80,7 +80,12 @@ public abstract class PocketGeneratorReference extends VirtualSingularPocket {
@Override
public double getWeight(PocketGenerationParameters parameters) {
return weightEquation != null ? this.weightEquation.apply(parameters.toVariableMap(Maps.newHashMap())) : peekReferencedPocketGenerator(parameters).getWeight(parameters);
try {
return weightEquation != null ? this.weightEquation.apply(parameters.toVariableMap(Maps.newHashMap())) : peekReferencedPocketGenerator(parameters).getWeight(parameters);
} catch (RuntimeException e) {
LOGGER.error(this.toString());
throw new AssertionError(e);
}
}
public void applyModifiers(PocketGenerationParameters parameters, RiftManager manager) {
@ -116,4 +121,7 @@ public abstract class PocketGeneratorReference extends VirtualSingularPocket {
public abstract PocketGenerator peekReferencedPocketGenerator(PocketGenerationParameters parameters);
public abstract PocketGenerator getReferencedPocketGenerator(PocketGenerationParameters parameters);
@Override
public abstract String toString();
}

View file

@ -4,6 +4,8 @@ import net.fabricmc.fabric.api.util.NbtType;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.StringTag;
import com.google.common.base.MoreObjects;
import org.dimdev.dimdoors.pockets.SchematicV2Handler;
import org.dimdev.dimdoors.pockets.generator.PocketGenerator;
import org.dimdev.dimdoors.pockets.virtual.VirtualSingularPocket;
@ -94,4 +96,18 @@ public class TagReference extends PocketGeneratorReference{
if (pockets == null) pockets = SchematicV2Handler.getInstance().getPocketsMatchingTags(required, blackList, exact);
return pockets.getNextRandomWeighted(parameters);
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("weight", weight)
.add("weightEquation", weightEquation)
.add("setupLoot", setupLoot)
.add("modifierList", modifierList)
.add("required", required)
.add("blackList", blackList)
.add("exact", exact)
.add("pockets", pockets)
.toString();
}
}

View file

@ -9,14 +9,12 @@ import org.dimdev.dimdoors.world.pocket.VirtualLocation;
import net.minecraft.nbt.CompoundTag;
public class PublicPocketTarget extends RestoringTarget {
private VirtualTarget wrappedDestination = null;
private PublicPocketTarget(VirtualTarget wrappedDestination) {
this.wrappedDestination = wrappedDestination;
}
public PublicPocketTarget() {
}

View file

@ -93,6 +93,7 @@ public abstract class VirtualTarget implements Target {
VirtualTargetType<PrivatePocketExitTarget> PRIVATE_POCKET_EXIT = register("dimdoors:private_pocket_exit", a -> new PrivatePocketExitTarget(), a -> new CompoundTag(), PrivatePocketExitTarget.COLOR);
VirtualTargetType<RelativeReference> RELATIVE = register("dimdoors:relative", RelativeReference::fromTag, RelativeReference::toTag, VirtualTarget.COLOR);
VirtualTargetType<IdMarker> ID_MARKER = register("dimdoors:id_marker", IdMarker::fromTag, IdMarker::toTag, VirtualTarget.COLOR);
VirtualTargetType<UnstableTarget> UNSTABLE = register("dimdoors:unstable", tag -> new UnstableTarget(), t -> new CompoundTag(), VirtualTarget.COLOR);
VirtualTargetType<NoneTarget> NONE = register("dimdoors:none", tag -> NoneTarget.INSTANCE, i -> new CompoundTag(), COLOR);
T fromTag(CompoundTag tag);

View file

@ -109,7 +109,8 @@
"commands.dimdoors.saveschem.success": "Pocket %s has been successfully saved",
"commands.generic.dimdoors.not_in_pocket_dim": "You must be in a pocket dimension to use this command.",
"commands.generic.dimdoors.not_in_pocket": "You must be in a pocket to use this command.",
"rifts.unlinked": "This rift doesn't lead anywhere",
"rifts.unlinked1": "This rift has closed",
"rifts.unlinked2": "This rift doesn't lead anywhere",
"rifts.destinations.escape.cannot_escape_limbo": "Nice try, but you'll need to either die or find some eternal fabric to get out of Limbo.",
"rifts.destinations.escape.not_in_pocket_dim": "You can only use this to escape from a pocket dimension!",
"rifts.destinations.escape.did_not_use_rift": "You didn't use a rift to enter the pocket dimension, so you ended up in Limbo!",

View file

@ -8,7 +8,7 @@
},
"settings": {
"bedrock_floor_position": 0,
"bedrock_roof_position": -1,
"bedrock_roof_position": -2147483648,
"noise_caves_enabled": true,
"aquifers_enabled": false,
"disable_mob_generation": false,

View file

@ -0,0 +1,24 @@
{
"type": "dimdoors:schematic",
"id": "v2/custom/cage_monolithless",
"setup_loot": true,
"modifiers": [
{
"layers": [
{
"block_state": "minecraft:barrier",
"thickness": "1"
}
],
"type": "dimdoors:shell"
},
{
"type": "dimdoors:rift_data",
"ids": [0],
"rift_data": "rift_data/pocket_entrance"
}
],
"offset_x": "1",
"offset_y": "1",
"offset_z": "1"
}

View file

@ -0,0 +1,16 @@
{
"type": "dimdoors:schematic",
"id": "v2/custom/chain_crossing",
"modifiers": [
{
"type": "dimdoors:rift_data",
"ids": [0],
"rift_data": "rift_data/pocket_entrance"
},
{
"type": "dimdoors:rift_data",
"ids": [1],
"rift_data": "rift_data/available_link"
}
]
}

View file

@ -0,0 +1,21 @@
{
"type": "dimdoors:schematic",
"id": "v2/custom/chain_t",
"modifiers": [
{
"type": "dimdoors:rift_data",
"ids": [0],
"rift_data": "rift_data/pocket_entrance"
},
{
"type": "dimdoors:rift_data",
"ids": [1],
"rift_data": "rift_data/available_link"
},
{
"type": "dimdoors:rift_data",
"ids": [2],
"rift_data": "rift_data/available_link"
}
]
}

View file

@ -0,0 +1,16 @@
{
"type": "dimdoors:schematic",
"id": "v2/custom/decaying_chain_tunnel",
"modifiers": [
{
"type": "dimdoors:rift_data",
"ids": [0],
"rift_data": "rift_data/pocket_entrance"
},
{
"type": "dimdoors:rift_data",
"ids": [1],
"rift_data": "rift_data/available_link"
}
]
}

View file

@ -0,0 +1,16 @@
{
"type": "dimdoors:schematic",
"id": "v2/custom/line_walker",
"modifiers": [
{
"type": "dimdoors:rift_data",
"ids": [0],
"rift_data": "rift_data/pocket_entrance"
},
{
"type": "dimdoors:rift_data",
"ids": [1],
"rift_data": "rift_data/available_link"
}
]
}

View file

@ -0,0 +1,24 @@
{
"type": "dimdoors:schematic",
"setup_loot": true,
"id": "v2/custom/smile_6",
"modifiers": [
{
"layers": [
{
"block_state": "dimdoors:yellow_ancient_fabric",
"thickness": "1"
}
],
"type": "dimdoors:shell"
},
{
"type": "dimdoors:rift_data",
"ids": [0],
"rift_data": "rift_data/pocket_entrance"
}
],
"offset_x": "1",
"offset_y": "1",
"offset_z": "1"
}

View file

@ -0,0 +1,22 @@
{
"type": "dimdoors:schematic",
"id": "v2/custom/white_fabric_maze",
"setup_loot": true,
"modifiers": [
{
"type": "dimdoors:rift_data",
"ids": [0],
"rift_data": "rift_data/pocket_entrance"
},
{
"type": "dimdoors:rift_data",
"ids": [1],
"rift_data": "rift_data/available_link"
},
{
"type": "dimdoors:rift_data",
"ids": [2],
"rift_data": "rift_data/available_link"
}
]
}

View file

@ -24,7 +24,7 @@
"type": "dimdoors:id"
},
{
"id": "custom/upwards_pillar",
"id": "custom/upwards_pillars",
"type": "dimdoors:id"
},
{
@ -84,5 +84,33 @@
{
"id": "custom/river_road_twin_bridges",
"type": "dimdoors:id"
},
{
"id": "custom/white_fabric_maze",
"type": "dimdoors:id"
},
{
"id": "custom/decaying_chain_tunnel",
"type": "dimdoors:id"
},
{
"id": "custom/cage_monolithless",
"type": "dimdoors:id"
},
{
"id": "custom/chain_t",
"type": "dimdoors:id"
},
{
"id": "custom/line_walker",
"type": "dimdoors:id"
},
{
"id": "custom/chain_crossing",
"type": "dimdoors:id"
},
{
"id": "custom/smile_6",
"type": "dimdoors:id"
}
]

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#X#"
],
"key": {
"#": {
"item": "dimdoors:gold_door"
},
"X": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:gold_dimensional_door",
"count": 1
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"##",
"##",
"##"
],
"key": {
"#": {
"item": "minecraft:gold_ingot"
}
},
"result": {
"item": "dimdoors:gold_door",
"count": 3
}
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#X#"
],
"key": {
"#": {
"item": "minecraft:iron_door"
},
"X": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:iron_dimensional_door",
"count": 1
}
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#X#"
],
"key": {
"#": {
"item": "dimdoors:quartz_door"
},
"X": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:quartz_dimensional_door",
"count": 1
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"##",
"##",
"##"
],
"key": {
"#": {
"item": "minecraft:quartz"
}
},
"result": {
"item": "dimdoors:quartz_door",
"count": 1
}
}

View file

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "minecraft:ender_pearl"
},
{
"item": "minecraft:iron_sword"
},
{
"item": "minecraft:ender_pearl"
}
],
"result": {
"item": "dimdoors:rift_blade"
}
}

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"#X#",
"###"
],
"key": {
"#": {
"item": "minecraft:gold_ingot"
},
"X": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:rift_remover",
"count": 1
}
}

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"###",
"#X#",
"###"
],
"key": {
"#": {
"item": "minecraft:iron_ingot"
},
"X": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:rift_signature",
"count": 1
}
}

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"# #",
" X ",
"# #"
],
"key": {
"X": {
"item": "minecraft:ender_pearl"
},
"#": {
"item": "minecraft:diamond"
}
},
"result": {
"item": "dimdoors:rift_stabilizer",
"count": 1
}
}

View file

@ -0,0 +1,20 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"# #",
" X ",
"# #"
],
"key": {
"X": {
"item": "dimdoors:rift_signature"
},
"#": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:stabilized_rift_signature",
"count": 1
}
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#X#"
],
"key": {
"#": {
"item": "minecraft:iron_door"
},
"X": {
"item": "minecraft:ender_eye"
}
},
"result": {
"item": "dimdoors:unstable_dimensional_door",
"count": 1
}
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#X#"
],
"key": {
"#": {
"tag": "#minecraft:wooden_doors"
},
"X": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:wood_dimensional_door",
"count": 1
}
}

View file

@ -0,0 +1,18 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"#X"
],
"key": {
"#": {
"tag": "#minecraft:wooden_trapdoors"
},
"X": {
"item": "minecraft:ender_pearl"
}
},
"result": {
"item": "dimdoors:wood_dimensional_trapdoor",
"count": 1
}
}

View file

@ -0,0 +1,15 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"X X",
"X X"
],
"key": {
"X": {
"item": "dimdoors:world_thread"
}
},
"result": {
"item": "dimdoors:world_thread_boots"
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"X X",
"XXX",
"XXX"
],
"key": {
"X": {
"item": "dimdoors:world_thread"
}
},
"result": {
"item": "dimdoors:world_thread_chestplate"
}
}

View file

@ -0,0 +1,15 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"XXX",
"X X"
],
"key": {
"X": {
"item": "dimdoors:world_thread"
}
},
"result": {
"item": "dimdoors:world_thread_helmet"
}
}

View file

@ -0,0 +1,16 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"XXX",
"X X",
"X X"
],
"key": {
"X": {
"item": "dimdoors:world_thread"
}
},
"result": {
"item": "dimdoors:world_thread_leggings"
}
}

View file

@ -0,0 +1,21 @@
{
"replace": false,
"values": [
"dimdoors:white_ancient_fabric",
"dimdoors:orange_ancient_fabric",
"dimdoors:magenta_ancient_fabric",
"dimdoors:light_blue_ancient_fabric",
"dimdoors:yellow_ancient_fabric",
"dimdoors:lime_ancient_fabric",
"dimdoors:pink_ancient_fabric",
"dimdoors:gray_ancient_fabric",
"dimdoors:light_gray_ancient_fabric",
"dimdoors:cyan_ancient_fabric",
"dimdoors:purple_ancient_fabric",
"dimdoors:blue_ancient_fabric",
"dimdoors:brown_ancient_fabric",
"dimdoors:green_ancient_fabric",
"dimdoors:red_ancient_fabric",
"dimdoors:black_ancient_fabric"
]
}

View file

@ -0,0 +1,21 @@
{
"replace": false,
"values": [
"dimdoors:white_fabric",
"dimdoors:orange_fabric",
"dimdoors:magenta_fabric",
"dimdoors:light_blue_fabric",
"dimdoors:yellow_fabric",
"dimdoors:lime_fabric",
"dimdoors:pink_fabric",
"dimdoors:gray_fabric",
"dimdoors:light_gray_fabric",
"dimdoors:cyan_fabric",
"dimdoors:purple_fabric",
"dimdoors:blue_fabric",
"dimdoors:brown_fabric",
"dimdoors:green_fabric",
"dimdoors:red_fabric",
"dimdoors:black_fabric"
]
}

View file

@ -0,0 +1,21 @@
{
"replace": false,
"values": [
"dimdoors:white_ancient_fabric",
"dimdoors:orange_ancient_fabric",
"dimdoors:magenta_ancient_fabric",
"dimdoors:light_blue_ancient_fabric",
"dimdoors:yellow_ancient_fabric",
"dimdoors:lime_ancient_fabric",
"dimdoors:pink_ancient_fabric",
"dimdoors:gray_ancient_fabric",
"dimdoors:light_gray_ancient_fabric",
"dimdoors:cyan_ancient_fabric",
"dimdoors:purple_ancient_fabric",
"dimdoors:blue_ancient_fabric",
"dimdoors:brown_ancient_fabric",
"dimdoors:green_ancient_fabric",
"dimdoors:red_ancient_fabric",
"dimdoors:black_ancient_fabric"
]
}

View file

@ -0,0 +1,21 @@
{
"replace": false,
"values": [
"dimdoors:white_fabric",
"dimdoors:orange_fabric",
"dimdoors:magenta_fabric",
"dimdoors:light_blue_fabric",
"dimdoors:yellow_fabric",
"dimdoors:lime_fabric",
"dimdoors:pink_fabric",
"dimdoors:gray_fabric",
"dimdoors:light_gray_fabric",
"dimdoors:cyan_fabric",
"dimdoors:purple_fabric",
"dimdoors:blue_fabric",
"dimdoors:brown_fabric",
"dimdoors:green_fabric",
"dimdoors:red_fabric",
"dimdoors:black_fabric"
]
}