initial commit
This commit is contained in:
16
src/de/steev/bm/Commands/back.java
Normal file
16
src/de/steev/bm/Commands/back.java
Normal file
@ -0,0 +1,16 @@
|
||||
package de.steev.bm.Commands;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class back implements CommandExecutor {
|
||||
// TODO save death coordinates in playerdata
|
||||
// TODO grab them
|
||||
// TODO ensure the position is safe
|
||||
// TODO teleport player back
|
||||
@Override
|
||||
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
|
||||
return false;
|
||||
}
|
||||
}
|
22
src/de/steev/bm/changes/env/weather.java
vendored
Normal file
22
src/de/steev/bm/changes/env/weather.java
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package de.steev.bm.changes.interaction;
|
||||
|
||||
import de.steev.bm.main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
|
||||
public class Item_Recipy_Override {
|
||||
|
||||
main plugin;
|
||||
NamespacedKey item;
|
||||
static ShapedRecipe rec_item;
|
||||
|
||||
public Item_Recipy_Override(main plugin, String Item, Material result, int amount){
|
||||
this.plugin = plugin;
|
||||
item = new NamespacedKey(plugin, Item);
|
||||
ItemStack itemStack = new ItemStack(result);
|
||||
itemStack.setAmount(amount);
|
||||
|
||||
rec_item = new ShapedRecipe(item, itemStack);
|
||||
}
|
||||
|
||||
public static void register_recipy(char[] ing, Material[] mat, String[] rec){
|
||||
//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);
|
||||
}
|
||||
}
|
97
src/de/steev/bm/changes/interaction/replanting.java
Normal file
97
src/de/steev/bm/changes/interaction/replanting.java
Normal file
@ -0,0 +1,97 @@
|
||||
package de.steev.bm.changes.interaction;
|
||||
|
||||
import de.steev.bm.main;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.data.Ageable;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
public class replanting implements Listener {
|
||||
|
||||
private main plugin;
|
||||
|
||||
public replanting(main plugin) {
|
||||
plugin.getLogger().info("replanting handler Registered");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
// TODO: change planting to a single function that gets reused as the job plugin did
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerInteract(PlayerInteractEvent event){
|
||||
if(event.getAction().equals(Action.RIGHT_CLICK_BLOCK)){
|
||||
|
||||
// Get needed values and states
|
||||
Block target = event.getClickedBlock();
|
||||
Location loc = target.getLocation().clone().add(0.5, 0.5, 0.5);
|
||||
|
||||
System.out.println(target.getType());
|
||||
|
||||
// Detects the right block and its required action
|
||||
if(target.getType() == Material.CARROTS){
|
||||
Ageable crop = (Ageable) target.getBlockData();
|
||||
|
||||
if(crop.getAge() == crop.getMaximumAge()){
|
||||
for(int i = 0; i < 3; i++) {
|
||||
target.getLocation().getWorld().dropItem(loc, new ItemStack(Material.CARROT));
|
||||
}
|
||||
crop.setAge(0);
|
||||
target.setBlockData(crop);
|
||||
}
|
||||
} else if(target.getType() == Material.POTATOES){
|
||||
Ageable crop = (Ageable) target.getBlockData();
|
||||
|
||||
if(crop.getAge() == crop.getMaximumAge()){
|
||||
if(crop.getAge() == crop.getMaximumAge()){
|
||||
int i1_amnt = ThreadLocalRandom.current().nextInt(1, 2 + 1);
|
||||
|
||||
for(int i = 0; i < i1_amnt; i++) {
|
||||
target.getLocation().getWorld().dropItem(loc, new ItemStack(Material.POTATO));
|
||||
}
|
||||
crop.setAge(0);
|
||||
target.setBlockData(crop);
|
||||
}
|
||||
}
|
||||
} else if(target.getType() == Material.WHEAT){
|
||||
Ageable crop = (Ageable) target.getBlockData();
|
||||
|
||||
if(crop.getAge() == crop.getMaximumAge()){
|
||||
if(crop.getAge() == crop.getMaximumAge()){
|
||||
int i1_amnt = ThreadLocalRandom.current().nextInt(1, 2 + 1);
|
||||
|
||||
target.getLocation().getWorld().dropItem(loc, new ItemStack(Material.WHEAT));
|
||||
for(int i = 0; i < i1_amnt; i++) {
|
||||
target.getLocation().getWorld().dropItem(loc, new ItemStack(Material.WHEAT_SEEDS));
|
||||
}
|
||||
crop.setAge(0);
|
||||
target.setBlockData(crop);
|
||||
}
|
||||
}
|
||||
} else if(target.getType() == Material.BEETROOTS){
|
||||
Ageable crop = (Ageable) target.getBlockData();
|
||||
|
||||
if(crop.getAge() == crop.getMaximumAge()){
|
||||
if(crop.getAge() == crop.getMaximumAge()){
|
||||
int i1_amnt = ThreadLocalRandom.current().nextInt(1, 3 + 1);
|
||||
|
||||
target.getLocation().getWorld().dropItem(loc, new ItemStack(Material.BEETROOT));
|
||||
for(int i = 0; i < i1_amnt; i++) {
|
||||
target.getLocation().getWorld().dropItem(loc, new ItemStack(Material.BEETROOT_SEEDS));
|
||||
}
|
||||
crop.setAge(0);
|
||||
target.setBlockData(crop);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
src/de/steev/bm/crafting/CraftItem.java
Normal file
7
src/de/steev/bm/crafting/CraftItem.java
Normal file
@ -0,0 +1,7 @@
|
||||
package de.steev.bm.crafting;
|
||||
|
||||
public class CraftItem {
|
||||
public CraftItem(String[][] recipe, String name) {
|
||||
|
||||
}
|
||||
}
|
52
src/de/steev/bm/events/BedEvent.java
Normal file
52
src/de/steev/bm/events/BedEvent.java
Normal file
@ -0,0 +1,52 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
4
src/de/steev/bm/events/BreakEvent.java
Normal file
4
src/de/steev/bm/events/BreakEvent.java
Normal file
@ -0,0 +1,4 @@
|
||||
package de.steev.bm.events;
|
||||
|
||||
public class BreakEvent {
|
||||
}
|
4
src/de/steev/bm/events/InteractEvent.java
Normal file
4
src/de/steev/bm/events/InteractEvent.java
Normal file
@ -0,0 +1,4 @@
|
||||
package de.steev.bm.events;
|
||||
|
||||
public class InteractEvent {
|
||||
}
|
54
src/de/steev/bm/events/KillEvent.java
Normal file
54
src/de/steev/bm/events/KillEvent.java
Normal file
@ -0,0 +1,54 @@
|
||||
package de.steev.bm.events;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
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 org.bukkit.inventory.ItemStack;
|
||||
|
||||
import de.steev.bm.main;
|
||||
|
||||
public class KillEvent implements Listener{
|
||||
private main plugin;
|
||||
|
||||
public KillEvent(main plugin) {
|
||||
plugin.getLogger().info("Mob Death events Registered");
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDeath(EntityDeathEvent event) {
|
||||
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"){
|
||||
|
||||
int i1_amnt = ThreadLocalRandom.current().nextInt(1, 2 + 1);
|
||||
int i2_amnt = ThreadLocalRandom.current().nextInt(1, 2 + 1);
|
||||
|
||||
plugin.getLogger().info("Output amount: " + i1_amnt);
|
||||
plugin.getLogger().info("Output amount: " + i2_amnt);
|
||||
|
||||
event.getDrops().clear();
|
||||
|
||||
for(int i = 0; i < i1_amnt; i++) {
|
||||
event.getEntity().getLocation().getWorld().dropItem(event.getEntity().getLocation(), new ItemStack(Material.LEATHER));
|
||||
plugin.getLogger().info("Output Leather");
|
||||
}
|
||||
|
||||
for(int i = 0; i < i2_amnt; i++) {
|
||||
event.getEntity().getLocation().getWorld().dropItem(event.getEntity().getLocation(), new ItemStack(Material.PORKCHOP));
|
||||
plugin.getLogger().info("Output Porkchop");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
4
src/de/steev/bm/events/PlaceEvent.java
Normal file
4
src/de/steev/bm/events/PlaceEvent.java
Normal file
@ -0,0 +1,4 @@
|
||||
package de.steev.bm.events;
|
||||
|
||||
public class PlaceEvent {
|
||||
}
|
73
src/de/steev/bm/items/ChunkLoader.java
Normal file
73
src/de/steev/bm/items/ChunkLoader.java
Normal file
@ -0,0 +1,73 @@
|
||||
package de.steev.bm.items;
|
||||
|
||||
import de.steev.bm.main;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
/**
|
||||
* Not implemented do not use do not think of this
|
||||
*/
|
||||
public class ChunkLoader implements Listener {
|
||||
main plugin;
|
||||
|
||||
public ChunkLoader(main plugin){
|
||||
this.plugin = plugin;
|
||||
// NamespaceKeys
|
||||
NamespacedKey chunkLoader = new NamespacedKey(plugin, "ChunkLoader");
|
||||
|
||||
ItemStack ChunkLoaderStack = new ItemStack(Material.BEACON);
|
||||
ChunkLoaderStack.setAmount(1);
|
||||
|
||||
ItemMeta meta = ChunkLoaderStack.getItemMeta();
|
||||
|
||||
// Shape Keys
|
||||
ShapedRecipe rec_saddle = new ShapedRecipe(chunkLoader, ChunkLoaderStack);
|
||||
//Recipe shapes
|
||||
rec_saddle.shape("III","IEI","OOO");
|
||||
|
||||
// Material Definitions
|
||||
rec_saddle.setIngredient('I', Material.IRON_INGOT);
|
||||
rec_saddle.setIngredient('E', Material.ENDER_PEARL);
|
||||
rec_saddle.setIngredient('O', Material.OBSIDIAN);
|
||||
|
||||
// More Messaging
|
||||
plugin.getLogger().info(ChatColor.AQUA + "Registriere Chunkloader");
|
||||
|
||||
// Add recipes to Server
|
||||
Bukkit.addRecipe(rec_saddle);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerInteract(PlayerInteractEvent event){
|
||||
//event.setCancelled(true);
|
||||
Block target = event.getClickedBlock();
|
||||
System.out.println(target);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
private void onBlockPlace(BlockPlaceEvent event){
|
||||
// TODO: Add a Chunkticket
|
||||
// TODO: get chunk that will be loaded
|
||||
// TODO: Create loading routine
|
||||
// TODO: Detect how many chunkloaders the player placed
|
||||
// TODO: stop placeevent when limit is exceeded
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
private void onBlockBreak(BlockBreakEvent event){
|
||||
// TODO: remove the ChunkTicket
|
||||
// TODO: make chunkloading stop
|
||||
// TODO: remove all handling properties
|
||||
}
|
||||
}
|
99
src/de/steev/bm/main.java
Normal file
99
src/de/steev/bm/main.java
Normal file
@ -0,0 +1,99 @@
|
||||
package de.steev.bm;
|
||||
|
||||
import de.steev.bm.changes.interaction.Item_Recipy_Override;
|
||||
import de.steev.bm.changes.interaction.replanting;
|
||||
import de.steev.bm.events.BedEvent;
|
||||
import de.steev.bm.events.KillEvent;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.UUID;
|
||||
|
||||
public class main extends JavaPlugin implements Listener {
|
||||
|
||||
// Global Variables that might come helpfull later
|
||||
public int playerInBed = 0;
|
||||
public World world;
|
||||
String version = "1.2";
|
||||
|
||||
// Custom Playerdata File
|
||||
public File playerdata;
|
||||
public FileConfiguration playerDataConfig;
|
||||
public final String playerdatafilename = "playerdata.yml";
|
||||
|
||||
// Handles initialisation
|
||||
public void onEnable() {
|
||||
// Messaging
|
||||
this.getLogger().info(ChatColor.AQUA + "Plugin Startet");
|
||||
|
||||
// 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 replanting(this), this);
|
||||
this.getServer().getPluginManager().registerEvents(this, this);
|
||||
|
||||
// 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");
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void onPlayerJoin(PlayerJoinEvent e) {
|
||||
Player p = (Player) e.getPlayer();
|
||||
UUID uuid = p.getUniqueId();
|
||||
// prevent this allways resetting the job count
|
||||
if (this.playerDataConfig.get(uuid + "." + version + ".read") == null) {
|
||||
p.sendMessage("================= Better Minecraft " + version + " =================");
|
||||
p.sendMessage("Command: /back eingefügt");
|
||||
p.sendMessage("=====================================================");
|
||||
|
||||
this.playerDataConfig.set(uuid + ".name", p.getName());
|
||||
this.playerDataConfig.set(uuid + "." + version + ".read", "true");
|
||||
saveplayerdata();
|
||||
}
|
||||
}
|
||||
|
||||
void saveplayerdata() {
|
||||
try {
|
||||
playerDataConfig.save(playerdata);
|
||||
} catch (IOException e) {
|
||||
this.getLogger().warning("Unable to save " + playerdatafilename); // shouldn't really happen, but save
|
||||
// throws the exception
|
||||
}
|
||||
}
|
||||
|
||||
public void onDisable() {
|
||||
// Even more Messaging
|
||||
this.getLogger().info(ChatColor.AQUA + "Ich geh dann mal :c");
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user