Start work on DungeonTarget and splitting stuff
This commit is contained in:
parent
7f6239201e
commit
0b5264c40b
5 changed files with 153 additions and 12 deletions
|
@ -16,6 +16,15 @@ import net.minecraft.server.world.ServerWorld;
|
|||
public final class PocketGenerator {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
public static final Identifier ALL_DUNGEONS = new Identifier("dimdoors", "dungeon");
|
||||
public static final Identifier NETHER_DUNGEONS = new Identifier("dimdoors", "nether");
|
||||
public static final Identifier RUINS_DUNGEONS = new Identifier("dimdoors", "ruins");
|
||||
public static final Identifier ATLANTIS_DUNGEONS = new Identifier("dimdoors", "atlantis");
|
||||
public static final Identifier JUNGLE_DUNGEONS = new Identifier("dimdoors", "jungle");
|
||||
public static final Identifier SNOW_DUNGEONS = new Identifier("dimdoors", "snow");
|
||||
public static final Identifier PYRAMID_DUNGEONS = new Identifier("dimdoors", "pyramid");
|
||||
public static final Identifier END_DUNGEONS = new Identifier("dimdoors", "end");
|
||||
|
||||
/*
|
||||
private static Pocket prepareAndPlacePocket(ServerWorld world, PocketTemplate pocketTemplate, VirtualLocation virtualLocation, boolean setup) {
|
||||
LOGGER.info("Generating pocket from template " + pocketTemplate.getId() + " at virtual location " + virtualLocation);
|
||||
|
@ -49,6 +58,10 @@ public final class PocketGenerator {
|
|||
return generateFromPocketGroupV2(DimensionalDoorsInitializer.getWorld(ModDimensions.DUNGEON), new Identifier("dimdoors", "dungeon"), virtualLocation, linkTo, linkProperties);
|
||||
}
|
||||
|
||||
public static Pocket generateDungeonPocketV2(VirtualLocation virtualLocation, VirtualTarget linkTo, LinkProperties linkProperties, Identifier group) {
|
||||
return generateFromPocketGroupV2(DimensionalDoorsInitializer.getWorld(ModDimensions.DUNGEON), group, virtualLocation, linkTo, linkProperties);
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Create a dungeon pockets at a certain depth.
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
package org.dimdev.dimdoors.rift.targets;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.dimdev.dimdoors.api.rift.target.Target;
|
||||
import org.dimdev.dimdoors.pockets.PocketGenerator;
|
||||
import org.dimdev.dimdoors.rift.registry.LinkProperties;
|
||||
import org.dimdev.dimdoors.world.pocket.VirtualLocation;
|
||||
import org.dimdev.dimdoors.world.pocket.type.Pocket;
|
||||
|
||||
import net.minecraft.nbt.NbtCompound;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
public class DungeonTarget extends RandomTarget {
|
||||
private final Identifier dungeonGroup;
|
||||
|
||||
public DungeonTarget(float newRiftWeight, double weightMaximum, double coordFactor, double positiveDepthFactor, double negativeDepthFactor, Set<Integer> acceptedGroups, boolean noLink, boolean noLinkBack, Identifier dungeonGroup) {
|
||||
super(newRiftWeight, weightMaximum, coordFactor, positiveDepthFactor, negativeDepthFactor, acceptedGroups, noLink, noLinkBack);
|
||||
this.dungeonGroup = dungeonGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pocket generatePocket(VirtualLocation location, GlobalReference linkTo, LinkProperties props) {
|
||||
return PocketGenerator.generateDungeonPocketV2(location, linkTo, props, this.dungeonGroup);
|
||||
}
|
||||
|
||||
public static NbtCompound toNbt(DungeonTarget target) {
|
||||
NbtCompound nbt = RandomTarget.toNbt(target);
|
||||
|
||||
nbt.putString("dungeonGroup", target.dungeonGroup.toString());
|
||||
|
||||
return nbt;
|
||||
}
|
||||
|
||||
public static DungeonTargetBuilder builder() {
|
||||
return new DungeonTargetBuilder();
|
||||
}
|
||||
|
||||
public static DungeonTarget fromNbt(NbtCompound nbt) {
|
||||
return new DungeonTarget(
|
||||
nbt.getFloat("newRiftWeight"),
|
||||
nbt.getDouble("weightMaximum"),
|
||||
nbt.getDouble("coordFactor"),
|
||||
nbt.getDouble("positiveDepthFactor"),
|
||||
nbt.getDouble("negativeDepthFactor"),
|
||||
Arrays.stream(nbt.getIntArray("acceptedGroups")).boxed().collect(Collectors.toSet()),
|
||||
nbt.getBoolean("noLink"),
|
||||
nbt.getBoolean("noLinkBack"),
|
||||
new Identifier(nbt.getString("dungeonGroup"))
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VirtualTargetType<? extends VirtualTarget> getType() {
|
||||
return VirtualTargetType.DUNGEON;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Target receiveOther() {
|
||||
return super.receiveOther();
|
||||
}
|
||||
|
||||
public static class DungeonTargetBuilder extends RandomTarget.RandomTargetBuilder {
|
||||
private Identifier dungeonGroup = PocketGenerator.ALL_DUNGEONS;
|
||||
|
||||
DungeonTargetBuilder() {
|
||||
}
|
||||
|
||||
public void dungeonGroup(Identifier dungeonGroup) {
|
||||
this.dungeonGroup = dungeonGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder newRiftWeight(float newRiftWeight) {
|
||||
return (DungeonTargetBuilder) super.newRiftWeight(newRiftWeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder weightMaximum(double weightMaximum) {
|
||||
return (DungeonTargetBuilder) super.weightMaximum(weightMaximum);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder coordFactor(double coordFactor) {
|
||||
return (DungeonTargetBuilder) super.coordFactor(coordFactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder positiveDepthFactor(double positiveDepthFactor) {
|
||||
return (DungeonTargetBuilder) super.positiveDepthFactor(positiveDepthFactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder negativeDepthFactor(double negativeDepthFactor) {
|
||||
return (DungeonTargetBuilder) super.negativeDepthFactor(negativeDepthFactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder acceptedGroups(Set<Integer> acceptedGroups) {
|
||||
return (DungeonTargetBuilder) super.acceptedGroups(acceptedGroups);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder noLink(boolean noLink) {
|
||||
return (DungeonTargetBuilder) super.noLink(noLink);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTargetBuilder noLinkBack(boolean noLinkBack) {
|
||||
return (DungeonTargetBuilder) super.noLinkBack(noLinkBack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DungeonTarget build() {
|
||||
return new DungeonTarget(this.newRiftWeight, this.weightMaximum, this.coordFactor, this.positiveDepthFactor, this.negativeDepthFactor, this.acceptedGroups, this.noLink, this.noLinkBack, this.dungeonGroup);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package org.dimdev.dimdoors.rift.targets;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
@ -173,6 +174,10 @@ public class RandomTarget extends VirtualTarget { // TODO: Split into DungeonTar
|
|||
}
|
||||
}
|
||||
|
||||
protected Pocket generatePocket(VirtualLocation location, GlobalReference linkTo, LinkProperties props) {
|
||||
return PocketGenerator.generateDungeonPocketV2(location, linkTo, props);
|
||||
}
|
||||
|
||||
private static void linkRifts(Location from, Location to) {
|
||||
RiftBlockEntity fromBe = (RiftBlockEntity) from.getBlockEntity();
|
||||
RiftBlockEntity toBe = (RiftBlockEntity) to.getBlockEntity();
|
||||
|
@ -254,14 +259,14 @@ public class RandomTarget extends VirtualTarget { // TODO: Split into DungeonTar
|
|||
}
|
||||
|
||||
public static class RandomTargetBuilder {
|
||||
private float newRiftWeight;
|
||||
private double weightMaximum;
|
||||
private double coordFactor;
|
||||
private double positiveDepthFactor;
|
||||
private double negativeDepthFactor;
|
||||
private Set<Integer> acceptedGroups;
|
||||
private boolean noLink;
|
||||
private boolean noLinkBack;
|
||||
protected float newRiftWeight;
|
||||
protected double weightMaximum;
|
||||
protected double coordFactor;
|
||||
protected double positiveDepthFactor;
|
||||
protected double negativeDepthFactor;
|
||||
protected Set<Integer> acceptedGroups = Collections.emptySet();
|
||||
protected boolean noLink;
|
||||
protected boolean noLinkBack;
|
||||
|
||||
RandomTargetBuilder() {
|
||||
}
|
||||
|
|
|
@ -86,6 +86,7 @@ public abstract class VirtualTarget implements Target {
|
|||
|
||||
public interface VirtualTargetType<T extends VirtualTarget> {
|
||||
VirtualTargetType<RandomTarget> AVAILABLE_LINK = register("dimdoors:available_link", RandomTarget::fromNbt, RandomTarget::toNbt, VirtualTarget.COLOR);
|
||||
VirtualTargetType<RandomTarget> DUNGEON = register("dimdoors:dungeon", DungeonTarget::fromNbt, DungeonTarget::toNbt, VirtualTarget.COLOR);
|
||||
VirtualTargetType<EscapeTarget> ESCAPE = register("dimdoors:escape", EscapeTarget::fromNbt, EscapeTarget::toNbt, VirtualTarget.COLOR);
|
||||
VirtualTargetType<GlobalReference> GLOBAL = register("dimdoors:global", GlobalReference::fromNbt, GlobalReference::toNbt, VirtualTarget.COLOR);
|
||||
VirtualTargetType<LimboTarget> LIMBO = register("dimdoors:limbo", a -> LimboTarget.INSTANCE, a -> new NbtCompound(), VirtualTarget.COLOR);
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{
|
||||
"path": "dimdoors:dungeon/",
|
||||
"type": "dimdoors:path"
|
||||
}
|
||||
[
|
||||
{
|
||||
"path": "dimdoors:dungeon/",
|
||||
"type": "dimdoors:path"
|
||||
}
|
||||
]
|
||||
|
|
Loading…
Reference in a new issue