Current progress on data accessors

Pushing because I started on stuff and don't wanna lose it...
This commit is contained in:
Shane Freeder 2020-01-20 21:52:50 +00:00
parent ec58a0e81f
commit 21a0a05683
No known key found for this signature in database
GPG Key ID: A3F61EA5A085289C
10 changed files with 114 additions and 32 deletions

View File

@ -1,3 +1,8 @@
plugins { plugins {
`java-library` `java-library`
}
dependencies {
api("org.jetbrains:annotations:17.0.0")
} }

View File

@ -0,0 +1,4 @@
package com.gmail.nossr50.mcmmo.api.data;
public interface MMOEntity {
}

View File

@ -1,6 +1,6 @@
package com.gmail.nossr50.mcmmo.api.data; package com.gmail.nossr50.mcmmo.api.data;
public interface MMOPlayer<N> { public interface MMOPlayer<N> extends MMOEntity {
N getPlayer(); N getPlayer();

View File

@ -1,5 +1,9 @@
package com.gmail.nossr50.mcmmo.api.platform; package com.gmail.nossr50.mcmmo.api.platform;
import com.gmail.nossr50.mcmmo.api.data.MMOPlayer;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
import java.io.File;
import java.util.logging.Logger; import java.util.logging.Logger;
public interface PlatformProvider { public interface PlatformProvider {
@ -7,4 +11,10 @@ public interface PlatformProvider {
Logger getLogger(); Logger getLogger();
void tearDown(); void tearDown();
MetadataStore getMetadataStore();
File getDataFolder();
void getVersion();
} }

View File

@ -0,0 +1,17 @@
package com.gmail.nossr50.mcmmo.api.platform.util;
import org.jetbrains.annotations.NotNull;
public class MetadataKey<V> {
private final String key;
public MetadataKey(@NotNull String key) {
this.key = key;
}
@NotNull
public String getKey() {
return key;
}
}

View File

@ -0,0 +1,39 @@
package com.gmail.nossr50.mcmmo.api.platform.util;
import com.gmail.nossr50.mcmmo.api.data.MMOEntity;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public interface MetadataStore {
/**
* @param holder holder of the metadata
* @param key key for the metdata
* @param <V> value type
* @return the metadata value or null
*/
@Nullable
<V> V getMetadata(@NotNull MMOEntity holder, @NotNull MetadataKey<V> key);
/**
* @param holder holder of the metdata
* @param key metadata key
* @param value metadata value
* @param <V> value type
* @return the existing metadata value if set, or null
*/
@Nullable
<V> V setMetadata(@NotNull MMOEntity holder, @NotNull MetadataKey<V> key, @Nullable V value);
/**
* @param holder holder of the metadata
* @param key metadata key
* @param <V> value type
* @return the removed metadata key
*/
@Nullable
<V> V removeMetadata(@NotNull MMOEntity holder, @NotNull MetadataKey<V> key);
}

View File

@ -33,7 +33,7 @@ dependencies {
implementation(project(":mcmmo-core")) implementation(project(":mcmmo-core"))
api("org.apache.tomcat:tomcat-jdbc:7.0.52") api("org.apache.tomcat:tomcat-jdbc:7.0.52")
implementation("org.jetbrains:annotations:17.0.0") api("net.kyori:event-api:3.0.0")
implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1") implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1")
implementation("org.bstats:bstats-bukkit:1.4") implementation("org.bstats:bstats-bukkit:1.4")
implementation("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT") implementation("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")

View File

@ -2,6 +2,7 @@ package com.gmail.nossr50.mcmmo.bukkit;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider; import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataStore;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@ -25,4 +26,9 @@ public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
core.debug("Unregister all events..."); core.debug("Unregister all events...");
HandlerList.unregisterAll(this); // Cancel event registrations HandlerList.unregisterAll(this); // Cancel event registrations
} }
@Override
public MetadataStore getMetadataStore() {
return null;
}
} }

View File

@ -1,5 +1,7 @@
package com.gmail.nossr50.core; package com.gmail.nossr50.core;
import com.gmail.nossr50.mcmmo.api.platform.util.MetadataKey;
import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.metadata.FixedMetadataValue;
/** /**
@ -8,30 +10,28 @@ import org.bukkit.metadata.FixedMetadataValue;
public class MetadataConstants { public class MetadataConstants {
/* Metadata Values */ /* Metadata Values */
public static final String FISH_HOOK_REF_METAKEY = "mcMMO: Fish Hook Tracker"; public static final MetadataKey<Boolean> FISH_HOOK_REF_METAKEY = new MetadataKey<>("mcMMO: Fish Hook Tracker");
public static final String DODGE_TRACKER = "mcMMO: Dodge Tracker"; public static final MetadataKey<Boolean> DODGE_TRACKER = new MetadataKey<>("mcMMO: Dodge Tracker");
public static final String CUSTOM_DAMAGE_METAKEY = "mcMMO: Custom Damage"; public static final MetadataKey<Boolean> CUSTOM_DAMAGE_METAKEY = new MetadataKey<>("mcMMO: Custom Damage");
public final static String UNNATURAL_MOB_METAKEY = "mcMMO: Spawned Entity"; public final static MetadataKey<Boolean> UNNATURAL_MOB_METAKEY = new MetadataKey<>("mcMMO: Spawned Entity");
public final static String PISTON_TRACKING_METAKEY = "mcMMO: Piston Tracking"; public final static MetadataKey<Boolean> PISTON_TRACKING_METAKEY = new MetadataKey<>("mcMMO: Piston Tracking");
public final static String FURNACE_TRACKING_METAKEY = "mcMMO: Tracked Furnace"; public final static MetadataKey<Boolean> FURNACE_TRACKING_METAKEY = new MetadataKey<>("mcMMO: Tracked Furnace");
public final static String TNT_TRACKING_METAKEY = "mcMMO: Tracked TNT"; public final static MetadataKey<Boolean> TNT_TRACKING_METAKEY = new MetadataKey<>("mcMMO: Tracked TNT");
public final static String SPAWNED_FIREWORKS_METAKEY = "mcMMO: Funfetti"; public final static MetadataKey<Boolean> SPAWNED_FIREWORKS_METAKEY = new MetadataKey<>("mcMMO: Funfetti");
public final static String SAFE_TNT_METAKEY = "mcMMO: Safe TNT"; public final static MetadataKey<Boolean> SAFE_TNT_METAKEY = new MetadataKey<>("mcMMO: Safe TNT");
public final static String CUSTOM_NAME_METAKEY = "mcMMO: Custom Name"; public final static MetadataKey<String> CUSTOM_NAME_METAKEY = new MetadataKey<>("mcMMO: Custom Name");
public final static String NAME_VISIBILITY_METAKEY = "mcMMO: Name Visibility"; public final static MetadataKey<Boolean> NAME_VISIBILITY_METAKEY = new MetadataKey<>("mcMMO: Name Visibility");
public final static String DROPPED_ITEM_TRACKING_METAKEY = "mcMMO: Tracked Item"; public final static MetadataKey<Boolean> DROPPED_ITEM_TRACKING_METAKEY = new MetadataKey<>("mcMMO: Tracked Item");
public final static String INFINITE_ARROW_METAKEY = "mcMMO: Infinite Arrow"; public final static MetadataKey<Boolean> INFINITE_ARROW_METAKEY = new MetadataKey<>("mcMMO: Infinite Arrow");
public final static String BOW_FORCE_METAKEY = "mcMMO: Bow Force"; public final static MetadataKey<Boolean> BOW_FORCE_METAKEY = new MetadataKey<>("mcMMO: Bow Force");
public final static String ARROW_DISTANCE_METAKEY = "mcMMO: Arrow Distance"; public final static MetadataKey<Boolean> ARROW_DISTANCE_METAKEY = new MetadataKey<>("mcMMO: Arrow Distance");
public final static String ARROW_TRACKER_METAKEY = "mcMMO: Arrow Tracker"; public final static MetadataKey<Boolean> ARROW_TRACKER_METAKEY = new MetadataKey<>("mcMMO: Arrow Tracker");
public final static String BONUS_DROPS_METAKEY = "mcMMO: Bonus Drops"; public final static MetadataKey<Boolean> BONUS_DROPS_METAKEY = new MetadataKey<>("mcMMO: Bonus Drops");
public final static String DISARMED_ITEM_METAKEY = "mcMMO: Disarmed Item"; public final static MetadataKey<Boolean> DISARMED_ITEM_METAKEY = new MetadataKey<>("mcMMO: Disarmed Item");
public final static String PLAYER_DATA_METAKEY = "mcMMO: Player Data"; public final static MetadataKey<Boolean> PLAYER_DATA_METAKEY = new MetadataKey<>("mcMMO: Player Data");
public final static String GREEN_THUMB_METAKEY = "mcMMO: Green Thumb"; public final static MetadataKey<Boolean> GREEN_THUMB_METAKEY = new MetadataKey<>("mcMMO: Green Thumb");
public final static String DATABASE_PROCESSING_COMMAND_METAKEY = "mcMMO: Processing Database Command"; public final static MetadataKey<Boolean> DATABASE_PROCESSING_COMMAND_METAKEY = new MetadataKey<>("mcMMO: Processing Database Command");
public final static String PETS_ANIMAL_TRACKING_METAKEY = "mcMMO: Pet Animal"; public final static MetadataKey<Boolean> PETS_ANIMAL_TRACKING_METAKEY = new MetadataKey<>("mcMMO: Pet Animal");
public static final String COTW_TEMPORARY_SUMMON = "mcMMO: COTW Entity"; public static final MetadataKey<Boolean> COTW_TEMPORARY_SUMMON = new MetadataKey<>("mcMMO: COTW Entity");
public static FixedMetadataValue metadataValue; //Gains value in onEnable
} }

View File

@ -139,9 +139,6 @@ public class mcMMO implements McMMOApi {
try { try {
platformProvider.getLogger().setFilter(new LogFilter(this)); platformProvider.getLogger().setFilter(new LogFilter(this));
//TODO: Disgusting...
MetadataConstants.metadataValue = new FixedMetadataValue(this, true);
PluginManager pluginManager = platformProvider.getServer().getPluginManager(); PluginManager pluginManager = platformProvider.getServer().getPluginManager();
healthBarPluginEnabled = pluginManager.getPlugin("HealthBar") != null; healthBarPluginEnabled = pluginManager.getPlugin("HealthBar") != null;
@ -214,7 +211,7 @@ public class mcMMO implements McMMOApi {
new PlayerProfileLoadingTask(this, player).runTaskLaterAsynchronously(this, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading new PlayerProfileLoadingTask(this, player).runTaskLaterAsynchronously(this, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading
} }
debug("Version " + getDescription().getVersion() + " is enabled!"); debug("Version " + getVersion() + " is enabled!");
scheduleTasks(); scheduleTasks();
commandRegistrationManager = new CommandRegistrationManager(this); commandRegistrationManager = new CommandRegistrationManager(this);
@ -307,6 +304,10 @@ public class mcMMO implements McMMOApi {
perkUtils = new PerkUtils(this); perkUtils = new PerkUtils(this);
} }
private String getVersion() {
platformProvider.getVersion();
}
public void onLoad() public void onLoad()
{ {
if(getServer().getPluginManager().getPlugin("WorldGuard") != null) { if(getServer().getPluginManager().getPlugin("WorldGuard") != null) {
@ -579,7 +580,7 @@ public class mcMMO implements McMMOApi {
* Setup the various storage file paths * Setup the various storage file paths
*/ */
private void setupFilePaths() { private void setupFilePaths() {
mainDirectory = getDataFolder().getPath() + File.separator; mainDirectory = platformProvider.getDataFolder().getPath() + File.separator;
localesDirectory = mainDirectory + "locales" + File.separator; localesDirectory = mainDirectory + "locales" + File.separator;
flatFileDirectory = mainDirectory + "flatfile" + File.separator; flatFileDirectory = mainDirectory + "flatfile" + File.separator;
usersFile = flatFileDirectory + "mcmmo.users"; usersFile = flatFileDirectory + "mcmmo.users";