mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Reloading & Resource copying
This commit is contained in:
parent
1b88e132cc
commit
da55612726
@ -19,6 +19,7 @@ import ninja.bytecode.iris.pack.IrisPack;
|
||||
import ninja.bytecode.iris.util.IrisController;
|
||||
import ninja.bytecode.shuriken.bench.PrecisionStopwatch;
|
||||
import ninja.bytecode.shuriken.collections.GMap;
|
||||
import ninja.bytecode.shuriken.execution.J;
|
||||
import ninja.bytecode.shuriken.execution.TaskExecutor;
|
||||
import ninja.bytecode.shuriken.execution.TaskExecutor.TaskGroup;
|
||||
import ninja.bytecode.shuriken.format.F;
|
||||
@ -48,17 +49,18 @@ public class PackController implements IrisController
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
public boolean isReady()
|
||||
{
|
||||
return ready;
|
||||
}
|
||||
|
||||
|
||||
public void createTempCache(File jar)
|
||||
{
|
||||
try
|
||||
{
|
||||
File temp = new File(System.getProperty("java.io.tmpdir") + "/Iris/");
|
||||
J.a(() -> IO.delete(new File(Iris.instance.getDataFolder(), "pack")));
|
||||
File temp = Iris.instance.getDataFolder();
|
||||
temp.mkdirs();
|
||||
L.i("Iris Cache: " + temp.getAbsolutePath());
|
||||
ZipFile zipFile = new ZipFile(jar);
|
||||
@ -80,7 +82,7 @@ public class PackController implements IrisController
|
||||
|
||||
zipFile.close();
|
||||
}
|
||||
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
L.w(ChatColor.YELLOW + "Failed to cache internal resources. Did you reload Iris externally?");
|
||||
@ -119,7 +121,7 @@ public class PackController implements IrisController
|
||||
gg.execute();
|
||||
exf.close();
|
||||
int m = 0;
|
||||
|
||||
|
||||
for(GenObjectGroup i : getGenObjectGroups().v())
|
||||
{
|
||||
m += i.size();
|
||||
|
@ -284,7 +284,7 @@ public class GenObject
|
||||
|
||||
for(BlockVector i : g.k())
|
||||
{
|
||||
MB mb = rotate(from, to, g.get(i));
|
||||
MB mb = g.get(i);
|
||||
s.put(VectorMath.rotate(from, to, i).toBlockVector(), mb);
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,7 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import ninja.bytecode.iris.Iris;
|
||||
import ninja.bytecode.iris.controller.PackController;
|
||||
import ninja.bytecode.iris.controller.TimingsController;
|
||||
@ -17,6 +18,7 @@ import ninja.bytecode.iris.generator.IrisGenerator;
|
||||
import ninja.bytecode.iris.pack.IrisBiome;
|
||||
import ninja.bytecode.shuriken.collections.GMap;
|
||||
import ninja.bytecode.shuriken.collections.GSet;
|
||||
import ninja.bytecode.shuriken.logging.L;
|
||||
import ninja.bytecode.shuriken.math.M;
|
||||
|
||||
public class GenObjectDecorator extends BlockPopulator
|
||||
@ -37,7 +39,16 @@ public class GenObjectDecorator extends BlockPopulator
|
||||
|
||||
for(String j : i.getSchematicGroups().k())
|
||||
{
|
||||
gk.put(Iris.getController(PackController.class).getGenObjectGroups().get(j), i.getSchematicGroups().get(j));
|
||||
try
|
||||
{
|
||||
gk.put(Iris.getController(PackController.class).getGenObjectGroups().get(j), i.getSchematicGroups().get(j));
|
||||
}
|
||||
|
||||
catch(Throwable e)
|
||||
{
|
||||
L.f(ChatColor.RED + "Failed to inject " + j + " into GenObjectDecorator");
|
||||
L.ex(e);
|
||||
}
|
||||
}
|
||||
|
||||
populationCache.put(i.getRealBiome(), gk);
|
||||
@ -49,39 +60,39 @@ public class GenObjectDecorator extends BlockPopulator
|
||||
{
|
||||
Iris.getController(TimingsController.class).started("decor");
|
||||
GSet<Biome> hits = new GSet<>();
|
||||
|
||||
|
||||
for(int i = 0; i < Iris.settings.performance.decorationAccuracy; i++)
|
||||
{
|
||||
int x = (source.getX() << 4) + random.nextInt(16);
|
||||
int z = (source.getZ() << 4) + random.nextInt(16);
|
||||
Biome biome = world.getBiome(x, z);
|
||||
|
||||
|
||||
if(hits.contains(biome))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
IrisBiome ibiome = biomeMap.get(biome);
|
||||
|
||||
|
||||
if(ibiome == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
GMap<GenObjectGroup, Double> objects = populationCache.get(biome);
|
||||
|
||||
|
||||
if(objects == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
hits.add(biome);
|
||||
populate(world, random, source, biome, ibiome, objects);
|
||||
}
|
||||
|
||||
Iris.getController(TimingsController.class).stopped("decor");
|
||||
}
|
||||
|
||||
|
||||
private void populate(World world, Random random, Chunk source, Biome biome, IrisBiome ibiome, GMap<GenObjectGroup, Double> objects)
|
||||
{
|
||||
for(GenObjectGroup i : objects.k())
|
||||
@ -92,12 +103,12 @@ public class GenObjectDecorator extends BlockPopulator
|
||||
int z = (source.getZ() << 4) + random.nextInt(16);
|
||||
Block b = world.getHighestBlockAt(x, z).getRelative(BlockFace.DOWN);
|
||||
Material t = b.getType();
|
||||
|
||||
|
||||
if(!t.isSolid() || !ibiome.isSurface(t))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
i.getSchematics().get(random.nextInt(i.getSchematics().size())).place(world, x, b.getY(), z);
|
||||
}
|
||||
}
|
||||
@ -114,14 +125,14 @@ public class GenObjectDecorator extends BlockPopulator
|
||||
{
|
||||
return (int) chance;
|
||||
}
|
||||
|
||||
|
||||
int floor = (int) Math.floor(chance);
|
||||
|
||||
if(chance - floor > 0 && M.r(chance - floor))
|
||||
{
|
||||
floor++;
|
||||
}
|
||||
|
||||
|
||||
return floor;
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
"LONG_GRASS:2=0.09"
|
||||
],
|
||||
"objects": [
|
||||
"tree/serrulata/alt/medium=0.33",
|
||||
"tree/serrulata/bleeding/alt/medium=0.33",
|
||||
"tree/serrulata/bleeding/large=0.42",
|
||||
"tree/serrulata/bleeding/medium=0.42",
|
||||
"tree/serrulata/nobleed/medium=0.42",
|
||||
|
Loading…
x
Reference in New Issue
Block a user