Mod bugfixes

This commit is contained in:
Anuken
2021-06-03 13:58:56 -04:00
parent 41ccda03a8
commit ac20b17e0b
8 changed files with 49 additions and 3 deletions
@@ -15,7 +15,6 @@ import mindustry.type.*;
import mindustry.world.*; import mindustry.world.*;
import mindustry.world.blocks.environment.*; import mindustry.world.blocks.environment.*;
//just a proof of concept
@Component @Component
abstract class WaterMoveComp implements Posc, Velc, Hitboxc, Flyingc, Unitc{ abstract class WaterMoveComp implements Posc, Velc, Hitboxc, Flyingc, Unitc{
@Import float x, y, rotation; @Import float x, y, rotation;
@@ -26,6 +26,10 @@ public class MultiPacker implements Disposable{
return null; return null;
} }
public PixmapPacker getPacker(PageType type){
return packers[type.ordinal()];
}
public boolean has(String name){ public boolean has(String name){
for(var page : PageType.all){ for(var page : PageType.all){
if(packers[page.ordinal()].getRect(name) != null){ if(packers[page.ordinal()].getRect(name) != null){
+13
View File
@@ -8,6 +8,7 @@ import mindustry.ctype.*;
import mindustry.game.*; import mindustry.game.*;
import mindustry.type.*; import mindustry.type.*;
import mindustry.world.*; import mindustry.world.*;
import mindustry.world.meta.*;
import java.io.*; import java.io.*;
@@ -111,6 +112,18 @@ public class JsonIO{
} }
}); });
json.setSerializer(Attribute.class, new Serializer<>(){
@Override
public void write(Json json, Attribute object, Class knownType){
json.writeValue(object.name);
}
@Override
public Attribute read(Json json, JsonValue jsonData, Class type){
return Attribute.get(jsonData.asString());
}
});
json.setSerializer(Item.class, new Serializer<>(){ json.setSerializer(Item.class, new Serializer<>(){
@Override @Override
public void write(Json json, Item object, Class knownType){ public void write(Json json, Item object, Class knownType){
@@ -61,6 +61,7 @@ public class ContentParser{
}); });
put(Interp.class, (type, data) -> field(Interp.class, data)); put(Interp.class, (type, data) -> field(Interp.class, data));
put(CacheLayer.class, (type, data) -> field(CacheLayer.class, data)); put(CacheLayer.class, (type, data) -> field(CacheLayer.class, data));
put(Attribute.class, (type, data) -> Attribute.get(data.asString()));
put(Schematic.class, (type, data) -> { put(Schematic.class, (type, data) -> {
Object result = fieldOpt(Loadouts.class, data); Object result = fieldOpt(Loadouts.class, data);
if(result != null){ if(result != null){
@@ -6,6 +6,7 @@ import arc.math.*;
import arc.math.geom.*; import arc.math.geom.*;
import arc.struct.*; import arc.struct.*;
import arc.util.*; import arc.util.*;
import arc.util.io.*;
import mindustry.annotations.Annotations.*; import mindustry.annotations.Annotations.*;
import mindustry.content.*; import mindustry.content.*;
import mindustry.entities.units.*; import mindustry.entities.units.*;
@@ -183,5 +184,25 @@ public class Duct extends Block implements Autotiler{
next = front(); next = front();
nextc = next instanceof DuctBuild d ? d : null; nextc = next instanceof DuctBuild d ? d : null;
} }
@Override
public byte version(){
return 1;
}
@Override
public void write(Writes write){
super.write(write);
write.b(recDir);
}
@Override
public void read(Reads read, byte revision){
super.read(read, revision);
if(revision >= 1){
recDir = read.b();
}
current = items.first();
}
} }
} }
@@ -87,7 +87,7 @@ public class DuctRouter extends Block{
if(current == null) return null; if(current == null) return null;
for(int i = -1; i <= 1; i++){ for(int i = -1; i <= 1; i++){
Building other = nearby(Mathf.mod(rotation + i + cdump, 4)); Building other = nearby(Mathf.mod(rotation + (((i + cdump + 1) % 3) - 1), 4));
if(other != null && other.team == team && other.acceptItem(this, current)){ if(other != null && other.team == team && other.acceptItem(this, current)){
return other; return other;
} }
@@ -1,9 +1,11 @@
package mindustry.world.meta; package mindustry.world.meta;
import arc.struct.*;
import mindustry.*; import mindustry.*;
public class Attribute{ public class Attribute{
public static Attribute[] all = {}; public static Attribute[] all = {};
public static ObjectMap<String, Attribute> map = new ObjectMap<>();
public static final Attribute public static final Attribute
/** Heat content. Used for thermal generator yield. */ /** Heat content. Used for thermal generator yield. */
@@ -36,6 +38,11 @@ public class Attribute{
return name; return name;
} }
/** Never returns null, may throw an exception if not found. */
public static Attribute get(String name){
return map.getThrow(name, () -> new IllegalArgumentException("Unknown Attribute type: " + name));
}
/** Automatically registers this attribute for use. Do not call after mod init. */ /** Automatically registers this attribute for use. Do not call after mod init. */
public static Attribute add(String name){ public static Attribute add(String name){
Attribute a = new Attribute(all.length, name); Attribute a = new Attribute(all.length, name);
@@ -43,6 +50,7 @@ public class Attribute{
all = new Attribute[all.length + 1]; all = new Attribute[all.length + 1];
System.arraycopy(prev, 0, all, 0, a.id); System.arraycopy(prev, 0, all, 0, a.id);
all[a.id] = a; all[a.id] = a;
map.put(name, a);
return a; return a;
} }
} }
+1 -1
View File
@@ -9,4 +9,4 @@ kapt.use.worker.api=true
kapt.include.compile.classpath=false kapt.include.compile.classpath=false
# I don't need to use the kotlin stdlib yet, so remove it to prevent extra bloat & method count issues # I don't need to use the kotlin stdlib yet, so remove it to prevent extra bloat & method count issues
kotlin.stdlib.default.dependency=false kotlin.stdlib.default.dependency=false
archash=4afe8d1351e4b8dacd36a53e04fa8d75cda31ffc archash=ef9b29a8978e8f5e2fcba770bfebd210f4bc8117