Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.logging.Level;
- import java.util.logging.Logger;
- public class PortalListener extends PluginListener {
- public final Logger a = Logger.getLogger("Minecraft");
- public int getEncodeVal(int X, int Z, int Y){
- int id = etc.getServer().getBlockIdAt(X, Y, Z);
- switch (id){
- case 3: return 0;
- case 2: return 0;
- case 5: return 1;
- case 17: return 2;
- case 4: return 3;
- case 58: return 4;
- case 61: return 5;
- case 54: return 6;
- case 20: return 7;
- default: return 0;
- }
- }
- private int find2dir(int x, int z , int y)
- {
- int dir = -1; //0 is for +x 1 is +z 2 is -x 3 is -z
- if(etc.getServer().getBlockIdAt(x-1, y, z)==84)
- dir = 0;
- if(etc.getServer().getBlockIdAt(x+1, y, z)==84)
- dir = 2;
- if(etc.getServer().getBlockIdAt(x, y, z+1)==84)
- dir = 3;
- if(etc.getServer().getBlockIdAt(x, y, z-1)==84)
- dir = 1;
- if(etc.getServer().getBlockIdAt(x-2, y, z)==84)
- dir = 0;
- if(etc.getServer().getBlockIdAt(x+2, y, z)==84)
- dir = 2;
- if(etc.getServer().getBlockIdAt(x, y, z+2)==84)
- dir = 3;
- if(etc.getServer().getBlockIdAt(x, y, z-2)==84)
- dir = 1;
- return dir;
- }
- private int convertbase(int[] code,int codenum)
- {
- int total = 0;
- for(int i = 0; i < codenum; i++)
- {
- total += code[i]*Math.pow(8, (codenum-1)-i);
- }
- return (int) Math.ceil(total);
- }
- public void onPlayerMove(Player player, Location from, Location to)
- {
- if(to.x < 0)
- to.x -= 1;
- if(to.z < 0)
- to.z -= 1;
- if(etc.getServer().getBlockIdAt((int)to.x, (int)to.y, (int)to.z)==70)
- {
- System.out.println("Player pushed a button");
- int orientationlevel = (int) to.y-1;
- int oX = (int)to.x;
- int oZ = (int) to.z;
- int scode1 = 1;
- int scode2 = 1;
- //check for gold block
- int readdirection = -1; //0 is for +x 1 is +z 2 is -x 3 is -z
- if(etc.getServer().getBlockIdAt(oX-1, orientationlevel, oZ)==84)
- readdirection = 0;
- if(etc.getServer().getBlockIdAt(oX+1, orientationlevel, oZ)==84)
- readdirection = 2;
- if(etc.getServer().getBlockIdAt(oX, orientationlevel, oZ+1)==84)
- readdirection = 3;
- if(etc.getServer().getBlockIdAt(oX, orientationlevel, oZ-1)==84)
- readdirection = 1;
- if(readdirection == -1)
- return;
- else
- {
- boolean yset =false;
- int[] code1 = new int[5];
- int[] code2 = new int[5];
- int[] codeY = new int[5];
- int xcodenum=0;
- switch (readdirection){
- case -1:
- return;
- case 0:
- code1[0] = getEncodeVal(oX+1,oZ,orientationlevel);
- code1[1] = getEncodeVal(oX+1,oZ,orientationlevel-1);
- code1[2] = getEncodeVal(oX+1,oZ,orientationlevel-2);
- code1[3] = getEncodeVal(oX+1,oZ,orientationlevel-3);
- scode1 = -1;
- xcodenum = 1;
- code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
- code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
- code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
- code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
- if(find2dir(oX, oZ, orientationlevel-3) != -1)
- scode2 = -1;
- else
- scode2 = 1;
- if(etc.getServer().getBlockIdAt(oX-1, orientationlevel-1, oZ)!=0)
- {
- codeY[0] = getEncodeVal(oX-1,oZ,orientationlevel-1);
- codeY[1] = getEncodeVal(oX-1,oZ,orientationlevel-2);
- codeY[2] = getEncodeVal(oX-1,oZ,orientationlevel-3);
- yset =true;
- }
- break;
- case 1:
- code1[0] = getEncodeVal(oX,oZ+1,orientationlevel);
- code1[1] = getEncodeVal(oX,oZ+1,orientationlevel-1);
- code1[2] = getEncodeVal(oX,oZ+1,orientationlevel-2);
- code1[3] = getEncodeVal(oX,oZ+1,orientationlevel-3);
- scode1 = -1;
- xcodenum = 2;
- code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
- code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
- code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
- code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
- if(find2dir(oX, oZ, orientationlevel-3) != -1)
- scode2 = -1;
- else
- scode2 = 1;
- if(etc.getServer().getBlockIdAt(oX, orientationlevel-1, oZ-1)!=0)
- {
- codeY[0] = getEncodeVal(oX,oZ-1,orientationlevel-1);
- codeY[1] = getEncodeVal(oX,oZ-1,orientationlevel-2);
- codeY[2] = getEncodeVal(oX,oZ-1,orientationlevel-3);
- yset =true;
- }
- break;
- case 2:
- code1[0] = getEncodeVal(oX-1,oZ,orientationlevel);
- code1[1] = getEncodeVal(oX-1,oZ,orientationlevel-1);
- code1[2] = getEncodeVal(oX-1,oZ,orientationlevel-2);
- code1[3] = getEncodeVal(oX-1,oZ,orientationlevel-3);
- scode1 = 1;
- xcodenum = 1;
- code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
- code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
- code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
- code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
- if(find2dir(oX, oZ, orientationlevel-3) != -1)
- scode2 = 1;
- else
- scode2 = -1;
- if(etc.getServer().getBlockIdAt(oX+1, orientationlevel-1, oZ)!=0)
- {
- codeY[0] = getEncodeVal(oX+1,oZ,orientationlevel-1);
- codeY[1] = getEncodeVal(oX+1,oZ,orientationlevel-2);
- codeY[2] = getEncodeVal(oX+1,oZ,orientationlevel-3);
- yset =true;
- }
- break;
- case 3:
- code1[0] = getEncodeVal(oX,oZ-1,orientationlevel);
- code1[1] = getEncodeVal(oX,oZ-1,orientationlevel-1);
- code1[2] = getEncodeVal(oX,oZ-1,orientationlevel-2);
- code1[3] = getEncodeVal(oX,oZ-1,orientationlevel-3);
- scode1 = 1;
- xcodenum = 2;
- code2[0] = getEncodeVal(oX,oZ,orientationlevel-1);
- code2[1] = getEncodeVal(oX,oZ,orientationlevel-2);
- code2[2] = getEncodeVal(oX,oZ,orientationlevel-3);
- code2[3] = getEncodeVal(oX,oZ,orientationlevel-4);
- if(find2dir(oX, oZ, orientationlevel-3) != -1)
- scode2 = 1;
- else
- scode2 = -1;
- if(etc.getServer().getBlockIdAt(oX, orientationlevel-1, oZ+1)!=0)
- {
- codeY[0] = getEncodeVal(oX,oZ+1,orientationlevel-1);
- codeY[1] = getEncodeVal(oX,oZ+1,orientationlevel-2);
- codeY[2] = getEncodeVal(oX,oZ+1,orientationlevel-3);
- yset = true;
- }
- break;
- }
- int goto1 = convertbase(code1,4)*scode1;
- int goto2 = convertbase(code2,4)*scode2;
- Location loc = new Location();
- if(xcodenum == 1)
- {
- loc.x = oX+goto1;
- loc.z = oZ+goto2;
- }
- if(xcodenum == 2)
- {
- loc.x = oX+goto2;
- loc.z = oZ+goto1;
- }
- int gotoY = 128;
- if(yset)
- gotoY = 164-convertbase(codeY,3);
- loc.y = gotoY;
- a.log(Level.INFO,player.getName() + " used a portal!");
- if(Math.abs(loc.x-etc.getServer().getSpawnLocation().x)<=1700 && Math.abs(loc.z-etc.getServer().getSpawnLocation().z)<=1700)
- player.teleportTo(loc);
- }
- }
- return;
- }
- /*
- private int translate(int rx, int rz, int y, int dir, int oX, int oZ) {
- int tmpx =0;
- int tmpz =0;
- if(dir == 0)
- {
- tmpx = oX+rz;
- tmpz = oZ-rx;
- }
- if(dir == 1)
- {
- tmpx = oX+rx;
- tmpz = oZ+rz;
- }
- if(dir == 2)
- {
- tmpx = oX-rz;
- tmpz = oZ+rx;
- }
- if(dir == 3)
- {
- tmpx = oX-rx;
- tmpz = oZ-rz;
- }
- return getEncodeVal(tmpx,tmpz,y);
- }
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement