9
0
mirror of https://github.com/VolmitSoftware/Iris.git synced 2025-12-29 20:19:06 +00:00

Performance & Fixes

This commit is contained in:
Daniel Mills
2020-11-11 16:46:36 -05:00
parent ec39d7146c
commit 4c44957764
18 changed files with 706 additions and 789 deletions

View File

@@ -1,27 +1,20 @@
package com.volmit.iris.object;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.volmit.iris.util.*;
import lombok.Data;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import java.io.File;
import java.io.IOException;
import org.bukkit.Material;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.volmit.iris.util.B;
import com.volmit.iris.util.IO;
import com.volmit.iris.util.KList;
import com.volmit.iris.util.KMap;
import lombok.Data;
import org.bukkit.block.data.BlockData;
@Data
public class IrisCompat
{
private KList<IrisCompatabilityBlockFilter> blockFilters = new KList<>();
private KList<IrisCompatabilityItemFilter> itemFilters = new KList<>();
private transient KMap<String, BlockData> blockResolves = new KMap<>();
private transient KMap<String, Material> itemResolves = new KMap<>();
private KList<IrisCompatabilityBlockFilter> blockFilters;
private KList<IrisCompatabilityItemFilter> itemFilters;
public IrisCompat()
{
@@ -31,162 +24,140 @@ public class IrisCompat
public BlockData getBlock(String n)
{
return blockResolves.compute(n, (k, v) ->
String buf = n;
int err = 16;
BlockData tx = B.getOrNull(buf);
if(tx != null)
{
if(k != null && v != null)
return tx;
}
searching: while(true)
{
if(err-- <= 0)
{
return v;
return B.get("STONE");
}
String buf = k;
int err = 16;
BlockData tx = B.parseBlockDataOrNull(buf);
if(tx != null)
for(IrisCompatabilityBlockFilter i : blockFilters)
{
return tx;
}
searching: while(true)
{
if(err-- <= 0)
if(i.getWhen().equalsIgnoreCase(buf))
{
return B.parseBlockDataOrNull("STONE");
}
BlockData b = i.getReplace();
for(IrisCompatabilityBlockFilter i : blockFilters)
{
if(i.getWhen().equalsIgnoreCase(buf))
if(b != null)
{
BlockData b = i.getReplace();
if(b != null)
{
return b;
}
buf = i.getSupplement();
continue searching;
return b;
}
}
return B.parseBlockDataOrNull("STONE");
buf = i.getSupplement();
continue searching;
}
}
});
return B.get("STONE");
}
}
public Material getItem(String n)
{
return itemResolves.compute(n, (k, v) ->
String buf = n;
int err = 16;
Material txf = B.getMaterialOrNull(buf);
if(txf != null)
{
if(k != null && v != null)
return txf;
}
int nomore = 64;
searching: while(true)
{
if(nomore < 0)
{
return v;
return B.getMaterial("STONE");
}
String buf = k;
int err = 16;
Material txf = B.getMaterialOrNull(buf);
if(txf != null)
nomore--;
if(err-- <= 0)
{
return txf;
}
int nomore = 64;
searching: while(true)
{
if(nomore < 0)
{
return B.parseBlockDataOrNull("STONE").getMaterial();
}
nomore--;
if(err-- <= 0)
{
break;
}
for(IrisCompatabilityItemFilter i : itemFilters)
{
if(i.getWhen().equalsIgnoreCase(buf))
{
Material b = i.getReplace();
if(b != null)
{
return b;
}
buf = i.getSupplement();
continue searching;
}
}
break;
}
buf = k;
BlockData tx = B.parseBlockDataOrNull(buf);
if(tx != null)
for(IrisCompatabilityItemFilter i : itemFilters)
{
return tx.getMaterial();
}
nomore = 64;
searching: while(true)
{
if(nomore < 0)
if(i.getWhen().equalsIgnoreCase(buf))
{
return B.parseBlockDataOrNull("STONE").getMaterial();
}
Material b = i.getReplace();
nomore--;
if(err-- <= 0)
{
return B.parseBlockDataOrNull("STONE").getMaterial();
}
for(IrisCompatabilityBlockFilter i : blockFilters)
{
if(i.getWhen().equalsIgnoreCase(buf))
if(b != null)
{
BlockData b = i.getReplace();
if(b != null)
{
return b.getMaterial();
}
buf = i.getSupplement();
continue searching;
return b;
}
}
return B.parseBlockDataOrNull("STONE").getMaterial();
buf = i.getSupplement();
continue searching;
}
}
});
break;
}
buf = n;
BlockData tx = B.getOrNull(buf);
if(tx != null)
{
return tx.getMaterial();
}
nomore = 64;
searching: while(true)
{
if(nomore < 0)
{
return B.getMaterial("STONE");
}
nomore--;
if(err-- <= 0)
{
return B.getMaterial("STONE");
}
for(IrisCompatabilityBlockFilter i : blockFilters)
{
if(i.getWhen().equalsIgnoreCase(buf))
{
BlockData b = i.getReplace();
if(b != null)
{
return b.getMaterial();
}
buf = i.getSupplement();
continue searching;
}
}
return B.getMaterial("STONE");
}
}
public static IrisCompat configured(File f)
{
IrisCompat def = new IrisCompat();
String defa = new JSONObject(new Gson().toJson(def)).toString(4);
J.attemptAsync(() -> IO.writeAll(new File(f.getParentFile(), "compat.default.json"), defa));
if(!f.exists())
{
try
{
IO.writeAll(f, new Gson().toJson(def));
}
catch(IOException e)
{
e.printStackTrace();
}
J.attemptAsync(() -> IO.writeAll(f, defa));
}
try
@@ -195,12 +166,12 @@ public class IrisCompat
for(IrisCompatabilityBlockFilter i : rea.getBlockFilters())
{
def.getBlockFilters().add(0, i);
def.getBlockFilters().add(i);
}
for(IrisCompatabilityItemFilter i : rea.getItemFilters())
{
def.getItemFilters().add(0, i);
def.getItemFilters().add(i);
}
}

View File

@@ -44,14 +44,14 @@ public class IrisCompatabilityBlockFilter
public BlockData getFind()
{
return findData.aquire(() -> B.getBlockData(when));
return findData.aquire(() -> B.get(when));
}
public BlockData getReplace()
{
return replaceData.aquire(() ->
{
BlockData b = B.parseBlockDataOrNull(supplement);
BlockData b = B.getOrNull(supplement);
if(b == null)
{

View File

@@ -401,16 +401,6 @@ public class IrisDimension extends IrisRegistrant
return r;
}
public BlockData resolveBlock(String bd)
{
return Iris.compat.getBlock(bd);
}
public Material resolveItem(String bd)
{
return Iris.compat.getItem(bd);
}
public IrisGeneratorStyle getBiomeStyle(InferredType type)
{
switch(type)

View File

@@ -37,10 +37,10 @@ import lombok.experimental.Accessors;
@EqualsAndHashCode(callSuper = false)
public class IrisObject extends IrisRegistrant
{
private static final BlockData AIR = B.getBlockData("CAVE_AIR");
private static final BlockData VAIR = B.getBlockData("VOID_AIR");
private static final BlockData VAIR_DEBUG = B.getBlockData("COBWEB");
private static final BlockData[] SNOW_LAYERS = new BlockData[] {B.getBlockData("minecraft:snow[layers=1]"), B.getBlockData("minecraft:snow[layers=2]"), B.getBlockData("minecraft:snow[layers=3]"), B.getBlockData("minecraft:snow[layers=4]"), B.getBlockData("minecraft:snow[layers=5]"), B.getBlockData("minecraft:snow[layers=6]"), B.getBlockData("minecraft:snow[layers=7]"), B.getBlockData("minecraft:snow[layers=8]")};
private static final BlockData AIR = B.get("CAVE_AIR");
private static final BlockData VAIR = B.get("VOID_AIR");
private static final BlockData VAIR_DEBUG = B.get("COBWEB");
private static final BlockData[] SNOW_LAYERS = new BlockData[] {B.get("minecraft:snow[layers=1]"), B.get("minecraft:snow[layers=2]"), B.get("minecraft:snow[layers=3]"), B.get("minecraft:snow[layers=4]"), B.get("minecraft:snow[layers=5]"), B.get("minecraft:snow[layers=6]"), B.get("minecraft:snow[layers=7]"), B.get("minecraft:snow[layers=8]")};
public static boolean shitty = false;
private KMap<BlockVector, BlockData> blocks;
private int w;
@@ -234,7 +234,7 @@ public class IrisObject extends IrisRegistrant
for(int i = 0; i < s; i++)
{
blocks.put(new BlockVector(din.readShort(), din.readShort(), din.readShort()), B.getBlockData(din.readUTF()));
blocks.put(new BlockVector(din.readShort(), din.readShort(), din.readShort()), B.get(din.readUTF()));
}
}