Skip to content

Commit 416612a

Browse files
committed
Remove ILootrOptional in favor of LootrConverter service.
1 parent 35777d0 commit 416612a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+225
-218
lines changed

common/src/main/java/noobanidus/mods/lootr/common/api/ILootrAPI.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import noobanidus.mods.lootr.common.api.data.ILootrInfoProvider;
1818
import noobanidus.mods.lootr.common.api.data.ILootrSavedData;
1919
import noobanidus.mods.lootr.common.api.data.LootFiller;
20+
import noobanidus.mods.lootr.common.api.data.blockentity.ILootrBlockEntity;
2021
import noobanidus.mods.lootr.common.api.data.inventory.ILootrInventory;
2122
import org.jetbrains.annotations.Nullable;
2223

@@ -236,6 +237,8 @@ default void award(ILootrInfoProvider provider, ServerPlayer player) {
236237
void handleProviderTick(@Nullable ILootrInfoProvider provider);
237238

238239
boolean anyUnloadedChunks(ResourceKey<Level> dimension, Set<ChunkPos> chunks);
240+
241+
<T> ILootrBlockEntity resolveBlockEntity (T blockEntity);
239242
}
240243

241244

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package noobanidus.mods.lootr.common.api;
2+
3+
import noobanidus.mods.lootr.common.api.data.blockentity.ILootrBlockEntity;
4+
5+
import java.util.function.Function;
6+
7+
public interface ILootrConverter<T> extends Function<T, ILootrBlockEntity> {
8+
@Override
9+
ILootrBlockEntity apply (T blockEntity);
10+
11+
Class<? extends T> getClassType ();
12+
}

common/src/main/java/noobanidus/mods/lootr/common/api/ILootrOptional.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

common/src/main/java/noobanidus/mods/lootr/common/api/LootrAPI.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import noobanidus.mods.lootr.common.api.data.ILootrInfoProvider;
2222
import noobanidus.mods.lootr.common.api.data.ILootrSavedData;
2323
import noobanidus.mods.lootr.common.api.data.LootFiller;
24+
import noobanidus.mods.lootr.common.api.data.blockentity.ILootrBlockEntity;
2425
import noobanidus.mods.lootr.common.api.data.inventory.ILootrInventory;
2526
import org.apache.logging.log4j.LogManager;
2627
import org.apache.logging.log4j.Logger;
@@ -403,4 +404,8 @@ public static void handleProviderTick(@Nullable ILootrInfoProvider provider) {
403404
public static boolean anyUnloadedChunks(ResourceKey<Level> dimension, Set<ChunkPos> chunks) {
404405
return INSTANCE.anyUnloadedChunks(dimension, chunks);
405406
}
407+
408+
public static <T> ILootrBlockEntity resolveBlockEntity (T blockEntity) {
409+
return INSTANCE.resolveBlockEntity(blockEntity);
410+
}
406411
}

common/src/main/java/noobanidus/mods/lootr/common/api/LootrTags.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import net.minecraft.world.entity.EntityType;
66
import net.minecraft.world.item.Item;
77
import net.minecraft.world.level.block.Block;
8-
import net.minecraft.world.level.block.entity.BlockEntity;
98
import net.minecraft.world.level.block.entity.BlockEntityType;
109

1110
public class LootrTags {

common/src/main/java/noobanidus/mods/lootr/common/api/data/ILootrInfoProvider.java

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
1313
import net.minecraft.world.level.storage.loot.LootTable;
1414
import noobanidus.mods.lootr.common.api.IClientOpeners;
15-
import noobanidus.mods.lootr.common.api.ILootrOptional;
1615
import noobanidus.mods.lootr.common.api.LootrAPI;
1716
import noobanidus.mods.lootr.common.api.advancement.IContainerTrigger;
1817
import noobanidus.mods.lootr.common.api.data.blockentity.RandomizableContainerBlockEntityLootrInfoProvider;
@@ -28,27 +27,27 @@ static ILootrInfoProvider of(BlockPos pos, Level level) {
2827
return null;
2928
}
3029
BlockEntity blockEntity = level.getBlockEntity(pos);
31-
if (blockEntity instanceof ILootrInfoProvider provider) {
30+
if (LootrAPI.resolveBlockEntity(blockEntity) instanceof ILootrInfoProvider provider) {
31+
return provider;
32+
} else if (blockEntity instanceof ILootrInfoProvider provider) {
3233
return provider;
33-
}
34-
if (blockEntity instanceof ILootrOptional optionalProvider) {
35-
Object object = optionalProvider.getLootrObject();
36-
if (object instanceof ILootrInfoProvider provider) {
37-
return provider;
38-
}
3934
}
4035
return null;
4136
}
4237

4338
static ILootrInfoProvider of(RandomizableContainerBlockEntity blockEntity, UUID id) {
44-
if (blockEntity instanceof ILootrInfoProvider provider) {
39+
if (LootrAPI.resolveBlockEntity(blockEntity) instanceof ILootrInfoProvider provider) {
40+
return provider;
41+
} else if (blockEntity instanceof ILootrInfoProvider provider) {
4542
return provider;
4643
}
4744
return new RandomizableContainerBlockEntityLootrInfoProvider(blockEntity, id, ILootrInfo.generateInfoKey(id), null);
4845
}
4946

5047
static ILootrInfoProvider of(RandomizableContainerBlockEntity blockEntity, UUID id, NonNullList<ItemStack> customInventory) {
51-
if (blockEntity instanceof ILootrInfoProvider provider) {
48+
if (LootrAPI.resolveBlockEntity(blockEntity) instanceof ILootrInfoProvider provider) {
49+
return provider;
50+
} else if (blockEntity instanceof ILootrInfoProvider provider) {
5251
return provider;
5352
}
5453
return new RandomizableContainerBlockEntityLootrInfoProvider(blockEntity, id, ILootrInfo.generateInfoKey(id), customInventory);
@@ -84,7 +83,7 @@ default Set<UUID> getActualOpeners() {
8483
}
8584

8685
@Override
87-
default boolean hasBeenOpened () {
86+
default boolean hasBeenOpened() {
8887
ILootrSavedData data = LootrAPI.getData(this);
8988
if (data == null) {
9089
return false;
@@ -94,11 +93,11 @@ default boolean hasBeenOpened () {
9493
}
9594

9695
@Nullable
97-
default IContainerTrigger getTrigger () {
96+
default IContainerTrigger getTrigger() {
9897
return null;
9998
}
10099

101-
default void performTrigger (ServerPlayer player) {
100+
default void performTrigger(ServerPlayer player) {
102101
IContainerTrigger trigger = getTrigger();
103102
if (trigger != null) {
104103
trigger.trigger(player, getInfoUUID());
@@ -108,19 +107,19 @@ default void performTrigger (ServerPlayer player) {
108107
default void performOpen(ServerPlayer player) {
109108
}
110109

111-
default void performOpen () {
110+
default void performOpen() {
112111
}
113112

114113
default void performClose(ServerPlayer player) {
115114
}
116115

117-
default void performClose () {
116+
default void performClose() {
118117
}
119118

120-
default void performDecay () {
119+
default void performDecay() {
121120
}
122121

123-
default void performRefresh () {
122+
default void performRefresh() {
124123
ILootrSavedData data = LootrAPI.getData(this);
125124
if (data != null) {
126125
data.refresh();
@@ -129,10 +128,10 @@ default void performRefresh () {
129128
}
130129
}
131130

132-
default void performUpdate (ServerPlayer player) {
131+
default void performUpdate(ServerPlayer player) {
133132
}
134133

135-
default void performUpdate () {
134+
default void performUpdate() {
136135
}
137136

138137
@Override

common/src/main/java/noobanidus/mods/lootr/common/api/data/ILootrSavedData.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import net.minecraft.world.level.Level;
1111
import net.minecraft.world.level.storage.loot.LootTable;
1212
import net.minecraft.world.phys.Vec3;
13-
import noobanidus.mods.lootr.common.api.ILootrOptional;
1413
import noobanidus.mods.lootr.common.api.IMarkChanged;
1514
import noobanidus.mods.lootr.common.api.IOpeners;
1615
import noobanidus.mods.lootr.common.api.IRedirect;

common/src/main/java/noobanidus/mods/lootr/common/api/data/blockentity/ILootrBlockEntity.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,14 @@
1010
import net.minecraft.world.level.block.entity.BlockEntity;
1111
import net.minecraft.world.level.block.state.BlockState;
1212
import net.minecraft.world.level.storage.loot.LootTable;
13-
import noobanidus.mods.lootr.common.api.ILootrOptional;
1413
import noobanidus.mods.lootr.common.api.LootrAPI;
1514
import noobanidus.mods.lootr.common.api.PlatformAPI;
1615
import noobanidus.mods.lootr.common.api.data.ILootrInfoProvider;
1716

1817
public interface ILootrBlockEntity extends ILootrInfoProvider {
1918
static <T extends BlockEntity> void ticker (Level level, BlockPos pos, BlockState state, T blockEntity) {
20-
if (blockEntity instanceof ILootrBlockEntity t) {
19+
if (LootrAPI.resolveBlockEntity(blockEntity) instanceof ILootrBlockEntity t) {
2120
t.defaultTick(level, pos, state);
22-
} else if (blockEntity instanceof ILootrOptional o) {
23-
Object object = o.getLootrObject();
24-
if (object instanceof ILootrBlockEntity t2) {
25-
t2.defaultTick(level, pos, state);
26-
}
2721
}
2822
}
2923

common/src/main/java/noobanidus/mods/lootr/common/api/data/entity/ILootrCart.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,10 @@
22

33
import net.minecraft.server.level.ServerPlayer;
44
import net.minecraft.world.entity.vehicle.VehicleEntity;
5-
import noobanidus.mods.lootr.common.api.ILootrOptional;
65
import noobanidus.mods.lootr.common.api.PlatformAPI;
76
import noobanidus.mods.lootr.common.api.data.ILootrInfoProvider;
8-
import org.jetbrains.annotations.Nullable;
97

108
public interface ILootrCart extends ILootrInfoProvider {
11-
/* @Nullable
12-
static ILootrCart of (ILootrOptional optionalProvider) {
13-
Object object = optionalProvider.getLootrObject();
14-
if (object instanceof ILootrCart provider) {
15-
return provider;
16-
}
17-
return null;
18-
}*/
19-
20-
219
@Override
2210
default LootrInfoType getInfoType() {
2311
return LootrInfoType.CONTAINER_ENTITY;

common/src/main/java/noobanidus/mods/lootr/common/block/entity/BlockEntityTicker.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity;
1212
import net.minecraft.world.level.block.state.BlockState;
1313
import net.minecraft.world.level.storage.loot.LootTable;
14-
import noobanidus.mods.lootr.common.api.*;
14+
import noobanidus.mods.lootr.common.api.DataToCopy;
15+
import noobanidus.mods.lootr.common.api.LootrAPI;
16+
import noobanidus.mods.lootr.common.api.PlatformAPI;
1517
import noobanidus.mods.lootr.common.api.data.blockentity.ILootrBlockEntity;
1618

1719
import java.util.Set;
@@ -112,7 +114,7 @@ public static void onServerTick() {
112114
continue;
113115
}
114116
BlockEntity blockEntity = level.getBlockEntity(entry.getPosition());
115-
if (!(blockEntity instanceof RandomizableContainerBlockEntity be) || blockEntity instanceof ILootrBlockEntity || blockEntity instanceof ILootrOptional) {
117+
if (!(blockEntity instanceof RandomizableContainerBlockEntity be) || LootrAPI.resolveBlockEntity(blockEntity) instanceof ILootrBlockEntity) {
116118
toRemove.add(entry);
117119
continue;
118120
}
@@ -136,7 +138,7 @@ public static void onServerTick() {
136138
level.setBlock(entry.getPosition(), replacement, 2);
137139
BlockEntity newBlockEntity = level.getBlockEntity(entry.getPosition());
138140
PlatformAPI.restoreSpecificData(data, newBlockEntity);
139-
if (newBlockEntity instanceof ILootrBlockEntity && newBlockEntity instanceof RandomizableContainerBlockEntity rbe) {
141+
if (LootrAPI.resolveBlockEntity(newBlockEntity) instanceof ILootrBlockEntity && newBlockEntity instanceof RandomizableContainerBlockEntity rbe) {
140142
rbe.setLootTable(table, seed);
141143
} else {
142144
LootrAPI.LOG.error("replacement " + replacement + " is not an ILootrBlockEntity " + entry.getDimension() + " at " + entry.getPosition());

0 commit comments

Comments
 (0)