Support Object scaling

This commit is contained in:
Daniel Mills 2021-07-14 02:31:06 -04:00
parent 2bd7fd2aa7
commit 2477ee4952
55 changed files with 285 additions and 174 deletions

View File

@ -1,8 +1,8 @@
package com.volmit.iris.object.tile;
import lombok.Data;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.ListTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.block.Banner;

View File

@ -1,7 +1,7 @@
package com.volmit.iris.object.tile;
import com.volmit.iris.util.KList;
import net.querz.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.TileState;

View File

@ -1,7 +1,7 @@
package com.volmit.iris.object.tile;
import lombok.Data;
import net.querz.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import org.bukkit.DyeColor;
import org.bukkit.block.Sign;
import org.bukkit.block.data.BlockData;

View File

@ -1,8 +1,8 @@
package com.volmit.iris.object.tile;
import lombok.Data;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.ListTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import org.bukkit.Material;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.block.data.BlockData;

View File

@ -7,12 +7,12 @@ import com.volmit.iris.scaffold.parallel.MultiBurst;
import com.volmit.iris.util.B;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.KMap;
import net.querz.mca.Chunk;
import net.querz.mca.MCAFile;
import net.querz.mca.MCAUtil;
import net.querz.mca.Section;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.StringTag;
import com.volmit.iris.scaffold.data.mca.Chunk;
import com.volmit.iris.scaffold.data.mca.MCAFile;
import com.volmit.iris.scaffold.data.mca.MCAUtil;
import com.volmit.iris.scaffold.data.mca.Section;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.StringTag;
import org.bukkit.NamespacedKey;
import org.bukkit.block.Biome;
import org.bukkit.block.data.BlockData;

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
@FunctionalInterface
public interface ExceptionBiFunction <T, U, R, E extends Exception> {

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
@FunctionalInterface
public interface ExceptionTriConsumer<T, U, V, E extends Exception> {

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
public interface MaxDepthIO {

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
/**
* Exception indicating that the maximum (de-)serialization depth has been reached.

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
import java.io.File;
import java.io.FileReader;

View File

@ -1,4 +1,4 @@
package net.querz.io;
package com.volmit.iris.scaffold.data.io;
import java.io.File;
import java.io.FileWriter;

View File

@ -1,10 +1,11 @@
package net.querz.mca;
package com.volmit.iris.scaffold.data.mca;
import com.volmit.iris.scaffold.data.nbt.io.NBTDeserializer;
import com.volmit.iris.scaffold.data.nbt.io.NBTSerializer;
import com.volmit.iris.scaffold.data.nbt.io.NamedTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.ListTag;
import net.querz.nbt.io.NamedTag;
import net.querz.nbt.io.NBTDeserializer;
import net.querz.nbt.io.NBTSerializer;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
@ -12,7 +13,7 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import static net.querz.mca.LoadFlags.*;
import static com.volmit.iris.scaffold.data.mca.LoadFlags.*;
public class Chunk {

View File

@ -1,4 +1,4 @@
package net.querz.mca;
package com.volmit.iris.scaffold.data.mca;
import java.io.IOException;
import java.io.InputStream;

View File

@ -1,4 +1,4 @@
package net.querz.mca;
package com.volmit.iris.scaffold.data.mca;
@FunctionalInterface
public interface ExceptionFunction<T, R, E extends Exception> {

View File

@ -1,4 +1,4 @@
package net.querz.mca;
package com.volmit.iris.scaffold.data.mca;
public class LoadFlags {

View File

@ -1,6 +1,6 @@
package net.querz.mca;
package com.volmit.iris.scaffold.data.mca;
import net.querz.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import java.io.IOException;
import java.io.RandomAccessFile;

View File

@ -1,4 +1,4 @@
package net.querz.mca;
package com.volmit.iris.scaffold.data.mca;
import java.io.File;
import java.io.IOException;

View File

@ -1,19 +1,16 @@
package net.querz.mca;
package com.volmit.iris.scaffold.data.mca;
import com.volmit.iris.Iris;
import com.volmit.iris.util.KMap;
import net.querz.nbt.tag.ByteArrayTag;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.ListTag;
import net.querz.nbt.tag.LongArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.ByteArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongArrayTag;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static net.querz.mca.LoadFlags.*;
public class Section {
private CompoundTag data;
@ -25,7 +22,7 @@ public class Section {
private int dataVersion;
public Section(CompoundTag sectionRoot, int dataVersion) {
this(sectionRoot, dataVersion, ALL_DATA);
this(sectionRoot, dataVersion, LoadFlags.ALL_DATA);
}
public Section(CompoundTag sectionRoot, int dataVersion, long loadFlags) {
@ -45,13 +42,13 @@ public class Section {
LongArrayTag blockStates = sectionRoot.getLongArrayTag("BlockStates");
ByteArrayTag skyLight = sectionRoot.getByteArrayTag("SkyLight");
if ((loadFlags & BLOCK_LIGHTS) != 0) {
if ((loadFlags & LoadFlags.BLOCK_LIGHTS) != 0) {
this.blockLight = blockLight != null ? blockLight.getValue() : null;
}
if ((loadFlags & BLOCK_STATES) != 0) {
if ((loadFlags & LoadFlags.BLOCK_STATES) != 0) {
this.blockStates = blockStates != null ? blockStates.getValue() : null;
}
if ((loadFlags & SKY_LIGHT) != 0) {
if ((loadFlags & LoadFlags.SKY_LIGHT) != 0) {
this.skyLight = skyLight != null ? skyLight.getValue() : null;
}
}

View File

@ -1,7 +1,7 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.io.Deserializer;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.io.Deserializer;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPInputStream;

View File

@ -1,21 +1,21 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.io.ExceptionBiFunction;
import net.querz.io.MaxDepthIO;
import net.querz.nbt.tag.ByteArrayTag;
import net.querz.nbt.tag.ByteTag;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.DoubleTag;
import net.querz.nbt.tag.EndTag;
import net.querz.nbt.tag.FloatTag;
import net.querz.nbt.tag.IntArrayTag;
import net.querz.nbt.tag.IntTag;
import net.querz.nbt.tag.ListTag;
import net.querz.nbt.tag.LongArrayTag;
import net.querz.nbt.tag.LongTag;
import net.querz.nbt.tag.ShortTag;
import net.querz.nbt.tag.StringTag;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.io.ExceptionBiFunction;
import com.volmit.iris.scaffold.data.io.MaxDepthIO;
import com.volmit.iris.scaffold.data.nbt.tag.ByteArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.ByteTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.DoubleTag;
import com.volmit.iris.scaffold.data.nbt.tag.EndTag;
import com.volmit.iris.scaffold.data.nbt.tag.FloatTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongTag;
import com.volmit.iris.scaffold.data.nbt.tag.ShortTag;
import com.volmit.iris.scaffold.data.nbt.tag.StringTag;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;

View File

@ -1,21 +1,21 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.io.ExceptionTriConsumer;
import net.querz.io.MaxDepthIO;
import net.querz.nbt.tag.ByteArrayTag;
import net.querz.nbt.tag.ByteTag;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.DoubleTag;
import net.querz.nbt.tag.EndTag;
import net.querz.nbt.tag.FloatTag;
import net.querz.nbt.tag.IntArrayTag;
import net.querz.nbt.tag.IntTag;
import net.querz.nbt.tag.ListTag;
import net.querz.nbt.tag.LongArrayTag;
import net.querz.nbt.tag.LongTag;
import net.querz.nbt.tag.ShortTag;
import net.querz.nbt.tag.StringTag;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.io.ExceptionTriConsumer;
import com.volmit.iris.scaffold.data.io.MaxDepthIO;
import com.volmit.iris.scaffold.data.nbt.tag.ByteArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.ByteTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.DoubleTag;
import com.volmit.iris.scaffold.data.nbt.tag.EndTag;
import com.volmit.iris.scaffold.data.nbt.tag.FloatTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongTag;
import com.volmit.iris.scaffold.data.nbt.tag.ShortTag;
import com.volmit.iris.scaffold.data.nbt.tag.StringTag;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;

View File

@ -1,7 +1,7 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.io.Serializer;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.io.Serializer;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.GZIPOutputStream;

View File

@ -1,6 +1,6 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

View File

@ -1,6 +1,6 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
public class NamedTag {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import java.io.IOException;

View File

@ -1,7 +1,7 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.io.StringDeserializer;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.io.StringDeserializer;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;

View File

@ -1,21 +1,21 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.io.MaxDepthIO;
import net.querz.nbt.tag.ArrayTag;
import net.querz.nbt.tag.ByteArrayTag;
import net.querz.nbt.tag.ByteTag;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.DoubleTag;
import net.querz.nbt.tag.EndTag;
import net.querz.nbt.tag.FloatTag;
import net.querz.nbt.tag.IntArrayTag;
import net.querz.nbt.tag.IntTag;
import net.querz.nbt.tag.ListTag;
import net.querz.nbt.tag.LongArrayTag;
import net.querz.nbt.tag.LongTag;
import net.querz.nbt.tag.ShortTag;
import net.querz.nbt.tag.StringTag;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.io.MaxDepthIO;
import com.volmit.iris.scaffold.data.nbt.tag.ArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.ByteArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.ByteTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.DoubleTag;
import com.volmit.iris.scaffold.data.nbt.tag.EndTag;
import com.volmit.iris.scaffold.data.nbt.tag.FloatTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongTag;
import com.volmit.iris.scaffold.data.nbt.tag.ShortTag;
import com.volmit.iris.scaffold.data.nbt.tag.StringTag;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

View File

@ -1,7 +1,8 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import com.volmit.iris.scaffold.data.io.StringSerializer;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import net.querz.io.StringSerializer;
import net.querz.nbt.tag.Tag;
import java.io.IOException;
import java.io.Writer;

View File

@ -1,6 +1,7 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import net.querz.nbt.tag.Tag;
import java.io.IOException;
public class SNBTUtil {

View File

@ -1,20 +1,20 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
import net.querz.io.MaxDepthIO;
import net.querz.nbt.tag.ByteArrayTag;
import net.querz.nbt.tag.ByteTag;
import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.DoubleTag;
import net.querz.nbt.tag.EndTag;
import net.querz.nbt.tag.FloatTag;
import net.querz.nbt.tag.IntArrayTag;
import net.querz.nbt.tag.IntTag;
import net.querz.nbt.tag.ListTag;
import net.querz.nbt.tag.LongArrayTag;
import net.querz.nbt.tag.LongTag;
import net.querz.nbt.tag.ShortTag;
import net.querz.nbt.tag.StringTag;
import net.querz.nbt.tag.Tag;
import com.volmit.iris.scaffold.data.io.MaxDepthIO;
import com.volmit.iris.scaffold.data.nbt.tag.ByteArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.ByteTag;
import com.volmit.iris.scaffold.data.nbt.tag.CompoundTag;
import com.volmit.iris.scaffold.data.nbt.tag.DoubleTag;
import com.volmit.iris.scaffold.data.nbt.tag.EndTag;
import com.volmit.iris.scaffold.data.nbt.tag.FloatTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.IntTag;
import com.volmit.iris.scaffold.data.nbt.tag.ListTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongArrayTag;
import com.volmit.iris.scaffold.data.nbt.tag.LongTag;
import com.volmit.iris.scaffold.data.nbt.tag.ShortTag;
import com.volmit.iris.scaffold.data.nbt.tag.StringTag;
import com.volmit.iris.scaffold.data.nbt.tag.Tag;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.Array;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.io;
package com.volmit.iris.scaffold.data.nbt.io;
public class StringPointer {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import java.lang.reflect.Array;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import java.util.Arrays;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public class ByteTag extends NumberTag<Byte> implements Comparable<ByteTag> {

View File

@ -1,8 +1,7 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import com.volmit.iris.Iris;
import com.volmit.iris.scaffold.data.io.MaxDepthIO;
import com.volmit.iris.util.KMap;
import net.querz.io.MaxDepthIO;
import java.util.*;
import java.util.function.BiConsumer;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public class DoubleTag extends NumberTag<Double> implements Comparable<DoubleTag> {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public final class EndTag extends Tag<Void> {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public class FloatTag extends NumberTag<Float> implements Comparable<FloatTag> {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import java.util.Arrays;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public class IntTag extends NumberTag<Integer> implements Comparable<IntTag> {

View File

@ -1,7 +1,7 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import com.volmit.iris.scaffold.data.io.MaxDepthIO;
import com.volmit.iris.util.KList;
import net.querz.io.MaxDepthIO;
import java.util.*;
import java.util.function.Consumer;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import java.util.Arrays;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public class LongTag extends NumberTag<Long> implements Comparable<LongTag> {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import java.util.Collection;
import java.util.Iterator;

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public abstract class NumberTag<T extends Number & Comparable<T>> extends Tag<T> {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public class ShortTag extends NumberTag<Short> implements Comparable<ShortTag> {

View File

@ -1,4 +1,4 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
public class StringTag extends Tag<String> implements Comparable<StringTag> {

View File

@ -1,6 +1,7 @@
package net.querz.nbt.tag;
package com.volmit.iris.scaffold.data.nbt.tag;
import com.volmit.iris.scaffold.data.io.MaxDepthReachedException;
import net.querz.io.MaxDepthReachedException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

View File

@ -6,7 +6,6 @@ import com.volmit.iris.generator.IrisEngineCompound;
import com.volmit.iris.manager.IrisDataManager;
import com.volmit.iris.object.IrisBiome;
import com.volmit.iris.object.IrisDimension;
import com.volmit.iris.object.IrisNoiseGenerator;
import com.volmit.iris.object.IrisPosition;
import com.volmit.iris.pregen.DirectWorldWriter;
import com.volmit.iris.scaffold.IrisWorlds;
@ -31,7 +30,6 @@ import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
@ -40,12 +38,8 @@ import java.util.List;
import java.util.Objects;
import java.util.Random;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.stream.Collectors;
public class EngineCompositeGenerator extends ChunkGenerator implements IrisAccess {
private EngineCompound compound = null;
@ -494,7 +488,7 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce
{
int ox = x << 4;
int oz = z << 4;
net.querz.mca.Chunk cc = writer.getChunk(x, z);
com.volmit.iris.scaffold.data.mca.Chunk cc = writer.getChunk(x, z);
generateChunkRawData(w, x, z, new TerrainChunk() {
@Override
public void setRaw(ChunkData data) {

View File

@ -21,6 +21,7 @@ import org.bukkit.block.data.BlockData;
import org.bukkit.util.BlockVector;
import org.bukkit.util.Consumer;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@ -551,7 +552,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
{
for(int i = 0; i < objectPlacement.getDensity(); i++)
{
IrisObject v = objectPlacement.getObject(getComplex(), rng);
IrisObject v = objectPlacement.getScale().get(rng, objectPlacement.getObject(getComplex(), rng));
if (v == null){
return;
}
@ -604,12 +605,21 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
zg.set(0);
int jig = 0;
KSet<String> objects = new KSet<>();
KMap<IrisObjectScale, KList<String>> scalars = new KMap<>();
KList<IrisRegion> r = getAllRegions();
KList<IrisBiome> b = getAllBiomes();
for (IrisBiome i : b) {
for (IrisObjectPlacement j : i.getObjects()) {
objects.addAll(j.getPlace());
if(j.getScale().canScaleBeyond())
{
scalars.put(j.getScale(), j.getPlace());
}
else
{
objects.addAll(j.getPlace());
}
}
for (IrisJigsawStructurePlacement j : i.getJigsawStructures()) {
@ -619,6 +629,18 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
for (IrisRegion i : r)
{
for (IrisObjectPlacement j : i.getObjects()) {
if(j.getScale().canScaleBeyond())
{
scalars.put(j.getScale(), j.getPlace());
}
else
{
objects.addAll(j.getPlace());
}
}
for(IrisJigsawStructurePlacement j : i.getJigsawStructures())
{
jig = Math.max(jig, getData().getJigsawStructureLoader().load(j.getStructure()).getMaxDimension());
@ -646,12 +668,32 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
Iris.verbose("Checking sizes for " + Form.f(objects.size()) + " referenced objects.");
BurstExecutor e = MultiBurst.burst.burst(objects.size());
KMap<String, BlockVector> sizeCache = new KMap<>();
for(String i : objects)
{
e.queue(() -> {
try
{
BlockVector bv = IrisObject.sampleSize(getData().getObjectLoader().findFile(i));
BlockVector bv = sizeCache.compute(i, (k,v) -> {
if(v != null)
{
return v;
}
try {
return IrisObject.sampleSize(getData().getObjectLoader().findFile(i));
} catch (IOException ioException) {
ioException.printStackTrace();
}
return null;
});
if(bv == null)
{
throw new RuntimeException();
}
warn(i, bv);
synchronized (xg)
@ -672,6 +714,55 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
});
}
for(IrisObjectScale i : scalars.keySet())
{
double ms = i.getMaximumScale();
for(String j : scalars.get(i))
{
e.queue(() -> {
try
{
BlockVector bv = sizeCache.compute(j, (k,v) -> {
if(v != null)
{
return v;
}
try {
return IrisObject.sampleSize(getData().getObjectLoader().findFile(j));
} catch (IOException ioException) {
ioException.printStackTrace();
}
return null;
});
if(bv == null)
{
throw new RuntimeException();
}
warnScaled(j, bv, ms);
synchronized (xg)
{
xg.getAndSet((int) Math.max(Math.ceil(bv.getBlockX() * ms), xg.get()));
}
synchronized (zg)
{
zg.getAndSet((int) Math.max(Math.ceil(bv.getBlockZ()* ms), zg.get()));
}
}
catch(Throwable ignored)
{
}
});
}
}
e.complete();
int x = xg.get();
@ -739,6 +830,14 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer {
}
}
default void warnScaled(String ob, BlockVector bv, double ms)
{
if(Math.max(bv.getBlockX(), bv.getBlockZ()) > 128)
{
Iris.warn("Object " + ob + " has a large size (" + bv.toString() + ") and may increase memory usage! (Object scaled up to "+Form.pc(ms, 2)+")");
}
}
@Override
default int getHighest(int x, int z) {
return getHighest(x,z,false);

View File

@ -1002,16 +1002,7 @@ public interface Hunk<T>
{
if(x < 0 || x >= getWidth() || y < 0 || y >= getHeight() || z < 0 || z >= getDepth())
{
try
{
throw new RuntimeException();
}
catch(Throwable e)
{
e.printStackTrace();
}
Iris.warn(x + "," + y + "," + z + " does not fit within size " + getWidth() + "," + getHeight() + "," + getDepth() + " (0,0,0 to " + (getWidth() - 1) + "," + (getHeight() - 1) + "," + (getDepth() - 1) + ")");
//Iris.warn(x + "," + y + "," + z + " does not fit within size " + getWidth() + "," + getHeight() + "," + getDepth() + " (0,0,0 to " + (getWidth() - 1) + "," + (getHeight() - 1) + "," + (getDepth() - 1) + ")");
}
}
@ -1019,7 +1010,7 @@ public interface Hunk<T>
{
if(x < 0 || x >= getWidth() || y < 0 || y >= getHeight() || z < 0 || z >= getDepth() || x + w < 0 || x + w > getWidth() || y + h < 0 || y + h > getHeight() || z + d < 0 || z + d > getDepth())
{
Iris.warn("The hunk " + w + "," + h + "," + d + " with an offset of " + x + "," + y + "," + z + " does not fit within the parent hunk " + getWidth() + "," + getHeight() + "," + getDepth() + " (0,0,0 to " + (getWidth() - 1) + "," + (getHeight() - 1) + "," + (getDepth() - 1) + ")");
//Iris.warn("The hunk " + w + "," + h + "," + d + " with an offset of " + x + "," + y + "," + z + " does not fit within the parent hunk " + getWidth() + "," + getHeight() + "," + getDepth() + " (0,0,0 to " + (getWidth() - 1) + "," + (getHeight() - 1) + "," + (getDepth() - 1) + ")");
}
}

View File

@ -2,6 +2,7 @@ package com.volmit.iris.util;
import com.volmit.iris.object.IrisPosition;
import org.bukkit.World;
import org.bukkit.util.BlockVector;
public class AxisAlignedBB
{
@ -62,11 +63,22 @@ public class AxisAlignedBB
return new IrisPosition((int)xb, (int)yb, (int)zb);
}
public BlockVector maxbv()
{
return new BlockVector((int)xb, (int)yb, (int)zb);
}
public IrisPosition min()
{
return new IrisPosition((int)xa, (int)ya, (int)za);
}
public BlockVector minbv()
{
return new BlockVector((int)xa, (int)ya, (int)za);
}
public Cuboid toCuboid(World world) {
return new Cuboid(min().toLocation(world), max().toLocation(world));
}

View File

@ -703,6 +703,21 @@ public class KList<T> extends ArrayList<T> implements List<T>
return get(M.irand(0, last()));
}
public T getRandom(RNG rng)
{
if(isEmpty())
{
return null;
}
if(size() == 1)
{
return get(0);
}
return get(rng.i(0, last()));
}
public KList<T> qdel(T t)
{
remove(t);