I do not have a bug report form or report itself, so I'm just asking for support on this matter (even though I believe it to BE a bug). If this is misfiled, I apologize immediately and would like to be directed to the correct location. Thank you :).
I've been trying to figure out why the EU cost of the Teleporter doesn't match the calculations given on the wiki. I've done a days worth of calculations and arrived at this conclusion: The Teleporter is bugged (I've been hearing this off and on through other topics and forums but have yet to see any specific thing pointing it out). I know how to fix it though! I just can't seem to find a way to compile from the .java to .class; it's quite infuriating. So here's the issue. Since I can't just make a custom mod for our server (waiting for the actual mod to be fixed), maybe someone else has a solution that I've not looked at.
According to the Wiki, the calculation for player teleport is Distance * (1000 + Inventory + Armor) where Distance = sqrt( (dx)^2 + (dy)^2 + (dz)^2 ), Inventory = 100 * Current stack size) / Max stack size, and armor = 100/used slot. This is fine in concept but is not the case when used. I setup a simple testing area: Two TPs powered by MSFUs, the first at -177 289 66, the second at -151 294 66. Doing the math, we come out to 26.47640459 Distance. Assuming a completely naked person--no armor or items--we take the base 1000 for player TP, and no inventory costs. Putting this through the rest of the math: 26.47640459*1000 = 26,476 EU (dropping fractions as suggested on wiki). I fill TP #1 with 27,000 EU and try it: Nothing. I then leave it charging while I stand on it. As soon as it hits 60,825 EU--I TP as normal.
Obviously, THAT isn't supposed to happen. I decompiled the server-side Transporter.class file to take a look at what could be malfunctioning and found that the variable passed to the power draw method is setup to inject a huge amount of extra power in there.
public void teleport(EntityLiving entityliving)
{
double d = Math.sqrt((x - targetX) * (x - targetX) + (y - targetY) * (y - targetY) + (z - targetZ) * (z - targetZ));
int i = getWeightOf(entityliving);
int j = (int)((double)i * Math.pow(d + 10D, 0.69999999999999996D) * 5D);
if(j > getAvailableEnergy())
{
return;
} else
{
consumeEnergy(j);
Platform.teleportTo(entityliving, (double)targetX + 0.5D, (double)targetY + 1.5D + entityliving.R(), (double)targetZ + 0.5D, entityliving.yaw, entityliving.pitch);
NetworkManager.initiateTileEntityEvent(this, 0, true);
return;
}
}
Display More
As is outlined here, superfluous math is being done beyond the equation given on the wiki. As I see it, it takes "Player weight" (Inv+Armor+1000) and multiplies it by "Distance*10^0.6...96" and multiplies that by 5. As far as I can tell, this is not the way it is supposed to be. Simply replacing the definition of variable "j" with the following:
Should result in the exact function outlined on the wiki. So these details in mind, does anyone know if I am just looking at this wrong? Has anyone reported this issue before? I tried doing a search but couldn't find anything matching my results within the first two pages. If someone could give some insight on this issue, or suggest a possible fix, I'd be much appreciated. If permissible, and I don't know about this one, if someone could explain how I could just mod it for our server until an official release (if this is a bug) comes out, I'd be even more grateful. As an end note: I'm not trying to be a show off or start a fight or anything! I'm outlining the above to try and help my own issue while asking for help :(. Thank you for all your time!