Compare commits
No commits in common. "8485e34756932d470f1c08f45c72f59479d83485" and "51c9ee0716877d95d730e0ce29b8d450202618fb" have entirely different histories.
8485e34756
...
51c9ee0716
@ -35,20 +35,19 @@ public class Main extends JavaPlugin {
|
||||
pluginManager.registerEvents(new OnBlockPlace(), this);
|
||||
pluginManager.registerEvents(new OnCraftItemEvent(), this);
|
||||
|
||||
loadConfigs();
|
||||
|
||||
CustomPlayerMoveEventHandler cpmHandler = new CustomPlayerMoveEventHandler(this, config.getInt("locationCheck.interval"), true);
|
||||
CustomPlayerMoveEventHandler cpmHandler = new CustomPlayerMoveEventHandler(this, true);
|
||||
cpmHandler.registerListener(new OnCustomPlayerMove());
|
||||
|
||||
LinkedBeaconTeleporterManager.init();
|
||||
loadConfigs();
|
||||
|
||||
initAutoSave();
|
||||
LinkedBeaconTeleporterManager.init();
|
||||
|
||||
log.info("Plugin activated");
|
||||
}
|
||||
|
||||
public void onDisable() {
|
||||
saveData();
|
||||
|
||||
LinkedBeaconTeleporterManager.saveData();
|
||||
|
||||
log.info("Plugin deactivated");
|
||||
}
|
||||
@ -73,14 +72,6 @@ public class Main extends JavaPlugin {
|
||||
}
|
||||
|
||||
public static void saveData() {
|
||||
boolean lbtDataChanged = LinkedBeaconTeleporterManager.writeData();
|
||||
|
||||
// Only run save, when data changed
|
||||
if(lbtDataChanged)
|
||||
saveFiles();
|
||||
}
|
||||
|
||||
public static void saveFiles() {
|
||||
// data.yml
|
||||
try{
|
||||
File dataFile = new File("plugins/"+ plugin.getName() +"/data.yml");
|
||||
@ -90,12 +81,4 @@ public class Main extends JavaPlugin {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
static void initAutoSave(){
|
||||
int autosaveInterval = config.getInt("config.interval")*20;
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
|
||||
saveData();
|
||||
|
||||
}, autosaveInterval, autosaveInterval);
|
||||
}
|
||||
}
|
||||
|
@ -17,16 +17,16 @@ public class CustomPlayerMoveEventHandler {
|
||||
HashMap<UUID, Location> oldPlayerLoc = new HashMap<>();
|
||||
|
||||
boolean locationChangeOnBlockChange;
|
||||
public CustomPlayerMoveEventHandler(Plugin plugin, int interval, boolean locationChangeOnBlockChange){
|
||||
public CustomPlayerMoveEventHandler(Plugin plugin, boolean locationChangeOnBlockChange){
|
||||
this.locationChangeOnBlockChange = locationChangeOnBlockChange;
|
||||
|
||||
startRunnable(plugin, interval);
|
||||
startRunnable(plugin);
|
||||
}
|
||||
public CustomPlayerMoveEventHandler(Plugin plugin){
|
||||
this(plugin, 5, false);
|
||||
this(plugin, false);
|
||||
}
|
||||
|
||||
void startRunnable(Plugin plugin, int interval){
|
||||
void startRunnable(Plugin plugin){
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> {
|
||||
// Dont do anything without listeners
|
||||
@ -64,7 +64,7 @@ public class CustomPlayerMoveEventHandler {
|
||||
oldPlayerLoc.put(uuid, loc);
|
||||
}
|
||||
|
||||
}, interval, interval);
|
||||
}, 20, 10);
|
||||
}
|
||||
|
||||
boolean blockLocationChanged(Location loc, Location oldLoc){
|
||||
|
@ -11,8 +11,6 @@ import java.util.List;
|
||||
* Describes a placed-beacon-teleporter in the world
|
||||
*/
|
||||
public abstract class LinkedBeaconTeleporter {
|
||||
static String id_alphabet = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
static int id_length = 10;
|
||||
|
||||
// Persistent id for linked-beacons
|
||||
public String teleporterId;
|
||||
@ -21,7 +19,7 @@ public abstract class LinkedBeaconTeleporter {
|
||||
protected List<LinkedBeaconTeleporter> linkedBeaconTeleporters = new ArrayList<>();
|
||||
|
||||
LinkedBeaconTeleporter(){
|
||||
this.teleporterId = Function.randomString(id_alphabet, id_length);
|
||||
this.teleporterId = Function.randomString("abcdefghijklmnopqrstuvwxyz0123456789", 10);
|
||||
|
||||
linkedBeaconTeleporters = new ArrayList<>();
|
||||
}
|
||||
|
@ -42,13 +42,7 @@ public class LinkedBeaconTeleporterBlock extends LinkedBeaconTeleporter {
|
||||
|
||||
// Remove from list
|
||||
this.linkedBeaconTeleporters.remove(this);
|
||||
|
||||
if(this.linkedBeaconTeleporters.size() == 0){
|
||||
// List empty, delete from placedLBTsById
|
||||
LinkedBeaconTeleporterManager.placedLBTsById.remove(
|
||||
this.teleporterId
|
||||
);
|
||||
}
|
||||
// TODO: Remove from placedLBTsById when empty?
|
||||
|
||||
// Remove from loc
|
||||
LinkedBeaconTeleporterManager.placedLBTByLoc.remove(
|
||||
|
@ -34,10 +34,6 @@ public class LinkedBeaconTeleporterManager {
|
||||
Main.config.getStringList("item.lore")
|
||||
);
|
||||
|
||||
// Load settings
|
||||
LinkedBeaconTeleporter.id_alphabet = Main.config.getString("id.alphabet");
|
||||
LinkedBeaconTeleporter.id_length = Main.config.getInt("id.length");
|
||||
|
||||
// Construct & add crafting-receipes
|
||||
constructAndAddRecipes();
|
||||
|
||||
@ -72,8 +68,6 @@ public class LinkedBeaconTeleporterManager {
|
||||
// Write reference of list
|
||||
lbtBlock.linkedBeaconTeleporters = linkedBeaconTeleporters;
|
||||
|
||||
// Write block to list
|
||||
linkedBeaconTeleporters.add(lbtBlock);
|
||||
// Save to loc-list
|
||||
placedLBTByLoc.put(serializedLoc, lbtBlock);
|
||||
}
|
||||
@ -82,21 +76,11 @@ public class LinkedBeaconTeleporterManager {
|
||||
placedLBTsById.put(teleporterId, linkedBeaconTeleporters);
|
||||
}
|
||||
|
||||
Main.saveData();
|
||||
|
||||
Main.log.info("All done!");
|
||||
}
|
||||
|
||||
static int oldDataHashCode;
|
||||
public static boolean writeData(){
|
||||
// Check if data changed
|
||||
int dataHashCode = placedLBTsById.hashCode();
|
||||
if(oldDataHashCode != dataHashCode){
|
||||
// Changed
|
||||
oldDataHashCode = dataHashCode;
|
||||
}
|
||||
else // Did not change
|
||||
return false;
|
||||
public static void saveData(){
|
||||
Main.log.info("Saving data..");
|
||||
|
||||
Main.data = new YamlConfiguration();
|
||||
for(String teleporterId : placedLBTsById.keySet()){
|
||||
@ -114,7 +98,10 @@ public class LinkedBeaconTeleporterManager {
|
||||
|
||||
Main.data.set(teleporterId, dataList);
|
||||
}
|
||||
return true;
|
||||
|
||||
Main.saveData();
|
||||
|
||||
Main.log.info("done");
|
||||
}
|
||||
|
||||
static void constructAndAddRecipes(){
|
||||
|
@ -95,7 +95,6 @@ public class OnCustomPlayerMove implements CustomPlayerMoveEventListener {
|
||||
if(safeBlock == null){
|
||||
// No safe location found
|
||||
p.sendMessage("§cNo safe-location found at target teleporter");
|
||||
playerBeaconLocation.put(uuid, lbtBlock);
|
||||
return;
|
||||
}
|
||||
// TODO: Check if there is enough space for a player
|
||||
|
@ -1,28 +1,7 @@
|
||||
|
||||
item:
|
||||
item: # TODO
|
||||
# Name & Lore for linked-beacon-blocks
|
||||
# - Has to include %id% somewhere for identification!
|
||||
name: '§9BeaconTeleporter'
|
||||
lore:
|
||||
- '§8§o%id%'
|
||||
|
||||
beacon:
|
||||
# Checks that have to succeed for a teleporter to be active (source and target)
|
||||
checks: # TODO
|
||||
active: true
|
||||
|
||||
id:
|
||||
# Alphabet to use for random-generation
|
||||
alphabet: 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||
# Length of id
|
||||
# If its too short, ids will "collide" more often (e.g. 2 players generating same linked-teleporters independently), but maybe thats a gameplay-feature for you :)
|
||||
length: 10
|
||||
|
||||
locationCheck:
|
||||
# Interval [in ticks] to check if a player is on a beacon
|
||||
# 5 (= 4 times/s) is usually responsive enough for most interactions
|
||||
interval: 5
|
||||
|
||||
autosave:
|
||||
# Interval [in seconds] for autosave
|
||||
interval: 600
|
Loading…
x
Reference in New Issue
Block a user