moved code to new structure

This commit is contained in:
2023-10-04 14:10:57 +02:00
parent ea3a602587
commit fa719cb674
34 changed files with 329 additions and 252 deletions

View File

@ -1,14 +1,12 @@
package de.steev.bm;
import de.steev.bm.Commands.back;
import de.steev.bm.changes.interaction.Item_Recipy_Override;
import de.steev.bm.events.BedEvent;
import de.steev.bm.events.DeathEvent;
import de.steev.bm.events.InteractEvent;
import de.steev.bm.events.KillEvent;
import de.steev.bm.Listener.BedListener;
import de.steev.bm.Listener.InteractListener;
import de.steev.bm.Listener.KillListener;
import de.steev.bm.Manager.GameManager;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
@ -22,7 +20,7 @@ import java.io.File;
import java.io.IOException;
import java.util.UUID;
public class main extends JavaPlugin implements Listener {
public class BetterMinecraft extends JavaPlugin implements Listener {
// Global Variables that might come helpfull later
public int playerInBed = 0;
@ -30,45 +28,34 @@ public class main extends JavaPlugin implements Listener {
String version = "1.2";
// Custom Playerdata File
public File playerdata;
public FileConfiguration playerDataConfig;
public final String playerdatafilename = "playerdata.yml";
private File playerdata;
private FileConfiguration playerDataConfig;
private final String playerdatafilename = "playerdata.yml";
private static String prefix = ChatColor.GRAY + "[" + ChatColor.AQUA + "BetterMinecraft" + ChatColor.GRAY + "]";
private GameManager gameManager;
// Handles initialisation
public void onEnable() {
// Messaging
this.getLogger().info(ChatColor.AQUA + "Plugin Startet");
this.getLogger().info(prefix + ChatColor.WHITE + "Plugin Startet");
this.getLogger().info(prefix + ChatColor.WHITE + "Initializing Gamemanager");
gameManager = new GameManager(this);
// Registers Events
this.getLogger().info(ChatColor.AQUA + "Lade Events");
this.getServer().getPluginManager().registerEvents(new BedEvent(this), this);
this.getServer().getPluginManager().registerEvents(new KillEvent(this), this);
this.getServer().getPluginManager().registerEvents(new InteractEvent(this), this);
this.getServer().getPluginManager().registerEvents(new DeathEvent(this), this);
this.getLogger().info(prefix + ChatColor.WHITE + "Lade Events");
this.getServer().getPluginManager().registerEvents(new BedListener(this.gameManager), this);
this.getServer().getPluginManager().registerEvents(new KillListener(this.gameManager), this);
this.getServer().getPluginManager().registerEvents(new InteractListener(this.gameManager), this);
this.getServer().getPluginManager().registerEvents(this, this);
this.getCommand("back").setExecutor(new back(this));
this.getCommand("back").setExecutor(new back(this.gameManager));
// PlayerData
playerdata = new File(this.getDataFolder(), playerdatafilename);
playerDataConfig = YamlConfiguration.loadConfiguration(playerdata);
saveplayerdata();
// More Messaging
this.getLogger().info(ChatColor.AQUA + "Erstelle Rezepte");
Item_Recipy_Override Saddle = new Item_Recipy_Override(this, "Saddle", Material.SADDLE, 1);
char[] s_ing = { 'L', 'S', 'I' };
String[] s_rec = { "LLL", "LSL", " I " };
Material[] s_mat = { Material.LEATHER, Material.STRING, Material.IRON_NUGGET };
Saddle.register_recipy(s_ing, s_mat, s_rec);
Item_Recipy_Override Wool = new Item_Recipy_Override(this, "String", Material.STRING, 8);
char[] w_ing = { 'W', 'F', };
String[] w_rec = { " W ", "WFW", " W " };
Material[] w_mat = { Material.WHITE_WOOL, Material.FLINT };
Wool.register_recipy(w_ing, w_mat, w_rec);
// More Messaging
this.getLogger().info(ChatColor.AQUA + "Ich bin Fertig :D");
}
@ -101,6 +88,9 @@ public class main extends JavaPlugin implements Listener {
public FileConfiguration getPlayerDataConfig(){
return this.playerDataConfig;
}
public static String LoggerPrefix(){
return prefix;
}
public void onDisable() {
// Even more Messaging

View File

@ -1,6 +1,7 @@
package de.steev.bm.Commands;
import de.steev.bm.main;
import de.steev.bm.BetterMinecraft;
import de.steev.bm.Manager.GameManager;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@ -8,10 +9,10 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class back implements CommandExecutor {
main plugin;
private GameManager gameManager;
public back(main plugin) {
this.plugin = plugin;
public back(GameManager gameManager) {
this.gameManager = gameManager;
}
@Override
@ -19,9 +20,9 @@ public class back implements CommandExecutor {
Player player = (Player) commandSender.getServer().getPlayer(commandSender.getName());
Location lastDeath;
try {
lastDeath = plugin.playerDataConfig.getLocation(player.getUniqueId() + ".death");
lastDeath = this.gameManager.getPlugin().getPlayerDataConfig().getLocation(player.getUniqueId() + ".death");
player.teleport(lastDeath);
plugin.playerDataConfig.set(player.getUniqueId() + ".death", null);
this.gameManager.getPlugin().getPlayerDataConfig().set(player.getUniqueId() + ".death", null);
commandSender.sendMessage("Du wurdest Teleportiert. Dein todespunkt ist nun entfernt worden.");
} catch (Exception ex) {
commandSender.sendMessage("Tot nicht gefunden!");

View File

@ -1,6 +1,6 @@
package de.steev.bm.changes.interaction;
package de.steev.bm.Interaction;
import de.steev.bm.main;
import de.steev.bm.BetterMinecraft;
import org.bukkit.Material;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.inventory.ItemStack;
@ -14,7 +14,7 @@ public class Death {
* @param drops the dropping items
* @param plugin plugin reference
*/
public static void onAnimalDeath(int[] amount, Material[] drops, main plugin, EntityDeathEvent event){
public static void onAnimalDeath(int[] amount, Material[] drops, BetterMinecraft plugin, EntityDeathEvent event){
// Random Drop amount generation DO NOT TOUCH!!!!
int i1_amnt = ThreadLocalRandom.current().nextInt(1, amount[0] + 1);

View File

@ -1,6 +1,6 @@
package de.steev.bm.changes.interaction;
package de.steev.bm.Interaction;
import de.steev.bm.main;
import de.steev.bm.BetterMinecraft;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
@ -9,7 +9,7 @@ import org.bukkit.inventory.ShapedRecipe;
public class Item_Recipy_Override {
main plugin;
BetterMinecraft plugin;
NamespacedKey item;
static ShapedRecipe rec_item;
@ -20,7 +20,7 @@ public class Item_Recipy_Override {
* @param result the dropping item
* @param amount the droprate
*/
public Item_Recipy_Override(main plugin, String Item, Material result, int amount){
public Item_Recipy_Override(BetterMinecraft plugin, String Item, Material result, int amount){
this.plugin = plugin;
item = new NamespacedKey(plugin, Item);
ItemStack itemStack = new ItemStack(result);

View File

@ -1,22 +1,21 @@
package de.steev.bm.changes.interaction;
package de.steev.bm.Interaction;
import de.steev.bm.main;
import de.steev.bm.BetterMinecraft;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.Ageable;
import org.bukkit.event.Listener;
import org.bukkit.inventory.ItemStack;
public class replanting {
private main plugin;
private BetterMinecraft plugin;
/**
* event constructor
* @param plugin plugin instance
*/
public replanting(main plugin) {
public replanting(BetterMinecraft plugin) {
plugin.getLogger().info("replanting handler Registered");
this.plugin = plugin;
}

View File

@ -0,0 +1,53 @@
package de.steev.bm.Listener;
import de.steev.bm.BetterMinecraft;
import de.steev.bm.Manager.GameManager;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBedEnterEvent;
import org.bukkit.event.player.PlayerBedLeaveEvent;
public class BedListener implements Listener {
private GameManager gameManager;
public BedListener(GameManager gameManager) {
gameManager.getPlugin().getLogger().info("Bed Listener Registered");
this.gameManager = gameManager;
}
@EventHandler // Adding to the Player Variable
public void onPlayerBedEnter(PlayerBedEnterEvent event) {
final World world = event.getPlayer().getWorld();
if(world.getTime() >= 13000 || world.getThunderDuration() > 0) {
this.gameManager.getPlugin().playerInBed++;
// Checks if enough Players (currentSleeping >= OnlinePlayerAmount/2) are Sleeping
if(this.gameManager.getPlugin().playerInBed >= (int)this.gameManager.getPlugin().getServer().getOnlinePlayers().size()/2) {
// Delayed Task for detecting useless entries
Bukkit.getScheduler().scheduleSyncDelayedTask(this.gameManager.getPlugin(), new Runnable() {
@Override
public void run() {
if(gameManager.getPlugin().playerInBed >= (int)gameManager.getPlugin().getServer().getOnlinePlayers().size()/2) {
world.setTime(0);
world.setWeatherDuration(7 * 24000);
}
}
}, 20L);
}
}
}
@EventHandler // Subtracting to the Player Variable
public void onPlayerBedLeave(PlayerBedLeaveEvent event) {
// Subtraction from the PlayerInBed variable
if(this.gameManager.getPlugin().playerInBed > 0) {
this.gameManager.getPlugin().playerInBed--;
// Failsafe to prevent integer underflow
}else if(this.gameManager.getPlugin().playerInBed > 0) {
this.gameManager.getPlugin().playerInBed = 0;
}
}
}

View File

@ -1,7 +1,8 @@
package de.steev.bm.events;
package de.steev.bm.Listener;
import de.steev.bm.changes.interaction.replanting;
import de.steev.bm.main;
import de.steev.bm.BetterMinecraft;
import de.steev.bm.Interaction.replanting;
import de.steev.bm.Manager.GameManager;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
@ -10,12 +11,12 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
public class InteractEvent implements Listener {
public class InteractListener implements Listener {
private GameManager gameManager;
private main plugin;
public InteractEvent(main plugin){
this.plugin = plugin;
public InteractListener(GameManager gameManager){
gameManager.getPlugin().getLogger().info("Initializing Interaction Listener");
this.gameManager = gameManager;
}
@EventHandler

View File

@ -0,0 +1,44 @@
package de.steev.bm.Listener;
import de.steev.bm.Manager.GameManager;
import de.steev.bm.Interaction.Death;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Animals;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import java.util.UUID;
public class KillListener implements Listener {
private GameManager gameManager;
public KillListener(GameManager gameManager) {
gameManager.getPlugin().getLogger().info("Mob Death events Registered");
this.gameManager = gameManager;
}
/**
* Implements drops on death and can handle other deaths
* @param event the parsed event on any death
*/
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
int[] amounts;
Material[] drops;
if(event.getEntity() instanceof Player){
Location death = ((Player) event.getEntity()).getPlayer().getLocation();
UUID uuid = ((Player) event.getEntity()).getPlayer().getUniqueId();
this.gameManager.getPlugin().getPlayerDataConfig().set("" + uuid + ".death", death);
} else if(event.getEntity() instanceof Animals) {
if(event.getEntity().toString() == "CraftPig"){
amounts = new int[]{ 2,2 };
drops = new Material[]{Material.LEATHER, Material.PORKCHOP};
Death.onAnimalDeath(amounts, drops, this.gameManager.getPlugin(), event);
}
}
}
}

View File

@ -0,0 +1,57 @@
package de.steev.bm.Manager;
import de.steev.bm.BetterMinecraft;
import org.bukkit.Material;
import org.bukkit.entity.Player;
/**
* Gamemanager controlls the plugins game logic
*/
public class GameManager {
private BetterMinecraft plugin;
private RecipyManager recipyManager;
private PlayerManager playerManager;
/**
* initilizes the Gamemanager and all systems beneath it
* @param plugin the plugin reference
*/
public GameManager(BetterMinecraft plugin) {
plugin.getLogger().info("Initializing Gamemanager");
this.plugin = plugin;
this.plugin.getLogger().info("Moving logger to internal plugin reference");
this.plugin.getLogger().info("Initilizing other managers");
this.recipyManager = new RecipyManager(this);
this.playerManager = new PlayerManager(this);
this.plugin.getLogger().info("registring Recipies");
this.plugin.getLogger().info("saddle");
char[] s_ing = { 'L', 'S', 'I' };
String[] s_rec = { "LLL", "LSL", " I " };
Material[] s_mat = { Material.LEATHER, Material.STRING, Material.IRON_NUGGET };
this.recipyManager.RegisterNew(s_ing, s_mat, s_rec, 1, Material.SADDLE, "Saddle");
this.plugin.getLogger().info("String");
char[] w_ing = { 'W', 'F', };
String[] w_rec = { " W ", "WFW", " W " };
Material[] w_mat = { Material.WHITE_WOOL, Material.FLINT };
this.recipyManager.RegisterNew(w_ing, w_mat, w_rec, 1, Material.STRING, "String");
}
public BetterMinecraft getPlugin(){
return plugin;
}
public RecipyManager getRecipyManager() {
return recipyManager;
}
public PlayerManager getPlayerManager() {
return playerManager;
}
}

View File

@ -0,0 +1,41 @@
package de.steev.bm.Manager;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.awt.*;
/**
* houses all functions controlling players
*/
public class PlayerManager {
private GameManager gameManager;
/**
* initilizes a player manager
* @param gameManager the Gamemanager reference
*/
public PlayerManager(GameManager gameManager) {
this.gameManager = gameManager;
}
/**
* teleports a player to a location
* @param player the wanted player
* @param loc the wanted location
*/
public void teleportPlayer(Player player, Location loc) {
player.teleport(loc);
}
/**
* gives a player a given itemstack
* @param player the players reference
* @param itemStack the items the player should receive
*/
public void givePlayerItems(Player player, ItemStack itemStack){
player.getInventory().addItem(itemStack);
}
}

View File

@ -0,0 +1,41 @@
package de.steev.bm.Manager;
import de.steev.bm.BetterMinecraft;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.ShapedRecipe;
public class RecipyManager{
private GameManager gameManager;
public RecipyManager(GameManager gameManager) {
this.gameManager = gameManager;
}
public void RegisterNew(char[] ing, Material[] mat, String[] rec, int amount, Material result, String Item){
BetterMinecraft plugin;
NamespacedKey item;
ShapedRecipe rec_item;
item = new NamespacedKey(this.gameManager.getPlugin(), Item);
ItemStack itemStack = new ItemStack(result);
itemStack.setAmount(amount);
rec_item = new ShapedRecipe(item, itemStack);
//Recipe shapes
rec_item.shape(rec[0], rec[1], rec[2]);
for(int i = 0; i < ing.length; i++) {
// Material Definitions
rec_item.setIngredient(ing[i], mat[i]);
}
// Add recipes to Server
Bukkit.addRecipe(rec_item);
}
}

View File

@ -1,22 +0,0 @@
package de.steev.bm.changes.env;
import org.bukkit.World;
public class weather {
static long lastThunder = 0;
long delay = 24000;
private static boolean isThunder(World world) {
return world.getThunderDuration() > 0;
}
public static void changeWeather(World world) {
if(isThunder(world)) {
if(lastThunder + 24000 > world.getFullTime()) {
world.setClearWeatherDuration(1000);
}else {
lastThunder = world.getFullTime();
}
}
}
}

View File

@ -1,52 +0,0 @@
package de.steev.bm.events;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBedEnterEvent;
import org.bukkit.event.player.PlayerBedLeaveEvent;
import de.steev.bm.main;
public class BedEvent implements Listener {
private main plugin;
public BedEvent(main plugin) {
plugin.getLogger().info("Bed events Registered");
this.plugin = plugin;
}
@EventHandler // Adding to the Player Variable
public void onPlayerBedEnter(PlayerBedEnterEvent event) {
final World world = event.getPlayer().getWorld();
if(world.getTime() >= 13000 || world.getThunderDuration() > 0) {
plugin.playerInBed++;
// Checks if enough Players (currentSleeping >= OnlinePlayerAmount/2) are Sleeping
if(plugin.playerInBed >= (int)plugin.getServer().getOnlinePlayers().size()/2) {
// Delayed Task for detecting useless entries
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
if(plugin.playerInBed >= (int)plugin.getServer().getOnlinePlayers().size()/2) {
world.setTime(0);
world.setWeatherDuration(7 * 24000);
}
}
}, 20L);
}
}
}
@EventHandler // Subtracting to the Player Variable
public void onPlayerBedLeave(PlayerBedLeaveEvent event) {
// Subtraction from the PlayerInBed variable
if(plugin.playerInBed > 0) {
plugin.playerInBed--;
// Failsafe to prevent integer underflow
}else if(plugin.playerInBed > 0) {
plugin.playerInBed = 0;
}
}
}

View File

@ -1,26 +0,0 @@
package de.steev.bm.events;
import de.steev.bm.main;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
public class DeathEvent implements Listener {
private main plugin;
public DeathEvent(main plugin) {
plugin.getLogger().info("Death events Registered");
this.plugin = plugin;
}
@EventHandler
public void OnPlayerDeath(PlayerDeathEvent e) {
Player player = (Player) e.getEntity();
Location loc = player.getLocation();
this.plugin.playerDataConfig.set(player.getUniqueId() + ".death", loc);
}
}

View File

@ -1,47 +0,0 @@
package de.steev.bm.events;
import java.util.UUID;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Animals;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import de.steev.bm.main;
import de.steev.bm.changes.interaction.Death;
public class KillEvent implements Listener{
private main plugin;
public KillEvent(main plugin) {
plugin.getLogger().info("Mob Death events Registered");
this.plugin = plugin;
}
/**
* Implements drops on death and can handle other deaths
* @param event the parsed event on any death
*/
@EventHandler
public void onEntityDeath(EntityDeathEvent event) {
int[] amounts;
Material[] drops;
if(event.getEntity() instanceof Player){
Location death = ((Player) event.getEntity()).getPlayer().getLocation();
UUID uuid = ((Player) event.getEntity()).getPlayer().getUniqueId();
plugin.playerDataConfig.set("" + uuid + ".death", death);
} else if(event.getEntity() instanceof Animals) {
if(event.getEntity().toString() == "CraftPig"){
amounts = new int[]{ 2,2 };
drops = new Material[]{Material.LEATHER, Material.PORKCHOP};
Death.onAnimalDeath(amounts, drops, plugin, event);
}
}
}
}