mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
To make brian shut up.
This commit is contained in:
parent
c3de8b33de
commit
e225bcfb96
@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
@ -27,7 +28,9 @@ public abstract class BlockDataProvider {
|
|||||||
|
|
||||||
public abstract BlockData getBlockData(NamespacedKey blockId) throws MissingResourceException;
|
public abstract BlockData getBlockData(NamespacedKey blockId) throws MissingResourceException;
|
||||||
|
|
||||||
|
public abstract ItemStack getItemStack(NamespacedKey itemId) throws MissingResourceException;
|
||||||
|
|
||||||
public abstract NamespacedKey[] getBlockTypes();
|
public abstract NamespacedKey[] getBlockTypes();
|
||||||
|
|
||||||
public abstract boolean isProviderBlock(NamespacedKey namespace);
|
public abstract boolean isValidProvider(NamespacedKey namespace);
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,11 @@ package com.volmit.iris.core.link;
|
|||||||
|
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
import dev.lone.itemsadder.api.CustomBlock;
|
import dev.lone.itemsadder.api.CustomBlock;
|
||||||
|
import dev.lone.itemsadder.api.CustomStack;
|
||||||
import dev.lone.itemsadder.api.ItemsAdder;
|
import dev.lone.itemsadder.api.ItemsAdder;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
|
|
||||||
@ -22,6 +24,14 @@ public class ItemAdderLink extends BlockDataProvider {
|
|||||||
return CustomBlock.getBaseBlockData(blockId.toString());
|
return CustomBlock.getBaseBlockData(blockId.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStack(NamespacedKey itemId) throws MissingResourceException {
|
||||||
|
CustomStack stack = CustomStack.getInstance(itemId.toString());
|
||||||
|
if(stack == null)
|
||||||
|
throw new MissingResourceException("Failed to find ItemData!", itemId.getNamespace(), itemId.getKey());
|
||||||
|
return stack.getItemStack();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NamespacedKey[] getBlockTypes() {
|
public NamespacedKey[] getBlockTypes() {
|
||||||
KList<NamespacedKey> keys = new KList<>();
|
KList<NamespacedKey> keys = new KList<>();
|
||||||
@ -31,7 +41,7 @@ public class ItemAdderLink extends BlockDataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isProviderBlock(NamespacedKey blockId) {
|
public boolean isValidProvider(NamespacedKey blockId) {
|
||||||
for(NamespacedKey k : getBlockTypes())
|
for(NamespacedKey k : getBlockTypes())
|
||||||
if(k.equals(blockId)) {
|
if(k.equals(blockId)) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -20,6 +20,7 @@ package com.volmit.iris.core.link;
|
|||||||
|
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
import com.volmit.iris.util.collection.KList;
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
import io.th0rgal.oraxen.items.ItemBuilder;
|
||||||
import io.th0rgal.oraxen.items.OraxenItems;
|
import io.th0rgal.oraxen.items.OraxenItems;
|
||||||
import io.th0rgal.oraxen.mechanics.MechanicFactory;
|
import io.th0rgal.oraxen.mechanics.MechanicFactory;
|
||||||
import io.th0rgal.oraxen.mechanics.MechanicsManager;
|
import io.th0rgal.oraxen.mechanics.MechanicsManager;
|
||||||
@ -32,10 +33,12 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
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 java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public class OraxenDataProvider extends BlockDataProvider {
|
public class OraxenDataProvider extends BlockDataProvider {
|
||||||
|
|
||||||
@ -70,6 +73,12 @@ public class OraxenDataProvider extends BlockDataProvider {
|
|||||||
throw new MissingResourceException("Failed to find BlockData!", blockId.getNamespace(), blockId.getKey());
|
throw new MissingResourceException("Failed to find BlockData!", blockId.getNamespace(), blockId.getKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStack(NamespacedKey itemId) throws MissingResourceException {
|
||||||
|
Optional<ItemBuilder> opt = OraxenItems.getOptionalItemById(itemId.getKey());
|
||||||
|
return opt.orElseThrow(() -> new MissingResourceException("Failed to find ItemData!", itemId.getNamespace(), itemId.getKey())).build();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NamespacedKey[] getBlockTypes() {
|
public NamespacedKey[] getBlockTypes() {
|
||||||
KList<NamespacedKey> names = new KList<>();
|
KList<NamespacedKey> names = new KList<>();
|
||||||
@ -90,7 +99,7 @@ public class OraxenDataProvider extends BlockDataProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isProviderBlock(NamespacedKey key) {
|
public boolean isValidProvider(NamespacedKey key) {
|
||||||
return key.getNamespace().equalsIgnoreCase("oraxen");
|
return key.getNamespace().equalsIgnoreCase("oraxen");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ import com.volmit.iris.util.plugin.IrisService;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.bukkit.NamespacedKey;
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.MissingResourceException;
|
import java.util.MissingResourceException;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -46,14 +47,15 @@ public class CustomBlockDataSVC implements IrisService {
|
|||||||
|
|
||||||
public void addProvider(BlockDataProvider... provider) {
|
public void addProvider(BlockDataProvider... provider) {
|
||||||
for(BlockDataProvider p : provider) {
|
for(BlockDataProvider p : provider) {
|
||||||
if(p.getPlugin() != null)
|
if(p.getPlugin() != null) {
|
||||||
providers.add(p);
|
providers.add(p);
|
||||||
p.init();
|
p.init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Optional<BlockData> getBlockData(NamespacedKey key) {
|
public Optional<BlockData> getBlockData(NamespacedKey key) {
|
||||||
Optional<BlockDataProvider> provider = providers.stream().filter(p -> p.isPresent() && p.isProviderBlock(key)).findFirst();
|
Optional<BlockDataProvider> provider = providers.stream().filter(p -> p.isPresent() && p.isValidProvider(key)).findFirst();
|
||||||
if(provider.isEmpty())
|
if(provider.isEmpty())
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
try {
|
try {
|
||||||
@ -64,6 +66,18 @@ public class CustomBlockDataSVC implements IrisService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<ItemStack> getItemStack(NamespacedKey key) {
|
||||||
|
Optional<BlockDataProvider> provider = providers.stream().filter(p -> p.isPresent() && p.isValidProvider(key)).findFirst();
|
||||||
|
if(provider.isEmpty())
|
||||||
|
return Optional.empty();
|
||||||
|
try {
|
||||||
|
return Optional.of(provider.get().getItemStack(key));
|
||||||
|
} catch(MissingResourceException e) {
|
||||||
|
Iris.error(e.getMessage() + " - [" + e.getClassName() + ":" + e.getKey() + "]");
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public NamespacedKey[] getAllIdentifiers() {
|
public NamespacedKey[] getAllIdentifiers() {
|
||||||
KList<NamespacedKey> names = new KList<>();
|
KList<NamespacedKey> names = new KList<>();
|
||||||
providers.stream().filter(BlockDataProvider::isPresent).forEach(p -> names.add(p.getBlockTypes()));
|
providers.stream().filter(BlockDataProvider::isPresent).forEach(p -> names.add(p.getBlockTypes()));
|
||||||
|
@ -20,6 +20,7 @@ package com.volmit.iris.engine.object;
|
|||||||
|
|
||||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||||
import com.volmit.iris.Iris;
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.core.service.CustomBlockDataSVC;
|
||||||
import com.volmit.iris.engine.data.cache.AtomicCache;
|
import com.volmit.iris.engine.data.cache.AtomicCache;
|
||||||
import com.volmit.iris.engine.object.annotations.ArrayType;
|
import com.volmit.iris.engine.object.annotations.ArrayType;
|
||||||
import com.volmit.iris.engine.object.annotations.Desc;
|
import com.volmit.iris.engine.object.annotations.Desc;
|
||||||
@ -36,6 +37,7 @@ import com.volmit.iris.util.format.Form;
|
|||||||
import com.volmit.iris.util.json.JSONObject;
|
import com.volmit.iris.util.json.JSONObject;
|
||||||
import com.volmit.iris.util.math.RNG;
|
import com.volmit.iris.util.math.RNG;
|
||||||
import com.volmit.iris.util.noise.CNG;
|
import com.volmit.iris.util.noise.CNG;
|
||||||
|
import com.volmit.iris.util.plugin.IrisService;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@ -44,6 +46,7 @@ import net.minecraft.nbt.CompoundTag;
|
|||||||
import net.minecraft.nbt.TagParser;
|
import net.minecraft.nbt.TagParser;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.NamespacedKey;
|
||||||
import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack;
|
||||||
import org.bukkit.inventory.ItemFlag;
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -52,7 +55,9 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||||||
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
import org.bukkit.inventory.meta.LeatherArmorMeta;
|
||||||
import org.bukkit.material.Colorable;
|
import org.bukkit.material.Colorable;
|
||||||
|
|
||||||
|
import javax.xml.stream.events.Namespace;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Snippet("loot")
|
@Snippet("loot")
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@ -117,7 +122,16 @@ public class IrisLoot {
|
|||||||
|
|
||||||
public ItemStack get(boolean debug, RNG rng) {
|
public ItemStack get(boolean debug, RNG rng) {
|
||||||
try {
|
try {
|
||||||
ItemStack is = new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount())));
|
ItemStack is;
|
||||||
|
Iris.warn(type);
|
||||||
|
if(!type.startsWith("minecraft:") && type.contains(":")) {
|
||||||
|
Optional<ItemStack> opt = Iris.service(CustomBlockDataSVC.class).getItemStack(NamespacedKey.fromString(type));
|
||||||
|
is = opt.orElse(new ItemStack(getType()));
|
||||||
|
is.setAmount(Math.max(1, rng.i(getMinAmount(), getMaxAmount())));
|
||||||
|
} else {
|
||||||
|
is = new ItemStack(getType(), Math.max(1, rng.i(getMinAmount(), getMaxAmount())));
|
||||||
|
}
|
||||||
|
|
||||||
ItemMeta m = is.getItemMeta();
|
ItemMeta m = is.getItemMeta();
|
||||||
|
|
||||||
if(getType().getMaxDurability() > 0 && m instanceof Damageable d) {
|
if(getType().getMaxDurability() > 0 && m instanceof Damageable d) {
|
||||||
@ -184,7 +198,6 @@ public class IrisLoot {
|
|||||||
return applyCustomNbt(is);
|
return applyCustomNbt(is);
|
||||||
} catch(Throwable e) {
|
} catch(Throwable e) {
|
||||||
Iris.reportError(e);
|
Iris.reportError(e);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ItemStack(Material.AIR);
|
return new ItemStack(Material.AIR);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user