mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-26 05:50:39 +00:00
5 files changed
+21
-56
No files matched your search
@@ -387,6 +387,8 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void enable() {
|
private void enable() {
|
||||||
|
IrisToolbelt.retainMantleDataForSlice(String.class.getCanonicalName());
|
||||||
|
IrisToolbelt.retainMantleDataForSlice(BlockData.class.getCanonicalName());
|
||||||
instance = this;
|
instance = this;
|
||||||
services = new KMap<>();
|
services = new KMap<>();
|
||||||
initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class<? extends IrisService>) i.getClass(), (IrisService) i));
|
initialize("com.volmit.iris.core.service").forEach((i) -> services.put((Class<? extends IrisService>) i.getClass(), (IrisService) i));
|
||||||
@@ -414,8 +416,6 @@ public class Iris extends VolmitPlugin implements Listener {
|
|||||||
splash();
|
splash();
|
||||||
autoStartStudio();
|
autoStartStudio();
|
||||||
checkForBukkitWorlds();
|
checkForBukkitWorlds();
|
||||||
IrisToolbelt.retainMantleDataForSlice(String.class.getCanonicalName());
|
|
||||||
IrisToolbelt.retainMantleDataForSlice(BlockData.class.getCanonicalName());
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class CommandWhat implements DecreeExecutor {
|
|||||||
@Decree(description = "What biome am i in?", origin = DecreeOrigin.PLAYER)
|
@Decree(description = "What biome am i in?", origin = DecreeOrigin.PLAYER)
|
||||||
public void biome() {
|
public void biome() {
|
||||||
try {
|
try {
|
||||||
IrisBiome b = engine().getBiome(player().getLocation().getBlockX(), player().getLocation().getBlockY(), player().getLocation().getBlockZ());
|
IrisBiome b = engine().getBiome(player().getLocation().getBlockX(), player().getLocation().getBlockY() - player().getWorld().getMinHeight(), player().getLocation().getBlockZ());
|
||||||
sender().sendMessage("IBiome: " + b.getLoadKey() + " (" + b.getDerivative().name() + ")");
|
sender().sendMessage("IBiome: " + b.getLoadKey() + " (" + b.getDerivative().name() + ")");
|
||||||
|
|
||||||
} catch(Throwable e) {
|
} catch(Throwable e) {
|
||||||
|
|||||||
@@ -20,20 +20,10 @@ package com.volmit.iris.engine;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.core.IrisSettings;
|
import com.volmit.iris.core.IrisSettings;
|
||||||
import com.volmit.iris.engine.data.cache.Cache;
|
import com.volmit.iris.core.loader.IrisData;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.framework.EngineAssignedWorldManager;
|
import com.volmit.iris.engine.framework.EngineAssignedWorldManager;
|
||||||
import com.volmit.iris.engine.object.IRare;
|
import com.volmit.iris.engine.object.*;
|
||||||
import com.volmit.iris.engine.object.IrisBiome;
|
|
||||||
import com.volmit.iris.engine.object.IrisBlockDrops;
|
|
||||||
import com.volmit.iris.engine.object.IrisEngineChunkData;
|
|
||||||
import com.volmit.iris.engine.object.IrisEngineData;
|
|
||||||
import com.volmit.iris.engine.object.IrisEngineSpawnerCooldown;
|
|
||||||
import com.volmit.iris.engine.object.IrisEntitySpawn;
|
|
||||||
import com.volmit.iris.engine.object.IrisMarker;
|
|
||||||
import com.volmit.iris.engine.object.IrisPosition;
|
|
||||||
import com.volmit.iris.engine.object.IrisRegion;
|
|
||||||
import com.volmit.iris.engine.object.IrisSpawner;
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import com.volmit.iris.util.collection.KMap;
|
import com.volmit.iris.util.collection.KMap;
|
||||||
import com.volmit.iris.util.collection.KSet;
|
import com.volmit.iris.util.collection.KSet;
|
||||||
@@ -55,6 +45,7 @@ import lombok.Data;
|
|||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -69,7 +60,6 @@ import java.util.Set;
|
|||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
@@ -617,7 +607,6 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
@Override
|
@Override
|
||||||
public void onBlockBreak(BlockBreakEvent e) {
|
public void onBlockBreak(BlockBreakEvent e) {
|
||||||
if(e.getBlock().getWorld().equals(getTarget().getWorld().realWorld())) {
|
if(e.getBlock().getWorld().equals(getTarget().getWorld().realWorld())) {
|
||||||
|
|
||||||
J.a(() -> {
|
J.a(() -> {
|
||||||
MatterMarker marker = getMantle().get(e.getBlock().getX(), e.getBlock().getY(), e.getBlock().getZ(), MatterMarker.class);
|
MatterMarker marker = getMantle().get(e.getBlock().getX(), e.getBlock().getY(), e.getBlock().getZ(), MatterMarker.class);
|
||||||
|
|
||||||
@@ -635,52 +624,30 @@ public class IrisWorldManager extends EngineAssignedWorldManager {
|
|||||||
});
|
});
|
||||||
|
|
||||||
KList<ItemStack> d = new KList<>();
|
KList<ItemStack> d = new KList<>();
|
||||||
Runnable drop = () -> J.s(() -> d.forEach((i) -> e.getBlock().getWorld().dropItemNaturally(e.getBlock().getLocation().clone().add(0.5, 0.5, 0.5), i)));
|
|
||||||
IrisBiome b = getEngine().getBiome(e.getBlock().getLocation());
|
IrisBiome b = getEngine().getBiome(e.getBlock().getLocation());
|
||||||
|
List<IrisBlockDrops> dropProviders = filterDrops(b.getBlockDrops(), e, getData());
|
||||||
|
|
||||||
if(dropItems(e, d, drop, b.getBlockDrops(), b)) {
|
if(dropProviders.stream().noneMatch(IrisBlockDrops::isSkipParents)) {
|
||||||
return;
|
IrisRegion r = getEngine().getRegion(e.getBlock().getLocation());
|
||||||
|
dropProviders.addAll(filterDrops(r.getBlockDrops(), e, getData()));
|
||||||
|
dropProviders.addAll(filterDrops(getEngine().getDimension().getBlockDrops(), e, getData()));
|
||||||
}
|
}
|
||||||
|
|
||||||
IrisRegion r = getEngine().getRegion(e.getBlock().getLocation());
|
dropProviders.forEach(provider -> provider.fillDrops(false, d));
|
||||||
|
|
||||||
if(dropItems(e, d, drop, r.getBlockDrops(), b)) {
|
if(dropProviders.stream().anyMatch(IrisBlockDrops::isReplaceVanillaDrops)) {
|
||||||
return;
|
e.setDropItems(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(IrisBlockDrops i : getEngine().getDimension().getBlockDrops()) {
|
if(d.isNotEmpty()) {
|
||||||
if(i.shouldDropFor(e.getBlock().getBlockData(), getData())) {
|
World w = e.getBlock().getWorld();
|
||||||
if(i.isReplaceVanillaDrops()) {
|
J.s(() -> d.forEach(item -> w.dropItemNaturally(e.getBlock().getLocation().clone().add(.5, .5, .5), item)));
|
||||||
e.setDropItems(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
i.fillDrops(false, d);
|
|
||||||
|
|
||||||
if(i.isSkipParents()) {
|
|
||||||
drop.run();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean dropItems(BlockBreakEvent e, KList<ItemStack> d, Runnable drop, KList<IrisBlockDrops> blockDrops, IrisBiome b) {
|
private List<IrisBlockDrops> filterDrops(KList<IrisBlockDrops> drops, BlockBreakEvent e, IrisData data) {
|
||||||
for(IrisBlockDrops i : blockDrops) {
|
return new KList<>(drops.stream().filter(d -> d.shouldDropFor(e.getBlock().getBlockData(), data)).toList());
|
||||||
if(i.shouldDropFor(e.getBlock().getBlockData(), getData())) {
|
|
||||||
if(i.isReplaceVanillaDrops()) {
|
|
||||||
e.setDropItems(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
i.fillDrops(false, d);
|
|
||||||
|
|
||||||
if(i.isSkipParents()) {
|
|
||||||
drop.run();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -56,8 +56,7 @@ public class IrisBlockDrops {
|
|||||||
private boolean replaceVanillaDrops = false;
|
private boolean replaceVanillaDrops = false;
|
||||||
|
|
||||||
public boolean shouldDropFor(BlockData data, IrisData rdata) {
|
public boolean shouldDropFor(BlockData data, IrisData rdata) {
|
||||||
KList<BlockData> list = this.data.aquire(() ->
|
KList<BlockData> list = this.data.aquire(() -> {
|
||||||
{
|
|
||||||
KList<BlockData> b = new KList<>();
|
KList<BlockData> b = new KList<>();
|
||||||
|
|
||||||
for(IrisBlockData i : getBlocks()) {
|
for(IrisBlockData i : getBlocks()) {
|
||||||
|
|||||||
@@ -579,8 +579,7 @@ public class Mantle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void deleteChunkSlice(int x, int z, Class<?> c) {
|
public void deleteChunkSlice(int x, int z, Class<?> c) {
|
||||||
if(!IrisToolbelt.toolbeltConfiguration.isEmpty() && IrisToolbelt.toolbeltConfiguration.getOrDefault("retain.mantle." + c.getCanonicalName(), false))
|
if(!IrisToolbelt.toolbeltConfiguration.isEmpty() && IrisToolbelt.toolbeltConfiguration.getOrDefault("retain.mantle." + c.getCanonicalName(), false)) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user