Fixed item drop quantities not syncing
This commit is contained in:
@@ -11,6 +11,7 @@ import io.anuke.mindustry.entities.traits.SyncTrait;
|
|||||||
import io.anuke.mindustry.gen.CallEntity;
|
import io.anuke.mindustry.gen.CallEntity;
|
||||||
import io.anuke.mindustry.net.In;
|
import io.anuke.mindustry.net.In;
|
||||||
import io.anuke.mindustry.net.Interpolator;
|
import io.anuke.mindustry.net.Interpolator;
|
||||||
|
import io.anuke.mindustry.net.Net;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.Item;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.Tile;
|
||||||
import io.anuke.ucore.core.Effects;
|
import io.anuke.ucore.core.Effects;
|
||||||
@@ -119,8 +120,12 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
updateVelocity(0.2f);
|
if(Net.client()) {
|
||||||
updateTime();
|
interpolate();
|
||||||
|
}else{
|
||||||
|
updateVelocity(0.2f);
|
||||||
|
updateTime();
|
||||||
|
}
|
||||||
|
|
||||||
Tile tile = world.tileWorld(x, y);
|
Tile tile = world.tileWorld(x, y);
|
||||||
|
|
||||||
@@ -132,7 +137,7 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(sinktime >= sinkLifetime){
|
if(sinktime >= sinkLifetime){
|
||||||
remove();
|
CallEntity.onPickup(getID());
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
sinktime = 0f;
|
sinktime = 0f;
|
||||||
@@ -147,6 +152,7 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
|
|||||||
@Override
|
@Override
|
||||||
public void reset() {
|
public void reset() {
|
||||||
time = 0f;
|
time = 0f;
|
||||||
|
interpolator.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -169,12 +175,13 @@ public class ItemDrop extends SolidEntity implements SyncTrait, DrawTrait, Veloc
|
|||||||
data.writeFloat(x);
|
data.writeFloat(x);
|
||||||
data.writeFloat(y);
|
data.writeFloat(y);
|
||||||
data.writeByte(item.id);
|
data.writeByte(item.id);
|
||||||
|
data.writeShort(amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void read(DataInput data, long time) throws IOException{
|
public void read(DataInput data, long time) throws IOException{
|
||||||
x = data.readFloat();
|
interpolator.read(x, y, data.readFloat(), data.readFloat(), time);
|
||||||
y = data.readFloat();
|
|
||||||
item = Item.getByID(data.readByte());
|
item = Item.getByID(data.readByte());
|
||||||
|
amount = data.readShort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,16 @@ public class Interpolator {
|
|||||||
spacing = Math.min(Math.max(((TimeUtils.timeSinceMillis(sent) / 1000f) * 60f), 4f), 10);
|
spacing = Math.min(Math.max(((TimeUtils.timeSinceMillis(sent) / 1000f) * 60f), 4f), 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void reset(){
|
||||||
|
values = new float[0];
|
||||||
|
targets = new float[0];
|
||||||
|
target.setZero();
|
||||||
|
last.setZero();
|
||||||
|
spacing = 1f;
|
||||||
|
time = 0f;
|
||||||
|
pos.setZero();
|
||||||
|
}
|
||||||
|
|
||||||
public void update(){
|
public void update(){
|
||||||
|
|
||||||
time += 1f / spacing * Math.min(Timers.delta(), 1f);
|
time += 1f / spacing * Math.min(Timers.delta(), 1f);
|
||||||
|
|||||||
Reference in New Issue
Block a user