Development Assistance Minecart Rotation in a circle ! using Math

Discussion in 'Plugin Help/Development/Requests' started by 78wesley, Jan 31, 2016.

Thread Status:
Not open for further replies.
  1. hi i have a question how can i rotate All the minecarts in a cicular path like this \/ gif

    Video from what i have now


    But my code needs to be like this in a Bukkit Runnable
    [​IMG]
    My code what i have now :
    Code:
    import static org.bukkit.ChatColor.*;
    
    import java.util.ArrayList;
    
    import nl.Wesley.Main.SettingsManager;
    
    import org.bukkit.Bukkit;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.World;
    import org.bukkit.block.Sign;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Minecart;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.block.SignChangeEvent;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.scheduler.BukkitRunnable;
    import org.bukkit.util.Vector;
    
    public class FreeFall implements Listener {
     
        static SettingsManager settings = SettingsManager.getInstance();
        static ArrayList<Entity> FreeFallminecarts = new ArrayList<Entity>();
        static int i = 0;
        static boolean RUNFreeFall = false;
        static boolean SPAWNFreeFall = true;
        static double angle;
        static float radius = 4.0f;
        static double cos = 1;
        static double sin ;
     
        public static void StopFreeFall() {
            for(Entity entity : FreeFallminecarts) {
                i = 0;
                RUNFreeFall = false;
                SPAWNFreeFall = true;
                entity.remove();
            }
        }
      
        public static void SpawnFreeFall() {
            if (SPAWNFreeFall == true) {
                double x;
                double z;
                final World world = Bukkit.getServer().getWorlds().get(0);
                Location loc = new Location(world, -111.5, 64, 40.5);
                for (int i = 0; i < 1; i++) {
                    angle = 2 * Math.PI * i / 1;
                    z = Math.sin(angle) * radius;
                    x = Math.cos(angle) * radius;
                    loc.add(x, 0, z);
                    final Minecart minecart = (Minecart) world.spawnEntity(loc, EntityType.MINECART);
                    minecart.setFlyingVelocityMod(new Vector(0f, 0f, 0f));
                    minecart.setSlowWhenEmpty(false);
                    minecart.setCustomName("FreeFall");
                 
                    FreeFallminecarts.add(minecart);
                    loc.subtract(x, 0, z);
                    SPAWNFreeFall = false;
                }
            } else {
                 SPAWNFreeFall = false;
            }
        }
        public static void RunFreeFall() {
            if (RUNFreeFall == true && SPAWNFreeFall == false) {
                    new BukkitRunnable() {
                        public void run() {
                            if (RUNFreeFall == true) {
                                i += 1;
                            } else {
                                RUNFreeFall = false;
                                cancel();
                                i = 0;
                            }
                            for (Entity entity : FreeFallminecarts) {
                            if (entity.getCustomName().equalsIgnoreCase("FreeFall")) {
                                if (i >= 1 && !(i >= 309)) {
                                    entity.setVelocity(new Vector(0f, 0.20f, 0f));
                                }
                                if (i >= 310 && !(i >= 334)) {
                                    entity.setVelocity(new Vector(0f, -1f, 0f));
                                }
                                if (i >= 335 && !(i >= 384)) {
                                    entity.setVelocity(new Vector(0f, 0.5f, 0f));
                                }
                                if (i >= 385 && !(i >= 434)) {
                                    entity.setVelocity(new Vector(0f, -0.70f, 0f));
                                }
                                if (i >= 435 && !(i >= 464)) {
                                    entity.setVelocity(new Vector(0f, -0.10f, 0f));
                                }
                                if (i >= 465 && !(i >= 529)) {
                                    entity.setVelocity(new Vector(0f, -0.01f, 0f));
                                }
                                if (i >= 630) {
                                    entity.setVelocity(new Vector(0f, 0f, 0f));
                                    cancel();
                                    i = 0;
                                    RUNFreeFall = false;
                                }
                            }
    
                        }
                    }
                }.runTaskTimer(settings.getPlugin(), 0, 1);
            } else {
                i = 0;
                RUNFreeFall = false;
    
            }
        }
     
    Last edited: Feb 1, 2016
  2. bump
     
    Last edited by a moderator: Feb 3, 2016
  3. it is still open some can help me ?
     
Thread Status:
Not open for further replies.

Share This Page