Skip to content

Commit

Permalink
Merge pull request #733 from FTBTeam/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
desht committed Jun 17, 2024
2 parents 157ccd5 + ea91406 commit a3c049b
Show file tree
Hide file tree
Showing 208 changed files with 3,681 additions and 3,317 deletions.
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ jobs:
with:
curse-publish-task: ""
maven-snapshots: true
java-version: 21
secrets:
ftb-maven-token: ${{ secrets.FTB_MAVEN_TOKEN }}
saps-token: ${{ secrets.SAPS_TOKEN }}
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ jobs:
uses: FTBTeam/mods-meta/.github/workflows/standard-release.yml@main
with:
curse-publish-task: curseforge
java-version: 21
secrets:
ftb-maven-token: ${{ secrets.FTB_MAVEN_TOKEN }}
saps-token: ${{ secrets.SAPS_TOKEN }}
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

# [2006.1.0]

### Changed
* Ported to Minecraft 1.20.6. Support for Fabric and NeoForge.
* Forge support may be re-added if/when Architectury adds support for Forge
* The way translations are handled has changed significantly in this release
* Translation text is now stored separately from other quest data, under the `lang/` folder with the quest book folder hierarchy, in a file named after the locale, e.g. `lang/en_us.snbt`
* This should make it easier to produce translations in the future, since all text is located in one place.
* Editing language can be overridden via client preference; default is to use whatever Minecraft language is in force. When text is edited in-game, it's stored in the appropriate language file based in the active editing locale.
* Text which doesn't have a translation in the current locale (but does in the `en_us` locale) is highlighted when in edit mode.

# [2004.2.1]

### Added
Expand Down
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id "architectury-plugin" version "3.4-SNAPSHOT"
id "dev.architectury.loom" version "1.5-SNAPSHOT" apply false
id "dev.architectury.loom" version "1.6-SNAPSHOT" apply false
id "com.matthewprenger.cursegradle" version "1.4.0" apply false
}

Expand Down Expand Up @@ -35,7 +35,7 @@ allprojects {
// needs to be done AFTER version is set
apply from: "https://raw.githubusercontent.com/FTBTeam/mods-meta/main/gradle/publishing.gradle"

sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = 17
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = 21

compileJava {
options.encoding = "UTF-8"
Expand Down
2 changes: 1 addition & 1 deletion common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ dependencies {
}

architectury {
common("forge", "fabric", "neoforge")
common(/*"forge", */ "fabric", "neoforge")
}

publishing {
Expand Down
16 changes: 12 additions & 4 deletions common/src/main/java/dev/ftb/mods/ftbquests/FTBQuests.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@
import dev.ftb.mods.ftbquests.client.FTBQClientProxy;
import dev.ftb.mods.ftbquests.client.FTBQuestsClient;
import dev.ftb.mods.ftbquests.integration.RecipeModHelper;
import dev.ftb.mods.ftbquests.integration.item_filtering.DisplayStacksCache;
import dev.ftb.mods.ftbquests.net.ClearDisplayCacheMessage;
import dev.ftb.mods.ftbquests.net.FTBQuestsNetHandler;
import dev.ftb.mods.ftbquests.quest.reward.RewardTypes;
import dev.ftb.mods.ftbquests.quest.task.TaskTypes;
import net.minecraft.gametest.framework.GameTestServer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.core.component.DataComponentType;
import net.minecraft.server.packs.PackType;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.server.packs.resources.ResourceManagerReloadListener;
import net.minecraft.world.item.ItemStack;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.util.Objects;
import java.util.Optional;
import java.util.function.Supplier;

public class FTBQuests {
public static final Logger LOGGER = LogManager.getLogger(FTBQuestsAPI.MOD_NAME);
Expand Down Expand Up @@ -69,4 +69,12 @@ public void onResourceManagerReload(ResourceManager resourceManager) {
ClearDisplayCacheMessage.clearForAll(GameInstance.getServer());
}
}

public static <T> Optional<T> getComponent(ItemStack stack, Supplier<DataComponentType<T>> componentType) {
return Optional.ofNullable(stack.get(componentType.get()));
}

public static <T> Optional<T> getComponent(ItemStack stack, DataComponentType<T> componentType) {
return Optional.ofNullable(stack.get(componentType));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
import dev.architectury.event.EventResult;
import dev.architectury.event.events.common.*;
import dev.architectury.hooks.level.entity.PlayerHooks;
import dev.ftb.mods.ftbquests.block.FTBQuestsBlocks;
import dev.ftb.mods.ftbquests.block.entity.FTBQuestsBlockEntities;
import dev.ftb.mods.ftbquests.command.FTBQuestsCommands;
import dev.ftb.mods.ftbquests.events.ClearFileCacheEvent;
import dev.ftb.mods.ftbquests.item.FTBQuestsItems;
import dev.ftb.mods.ftbquests.quest.BaseQuestFile;
import dev.ftb.mods.ftbquests.quest.ServerQuestFile;
import dev.ftb.mods.ftbquests.quest.TeamData;
import dev.ftb.mods.ftbquests.quest.task.DimensionTask;
import dev.ftb.mods.ftbquests.quest.task.KillTask;
import dev.ftb.mods.ftbquests.quest.task.Task;
import dev.ftb.mods.ftbquests.registry.ModBlockEntityTypes;
import dev.ftb.mods.ftbquests.registry.ModBlocks;
import dev.ftb.mods.ftbquests.registry.ModDataComponents;
import dev.ftb.mods.ftbquests.registry.ModItems;
import dev.ftb.mods.ftbquests.util.DeferredInventoryDetection;
import dev.ftb.mods.ftbquests.util.FTBQuestsInventoryListener;
import dev.ftb.mods.ftbteams.api.event.PlayerChangedTeamEvent;
Expand Down Expand Up @@ -52,9 +53,10 @@ void init() {
LifecycleEvent.SERVER_STARTED.register(this::serverStarted);
LifecycleEvent.SERVER_STOPPING.register(this::serverStopped);
LifecycleEvent.SERVER_LEVEL_SAVE.register(this::worldSaved);
FTBQuestsBlocks.register();
FTBQuestsItems.register();
FTBQuestsBlockEntities.register();
ModBlocks.register();
ModItems.register();
ModDataComponents.register();
ModBlockEntityTypes.register();
ClearFileCacheEvent.EVENT.register(this::fileCacheClear);
TeamEvent.PLAYER_LOGGED_IN.register(this::playerLoggedIn);
TeamEvent.CREATED.register(this::teamCreated);
Expand Down Expand Up @@ -195,7 +197,7 @@ private void cloned(ServerPlayer oldPlayer, ServerPlayer newPlayer, boolean wonG
for (int i = 0; i < oldPlayer.getInventory().items.size(); i++) {
ItemStack stack = oldPlayer.getInventory().items.get(i);

if (stack.getItem() == FTBQuestsItems.BOOK.get() && newPlayer.addItem(stack)) {
if (stack.getItem() == ModItems.BOOK.get() && newPlayer.addItem(stack)) {
oldPlayer.getInventory().items.set(i, ItemStack.EMPTY);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.mojang.serialization.MapCodec;
import dev.ftb.mods.ftbquests.block.entity.DetectorBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.component.DataComponents;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
Expand Down Expand Up @@ -62,7 +63,7 @@ public void neighborChanged(BlockState blockState, Level level, BlockPos blockPo
public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity entity, ItemStack stack) {
super.setPlacedBy(level, pos, state, entity, stack);

if (!level.isClientSide() && stack.hasCustomHoverName() && level.getBlockEntity(pos) instanceof DetectorBlockEntity dbe) {
if (!level.isClientSide() && stack.has(DataComponents.CUSTOM_NAME) && level.getBlockEntity(pos) instanceof DetectorBlockEntity dbe) {
dbe.update(stack.getHoverName().getString());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import dev.ftb.mods.ftbquests.block.entity.LootCrateOpenerBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
Expand Down Expand Up @@ -50,7 +49,7 @@ public RenderShape getRenderShape(BlockState state) {
}

@Override
public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) {
protected InteractionResult useWithoutItem(BlockState blockState, Level level, BlockPos blockPos, Player player, BlockHitResult blockHitResult) {
if (!level.isClientSide) {
if (level.getBlockEntity(blockPos) instanceof LootCrateOpenerBlockEntity opener) {
player.displayClientMessage(Component.translatable("block.ftbquests.loot_crate_opener.rightclick", opener.getOutputCount()), true);
Expand All @@ -68,5 +67,4 @@ public void setPlacedBy(Level level, BlockPos blockPos, BlockState blockState, @
opener.setOwner(livingEntity.getUUID());
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import net.fabricmc.api.Environment;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.component.DataComponents;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
Expand Down Expand Up @@ -44,7 +45,7 @@ public class QuestBarrierBlock extends BaseEntityBlock {
.lightLevel(blockState -> 3)
.emissiveRendering((blockState, blockGetter, blockPos) -> true);

protected QuestBarrierBlock(Properties props) {
public QuestBarrierBlock(Properties props) {
super(props);

registerDefaultState(defaultBlockState().setValue(OPEN, false));
Expand Down Expand Up @@ -102,7 +103,7 @@ public boolean skipRendering(BlockState state, BlockState state2, Direction dir)
public void setPlacedBy(Level level, BlockPos pos, BlockState state, @Nullable LivingEntity entity, ItemStack stack) {
super.setPlacedBy(level, pos, state, entity, stack);

if (!level.isClientSide() && stack.hasCustomHoverName() && level.getBlockEntity(pos) instanceof BarrierBlockEntity barrier) {
if (!level.isClientSide() && stack.has(DataComponents.CUSTOM_NAME) && level.getBlockEntity(pos) instanceof BarrierBlockEntity barrier) {
barrier.update(stack.getHoverName().getString());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
public class StageBarrierBlock extends QuestBarrierBlock {
private static final MapCodec<StageBarrierBlock> CODEC = simpleCodec(StageBarrierBlock::new);

protected StageBarrierBlock(Properties props) {
public StageBarrierBlock(Properties props) {
super(props);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,33 @@
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import dev.architectury.injectables.annotations.ExpectPlatform;
import dev.architectury.networking.NetworkManager;
import dev.ftb.mods.ftbquests.block.entity.ITaskScreen;
import dev.ftb.mods.ftbquests.block.entity.TaskScreenAuxBlockEntity;
import dev.ftb.mods.ftbquests.block.entity.TaskScreenBlockEntity;
import dev.ftb.mods.ftbquests.client.FTBQuestsClient;
import dev.ftb.mods.ftbquests.item.ScreenBlockItem;
import dev.ftb.mods.ftbquests.net.TaskScreenConfigRequest;
import dev.ftb.mods.ftbquests.net.TaskScreenConfigRequestMessage;
import dev.ftb.mods.ftbquests.quest.BaseQuestFile;
import dev.ftb.mods.ftbquests.quest.ServerQuestFile;
import dev.ftb.mods.ftbquests.quest.task.Task;
import dev.ftb.mods.ftbquests.registry.ModBlocks;
import dev.ftb.mods.ftbteams.api.FTBTeamsAPI;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.component.DataComponents;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.component.CustomData;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
Expand All @@ -40,12 +43,11 @@
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.level.levelgen.structure.BoundingBox;
import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.Nullable;

import java.util.List;
import java.util.Objects;

public class TaskScreenBlock extends BaseEntityBlock {
private static final MapCodec<TaskScreenBlock> CODEC = RecordCodecBuilder.mapCodec(instance ->
Expand All @@ -59,7 +61,7 @@ public class TaskScreenBlock extends BaseEntityBlock {

private final int size;

protected TaskScreenBlock(Properties props, int size) {
public TaskScreenBlock(Properties props, int size) {
super(props);
this.size = size;

Expand Down Expand Up @@ -132,7 +134,7 @@ public void setPlacedBy(Level level, BlockPos blockPos, BlockState blockState, @
}

Direction facing = blockState.getValue(FACING);
BlockState auxState = FTBQuestsBlocks.AUX_SCREEN.get().defaultBlockState().setValue(FACING, facing);
BlockState auxState = ModBlocks.AUX_SCREEN.get().defaultBlockState().setValue(FACING, facing);
BlockPos.betweenClosedStream(getMultiblockBounds(blockPos, getSize(), facing))
.filter(pos -> !pos.equals(blockPos))
.forEach(auxPos -> {
Expand Down Expand Up @@ -168,10 +170,11 @@ public float getDestroyProgress(BlockState blockState, Player player, BlockGette
}

@Override
public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) {
protected InteractionResult useWithoutItem(BlockState blockState, Level level, BlockPos blockPos, Player player, BlockHitResult blockHitResult) {
if (player instanceof ServerPlayer sp && level.getBlockEntity(blockPos) instanceof ITaskScreen taskScreen) {
if (hasPermissionToEdit(sp, taskScreen)) {
taskScreen.getCoreScreen().ifPresent(coreScreen -> new TaskScreenConfigRequest(coreScreen.getBlockPos()).sendTo(sp));
taskScreen.getCoreScreen().ifPresent(coreScreen ->
NetworkManager.sendToPlayer(sp, new TaskScreenConfigRequestMessage(coreScreen.getBlockPos())));
} else {
sp.displayClientMessage(Component.translatable("block.ftbquests.screen.no_permission").withStyle(ChatFormatting.RED), true);
return InteractionResult.FAIL;
Expand All @@ -181,11 +184,12 @@ public InteractionResult use(BlockState blockState, Level level, BlockPos blockP
}

@Override
public void appendHoverText(ItemStack itemStack, @Nullable BlockGetter blockGetter, List<Component> list, TooltipFlag tooltipFlag) {
super.appendHoverText(itemStack, blockGetter, list, tooltipFlag);
public void appendHoverText(ItemStack itemStack, Item.TooltipContext context, List<Component> list, TooltipFlag tooltipFlag) {
super.appendHoverText(itemStack, context, list, tooltipFlag);

if (itemStack.getTag() != null && itemStack.getTag().contains("BlockEntityTag", Tag.TAG_COMPOUND)) {
CompoundTag subTag = Objects.requireNonNull(itemStack.getTagElement("BlockEntityTag"));
CustomData data = itemStack.get(DataComponents.BLOCK_ENTITY_DATA);
if (data != null) {
CompoundTag subTag = data.copyTag();
BaseQuestFile questFile = FTBQuestsClient.getClientQuestFile();
if (questFile != null) {
Task task = questFile.getTask(subTag.getLong("TaskID"));
Expand Down Expand Up @@ -218,22 +222,21 @@ public static boolean hasPermissionToEdit(ServerPlayer player, ITaskScreen scree
* @param facing the side the display screen is on
* @return the bounding box containing all blocks of the multiblock
*/
public static AABB getMultiblockBounds(BlockPos corePos, int size, Direction facing) {
if (size == 1) return new AABB(corePos);
public static BoundingBox getMultiblockBounds(BlockPos corePos, int size, Direction facing) {
if (size == 1) return new BoundingBox(corePos);

int size2 = size / 2;
facing = facing.getCounterClockWise();

return new AABB(
corePos.getX() - size2 * facing.getStepX(), corePos.getY(), corePos.getZ() - size2 * facing.getStepZ(),
corePos.getX() + size2 * facing.getStepX(), corePos.getY() + size - 1, corePos.getZ() + size2 * facing.getStepZ()
);
BlockPos pos1 = new BlockPos(corePos.getX() - size2 * facing.getStepX(), corePos.getY(), corePos.getZ() - size2 * facing.getStepZ());
BlockPos pos2 = new BlockPos(corePos.getX() + size2 * facing.getStepX(), corePos.getY() + size - 1, corePos.getZ() + size2 * facing.getStepZ());
return BoundingBox.fromCorners(pos1, pos2);
}

public static class Aux extends TaskScreenBlock {
private static final MapCodec<Aux> CODEC = simpleCodec(Aux::new);

protected Aux(Properties props) {
public Aux(Properties props) {
super(props, 0);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
import dev.ftb.mods.ftbquests.quest.QuestObjectBase;
import dev.ftb.mods.ftbquests.quest.ServerQuestFile;
import dev.ftb.mods.ftbquests.quest.TeamData;
import dev.ftb.mods.ftbquests.registry.ModBlockEntityTypes;
import dev.ftb.mods.ftbquests.util.ProgressChange;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.Level;
Expand All @@ -18,19 +20,19 @@ public class DetectorBlockEntity extends BlockEntity {
private int radius = 8;

public DetectorBlockEntity(BlockPos blockPos, BlockState blockState) {
super(FTBQuestsBlockEntities.DETECTOR.get(), blockPos, blockState);
super(ModBlockEntityTypes.DETECTOR.get(), blockPos, blockState);
}

@Override
public void load(CompoundTag tag) {
super.load(tag);
public void loadAdditional(CompoundTag tag, HolderLookup.Provider provider) {
super.loadAdditional(tag, provider);

objectId = QuestObjectBase.parseCodeString(tag.getString("Object"));
radius = tag.getInt("Radius");
}

@Override
public void saveAdditional(CompoundTag tag) {
public void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) {
tag.putString("Object", QuestObjectBase.getCodeString(objectId));
tag.putInt("Radius", radius);
}
Expand All @@ -49,7 +51,7 @@ public void onPowered(Level level, BlockPos pos) {
AABB box = new AABB(pos).inflate(radius);
for (ServerPlayer player : level.getEntitiesOfClass(ServerPlayer.class, box, DetectorBlockEntity::isRealPlayer)) {
TeamData data = ServerQuestFile.INSTANCE.getOrCreateTeamData(player);
qo.forceProgressRaw(data, new ProgressChange(ServerQuestFile.INSTANCE, qo, player.getUUID()).setReset(false).withNotifications());
qo.forceProgressRaw(data, new ProgressChange(qo, player.getUUID()).setReset(false).withNotifications());
}
}
}
Expand Down
Loading

0 comments on commit a3c049b

Please sign in to comment.