diff --git a/README.md b/README.md index 100027a0d6..b2756d1ed1 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ See [CONTRIBUTING](CONTRIBUTING.md). Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). If you'd rather compile on your own, follow these instructions. -First, make sure you have [JDK 16](https://adoptopenjdk.net/archive.html?variant=openjdk16&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands: +First, make sure you have [JDK 16-17](https://adoptopenjdk.net/archive.html?variant=openjdk16&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands: ### Windows diff --git a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java index 3b859e3436..e01d0f15cb 100644 --- a/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java +++ b/annotations/src/main/java/mindustry/annotations/entity/EntityProcess.java @@ -878,7 +878,7 @@ public class EntityProcess extends BaseProcessor{ nullsBuilder.addField(FieldSpec.builder(type, Strings.camelize(baseName)).initializer("new " + className + "()").addModifiers(Modifier.FINAL, Modifier.STATIC, Modifier.PUBLIC).build()); - write(nullBuilder); + write(nullBuilder, imports.asArray()); } write(nullsBuilder); diff --git a/core/assets-raw/sprites/blocks/liquid/liquid-container-liquid.png b/core/assets-raw/sprites/blocks/liquid/liquid-container-liquid.png new file mode 100644 index 0000000000..435e380369 Binary files /dev/null and b/core/assets-raw/sprites/blocks/liquid/liquid-container-liquid.png differ diff --git a/core/src/mindustry/entities/comp/UnitComp.java b/core/src/mindustry/entities/comp/UnitComp.java index 7236f5618b..507a451dce 100644 --- a/core/src/mindustry/entities/comp/UnitComp.java +++ b/core/src/mindustry/entities/comp/UnitComp.java @@ -11,6 +11,7 @@ import arc.util.*; import mindustry.ai.*; import mindustry.ai.types.*; import mindustry.annotations.Annotations.*; +import mindustry.content.*; import mindustry.core.*; import mindustry.ctype.*; import mindustry.entities.*; @@ -41,7 +42,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I @Import WeaponMount[] mounts; private UnitController controller; - UnitType type; + UnitType type = UnitTypes.alpha; boolean spawnedByCore; double flag; diff --git a/core/src/mindustry/mod/ClassMap.java b/core/src/mindustry/mod/ClassMap.java index 54b5891ab1..9599378eb5 100644 --- a/core/src/mindustry/mod/ClassMap.java +++ b/core/src/mindustry/mod/ClassMap.java @@ -166,6 +166,7 @@ public class ClassMap{ classes.put("Bush", mindustry.world.blocks.environment.Bush.class); classes.put("Cliff", mindustry.world.blocks.environment.Cliff.class); classes.put("DoubleOverlayFloor", mindustry.world.blocks.environment.DoubleOverlayFloor.class); + classes.put("EmptyFloor", mindustry.world.blocks.environment.EmptyFloor.class); classes.put("Floor", mindustry.world.blocks.environment.Floor.class); classes.put("OreBlock", mindustry.world.blocks.environment.OreBlock.class); classes.put("OverlayFloor", mindustry.world.blocks.environment.OverlayFloor.class); @@ -221,17 +222,25 @@ public class ClassMap{ classes.put("BlockProducer", mindustry.world.blocks.payloads.BlockProducer.class); classes.put("BlockProducerBuild", mindustry.world.blocks.payloads.BlockProducer.BlockProducerBuild.class); classes.put("BuildPayload", mindustry.world.blocks.payloads.BuildPayload.class); + classes.put("Constructor", mindustry.world.blocks.payloads.Constructor.class); + classes.put("ConstructorBuild", mindustry.world.blocks.payloads.Constructor.ConstructorBuild.class); classes.put("NuclearWarhead", mindustry.world.blocks.payloads.NuclearWarhead.class); classes.put("NuclearWarheadBuild", mindustry.world.blocks.payloads.NuclearWarhead.NuclearWarheadBuild.class); classes.put("Payload", mindustry.world.blocks.payloads.Payload.class); classes.put("PayloadBlock", mindustry.world.blocks.payloads.PayloadBlock.class); classes.put("PayloadBlockBuild", mindustry.world.blocks.payloads.PayloadBlock.PayloadBlockBuild.class); + classes.put("PayloadDeconstructor", mindustry.world.blocks.payloads.PayloadDeconstructor.class); + classes.put("PayloadDeconstructorBuild", mindustry.world.blocks.payloads.PayloadDeconstructor.PayloadDeconstructorBuild.class); + classes.put("PayloadLoader", mindustry.world.blocks.payloads.PayloadLoader.class); + classes.put("PayloadLoaderBuild", mindustry.world.blocks.payloads.PayloadLoader.PayloadLoaderBuild.class); classes.put("PayloadMassDriver", mindustry.world.blocks.payloads.PayloadMassDriver.class); classes.put("PayloadDriverBuild", mindustry.world.blocks.payloads.PayloadMassDriver.PayloadDriverBuild.class); classes.put("PayloadDriverState", mindustry.world.blocks.payloads.PayloadMassDriver.PayloadDriverState.class); classes.put("PayloadMassDriverData", mindustry.world.blocks.payloads.PayloadMassDriver.PayloadMassDriverData.class); classes.put("PayloadSource", mindustry.world.blocks.payloads.PayloadSource.class); classes.put("PayloadSourceBuild", mindustry.world.blocks.payloads.PayloadSource.PayloadSourceBuild.class); + classes.put("PayloadUnloader", mindustry.world.blocks.payloads.PayloadUnloader.class); + classes.put("PayloadUnloaderBuild", mindustry.world.blocks.payloads.PayloadUnloader.PayloadUnloaderBuild.class); classes.put("PayloadVoid", mindustry.world.blocks.payloads.PayloadVoid.class); classes.put("PayloadVoidBuild", mindustry.world.blocks.payloads.PayloadVoid.PayloadVoidBuild.class); classes.put("UnitPayload", mindustry.world.blocks.payloads.UnitPayload.class); diff --git a/core/src/mindustry/mod/ContentParser.java b/core/src/mindustry/mod/ContentParser.java index b83af88097..2134b21fec 100644 --- a/core/src/mindustry/mod/ContentParser.java +++ b/core/src/mindustry/mod/ContentParser.java @@ -236,10 +236,11 @@ public class ContentParser{ Block block; if(locate(ContentType.block, name) != null){ - block = locate(ContentType.block, name); - if(value.has("type")){ - throw new IllegalArgumentException("When defining properties for an existing block, you must not re-declare its type. The original type will be used. Block: " + name); + Log.warn("Warning: '" + name + "' re-declares a type. This will be interpreted as a new block. If you wish to override a vanilla block, omit the 'type' section, as vanilla block `type`s cannot be changed."); + block = make(resolve(value.getString("type", ""), Block.class), mod + "-" + name); + }else{ + block = locate(ContentType.block, name); } }else{ block = make(resolve(value.getString("type", ""), Block.class), mod + "-" + name); @@ -746,15 +747,15 @@ public class ContentParser{ TechNode parent = TechTree.all.find(t -> t.content.name.equals(researchName) || t.content.name.equals(currentMod.name + "-" + researchName)); if(parent == null){ - throw new IllegalArgumentException("Content '" + researchName + "' isn't in the tech tree, but '" + unlock.name + "' requires it to be researched."); + Log.warn("Content '" + researchName + "' isn't in the tech tree, but '" + unlock.name + "' requires it to be researched."); + }else{ + //add this node to the parent + if(!parent.children.contains(node)){ + parent.children.add(node); + } + //reparent the node + node.parent = parent; } - - //add this node to the parent - if(!parent.children.contains(node)){ - parent.children.add(node); - } - //reparent the node - node.parent = parent; }); } } diff --git a/core/src/mindustry/world/blocks/payloads/PayloadBlock.java b/core/src/mindustry/world/blocks/payloads/PayloadBlock.java index a7885e76c7..012497107e 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadBlock.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadBlock.java @@ -25,6 +25,7 @@ public class PayloadBlock extends Block{ update = true; sync = true; + group = BlockGroup.payloads; envEnabled |= Env.space; } diff --git a/core/src/mindustry/world/meta/BlockGroup.java b/core/src/mindustry/world/meta/BlockGroup.java index d1e995887e..72a850d6c4 100644 --- a/core/src/mindustry/world/meta/BlockGroup.java +++ b/core/src/mindustry/world/meta/BlockGroup.java @@ -1,7 +1,7 @@ package mindustry.world.meta; public enum BlockGroup{ - none, walls(true), projectors(true), turrets(true), transportation(true), power, liquids(true), drills, units, logic(true); + none, walls(true), projectors(true), turrets(true), transportation(true), power, liquids(true), drills, units, logic(true), payloads(true); /** if true, any block in this category replaces any other block in this category. */ public final boolean anyReplace; diff --git a/servers_be.json b/servers_be.json index 8d93d2bf8f..6097ace2ae 100644 --- a/servers_be.json +++ b/servers_be.json @@ -3,7 +3,7 @@ "address": "be.mindustry.nydus.app:6567" }, { - "address": "46.105.36.238:7777" + "address": "0.baseduser.eu.org:7777" }, { "address": "v7.mindurka.tk:9999" diff --git a/servers_v7.json b/servers_v7.json index 9e3ad434d4..2e48a3cfef 100644 --- a/servers_v7.json +++ b/servers_v7.json @@ -1,7 +1,7 @@ [ { "name": "mindustry.pl", - "address": ["46.105.36.238:6000", "46.105.36.238:6666", "46.105.36.238:6966"] + "address": ["0.baseduser.eu.org:6000", "0.baseduser.eu.org:6666", "0.baseduser.eu.org:6966"] }, { "name": "C.A.M.S.",