Spawn control

- Cart Contraptions with attached Spawners can no longer be picked up with a wrench (configurable)
This commit is contained in:
reidbhuntley 2021-06-18 17:34:39 -04:00
parent bc2b5169c8
commit ecfa554c05
20 changed files with 74 additions and 52 deletions

View file

@ -408,20 +408,20 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json
c71f5246d2cb8e9913d1552d23fcc82c43cde7a0 assets/create/lang/en_ud.json
902ca1904553a96445e4defd5a98e731803c3c8b assets/create/lang/en_us.json
c50d86ae82e9ff2aae4343ba04a500b39a80cdfe assets/create/lang/unfinished/de_de.json
e5dd53df8175a4c6eabfc7cefb154fd561e6b9b4 assets/create/lang/unfinished/es_es.json
fe7f791502163b2a0926ba419a498b248f698721 assets/create/lang/unfinished/es_mx.json
cf40087ddd20d942c966bccfab98119c833ccbc5 assets/create/lang/unfinished/fr_fr.json
32a09af53c8648d0973edda6f68add0cf26c9125 assets/create/lang/unfinished/it_it.json
386c07ecf2ee25aae7a200d3dd769230c2dda153 assets/create/lang/unfinished/ja_jp.json
053eaf939c2b335333e59c0012dfb93631702edd assets/create/lang/unfinished/ko_kr.json
b34828b5cc1c758abaf9a2ac7b7093d61835a3fe assets/create/lang/unfinished/nl_nl.json
4187feb7f6edb5557310731104a5ad8b3fa3554a assets/create/lang/unfinished/pl_pl.json
97eb911223452db36aea56313f120e1e30e37fa6 assets/create/lang/unfinished/pt_br.json
22473d1767b07aa892c6716f3e21191800c07b34 assets/create/lang/unfinished/ru_ru.json
9b74abf763c2a9e1b626a35105e273aee1254cfa assets/create/lang/unfinished/zh_cn.json
3f640da7f2796441a33e436b50d74d86bac1043f assets/create/lang/unfinished/zh_tw.json
ecb2b14e09668bb04ead075b25751af4d47d530a assets/create/lang/en_us.json
32a311fee8bea2504ec80f4ecfabf64afc994109 assets/create/lang/unfinished/de_de.json
af669cb92010605ebb73ea48bad9215e8efa216b assets/create/lang/unfinished/es_es.json
23dce1fd449f6e0e747c10508f9551edb3912a69 assets/create/lang/unfinished/es_mx.json
461155a3e7555df12d07748e7b8c7ca137f2ce69 assets/create/lang/unfinished/fr_fr.json
9cb68aeeeb220466ec4766ac7fd4adc4a28a14ee assets/create/lang/unfinished/it_it.json
1a287c031e3a9cd370e61b8912a2d1f39273b051 assets/create/lang/unfinished/ja_jp.json
0eaa7a9f39f3cd8be5b88e61992cf3198b76689d assets/create/lang/unfinished/ko_kr.json
db87b45eff6bd38dd1774510fa54429c47c194b9 assets/create/lang/unfinished/nl_nl.json
4c90c5055d090adc5765e8ab80f73f7e22185151 assets/create/lang/unfinished/pl_pl.json
bf04fa57b3e3efee8c6989b69f98fb374c8eff86 assets/create/lang/unfinished/pt_br.json
c8f9159b77f8176c994fb008d9b57f9154f48c6d assets/create/lang/unfinished/ru_ru.json
9f55faa2273c7493fe66aa7d369bfdd6edcb2a3f assets/create/lang/unfinished/zh_cn.json
9333985168408e58aa76f9c865b2c5fad4691527 assets/create/lang/unfinished/zh_tw.json
487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json
b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json
3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -1654,7 +1654,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
6490fa0587db770cf7c794b47f3bcd2b691f4226 assets/create/sounds.json
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json

View file

@ -1155,6 +1155,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1770,7 +1771,6 @@
"create.ponder.fan_source.text_2": "When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "",
"create.ponder.fluid_pipe_interaction.header": "Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "レッドストーン信号を受けると、回転力が生成されます",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "Ta maszyna w wagoniku jest zbyt duża, aby ją podnieść",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "Po zasileniu, wiatraki zaczną przesyłać siłę do przylegających komponentów",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "Время тика",
"create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "这一矿车装置似乎太大了,无法变为拾捡状态",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -1156,6 +1156,7 @@
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "這個礦車結構太大了而無法撿取",
"create.contraption.minecart_contraption_illegal_pickup": "UNLOCALIZED: A mystical force is binding this Cart Contraption to the world",
"_": "->------------------------] Subtitles [------------------------<-",
@ -1771,7 +1772,6 @@
"create.ponder.fan_source.text_2": "當鼓風機接受紅石訊號後,它便會向外供給動能",
"create.ponder.fluid_pipe_flow.header": "UNLOCALIZED: Moving Fluids using Copper Pipes",
"create.ponder.fluid_pipe_flow.text_1": "UNLOCALIZED: ",
"create.ponder.fluid_pipe_interaction.header": "UNLOCALIZED: Draining and Filling fluid containers",

View file

@ -28,8 +28,8 @@
"trigger": "create:bracket_apply",
"conditions": {
"accepted_entries": [
"create:cogwheel",
"create:large_cogwheel"
"create:large_cogwheel",
"create:cogwheel"
]
}
},

View file

@ -32,6 +32,8 @@ import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.CKinetics;
import net.minecraft.block.AbstractPressurePlateBlock;
import net.minecraft.block.AbstractRailBlock;
import net.minecraft.block.AbstractSignBlock;
@ -195,7 +197,8 @@ public class BlockMovementChecks {
return false;
if (state.getBlock().getTags().contains(NON_MOVABLE))
return false;
if (!AllConfigs.SERVER.kinetics.movableSpawners.get() && block instanceof SpawnerBlock)
if (AllConfigs.SERVER.kinetics.spawnerMovement.get() == CKinetics.SpawnerMovementSetting.UNMOVABLE
&& block instanceof SpawnerBlock)
return false;
// Move controllers only when they aren't moving

View file

@ -12,12 +12,15 @@ import com.simibubi.create.AllItems;
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity;
import com.simibubi.create.foundation.config.AllConfigs;
import com.simibubi.create.foundation.config.CKinetics;
import com.simibubi.create.foundation.utility.Lang;
import com.simibubi.create.foundation.utility.NBTHelper;
import net.minecraft.block.AbstractRailBlock;
import net.minecraft.block.BlockState;
import net.minecraft.block.DispenserBlock;
import net.minecraft.block.SpawnerBlock;
import net.minecraft.block.material.Material;
import net.minecraft.dispenser.DefaultDispenseItemBehavior;
import net.minecraft.dispenser.IBlockSource;
@ -218,6 +221,16 @@ public class MinecartContraptionItem extends Item {
return;
OrientedContraptionEntity contraption = (OrientedContraptionEntity) passengers.get(0);
if (AllConfigs.SERVER.kinetics.spawnerMovement.get() == CKinetics.SpawnerMovementSetting.NO_PICKUP) {
Contraption blocks = contraption.getContraption();
if (blocks != null && blocks.getBlocks().values().stream()
.anyMatch(i -> i.state.getBlock() instanceof SpawnerBlock)) {
player.sendStatusMessage(Lang.translate("contraption.minecart_contraption_illegal_pickup")
.formatted(TextFormatting.RED), true);
return;
}
}
if (event.getWorld().isRemote) {
event.setCancellationResult(ActionResultType.SUCCESS);
event.setCanceled(true);

View file

@ -33,7 +33,8 @@ public class CKinetics extends ConfigBase {
public ConfigInt maxPistonPoles = i(64, 1, "maxPistonPoles", Comments.maxPistonPoles);
public ConfigInt maxRopeLength = i(128, 1, "maxRopeLength", Comments.maxRopeLength);
public ConfigInt maxCartCouplingLength = i(32, 1, "maxCartCouplingLength", Comments.maxCartCouplingLength);
public ConfigBool movableSpawners = b(true, "movableSpawners", Comments.movableSpawners);
public ConfigEnum<SpawnerMovementSetting> spawnerMovement =
e(SpawnerMovementSetting.NO_PICKUP, "movableSpawners", Comments.spawnerMovement);
public CStress stressValues = nested(1, CStress::new, Comments.stress);
@ -93,11 +94,15 @@ public class CKinetics extends ConfigBase {
static String maxEjectorDistance = "Max Distance in blocks a Weighted Ejector can throw";
static String ejectorScanInterval =
"Time in ticks until the next item launched by an ejector scans blocks for potential collisions";
static String movableSpawners = "When true, allows Spawner blocks to be moved by contraptions.";
static String spawnerMovement = "Configure how Spawner blocks can be moved by contraptions.";
}
public enum DeployerAggroSetting {
ALL, CREEPERS, NONE
}
public enum SpawnerMovementSetting {
MOVABLE, NO_PICKUP, UNMOVABLE
}
}

View file

@ -511,6 +511,7 @@
"create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start <tickTime> to artificially slow down the server tick",
"create.command.killTPSCommand.argument.tickTime": "tickTime",
"create.contraption.minecart_contraption_too_big": "This Cart Contraption seems too big to pick up"
"create.contraption.minecart_contraption_too_big": "This Cart Contraption seems too big to pick up",
"create.contraption.minecart_contraption_illegal_pickup": "A mystical force is binding this Cart Contraption to the world"
}