mirror of
https://github.com/SimplexDevelopment/SimplexCore.git
synced 2024-12-22 16:47:37 +00:00
Alpha Release 1.0
This commit is contained in:
parent
d8829d4931
commit
70a339a130
@ -1,5 +1,5 @@
|
||||
pluginMain=SimplexCorePlugin
|
||||
pluginMainPackage=io.github.simplexdev.simplexcore
|
||||
pluginVersion=1.3_13
|
||||
pluginVersion=1.0.0
|
||||
pluginName=SimplexCore
|
||||
pluginJarClassifier=BLEEDING
|
||||
pluginJarClassifier=Alpha
|
||||
|
@ -112,7 +112,7 @@ public final class BanFactory {
|
||||
}
|
||||
|
||||
public void deleteBan(IBan ban) {
|
||||
|
||||
// TODO
|
||||
}
|
||||
|
||||
public IBan getBan(String banId) {
|
||||
|
@ -1,27 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.block;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
||||
public class InteractableBlock {
|
||||
private final Block block;
|
||||
private final Location location;
|
||||
private final Material material;
|
||||
|
||||
public InteractableBlock(Location location) {
|
||||
this.block = location.getBlock();
|
||||
this.location = block.getLocation();
|
||||
this.material = block.getType();
|
||||
}
|
||||
|
||||
public InteractableBlock(Block block) {
|
||||
this.block = block;
|
||||
this.location = block.getLocation();
|
||||
this.material = block.getType();
|
||||
}
|
||||
|
||||
public void test() {
|
||||
|
||||
}
|
||||
}
|
@ -2,52 +2,13 @@ package io.github.simplexdev.simplexcore.block;
|
||||
|
||||
import io.github.simplexdev.api.IUsableSign;
|
||||
import io.github.simplexdev.api.func.VoidSupplier;
|
||||
import io.github.simplexdev.simplexcore.SimplexCorePlugin;
|
||||
import io.github.simplexdev.simplexcore.listener.SimplexListener;
|
||||
import io.github.simplexdev.simplexcore.module.SimplexModule;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Sign;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class SignFactory {
|
||||
private static final List<Material> SIGN_TYPES = new ArrayList<>() {{
|
||||
add(Material.OAK_SIGN);
|
||||
add(Material.OAK_WALL_SIGN);
|
||||
add(Material.DARK_OAK_SIGN);
|
||||
add(Material.DARK_OAK_WALL_SIGN);
|
||||
add(Material.BIRCH_SIGN);
|
||||
add(Material.BIRCH_WALL_SIGN);
|
||||
add(Material.ACACIA_SIGN);
|
||||
add(Material.ACACIA_WALL_SIGN);
|
||||
add(Material.CRIMSON_SIGN);
|
||||
add(Material.CRIMSON_WALL_SIGN);
|
||||
add(Material.JUNGLE_SIGN);
|
||||
add(Material.JUNGLE_WALL_SIGN);
|
||||
add(Material.SPRUCE_SIGN);
|
||||
add(Material.SPRUCE_WALL_SIGN);
|
||||
add(Material.WARPED_SIGN);
|
||||
add(Material.WARPED_WALL_SIGN);
|
||||
}};
|
||||
|
||||
private SignData signData = null;
|
||||
|
||||
public void activateBasicSignDataListener() {
|
||||
signData = new SignData(SimplexCorePlugin.getInstance());
|
||||
}
|
||||
|
||||
public SignData getSignData() {
|
||||
return signData;
|
||||
}
|
||||
|
||||
public IUsableSign create(Sign sign, boolean canInteract, String tag, VoidSupplier execute) {
|
||||
return new AbstractSign(sign) {
|
||||
@Override
|
||||
@ -66,81 +27,4 @@ public class SignFactory {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public IUsableSign addTagsToSign(Sign sign, Object... tags) {
|
||||
if (getSignData() != null) {
|
||||
if (!SignData.getUnlabeledSigns().containsKey(sign)) {
|
||||
createNoTag(sign);
|
||||
}
|
||||
|
||||
AbstractSign abs = SignData.getUnlabeledSigns().get(sign);
|
||||
for (Object tag : tags) {
|
||||
if (tag instanceof VoidSupplier) {
|
||||
abs.setExecuteScript((VoidSupplier) tag);
|
||||
}
|
||||
if (tag instanceof String) {
|
||||
abs.setSignTag((String) tag);
|
||||
}
|
||||
if (tag instanceof Boolean) {
|
||||
abs.setCanInteract((Boolean) tag);
|
||||
}
|
||||
}
|
||||
return abs;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private AbstractSign createNoTag(Sign sign) {
|
||||
return new AbstractSign(sign) {
|
||||
@Override
|
||||
public boolean canInteract() {
|
||||
return canInteract;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
executeScript.get();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static class SignData extends SimplexListener {
|
||||
public SignData(SimplexModule<?> plugin) {
|
||||
register(this, plugin);
|
||||
}
|
||||
|
||||
private static final Map<Sign, AbstractSign> signMap = new HashMap<>();
|
||||
|
||||
@EventHandler
|
||||
public void blockPlaceEvent(BlockPlaceEvent event) {
|
||||
if (SIGN_TYPES.contains(event.getBlockPlaced().getType())
|
||||
&& (event.getBlockPlaced() instanceof Sign)) {
|
||||
Sign sign = (Sign) event.getBlockPlaced();
|
||||
AbstractSign abs = new SignFactory().createNoTag(sign);
|
||||
signMap.put(sign, abs);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void blockInteractEvent(PlayerInteractEvent event) {
|
||||
if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK)
|
||||
&& event.getClickedBlock() != null
|
||||
&& SIGN_TYPES.contains(event.getClickedBlock().getType())) {
|
||||
Sign sign = (Sign) event.getClickedBlock();
|
||||
if (signMap.containsKey(sign)) {
|
||||
IUsableSign iSign = signMap.get(sign);
|
||||
String tag = iSign.signTag();
|
||||
if (iSign.getLines().get(0).equals(tag)) {
|
||||
iSign.execute();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Map<Sign, AbstractSign> getUnlabeledSigns() {
|
||||
return signMap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,4 +34,6 @@ public final class ChatUtils {
|
||||
public void color(TextComponent component) {
|
||||
target.sendMessage(factory.colorize(component.getText()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,6 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.enchanting;
|
||||
|
||||
import net.minecraft.server.v1_16_R3.Enchantment;
|
||||
|
||||
public class EnchUtils {
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
package io.github.simplexdev.simplexcore.enchanting;
|
||||
|
||||
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 {
|
||||
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();
|
||||
|
||||
public NamespacedKey getNamespacedKey() {
|
||||
return new NamespacedKey(plugin, name());
|
||||
}
|
||||
}
|
@ -29,12 +29,12 @@ public final class PotionEffectFactory {
|
||||
|
||||
/**
|
||||
* Creates a new compound effect with the specified parameters.
|
||||
* @param plugin The plugin to use when registering a new NamespacedKey
|
||||
* @param name
|
||||
* @param duration
|
||||
* @param amplifier
|
||||
* @param effects
|
||||
* @return
|
||||
* @param plugin The plugin to use when registering a new NamespacedKey.
|
||||
* @param name The effect name
|
||||
* @param duration The duration of the effect
|
||||
* @param amplifier the amplifier of the effect
|
||||
* @param effects The {@link PotionEffectType}(s) you want to be included.
|
||||
* @return A new compound effect.
|
||||
*/
|
||||
public static ICompoundEffect compoundEffect(SimplexModule<?> plugin, String name, int duration, int amplifier, PotionEffectType... effects) {
|
||||
List<PotionEffect> list = new ArrayList<>();
|
||||
@ -76,15 +76,31 @@ public final class PotionEffectFactory {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link PotionEffect}.
|
||||
* @param type The type of potion effect
|
||||
* @param duration How long the effect should last
|
||||
* @param amplifier How strong the potion is.
|
||||
* @return A new {@link PotionEffect}.
|
||||
*/
|
||||
public static PotionEffect potionEffect(PotionEffectType type, int duration, int amplifier) {
|
||||
return type.createEffect(duration, amplifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies the compound effect to the defined player.
|
||||
* @param effect The {@link ICompoundEffect} to apply.
|
||||
*/
|
||||
public void applyCompoundEffect(ICompoundEffect effect) {
|
||||
effect.getEffects().forEach(player::addPotionEffect);
|
||||
map.put(player, effect);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a player currently has a compound effect.
|
||||
* @param effect The {@link ICompoundEffect} to look for
|
||||
* @return Whether or not the player has the compound effect.
|
||||
*/
|
||||
public boolean hasPotionEffect(ICompoundEffect effect) {
|
||||
return (map.containsKey(player) && map.get(player).equals(effect));
|
||||
}
|
||||
|
@ -6,7 +6,10 @@ prefix: Simplex
|
||||
authors:
|
||||
- Paldiu
|
||||
- Conclure
|
||||
description: Core for a group of plugins designed to enhance gameplay to the max
|
||||
- Fleek
|
||||
- abhi289
|
||||
- xDabDoub
|
||||
description: A Spigot Library and API.
|
||||
softdepend:
|
||||
- PlaceholderAPI
|
||||
- ProtocolLib
|
||||
|
Loading…
Reference in New Issue
Block a user