add connection value RelativeReference
This commit is contained in:
parent
ac9ed0c4ee
commit
e76395199a
2 changed files with 36 additions and 7 deletions
|
@ -1,27 +1,30 @@
|
||||||
package org.dimdev.dimdoors.pockets.modifier;
|
package org.dimdev.dimdoors.pockets.modifier;
|
||||||
|
|
||||||
import java.util.Optional;
|
import com.google.common.base.MoreObjects;
|
||||||
import net.minecraft.nbt.NbtCompound;
|
import net.minecraft.nbt.NbtCompound;
|
||||||
import net.minecraft.resource.ResourceManager;
|
import net.minecraft.resource.ResourceManager;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
|
import net.minecraft.util.StringIdentifiable;
|
||||||
import com.google.common.base.MoreObjects;
|
import org.dimdev.dimdoors.api.util.Location;
|
||||||
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
|
import org.dimdev.dimdoors.block.entity.RiftBlockEntity;
|
||||||
|
import org.dimdev.dimdoors.pockets.PocketGenerationContext;
|
||||||
import org.dimdev.dimdoors.rift.targets.LocalReference;
|
import org.dimdev.dimdoors.rift.targets.LocalReference;
|
||||||
import org.dimdev.dimdoors.rift.targets.RiftReference;
|
import org.dimdev.dimdoors.rift.targets.RiftReference;
|
||||||
import org.dimdev.dimdoors.api.util.Location;
|
|
||||||
import org.dimdev.dimdoors.pockets.PocketGenerationContext;
|
|
||||||
import org.dimdev.dimdoors.world.pocket.type.Pocket;
|
import org.dimdev.dimdoors.world.pocket.type.Pocket;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class RelativeReferenceModifier extends AbstractModifier {
|
public class RelativeReferenceModifier extends AbstractModifier {
|
||||||
public static final String KEY = "relative";
|
public static final String KEY = "relative";
|
||||||
|
|
||||||
private int point_a, point_b;
|
private int point_a, point_b;
|
||||||
|
private ConnectionType connection = ConnectionType.BOTH;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Modifier fromNbt(NbtCompound nbt, ResourceManager manager) {
|
public Modifier fromNbt(NbtCompound nbt, ResourceManager manager) {
|
||||||
point_a = nbt.getInt("point_a");
|
point_a = nbt.getInt("point_a");
|
||||||
point_b = nbt.getInt("point_b");
|
point_b = nbt.getInt("point_b");
|
||||||
|
connection = nbt.contains("connection") ? ConnectionType.valueOf(nbt.getString("connection")) : ConnectionType.BOTH;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,6 +33,7 @@ public class RelativeReferenceModifier extends AbstractModifier {
|
||||||
super.toNbtInternal(nbt, allowReference);
|
super.toNbtInternal(nbt, allowReference);
|
||||||
nbt.putInt("point_a", point_a);
|
nbt.putInt("point_a", point_a);
|
||||||
nbt.putInt("point_b", point_b);
|
nbt.putInt("point_b", point_b);
|
||||||
|
nbt.putString("connection", connection.asString());
|
||||||
return nbt;
|
return nbt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +57,8 @@ public class RelativeReferenceModifier extends AbstractModifier {
|
||||||
RiftReference link2 = LocalReference.tryMakeRelative(riftB.get(), riftA.get());
|
RiftReference link2 = LocalReference.tryMakeRelative(riftB.get(), riftA.get());
|
||||||
|
|
||||||
manager.consume(point_a, rift -> addLink(rift, link1));
|
manager.consume(point_a, rift -> addLink(rift, link1));
|
||||||
manager.consume(point_b, rift -> addLink(rift, link2));
|
|
||||||
|
if(connection == ConnectionType.BOTH) manager.consume(point_b, rift -> addLink(rift, link2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,6 +72,7 @@ public class RelativeReferenceModifier extends AbstractModifier {
|
||||||
return MoreObjects.toStringHelper(this)
|
return MoreObjects.toStringHelper(this)
|
||||||
.add("point_a", point_a)
|
.add("point_a", point_a)
|
||||||
.add("point_b", point_b)
|
.add("point_b", point_b)
|
||||||
|
.add("connection", connection.asString())
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,4 +80,20 @@ public class RelativeReferenceModifier extends AbstractModifier {
|
||||||
rift.setDestination(link);
|
rift.setDestination(link);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum ConnectionType implements StringIdentifiable {
|
||||||
|
BOTH("both"),
|
||||||
|
ONE_WAY("one_way");
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
ConnectionType(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String asString() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,14 @@
|
||||||
{
|
{
|
||||||
"type": "dimdoors:relative",
|
"type": "dimdoors:relative",
|
||||||
"point_a": 1,
|
"point_a": 1,
|
||||||
"point_b": 3
|
"point_b": 0,
|
||||||
|
"connection": "one_way"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "dimdoors:relative",
|
||||||
|
"point_a": 3,
|
||||||
|
"point_b": 2,
|
||||||
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue