mirror of
https://github.com/SimplexDevelopment/SimplexCore.git
synced 2024-12-22 16:47:37 +00:00
Release Candidate 1
Alpha Release Candidate 1; almost ready for official Alpha Release.
This commit is contained in:
parent
e617b0f87a
commit
f3e4aab3ce
@ -4,25 +4,23 @@ import org.bukkit.Color;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This interface is intended for creating custom potion effects.
|
||||
*/
|
||||
public interface IPotionEffect {
|
||||
public interface ICompoundEffect {
|
||||
@NotNull
|
||||
PotionEffect getEffect();
|
||||
|
||||
@NotNull
|
||||
PotionEffectType getType();
|
||||
List<PotionEffect> getEffects();
|
||||
|
||||
@NotNull
|
||||
String getName();
|
||||
|
||||
@NotNull
|
||||
Long getDuration();
|
||||
Integer getDuration();
|
||||
|
||||
@Nullable
|
||||
Particle getParticleType();
|
@ -1,13 +0,0 @@
|
||||
package io.github.simplexdev.api;
|
||||
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
public interface IEnchant {
|
||||
NamespacedKey getNamespacedKey();
|
||||
|
||||
String getName();
|
||||
|
||||
Integer getMaximumLevel();
|
||||
|
||||
Boolean isGlowing();
|
||||
}
|
@ -5,11 +5,6 @@ import io.github.simplexdev.api.annotations.Requires;
|
||||
import io.github.simplexdev.simplexcore.command.defaults.Command_info;
|
||||
import io.github.simplexdev.simplexcore.config.Yaml;
|
||||
import io.github.simplexdev.simplexcore.config.YamlFactory;
|
||||
import io.github.simplexdev.simplexcore.crafting.RecipeBuilder;
|
||||
import io.github.simplexdev.simplexcore.module.DependencyManagement;
|
||||
import io.github.simplexdev.simplexcore.task.Announcer;
|
||||
import io.github.simplexdev.simplexcore.listener.DependencyListener;
|
||||
import io.github.simplexdev.simplexcore.listener.SimplexListener;
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
|
||||
@Requires(ReqType.SPIGOT)
|
||||
@ -17,7 +12,6 @@ public final class SimplexCorePlugin extends SimplexModule<SimplexCorePlugin> {
|
||||
private static boolean debug = false;
|
||||
private static boolean suspended = false;
|
||||
private static SimplexCorePlugin instance;
|
||||
private DependencyManagement dpm;
|
||||
private Yaml config;
|
||||
private Yaml internals;
|
||||
|
||||
@ -33,7 +27,6 @@ public final class SimplexCorePlugin extends SimplexModule<SimplexCorePlugin> {
|
||||
@Override
|
||||
public void init() {
|
||||
SimplexCorePlugin.instance = this;
|
||||
this.dpm = new DependencyManagement();
|
||||
this.config = new YamlFactory(this).setDefaultPathways();
|
||||
this.internals = new YamlFactory(this).from("internals.yml", getParentFolder(), "internals.yml");
|
||||
}
|
||||
@ -45,9 +38,6 @@ public final class SimplexCorePlugin extends SimplexModule<SimplexCorePlugin> {
|
||||
getCommandLoader().classpath(this, Command_info.class).load();
|
||||
getYamlConfig().reload();
|
||||
getInternals().reload();
|
||||
//
|
||||
SimplexListener.register(new DependencyListener(), this);
|
||||
new Announcer(this);
|
||||
} catch (Exception ex) {
|
||||
suspended = true;
|
||||
// TODO: Write an output to a file with why it suspended.
|
||||
@ -74,13 +64,11 @@ public final class SimplexCorePlugin extends SimplexModule<SimplexCorePlugin> {
|
||||
return suspended;
|
||||
}
|
||||
|
||||
public DependencyManagement getDependencyManager() {
|
||||
return dpm;
|
||||
}
|
||||
|
||||
public Yaml getYamlConfig() {
|
||||
return config;
|
||||
}
|
||||
|
||||
public Yaml getInternals() { return internals; }
|
||||
public Yaml getInternals() {
|
||||
return internals;
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.config;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import io.github.simplexdev.api.IJson;
|
||||
import io.github.simplexdev.api.func.Path;
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public final class Json implements IJson {
|
||||
// TODO: Write actual JSON implementations.
|
||||
//
|
||||
private final Gson gson;
|
||||
private final SimplexModule<?> plugin;
|
||||
|
||||
Json(SimplexModule<?> plugin) {
|
||||
this.gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
final Gson getGson() {
|
||||
return gson;
|
||||
}
|
||||
|
||||
public final SimplexModule<?> getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getJSONObject(Path path) {
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.config;
|
||||
|
||||
public final class JsonFactory {
|
||||
// TODO: Write a JSON Object Factory.
|
||||
}
|
@ -151,13 +151,13 @@ public final class Yaml implements IConfig {
|
||||
* Called when a file is created.
|
||||
*/
|
||||
public void create() {
|
||||
SimplexCorePlugin.getInstance().getLogger().info("File created!");
|
||||
plugin.getLogger().info("File created!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when then file is reloaded
|
||||
*/
|
||||
public void onReload() {
|
||||
SimplexCorePlugin.getInstance().getLogger().info("The plugin configuration has been reloaded!");
|
||||
plugin.getLogger().info("The plugin configuration has been reloaded!");
|
||||
}
|
||||
}
|
||||
|
@ -196,14 +196,22 @@ public class ItemBuilder {
|
||||
|
||||
public final Worker setUnbreakable(boolean unbreakable) {
|
||||
meta.setUnbreakable(unbreakable);
|
||||
stack.setItemMeta(meta);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The final item.
|
||||
*/
|
||||
public final ItemStack get() {
|
||||
public final ItemStack getItem() {
|
||||
return stack;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The ItemMeta of the item.
|
||||
*/
|
||||
public final ItemMeta getItemMeta() {
|
||||
return meta;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,47 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.crafting;
|
||||
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public class RBImpl {
|
||||
private final RecipeBuilder builder;
|
||||
private final SimplexModule<?> plugin;
|
||||
private final ItemBuilder bldr;
|
||||
|
||||
public RBImpl(SimplexModule<?> plugin) {
|
||||
this.plugin = plugin;
|
||||
this.builder = new RecipeBuilder(plugin);
|
||||
this.bldr = new ItemBuilder(plugin);
|
||||
|
||||
chainMailBoots();
|
||||
customWand();
|
||||
}
|
||||
|
||||
public void chainMailBoots() {
|
||||
ItemStack is = bldr.createNoBounds(Material.CHAINMAIL_BOOTS);
|
||||
builder.of(is, "chainmail_boots", true)
|
||||
.addIngredient('c', Material.CHAIN)
|
||||
.addIngredient('a', Material.AIR)
|
||||
.setShape("aaa", "cac", "cac")
|
||||
.create();
|
||||
}
|
||||
|
||||
public void customWand() {
|
||||
ItemStack is = bldr.newItem(Material.BLAZE_ROD)
|
||||
.setName("Magic Wand")
|
||||
.addLore("This wand is magical.")
|
||||
.addEnchant(Enchantment.KNOCKBACK, 10)
|
||||
.addAttribute(Attribute.GENERIC_ATTACK_KNOCKBACK,
|
||||
bldr.multiply("generic_attack_knockback", 24.0))
|
||||
.get();
|
||||
builder.of(is, "magic_wand", true)
|
||||
.addIngredient('b', Material.BLAZE_ROD)
|
||||
.addIngredient('n', Material.NETHER_STAR)
|
||||
.addIngredient('a', Material.AIR)
|
||||
.setShape("aan", "aba", "baa")
|
||||
.create();
|
||||
}
|
||||
}
|
@ -4,7 +4,12 @@ import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import io.github.simplexdev.simplexcore.utils.Utilities;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.inventory.CraftItemEvent;
|
||||
import org.bukkit.event.inventory.PrepareItemCraftEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.Recipe;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -30,7 +35,7 @@ public final class RecipeBuilder {
|
||||
* @param isShaped Whether or not the recipe is shaped or shapeless.
|
||||
* @return A new appendable RecipeBuilder Worker instance based on the given parameters.
|
||||
*/
|
||||
public final Worker of(ItemStack result, String recipeName, boolean isShaped) {
|
||||
public final Worker newRecipe(ItemStack result, String recipeName, boolean isShaped) {
|
||||
return new Worker(result, recipeName, isShaped);
|
||||
}
|
||||
|
||||
@ -72,6 +77,9 @@ public final class RecipeBuilder {
|
||||
return recipe;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the recipe and registers it with Bukkit.
|
||||
*/
|
||||
public void create() {
|
||||
plugin.getServer().addRecipe(shaped ? sha() : nosha());
|
||||
}
|
||||
|
@ -1,29 +1,6 @@
|
||||
package io.github.simplexdev.simplexcore.enchanting;
|
||||
|
||||
import io.github.simplexdev.api.annotations.Enchant;
|
||||
import io.github.simplexdev.simplexcore.utils.ReflectionTools;
|
||||
import org.bukkit.enchantments.EnchantmentWrapper;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import net.minecraft.server.v1_16_R3.Enchantment;
|
||||
|
||||
public class EnchUtils {
|
||||
public SimplexEnch enchantment;
|
||||
|
||||
public <T extends SimplexEnch> void loadFrom(Class<T> clz) {
|
||||
Enchant info = clz.getDeclaredAnnotation(Enchant.class);
|
||||
|
||||
if (info == null) {
|
||||
// TODO
|
||||
return;
|
||||
}
|
||||
|
||||
ReflectionTools.reflect(clz).getTypesAnnotatedWith(info).forEach(cls -> {
|
||||
Constructor<?> c = ReflectionTools.getDeclaredConstructor(cls);
|
||||
if (c == null) return;
|
||||
SimplexEnch ench = (SimplexEnch) ReflectionTools.initConstructor(c);
|
||||
load(ench);
|
||||
});
|
||||
}
|
||||
|
||||
public <T extends SimplexEnch> void load(T enchantment) {} // TODO
|
||||
}
|
||||
|
@ -1,23 +1,24 @@
|
||||
package io.github.simplexdev.simplexcore.enchanting;
|
||||
|
||||
import io.github.simplexdev.api.IEnchant;
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import net.minecraft.server.v1_16_R3.EnchantmentSlotType;
|
||||
import net.minecraft.server.v1_16_R3.EnumItemRarity;
|
||||
import net.minecraft.server.v1_16_R3.EnumItemSlot;
|
||||
import net.minecraft.server.v1_16_R3.Enchantment;
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
public abstract class SimplexEnch extends Enchantment implements IEnchant {
|
||||
protected final SimplexModule<?> plugin;
|
||||
public abstract class SimplexEnch extends Enchantment {
|
||||
private final SimplexModule<?> plugin;
|
||||
private final Rarity rarity;
|
||||
|
||||
protected SimplexEnch(SimplexModule<?> plugin, Rarity rarity, EnchantmentSlotType type, EnumItemSlot[] enumSlot) {
|
||||
super(rarity, type, enumSlot);
|
||||
this.rarity = rarity;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
public abstract String name();
|
||||
|
||||
@Override
|
||||
public NamespacedKey getNamespacedKey() {
|
||||
return new NamespacedKey(plugin, name());
|
||||
}
|
||||
|
@ -1,44 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.listener;
|
||||
|
||||
import io.github.simplexdev.simplexcore.SimplexCorePlugin;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.server.PluginEnableEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.BooleanSupplier;
|
||||
|
||||
public final class DependencyListener extends SimplexListener {
|
||||
public List<String> PAPI_NAMES = new ArrayList<>() {{
|
||||
add("PlaceholderAPI");
|
||||
add("PlaceHolderAPI");
|
||||
add("placeholderapi");
|
||||
add("PLACEHOLDERAPI");
|
||||
add("PAPI");
|
||||
add("papi");
|
||||
}};
|
||||
|
||||
public List<String> PLIB_NAMES = new ArrayList<>() {{
|
||||
add("ProtocolLib");
|
||||
add("PLib");
|
||||
add("Protocollib");
|
||||
add("plib");
|
||||
add("protocollib");
|
||||
add("PROTOCOLLIB");
|
||||
}};
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void pluginRegister(PluginEnableEvent event) {
|
||||
BooleanSupplier temp = () -> PLIB_NAMES.contains(event.getPlugin().getName());
|
||||
BooleanSupplier temp2 = () -> PAPI_NAMES.contains(event.getPlugin().getName());
|
||||
|
||||
if (temp.getAsBoolean()) {
|
||||
SimplexCorePlugin.getInstance().getDependencyManager().registerProtocolLib();
|
||||
}
|
||||
|
||||
if (temp2.getAsBoolean()) {
|
||||
SimplexCorePlugin.getInstance().getDependencyManager().registerPAPI();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.math;
|
||||
|
||||
import io.github.simplexdev.simplexcore.SimplexCorePlugin;
|
||||
import io.github.simplexdev.simplexcore.utils.TickedTime;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public final class Cuboid {
|
||||
private final int x, y, z;
|
||||
|
||||
public Cuboid() {
|
||||
this(3, 3, 3);
|
||||
}
|
||||
|
||||
public Cuboid(int xSize, int ySize, int zSize) {
|
||||
this.x = xSize;
|
||||
this.y = ySize;
|
||||
this.z = zSize;
|
||||
}
|
||||
|
||||
public Cuboid(Size size) {
|
||||
this(size.getX(), size.getY(), size.getZ());
|
||||
}
|
||||
|
||||
public void generate(Location location, Material material) {
|
||||
Consumer<BukkitTask> task = bukkitTask -> {
|
||||
int t1 = location.getBlockX();
|
||||
int t2 = location.getBlockY();
|
||||
int t3 = location.getBlockZ();
|
||||
|
||||
int a = t1 + x;
|
||||
int b = t2 + y;
|
||||
int c = t3 + z;
|
||||
|
||||
for (int currentX = t1; currentX < a; currentX++) {
|
||||
for (int currentY = t2; currentY < b; currentY++) {
|
||||
for (int currentZ = t3; currentZ < c; currentZ++) {
|
||||
location.getWorld().getBlockAt(currentX, currentY, currentZ).setType(material);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
SimplexCorePlugin.getInstance().getScheduler().runTaskLaterAsynchronously(SimplexCorePlugin.getInstance(), task,
|
||||
TickedTime.SECOND);
|
||||
}
|
||||
}
|
@ -1,149 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.math;
|
||||
|
||||
import io.github.simplexdev.simplexcore.SimplexCorePlugin;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public final class Pyramid {
|
||||
|
||||
private final int height;
|
||||
private Location location;
|
||||
private Material material;
|
||||
|
||||
public Pyramid(int height, Location location, Material material) {
|
||||
|
||||
this.height = height;
|
||||
this.location = location;
|
||||
this.material = material;
|
||||
}
|
||||
|
||||
public Pyramid(Size size, Location location, Material material) {
|
||||
|
||||
this.height = size.getY();
|
||||
this.location = location;
|
||||
this.material = material;
|
||||
}
|
||||
|
||||
|
||||
public void setLocation(Location location) {
|
||||
this.location = location;
|
||||
}
|
||||
|
||||
public void setMaterial(Material material) {
|
||||
this.material = material;
|
||||
}
|
||||
|
||||
public void generate() {
|
||||
|
||||
Consumer<BukkitTask> consumer = bukkitTask -> {
|
||||
|
||||
System.out.println(height % 2 == 0);
|
||||
|
||||
if (height % 2 == 0)
|
||||
createEvenFull();
|
||||
|
||||
else
|
||||
createOddFull();
|
||||
};
|
||||
|
||||
SimplexCorePlugin.getInstance().getScheduler().runTaskLater(SimplexCorePlugin.getInstance(), consumer, 20L);
|
||||
}
|
||||
|
||||
private void createOddFull() {
|
||||
int locX = location.getBlockX();
|
||||
int locY = location.getBlockY();
|
||||
int locZ = location.getBlockZ();
|
||||
|
||||
int currentArea = 1;
|
||||
|
||||
for (int y = height; y > 0; y--) {
|
||||
for (int x = -(int) (Math.floor(currentArea / (double) 2)); x <= (int) Math.floor(currentArea / (double) 2); x++) {
|
||||
for (int z = -(int) (Math.floor(currentArea / (double) 2)); z <= (int) Math.floor(currentArea / (double) 2); z++) {
|
||||
|
||||
Block block = location.getWorld().getBlockAt(locX + x, locY + y, locZ + z);
|
||||
|
||||
block.setType(material);
|
||||
|
||||
}
|
||||
}
|
||||
currentArea += 2;
|
||||
}
|
||||
}
|
||||
|
||||
private void createEvenFull() {
|
||||
createEvenSide(1);
|
||||
|
||||
location.setX(location.getBlockX() + 1);
|
||||
createEvenSide(2);
|
||||
|
||||
location.setZ(location.getBlockZ() + 1);
|
||||
createEvenSide(3);
|
||||
|
||||
location.setX(location.getBlockX() - 1);
|
||||
createEvenSide(4);
|
||||
}
|
||||
|
||||
private void createEvenSide(int quadrant) {
|
||||
int locX = location.getBlockX();
|
||||
int locY = location.getBlockY();
|
||||
int locZ = location.getBlockZ();
|
||||
|
||||
int currentArea = 1;
|
||||
|
||||
int x = currentArea;
|
||||
int z = currentArea;
|
||||
|
||||
switch (quadrant) {
|
||||
case 1:
|
||||
x = +x;
|
||||
z = +z;
|
||||
|
||||
break;
|
||||
case 2:
|
||||
x = -x;
|
||||
z = +z;
|
||||
|
||||
break;
|
||||
case 3:
|
||||
|
||||
x = -x;
|
||||
z = -z;
|
||||
break;
|
||||
case 4:
|
||||
|
||||
x = +x;
|
||||
z = -z;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
for (int y2 = locY + height; y2 > locY; y2--) {
|
||||
|
||||
for (int x2 = x; x2 != 0; x2 = decreaseOrIncrease(x2)) {
|
||||
|
||||
for (int z2 = z; z2 != 0; z2 = decreaseOrIncrease(z2)) {
|
||||
|
||||
Block block = location.getWorld().getBlockAt(locX + x2, y2, locZ + z2);
|
||||
block.setType(material);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
x += x > 0 ? 1 : -1;
|
||||
z += z > 0 ? 1 : -1;
|
||||
}
|
||||
}
|
||||
|
||||
private int decreaseOrIncrease(int x) {
|
||||
if (x > 0)
|
||||
x--;
|
||||
else if (x < 0)
|
||||
x++;
|
||||
|
||||
return x;
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.math;
|
||||
|
||||
public enum Size {
|
||||
SMALL(1, 1, 1),
|
||||
MEDIUM(3, 3, 3),
|
||||
LARGE(5, 5, 5),
|
||||
EXTRA_LARGE(10, 10, 10),
|
||||
HUGE(20, 20, 20),
|
||||
ENORMOUS(50, 50, 50);
|
||||
|
||||
int x, y, z;
|
||||
|
||||
Size(int x, int y, int z) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public int getZ() {
|
||||
return z;
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.module;
|
||||
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.ProtocolManager;
|
||||
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class DependencyManagement {
|
||||
private ProtocolManager manager;
|
||||
private PlaceholderAPIPlugin papi;
|
||||
|
||||
public DependencyManagement() {
|
||||
manager = null;
|
||||
papi = null;
|
||||
}
|
||||
|
||||
public void registerProtocolLib() {
|
||||
manager = ProtocolLibrary.getProtocolManager();
|
||||
}
|
||||
|
||||
public void registerPAPI() {
|
||||
papi = PlaceholderAPIPlugin.getInstance();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PlaceholderAPIPlugin getPAPI() {
|
||||
return papi;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ProtocolManager getProtocolManager() {
|
||||
return manager;
|
||||
}
|
||||
}
|
@ -71,8 +71,4 @@ public abstract class SimplexModule<T extends SimplexModule<T>> extends JavaPlug
|
||||
public CommandLoader getCommandLoader() {
|
||||
return CommandLoader.getInstance();
|
||||
}
|
||||
|
||||
public SimplexCorePlugin getProvider() {
|
||||
return SimplexCorePlugin.getInstance();
|
||||
}
|
||||
}
|
||||
|
@ -85,9 +85,9 @@ public final class ParticleFactory {
|
||||
};
|
||||
}
|
||||
|
||||
// TODO: Needs work :)
|
||||
public void spawnParticle(IParticleEffect effect, Location location) {
|
||||
World world = location.getWorld();
|
||||
if (world == null) return;
|
||||
effect.getParticles().forEach(particle -> {
|
||||
Color color = effect.getParticleColors().get(particle);
|
||||
world.spawnParticle(particle, location, 20);
|
||||
|
@ -1,22 +1,80 @@
|
||||
package io.github.simplexdev.simplexcore.potion;
|
||||
|
||||
import io.github.simplexdev.api.IPotionEffect;
|
||||
import io.github.simplexdev.api.ICompoundEffect;
|
||||
import io.github.simplexdev.simplexcore.listener.SimplexListener;
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import io.github.simplexdev.simplexcore.utils.Utilities;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
public final class PotionsFactory {
|
||||
private PotionsFactory() {
|
||||
throw new AssertionError("This class should not be instantiated!");
|
||||
private final Player player;
|
||||
private final Map<Player, ICompoundEffect> map = new HashMap<>();
|
||||
|
||||
public PotionsFactory(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public static void applyEffect(LivingEntity entity, PotionEffect... effect) {
|
||||
entity.addPotionEffects(Utilities.stream(effect).collect(Collectors.toSet()));
|
||||
public static ICompoundEffect compoundEffect(SimplexModule<?> plugin, String name, int duration, int amplifier, PotionEffectType... effects) {
|
||||
List<PotionEffect> list = new ArrayList<>();
|
||||
|
||||
Utilities.forEach(effects, effect -> {
|
||||
list.add(effect.createEffect(duration, amplifier));
|
||||
});
|
||||
|
||||
return new ICompoundEffect() {
|
||||
@Override
|
||||
public @NotNull List<PotionEffect> getEffects() {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Integer getDuration() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Particle getParticleType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable Color getParticleColor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull NamespacedKey getNamespacedKey() {
|
||||
return new NamespacedKey(plugin, name);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public static void applyEffect(LivingEntity entity, IPotionEffect... effect) {
|
||||
Utilities.forEach(effect, sim -> sim.getEffect().apply(entity)); // Interesting, not how it will be done in the end though.
|
||||
public void applyCompoundEffect(ICompoundEffect effect) {
|
||||
effect.getEffects().forEach(item -> {
|
||||
item.apply(player);
|
||||
});
|
||||
map.put(player, effect);
|
||||
}
|
||||
|
||||
public boolean hasPotionEffect(ICompoundEffect effect) {
|
||||
return (map.containsKey(player) && map.get(player).equals(effect));
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.structures;
|
||||
|
||||
|
||||
public enum PasteType {
|
||||
BLOCKBYBLOCKASYNC,
|
||||
INSTANTASYNC
|
||||
}
|
@ -1,103 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.structures;
|
||||
|
||||
import io.github.simplexdev.api.IStructure;
|
||||
import io.github.simplexdev.simplexcore.math.Size;
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import io.github.simplexdev.simplexcore.structures.block.NBTBlock;
|
||||
import io.github.simplexdev.simplexcore.structures.exception.InvalidSchematic;
|
||||
import io.github.simplexdev.simplexcore.structures.exception.SchematicNotLoaded;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class Structure implements IStructure {
|
||||
private final SimplexModule<?> plugin;
|
||||
private File schematic;
|
||||
private short width, height, length = 0;
|
||||
private byte[] blockdatacontainer;
|
||||
|
||||
private HashMap<Vector, NBTBlock> nbtBlocks = new HashMap<>();
|
||||
private HashMap<Integer, BlockData> blocks = new HashMap<>();
|
||||
|
||||
public Structure(SimplexModule<?> plugin, File schematic) {
|
||||
this.plugin = plugin;
|
||||
this.schematic = schematic;
|
||||
}
|
||||
|
||||
public void load() throws InvalidSchematic {
|
||||
|
||||
}
|
||||
|
||||
public void paste(Location loc, PasteType pasteType) throws SchematicNotLoaded {
|
||||
if (width == 0 || height == 0 || length == 0 || blocks.isEmpty()) {
|
||||
throw new SchematicNotLoaded("Schematic not loaded please load schematic first...");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NamespacedKey getNamespacedKey() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getLocation() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getWorld() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldGenerateNaturally() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Location location, World world) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Location location, World world, boolean generateNaturally) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Size getApproximateSize() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block[] getBlocks() {
|
||||
return new Block[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Block, Location> getBlockLocations() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getStructureFile() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public SimplexModule<?> getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
// TODO: Write this
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.structures.block;
|
||||
|
||||
import io.github.simplexdev.simplexcore.structures.exception.InvalidSchematic;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
public abstract class NBTBlock {
|
||||
private Object nbttag;
|
||||
|
||||
public Object getNbttag(){
|
||||
return nbttag;
|
||||
}
|
||||
|
||||
public abstract Vector getOffset() throws InvalidSchematic;
|
||||
|
||||
public abstract boolean isEmpty();
|
||||
|
||||
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.structures.exception;
|
||||
|
||||
public class InvalidSchematic extends Exception{
|
||||
|
||||
public InvalidSchematic(String msg)
|
||||
{
|
||||
super(msg);
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.structures.exception;
|
||||
|
||||
public class SchematicNotLoaded extends Exception {
|
||||
|
||||
public SchematicNotLoaded(String msg) {
|
||||
super(msg);
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.task;
|
||||
|
||||
import io.github.simplexdev.simplexcore.SimplexCorePlugin;
|
||||
import io.github.simplexdev.simplexcore.chat.Messages;
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import io.github.simplexdev.simplexcore.utils.TickedTime;
|
||||
import org.apache.commons.lang.math.RandomUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Announcer extends SimplexTask {
|
||||
private final List<String> stringList = new ArrayList<>() {{
|
||||
add("Join our discord!" + Messages.DISCORD.getMessage());
|
||||
add("Thank you for using SimplexCore!");
|
||||
add("https://github.com/SimplexDevelopment/SimplexCore");
|
||||
}};
|
||||
|
||||
public Announcer(SimplexCorePlugin plugin) {
|
||||
super(plugin, TickedTime.HOUR);
|
||||
register(this, true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(BukkitTask bukkitTask) {
|
||||
Bukkit.getServer().broadcastMessage(stringList.get(RandomUtils.nextInt(stringList.size())));
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@ import java.util.UUID;
|
||||
public final class PlayerTools {
|
||||
|
||||
@NotNull
|
||||
public static String stringUUID(@NotNull Player player) {
|
||||
public static String stringedUUID(@NotNull Player player) {
|
||||
return player.getUniqueId().toString();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user