Skip to content

Commit f641efc

Browse files
authored
Merge pull request #771 from FTBTeam/1.20.1/dev
1.20.1/dev
2 parents c928d81 + fb26b0d commit f641efc

File tree

5 files changed

+26
-9
lines changed

5 files changed

+26
-9
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
66

77
## [2001.4.12]
88

9+
### Added
10+
* Added new "Drop FTB Quests Book on Death" setting in quest book properties (default false, as before)
11+
912
### Fixed
1013
* Fixed `/ftbquests import_reward_table_from_chest` command not correctly updating quest book id mappings for new reward table
1114
* Fixed some quest button alignment issues depending on the zoom level of the quest panel* Fixed autoclaim rewards being given to entire team even when marked as team reward

common/src/main/java/dev/ftb/mods/ftbquests/FTBQuestsEventHandler.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -192,11 +192,14 @@ private void cloned(ServerPlayer oldPlayer, ServerPlayer newPlayer, boolean wonG
192192
return;
193193
}
194194

195-
for (int i = 0; i < oldPlayer.getInventory().items.size(); i++) {
196-
ItemStack stack = oldPlayer.getInventory().items.get(i);
195+
if (!ServerQuestFile.INSTANCE.dropBookOnDeath()) {
196+
for (int i = 0; i < oldPlayer.getInventory().items.size(); i++) {
197+
ItemStack stack = oldPlayer.getInventory().items.get(i);
197198

198-
if (stack.getItem() == FTBQuestsItems.BOOK.get() && newPlayer.addItem(stack)) {
199-
oldPlayer.getInventory().items.set(i, ItemStack.EMPTY);
199+
if (stack.getItem() == FTBQuestsItems.BOOK.get() && newPlayer.addItem(stack)) {
200+
oldPlayer.getInventory().items.set(i, ItemStack.EMPTY);
201+
202+
}
200203
}
201204
}
202205
}

common/src/main/java/dev/ftb/mods/ftbquests/quest/BaseQuestFile.java

+11
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public abstract class BaseQuestFile extends QuestObject implements QuestFile {
8484
protected String lockMessage;
8585
private ProgressionMode progressionMode;
8686
private int detectionDelay;
87+
private boolean dropBookOnDeath;
8788

8889
private List<Task> allTasks;
8990
private List<Task> submitTasks;
@@ -122,6 +123,7 @@ public BaseQuestFile() {
122123
lockMessage = "";
123124
progressionMode = ProgressionMode.LINEAR;
124125
detectionDelay = 20;
126+
dropBookOnDeath = false;
125127

126128
allTasks = null;
127129
}
@@ -400,6 +402,7 @@ public final void writeData(CompoundTag nbt) {
400402
nbt.putString("lock_message", lockMessage);
401403
nbt.putString("progression_mode", progressionMode.getId());
402404
nbt.putInt("detection_delay", detectionDelay);
405+
nbt.putBoolean("drop_book_on_death", dropBookOnDeath);
403406
}
404407

405408
@Override
@@ -442,6 +445,7 @@ public final void readData(CompoundTag nbt) {
442445
if (nbt.contains("detection_delay")) {
443446
detectionDelay = nbt.getInt("detection_delay");
444447
}
448+
dropBookOnDeath = nbt.getBoolean("drop_book_on_death");
445449
}
446450

447451
public final void writeDataFull(Path folder) {
@@ -751,6 +755,7 @@ public final void writeNetData(FriendlyByteBuf buffer) {
751755
buffer.writeUtf(lockMessage, Short.MAX_VALUE);
752756
ProgressionMode.NAME_MAP_NO_DEFAULT.write(buffer, progressionMode);
753757
buffer.writeVarInt(detectionDelay);
758+
buffer.writeBoolean(dropBookOnDeath);
754759
}
755760

756761
@Override
@@ -771,6 +776,7 @@ public final void readNetData(FriendlyByteBuf buffer) {
771776
lockMessage = buffer.readUtf(Short.MAX_VALUE);
772777
progressionMode = ProgressionMode.NAME_MAP_NO_DEFAULT.read(buffer);
773778
detectionDelay = buffer.readVarInt();
779+
dropBookOnDeath = buffer.readBoolean();
774780
}
775781

776782
public final void writeNetDataFull(FriendlyByteBuf buffer) {
@@ -1046,6 +1052,7 @@ public void fillConfigGroup(ConfigGroup config) {
10461052
config.addEnum("progression_mode", progressionMode, v -> progressionMode = v, ProgressionMode.NAME_MAP_NO_DEFAULT);
10471053
config.addInt("detection_delay", detectionDelay, v -> detectionDelay = v, 20, 0, 200);
10481054
config.addBool("pause_game", pauseGame, v -> pauseGame = v, false);
1055+
config.addBool("drop_book_on_death", dropBookOnDeath, v -> dropBookOnDeath = v, true);
10491056

10501057
ConfigGroup defaultsGroup = config.getOrCreateSubgroup("defaults");
10511058
defaultsGroup.addBool("reward_team", defaultPerTeamReward, v -> defaultPerTeamReward = v, false);
@@ -1434,4 +1441,8 @@ public boolean moveChapterGroup(long id, boolean movingUp) {
14341441
public EntityWeight getLootCrateNoDrop() {
14351442
return lootCrateNoDrop;
14361443
}
1444+
1445+
public boolean dropBookOnDeath() {
1446+
return dropBookOnDeath;
1447+
}
14371448
}

common/src/main/resources/assets/ftbquests/lang/en_us.json

+1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@
110110
"ftbquests.file.pause_game": "Quest Screen Pauses SSP Game",
111111
"ftbquests.file.pause_game.tooltip": "Does not apply to multiplayer games",
112112
"ftbquests.file.detection_delay": "Item Auto-Detection Minimum Interval",
113+
"ftbquests.file.drop_book_on_death": "Drop FTB Quests Book on Death",
113114
"ftbquests.file.detection_delay.tooltip": "Minimum interval (in ticks) between checks of a player's inventory when it changes\nHigher values are kinder on server TPS, especially if players inventories change frequently, but mean longer delays for quest auto-completion messages.",
114115
"ftbquests.chapter.misc.progression_mode": "Default 'Progression Mode'",
115116
"ftbquests.chapter.misc.default_repeatable": "Default 'Repeatable Quest'",

forge/src/main/java/dev/ftb/mods/ftbquests/forge/FTBQuestsForge.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,10 @@ private static void livingDrops(LivingDropsEvent event) {
7878
}
7979

8080
private static void dropsEvent(LivingDropsEvent event) {
81-
if (!(event.getEntity() instanceof ServerPlayer player)) {
82-
return;
83-
}
84-
85-
if (player instanceof FakePlayer || player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)) {
81+
if (!(event.getEntity() instanceof ServerPlayer player)
82+
|| player instanceof FakePlayer
83+
|| player.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY)
84+
|| ServerQuestFile.INSTANCE.dropBookOnDeath()) {
8685
return;
8786
}
8887

0 commit comments

Comments
 (0)