mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-06-17 06:11:06 +00:00
fix only the 0 0 chunk being updated
This commit is contained in:
@@ -4,7 +4,7 @@ import com.volmit.iris.engine.framework.Engine;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
@@ -30,7 +30,7 @@ public abstract class ExternalDataProvider {
|
|||||||
public abstract BlockData getBlockData(Identifier blockId) throws MissingResourceException;
|
public abstract BlockData getBlockData(Identifier blockId) throws MissingResourceException;
|
||||||
|
|
||||||
public abstract ItemStack getItemStack(Identifier itemId) throws MissingResourceException;
|
public abstract ItemStack getItemStack(Identifier itemId) throws MissingResourceException;
|
||||||
public void processUpdate(Engine engine, Location location, Identifier blockId) {};
|
public void processUpdate(Engine engine, Block block, Identifier blockId) {};
|
||||||
|
|
||||||
public abstract Identifier[] getBlockTypes();
|
public abstract Identifier[] getBlockTypes();
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,9 @@ import com.volmit.iris.util.reflect.WrappedReturningMethod;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.block.data.type.Leaves;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -54,7 +56,10 @@ public class HMCLeavesDataProvider extends ExternalDataProvider {
|
|||||||
Material material = worldBlockType.invoke(o, new Object[0]);
|
Material material = worldBlockType.invoke(o, new Object[0]);
|
||||||
if (material == null)
|
if (material == null)
|
||||||
throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key());
|
throw new MissingResourceException("Failed to find BlockData!", blockId.namespace(), blockId.key());
|
||||||
return new IrisBlockData(Bukkit.createBlockData(material), blockId);
|
BlockData blockData = Bukkit.createBlockData(material);
|
||||||
|
if (blockData instanceof Leaves leaves)
|
||||||
|
leaves.setPersistent(true);
|
||||||
|
return new IrisBlockData(blockData, blockId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -65,8 +70,10 @@ public class HMCLeavesDataProvider extends ExternalDataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processUpdate(Engine engine, Location location, Identifier blockId) {
|
public void processUpdate(Engine engine, Block block, Identifier blockId) {
|
||||||
setCustomBlock.invoke(apiInstance, new Object[]{location, blockId.key(), true});
|
Boolean result = setCustomBlock.invoke(apiInstance, new Object[]{block.getLocation(), blockId.key(), true});
|
||||||
|
if (result == null || !result)
|
||||||
|
Iris.warn("Failed to set custom block! " + blockId.key() + " " + block.getX() + " " + block.getY() + " " + block.getZ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -36,9 +36,8 @@ import io.th0rgal.oraxen.mechanics.provided.gameplay.furniture.FurnitureMechanic
|
|||||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.noteblock.NoteBlockMechanicFactory;
|
import io.th0rgal.oraxen.mechanics.provided.gameplay.noteblock.NoteBlockMechanicFactory;
|
||||||
import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanicFactory;
|
import io.th0rgal.oraxen.mechanics.provided.gameplay.stringblock.StringBlockMechanicFactory;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.block.data.MultipleFacing;
|
import org.bukkit.block.data.MultipleFacing;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -90,10 +89,10 @@ public class OraxenDataProvider extends ExternalDataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void processUpdate(Engine engine, Location location, Identifier blockId) {
|
public void processUpdate(Engine engine, Block block, Identifier blockId) {
|
||||||
Mechanic mechanic = getFactory(blockId).getMechanic(blockId.key());
|
Mechanic mechanic = getFactory(blockId).getMechanic(blockId.key());
|
||||||
if (mechanic instanceof FurnitureMechanic f) {
|
if (mechanic instanceof FurnitureMechanic f) {
|
||||||
f.place(location);
|
f.place(block.getLocation());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import com.volmit.iris.util.collection.KList;
|
|||||||
import com.volmit.iris.util.plugin.IrisService;
|
import com.volmit.iris.util.plugin.IrisService;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.server.PluginEnableEvent;
|
import org.bukkit.event.server.PluginEnableEvent;
|
||||||
@@ -111,13 +111,13 @@ public class ExternalDataSVC implements IrisService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processUpdate(Engine engine, Location location, Identifier blockId) {
|
public void processUpdate(Engine engine, Block block, Identifier blockId) {
|
||||||
Optional<ExternalDataProvider> provider = activeProviders.stream().filter(p -> p.isValidProvider(blockId, true)).findFirst();
|
Optional<ExternalDataProvider> provider = activeProviders.stream().filter(p -> p.isValidProvider(blockId, true)).findFirst();
|
||||||
if (provider.isEmpty()) {
|
if (provider.isEmpty()) {
|
||||||
Iris.warn("No matching Provider found for modded material \"%s\"!", blockId);
|
Iris.warn("No matching Provider found for modded material \"%s\"!", blockId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
provider.get().processUpdate(engine, location, blockId);
|
provider.get().processUpdate(engine, block, blockId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Identifier[] getAllBlockIdentifiers() {
|
public Identifier[] getAllBlockIdentifiers() {
|
||||||
|
|||||||
@@ -259,6 +259,8 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
|||||||
}
|
}
|
||||||
if (data instanceof IrisBlockData d) {
|
if (data instanceof IrisBlockData d) {
|
||||||
getMantle().getMantle().set(x, y, z, d.getCustom());
|
getMantle().getMantle().set(x, y, z, d.getCustom());
|
||||||
|
} else {
|
||||||
|
getMantle().getMantle().remove(x, y, z, Identifier.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,7 +287,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
|
|||||||
}));
|
}));
|
||||||
getMantle().getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.CUSTOM, () -> J.s(() -> {
|
getMantle().getMantle().raiseFlag(c.getX(), c.getZ(), MantleFlag.CUSTOM, () -> J.s(() -> {
|
||||||
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), Identifier.class, (x, y, z, v) -> {
|
getMantle().getMantle().iterateChunk(c.getX(), c.getZ(), Identifier.class, (x, y, z, v) -> {
|
||||||
Iris.service(ExternalDataSVC.class).processUpdate(this, new Location(c.getWorld(), x, y + getWorld().minHeight(), z), v);
|
Iris.service(ExternalDataSVC.class).processUpdate(this, c.getBlock(x & 15, y + getWorld().minHeight(), z & 15), v);
|
||||||
});
|
});
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user