Pocket generation

Changes to be committed:
	modified:   src/main/java/org/dimdev/dimdoors/ModConfig.java
	modified:   src/main/java/org/dimdev/dimdoors/mixin/EntityMixin.java
	modified:   src/main/java/org/dimdev/dimdoors/pockets/PocketGenerator.java
	modified:   src/main/java/org/dimdev/dimdoors/pockets/PocketTemplate.java
	modified:   src/main/java/org/dimdev/dimdoors/pockets/PocketTemplateV2.java
	modified:   src/main/java/org/dimdev/dimdoors/pockets/PocketType.java
	modified:   src/main/java/org/dimdev/dimdoors/pockets/SchematicV2Handler.java
	modified:   src/main/java/org/dimdev/dimdoors/pockets/TemplateUtils.java
	modified:   src/main/java/org/dimdev/dimdoors/rift/registry/RegistryVertex.java
	modified:   src/main/java/org/dimdev/dimdoors/rift/registry/RiftRegistry.java
	modified:   src/main/java/org/dimdev/dimdoors/rift/targets/PrivatePocketExitTarget.java
	modified:   src/main/java/org/dimdev/dimdoors/world/ModDimensions.java
	deleted:    src/main/java/org/dimdev/dimdoors/world/limbo/LimboBiomeSource.java
	modified:   src/main/java/org/dimdev/dimdoors/world/limbo/LimboChunkGenerator.java
	modified:   src/main/java/org/dimdev/dimdoors/world/limbo/LimboDecay.java
	modified:   src/main/java/org/dimdev/dimdoors/world/pocket/PocketRegistry.java
	modified:   src/main/java/org/dimdev/dimdoors/world/pocket/PrivatePocketData.java
	modified:   src/main/java/org/dimdev/dimdoors/world/pocket/VirtualLocation.java
	modified:   src/main/resources/data/dimdoors/pockets/json/v2/default_private.json
	modified:   src/main/resources/data/dimdoors/pockets/json/v2/default_public.json
This commit is contained in:
SD 2020-10-03 10:04:06 +05:30
parent 869678dec9
commit 255c7f7acd
No known key found for this signature in database
GPG key ID: E36B57EE08544BC5
20 changed files with 190 additions and 100 deletions

View file

@ -11,6 +11,8 @@ import java.util.Set;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dimdev.dimdoors.util.Codecs;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParser;
import com.mojang.serialization.Codec;
import com.mojang.serialization.JsonOps;
@ -21,6 +23,7 @@ import net.fabricmc.loader.api.FabricLoader;
public final class ModConfig {
public static ModConfig INSTANCE;
private static final Path CONFIG_PATH;
private static final Gson GSON;
private static final Codec<ModConfig> CODEC;
private static final String DEFAULT;
private static final ModConfig FALLBACK;
@ -247,7 +250,7 @@ public final class ModConfig {
).getOrThrow(false, System.err::println).getFirst();
return 1;
} catch (IOException e) {
System.err.println("An Unexpected error occured when deserializing the Config. Using default values for now.");
LOGGER.error("An Unexpected error occured when deserializing the Config. Using default values for now.");
e.printStackTrace();
INSTANCE = FALLBACK;
return -1;
@ -265,6 +268,7 @@ public final class ModConfig {
Graphics.CODEC.fieldOf("graphics").forGetter(ModConfig::getGraphicsConfig)
).apply(instance, ModConfig::new));
CONFIG_PATH = FabricLoader.getInstance().getConfigDir().resolve("dimensional_doors.json");
GSON = new GsonBuilder().setLenient().setPrettyPrinting().create();
FALLBACK = new ModConfig(
new General(),
new Pockets(),
@ -275,9 +279,7 @@ public final class ModConfig {
new Graphics()
);
INSTANCE = FALLBACK;
DEFAULT = CODEC.encodeStart(JsonOps.INSTANCE, INSTANCE)
.getOrThrow(false, System.err::println)
.toString();
LOGGER = LogManager.getLogger();
DEFAULT = GSON.toJson(CODEC.encodeStart(JsonOps.INSTANCE, INSTANCE).getOrThrow(false, System.err::println));
LOGGER = LogManager.getLogger(ModConfig.class);
}
}

View file

@ -17,7 +17,8 @@ import net.minecraft.world.World;
@Mixin(Entity.class)
public class EntityMixin implements EntityExtensions {
@Shadow public World world;
@Shadow
public World world;
@Unique
private boolean dimdoors_readyToTeleport = false;
private TeleportTarget dimdoors_teleportTarget = null;
@ -32,7 +33,7 @@ public class EntityMixin implements EntityExtensions {
}
@Inject(at = @At("TAIL"), method = "moveToWorld")
public void nullify(ServerWorld destination, CallbackInfoReturnable<TeleportTarget> cir) {
public void cleanup(ServerWorld destination, CallbackInfoReturnable<TeleportTarget> cir) {
this.dimdoors_teleportTarget = null;
this.dimdoors_setReadyToTeleport(false);
}

View file

@ -21,35 +21,69 @@ public final class PocketGenerator {
private static Pocket prepareAndPlacePocket(ServerWorld world, PocketTemplate pocketTemplate, VirtualLocation virtualLocation, boolean setup) {
LOGGER.info("Generating pocket from template " + pocketTemplate.getId() + " at virtual location " + virtualLocation);
Pocket pocket = PocketRegistry.instance(world.getRegistryKey()).newPocket();
Pocket pocket = PocketRegistry.getInstance(world.getRegistryKey()).newPocket();
pocketTemplate.place(pocket, setup);
pocket.virtualLocation = virtualLocation;
return pocket;
}
private static Pocket prepareAndPlaceV2Pocket(ServerWorld world, PocketTemplateV2 pocketTemplate, VirtualLocation virtualLocation, boolean setup) {
LOGGER.info("Generating pocket from template " + pocketTemplate.getId() + " at virtual location " + virtualLocation);
Pocket pocket = PocketRegistry.getInstance(world.getRegistryKey()).newPocket();
pocketTemplate.place(pocket);
pocket.virtualLocation = virtualLocation;
return pocket;
}
public static Pocket generatePocketFromTemplate(ServerWorld world, PocketTemplate pocketTemplate, VirtualLocation virtualLocation, boolean setup) {
Pocket pocket = prepareAndPlacePocket(world, pocketTemplate, virtualLocation, setup);
if (setup) pocketTemplate.setup(pocket, null, null);
return pocket;
}
public static Pocket generateV2PocketFromTemplate(ServerWorld world, PocketTemplateV2 pocketTemplate, VirtualLocation virtualLocation, boolean setup) {
Pocket pocket = prepareAndPlaceV2Pocket(world, pocketTemplate, virtualLocation, setup);
if (setup) {
pocketTemplate.setup(pocket, null, null);
}
return pocket;
}
public static Pocket generatePocketFromTemplate(ServerWorld world, PocketTemplate pocketTemplate, VirtualLocation virtualLocation, VirtualTarget linkTo, LinkProperties linkProperties) {
Pocket pocket = prepareAndPlacePocket(world, pocketTemplate, virtualLocation, true);
pocketTemplate.setup(pocket, linkTo, linkProperties);
return pocket;
}
public static Pocket generateV2PocketFromTemplate(ServerWorld world, PocketTemplateV2 pocketTemplate, VirtualLocation virtualLocation, VirtualTarget linkTo, LinkProperties linkProperties) {
Pocket pocket = prepareAndPlaceV2Pocket(world, pocketTemplate, virtualLocation, true);
pocketTemplate.setup(pocket, linkTo, linkProperties);
return pocket;
}
public static Pocket generatePrivatePocket(VirtualLocation virtualLocation) {
PocketTemplate pocketTemplate = SchematicHandler.INSTANCE.getPersonalPocketTemplate();
return generatePocketFromTemplate(DimensionalDoorsInitializer.getWorld(ModDimensions.PERSONAL), pocketTemplate, virtualLocation, true);
}
public static Pocket generatePrivatePocketV2(VirtualLocation virtualLocation) {
PocketTemplateV2 pocketTemplate = SchematicV2Handler.getInstance().getRandomPrivatePocket();
return generateV2PocketFromTemplate(DimensionalDoorsInitializer.getWorld(ModDimensions.PERSONAL), pocketTemplate, virtualLocation, true);
}
// TODO: size of public pockets should increase with depth
public static Pocket generatePublicPocket(VirtualLocation virtualLocation, VirtualTarget linkTo, LinkProperties linkProperties) {
PocketTemplate pocketTemplate = SchematicHandler.INSTANCE.getPublicPocketTemplate();
return generatePocketFromTemplate(DimensionalDoorsInitializer.getWorld(ModDimensions.PUBLIC), pocketTemplate, virtualLocation, linkTo, linkProperties);
}
public static Pocket generatePublicPocketV2(VirtualLocation virtualLocation) {
PocketTemplateV2 pocketTemplate = SchematicV2Handler.getInstance().getRandomPublicPocket();
return generateV2PocketFromTemplate(DimensionalDoorsInitializer.getWorld(ModDimensions.PUBLIC), pocketTemplate, virtualLocation, true);
}
/**
* Create a dungeon pockets at a certain depth.
*

View file

@ -138,7 +138,7 @@ public class PocketTemplate {
public void place(Pocket pocket, boolean setup) {
pocket.setSize(this.size * 16, this.size * 16, this.size * 16);
int gridSize = PocketRegistry.instance(pocket.world).getGridSize();
int gridSize = PocketRegistry.getInstance(pocket.world).getGridSize();
ServerWorld world = DimensionalDoorsInitializer.getWorld(pocket.world);
int xBase = pocket.box.minX;
int yBase = pocket.box.minY;
@ -163,7 +163,7 @@ public class PocketTemplate {
}
public void setup(Pocket pocket, VirtualTarget linkTo, LinkProperties linkProperties) {
int gridSize = PocketRegistry.instance(pocket.world).getGridSize();
int gridSize = PocketRegistry.getInstance(pocket.world).getGridSize();
ServerWorld world = DimensionalDoorsInitializer.getWorld(pocket.world);
int xBase = pocket.box.minX;
int yBase = pocket.box.minY;

View file

@ -33,7 +33,7 @@ public class PocketTemplateV2 {
private final int size;
private final String id;
public PocketTemplateV2(Schematic schematic, String group, int size, String id) {
public PocketTemplateV2(Schematic schematic, String group, int size, String id, float weight) {
this.schematic = schematic;
this.group = group;
this.size = size;
@ -104,16 +104,13 @@ public class PocketTemplateV2 {
public void setup(Pocket pocket, VirtualTarget linkTo, LinkProperties linkProperties) {
ServerWorld world = DimensionalDoorsInitializer.getWorld(pocket.world);
int xBase = pocket.box.minX;
int yBase = pocket.box.minY;
int zBase = pocket.box.minZ;
List<RiftBlockEntity> rifts = new ArrayList<>();
for (CompoundTag blockEntityTag : this.schematic.getBlockEntities()) {
BlockPos pos = new BlockPos(
xBase + blockEntityTag.getInt("x"),
yBase + blockEntityTag.getInt("y"),
zBase + blockEntityTag.getInt("z")
pocket.box.minX + blockEntityTag.getInt("x"),
pocket.box.minY + blockEntityTag.getInt("y"),
pocket.box.minZ + blockEntityTag.getInt("z")
);
BlockEntity tile = world.getBlockEntity(pos);
@ -157,4 +154,8 @@ public class PocketTemplateV2 {
public Schematic getSchematic() {
return this.schematic;
}
public String getId() {
return this.id;
}
}

View file

@ -52,14 +52,17 @@ public final class PocketType {
public static final class PocketEntry {
public static final Codec<PocketEntry> CODEC = RecordCodecBuilder.create(instance -> instance.group(
Codec.INT.fieldOf("size").forGetter(PocketEntry::getSize),
Codec.STRING.fieldOf("id").forGetter(PocketEntry::getName)
Codec.STRING.fieldOf("id").forGetter(PocketEntry::getName),
Codec.INT.optionalFieldOf("weight", 5).forGetter(PocketEntry::getWeight)
).apply(instance, PocketEntry::new));
private final int size;
private final String name;
private final int weight;
PocketEntry(int size, String name) {
PocketEntry(int size, String name, int weight) {
this.size = size;
this.name = name;
this.weight = weight;
}
public int getSize() {
@ -70,25 +73,31 @@ public final class PocketType {
return this.name;
}
public int getWeight() {
return this.weight;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || this.getClass() != o.getClass()) return false;
PocketEntry that = (PocketEntry) o;
return this.size == that.size &&
Objects.equals(this.name, that.name);
Float.compare(that.weight, this.weight) == 0 &&
this.name.equals(that.name);
}
@Override
public int hashCode() {
return Objects.hash(this.size, this.name);
return Objects.hash(this.size, this.name, this.weight);
}
@Override
public String toString() {
return "PocketEntry{" +
"size=" + this.size +
", name=" + this.name +
", name='" + this.name + '\'' +
", weight=" + this.weight +
'}';
}
}

View file

@ -7,14 +7,19 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dimdev.dimcore.schematic.v2.Schematic;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimap;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
@ -28,7 +33,9 @@ public class SchematicV2Handler {
private static final Gson GSON = new GsonBuilder().setLenient().setPrettyPrinting().create();
private static final SchematicV2Handler INSTANCE = new SchematicV2Handler();
private final List<PocketTemplateV2> templates = Lists.newArrayList();
private final Multimap<String, PocketTemplateV2> templateMap = HashMultimap.create();
private final List<PocketType> pocketTypes = Lists.newArrayList();
private static final Random RANDOM = new Random(new Random().nextLong());
private boolean loaded = false;
private SchematicV2Handler() {
@ -70,9 +77,23 @@ public class SchematicV2Handler {
Path schemPath = basePath.resolve(entry.getName() + ".schem");
CompoundTag schemTag = NbtIo.readCompressed(Files.newInputStream(schemPath));
Schematic schematic = Schematic.fromTag(schemTag);
this.templates.add(new PocketTemplateV2(schematic, group, entry.getSize(), entry.getName()));
for (int i = 0; i < entry.getWeight(); i++) {
this.templateMap.put(group, new PocketTemplateV2(schematic, group, entry.getSize(), entry.getName(), entry.getWeight()));
}
}
}
public PocketTemplateV2 getRandomPublicPocket() {
Collection<PocketTemplateV2> publicPockets = this.templateMap.get("public");
int index = RANDOM.nextInt(publicPockets.size());
return Lists.newArrayList(publicPockets).get(index);
}
public PocketTemplateV2 getRandomPrivatePocket() {
Collection<PocketTemplateV2> publicPockets = this.templateMap.get("private");
int index = RANDOM.nextInt(publicPockets.size());
return Lists.newArrayList(publicPockets).get(index);
}
public static SchematicV2Handler getInstance() {
return INSTANCE;

View file

@ -88,7 +88,7 @@ public class TemplateUtils {
VirtualTarget dest = rift.getDestination();
if (dest instanceof PocketEntranceMarker) {
if (rift == selectedEntrance) {
PocketRegistry.instance(world.getRegistryKey()).markDirty();
PocketRegistry.getInstance(world.getRegistryKey()).markDirty();
rift.setDestination(((PocketEntranceMarker) dest).getIfDestination());
rift.register();
RiftRegistry.instance().addPocketEntrance(pocket, new Location((ServerWorld) rift.getWorld(), rift.getPos()));

View file

@ -40,9 +40,9 @@ public abstract class RegistryVertex {
}
public interface RegistryVertexType<T extends RegistryVertex> {
public RegistryVertexType<PlayerRiftPointer> PLAYER = register("player", PlayerRiftPointer.CODEC);
public RegistryVertexType<Rift> RIFT = register("rift", Rift.CODEC);
public RegistryVertexType<PocketEntrancePointer> ENTRANCE = register("entrance", PocketEntrancePointer.CODEC);
RegistryVertexType<PlayerRiftPointer> PLAYER = register("player", PlayerRiftPointer.CODEC);
RegistryVertexType<Rift> RIFT = register("rift", Rift.CODEC);
RegistryVertexType<PocketEntrancePointer> ENTRANCE = register("entrance", PocketEntrancePointer.CODEC);
RegistryVertexType<RiftPlaceholder> RIFT_PLACEHOLDER = register("rift_placeholder", RiftPlaceholder.CODEC);
Codec<T> codec();

View file

@ -68,7 +68,7 @@ public class RiftRegistry extends PersistentState {
PocketEntrancePointer pocket = NbtUtil.deserialize(pocketNBT, PocketEntrancePointer.CODEC);
graph.addVertex(pocket);
uuidMap.put(pocket.id, pocket);
pocketEntranceMap.put(PocketRegistry.instance(pocket.world).getPocket(pocket.pocketId), pocket);
pocketEntranceMap.put(PocketRegistry.getInstance(pocket.world).getPocket(pocket.pocketId), pocket);
}
// Read the connections between links that have a source or destination in this dimension

View file

@ -33,7 +33,7 @@ public class PrivatePocketExitTarget extends VirtualTarget implements EntityTarg
if (uuid != null) {
destLoc = RiftRegistry.instance().getPrivatePocketExit(uuid);
Pocket pocket = PrivatePocketData.instance().getPrivatePocket(uuid);
if (ModDimensions.isDimDoorsPocketDimension(location.getWorld()) && pocket != null && PocketRegistry.instance(pocket.world).getPocketAt(location.pos).equals(pocket)) {
if (ModDimensions.isDimDoorsPocketDimension(location.getWorld()) && pocket != null && PocketRegistry.getInstance(pocket.world).getPocketAt(location.pos).equals(pocket)) {
RiftRegistry.instance().setLastPrivatePocketEntrance(uuid, location); // Remember which exit was used for next time the pocket is entered
}
if (destLoc == null || !(destLoc.getBlockEntity() instanceof RiftBlockEntity)) {
@ -56,7 +56,7 @@ public class PrivatePocketExitTarget extends VirtualTarget implements EntityTarg
@Override
public void register() {
super.register();
PocketRegistry privatePocketRegistry = PocketRegistry.instance(location.world);
PocketRegistry privatePocketRegistry = PocketRegistry.getInstance(location.world);
Pocket pocket = privatePocketRegistry.getPocketAt(location.pos);
RiftRegistry.instance().addPocketEntrance(pocket, location);
}

View file

@ -6,7 +6,6 @@ import java.util.OptionalLong;
import org.dimdev.dimdoors.block.ModBlocks;
import org.dimdev.dimdoors.mixin.ChunkGeneratorSettingsAccessor;
import org.dimdev.dimdoors.mixin.DimensionTypeAccessor;
import org.dimdev.dimdoors.world.limbo.LimboBiomeSource;
import org.dimdev.dimdoors.world.limbo.LimboChunkGenerator;
import org.dimdev.dimdoors.world.pocket.BlankChunkGenerator;
import com.google.common.collect.ImmutableMap;
@ -18,8 +17,6 @@ import net.minecraft.util.registry.Registry;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.World;
import net.minecraft.world.biome.source.BiomeSource;
import net.minecraft.world.biome.source.FixedBiomeSource;
import net.minecraft.world.dimension.DimensionType;
import net.minecraft.world.gen.chunk.ChunkGeneratorSettings;
import net.minecraft.world.gen.chunk.GenerationShapeConfig;
@ -43,11 +40,6 @@ public final class ModDimensions {
public static final ChunkGeneratorSettings LIMBO_CHUNK_GENERATOR_SETTINGS;
// TODO: move pocket dimension generation settings to code
public static final BiomeSource PERSONAL_BIOME_SOURCE = new FixedBiomeSource(() -> ModBiomes.PERSONAL_WHITE_VOID_BIOME);
public static final BiomeSource PUBLIC_BIOME_SOURCE = new FixedBiomeSource(() -> ModBiomes.PUBLIC_BLACK_VOID_BIOME);
public static final BiomeSource DUNGEON_BIOME_SOURCE = new FixedBiomeSource(() -> ModBiomes.DUNGEON_DANGEROUS_BLACK_VOID_BIOME);
public static ServerWorld LIMBO_DIMENSION;
public static ServerWorld PERSONAL_POCKET_DIMENSION;
public static ServerWorld PUBLIC_POCKET_DIMENSION;
@ -80,7 +72,6 @@ public final class ModDimensions {
});
Registry.register(Registry.CHUNK_GENERATOR, new Identifier("dimdoors", "blank"), BlankChunkGenerator.CODEC);
Registry.register(Registry.CHUNK_GENERATOR, new Identifier("dimdoors", "limbo_chunk_generator"), LimboChunkGenerator.CODEC);
Registry.register(Registry.BIOME_SOURCE, new Identifier("dimdoors", "limbo_biome_source"), LimboBiomeSource.CODEC);
}
static {

View file

@ -1,40 +0,0 @@
package org.dimdev.dimdoors.world.limbo;
import java.util.Set;
import org.dimdev.dimdoors.world.ModBiomes;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.mojang.serialization.Codec;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.source.BiomeSource;
public class LimboBiomeSource extends BiomeSource {
public static final LimboBiomeSource INSTANCE = new LimboBiomeSource();
public static final Codec<LimboBiomeSource> CODEC = Codec.unit(INSTANCE);
private LimboBiomeSource() {
super(ImmutableList.of(ModBiomes.LIMBO_BIOME));
}
@Override
public Codec<? extends BiomeSource> getCodec() {
return CODEC;
}
@Override
public BiomeSource withSeed(long seed) {
return this;
}
@Override
public Set<Biome> getBiomesInArea(int x, int y, int z, int radius) {
return ImmutableSet.of(ModBiomes.LIMBO_BIOME);
}
@Override
public Biome getBiomeForNoiseGen(int biomeX, int biomeY, int biomeZ) {
return ModBiomes.LIMBO_BIOME;
}
}

View file

@ -11,6 +11,7 @@ import it.unimi.dsi.fastutil.objects.ObjectList;
import it.unimi.dsi.fastutil.objects.ObjectListIterator;
import org.dimdev.dimdoors.block.ModBlocks;
import org.dimdev.dimdoors.mixin.ChunkGeneratorAccessor;
import org.dimdev.dimdoors.world.ModBiomes;
import org.dimdev.dimdoors.world.ModDimensions;
import org.jetbrains.annotations.Nullable;
import com.mojang.serialization.Codec;
@ -39,6 +40,7 @@ import net.minecraft.world.SpawnHelper;
import net.minecraft.world.WorldAccess;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.source.BiomeSource;
import net.minecraft.world.biome.source.FixedBiomeSource;
import net.minecraft.world.biome.source.TheEndBiomeSource;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.ChunkSection;
@ -55,7 +57,7 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
public class LimboChunkGenerator extends ChunkGenerator {
public static final LimboChunkGenerator INSTANCE = new LimboChunkGenerator(LimboBiomeSource.INSTANCE, LimboBiomeSource.INSTANCE);
public static final LimboChunkGenerator INSTANCE = new LimboChunkGenerator(new FixedBiomeSource(() -> ModBiomes.LIMBO_BIOME), new FixedBiomeSource(() -> ModBiomes.LIMBO_BIOME));
public static final Codec<LimboChunkGenerator> CODEC = Codec.unit(INSTANCE);
private static final float[] NOISE_WEIGHT_TABLE = Util.make(new float[13824], (array) -> {
for (int i = 0; i < 24; ++i) {

View file

@ -22,7 +22,60 @@ import net.minecraft.block.BlockWithEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import static net.minecraft.block.Blocks.*;
import static net.minecraft.block.Blocks.ACACIA_LOG;
import static net.minecraft.block.Blocks.ACACIA_PLANKS;
import static net.minecraft.block.Blocks.ACACIA_WOOD;
import static net.minecraft.block.Blocks.AIR;
import static net.minecraft.block.Blocks.ANDESITE;
import static net.minecraft.block.Blocks.BIRCH_LOG;
import static net.minecraft.block.Blocks.BIRCH_PLANKS;
import static net.minecraft.block.Blocks.BIRCH_WOOD;
import static net.minecraft.block.Blocks.BLACKSTONE;
import static net.minecraft.block.Blocks.COAL_BLOCK;
import static net.minecraft.block.Blocks.COAL_ORE;
import static net.minecraft.block.Blocks.COBBLESTONE;
import static net.minecraft.block.Blocks.CRACKED_STONE_BRICKS;
import static net.minecraft.block.Blocks.DARK_OAK_LOG;
import static net.minecraft.block.Blocks.DARK_OAK_PLANKS;
import static net.minecraft.block.Blocks.DARK_OAK_WOOD;
import static net.minecraft.block.Blocks.DIORITE;
import static net.minecraft.block.Blocks.DIRT;
import static net.minecraft.block.Blocks.EMERALD_BLOCK;
import static net.minecraft.block.Blocks.EMERALD_ORE;
import static net.minecraft.block.Blocks.END_STONE;
import static net.minecraft.block.Blocks.END_STONE_BRICKS;
import static net.minecraft.block.Blocks.FARMLAND;
import static net.minecraft.block.Blocks.GLASS;
import static net.minecraft.block.Blocks.GOLD_BLOCK;
import static net.minecraft.block.Blocks.GOLD_ORE;
import static net.minecraft.block.Blocks.GRANITE;
import static net.minecraft.block.Blocks.GRASS_BLOCK;
import static net.minecraft.block.Blocks.GRASS_PATH;
import static net.minecraft.block.Blocks.GRAVEL;
import static net.minecraft.block.Blocks.IRON_BLOCK;
import static net.minecraft.block.Blocks.IRON_ORE;
import static net.minecraft.block.Blocks.JUNGLE_LOG;
import static net.minecraft.block.Blocks.JUNGLE_PLANKS;
import static net.minecraft.block.Blocks.JUNGLE_WOOD;
import static net.minecraft.block.Blocks.LAPIS_BLOCK;
import static net.minecraft.block.Blocks.LAPIS_ORE;
import static net.minecraft.block.Blocks.OAK_LOG;
import static net.minecraft.block.Blocks.OAK_PLANKS;
import static net.minecraft.block.Blocks.OAK_WOOD;
import static net.minecraft.block.Blocks.PODZOL;
import static net.minecraft.block.Blocks.POLISHED_ANDESITE;
import static net.minecraft.block.Blocks.POLISHED_BLACKSTONE;
import static net.minecraft.block.Blocks.POLISHED_DIORITE;
import static net.minecraft.block.Blocks.POLISHED_GRANITE;
import static net.minecraft.block.Blocks.REDSTONE_BLOCK;
import static net.minecraft.block.Blocks.REDSTONE_ORE;
import static net.minecraft.block.Blocks.SAND;
import static net.minecraft.block.Blocks.SANDSTONE;
import static net.minecraft.block.Blocks.SPRUCE_LOG;
import static net.minecraft.block.Blocks.SPRUCE_PLANKS;
import static net.minecraft.block.Blocks.SPRUCE_WOOD;
import static net.minecraft.block.Blocks.STONE;
import static net.minecraft.block.Blocks.STONE_BRICKS;
/**
* Provides methods for applying Limbo decay. Limbo decay refers to the effect that most blocks placed in Limbo

View file

@ -61,7 +61,7 @@ public class PocketRegistry extends PersistentState {
return tag;
}
public static PocketRegistry instance(RegistryKey<World> key) {
public static PocketRegistry getInstance(RegistryKey<World> key) {
ServerWorld world = DimensionalDoorsInitializer.getWorld(key);
if (!(ModDimensions.isDimDoorsPocketDimension(world))) {

View file

@ -67,7 +67,7 @@ public class PrivatePocketData extends PersistentState {
public Pocket getPrivatePocket(UUID playerUUID) {
PocketInfo pocket = privatePocketMap.get(playerUUID);
if (pocket == null) return null;
return PocketRegistry.instance(pocket.world).getPocket(pocket.id);
return PocketRegistry.getInstance(pocket.world).getPocket(pocket.id);
}
public void setPrivatePocketID(UUID playerUUID, Pocket pocket) {

View file

@ -59,7 +59,7 @@ public class VirtualLocation {
VirtualLocation virtualLocation = null;
if (ModDimensions.isDimDoorsPocketDimension(location.world)) {
Pocket pocket = PocketRegistry.instance(location.world).getPocketAt(location.pos);
Pocket pocket = PocketRegistry.getInstance(location.world).getPocketAt(location.pos);
if (pocket != null) {
virtualLocation = pocket.virtualLocation; // TODO: pockets-relative coordinates
} else {

View file

@ -3,35 +3,43 @@
"pockets": [
{
"id": "private_pocket_0",
"size": 0
"size": 0,
"weight": 20
},
{
"id": "private_pocket_1",
"size": 1
"size": 1,
"weight": 17
},
{
"id": "private_pocket_2",
"size": 2
"size": 2,
"weight": 14
},
{
"id": "private_pocket_3",
"size": 3
"size": 3,
"weight": 11
},
{
"id": "private_pocket_4",
"size": 4
"size": 4,
"weight": 8
},
{
"id": "private_pocket_5",
"size": 5
"size": 5,
"weight": 5
},
{
"id": "private_pocket_6",
"size": 6
"size": 6,
"weight": 3
},
{
"id": "private_pocket_7",
"size": 7
"size": 7,
"weight": 1
}
]
}

View file

@ -3,35 +3,43 @@
"pockets": [
{
"id": "public_pocket_0",
"size": 0
"size": 0,
"weight": 20
},
{
"id": "public_pocket_1",
"size": 1
"size": 1,
"weight": 17
},
{
"id": "public_pocket_2",
"size": 2
"size": 2,
"weight": 14
},
{
"id": "public_pocket_3",
"size": 3
"size": 3,
"weight": 11
},
{
"id": "public_pocket_4",
"size": 4
"size": 4,
"weight": 8
},
{
"id": "public_pocket_5",
"size": 5
"size": 5,
"weight": 5
},
{
"id": "public_pocket_6",
"size": 6
"size": 6,
"weight": 3
},
{
"id": "public_pocket_7",
"size": 7
"size": 7,
"weight": 1
}
]
}