Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7728448
commit 0c994e0
Showing
27 changed files
with
3,383 additions
and
1 deletion.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -52,4 +52,5 @@ include 'v1182' | |
include 'v1191' | ||
include 'v119' | ||
include 'v1192' | ||
include 'v1193' | ||
|
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 |
---|---|---|
@@ -0,0 +1,36 @@ | ||
plugins { | ||
id("io.papermc.paperweight.userdev") version "1.3.8" | ||
} | ||
|
||
java { | ||
toolchain { | ||
languageVersion.set(JavaLanguageVersion.of(17)) | ||
} | ||
} | ||
|
||
dependencies { | ||
paperweightDevelopmentBundle("io.papermc.paper:dev-bundle:1.19.3-R0.1-SNAPSHOT") | ||
compileOnly project(":NMS-Spigot") | ||
compileOnly project(":NMS-Paper") | ||
compileOnly project(":API") | ||
compileOnly parent | ||
} | ||
|
||
shadowJar { | ||
archiveFileName = "${project.name}-exclude.jar" | ||
} | ||
|
||
assemble { | ||
dependsOn(reobfJar) | ||
} | ||
|
||
tasks { | ||
reobfJar { | ||
File outputFile = new File(rootProject.archiveFolder, "reobf/${project.name}.jar") | ||
outputJar.set(layout.buildDirectory.file(outputFile.getPath())) | ||
} | ||
} | ||
|
||
if (project.hasProperty('nms.compile_v1_19') && !Boolean.valueOf(project.findProperty("nms.compile_v1_19").toString())) { | ||
project.tasks.all { task -> task.enabled = false } | ||
} |
166 changes: 166 additions & 0 deletions
166
v1193/src/main/java/com/bgsoftware/superiorskyblock/nms/v1193/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,166 @@ | ||
package com.bgsoftware.superiorskyblock.nms.v1193; | ||
|
||
import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin; | ||
import com.bgsoftware.superiorskyblock.api.key.Key; | ||
import com.bgsoftware.superiorskyblock.core.key.KeyImpl; | ||
import com.bgsoftware.superiorskyblock.nms.NMSAlgorithms; | ||
import com.bgsoftware.superiorskyblock.nms.algorithms.PaperGlowEnchantment; | ||
import com.bgsoftware.superiorskyblock.nms.algorithms.SpigotGlowEnchantment; | ||
import com.bgsoftware.superiorskyblock.nms.v1193.menu.MenuBrewingStandBlockEntity; | ||
import com.bgsoftware.superiorskyblock.nms.v1193.menu.MenuDispenserBlockEntity; | ||
import com.bgsoftware.superiorskyblock.nms.v1193.menu.MenuFurnaceBlockEntity; | ||
import com.bgsoftware.superiorskyblock.nms.v1193.menu.MenuHopperBlockEntity; | ||
import net.minecraft.core.BlockPos; | ||
import net.minecraft.core.registries.BuiltInRegistries; | ||
import net.minecraft.network.chat.Component; | ||
import net.minecraft.server.level.ServerLevel; | ||
import net.minecraft.world.Container; | ||
import net.minecraft.world.level.block.Block; | ||
import net.minecraft.world.level.block.state.BlockState; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.Location; | ||
import org.bukkit.Material; | ||
import org.bukkit.command.defaults.BukkitCommand; | ||
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.craftbukkit.v1_19_R2.util.CraftChatMessage; | ||
import org.bukkit.craftbukkit.v1_19_R2.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.ItemStack; | ||
import org.bukkit.inventory.meta.ItemMeta; | ||
import org.bukkit.inventory.meta.PotionMeta; | ||
import org.bukkit.potion.PotionEffect; | ||
|
||
import javax.annotation.Nullable; | ||
import java.util.EnumMap; | ||
import java.util.function.BiFunction; | ||
|
||
public class NMSAlgorithmsImpl implements NMSAlgorithms { | ||
|
||
private static final EnumMap<InventoryType, MenuCreator> MENUS_HOLDER_CREATORS = new EnumMap<>(InventoryType.class); | ||
|
||
static { | ||
MENUS_HOLDER_CREATORS.put(InventoryType.DISPENSER, MenuDispenserBlockEntity::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.DROPPER, MenuDispenserBlockEntity::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.FURNACE, MenuFurnaceBlockEntity::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.BREWING, MenuBrewingStandBlockEntity::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.HOPPER, MenuHopperBlockEntity::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.BLAST_FURNACE, MenuFurnaceBlockEntity::new); | ||
MENUS_HOLDER_CREATORS.put(InventoryType.SMOKER, MenuFurnaceBlockEntity::new); | ||
} | ||
|
||
private final SuperiorSkyblockPlugin plugin; | ||
|
||
public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { | ||
this.plugin = plugin; | ||
} | ||
|
||
@Override | ||
public void registerCommand(BukkitCommand command) { | ||
((CraftServer) plugin.getServer()).getCommandMap().register("superiorskyblock2", command); | ||
} | ||
|
||
@Override | ||
public String parseSignLine(String original) { | ||
return Component.Serializer.toJson(CraftChatMessage.fromString(original)[0]); | ||
} | ||
|
||
@Override | ||
public int getCombinedId(Location location) { | ||
org.bukkit.World bukkitWorld = location.getWorld(); | ||
|
||
if (bukkitWorld == null) | ||
return 0; | ||
|
||
ServerLevel serverLevel = ((CraftWorld) bukkitWorld).getHandle(); | ||
BlockPos blockPos = new BlockPos(location.getBlockX(), location.getBlockY(), location.getBlockZ()); | ||
BlockState blockState = serverLevel.getBlockState(blockPos); | ||
return Block.getId(blockState); | ||
} | ||
|
||
@Override | ||
public int getCombinedId(Material material, byte data) { | ||
BlockState blockState; | ||
|
||
if (data == 0) { | ||
Block block = CraftMagicNumbers.getBlock(material); | ||
if (block == null) | ||
return -1; | ||
blockState = block.defaultBlockState(); | ||
} else { | ||
blockState = CraftMagicNumbers.getBlock(material, data); | ||
} | ||
|
||
return blockState == null ? -1 : Block.getId(blockState); | ||
} | ||
|
||
@Override | ||
public int compareMaterials(Material o1, Material o2) { | ||
int firstMaterial = o1.isBlock() ? Block.getId(CraftMagicNumbers.getBlock(o1).defaultBlockState()) : o1.ordinal(); | ||
int secondMaterial = o2.isBlock() ? Block.getId(CraftMagicNumbers.getBlock(o2).defaultBlockState()) : o2.ordinal(); | ||
return Integer.compare(firstMaterial, secondMaterial); | ||
} | ||
|
||
@Override | ||
public Key getBlockKey(int combinedId) { | ||
Material material = CraftMagicNumbers.getMaterial(Block.stateById(combinedId).getBlock()); | ||
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(ItemStack itemStack) { | ||
return BuiltInRegistries.ITEM.getKey(CraftItemStack.asNMSCopy(itemStack).getItem()).toString(); | ||
} | ||
|
||
@Override | ||
public Enchantment getGlowEnchant() { | ||
try { | ||
return new PaperGlowEnchantment("superior_glowing_enchant"); | ||
} catch (Throwable error) { | ||
return new SpigotGlowEnchantment("superior_glowing_enchant"); | ||
} | ||
} | ||
|
||
@Nullable | ||
@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); | ||
} | ||
|
||
@Override | ||
public int getMaxWorldSize() { | ||
return Bukkit.getMaxWorldSize(); | ||
} | ||
|
||
private interface MenuCreator extends BiFunction<InventoryHolder, String, Container> { | ||
} | ||
|
||
} |
Oops, something went wrong.