Compare commits

..

5 Commits

Author SHA1 Message Date
Anuken
3813d66f30 New scorch sprite by Fox1va_ 2023-05-22 21:51:06 -04:00
Anuken
871548c095 Fixed mod startup crash 2023-05-22 21:42:46 -04:00
Anuken
c4b1df9526 Closes Anuken/Mindustry-Suggestions/issues/4433 2023-05-22 14:28:10 -04:00
Anuken
bf320a98b8 Faster connection lookup 2023-05-22 01:09:53 -04:00
Anuken
a78e7ca8c9 Possible crash fix 2023-05-21 22:36:36 -04:00
11 changed files with 16 additions and 23 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 463 B

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 307 B

After

Width:  |  Height:  |  Size: 521 B

View File

@@ -3184,6 +3184,7 @@ public class Blocks{
reload = 6f; reload = 6f;
coolantMultiplier = 1.5f; coolantMultiplier = 1.5f;
range = 60f; range = 60f;
shootY = 3;
shootCone = 50f; shootCone = 50f;
targetAir = false; targetAir = false;
ammoUseEffect = Fx.none; ammoUseEffect = Fx.none;

View File

@@ -33,7 +33,7 @@ public class ContentLoader{
public ContentLoader(){ public ContentLoader(){
for(ContentType type : ContentType.all){ for(ContentType type : ContentType.all){
contentMap[type.ordinal()] = new Seq<>(type.contentClass == null ? Object.class : type.contentClass); contentMap[type.ordinal()] = new Seq<>();
contentNameMap[type.ordinal()] = new ObjectMap<>(); contentNameMap[type.ordinal()] = new ObjectMap<>();
} }
} }

View File

@@ -1005,7 +1005,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
int dump = this.cdump; int dump = this.cdump;
var allItems = content.items(); var allItems = content.items();
int itemSize = allItems.size; int itemSize = allItems.size;
Item[] itemArray = allItems.items; Object[] itemArray = allItems.items;
for(int i = 0; i < proximity.size; i++){ for(int i = 0; i < proximity.size; i++){
Building other = proximity.get((i + dump) % proximity.size); Building other = proximity.get((i + dump) % proximity.size);
@@ -1014,7 +1014,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
for(int ii = 0; ii < itemSize; ii++){ for(int ii = 0; ii < itemSize; ii++){
if(!items.has(ii)) continue; if(!items.has(ii)) continue;
Item item = itemArray[ii]; Item item = (Item)itemArray[ii];
if(other.acceptItem(self(), item) && canDump(other, item)){ if(other.acceptItem(self(), item) && canDump(other, item)){
other.handleItem(self(), item); other.handleItem(self(), item);

View File

@@ -168,7 +168,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
@Remote(called = Loc.server, unreliable = true) @Remote(called = Loc.server, unreliable = true)
public static void transferItemTo(@Nullable Unit unit, Item item, int amount, float x, float y, Building build){ public static void transferItemTo(@Nullable Unit unit, Item item, int amount, float x, float y, Building build){
if(build == null || build.items == null) return; if(build == null || build.items == null || item == null) return;
if(unit != null && unit.item() == item) unit.stack.amount = Math.max(unit.stack.amount - amount, 0); if(unit != null && unit.item() == item) unit.stack.amount = Math.max(unit.stack.amount - amount, 0);

View File

@@ -116,14 +116,14 @@ public class ArcNetProvider implements NetProvider{
Log.debug("&bReceived connection: @", c.addressTCP); Log.debug("&bReceived connection: @", c.addressTCP);
connection.setArbitraryData(kn);
connections.add(kn); connections.add(kn);
Core.app.post(() -> net.handleServerReceived(kn, c)); Core.app.post(() -> net.handleServerReceived(kn, c));
} }
@Override @Override
public void disconnected(Connection connection, DcReason reason){ public void disconnected(Connection connection, DcReason reason){
ArcConnection k = getByArcID(connection.getID()); if(!(connection.getArbitraryData() instanceof ArcConnection k)) return;
if(k == null) return;
Disconnect c = new Disconnect(); Disconnect c = new Disconnect();
c.reason = reason.toString(); c.reason = reason.toString();
@@ -136,8 +136,8 @@ public class ArcNetProvider implements NetProvider{
@Override @Override
public void received(Connection connection, Object object){ public void received(Connection connection, Object object){
ArcConnection k = getByArcID(connection.getID()); if(!(connection.getArbitraryData() instanceof ArcConnection k)) return;
if(!(object instanceof Packet pack) || k == null) return; if(!(object instanceof Packet pack)) return;
if(packetSpamLimit > 0 && !k.packetRate.allow(3000, packetSpamLimit)){ if(packetSpamLimit > 0 && !k.packetRate.allow(3000, packetSpamLimit)){
Log.warn("Blacklisting IP '@' as potential DOS attack - packet spam.", k.address); Log.warn("Blacklisting IP '@' as potential DOS attack - packet spam.", k.address);
@@ -308,17 +308,6 @@ public class ArcNetProvider implements NetProvider{
mainExecutor.submit(server::stop); mainExecutor.submit(server::stop);
} }
ArcConnection getByArcID(int id){
for(int i = 0; i < connections.size(); i++){
ArcConnection con = connections.get(i);
if(con.connection != null && con.connection.getID() == id){
return con;
}
}
return null;
}
class ArcConnection extends NetConnection{ class ArcConnection extends NetConnection{
public final Connection connection; public final Connection connection;
@@ -370,8 +359,9 @@ public class ArcNetProvider implements NetProvider{
Log.info("Error sending packet. Disconnecting invalid client!"); Log.info("Error sending packet. Disconnecting invalid client!");
connection.close(DcReason.error); connection.close(DcReason.error);
ArcConnection k = getByArcID(connection.getID()); if(connection.getArbitraryData() instanceof ArcConnection k){
if(k != null) connections.remove(k); connections.remove(k);
}
} }
} }

View File

@@ -68,9 +68,9 @@ public class OverdriveProjector extends Block{
stats.add(Stat.range, range / tilesize, StatUnit.blocks); stats.add(Stat.range, range / tilesize, StatUnit.blocks);
stats.add(Stat.productionTime, useTime / 60f, StatUnit.seconds); stats.add(Stat.productionTime, useTime / 60f, StatUnit.seconds);
if(hasBoost){ if(hasBoost && findConsumer(f -> f instanceof ConsumeItems) instanceof ConsumeItems items){
stats.remove(Stat.booster); stats.remove(Stat.booster);
stats.add(Stat.booster, StatValues.itemBoosters("+{0}%", stats.timePeriod, speedBoostPhase * 100f, phaseRangeBoost, ((ConsumeItems)findConsumer(f -> f instanceof ConsumeItems)).items, this::consumesItem)); stats.add(Stat.booster, StatValues.itemBoosters("+{0}%", stats.timePeriod, speedBoostPhase * 100f, phaseRangeBoost, items.items, this::consumesItem));
} }
} }

View File

@@ -250,6 +250,8 @@ public class PayloadConveyor extends Block{
@Override @Override
public void unitOn(Unit unit){ public void unitOn(Unit unit){
if(!enabled) return;
//calculate derivative of units moved last frame //calculate derivative of units moved last frame
float delta = (curInterp - lastInterp) * size * tilesize; float delta = (curInterp - lastInterp) * size * tilesize;
Tmp.v1.trns(rotdeg(), delta * moveForce).scl(1f / Math.max(unit.mass(), 201f)); Tmp.v1.trns(rotdeg(), delta * moveForce).scl(1f / Math.max(unit.mass(), 201f));