Partial Cross Team Interaction Exploit Fix (#722)
* Delete Mindustry-64.zip * Delete core\src\io\anuke\mindustry\ui\dialogs\SaveDialog.java * It seems like... Exploit Patch? * 2nd * idk man
This commit is contained in:
@@ -47,6 +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;
|
||||
for(int i = 0; i < Mathf.clamp(amount / 3, 1, 8); i++){
|
||||
Time.run(i * 3, () -> create(item, x, y, tile, () -> {
|
||||
}));
|
||||
|
||||
@@ -110,6 +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;
|
||||
tile.block().tapped(tile, player);
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,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;
|
||||
|
||||
int removed = tile.block().removeStack(tile, item, amount);
|
||||
|
||||
|
||||
@@ -44,6 +44,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;
|
||||
ItemBridgeEntity entity = tile.entity();
|
||||
ItemBridgeEntity oe = other.entity();
|
||||
entity.link = other.pos();
|
||||
@@ -52,6 +53,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;
|
||||
ItemBridgeEntity entity = tile.entity();
|
||||
entity.link = -1;
|
||||
if(other != null){
|
||||
|
||||
@@ -47,6 +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;
|
||||
MassDriverEntity entity = tile.entity();
|
||||
entity.link = position;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,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;
|
||||
SorterEntity entity = tile.entity();
|
||||
if(entity != null){
|
||||
entity.sortItem = item;
|
||||
|
||||
@@ -36,6 +36,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(net.server() && text.length() > maxTextLength){
|
||||
throw new ValidateException(player, "Player has gone above text limit.");
|
||||
}
|
||||
|
||||
@@ -40,6 +40,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;
|
||||
|
||||
TileEntity entity = tile.entity();
|
||||
|
||||
@@ -60,6 +61,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;
|
||||
|
||||
TileEntity entity = tile.entity();
|
||||
|
||||
|
||||
@@ -32,6 +32,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;
|
||||
ItemSourceEntity entity = tile.entity();
|
||||
if(entity != null){
|
||||
entity.outputItem = item;
|
||||
|
||||
@@ -108,6 +108,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;
|
||||
LiquidSourceEntity entity = tile.entity();
|
||||
if(entity != null) entity.source = liquid;
|
||||
}
|
||||
|
||||
@@ -48,6 +48,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;
|
||||
SortedUnloaderEntity entity = tile.entity();
|
||||
entity.items.clear();
|
||||
entity.sortItem = item;
|
||||
|
||||
@@ -105,6 +105,8 @@ 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;
|
||||
|
||||
Effects.effect(((CommandCenter)tile.block()).effect, tile);
|
||||
|
||||
for(Tile center : indexer.getAllied(tile.getTeam(), BlockFlag.comandCenter)){
|
||||
|
||||
@@ -82,7 +82,7 @@ public class MechPad extends Block{
|
||||
|
||||
protected static boolean checkValidTap(Tile tile, Player player){
|
||||
MechFactoryEntity entity = tile.entity();
|
||||
return !player.isDead() && Math.abs(player.x - tile.drawx()) <= tile.block().size * tilesize &&
|
||||
return !player.isDead() && tile.interactable(player.getTeam()) && Math.abs(player.x - tile.drawx()) <= tile.block().size * tilesize &&
|
||||
Math.abs(player.y - tile.drawy()) <= tile.block().size * tilesize && entity.cons.valid() && entity.player == null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user