mirror of
https://github.com/JamesPeters98/ChestsPlusPlus.git
synced 2025-02-02 21:51:31 +01:00
Drop 1.14 & 1.15 Support
Fix NPE issue in EntityEventListener
This commit is contained in:
parent
2569357d8b
commit
51035b60f4
@ -24,7 +24,7 @@
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.14.2-R0.1-SNAPSHOT</version>
|
||||
<version>1.16.1-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
@ -4,16 +4,21 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class Api {
|
||||
|
||||
private static Plugin plugin;
|
||||
private static NMSProvider nmsProvider;
|
||||
|
||||
public static void init(Plugin plugin) {
|
||||
public static NMSProvider init(Plugin plugin, Supplier<NMSProvider> defaultProvider) {
|
||||
Api.plugin = plugin;
|
||||
Values.init(plugin);
|
||||
nmsProvider = setupNMSProvider();
|
||||
if (nmsProvider == null)
|
||||
nmsProvider = defaultProvider.get();
|
||||
|
||||
return nmsProvider;
|
||||
}
|
||||
|
||||
public static Plugin getPlugin() {
|
||||
@ -33,8 +38,4 @@ public class Api {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static NMSProvider getNmsProvider() {
|
||||
return nmsProvider;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,137 @@
|
||||
package com.jamesdpeters.minecraft.chests;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class BaseMaterialChecker extends MaterialChecker {
|
||||
static List<Material> version_Items;
|
||||
static List<Material> version_Ignored_Items;
|
||||
|
||||
public BaseMaterialChecker(){
|
||||
version_Items = new ArrayList<>();
|
||||
version_Items.addAll(Tag.SIGNS.getValues());
|
||||
version_Items.addAll(Tag.WALL_SIGNS.getValues());
|
||||
version_Items.addAll(Tag.DOORS.getValues());
|
||||
version_Items.addAll(Tag.SAPLINGS.getValues());
|
||||
version_Items.addAll(Tag.SMALL_FLOWERS.getValues());
|
||||
version_Items.addAll(Tag.RAILS.getValues());
|
||||
version_Items.addAll(Tag.CORAL_PLANTS.getValues());
|
||||
version_Items.addAll(getGlassPanes());
|
||||
version_Items.add(Material.BROWN_MUSHROOM);
|
||||
version_Items.add(Material.RED_MUSHROOM);
|
||||
version_Items.add(Material.END_ROD);
|
||||
version_Items.add(Material.COBWEB);
|
||||
version_Items.add(Material.GRASS);
|
||||
version_Items.add(Material.FERN);
|
||||
version_Items.add(Material.DEAD_BUSH);
|
||||
version_Items.add(Material.SEAGRASS);
|
||||
version_Items.add(Material.SEA_PICKLE);
|
||||
version_Items.add(Material.LADDER);
|
||||
version_Items.add(Material.IRON_BARS);
|
||||
version_Items.add(Material.VINE);
|
||||
version_Items.add(Material.LILY_PAD);
|
||||
version_Items.add(Material.SUNFLOWER);
|
||||
version_Items.add(Material.LILAC);
|
||||
version_Items.add(Material.ROSE_BUSH);
|
||||
version_Items.add(Material.PEONY);
|
||||
version_Items.add(Material.TALL_GRASS);
|
||||
version_Items.add(Material.LARGE_FERN);
|
||||
version_Items.add(Material.BELL);
|
||||
version_Items.add(Material.CAMPFIRE);
|
||||
version_Items.add(Material.LANTERN);
|
||||
version_Items.add(Material.TURTLE_EGG);
|
||||
version_Items.add(Material.SUGAR_CANE);
|
||||
version_Items.add(Material.KELP);
|
||||
version_Items.add(Material.BAMBOO);
|
||||
version_Items.add(Material.LEVER);
|
||||
version_Items.add(Material.TRIPWIRE_HOOK);
|
||||
version_Items.add(Material.REPEATER);
|
||||
version_Items.add(Material.COMPARATOR);
|
||||
version_Items.add(Material.CAULDRON);
|
||||
version_Items.add(Material.BREWING_STAND);
|
||||
version_Items.add(Material.HOPPER);
|
||||
version_Items.add(Material.TORCH);
|
||||
version_Items.add(Material.WHEAT);
|
||||
|
||||
version_Items.addAll(Tag.CROPS.getValues());
|
||||
version_Items.addAll(Tag.TALL_FLOWERS.getValues());
|
||||
version_Items.addAll(Tag.FLOWERS.getValues());
|
||||
version_Items.add(Material.WARPED_FUNGUS);
|
||||
version_Items.add(Material.WARPED_ROOTS);
|
||||
version_Items.add(Material.TWISTING_VINES);
|
||||
version_Items.add(Material.NETHER_SPROUTS);
|
||||
version_Items.add(Material.WEEPING_VINES);
|
||||
version_Items.add(Material.CRIMSON_ROOTS);
|
||||
version_Items.add(Material.CRIMSON_FUNGUS);
|
||||
version_Items.add(Material.SOUL_CAMPFIRE);
|
||||
version_Items.add(Material.SOUL_LANTERN);
|
||||
version_Items.add(Material.SOUL_TORCH);
|
||||
version_Items.add(Material.CHAIN);
|
||||
|
||||
version_Ignored_Items = new ArrayList<>();
|
||||
version_Ignored_Items.addAll(Tag.BEDS.getValues());
|
||||
version_Ignored_Items.addAll(Tag.BANNERS.getValues());
|
||||
version_Ignored_Items.add(Material.DRAGON_HEAD);
|
||||
version_Ignored_Items.add(Material.PLAYER_HEAD);
|
||||
version_Ignored_Items.add(Material.ZOMBIE_HEAD);
|
||||
version_Ignored_Items.add(Material.SKELETON_SKULL);
|
||||
version_Ignored_Items.add(Material.CREEPER_HEAD);
|
||||
version_Ignored_Items.add(Material.SHIELD);
|
||||
version_Ignored_Items.add(Material.CROSSBOW);
|
||||
version_Ignored_Items.add(Material.TRIDENT);
|
||||
version_Ignored_Items.add(Material.BOW);
|
||||
}
|
||||
|
||||
private static List<Material> getGlassPanes(){
|
||||
List<Material> materials = new ArrayList<>();
|
||||
materials.add(Material.GLASS_PANE);
|
||||
materials.add(Material.BLACK_STAINED_GLASS_PANE);
|
||||
materials.add(Material.BLUE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.BROWN_STAINED_GLASS_PANE);
|
||||
materials.add(Material.CYAN_STAINED_GLASS_PANE);
|
||||
materials.add(Material.GRAY_STAINED_GLASS_PANE);
|
||||
materials.add(Material.GREEN_STAINED_GLASS_PANE);
|
||||
materials.add(Material.LIME_STAINED_GLASS_PANE);
|
||||
materials.add(Material.MAGENTA_STAINED_GLASS_PANE);
|
||||
materials.add(Material.ORANGE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.PINK_STAINED_GLASS_PANE);
|
||||
materials.add(Material.PURPLE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.RED_STAINED_GLASS_PANE);
|
||||
materials.add(Material.WHITE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.YELLOW_STAINED_GLASS_PANE);
|
||||
materials.add(Material.LIGHT_BLUE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.LIGHT_GRAY_STAINED_GLASS_PANE);
|
||||
return materials;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTool(ItemStack itemStack){
|
||||
String matType = itemStack.getType().toString();
|
||||
if(matType.contains("AXE")) return true;
|
||||
if(matType.contains("SWORD")) return true;
|
||||
if(matType.contains("PICKAXE")) return true;
|
||||
if(matType.contains("HOE")) return true;
|
||||
if(matType.contains("SHOVEL")) return true;
|
||||
if(itemStack.getType() == Material.FISHING_ROD) return true;
|
||||
if(itemStack.getType() == Material.CARROT_ON_A_STICK) return true;
|
||||
if(itemStack.getType() == Material.STICK) return true;
|
||||
if(itemStack.getType() == Material.BLAZE_ROD) return true;
|
||||
if(itemStack.getType() == Material.BONE) return true;
|
||||
if(itemStack.getType() == Material.WARPED_FUNGUS_ON_A_STICK) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> graphically2DList() {
|
||||
return version_Items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> ignoredMaterials() {
|
||||
return version_Ignored_Items;
|
||||
}
|
||||
}
|
@ -48,9 +48,10 @@ public abstract class EntityEventListener implements Listener {
|
||||
}
|
||||
|
||||
private void setItemFrames(Stream<Entity> entityStream) {
|
||||
entityStream.filter(entity ->
|
||||
(entity instanceof ItemFrame
|
||||
&& entity.getLocation().getBlock().getRelative(((ItemFrame) entity).getAttachedFace()).getState() instanceof Hopper))
|
||||
.forEach(entity -> Api.getNmsProvider().setItemFrameVisible((ItemFrame) entity, !PluginConfig.INVISIBLE_FILTER_ITEM_FRAMES.get()));
|
||||
entityStream
|
||||
// Filter Item frames that are connected to Hoppers.
|
||||
.filter(entity -> (entity instanceof ItemFrame
|
||||
&& entity.getLocation().getBlock().getRelative(((ItemFrame) entity).getAttachedFace()).getState() instanceof Hopper))
|
||||
.forEach(entity -> ((ItemFrame) entity).setVisible(!PluginConfig.INVISIBLE_FILTER_ITEM_FRAMES.get()));
|
||||
}
|
||||
}
|
||||
|
@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ChestsPlusPlus-Parent</artifactId>
|
||||
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
<artifactId>ChestsPlusPlus_1_14</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spigotmc-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.14.4-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||
<artifactId>ChestsPlusPlus-API</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>craftbukkit</artifactId>
|
||||
<version>1.14.4-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
@ -1,62 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_14_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.ChestOpener;
|
||||
import com.jamesdpeters.minecraft.chests.TileEntityOpener;
|
||||
import com.jamesdpeters.minecraft.chests.v1_14_R1.tileentities.CustomTileEntityBarrel;
|
||||
import com.jamesdpeters.minecraft.chests.v1_14_R1.tileentities.CustomTileEntityChest;
|
||||
import net.minecraft.server.v1_14_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_14_R1.TileEntity;
|
||||
import net.minecraft.server.v1_14_R1.TileEntityBarrel;
|
||||
import net.minecraft.server.v1_14_R1.TileEntityChest;
|
||||
import net.minecraft.server.v1_14_R1.TileEntityChestTrapped;
|
||||
import net.minecraft.server.v1_14_R1.TileEntityTypes;
|
||||
import net.minecraft.server.v1_14_R1.World;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.block.CraftContainer;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ChestOpener_1_14 implements ChestOpener {
|
||||
|
||||
@Override
|
||||
public TileEntityOpener updateState(Inventory inventory, Container chest, TileEntityOpener tileEntityOpener) {
|
||||
if(tileEntityOpener != null) {
|
||||
tileEntityOpener.setViewers(inventory.getViewers());
|
||||
return tileEntityOpener;
|
||||
} else {
|
||||
CraftContainer craftContainer = (CraftContainer) chest;
|
||||
CraftWorld craftWorld = (CraftWorld) craftContainer.getWorld();
|
||||
World world = craftWorld.getHandle();
|
||||
BlockPosition position = craftContainer.getPosition();
|
||||
TileEntity tileEntity = world.getTileEntity(position);
|
||||
|
||||
//Checks if Tile Entity has already got custom Opener.
|
||||
if (tileEntity instanceof TileEntityOpener) {
|
||||
tileEntityOpener = (TileEntityOpener) tileEntity;
|
||||
tileEntityOpener.setViewers(inventory.getViewers());
|
||||
return tileEntityOpener;
|
||||
} else {
|
||||
//If not set the new tile entity and set the viewers.
|
||||
if (tileEntity instanceof TileEntityChest) {
|
||||
CustomTileEntityChest tileEntityChest = new CustomTileEntityChest(tileEntity instanceof TileEntityChestTrapped ? TileEntityTypes.TRAPPED_CHEST : TileEntityTypes.CHEST);
|
||||
setTileEnt(world, position, tileEntityChest, inventory.getViewers());
|
||||
return tileEntityChest;
|
||||
} else if (tileEntity instanceof TileEntityBarrel) {
|
||||
CustomTileEntityBarrel barrel = new CustomTileEntityBarrel();
|
||||
setTileEnt(world, position, barrel, inventory.getViewers());
|
||||
return barrel;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private <T extends TileEntity & TileEntityOpener> void setTileEnt(World world, BlockPosition position, T tileEntOpener, List<HumanEntity> viewers){
|
||||
world.removeTileEntity(position);
|
||||
world.setTileEntity(position, tileEntOpener);
|
||||
tileEntOpener.setViewers(viewers);
|
||||
}
|
||||
}
|
@ -1,101 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_14_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.CraftingProvider;
|
||||
import com.jamesdpeters.minecraft.chests.CraftingResult;
|
||||
import net.minecraft.server.v1_14_R1.Container;
|
||||
import net.minecraft.server.v1_14_R1.ContainerWorkbench;
|
||||
import net.minecraft.server.v1_14_R1.EntityHuman;
|
||||
import net.minecraft.server.v1_14_R1.IRecipe;
|
||||
import net.minecraft.server.v1_14_R1.InventoryCraftResult;
|
||||
import net.minecraft.server.v1_14_R1.InventoryCrafting;
|
||||
import net.minecraft.server.v1_14_R1.Item;
|
||||
import net.minecraft.server.v1_14_R1.RecipeCrafting;
|
||||
import net.minecraft.server.v1_14_R1.RecipeRepair;
|
||||
import net.minecraft.server.v1_14_R1.Recipes;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.CraftServer;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventoryCrafting;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventoryView;
|
||||
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.Recipe;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class Crafting implements CraftingProvider {
|
||||
|
||||
@Override
|
||||
public CraftingResult craft(Player player, World world, ItemStack[] items) {
|
||||
CraftWorld craftWorld = (CraftWorld) world;
|
||||
CraftPlayer craftPlayer = (CraftPlayer) player;
|
||||
ContainerWorkbench workbench = new ContainerWorkbench(-1, craftPlayer.getHandle().inventory);
|
||||
|
||||
CraftInventoryView view = workbench.getBukkitView();
|
||||
CraftInventoryCrafting craftInventoryCrafting = (CraftInventoryCrafting) view.getTopInventory();
|
||||
InventoryCrafting inventoryCrafting = (InventoryCrafting) craftInventoryCrafting.getMatrixInventory();
|
||||
InventoryCraftResult resultInventory = (InventoryCraftResult) craftInventoryCrafting.getResultInventory();
|
||||
|
||||
Optional<RecipeCrafting> recipe = getNMSRecipe(items, inventoryCrafting, craftWorld);
|
||||
|
||||
net.minecraft.server.v1_14_R1.ItemStack itemstack = net.minecraft.server.v1_14_R1.ItemStack.a;
|
||||
|
||||
if (recipe.isPresent()) {
|
||||
RecipeCrafting recipeCrafting = recipe.get();
|
||||
if (resultInventory.a(craftWorld.getHandle(), craftPlayer.getHandle(), recipeCrafting)) {
|
||||
itemstack = recipeCrafting.a(inventoryCrafting);
|
||||
}
|
||||
}
|
||||
|
||||
net.minecraft.server.v1_14_R1.ItemStack result = CraftEventFactory.callPreCraftEvent(inventoryCrafting, resultInventory, itemstack, view, recipe.orElse(null) instanceof RecipeRepair);
|
||||
|
||||
for(int i = 0; i < items.length; ++i) {
|
||||
Item remaining = inventoryCrafting.getContents().get(i).getItem().n();
|
||||
items[i] = remaining != null ? CraftItemStack.asBukkitCopy(new net.minecraft.server.v1_14_R1.ItemStack(remaining)) : null;
|
||||
}
|
||||
|
||||
return new CraftingResult(CraftItemStack.asBukkitCopy(result), items);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Recipe getRecipe(Player player, World world, ItemStack[] items) {
|
||||
Container container = new Container(null, -1) {
|
||||
@Override
|
||||
public InventoryView getBukkitView() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUse(EntityHuman entityHuman) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
InventoryCrafting crafting = new InventoryCrafting(container, 3, 3);
|
||||
|
||||
for (int i = 0; i < items.length; i++) {
|
||||
if(i >= 9) break; // ItemList cant contain more than 9 items.
|
||||
crafting.setItem(i, CraftItemStack.asNMSCopy(items[i]));
|
||||
}
|
||||
|
||||
CraftServer server = (CraftServer) Bukkit.getServer();
|
||||
CraftWorld craftWorld = (CraftWorld) world;
|
||||
Optional<RecipeCrafting> optional = server.getServer().getCraftingManager().craft(Recipes.CRAFTING, crafting, craftWorld.getHandle());
|
||||
|
||||
return optional.map(IRecipe::toBukkitRecipe).orElse(null);
|
||||
}
|
||||
|
||||
private Optional<RecipeCrafting> getNMSRecipe(ItemStack[] craftingMatrix, InventoryCrafting inventoryCrafting, CraftWorld world) {
|
||||
for(int i = 0; i < craftingMatrix.length; ++i) {
|
||||
inventoryCrafting.setItem(i, CraftItemStack.asNMSCopy(craftingMatrix[i]));
|
||||
}
|
||||
|
||||
CraftServer server = (CraftServer) Bukkit.getServer();
|
||||
return server.getServer().getCraftingManager().craft(Recipes.CRAFTING, inventoryCrafting, world.getHandle());
|
||||
}
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_14_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MaterialChecker_1_14 extends MaterialChecker {
|
||||
|
||||
static List<Material> version_1_14_Items;
|
||||
static List<Material> version_1_14_Ignored_Items;
|
||||
|
||||
public MaterialChecker_1_14(){
|
||||
version_1_14_Items = new ArrayList<>();
|
||||
version_1_14_Items.addAll(Tag.SIGNS.getValues());
|
||||
version_1_14_Items.addAll(Tag.WALL_SIGNS.getValues());
|
||||
version_1_14_Items.addAll(Tag.DOORS.getValues());
|
||||
version_1_14_Items.addAll(Tag.SAPLINGS.getValues());
|
||||
version_1_14_Items.addAll(Tag.SMALL_FLOWERS.getValues());
|
||||
version_1_14_Items.addAll(Tag.RAILS.getValues());
|
||||
version_1_14_Items.addAll(Tag.CORAL_PLANTS.getValues());
|
||||
version_1_14_Items.addAll(getGlassPanes());
|
||||
version_1_14_Items.add(Material.BROWN_MUSHROOM);
|
||||
version_1_14_Items.add(Material.RED_MUSHROOM);
|
||||
version_1_14_Items.add(Material.END_ROD);
|
||||
version_1_14_Items.add(Material.COBWEB);
|
||||
version_1_14_Items.add(Material.GRASS);
|
||||
version_1_14_Items.add(Material.FERN);
|
||||
version_1_14_Items.add(Material.DEAD_BUSH);
|
||||
version_1_14_Items.add(Material.SEAGRASS);
|
||||
version_1_14_Items.add(Material.SEA_PICKLE);
|
||||
version_1_14_Items.add(Material.LADDER);
|
||||
version_1_14_Items.add(Material.IRON_BARS);
|
||||
version_1_14_Items.add(Material.VINE);
|
||||
version_1_14_Items.add(Material.LILY_PAD);
|
||||
version_1_14_Items.add(Material.SUNFLOWER);
|
||||
version_1_14_Items.add(Material.LILAC);
|
||||
version_1_14_Items.add(Material.ROSE_BUSH);
|
||||
version_1_14_Items.add(Material.PEONY);
|
||||
version_1_14_Items.add(Material.TALL_GRASS);
|
||||
version_1_14_Items.add(Material.LARGE_FERN);
|
||||
version_1_14_Items.add(Material.BELL);
|
||||
version_1_14_Items.add(Material.CAMPFIRE);
|
||||
version_1_14_Items.add(Material.LANTERN);
|
||||
version_1_14_Items.add(Material.TURTLE_EGG);
|
||||
version_1_14_Items.add(Material.SUGAR_CANE);
|
||||
version_1_14_Items.add(Material.KELP);
|
||||
version_1_14_Items.add(Material.BAMBOO);
|
||||
version_1_14_Items.add(Material.LEVER);
|
||||
version_1_14_Items.add(Material.TRIPWIRE_HOOK);
|
||||
version_1_14_Items.add(Material.REPEATER);
|
||||
version_1_14_Items.add(Material.COMPARATOR);
|
||||
version_1_14_Items.add(Material.CAULDRON);
|
||||
version_1_14_Items.add(Material.BREWING_STAND);
|
||||
version_1_14_Items.add(Material.HOPPER);
|
||||
version_1_14_Items.add(Material.TORCH);
|
||||
version_1_14_Items.add(Material.WHEAT);
|
||||
|
||||
version_1_14_Ignored_Items = new ArrayList<>();
|
||||
version_1_14_Ignored_Items.addAll(Tag.BEDS.getValues());
|
||||
version_1_14_Ignored_Items.addAll(Tag.BANNERS.getValues());
|
||||
version_1_14_Ignored_Items.add(Material.DRAGON_HEAD);
|
||||
version_1_14_Ignored_Items.add(Material.PLAYER_HEAD);
|
||||
version_1_14_Ignored_Items.add(Material.ZOMBIE_HEAD);
|
||||
version_1_14_Ignored_Items.add(Material.SKELETON_SKULL);
|
||||
version_1_14_Ignored_Items.add(Material.CREEPER_HEAD);
|
||||
version_1_14_Ignored_Items.add(Material.SHIELD);
|
||||
version_1_14_Ignored_Items.add(Material.CROSSBOW);
|
||||
version_1_14_Ignored_Items.add(Material.TRIDENT);
|
||||
version_1_14_Ignored_Items.add(Material.BOW);
|
||||
}
|
||||
|
||||
private static List<Material> getGlassPanes(){
|
||||
List<Material> materials = new ArrayList<>();
|
||||
materials.add(Material.GLASS_PANE);
|
||||
materials.add(Material.BLACK_STAINED_GLASS_PANE);
|
||||
materials.add(Material.BLUE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.BROWN_STAINED_GLASS_PANE);
|
||||
materials.add(Material.CYAN_STAINED_GLASS_PANE);
|
||||
materials.add(Material.GRAY_STAINED_GLASS_PANE);
|
||||
materials.add(Material.GREEN_STAINED_GLASS_PANE);
|
||||
materials.add(Material.LIME_STAINED_GLASS_PANE);
|
||||
materials.add(Material.MAGENTA_STAINED_GLASS_PANE);
|
||||
materials.add(Material.ORANGE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.PINK_STAINED_GLASS_PANE);
|
||||
materials.add(Material.PURPLE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.RED_STAINED_GLASS_PANE);
|
||||
materials.add(Material.WHITE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.YELLOW_STAINED_GLASS_PANE);
|
||||
materials.add(Material.LIGHT_BLUE_STAINED_GLASS_PANE);
|
||||
materials.add(Material.LIGHT_GRAY_STAINED_GLASS_PANE);
|
||||
return materials;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTool(ItemStack itemStack){
|
||||
String matType = itemStack.getType().toString();
|
||||
if(matType.contains("AXE")) return true;
|
||||
if(matType.contains("SWORD")) return true;
|
||||
if(matType.contains("PICKAXE")) return true;
|
||||
if(matType.contains("HOE")) return true;
|
||||
if(matType.contains("SHOVEL")) return true;
|
||||
if(itemStack.getType() == Material.FISHING_ROD) return true;
|
||||
if(itemStack.getType() == Material.CARROT_ON_A_STICK) return true;
|
||||
if(itemStack.getType() == Material.STICK) return true;
|
||||
if(itemStack.getType() == Material.BLAZE_ROD) return true;
|
||||
if(itemStack.getType() == Material.BONE) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> graphically2DList() {
|
||||
return version_1_14_Items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> ignoredMaterials() {
|
||||
return version_1_14_Ignored_Items;
|
||||
}
|
||||
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_14_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.*;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
|
||||
public class NMSProviderImpl implements NMSProvider {
|
||||
@Override
|
||||
public ChestOpener getChestOpener() {
|
||||
return new ChestOpener_1_14();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialChecker getMaterialChecker() {
|
||||
return new MaterialChecker_1_14();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CraftingProvider getCraftingProvider() {
|
||||
return new Crafting();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityEventListener getEntityEventListener() {
|
||||
return new EntityEventListener_1_14();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItemFrameVisible(ItemFrame itemFrame, boolean visible) {
|
||||
//Not support in 1.14
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_14_R1.tileentities;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.TileEntityOpener;
|
||||
import net.minecraft.server.v1_14_R1.BaseBlockPosition;
|
||||
import net.minecraft.server.v1_14_R1.BlockBarrel;
|
||||
import net.minecraft.server.v1_14_R1.EntityHuman;
|
||||
import net.minecraft.server.v1_14_R1.EnumDirection;
|
||||
import net.minecraft.server.v1_14_R1.IBlockData;
|
||||
import net.minecraft.server.v1_14_R1.SoundCategory;
|
||||
import net.minecraft.server.v1_14_R1.SoundEffect;
|
||||
import net.minecraft.server.v1_14_R1.SoundEffects;
|
||||
import net.minecraft.server.v1_14_R1.TileEntityBarrel;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CustomTileEntityBarrel extends TileEntityBarrel implements TileEntityOpener {
|
||||
|
||||
private int phantomViewers = 0;
|
||||
private List<HumanEntity> viewers;
|
||||
|
||||
@Override
|
||||
public List<HumanEntity> getViewers() {
|
||||
return viewers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void h() {
|
||||
//super.h();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startOpen(EntityHuman entityhuman) {
|
||||
//super.startOpen(entityhuman);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeContainer(EntityHuman entityhuman) {
|
||||
//do nothing.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setViewers(List<HumanEntity> viewers){
|
||||
int previousViewers = phantomViewers;
|
||||
phantomViewers = viewers.size();
|
||||
this.viewers = viewers;
|
||||
|
||||
if(phantomViewers > 1 && previousViewers == 0) open();
|
||||
if(phantomViewers == 0) close();
|
||||
}
|
||||
|
||||
public void open(){
|
||||
IBlockData iblockdata = this.getBlock();
|
||||
a(iblockdata, SoundEffects.BLOCK_BARREL_OPEN);
|
||||
a(iblockdata, true);
|
||||
}
|
||||
|
||||
public void close(){
|
||||
IBlockData iblockdata = this.getBlock();
|
||||
a(iblockdata, SoundEffects.BLOCK_BARREL_CLOSE);
|
||||
a(iblockdata, false);
|
||||
}
|
||||
|
||||
private void a(IBlockData iblockdata, boolean flag) {
|
||||
this.world.setTypeAndData(this.getPosition(), (IBlockData)iblockdata.set(BlockBarrel.b, flag), 3);
|
||||
}
|
||||
|
||||
private void a(IBlockData iblockdata, SoundEffect soundeffect) {
|
||||
BaseBlockPosition baseblockposition = ((EnumDirection)iblockdata.get(BlockBarrel.a)).n();
|
||||
double d0 = (double)this.position.getX() + 0.5D + (double)baseblockposition.getX() / 2.0D;
|
||||
double d1 = (double)this.position.getY() + 0.5D + (double)baseblockposition.getY() / 2.0D;
|
||||
double d2 = (double)this.position.getZ() + 0.5D + (double)baseblockposition.getZ() / 2.0D;
|
||||
this.world.playSound((EntityHuman)null, d0, d1, d2, soundeffect, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
||||
}
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_14_R1.tileentities;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.TileEntityOpener;
|
||||
import net.minecraft.server.v1_14_R1.Block;
|
||||
import net.minecraft.server.v1_14_R1.BlockChest;
|
||||
import net.minecraft.server.v1_14_R1.BlockPropertyChestType;
|
||||
import net.minecraft.server.v1_14_R1.EntityHuman;
|
||||
import net.minecraft.server.v1_14_R1.EnumDirection;
|
||||
import net.minecraft.server.v1_14_R1.SoundCategory;
|
||||
import net.minecraft.server.v1_14_R1.SoundEffect;
|
||||
import net.minecraft.server.v1_14_R1.SoundEffects;
|
||||
import net.minecraft.server.v1_14_R1.TileEntityChest;
|
||||
import net.minecraft.server.v1_14_R1.TileEntityTypes;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CustomTileEntityChest extends TileEntityChest implements TileEntityOpener {
|
||||
|
||||
private int phantomViewers = 0;
|
||||
private List<HumanEntity> viewers;
|
||||
|
||||
public CustomTileEntityChest(TileEntityTypes<?> tileEntityTypes){
|
||||
super(tileEntityTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HumanEntity> getViewers() {
|
||||
return viewers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
//Do nothing.
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onOpen() {
|
||||
Block block = this.getBlock().getBlock();
|
||||
if (block instanceof BlockChest) {
|
||||
this.world.playBlockAction(this.position, block, 1, viewers.size());
|
||||
this.world.applyPhysics(this.position, block);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setViewers(List<HumanEntity> viewers){
|
||||
int previousViewers = phantomViewers;
|
||||
phantomViewers = viewers.size();
|
||||
this.viewers = viewers;
|
||||
|
||||
if(phantomViewers > 1 && previousViewers == 0) this.a(SoundEffects.BLOCK_CHEST_OPEN);
|
||||
if(phantomViewers == 0 && previousViewers != 0) this.a(SoundEffects.BLOCK_CHEST_CLOSE);
|
||||
if(phantomViewers == 0 && previousViewers == 0) return;
|
||||
|
||||
onOpen();
|
||||
}
|
||||
|
||||
private void a(SoundEffect soundeffect) {
|
||||
BlockPropertyChestType blockpropertychesttype = this.getBlock().get(BlockChest.b);
|
||||
if (blockpropertychesttype != BlockPropertyChestType.LEFT) {
|
||||
double d0 = (double)this.position.getX() + 0.5D;
|
||||
double d1 = (double)this.position.getY() + 0.5D;
|
||||
double d2 = (double)this.position.getZ() + 0.5D;
|
||||
if (blockpropertychesttype == BlockPropertyChestType.RIGHT) {
|
||||
EnumDirection enumdirection = BlockChest.j(this.getBlock());
|
||||
d0 += (double)enumdirection.getAdjacentX() * 0.5D;
|
||||
d2 += (double)enumdirection.getAdjacentZ() * 0.5D;
|
||||
}
|
||||
|
||||
this.world.playSound(null, d0, d1, d2, soundeffect, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void startOpen(EntityHuman entityhuman) {
|
||||
|
||||
}
|
||||
|
||||
public void closeContainer(EntityHuman entityhuman) {
|
||||
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>ChestsPlusPlus-Parent</artifactId>
|
||||
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
<artifactId>ChestsPlusPlus_1_15</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>spigotmc-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||
<artifactId>ChestsPlusPlus-API</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.15.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
<artifactId>craftbukkit</artifactId>
|
||||
<version>1.15.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||
<artifactId>ChestsPlusPlus_1_14</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
@ -1,62 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_15_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.ChestOpener;
|
||||
import com.jamesdpeters.minecraft.chests.TileEntityOpener;
|
||||
import com.jamesdpeters.minecraft.chests.v1_15_R1.tileentities.CustomTileEntityBarrel;
|
||||
import com.jamesdpeters.minecraft.chests.v1_15_R1.tileentities.CustomTileEntityChest;
|
||||
import net.minecraft.server.v1_15_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_15_R1.TileEntity;
|
||||
import net.minecraft.server.v1_15_R1.TileEntityBarrel;
|
||||
import net.minecraft.server.v1_15_R1.TileEntityChest;
|
||||
import net.minecraft.server.v1_15_R1.TileEntityChestTrapped;
|
||||
import net.minecraft.server.v1_15_R1.TileEntityTypes;
|
||||
import net.minecraft.server.v1_15_R1.World;
|
||||
import org.bukkit.block.Container;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.block.CraftContainer;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ChestOpener_1_15 implements ChestOpener {
|
||||
|
||||
@Override
|
||||
public TileEntityOpener updateState(Inventory inventory, Container chest, TileEntityOpener tileEntityOpener) {
|
||||
if(tileEntityOpener != null) {
|
||||
tileEntityOpener.setViewers(inventory.getViewers());
|
||||
return tileEntityOpener;
|
||||
} else {
|
||||
CraftContainer craftContainer = (CraftContainer) chest;
|
||||
CraftWorld craftWorld = (CraftWorld) craftContainer.getWorld();
|
||||
World world = craftWorld.getHandle();
|
||||
BlockPosition position = craftContainer.getPosition();
|
||||
TileEntity tileEntity = world.getTileEntity(position);
|
||||
|
||||
//Checks if Tile Entity has already got custom Opener.
|
||||
if (tileEntity instanceof TileEntityOpener) {
|
||||
tileEntityOpener = (TileEntityOpener) tileEntity;
|
||||
tileEntityOpener.setViewers(inventory.getViewers());
|
||||
return tileEntityOpener;
|
||||
} else {
|
||||
//If not set the new tile entity and set the viewers.
|
||||
if (tileEntity instanceof TileEntityChest) {
|
||||
CustomTileEntityChest tileEntityChest = new CustomTileEntityChest(tileEntity instanceof TileEntityChestTrapped ? TileEntityTypes.TRAPPED_CHEST : TileEntityTypes.CHEST);
|
||||
setTileEnt(world, position, tileEntityChest, inventory.getViewers());
|
||||
return tileEntityChest;
|
||||
} else if (tileEntity instanceof TileEntityBarrel) {
|
||||
CustomTileEntityBarrel barrel = new CustomTileEntityBarrel();
|
||||
setTileEnt(world, position, barrel, inventory.getViewers());
|
||||
return barrel;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private <T extends TileEntity & TileEntityOpener> void setTileEnt(World world, BlockPosition position, T tileEntOpener, List<HumanEntity> viewers){
|
||||
world.removeTileEntity(position);
|
||||
world.setTileEntity(position, tileEntOpener);
|
||||
tileEntOpener.setViewers(viewers);
|
||||
}
|
||||
}
|
@ -1,101 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_15_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.CraftingProvider;
|
||||
import com.jamesdpeters.minecraft.chests.CraftingResult;
|
||||
import net.minecraft.server.v1_15_R1.Container;
|
||||
import net.minecraft.server.v1_15_R1.ContainerWorkbench;
|
||||
import net.minecraft.server.v1_15_R1.EntityHuman;
|
||||
import net.minecraft.server.v1_15_R1.IRecipe;
|
||||
import net.minecraft.server.v1_15_R1.InventoryCraftResult;
|
||||
import net.minecraft.server.v1_15_R1.InventoryCrafting;
|
||||
import net.minecraft.server.v1_15_R1.Item;
|
||||
import net.minecraft.server.v1_15_R1.RecipeCrafting;
|
||||
import net.minecraft.server.v1_15_R1.RecipeRepair;
|
||||
import net.minecraft.server.v1_15_R1.Recipes;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.CraftServer;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.event.CraftEventFactory;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryCrafting;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryView;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.Recipe;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class Crafting implements CraftingProvider {
|
||||
|
||||
@Override
|
||||
public CraftingResult craft(Player player, World world, ItemStack[] items) {
|
||||
CraftWorld craftWorld = (CraftWorld) world;
|
||||
CraftPlayer craftPlayer = (CraftPlayer) player;
|
||||
ContainerWorkbench workbench = new ContainerWorkbench(-1, craftPlayer.getHandle().inventory);
|
||||
|
||||
CraftInventoryView view = workbench.getBukkitView();
|
||||
CraftInventoryCrafting craftInventoryCrafting = (CraftInventoryCrafting) view.getTopInventory();
|
||||
InventoryCrafting inventoryCrafting = (InventoryCrafting) craftInventoryCrafting.getMatrixInventory();
|
||||
InventoryCraftResult resultInventory = (InventoryCraftResult) craftInventoryCrafting.getResultInventory();
|
||||
|
||||
Optional<RecipeCrafting> recipe = getNMSRecipe(items, inventoryCrafting, craftWorld);
|
||||
|
||||
net.minecraft.server.v1_15_R1.ItemStack itemstack = net.minecraft.server.v1_15_R1.ItemStack.a;
|
||||
|
||||
if (recipe.isPresent()) {
|
||||
RecipeCrafting recipeCrafting = recipe.get();
|
||||
if (resultInventory.a(craftWorld.getHandle(), craftPlayer.getHandle(), recipeCrafting)) {
|
||||
itemstack = recipeCrafting.a(inventoryCrafting);
|
||||
}
|
||||
}
|
||||
|
||||
net.minecraft.server.v1_15_R1.ItemStack result = CraftEventFactory.callPreCraftEvent(inventoryCrafting, resultInventory, itemstack, view, recipe.orElse(null) instanceof RecipeRepair);
|
||||
|
||||
for(int i = 0; i < items.length; ++i) {
|
||||
Item remaining = inventoryCrafting.getContents().get(i).getItem().p();
|
||||
items[i] = remaining != null ? CraftItemStack.asBukkitCopy(new net.minecraft.server.v1_15_R1.ItemStack(remaining)) : null;
|
||||
}
|
||||
|
||||
return new CraftingResult(CraftItemStack.asBukkitCopy(result), items);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Recipe getRecipe(Player player, World world, ItemStack[] items) {
|
||||
Container container = new Container(null, -1) {
|
||||
@Override
|
||||
public InventoryView getBukkitView() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUse(EntityHuman entityHuman) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
InventoryCrafting crafting = new InventoryCrafting(container, 3, 3);
|
||||
|
||||
for (int i = 0; i < items.length; i++) {
|
||||
if(i >= 9) break; // ItemList cant contain more than 9 items.
|
||||
crafting.setItem(i, CraftItemStack.asNMSCopy(items[i]));
|
||||
}
|
||||
|
||||
CraftServer server = (CraftServer) Bukkit.getServer();
|
||||
CraftWorld craftWorld = (CraftWorld) world;
|
||||
Optional<RecipeCrafting> optional = server.getServer().getCraftingManager().craft(Recipes.CRAFTING, crafting, craftWorld.getHandle());
|
||||
|
||||
return optional.map(IRecipe::toBukkitRecipe).orElse(null);
|
||||
}
|
||||
|
||||
private Optional<RecipeCrafting> getNMSRecipe(ItemStack[] craftingMatrix, InventoryCrafting inventoryCrafting, CraftWorld world) {
|
||||
for(int i = 0; i < craftingMatrix.length; ++i) {
|
||||
inventoryCrafting.setItem(i, CraftItemStack.asNMSCopy(craftingMatrix[i]));
|
||||
}
|
||||
|
||||
CraftServer server = (CraftServer) Bukkit.getServer();
|
||||
return server.getServer().getCraftingManager().craft(Recipes.CRAFTING, inventoryCrafting, world.getHandle());
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_15_R1;
|
||||
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.v1_14_R1.MaterialChecker_1_14;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MaterialChecker_1_15 extends MaterialChecker {
|
||||
|
||||
private List<Material> materials;
|
||||
private List<Material> ignoredMaterials;
|
||||
private MaterialChecker materialChecker1_14;
|
||||
|
||||
public MaterialChecker_1_15(){
|
||||
//Must add previous version values first!
|
||||
materialChecker1_14 = new MaterialChecker_1_14();
|
||||
materials = new ArrayList<>();
|
||||
materials.addAll(materialChecker1_14.graphically2DList());
|
||||
|
||||
ignoredMaterials = new ArrayList<>();
|
||||
ignoredMaterials.addAll(materialChecker1_14.ignoredMaterials());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> graphically2DList() {
|
||||
return materials;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> ignoredMaterials() {
|
||||
return ignoredMaterials;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTool(ItemStack itemStack) {
|
||||
//Check previous version first.
|
||||
if(materialChecker1_14.isTool(itemStack)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_15_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.*;
|
||||
import com.jamesdpeters.minecraft.chests.v1_14_R1.EntityEventListener_1_14;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
|
||||
public class NMSProviderImpl implements NMSProvider {
|
||||
@Override
|
||||
public ChestOpener getChestOpener() {
|
||||
return new ChestOpener_1_15();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MaterialChecker getMaterialChecker() {
|
||||
return new MaterialChecker_1_15();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CraftingProvider getCraftingProvider() {
|
||||
return new Crafting();
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityEventListener getEntityEventListener() {
|
||||
return new EntityEventListener_1_14();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItemFrameVisible(ItemFrame itemFrame, boolean visible) {
|
||||
//Not supported in 1.15
|
||||
}
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_15_R1.tileentities;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.TileEntityOpener;
|
||||
import net.minecraft.server.v1_15_R1.BaseBlockPosition;
|
||||
import net.minecraft.server.v1_15_R1.BlockBarrel;
|
||||
import net.minecraft.server.v1_15_R1.EntityHuman;
|
||||
import net.minecraft.server.v1_15_R1.EnumDirection;
|
||||
import net.minecraft.server.v1_15_R1.IBlockData;
|
||||
import net.minecraft.server.v1_15_R1.SoundCategory;
|
||||
import net.minecraft.server.v1_15_R1.SoundEffect;
|
||||
import net.minecraft.server.v1_15_R1.SoundEffects;
|
||||
import net.minecraft.server.v1_15_R1.TileEntityBarrel;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CustomTileEntityBarrel extends TileEntityBarrel implements TileEntityOpener {
|
||||
|
||||
private int phantomViewers = 0;
|
||||
private List<HumanEntity> viewers;
|
||||
|
||||
@Override
|
||||
public List<HumanEntity> getViewers() {
|
||||
return viewers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void h() {
|
||||
//super.h();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startOpen(EntityHuman entityhuman) {
|
||||
//Do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeContainer(EntityHuman entityhuman) {
|
||||
//do nothing.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setViewers(List<HumanEntity> viewers){
|
||||
int previousViewers = phantomViewers;
|
||||
phantomViewers = viewers.size();
|
||||
this.viewers = viewers;
|
||||
|
||||
if(phantomViewers > 1 && previousViewers == 0) open();
|
||||
if(phantomViewers == 0) close();
|
||||
}
|
||||
|
||||
public void open(){
|
||||
IBlockData iblockdata = this.getBlock();
|
||||
a(iblockdata, SoundEffects.BLOCK_BARREL_OPEN);
|
||||
a(iblockdata, true);
|
||||
}
|
||||
|
||||
public void close(){
|
||||
IBlockData iblockdata = this.getBlock();
|
||||
a(iblockdata, SoundEffects.BLOCK_BARREL_CLOSE);
|
||||
a(iblockdata, false);
|
||||
}
|
||||
|
||||
private void a(IBlockData iblockdata, boolean flag) {
|
||||
this.world.setTypeAndData(this.getPosition(), (IBlockData)iblockdata.set(BlockBarrel.b, flag), 3);
|
||||
}
|
||||
|
||||
private void a(IBlockData iblockdata, SoundEffect soundeffect) {
|
||||
BaseBlockPosition baseblockposition = ((EnumDirection)iblockdata.get(BlockBarrel.a)).p();
|
||||
double d0 = (double)this.position.getX() + 0.5D + (double)baseblockposition.getX() / 2.0D;
|
||||
double d1 = (double)this.position.getY() + 0.5D + (double)baseblockposition.getY() / 2.0D;
|
||||
double d2 = (double)this.position.getZ() + 0.5D + (double)baseblockposition.getZ() / 2.0D;
|
||||
this.world.playSound((EntityHuman)null, d0, d1, d2, soundeffect, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
||||
}
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_15_R1.tileentities;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.TileEntityOpener;
|
||||
import net.minecraft.server.v1_15_R1.Block;
|
||||
import net.minecraft.server.v1_15_R1.BlockChest;
|
||||
import net.minecraft.server.v1_15_R1.BlockPropertyChestType;
|
||||
import net.minecraft.server.v1_15_R1.EntityHuman;
|
||||
import net.minecraft.server.v1_15_R1.EnumDirection;
|
||||
import net.minecraft.server.v1_15_R1.SoundCategory;
|
||||
import net.minecraft.server.v1_15_R1.SoundEffect;
|
||||
import net.minecraft.server.v1_15_R1.SoundEffects;
|
||||
import net.minecraft.server.v1_15_R1.TileEntityChest;
|
||||
import net.minecraft.server.v1_15_R1.TileEntityTypes;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CustomTileEntityChest extends TileEntityChest implements TileEntityOpener {
|
||||
|
||||
private int phantomViewers = 0;
|
||||
private List<HumanEntity> viewers;
|
||||
|
||||
public CustomTileEntityChest(TileEntityTypes<?> tileEntityTypes){
|
||||
super(tileEntityTypes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HumanEntity> getViewers() {
|
||||
return viewers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
//Do nothing.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpen() {
|
||||
Block block = this.getBlock().getBlock();
|
||||
if (block instanceof BlockChest) {
|
||||
this.world.playBlockAction(this.position, block, 1, viewers.size());
|
||||
this.world.applyPhysics(this.position, block);
|
||||
}
|
||||
}
|
||||
|
||||
public void setViewers(List<HumanEntity> viewers){
|
||||
int previousViewers = phantomViewers;
|
||||
phantomViewers = viewers.size();
|
||||
this.viewers = viewers;
|
||||
|
||||
if(phantomViewers > 1 && previousViewers == 0) this.a(SoundEffects.BLOCK_CHEST_OPEN);
|
||||
if(phantomViewers == 0 && previousViewers != 0) this.a(SoundEffects.BLOCK_CHEST_CLOSE);
|
||||
if(phantomViewers == 0 && previousViewers == 0) return;
|
||||
|
||||
onOpen();
|
||||
}
|
||||
|
||||
private void a(SoundEffect soundeffect) {
|
||||
BlockPropertyChestType blockpropertychesttype = (BlockPropertyChestType)this.getBlock().get(BlockChest.c);
|
||||
if (blockpropertychesttype != BlockPropertyChestType.LEFT) {
|
||||
double d0 = (double)this.position.getX() + 0.5D;
|
||||
double d1 = (double)this.position.getY() + 0.5D;
|
||||
double d2 = (double)this.position.getZ() + 0.5D;
|
||||
if (blockpropertychesttype == BlockPropertyChestType.RIGHT) {
|
||||
EnumDirection enumdirection = BlockChest.i(this.getBlock());
|
||||
d0 += (double)enumdirection.getAdjacentX() * 0.5D;
|
||||
d2 += (double)enumdirection.getAdjacentZ() * 0.5D;
|
||||
}
|
||||
|
||||
this.world.playSound((EntityHuman)null, d0, d1, d2, soundeffect, SoundCategory.BLOCKS, 0.5F, this.world.random.nextFloat() * 0.1F + 0.9F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void startOpen(EntityHuman entityhuman) {
|
||||
|
||||
}
|
||||
|
||||
public void closeContainer(EntityHuman entityhuman) {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_14_R1;
|
||||
package com.jamesdpeters.minecraft.chests.v1_16_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.EntityEventListener;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.world.ChunkLoadEvent;
|
||||
|
||||
public class EntityEventListener_1_14 extends EntityEventListener {
|
||||
public class EntityEventListener_1_16 extends EntityEventListener {
|
||||
|
||||
@EventHandler
|
||||
public void onChunkLoad(ChunkLoadEvent event) {
|
@ -1,57 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_16_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.v1_15_R1.MaterialChecker_1_15;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Tag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MaterialChecker_1_16 extends MaterialChecker {
|
||||
|
||||
private List<Material> materials;
|
||||
private List<Material> ignoredMaterials;
|
||||
private MaterialChecker_1_15 version1_15;
|
||||
|
||||
public MaterialChecker_1_16(){
|
||||
version1_15 = new MaterialChecker_1_15();
|
||||
|
||||
materials = new ArrayList<>();
|
||||
materials.addAll(version1_15.graphically2DList());
|
||||
materials.addAll(Tag.CROPS.getValues());
|
||||
materials.addAll(Tag.TALL_FLOWERS.getValues());
|
||||
materials.addAll(Tag.FLOWERS.getValues());
|
||||
materials.add(Material.WARPED_FUNGUS);
|
||||
materials.add(Material.WARPED_ROOTS);
|
||||
materials.add(Material.TWISTING_VINES);
|
||||
materials.add(Material.NETHER_SPROUTS);
|
||||
materials.add(Material.WEEPING_VINES);
|
||||
materials.add(Material.CRIMSON_ROOTS);
|
||||
materials.add(Material.CRIMSON_FUNGUS);
|
||||
materials.add(Material.SOUL_CAMPFIRE);
|
||||
materials.add(Material.SOUL_LANTERN);
|
||||
materials.add(Material.SOUL_TORCH);
|
||||
materials.add(Material.CHAIN);
|
||||
|
||||
ignoredMaterials = new ArrayList<>();
|
||||
ignoredMaterials.addAll(version1_15.ignoredMaterials());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> graphically2DList() {
|
||||
return materials;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> ignoredMaterials() {
|
||||
return ignoredMaterials;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTool(ItemStack itemStack) {
|
||||
if(itemStack.getType() == Material.WARPED_FUNGUS_ON_A_STICK) return true;
|
||||
return version1_15.isTool(itemStack);
|
||||
}
|
||||
}
|
@ -1,7 +1,11 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_16_R1;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.*;
|
||||
import com.jamesdpeters.minecraft.chests.v1_14_R1.EntityEventListener_1_14;
|
||||
import com.jamesdpeters.minecraft.chests.BaseMaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.ChestOpener;
|
||||
import com.jamesdpeters.minecraft.chests.CraftingProvider;
|
||||
import com.jamesdpeters.minecraft.chests.EntityEventListener;
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.NMSProvider;
|
||||
import org.bukkit.block.Lidded;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
|
||||
@ -25,7 +29,7 @@ public class NMSProviderImpl implements NMSProvider {
|
||||
|
||||
@Override
|
||||
public MaterialChecker getMaterialChecker() {
|
||||
return new MaterialChecker_1_16();
|
||||
return new BaseMaterialChecker();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,7 +39,7 @@ public class NMSProviderImpl implements NMSProvider {
|
||||
|
||||
@Override
|
||||
public EntityEventListener getEntityEventListener() {
|
||||
return new EntityEventListener_1_14();
|
||||
return new EntityEventListener_1_16();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,35 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_16_R2;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.v1_16_R1.MaterialChecker_1_16;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Only a protocol change from 1.16.2 to 1.16.3 so no new materials were added.
|
||||
*/
|
||||
public class MaterialChecker_1_16_R2 extends MaterialChecker {
|
||||
|
||||
private MaterialChecker_1_16 version1_16;
|
||||
|
||||
public MaterialChecker_1_16_R2(){
|
||||
version1_16 = new MaterialChecker_1_16();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> graphically2DList() {
|
||||
return version1_16.graphically2DList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> ignoredMaterials() {
|
||||
return version1_16.ignoredMaterials();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTool(ItemStack itemStack) {
|
||||
return version1_16.isTool(itemStack);
|
||||
}
|
||||
}
|
@ -1,7 +1,12 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_16_R2;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.*;
|
||||
import com.jamesdpeters.minecraft.chests.v1_14_R1.EntityEventListener_1_14;
|
||||
import com.jamesdpeters.minecraft.chests.BaseMaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.ChestOpener;
|
||||
import com.jamesdpeters.minecraft.chests.CraftingProvider;
|
||||
import com.jamesdpeters.minecraft.chests.EntityEventListener;
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.NMSProvider;
|
||||
import com.jamesdpeters.minecraft.chests.v1_16_R1.EntityEventListener_1_16;
|
||||
import org.bukkit.block.Lidded;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
|
||||
@ -25,7 +30,7 @@ public class NMSProviderImpl implements NMSProvider {
|
||||
|
||||
@Override
|
||||
public MaterialChecker getMaterialChecker() {
|
||||
return new MaterialChecker_1_16_R2();
|
||||
return new BaseMaterialChecker();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,7 +40,7 @@ public class NMSProviderImpl implements NMSProvider {
|
||||
|
||||
@Override
|
||||
public EntityEventListener getEntityEventListener() {
|
||||
return new EntityEventListener_1_14();
|
||||
return new EntityEventListener_1_16();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,35 +0,0 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_16_R3;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.v1_16_R1.MaterialChecker_1_16;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Only a protocol change from 1.16.2 to 1.16.3 so no new materials were added.
|
||||
*/
|
||||
public class MaterialChecker_1_16_R3 extends MaterialChecker {
|
||||
|
||||
private MaterialChecker_1_16 version1_16;
|
||||
|
||||
public MaterialChecker_1_16_R3(){
|
||||
version1_16 = new MaterialChecker_1_16();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> graphically2DList() {
|
||||
return version1_16.graphically2DList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> ignoredMaterials() {
|
||||
return version1_16.ignoredMaterials();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTool(ItemStack itemStack) {
|
||||
return version1_16.isTool(itemStack);
|
||||
}
|
||||
}
|
@ -1,7 +1,12 @@
|
||||
package com.jamesdpeters.minecraft.chests.v1_16_R3;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.*;
|
||||
import com.jamesdpeters.minecraft.chests.v1_14_R1.EntityEventListener_1_14;
|
||||
import com.jamesdpeters.minecraft.chests.BaseMaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.ChestOpener;
|
||||
import com.jamesdpeters.minecraft.chests.CraftingProvider;
|
||||
import com.jamesdpeters.minecraft.chests.EntityEventListener;
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.NMSProvider;
|
||||
import com.jamesdpeters.minecraft.chests.v1_16_R1.EntityEventListener_1_16;
|
||||
import org.bukkit.block.Lidded;
|
||||
import org.bukkit.entity.ItemFrame;
|
||||
|
||||
@ -25,7 +30,7 @@ public class NMSProviderImpl implements NMSProvider {
|
||||
|
||||
@Override
|
||||
public MaterialChecker getMaterialChecker() {
|
||||
return new MaterialChecker_1_16_R3();
|
||||
return new BaseMaterialChecker();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,7 +40,7 @@ public class NMSProviderImpl implements NMSProvider {
|
||||
|
||||
@Override
|
||||
public EntityEventListener getEntityEventListener() {
|
||||
return new EntityEventListener_1_14();
|
||||
return new EntityEventListener_1_16();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,35 +1,35 @@
|
||||
package com.jamesdpeters.minecraft.chests.latest;
|
||||
|
||||
import com.jamesdpeters.minecraft.chests.BaseMaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.MaterialChecker;
|
||||
import com.jamesdpeters.minecraft.chests.v1_16_R1.MaterialChecker_1_16;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Only a protocol change from 1.16.2 to 1.16.3 so no new materials were added.
|
||||
* Material Checker for items available in 1.17+
|
||||
*/
|
||||
public class MaterialChecker_1_17_R1 extends MaterialChecker {
|
||||
|
||||
private final MaterialChecker_1_16 version1_16;
|
||||
private final BaseMaterialChecker baseMaterialChecker;
|
||||
|
||||
public MaterialChecker_1_17_R1(){
|
||||
version1_16 = new MaterialChecker_1_16();
|
||||
baseMaterialChecker = new BaseMaterialChecker();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> graphically2DList() {
|
||||
return version1_16.graphically2DList();
|
||||
return baseMaterialChecker.graphically2DList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Material> ignoredMaterials() {
|
||||
return version1_16.ignoredMaterials();
|
||||
return baseMaterialChecker.ignoredMaterials();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTool(ItemStack itemStack) {
|
||||
return version1_16.isTool(itemStack);
|
||||
return baseMaterialChecker.isTool(itemStack);
|
||||
}
|
||||
}
|
||||
|
@ -15,9 +15,7 @@ public class ApiSpecific {
|
||||
private static NMSProvider nmsProvider;
|
||||
|
||||
public static void init(Plugin plugin) {
|
||||
Api.init(plugin);
|
||||
nmsProvider = Api.getNmsProvider();
|
||||
if (nmsProvider == null) nmsProvider = new NMSProviderDefault();
|
||||
nmsProvider = Api.init(plugin, NMSProviderDefault::new);
|
||||
materialChecker = nmsProvider.getMaterialChecker();
|
||||
chestOpener = nmsProvider.getChestOpener();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user