mirror of
https://github.com/JamesPeters98/ChestsPlusPlus.git
synced 2024-11-22 02:25:58 +01:00
Add support for 1.19.3 and 1.19.4
This commit is contained in:
parent
f9a6c4f711
commit
59bd81884a
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@ target/
|
|||||||
ChestsPlusPlus.iml
|
ChestsPlusPlus.iml
|
||||||
*.iml
|
*.iml
|
||||||
POEditorImport/src/main/java/com/jamesdpeters/poeditor/POEapi.java
|
POEditorImport/src/main/java/com/jamesdpeters/poeditor/POEapi.java
|
||||||
|
/BuildTools/
|
||||||
|
@ -8,7 +8,7 @@ MAVEN_DIR="$HOME/.m2"
|
|||||||
SPIGOT="${MAVEN_DIR}/repository/org/spigotmc/spigot"
|
SPIGOT="${MAVEN_DIR}/repository/org/spigotmc/spigot"
|
||||||
|
|
||||||
#Versions
|
#Versions
|
||||||
array=("1.18.1" "1.18.2" "1.19")
|
array=("1.18.1" "1.18.2" "1.19" "1.19.3" "1.19.4")
|
||||||
|
|
||||||
#Download BuildTools jar
|
#Download BuildTools jar
|
||||||
curl -s -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
|
curl -s -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
|
||||||
|
104
ChestsPlusPlus_1_19_R2/pom.xml
Normal file
104
ChestsPlusPlus_1_19_R2/pom.xml
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
<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>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<minecraft.version>1.19.3</minecraft.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<artifactId>ChestsPlusPlus_1_19_R2</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>${minecraft.version}-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||||
|
<artifactId>ChestsPlusPlus_1_17_R1</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot</artifactId>
|
||||||
|
<version>${minecraft.version}-R0.1-SNAPSHOT</version>
|
||||||
|
<classifier>remapped-mojang</classifier>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
<artifactId>specialsource-maven-plugin</artifactId>
|
||||||
|
<version>1.2.3</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>remap</goal>
|
||||||
|
</goals>
|
||||||
|
<id>remap-obf</id>
|
||||||
|
<configuration>
|
||||||
|
<srgIn>org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
|
||||||
|
<reverse>true</reverse>
|
||||||
|
<remappedDependencies>org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-mojang</remappedDependencies>
|
||||||
|
<remappedArtifactAttached>true</remappedArtifactAttached>
|
||||||
|
<remappedClassifierName>remapped-obf</remappedClassifierName>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>remap</goal>
|
||||||
|
</goals>
|
||||||
|
<id>remap-spigot</id>
|
||||||
|
<configuration>
|
||||||
|
<inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
|
||||||
|
<srgIn>org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
|
||||||
|
<remappedDependencies>org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-obf</remappedDependencies>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>16</source>
|
||||||
|
<target>16</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
@ -0,0 +1,102 @@
|
|||||||
|
package com.jamesdpeters.minecraft.chests.v1_19_R2;
|
||||||
|
|
||||||
|
import com.jamesdpeters.minecraft.chests.CraftingProvider;
|
||||||
|
import com.jamesdpeters.minecraft.chests.CraftingResult;
|
||||||
|
import net.minecraft.core.NonNullList;
|
||||||
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
import net.minecraft.world.inventory.CraftingContainer;
|
||||||
|
import net.minecraft.world.item.crafting.RecipeType;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.craftbukkit.v1_19_R2.CraftServer;
|
||||||
|
import org.bukkit.craftbukkit.v1_19_R2.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.v1_19_R2.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.ArrayList;
|
||||||
|
|
||||||
|
public class Crafting implements CraftingProvider {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CraftingResult craft(World world, ItemStack[] items) {
|
||||||
|
CraftWorld craftWorld = (CraftWorld) world;
|
||||||
|
|
||||||
|
// Setup crafting inventories.
|
||||||
|
CraftingContainer inventoryCrafting = new CraftingContainer(new AbstractContainerMenu(null, -1) {
|
||||||
|
@Override
|
||||||
|
public InventoryView getBukkitView() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public net.minecraft.world.item.ItemStack quickMoveStack(net.minecraft.world.entity.player.Player player, int i) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean stillValid(net.minecraft.world.entity.player.Player player) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 3, 3);
|
||||||
|
|
||||||
|
for (int i = 0; i < items.length; i++) {
|
||||||
|
inventoryCrafting.setItem(i, CraftItemStack.asNMSCopy(items[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
var recipe = ((CraftServer) Bukkit.getServer()).getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, inventoryCrafting, craftWorld.getHandle());
|
||||||
|
|
||||||
|
// Generate the resulting ItemStack from the Crafting Matrix
|
||||||
|
net.minecraft.world.item.ItemStack itemStack = net.minecraft.world.item.ItemStack.EMPTY;
|
||||||
|
|
||||||
|
if (recipe.isPresent()) {
|
||||||
|
itemStack = recipe.get().assemble(inventoryCrafting);
|
||||||
|
}
|
||||||
|
|
||||||
|
return createItemCraftResult(CraftItemStack.asBukkitCopy(itemStack), inventoryCrafting, craftWorld.getHandle());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Recipe getRecipe(Player player, World world, ItemStack[] items) {
|
||||||
|
return Bukkit.getCraftingRecipe(items, world);
|
||||||
|
}
|
||||||
|
|
||||||
|
private CraftingResult createItemCraftResult(ItemStack itemStack, CraftingContainer inventoryCrafting, Level worldServer) {
|
||||||
|
CraftServer server = (CraftServer) Bukkit.getServer();
|
||||||
|
NonNullList<net.minecraft.world.item.ItemStack> remainingItems = server.getServer().getRecipeManager().getRemainingItemsFor(RecipeType.CRAFTING, inventoryCrafting, worldServer);
|
||||||
|
|
||||||
|
CraftingResult craftItemResult = new CraftingResult(itemStack, new ItemStack[9], new ArrayList<>());
|
||||||
|
|
||||||
|
// Create resulting matrix and overflow items
|
||||||
|
for (int i = 0; i < remainingItems.size(); ++i) {
|
||||||
|
net.minecraft.world.item.ItemStack itemstack1 = inventoryCrafting.getItem(i);
|
||||||
|
net.minecraft.world.item.ItemStack itemstack2 = (net.minecraft.world.item.ItemStack) remainingItems.get(i);
|
||||||
|
|
||||||
|
if (!itemstack1.isEmpty()) {
|
||||||
|
inventoryCrafting.removeItem(i, 1);
|
||||||
|
itemstack1 = inventoryCrafting.getItem(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!itemstack2.isEmpty()) {
|
||||||
|
if (itemstack1.isEmpty()) {
|
||||||
|
inventoryCrafting.setItem(i, itemstack2);
|
||||||
|
} else if (net.minecraft.world.item.ItemStack.tagMatches(itemstack1, itemstack2) && net.minecraft.world.item.ItemStack.matches(itemstack1, itemstack2)) {
|
||||||
|
itemstack2.grow(itemstack1.getCount());
|
||||||
|
inventoryCrafting.setItem(i, itemstack2);
|
||||||
|
} else {
|
||||||
|
craftItemResult.overflowItems().add(CraftItemStack.asBukkitCopy(itemstack2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < inventoryCrafting.getContents().size(); i++) {
|
||||||
|
craftItemResult.setResultMatrix(i, CraftItemStack.asBukkitCopy(inventoryCrafting.getItem(i)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return craftItemResult;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.jamesdpeters.minecraft.chests.v1_19_R2;
|
||||||
|
|
||||||
|
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_17_R1.EntityEventListener_1_17;
|
||||||
|
import com.jamesdpeters.minecraft.chests.v1_17_R1.MaterialChecker_1_17_R1;
|
||||||
|
import org.bukkit.block.Lidded;
|
||||||
|
import org.bukkit.entity.ItemFrame;
|
||||||
|
|
||||||
|
public class NMSProviderImpl implements NMSProvider {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChestOpener getChestOpener() {
|
||||||
|
return (inventory, container, tileEntityOpener) -> {
|
||||||
|
if(container instanceof Lidded){
|
||||||
|
if(inventory.getViewers().size() > 0){
|
||||||
|
((Lidded) container).open();
|
||||||
|
} else {
|
||||||
|
((Lidded) container).close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MaterialChecker getMaterialChecker() {
|
||||||
|
return new MaterialChecker_1_17_R1();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CraftingProvider getCraftingProvider() {
|
||||||
|
return new Crafting();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityEventListener getEntityEventListener() {
|
||||||
|
return new EntityEventListener_1_17();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setItemFrameVisible(ItemFrame itemFrame, boolean visible) {
|
||||||
|
itemFrame.setVisible(visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
104
ChestsPlusPlus_1_19_R3/pom.xml
Normal file
104
ChestsPlusPlus_1_19_R3/pom.xml
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
<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>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<minecraft.version>1.19.4</minecraft.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<artifactId>ChestsPlusPlus_1_19_R3</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>${minecraft.version}-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||||
|
<artifactId>ChestsPlusPlus_1_17_R1</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.spigotmc</groupId>
|
||||||
|
<artifactId>spigot</artifactId>
|
||||||
|
<version>${minecraft.version}-R0.1-SNAPSHOT</version>
|
||||||
|
<classifier>remapped-mojang</classifier>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>net.md-5</groupId>
|
||||||
|
<artifactId>specialsource-maven-plugin</artifactId>
|
||||||
|
<version>1.2.3</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>remap</goal>
|
||||||
|
</goals>
|
||||||
|
<id>remap-obf</id>
|
||||||
|
<configuration>
|
||||||
|
<srgIn>org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
|
||||||
|
<reverse>true</reverse>
|
||||||
|
<remappedDependencies>org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-mojang</remappedDependencies>
|
||||||
|
<remappedArtifactAttached>true</remappedArtifactAttached>
|
||||||
|
<remappedClassifierName>remapped-obf</remappedClassifierName>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>remap</goal>
|
||||||
|
</goals>
|
||||||
|
<id>remap-spigot</id>
|
||||||
|
<configuration>
|
||||||
|
<inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
|
||||||
|
<srgIn>org.spigotmc:minecraft-server:${minecraft.version}-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
|
||||||
|
<remappedDependencies>org.spigotmc:spigot:${minecraft.version}-R0.1-SNAPSHOT:jar:remapped-obf</remappedDependencies>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>16</source>
|
||||||
|
<target>16</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
@ -0,0 +1,103 @@
|
|||||||
|
package com.jamesdpeters.minecraft.chests.v1_19_R3;
|
||||||
|
|
||||||
|
import com.jamesdpeters.minecraft.chests.CraftingProvider;
|
||||||
|
import com.jamesdpeters.minecraft.chests.CraftingResult;
|
||||||
|
import net.minecraft.core.NonNullList;
|
||||||
|
import net.minecraft.core.RegistryAccess;
|
||||||
|
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||||
|
import net.minecraft.world.inventory.CraftingContainer;
|
||||||
|
import net.minecraft.world.item.crafting.RecipeType;
|
||||||
|
import net.minecraft.world.level.Level;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.craftbukkit.v1_19_R3.CraftServer;
|
||||||
|
import org.bukkit.craftbukkit.v1_19_R3.CraftWorld;
|
||||||
|
import org.bukkit.craftbukkit.v1_19_R3.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.ArrayList;
|
||||||
|
|
||||||
|
public class Crafting implements CraftingProvider {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CraftingResult craft(World world, ItemStack[] items) {
|
||||||
|
CraftWorld craftWorld = (CraftWorld) world;
|
||||||
|
|
||||||
|
// Setup crafting inventories.
|
||||||
|
CraftingContainer inventoryCrafting = new CraftingContainer(new AbstractContainerMenu(null, -1) {
|
||||||
|
@Override
|
||||||
|
public InventoryView getBukkitView() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public net.minecraft.world.item.ItemStack quickMoveStack(net.minecraft.world.entity.player.Player player, int i) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean stillValid(net.minecraft.world.entity.player.Player player) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}, 3, 3);
|
||||||
|
|
||||||
|
for (int i = 0; i < items.length; i++) {
|
||||||
|
inventoryCrafting.setItem(i, CraftItemStack.asNMSCopy(items[i]));
|
||||||
|
}
|
||||||
|
|
||||||
|
var recipe = ((CraftServer) Bukkit.getServer()).getServer().getRecipeManager().getRecipeFor(RecipeType.CRAFTING, inventoryCrafting, craftWorld.getHandle());
|
||||||
|
|
||||||
|
// Generate the resulting ItemStack from the Crafting Matrix
|
||||||
|
net.minecraft.world.item.ItemStack itemStack = net.minecraft.world.item.ItemStack.EMPTY;
|
||||||
|
|
||||||
|
if (recipe.isPresent()) {
|
||||||
|
itemStack = recipe.get().assemble(inventoryCrafting, RegistryAccess.EMPTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
return createItemCraftResult(CraftItemStack.asBukkitCopy(itemStack), inventoryCrafting, craftWorld.getHandle());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Recipe getRecipe(Player player, World world, ItemStack[] items) {
|
||||||
|
return Bukkit.getCraftingRecipe(items, world);
|
||||||
|
}
|
||||||
|
|
||||||
|
private CraftingResult createItemCraftResult(ItemStack itemStack, CraftingContainer inventoryCrafting, Level worldServer) {
|
||||||
|
CraftServer server = (CraftServer) Bukkit.getServer();
|
||||||
|
NonNullList<net.minecraft.world.item.ItemStack> remainingItems = server.getServer().getRecipeManager().getRemainingItemsFor(RecipeType.CRAFTING, inventoryCrafting, worldServer);
|
||||||
|
|
||||||
|
CraftingResult craftItemResult = new CraftingResult(itemStack, new ItemStack[9], new ArrayList<>());
|
||||||
|
|
||||||
|
// Create resulting matrix and overflow items
|
||||||
|
for (int i = 0; i < remainingItems.size(); ++i) {
|
||||||
|
net.minecraft.world.item.ItemStack itemstack1 = inventoryCrafting.getItem(i);
|
||||||
|
net.minecraft.world.item.ItemStack itemstack2 = (net.minecraft.world.item.ItemStack) remainingItems.get(i);
|
||||||
|
|
||||||
|
if (!itemstack1.isEmpty()) {
|
||||||
|
inventoryCrafting.removeItem(i, 1);
|
||||||
|
itemstack1 = inventoryCrafting.getItem(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!itemstack2.isEmpty()) {
|
||||||
|
if (itemstack1.isEmpty()) {
|
||||||
|
inventoryCrafting.setItem(i, itemstack2);
|
||||||
|
} else if (net.minecraft.world.item.ItemStack.tagMatches(itemstack1, itemstack2) && net.minecraft.world.item.ItemStack.matches(itemstack1, itemstack2)) {
|
||||||
|
itemstack2.grow(itemstack1.getCount());
|
||||||
|
inventoryCrafting.setItem(i, itemstack2);
|
||||||
|
} else {
|
||||||
|
craftItemResult.overflowItems().add(CraftItemStack.asBukkitCopy(itemstack2));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < inventoryCrafting.getContents().size(); i++) {
|
||||||
|
craftItemResult.setResultMatrix(i, CraftItemStack.asBukkitCopy(inventoryCrafting.getItem(i)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return craftItemResult;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.jamesdpeters.minecraft.chests.v1_19_R3;
|
||||||
|
|
||||||
|
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_17_R1.EntityEventListener_1_17;
|
||||||
|
import com.jamesdpeters.minecraft.chests.v1_17_R1.MaterialChecker_1_17_R1;
|
||||||
|
import org.bukkit.block.Lidded;
|
||||||
|
import org.bukkit.entity.ItemFrame;
|
||||||
|
|
||||||
|
public class NMSProviderImpl implements NMSProvider {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChestOpener getChestOpener() {
|
||||||
|
return (inventory, container, tileEntityOpener) -> {
|
||||||
|
if(container instanceof Lidded){
|
||||||
|
if(inventory.getViewers().size() > 0){
|
||||||
|
((Lidded) container).open();
|
||||||
|
} else {
|
||||||
|
((Lidded) container).close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MaterialChecker getMaterialChecker() {
|
||||||
|
return new MaterialChecker_1_17_R1();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CraftingProvider getCraftingProvider() {
|
||||||
|
return new Crafting();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityEventListener getEntityEventListener() {
|
||||||
|
return new EntityEventListener_1_17();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setItemFrameVisible(ItemFrame itemFrame, boolean visible) {
|
||||||
|
itemFrame.setVisible(visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||||
<artifactId>ChestsPlusPlus-Master</artifactId>
|
<artifactId>ChestsPlusPlus-Master</artifactId>
|
||||||
<version>2.7-Release</version>
|
<version>2.8-Release</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.target>16</maven.compiler.target>
|
<maven.compiler.target>16</maven.compiler.target>
|
||||||
@ -90,7 +90,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.wesjd</groupId>
|
<groupId>net.wesjd</groupId>
|
||||||
<artifactId>anvilgui</artifactId>
|
<artifactId>anvilgui</artifactId>
|
||||||
<version>1.5.3-SNAPSHOT</version>
|
<version>1.6.5-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -99,6 +99,22 @@
|
|||||||
<version>2.2.1</version>
|
<version>2.2.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||||
|
<artifactId>ChestsPlusPlus_1_19_R3</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||||
|
<artifactId>ChestsPlusPlus_1_19_R2</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<type>jar</type>
|
||||||
|
<scope>compile</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
<groupId>com.jamesdpeters.minecraft.chests</groupId>
|
||||||
<artifactId>ChestsPlusPlus_1_19_R1</artifactId>
|
<artifactId>ChestsPlusPlus_1_19_R1</artifactId>
|
||||||
|
@ -188,7 +188,7 @@ public class VirtualCraftingHolder implements InventoryHolder {
|
|||||||
int index = recipeChoiceIndex[i];
|
int index = recipeChoiceIndex[i];
|
||||||
List<ItemStack> choices = null;
|
List<ItemStack> choices = null;
|
||||||
|
|
||||||
if (index < recipeChoices.length) {
|
if (i < recipeChoices.length) {
|
||||||
var recipeChoice = recipeChoices[i];
|
var recipeChoice = recipeChoices[i];
|
||||||
choices = recipeChoiceItems.get(recipeChoice);
|
choices = recipeChoiceItems.get(recipeChoice);
|
||||||
}
|
}
|
||||||
|
@ -141,10 +141,10 @@ public class PartyMenu implements InventoryProvider {
|
|||||||
if (result){
|
if (result){
|
||||||
player.sendMessage(ChatColor.GREEN+ Message.PARTY_CREATED.getString(ChatColor.WHITE+partyName+ChatColor.GREEN));
|
player.sendMessage(ChatColor.GREEN+ Message.PARTY_CREATED.getString(ChatColor.WHITE+partyName+ChatColor.GREEN));
|
||||||
getMenu().open(player);
|
getMenu().open(player);
|
||||||
return AnvilGUI.Response.close();
|
return AnvilGUI.ResponseAction.close();
|
||||||
} else {
|
} else {
|
||||||
player.sendMessage(ChatColor.RED+Message.PARTY_ALREADY_EXISTS.getString(ChatColor.WHITE+partyName+ChatColor.RED));
|
player.sendMessage(ChatColor.RED+Message.PARTY_ALREADY_EXISTS.getString(ChatColor.WHITE+partyName+ChatColor.RED));
|
||||||
return AnvilGUI.Response.text(Message.ALREADY_EXISTS_ANVIL.getString());
|
return AnvilGUI.ResponseAction.replaceInputText(Message.ALREADY_EXISTS_ANVIL.getString());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,19 @@ package com.jamesdpeters.minecraft.chests.menus;
|
|||||||
import com.jamesdpeters.minecraft.chests.ChestsPlusPlus;
|
import com.jamesdpeters.minecraft.chests.ChestsPlusPlus;
|
||||||
import net.wesjd.anvilgui.AnvilGUI;
|
import net.wesjd.anvilgui.AnvilGUI;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
|
|
||||||
public class TextInputUI {
|
public class TextInputUI {
|
||||||
|
|
||||||
public static void getInput(Player player, String title, BiFunction<Player, String, AnvilGUI.Response> responseBiFunction) {
|
public static void getInput(Player player, String title, BiFunction<Player, String, AnvilGUI.ResponseAction> responseBiFunction) {
|
||||||
new AnvilGUI.Builder()
|
new AnvilGUI.Builder()
|
||||||
.onComplete(responseBiFunction)
|
.onClick((slot, stateSnapshot) -> {
|
||||||
|
if (slot == AnvilGUI.Slot.OUTPUT)
|
||||||
|
return Collections.singletonList(responseBiFunction.apply(stateSnapshot.getPlayer(), stateSnapshot.getText()));
|
||||||
|
return Collections.emptyList();
|
||||||
|
})
|
||||||
.text("Enter Name")
|
.text("Enter Name")
|
||||||
.title(title)
|
.title(title)
|
||||||
.plugin(ChestsPlusPlus.PLUGIN)
|
.plugin(ChestsPlusPlus.PLUGIN)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Chests++ Language File (Version 2.6.4-Beta)
|
# Chests++ Language File (Version 2.8-Release)
|
||||||
# NOTE: This file gets replaced when the plugin launches! If you want to make modifications create a copy first!
|
# NOTE: This file gets replaced when the plugin launches! If you want to make modifications create a copy first!
|
||||||
# To create a new language file simply create a copy of this file and rename it to your desired choice for example 'en_US.properties'
|
# To create a new language file simply create a copy of this file and rename it to your desired choice for example 'en_US.properties'
|
||||||
# It should be located in the 'lang' folder
|
# It should be located in the 'lang' folder
|
||||||
|
2
pom.xml
2
pom.xml
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>ChestsPlusPlusAPI</module>
|
<module>ChestsPlusPlusAPI</module>
|
||||||
|
<module>ChestsPlusPlus_1_19_R3</module>
|
||||||
|
<module>ChestsPlusPlus_1_19_R2</module>
|
||||||
<module>ChestsPlusPlus_1_19_R1</module>
|
<module>ChestsPlusPlus_1_19_R1</module>
|
||||||
<module>ChestsPlusPlus_1_18_R2</module>
|
<module>ChestsPlusPlus_1_18_R2</module>
|
||||||
<module>ChestsPlusPlus_1_18_R1</module>
|
<module>ChestsPlusPlus_1_18_R1</module>
|
||||||
|
Loading…
Reference in New Issue
Block a user