Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Implemented 1.19 nms support * Added 1.19 as a valid server version * Fixed issues with nms * Changed dependencies of 1.19 to be from remote repository * Fixed hologram names not working in 1.19 * Updated 1.19-spigot gradle
- Loading branch information
1 parent
61d3edf
commit 8eb21a5
Showing
62 changed files
with
4,466 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -17,6 +17,7 @@ public enum ServerVersion { | |
v1_16(116), | ||
v1_17(117), | ||
v1_18(118), | ||
v1_19(119), | ||
|
||
UNKONWN(-1); | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
group 'v1_19_R1-Spigot' | ||
|
||
java { | ||
toolchain { | ||
languageVersion.set(JavaLanguageVersion.of(17)) | ||
} | ||
} | ||
|
||
repositories { | ||
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } | ||
// Repositories for libraries that the spigot api require | ||
maven { url "https://papermc.io/repo/repository/maven-public/" } | ||
maven { url "https://libraries.minecraft.net/" } | ||
} | ||
|
||
dependencies { | ||
compileOnly 'io.papermc.paper:paper-api:1.18.2-R0.1-20220305.050345-9' // API is the same as in 1.18 | ||
compileOnly 'org.spigotmc:v1_19_R1:b3513' | ||
|
||
compileOnly project(":API") | ||
compileOnly parent | ||
} | ||
|
||
if (project.hasProperty('nms.compile_v1_19') && !Boolean.valueOf(project.findProperty("nms.compile_v1_19").toString())) { | ||
project.tasks.all { task -> task.enabled = false } | ||
} |
51 changes: 51 additions & 0 deletions
51
...n/java/com/bgsoftware/superiorskyblock/nms/v1_19_R1/algorithms/SpigotGlowEnchantment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
package com.bgsoftware.superiorskyblock.nms.v1_19_R1.algorithms; | ||
|
||
import org.bukkit.NamespacedKey; | ||
import org.bukkit.enchantments.Enchantment; | ||
import org.bukkit.enchantments.EnchantmentTarget; | ||
|
||
public class SpigotGlowEnchantment extends Enchantment { | ||
|
||
public SpigotGlowEnchantment(String name) { | ||
super(NamespacedKey.minecraft(name)); | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "SuperiorSkyblockGlow"; | ||
} | ||
|
||
@Override | ||
public int getMaxLevel() { | ||
return 1; | ||
} | ||
|
||
@Override | ||
public int getStartLevel() { | ||
return 0; | ||
} | ||
|
||
@Override | ||
public EnchantmentTarget getItemTarget() { | ||
return null; | ||
} | ||
|
||
public boolean isTreasure() { | ||
return false; | ||
} | ||
|
||
public boolean isCursed() { | ||
return false; | ||
} | ||
|
||
@Override | ||
public boolean conflictsWith(Enchantment enchantment) { | ||
return false; | ||
} | ||
|
||
@Override | ||
public boolean canEnchantItem(org.bukkit.inventory.ItemStack itemStack) { | ||
return true; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
group 'v1_19_R1' | ||
|
||
java { | ||
toolchain { | ||
languageVersion.set(JavaLanguageVersion.of(17)) | ||
} | ||
} | ||
|
||
repositories { | ||
maven { url "https://papermc.io/repo/repository/maven-public/" } | ||
maven { url "https://libraries.minecraft.net/" } | ||
} | ||
|
||
dependencies { | ||
compileOnly "org.spigotmc:v1_19_R1-Paper:git-02b5ec4" | ||
|
||
compileOnly 'io.papermc.paper:paper-api:1.19-R0.1-SNAPSHOT' | ||
|
||
compileOnly 'com.mojang:authlib:3.2.38' | ||
compileOnly 'com.mojang:datafixerupper:4.0.26' | ||
compileOnly 'com.mojang:brigadier:1.0.18' | ||
compileOnly 'com.google.guava:guava:31.1-jre' | ||
compileOnly 'com.google.code.gson:gson:2.9.0' | ||
compileOnly 'net.kyori:adventure-key:4.10.1' | ||
compileOnly 'net.kyori:examination-api:1.3.0' | ||
compileOnly 'net.kyori:adventure-api:4.10.1' | ||
compileOnly 'net.md-5:bungeecord-chat:1.16-R0.4' | ||
|
||
compileOnly project(":v1_19_R1-Spigot") | ||
compileOnly project(":API") | ||
compileOnly parent | ||
} | ||
|
||
if (project.hasProperty('nms.compile_v1_19') && !Boolean.valueOf(project.findProperty("nms.compile_v1_19").toString())) { | ||
project.tasks.all { task -> task.enabled = false } | ||
} |
150 changes: 150 additions & 0 deletions
150
v1_19_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_19_R1/NMSAlgorithmsImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
package com.bgsoftware.superiorskyblock.nms.v1_19_R1; | ||
|
||
import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; | ||
import com.bgsoftware.superiorskyblock.api.key.Key; | ||
import com.bgsoftware.superiorskyblock.key.KeyImpl; | ||
import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.algorithms.GlowEnchantmentFactory; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.core.BlockPosition; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.core.RegistryBlocks; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.server.level.WorldServer; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.world.level.block.Block; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.world.level.block.state.BlockData; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.server.network.chat.ChatSerializer; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.mapping.net.minecraft.world.item.ItemStack; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.menu.MenuTileEntityBrewing; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.menu.MenuTileEntityDispenser; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.menu.MenuTileEntityFurnace; | ||
import com.bgsoftware.superiorskyblock.nms.v1_19_R1.menu.MenuTileEntityHopper; | ||
import net.minecraft.world.IInventory; | ||
import org.bukkit.Location; | ||
import org.bukkit.Material; | ||
import org.bukkit.command.defaults.BukkitCommand; | ||
import org.bukkit.craftbukkit.v1_19_R1.CraftServer; | ||
import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; | ||
import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; | ||
import org.bukkit.craftbukkit.v1_19_R1.util.CraftChatMessage; | ||
import org.bukkit.craftbukkit.v1_19_R1.util.CraftMagicNumbers; | ||
import org.bukkit.enchantments.Enchantment; | ||
import org.bukkit.entity.FallingBlock; | ||
import org.bukkit.entity.Minecart; | ||
import org.bukkit.event.inventory.InventoryType; | ||
import org.bukkit.inventory.InventoryHolder; | ||
import org.bukkit.inventory.meta.ItemMeta; | ||
import org.bukkit.inventory.meta.PotionMeta; | ||
import org.bukkit.potion.PotionEffect; | ||
|
||
import java.util.EnumMap; | ||
import java.util.function.BiFunction; | ||
|
||
public final class NMSAlgorithmsImpl implements NMSAlgorithms { | ||
|
||
private static final SuperiorSkyblockPlugin plugin = SuperiorSkyblockPlugin.getPlugin(); | ||
private static final EnumMap<InventoryType, MenuCreator> MENUS_HOLDER_CREATORS = new EnumMap<>(InventoryType.class); | ||
|
||
static { | ||
MENUS_HOLDER_CREATORS.put(InventoryType.DISPENSER, MenuTileEntityDispenser::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.DROPPER, MenuTileEntityDispenser::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.FURNACE, MenuTileEntityFurnace::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.BREWING, MenuTileEntityBrewing::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.HOPPER, MenuTileEntityHopper::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.BLAST_FURNACE, MenuTileEntityFurnace::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.SMOKER, MenuTileEntityFurnace::new); | ||
} | ||
|
||
@Override | ||
public void registerCommand(BukkitCommand command) { | ||
((CraftServer) plugin.getServer()).getCommandMap().register("superiorskyblock2", command); | ||
} | ||
|
||
@Override | ||
public String parseSignLine(String original) { | ||
return ChatSerializer.toJson(CraftChatMessage.fromString(original)[0]); | ||
} | ||
|
||
@Override | ||
public int getCombinedId(Location location) { | ||
org.bukkit.World bukkitWorld = location.getWorld(); | ||
|
||
if (bukkitWorld == null) | ||
return 0; | ||
|
||
WorldServer world = new WorldServer(((CraftWorld) bukkitWorld).getHandle()); | ||
BlockPosition blockPosition = new BlockPosition(location.getBlockX(), location.getBlockY(), location.getBlockZ()); | ||
BlockData blockData = world.getType(blockPosition); | ||
return Block.getCombinedId(blockData); | ||
} | ||
|
||
@Override | ||
public int getCombinedId(Material material, byte data) { | ||
BlockData blockData; | ||
|
||
if (data == 0) { | ||
Block block = Block.ofNullable(CraftMagicNumbers.getBlock(material)); | ||
if (block == null) | ||
return -1; | ||
blockData = block.getBlockData(); | ||
} else { | ||
blockData = BlockData.ofNullable(CraftMagicNumbers.getBlock(material, data)); | ||
} | ||
|
||
return blockData == null ? -1 : Block.getCombinedId(blockData); | ||
} | ||
|
||
@Override | ||
public int compareMaterials(Material o1, Material o2) { | ||
int firstMaterial = o1.isBlock() ? Block.getCombinedId(new Block(CraftMagicNumbers.getBlock(o1)).getBlockData()) : o1.ordinal(); | ||
int secondMaterial = o2.isBlock() ? Block.getCombinedId(new Block(CraftMagicNumbers.getBlock(o2)).getBlockData()) : o2.ordinal(); | ||
return Integer.compare(firstMaterial, secondMaterial); | ||
} | ||
|
||
@Override | ||
public Key getBlockKey(int combinedId) { | ||
Material material = CraftMagicNumbers.getMaterial(Block.getByCombinedId(combinedId).getBlock().getHandle()); | ||
return KeyImpl.of(material, (byte) 0); | ||
} | ||
|
||
@Override | ||
public Key getMinecartBlock(Minecart minecart) { | ||
return KeyImpl.of(minecart.getDisplayBlockData().getMaterial(), (byte) 0); | ||
} | ||
|
||
@Override | ||
public Key getFallingBlockType(FallingBlock fallingBlock) { | ||
return KeyImpl.of(fallingBlock.getBlockData().getMaterial(), (byte) 0); | ||
} | ||
|
||
@Override | ||
public void setCustomModel(ItemMeta itemMeta, int customModel) { | ||
itemMeta.setCustomModelData(customModel); | ||
} | ||
|
||
@Override | ||
public void addPotion(PotionMeta potionMeta, PotionEffect potionEffect) { | ||
if (!potionMeta.hasCustomEffects()) | ||
potionMeta.setColor(potionEffect.getType().getColor()); | ||
potionMeta.addCustomEffect(potionEffect, true); | ||
} | ||
|
||
@Override | ||
public String getMinecraftKey(org.bukkit.inventory.ItemStack itemStack) { | ||
return RegistryBlocks.getKey(RegistryBlocks.ITEM_REGISTRY, | ||
new ItemStack(CraftItemStack.asNMSCopy(itemStack)).getItem()).toString(); | ||
} | ||
|
||
@Override | ||
public Enchantment getGlowEnchant() { | ||
return GlowEnchantmentFactory.createEnchantment(); | ||
} | ||
|
||
@Override | ||
public Object createMenuInventoryHolder(InventoryType inventoryType, InventoryHolder defaultHolder, String title) { | ||
MenuCreator menuCreator = MENUS_HOLDER_CREATORS.get(inventoryType); | ||
return menuCreator == null ? null : menuCreator.apply(defaultHolder, title); | ||
} | ||
|
||
private interface MenuCreator extends BiFunction<InventoryHolder, String, IInventory> { | ||
|
||
} | ||
|
||
} |
24 changes: 24 additions & 0 deletions
24
v1_19_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_19_R1/NMSCachedBlock.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.bgsoftware.superiorskyblock.nms.v1_19_R1; | ||
|
||
import com.bgsoftware.superiorskyblock.world.blocks.ICachedBlock; | ||
import org.bukkit.Location; | ||
import org.bukkit.World; | ||
import org.bukkit.block.Block; | ||
import org.bukkit.block.data.BlockData; | ||
|
||
public final class NMSCachedBlock implements ICachedBlock { | ||
|
||
private final BlockData blockData; | ||
|
||
public NMSCachedBlock(Block block) { | ||
this.blockData = block.getBlockData(); | ||
} | ||
|
||
@Override | ||
public void setBlock(Location location) { | ||
World world = location.getWorld(); | ||
if (world != null) | ||
world.getBlockAt(location).setBlockData(blockData); | ||
} | ||
|
||
} |
Oops, something went wrong.