Crash fixes

This commit is contained in:
Anuken
2019-09-26 19:51:41 -04:00
parent f3ab8f34ed
commit 53d4f44178
14 changed files with 29 additions and 17 deletions

View File

@@ -447,7 +447,7 @@ public class NetServer implements ApplicationListener{
long elapsed = Time.timeSinceMillis(connection.lastRecievedClientTime);
float maxSpeed = boosting && !player.mech.flying ? player.mech.compoundSpeedBoost : player.mech.compoundSpeed;
float maxMove = elapsed / 1000f * 60f * Math.min(maxSpeed, player.mech.maxSpeed) * 1.1f;
float maxMove = elapsed / 1000f * 60f * Math.min(maxSpeed, player.mech.maxSpeed) * 1.2f;
player.pointerX = pointerX;
player.pointerY = pointerY;

View File

@@ -20,6 +20,10 @@ public class Units{
private static float cdist;
private static boolean boolResult;
public static boolean canInteract(Player player, Tile tile){
return player == null || tile == null || tile.interactable(player.getTeam());
}
/**
* Validates a target.
* @param target The target to validate

View File

@@ -9,7 +9,7 @@ import io.anuke.arc.math.geom.Position;
import io.anuke.arc.math.geom.Vector2;
import io.anuke.arc.util.Time;
import io.anuke.arc.util.pooling.Pools;
import io.anuke.mindustry.entities.EntityGroup;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.TimedEntity;
import io.anuke.mindustry.entities.traits.DrawTrait;
import io.anuke.mindustry.entities.type.Unit;
@@ -47,7 +47,7 @@ public class ItemTransfer extends TimedEntity implements DrawTrait{
@Remote(called = Loc.server)
public static void transferItemTo(Item item, int amount, float x, float y, Tile tile){
if(tile == null || tile.entity == null || tile.entity.items == null) return;
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){
Time.run(i * 3, () -> create(item, x, y, tile, () -> {
}));

View File

@@ -60,7 +60,7 @@ public abstract class InputHandler implements InputProcessor{
@Remote(targets = Loc.both, forward = true, called = Loc.server)
public static void transferInventory(Player player, Tile tile){
if(player == null || player.timer == null || !player.timer.get(Player.timerTransfer, 40)) return;
if(net.server() && (player.item().amount <= 0 || player.isTransferring|| !tile.interactable(player.getTeam()))){
if(net.server() && (player.item().amount <= 0 || player.isTransferring|| !Units.canInteract(player, tile))){
throw new ValidateException(player, "Player cannot transfer an item.");
}
@@ -110,7 +110,7 @@ public abstract class InputHandler implements InputProcessor{
@Remote(targets = Loc.both, called = Loc.server, forward = true)
public static void onTileTapped(Player player, Tile tile){
if(tile == null || player == null) return;
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
tile.block().tapped(tile, player);
}

View File

@@ -20,6 +20,7 @@ import io.anuke.arc.scene.ui.layout.Stack;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.arc.util.*;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.Player;
import io.anuke.mindustry.game.EventType.*;
import io.anuke.mindustry.gen.*;
@@ -41,7 +42,7 @@ public class BlockInventoryFragment extends Fragment{
@Remote(called = Loc.server, targets = Loc.both, forward = true)
public static void requestItem(Player player, Tile tile, Item item, int amount){
if(player == null || tile == null || !player.timer.get(Player.timerTransfer, 20) || !tile.interactable(player.getTeam())) return;
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
int removed = tile.block().removeStack(tile, item, amount);

View File

@@ -9,6 +9,7 @@ import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
@@ -44,7 +45,7 @@ public class ItemBridge extends Block{
@Remote(targets = Loc.both, called = Loc.both, forward = true)
public static void linkItemBridge(Player player, Tile tile, Tile other){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
ItemBridgeEntity entity = tile.entity();
ItemBridgeEntity oe = other.entity();
entity.link = other.pos();
@@ -53,7 +54,7 @@ public class ItemBridge extends Block{
@Remote(targets = Loc.both, called = Loc.server, forward = true)
public static void unlinkItemBridge(Player player, Tile tile, Tile other){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
ItemBridgeEntity entity = tile.entity();
entity.link = -1;
if(other != null){

View File

@@ -47,7 +47,7 @@ public class MassDriver extends Block{
@Remote(targets = Loc.both, called = Loc.server, forward = true)
public static void linkMassDriver(Player player, Tile tile, int position){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
MassDriverEntity entity = tile.entity();
entity.link = position;
}

View File

@@ -5,6 +5,7 @@ import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.type.Item;
@@ -41,7 +42,7 @@ public class Sorter extends Block{
@Remote(targets = Loc.both, called = Loc.both, forward = true)
public static void setSorterItem(Player player, Tile tile, Item item){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
SorterEntity entity = tile.entity();
if(entity != null){
entity.sortItem = item;

View File

@@ -11,6 +11,7 @@ import io.anuke.arc.scene.ui.TextField.*;
import io.anuke.arc.scene.ui.layout.*;
import io.anuke.arc.util.*;
import io.anuke.arc.util.pooling.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.net.Net;
@@ -36,7 +37,7 @@ public class MessageBlock extends Block{
@Remote(targets = Loc.both, called = Loc.both, forward = true)
public static void setMessageBlockText(Player player, Tile tile, String text){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
if(net.server() && text.length() > maxTextLength){
throw new ValidateException(player, "Player has gone above text limit.");
}

View File

@@ -9,6 +9,7 @@ import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.math.*;
import io.anuke.arc.math.geom.*;
import io.anuke.arc.util.*;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.*;
import io.anuke.mindustry.graphics.*;
@@ -40,7 +41,7 @@ public class PowerNode extends PowerBlock{
public static void linkPowerNodes(Player player, Tile tile, Tile other){
if(tile.entity == null || other == null || tile.entity.power == null || !((PowerNode)tile.block()).linkValid(tile, other)
|| tile.entity.power.links.size >= ((PowerNode)tile.block()).maxNodes) return;
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
TileEntity entity = tile.entity();
@@ -61,7 +62,7 @@ public class PowerNode extends PowerBlock{
@Remote(targets = Loc.both, called = Loc.server, forward = true)
public static void unlinkPowerNodes(Player player, Tile tile, Tile other){
if(tile.entity.power == null || other.entity == null || other.entity.power == null) return;
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
TileEntity entity = tile.entity();

View File

@@ -5,6 +5,7 @@ import io.anuke.annotations.Annotations.Remote;
import io.anuke.arc.Core;
import io.anuke.arc.graphics.g2d.Draw;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.Player;
import io.anuke.mindustry.entities.type.TileEntity;
import io.anuke.mindustry.gen.Call;
@@ -32,7 +33,7 @@ public class ItemSource extends Block{
@Remote(targets = Loc.both, called = Loc.both, forward = true)
public static void setItemSourceItem(Player player, Tile tile, Item item){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
ItemSourceEntity entity = tile.entity();
if(entity != null){
entity.outputItem = item;

View File

@@ -9,6 +9,7 @@ import io.anuke.arc.scene.style.TextureRegionDrawable;
import io.anuke.arc.scene.ui.ButtonGroup;
import io.anuke.arc.scene.ui.ImageButton;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.Player;
import io.anuke.mindustry.entities.type.TileEntity;
import io.anuke.mindustry.gen.*;
@@ -108,7 +109,7 @@ public class LiquidSource extends Block{
@Remote(targets = Loc.both, called = Loc.both, forward = true)
public static void setLiquidSourceLiquid(Player player, Tile tile, Liquid liquid){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
LiquidSourceEntity entity = tile.entity();
if(entity != null) entity.source = liquid;
}

View File

@@ -5,6 +5,7 @@ import io.anuke.arc.Core;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.scene.ui.layout.Table;
import io.anuke.mindustry.entities.*;
import io.anuke.mindustry.entities.type.*;
import io.anuke.mindustry.gen.Call;
import io.anuke.mindustry.type.Item;
@@ -48,7 +49,7 @@ public class Unloader extends Block{
@Remote(targets = Loc.both, called = Loc.both, forward = true)
public static void setSortedUnloaderItem(Player player, Tile tile, Item item){
if(!tile.interactable(player.getTeam())) return;
if(!Units.canInteract(player, tile)) return;
SortedUnloaderEntity entity = tile.entity();
entity.items.clear();
entity.sortItem = item;

View File

@@ -105,7 +105,7 @@ public class CommandCenter extends Block{
@Remote(called = Loc.server, forward = true, targets = Loc.both)
public static void onCommandCenterSet(Player player, Tile tile, UnitCommand command){
if(player == null || tile == null || !tile.interactable(player.getTeam())) return;
if(player == null || tile == null || !Units.canInteract(player, tile)) return;
Effects.effect(((CommandCenter)tile.block()).effect, tile);