Skip to content

Commit e086960

Browse files
authored
Fix Issues with Filter Label and MTE Owner Overloads (#2613)
1 parent 18672ff commit e086960

3 files changed

Lines changed: 32 additions & 27 deletions

File tree

src/main/java/gregtech/api/metatileentity/MetaTileEntity.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import gregtech.api.util.Mods;
3636
import gregtech.client.renderer.texture.Textures;
3737
import gregtech.client.utils.BloomEffectUtil;
38+
import gregtech.client.utils.TooltipHelper;
3839
import gregtech.common.ConfigHolder;
3940
import gregtech.common.creativetab.GTCreativeTabs;
4041
import gregtech.common.items.MetaItems;
@@ -162,7 +163,8 @@ public abstract class MetaTileEntity implements ISyncedTileEntity, CoverHolder,
162163
private int playSoundCooldown = 0;
163164
private int lastTick = 0;
164165

165-
private UUID owner;
166+
@Nullable
167+
private UUID owner = null;
166168

167169
protected MetaTileEntity(@NotNull ResourceLocation metaTileEntityId) {
168170
this.metaTileEntityId = metaTileEntityId;
@@ -927,13 +929,14 @@ public void getDrops(@NotNull List<@NotNull ItemStack> dropsList, @Nullable Enti
927929

928930
public final ItemStack getPickItem(CuboidRayTraceResult result, EntityPlayer player) {
929931
IndexedCuboid6 hitCuboid = result.cuboid6;
932+
final boolean isCreativePickBlock = player.isCreative() && TooltipHelper.isCtrlDown();
930933
if (hitCuboid.data instanceof CoverRayTracer.CoverSideData coverSideData) {
931934
Cover cover = getCoverAtSide(coverSideData.side);
932-
return cover == null ? ItemStack.EMPTY : cover.getPickItem();
935+
return cover == null || isCreativePickBlock ? ItemStack.EMPTY : cover.getPickItem();
933936
} else if (hitCuboid.data == null || hitCuboid.data instanceof CoverRayTracer.PrimaryBoxData) {
934937
// data is null -> MetaTileEntity hull hit
935938
Cover cover = getCoverAtSide(result.sideHit);
936-
if (cover != null) {
939+
if (cover != null && !isCreativePickBlock) {
937940
return cover.getPickItem();
938941
}
939942
return getPickItem(player);
@@ -1302,7 +1305,8 @@ public NBTTagCompound writeToNBT(NBTTagCompound data) {
13021305

13031306
data.setBoolean(TAG_KEY_MUFFLED, muffled);
13041307

1305-
data.setUniqueId("Owner", owner);
1308+
if (owner != null)
1309+
data.setUniqueId("Owner", owner);
13061310

13071311
return data;
13081312
}
@@ -1330,7 +1334,8 @@ public void readFromNBT(NBTTagCompound data) {
13301334
CoverSaveHandler.readCoverNBT(data, this, covers::put);
13311335
this.muffled = data.getBoolean(TAG_KEY_MUFFLED);
13321336

1333-
this.owner = data.getUniqueId("Owner");
1337+
if (data.hasKey("Owner"))
1338+
this.owner = data.getUniqueId("Owner");
13341339
}
13351340

13361341
@Override
@@ -1378,8 +1383,8 @@ public void onPlacement(@Nullable EntityLivingBase placer) {
13781383
* If placing an MTE with methods such as {@link World#setBlockState(BlockPos, IBlockState)},
13791384
* this should be manually called immediately afterwards
13801385
*/
1381-
public void onPlacement() {
1382-
this.owner = null;
1386+
public final void onPlacement() {
1387+
onPlacement(null);
13831388
}
13841389

13851390
/**

src/main/java/gregtech/common/covers/CoverFluidFilter.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import gregtech.api.util.GTLog;
1010
import gregtech.api.util.GTUtility;
1111
import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer;
12-
import gregtech.client.utils.TooltipHelper;
1312
import gregtech.common.covers.filter.BaseFilter;
13+
import gregtech.common.covers.filter.BaseFilterContainer;
1414
import gregtech.common.covers.filter.FluidFilterContainer;
1515

1616
import net.minecraft.entity.player.EntityPlayer;
@@ -77,9 +77,6 @@ public void onAttachment(@NotNull CoverableView coverableView, @NotNull EnumFaci
7777

7878
@Override
7979
public @NotNull ItemStack getPickItem() {
80-
if (TooltipHelper.isCtrlDown())
81-
return getCoverableView().getStackForm();
82-
8380
return this.fluidFilterContainer.getFilterStack();
8481
}
8582

@@ -107,11 +104,15 @@ public FluidFilterMode getFilterMode() {
107104
return filterMode;
108105
}
109106

110-
@SuppressWarnings("DataFlowIssue") // this cover always has a filter
111107
public @NotNull BaseFilter getFilter() {
112-
return this.fluidFilterContainer.hasFilter() ?
113-
this.fluidFilterContainer.getFilter() :
114-
BaseFilter.ERROR_FILTER;
108+
var filter = getFilterContainer().getFilter();
109+
if (filter == null) return BaseFilter.ERROR_FILTER;
110+
111+
return filter;
112+
}
113+
114+
public @NotNull BaseFilterContainer getFilterContainer() {
115+
return this.fluidFilterContainer;
115116
}
116117

117118
@Override
@@ -143,11 +144,10 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
143144

144145
guiSyncManager.syncValue("filtering_mode", filteringMode);
145146
this.fluidFilterContainer.setMaxTransferSize(1);
146-
getFilter().getFilterReader().readStack(this.fluidFilterContainer.getFilterStack());
147147

148148
return getFilter().createPanel(guiSyncManager)
149149
.size(176, 194).padding(7)
150-
.child(CoverWithUI.createTitleRow(getPickItem()))
150+
.child(CoverWithUI.createTitleRow(getFilterContainer().getFilterStack()))
151151
.child(new Column().widthRel(1f).align(Alignment.TopLeft).top(22).coverChildrenHeight()
152152
.child(new EnumRowBuilder<>(FluidFilterMode.class)
153153
.value(filteringMode)

src/main/java/gregtech/common/covers/CoverItemFilter.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import gregtech.api.util.GTLog;
1010
import gregtech.api.util.GTUtility;
1111
import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer;
12-
import gregtech.client.utils.TooltipHelper;
1312
import gregtech.common.covers.filter.BaseFilter;
13+
import gregtech.common.covers.filter.BaseFilterContainer;
1414
import gregtech.common.covers.filter.ItemFilterContainer;
1515

1616
import net.minecraft.entity.player.EntityPlayer;
@@ -70,9 +70,6 @@ public void onAttachment(@NotNull CoverableView coverableView, @NotNull EnumFaci
7070

7171
@Override
7272
public @NotNull ItemStack getPickItem() {
73-
if (TooltipHelper.isCtrlDown())
74-
return getCoverableView().getStackForm();
75-
7673
return this.itemFilterContainer.getFilterStack();
7774
}
7875

@@ -105,11 +102,15 @@ public ItemFilterMode getFilterMode() {
105102
return filterMode;
106103
}
107104

108-
@SuppressWarnings("DataFlowIssue") // this cover should always have a filter
109105
public @NotNull BaseFilter getFilter() {
110-
return this.itemFilterContainer.hasFilter() ?
111-
this.itemFilterContainer.getFilter() :
112-
BaseFilter.ERROR_FILTER;
106+
var filter = getFilterContainer().getFilter();
107+
if (filter == null) return BaseFilter.ERROR_FILTER;
108+
109+
return filter;
110+
}
111+
112+
public @NotNull BaseFilterContainer getFilterContainer() {
113+
return this.itemFilterContainer;
113114
}
114115

115116
@Override
@@ -145,11 +146,10 @@ public ModularPanel buildUI(SidedPosGuiData guiData, PanelSyncManager guiSyncMan
145146
var filteringMode = new EnumSyncValue<>(ItemFilterMode.class, this::getFilterMode, this::setFilterMode);
146147

147148
guiSyncManager.syncValue("filtering_mode", filteringMode);
148-
getFilter().getFilterReader().readStack(this.itemFilterContainer.getFilterStack());
149149

150150
return getFilter().createPanel(guiSyncManager)
151151
.size(176, 194).padding(7)
152-
.child(CoverWithUI.createTitleRow(getPickItem()).left(4))
152+
.child(CoverWithUI.createTitleRow(getFilterContainer().getFilterStack()).left(4))
153153
.child(new Column().widthRel(1f).align(Alignment.TopLeft).top(22).coverChildrenHeight()
154154
.child(new EnumRowBuilder<>(ItemFilterMode.class)
155155
.value(filteringMode)

0 commit comments

Comments
 (0)