Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.09 KB | None | 0 0
  1. import java.util.logging.Level;
  2. import java.util.logging.Logger;
  3.  
  4.  
  5. public class PortalListener extends PluginListener {
  6.     public final Logger a = Logger.getLogger("Minecraft");
  7.     public int getEncodeVal(int X, int Z, int Y){
  8.         int id = etc.getServer().getBlockIdAt(X, Y, Z);
  9.         switch (id){
  10.         case 3: return 0;
  11.         case 2: return 0;
  12.         case 5: return 1;
  13.         case 17: return 2;
  14.         case 4: return 3;
  15.         case 58: return 4;
  16.         case 61: return 5;                 
  17.         case 54: return 6;
  18.         case 20: return 7;
  19.         default: return 0;
  20.         }
  21.        
  22.     }
  23.     private int find2dir(int x, int z , int y)
  24.     {
  25.         int dir = -1; //0 is for +x 1 is +z 2 is -x 3 is -z
  26.         if(etc.getServer().getBlockIdAt(x-1, y, z)==84)
  27.             dir = 0;
  28.         if(etc.getServer().getBlockIdAt(x+1, y, z)==84)
  29.             dir = 2;
  30.         if(etc.getServer().getBlockIdAt(x, y, z+1)==84)
  31.             dir = 3;
  32.         if(etc.getServer().getBlockIdAt(x, y, z-1)==84)
  33.             dir = 1;
  34.        
  35.         if(etc.getServer().getBlockIdAt(x-2, y, z)==84)
  36.             dir = 0;
  37.         if(etc.getServer().getBlockIdAt(x+2, y, z)==84)
  38.             dir = 2;
  39.         if(etc.getServer().getBlockIdAt(x, y, z+2)==84)
  40.             dir = 3;
  41.         if(etc.getServer().getBlockIdAt(x, y, z-2)==84)
  42.             dir = 1;
  43.        
  44.         return dir;
  45.     }
  46.     private int convertbase(int[] code,int codenum)
  47.     {
  48.         int total = 0;
  49.         for(int i = 0; i < codenum; i++)
  50.         {
  51.             total += code[i]*Math.pow(8, (codenum-1)-i);
  52.         }
  53.         return (int) Math.ceil(total);
  54.     }
  55.     public void onPlayerMove(Player player, Location from, Location to)
  56.     {
  57.         if(to.x < 0)
  58.             to.x -= 1;
  59.         if(to.z < 0)
  60.             to.z -= 1;
  61.         if(etc.getServer().getBlockIdAt((int)to.x, (int)to.y, (int)to.z)==70)
  62.         {
  63.             System.out.println("Player pushed a button");
  64.             int orientationlevel = (int) to.y-1;
  65.             int oX = (int)to.x;
  66.             int oZ = (int) to.z;
  67.             int scode1 = 1;
  68.             int scode2 = 1;
  69.             //check for gold block
  70.             int readdirection = -1; //0 is for +x 1 is +z 2 is -x 3 is -z
  71.             if(etc.getServer().getBlockIdAt(oX-1, orientationlevel, oZ)==84)
  72.                 readdirection = 0;
  73.             if(etc.getServer().getBlockIdAt(oX+1, orientationlevel, oZ)==84)
  74.                 readdirection = 2;
  75.             if(etc.getServer().getBlockIdAt(oX, orientationlevel, oZ+1)==84)
  76.                 readdirection = 3;
  77.             if(etc.getServer().getBlockIdAt(oX, orientationlevel, oZ-1)==84)
  78.                 readdirection = 1;
  79.            
  80.             if(readdirection == -1)
  81.                 return;
  82.             else
  83.             {
  84.                 boolean yset =false;
  85.                 int[] code1 = new int[5];
  86.                 int[] code2 = new int[5];
  87.                 int[] codeY = new int[5];
  88.                 int xcodenum=0;
  89.                 switch (readdirection){
  90.                 case -1:
  91.                     return;
  92.                 case 0:
  93.                     code1[0] = getEncodeVal(oX+1,oZ,orientationlevel);
  94.                     code1[1] = getEncodeVal(oX+1,oZ,orientationlevel-1);
  95.                     code1[2] = getEncodeVal(oX+1,oZ,orientationlevel-2);
  96.                     code1[3] = getEncodeVal(oX+1,oZ,orientationlevel-3);
  97.                     scode1 = -1;
  98.                     xcodenum = 1;
  99.                     code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
  100.                     code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
  101.                     code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
  102.                     code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
  103.                     if(find2dir(oX, oZ, orientationlevel-3) != -1)
  104.                         scode2 = -1;
  105.                     else
  106.                         scode2 = 1;
  107.                    
  108.                     if(etc.getServer().getBlockIdAt(oX-1, orientationlevel-1, oZ)!=0)
  109.                     {
  110.                         codeY[0] = getEncodeVal(oX-1,oZ,orientationlevel-1);
  111.                         codeY[1] = getEncodeVal(oX-1,oZ,orientationlevel-2);
  112.                         codeY[2] = getEncodeVal(oX-1,oZ,orientationlevel-3);
  113.                         yset =true;
  114.                     }
  115.                     break;
  116.                 case 1:
  117.                     code1[0] = getEncodeVal(oX,oZ+1,orientationlevel);
  118.                     code1[1] = getEncodeVal(oX,oZ+1,orientationlevel-1);
  119.                     code1[2] = getEncodeVal(oX,oZ+1,orientationlevel-2);
  120.                     code1[3] = getEncodeVal(oX,oZ+1,orientationlevel-3);
  121.                     scode1 = -1;
  122.                     xcodenum = 2;
  123.                     code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
  124.                     code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
  125.                     code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
  126.                     code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
  127.                     if(find2dir(oX, oZ, orientationlevel-3) != -1)
  128.                         scode2 = -1;
  129.                     else
  130.                         scode2 = 1;
  131.                    
  132.                     if(etc.getServer().getBlockIdAt(oX, orientationlevel-1, oZ-1)!=0)
  133.                     {
  134.                         codeY[0] = getEncodeVal(oX,oZ-1,orientationlevel-1);
  135.                         codeY[1] = getEncodeVal(oX,oZ-1,orientationlevel-2);
  136.                         codeY[2] = getEncodeVal(oX,oZ-1,orientationlevel-3);
  137.                         yset =true;
  138.                     }
  139.                     break;
  140.                 case 2:
  141.                     code1[0] = getEncodeVal(oX-1,oZ,orientationlevel);
  142.                     code1[1] = getEncodeVal(oX-1,oZ,orientationlevel-1);
  143.                     code1[2] = getEncodeVal(oX-1,oZ,orientationlevel-2);
  144.                     code1[3] = getEncodeVal(oX-1,oZ,orientationlevel-3);
  145.                     scode1 = 1;
  146.                     xcodenum = 1;
  147.                     code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
  148.                     code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
  149.                     code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
  150.                     code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
  151.                     if(find2dir(oX, oZ, orientationlevel-3) != -1)
  152.                         scode2 = 1;
  153.                     else
  154.                         scode2 = -1;
  155.                    
  156.                     if(etc.getServer().getBlockIdAt(oX+1, orientationlevel-1, oZ)!=0)
  157.                     {
  158.                         codeY[0] = getEncodeVal(oX+1,oZ,orientationlevel-1);
  159.                         codeY[1] = getEncodeVal(oX+1,oZ,orientationlevel-2);
  160.                         codeY[2] = getEncodeVal(oX+1,oZ,orientationlevel-3);
  161.                         yset =true;
  162.                     }
  163.                     break;
  164.                 case 3:
  165.                     code1[0] = getEncodeVal(oX,oZ-1,orientationlevel);
  166.                     code1[1] = getEncodeVal(oX,oZ-1,orientationlevel-1);
  167.                     code1[2] = getEncodeVal(oX,oZ-1,orientationlevel-2);
  168.                     code1[3] = getEncodeVal(oX,oZ-1,orientationlevel-3);
  169.                     scode1 = 1;
  170.                     xcodenum = 2;
  171.                     code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
  172.                     code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
  173.                     code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
  174.                     code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
  175.                     if(find2dir(oX, oZ, orientationlevel-3) != -1)
  176.                         scode2 = 1;
  177.                     else
  178.                         scode2 = -1;
  179.                    
  180.                     if(etc.getServer().getBlockIdAt(oX, orientationlevel-1, oZ+1)!=0)
  181.                     {
  182.                         codeY[0] = getEncodeVal(oX,oZ+1,orientationlevel-1);
  183.                         codeY[1] = getEncodeVal(oX,oZ+1,orientationlevel-2);
  184.                         codeY[2] = getEncodeVal(oX,oZ+1,orientationlevel-3);
  185.                         yset = true;
  186.                     }
  187.                     break;
  188.                 }
  189.                 int goto1 = convertbase(code1,4)*scode1;
  190.                 int goto2 = convertbase(code2,4)*scode2;
  191.                 Location loc = new Location();
  192.                 if(xcodenum == 1)
  193.                 {
  194.                     loc.x = oX+goto1;
  195.                     loc.z = oZ+goto2;
  196.                 }
  197.                 if(xcodenum == 2)
  198.                 {
  199.                     loc.x = oX+goto2;
  200.                     loc.z = oZ+goto1;
  201.                 }
  202.                 int gotoY = 128;
  203.                 if(yset)
  204.                     gotoY = 164-convertbase(codeY,3);
  205.                 loc.y = gotoY;
  206.                 a.log(Level.INFO,player.getName() + " used a portal!");
  207.                 if(Math.abs(loc.x-etc.getServer().getSpawnLocation().x)<=1700 && Math.abs(loc.z-etc.getServer().getSpawnLocation().z)<=1700)
  208.                     player.teleportTo(loc);
  209.                
  210.             }
  211.            
  212.  
  213.             }
  214.         return;
  215.     }
  216. /*
  217.     private int translate(int rx, int rz, int y, int dir, int oX, int oZ) {
  218.         int tmpx =0;
  219.         int tmpz =0;
  220.         if(dir == 0)
  221.         {
  222.             tmpx = oX+rz;
  223.             tmpz = oZ-rx;
  224.         }
  225.         if(dir == 1)
  226.         {
  227.             tmpx = oX+rx;
  228.             tmpz = oZ+rz;
  229.         }
  230.         if(dir == 2)
  231.         {
  232.             tmpx = oX-rz;
  233.             tmpz = oZ+rx;
  234.         }
  235.         if(dir == 3)
  236.         {
  237.             tmpx = oX-rx;
  238.             tmpz = oZ-rz;
  239.         }
  240.         return getEncodeVal(tmpx,tmpz,y);
  241.     }
  242. */
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement