Skip to content

Instantly share code, notes, and snippets.

@RedBlaze42
Created May 29, 2019 22:32
Show Gist options
  • Save RedBlaze42/2746bfebeee42ad3dc290dd512072161 to your computer and use it in GitHub Desktop.
Save RedBlaze42/2746bfebeee42ad3dc290dd512072161 to your computer and use it in GitHub Desktop.
package fr.redblaze.theredcite;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
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.PlayerMoveEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;
public class main extends JavaPlugin implements Listener {
public Logger log = Logger.getLogger("Minecraft");
File fichierWarp;
FileConfiguration warps;
World world;
HashMap<Player,Vector> warps_in_creation_start = new HashMap<Player, Vector>();
HashMap<Player,String> warps_in_creation_name = new HashMap<Player, String>();
public void onEnable() {
fichierWarp = new File(getDataFolder() + "/warp.yml");
warps = YamlConfiguration.loadConfiguration(fichierWarp);
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(label.equalsIgnoreCase("citewarp")) {
if(!(sender instanceof Player)){
sender.sendMessage("Commande utilisable que par un joueur");
return true;
}
Player player= (Player) sender;
if(!(player.getLocation().getWorld().equals(world))) {
player.sendMessage("Vous n'êtes pas dans le bon monde");
return true;
}
player.sendMessage("Woosh");
if(args.length==2) {
if(args[0].equalsIgnoreCase("create")) {
warps_in_creation_start.put(player, player.getLocation().toVector());
warps_in_creation_name.put(player, args[1]);
player.sendMessage("Vous avez commencé à créer le warp: "+args[1]);
}else if(args[0].equalsIgnoreCase("delete")) {
String warp_name = args[0];
List<String> warp_names = null;
if(warps.isSet("warps_names")) {
warp_names = warps.getStringList("warp_names");
}
if(warp_names.contains(warp_name)) {
warp_names.remove(warp_name);
warps.set("warp_names", warp_names);
}else {
player.sendMessage("Ce warp n'existe pas !");
}
}
}else {
if(warps_in_creation_name.containsKey(player)) {
List<String> warp_names = null;
if(warps.isSet("warps_names")) {
warp_names = warps.getStringList("warp_names");
}
String warp_name=warps_in_creation_name.get(player);
warp_names.add(warp_name);
warps.set("warp_names", warp_names);
warps.set("from."+warp_name, vector_to_blockVecto(warps_in_creation_start.get(player)));
warps.set("to."+warp_name, vector_to_blockVecto(player.getLocation().toVector()));
}
player.sendMessage("/citewarp create/delete warp_name");
}
}
return false;
}
@EventHandler
public void onPlayerMove(PlayerMoveEvent event){
if(event.getPlayer().getLocation().getWorld().equals(world)) {
for (String warp_name : warps.getStringList("warp_names")) {
Player player = event.getPlayer();
if(vector_block_equals(event.getTo().toVector(),warps.getVector("from."+warp_name))) {
Vector dest=warps.getVector("to."+warp_name);
Vector player_vec=player.getLocation().toVector();
player_vec.setX(player_vec.getX()-player_vec.getBlockX());
player_vec.setY(player_vec.getY()-player_vec.getBlockY());
player_vec.setZ(player_vec.getZ()-player_vec.getBlockZ());
Vector previous_velocity=player.getVelocity();
player.teleport(new Location(world, dest.getBlockX()+player_vec.getX(), dest.getBlockY()+player_vec.getY(), dest.getBlockZ()+player_vec.getZ(), player.getLocation().getYaw(), player.getLocation().getPitch()));
player.setVelocity(previous_velocity);
}
}
}
}
public static boolean vector_block_equals(Vector vec1, Vector vec2) {
boolean x= vec1.getBlockX()==vec2.getBlockX();
boolean y= vec1.getBlockY()==vec2.getBlockY();
boolean z= vec1.getBlockZ()==vec2.getBlockZ();
return x && y && z;
}
public Vector vector_to_blockVecto(Vector vec) {
vec.setX(vec.getBlockX());
vec.setY(vec.getBlockY());
vec.setZ(vec.getBlockZ());
return vec;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment