Skip to content

Commit

Permalink
fix: Fix 1.20.6 port bugs
Browse files Browse the repository at this point in the history
  • Loading branch information
BlayTheNinth committed May 23, 2024
1 parent 15847b1 commit db22ca7
Show file tree
Hide file tree
Showing 7 changed files with 46 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import net.blay09.mods.waystones.api.WaystoneTypes;
import net.blay09.mods.waystones.api.error.WaystoneTeleportError;
import net.blay09.mods.waystones.block.WarpPlateBlock;
import net.blay09.mods.waystones.component.ModComponents;
import net.blay09.mods.waystones.config.WaystonesConfig;
import net.blay09.mods.waystones.core.*;
import net.blay09.mods.waystones.menu.WarpPlateMenu;
Expand All @@ -15,6 +16,7 @@
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.component.DataComponentMap;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.RegistryFriendlyByteBuf;
Expand All @@ -23,6 +25,7 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.util.Mth;
import net.minecraft.util.Unit;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.Nameable;
import net.minecraft.world.effect.MobEffectInstance;
Expand Down Expand Up @@ -77,6 +80,14 @@ protected ResourceLocation getWaystoneType() {
return WaystoneTypes.WARP_PLATE;
}

@Override
protected void collectImplicitComponents(DataComponentMap.Builder builder) {
super.collectImplicitComponents(builder);
if (isCompletedFirstAttunement()) {
builder.set(ModComponents.warpPlateCompletedFirstAttunement.get(), Unit.INSTANCE);
}
}

@Override
public void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) {
super.saveAdditional(tag, provider);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import net.minecraft.core.HolderLookup;
import net.minecraft.core.NonNullList;
import net.minecraft.core.RegistryAccess;
import net.minecraft.core.component.DataComponentMap;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtUtils;
import net.minecraft.nbt.Tag;
Expand Down Expand Up @@ -108,6 +109,11 @@ public void loadAdditional(CompoundTag compound, HolderLookup.Provider provider)
completedFirstAttunement = compound.getBoolean("CompletedFirstAttunement");
}

@Override
protected void collectImplicitComponents(DataComponentMap.Builder builder) {
builder.set(ModComponents.waystone.get(), waystone.isValid() ? waystone.getWaystoneUid() : waystoneUid);
}

@Override
public void writeUpdateTag(CompoundTag tag) {
tag.put("Waystone", WaystoneImpl.write(getWaystone(), new CompoundTag(), level.registryAccess()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import net.blay09.mods.waystones.api.WaystoneTypes;
import net.blay09.mods.waystones.client.gui.widget.ITooltipProvider;
import net.blay09.mods.waystones.client.gui.widget.WaystoneVisbilityButton;
import net.blay09.mods.waystones.core.WaystoneVisibilities;
import net.blay09.mods.waystones.menu.WaystoneMenu;
import net.blay09.mods.waystones.network.message.EditWaystoneMessage;
import net.minecraft.client.Minecraft;
Expand Down Expand Up @@ -65,7 +66,8 @@ public void init() {
setInitialFocus(textField);
}

visibilityButton = new WaystoneVisbilityButton(leftPos + 9, topPos + 8, oldVisibility, menu.getVisibilityOptions(), menu.canEdit());
final var visibilityOptions = WaystoneVisibilities.getVisibilityOptions(Minecraft.getInstance().player, waystone);
visibilityButton = new WaystoneVisbilityButton(leftPos + 9, topPos + 8, oldVisibility, visibilityOptions, menu.canEdit());
addRenderableWidget(visibilityButton);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package net.blay09.mods.waystones.core;

import net.blay09.mods.waystones.api.Waystone;
import net.blay09.mods.waystones.api.WaystoneVisibility;
import net.minecraft.world.entity.player.Player;

import java.util.ArrayList;
import java.util.List;

public class WaystoneVisibilities {
public static List<WaystoneVisibility> getVisibilityOptions(Player player, Waystone waystone) {
final var result = new ArrayList<WaystoneVisibility>();
final var baseVisibility = WaystoneVisibility.fromWaystoneType(waystone.getWaystoneType());
result.add(baseVisibility);
if (baseVisibility == WaystoneVisibility.ACTIVATION) {
if (WaystonePermissionManager.isAllowedVisibility(WaystoneVisibility.GLOBAL) || WaystonePermissionManager.skipsPermissions(player)) {
result.add(WaystoneVisibility.GLOBAL);
}
}
return result;
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package net.blay09.mods.waystones.menu;

import net.blay09.mods.waystones.api.Waystone;
import net.blay09.mods.waystones.api.WaystoneVisibility;
import net.blay09.mods.waystones.block.entity.WaystoneBlockEntityBase;
import net.blay09.mods.waystones.core.WaystoneImpl;
import net.blay09.mods.waystones.core.WaystonePermissionManager;
import net.minecraft.core.BlockPos;
import net.minecraft.network.RegistryFriendlyByteBuf;
import net.minecraft.network.codec.ByteBufCodecs;
Expand All @@ -16,9 +14,6 @@
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;

import java.util.ArrayList;
import java.util.List;

public class WaystoneMenu extends AbstractContainerMenu {

public record Data(BlockPos pos, Waystone waystone, boolean canEdit) {
Expand All @@ -33,15 +28,13 @@ public record Data(BlockPos pos, Waystone waystone, boolean canEdit) {
WaystoneMenu.Data::canEdit,
WaystoneMenu.Data::new);

private final Player player;
private final Waystone waystone;
private final WaystoneBlockEntityBase blockEntity;
private final ContainerData containerData;
private final boolean canEdit;

public WaystoneMenu(int windowId, Waystone waystone, WaystoneBlockEntityBase blockEntity, ContainerData containerData, Inventory playerInventory, boolean canEdit) {
super(ModMenus.waystoneSettings.get(), windowId);
this.player = playerInventory.player;
this.waystone = waystone;
this.blockEntity = blockEntity;
this.containerData = containerData;
Expand Down Expand Up @@ -117,18 +110,6 @@ public Waystone getWaystone() {
return waystone;
}

public List<WaystoneVisibility> getVisibilityOptions() {
final var result = new ArrayList<WaystoneVisibility>();
final var baseVisibility = WaystoneVisibility.fromWaystoneType(waystone.getWaystoneType());
result.add(baseVisibility);
if (baseVisibility == WaystoneVisibility.ACTIVATION) {
if (WaystonePermissionManager.isAllowedVisibility(WaystoneVisibility.GLOBAL) || WaystonePermissionManager.skipsPermissions(player)) {
result.add(WaystoneVisibility.GLOBAL);
}
}
return result;
}

public boolean canEdit() {
return canEdit;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import net.blay09.mods.waystones.api.WaystoneVisibility;
import net.blay09.mods.waystones.config.WaystonesConfig;
import net.blay09.mods.waystones.core.*;
import net.blay09.mods.waystones.menu.WaystoneMenu;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.chat.Component;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
Expand Down Expand Up @@ -49,14 +48,11 @@ public static void handle(ServerPlayer player, EditWaystoneMessage message) {
return;
}

if (!(player.containerMenu instanceof WaystoneMenu settingsMenu)) {
return;
}

var visibility = message.visibility;
if (!settingsMenu.getVisibilityOptions().contains(message.visibility)) {
final var visibilityOptions = WaystoneVisibilities.getVisibilityOptions(player, waystone);
if (!visibilityOptions.contains(message.visibility)) {
Waystones.logger.warn("{} tried to edit a waystone with an invalid visibility {}", player.getName().getString(), message.visibility);
visibility = settingsMenu.getVisibilityOptions().get(0);
visibility = visibilityOptions.getFirst();
}

if (!WaystonePermissionManager.isAllowedVisibility(visibility) && !WaystonePermissionManager.skipsPermissions(player)) {
Expand Down
2 changes: 1 addition & 1 deletion forge/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id 'multiloader-loader'
id 'net.minecraftforge.gradle' version '[6.0,6.2)'
id 'net.minecraftforge.gradle' version '[6.0.25,6.2)'
id 'org.spongepowered.mixin'
id 'net.darkhax.curseforgegradle'
id "com.modrinth.minotaur"
Expand Down

0 comments on commit db22ca7

Please sign in to comment.