Skip to content

Commit f35c6fe

Browse files
committed
Regigias Shrine go brr.
1 parent b27639a commit f35c6fe

File tree

13 files changed

+91
-140
lines changed

13 files changed

+91
-140
lines changed

common/src/main/java/generations/gg/generations/core/generationscore/common/GenerationsStorage.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import earth.terrarium.common_storage_lib.item.util.ItemStorageData
66
object GenerationsStorage {
77
val registry = DataManagerRegistry(GenerationsCore.MOD_ID)
88

9+
val REGI_ORBS = registry.builder(ItemStorageData.DEFAULT).serialize(ItemStorageData.CODEC).networkSerializer(ItemStorageData.NETWORK_CODEC).buildAndRegister("regi_orbs")
910
val ITEM_CONTENTS = registry.builder(ItemStorageData.DEFAULT).serialize(ItemStorageData.CODEC).withDataComponent().buildAndRegister("inventory")
1011
val IMBUED = registry.builder(ItemStorageData.DEFAULT).serialize(ItemStorageData.CODEC).withDataComponent().buildAndRegister("imbued")
1112

common/src/main/java/generations/gg/generations/core/generationscore/common/client/render/block/entity/RegigigasShrineBlockEntityRenderer.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package generations.gg.generations.core.generationscore.common.client.render.block.entity;
22

33
import com.mojang.blaze3d.vertex.PoseStack;
4+
import generations.gg.generations.core.generationscore.common.GenerationsStorage;
45
import generations.gg.generations.core.generationscore.common.util.GenerationsUtils;
6+
import generations.gg.generations.core.generationscore.common.world.item.GenerationsItems;
57
import generations.gg.generations.core.generationscore.common.world.level.block.entities.shrines.RegigigasShrineBlockEntity;
68
import net.minecraft.Util;
79
import net.minecraft.client.renderer.MultiBufferSource;
810
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
911
import net.minecraft.core.particles.DustParticleOptions;
12+
import net.minecraft.world.item.Item;
1013
import net.minecraft.world.phys.Vec3;
1114
import org.jetbrains.annotations.NotNull;
1215
import org.joml.Vector3f;
@@ -17,14 +20,12 @@
1720
import static java.lang.Math.*;
1821

1922
public class RegigigasShrineBlockEntityRenderer extends GeneralUseBlockEntityRenderer<RegigigasShrineBlockEntity> {
20-
public static final Map<Integer, Vector3f> map = Util.make(new HashMap<>(), m -> {
21-
BiConsumer<Integer, Integer> colorToVector3f = (id, color) -> m.put(id, GenerationsUtils.rgbFromInt(color));
22-
23-
colorToVector3f.accept(0, 0x78AAC2);
24-
colorToVector3f.accept(1, 0x976C83);
25-
colorToVector3f.accept(2, 0x41382B);
26-
colorToVector3f.accept(3, 0x9F8C82);
27-
colorToVector3f.accept(4, 0x919191);
23+
public static final Map<Item, Vector3f> map = Util.make(new HashMap<>(), m -> {
24+
m.put(GenerationsItems.REGICE_ORB.get(), GenerationsUtils.rgbFromInt(0x78AAC2));
25+
m.put(GenerationsItems.REGIROCK_ORB.get(), GenerationsUtils.rgbFromInt(0XC7412B));
26+
m.put(GenerationsItems.REGISTEEL_ORB.get(), GenerationsUtils.rgbFromInt(0X79797B));
27+
m.put(GenerationsItems.REGIDRAGO_ORB.get(), GenerationsUtils.rgbFromInt(0x851534));
28+
m.put(GenerationsItems.REGIELEKI_ORB.get(), GenerationsUtils.rgbFromInt(0XE0E731));
2829
});
2930

3031
public RegigigasShrineBlockEntityRenderer(BlockEntityRendererProvider.Context ctx) {
@@ -41,13 +42,18 @@ public static void processOrbs(RegigigasShrineBlockEntity shrineBlock) {
4142

4243
List<Vector3f> colors = new ArrayList<>();
4344

44-
for (int i = 0; i < 5; i++) {
45-
if(!shrineBlock.getContainer().get(i).isEmpty()) {
46-
colors.add(map.get(i));
47-
}
45+
var list = GenerationsStorage.INSTANCE.getREGI_ORBS().get(shrineBlock);
46+
47+
for (int i = 0; i < list.stacks().size(); i++) {
48+
var color = map.get(list.stacks().get(i).resource().getItem());
49+
50+
if(color != null) colors.add(color);
4851
}
4952

5053
if(colors.isEmpty()) return;
54+
else {
55+
System.out.println(colors);
56+
}
5157

5258
Vec3 center = new Vec3(shrineBlock.getBlockPos().getX() + 0.5d, shrineBlock.getBlockPos().getY() + 0.5d, shrineBlock.getBlockPos().getZ() + 0.5d);
5359
double theta = (((Objects.requireNonNull(shrineBlock.getLevel()).getGameTime() % (double) 100) / (double) 100) * 2 * PI);

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/GenerationsDecorationBlocks.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import generations.gg.generations.core.generationscore.common.client.render.rare
77
import generations.gg.generations.core.generationscore.common.util.GenerationsItemUtils
88
import generations.gg.generations.core.generationscore.common.util.GenerationsUtils
99
import generations.gg.generations.core.generationscore.common.world.item.GenerationsItems
10-
import generations.gg.generations.core.generationscore.common.world.level.block.de.WorkDeskBlock
11-
import generations.gg.generations.core.generationscore.common.world.level.block.deco.ShelfBlock
10+
import generations.gg.generations.core.generationscore.common.world.level.block.decorations.WorkDeskBlock
11+
import generations.gg.generations.core.generationscore.common.world.level.block.decorations.ShelfBlock
1212
import generations.gg.generations.core.generationscore.common.world.level.block.decorations.*
1313
import generations.gg.generations.core.generationscore.common.world.level.block.entities.*
1414
import generations.gg.generations.core.generationscore.common.world.level.block.entities.BallDisplayBlock.DisplayState

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/RksMachineBlock.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,9 @@ class RksMachineBlock(copy: Properties) : GenericRotatableModelBlock<RksMachineB
7474
): BlockEntityTicker<T>? = createTickerHelper(blockEntityType, GenerationsBlockEntities.RKS_MACHINE.get(), RksMachineBlockEntity::serverTick)
7575

7676
protected fun openContainer(level: Level, bpos: BlockPos, player: Player) {
77-
val rksMachine = getAssoicatedBlockEntity(level, bpos).orElseThrow {
78-
IllegalStateException(
79-
"Our named container provider is missing!"
80-
)
81-
}
82-
if (rksMachine != null) {
83-
MenuRegistry.openMenu(player as ServerPlayer, rksMachine)
84-
player.awardStat(Stats.INTERACT_WITH_FURNACE)
85-
}
77+
val rksMachine = getAssoicatedBlockEntity(level, bpos) ?: run { throw IllegalStateException("Our named container provider is missing!") }
78+
MenuRegistry.openMenu(player as ServerPlayer, rksMachine)
79+
player.awardStat(Stats.INTERACT_WITH_FURNACE)
8680
}
8781

8882
override fun useWithoutItem(

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/deco/ShelfBlock.kt renamed to common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/decorations/ShelfBlock.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package generations.gg.generations.core.generationscore.common.world.level.block.deco
1+
package generations.gg.generations.core.generationscore.common.world.level.block.decorations
22

33
import com.mojang.serialization.MapCodec
44
import generations.gg.generations.core.generationscore.common.world.level.block.GenerationsVoxelShapes.generateRotationalVoxelShape
@@ -9,7 +9,6 @@ import generations.gg.generations.core.generationscore.common.world.level.block.
99
import net.minecraft.core.BlockPos
1010
import net.minecraft.core.Direction
1111
import net.minecraft.world.level.BlockGetter
12-
import net.minecraft.world.level.block.BaseEntityBlock
1312
import net.minecraft.world.level.block.state.BlockState
1413
import net.minecraft.world.phys.shapes.CollisionContext
1514
import net.minecraft.world.phys.shapes.Shapes

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/de/WorkDeskBlock.kt renamed to common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/decorations/WorkDeskBlock.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package generations.gg.generations.core.generationscore.common.world.level.block.de
1+
package generations.gg.generations.core.generationscore.common.world.level.block.decorations
22

33
import com.mojang.serialization.MapCodec
44
import generations.gg.generations.core.generationscore.common.world.level.block.GenerationsVoxelShapes
@@ -10,7 +10,6 @@ import generations.gg.generations.core.generationscore.common.world.level.block.
1010
import net.minecraft.core.BlockPos
1111
import net.minecraft.core.Direction
1212
import net.minecraft.world.level.BlockGetter
13-
import net.minecraft.world.level.block.BaseEntityBlock
1413
import net.minecraft.world.level.block.state.BlockState
1514
import net.minecraft.world.phys.shapes.CollisionContext
1615
import net.minecraft.world.phys.shapes.Shapes
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,19 @@
11
package generations.gg.generations.core.generationscore.common.world.level.block.entities.shrines
22

3-
import dev.architectury.registry.registries.RegistrySupplier
4-
import earth.terrarium.common_storage_lib.item.impl.SimpleItemSlot
5-
import earth.terrarium.common_storage_lib.item.util.ItemProvider
6-
import earth.terrarium.common_storage_lib.resources.item.ItemResource
7-
import earth.terrarium.common_storage_lib.storage.base.CommonStorage
3+
import earth.terrarium.common_storage_lib.item.impl.SimpleItemStorage
4+
import generations.gg.generations.core.generationscore.common.GenerationsStorage
85
import generations.gg.generations.core.generationscore.common.client.render.rarecandy.instanceOrNull
9-
import generations.gg.generations.core.generationscore.common.util.ExtendedsimpleItemContainer
106
import generations.gg.generations.core.generationscore.common.world.item.GenerationsItems
117
import generations.gg.generations.core.generationscore.common.world.item.legends.RegiOrbItem
128
import generations.gg.generations.core.generationscore.common.world.level.block.entities.GenerationsBlockEntities
139
import net.minecraft.core.BlockPos
14-
import net.minecraft.core.Direction
15-
import net.minecraft.world.item.Item
16-
import net.minecraft.world.level.Level
17-
import net.minecraft.world.level.block.entity.BlockEntity
1810
import net.minecraft.world.level.block.state.BlockState
19-
import java.util.*
2011

21-
class RegigigasShrineBlockEntity(pos: BlockPos, state: BlockState) : InteractShrineBlockEntity(GenerationsBlockEntities.REGIGIGAS_SHRINE.get(), pos, state), ItemProvider.Block {
22-
val container: RegigigasItemStackHandler
23-
24-
init {
25-
container = RegigigasItemStackHandler()
26-
}
27-
28-
override fun getItems(
29-
level: Level,
30-
blockPos: BlockPos,
31-
blockState: BlockState?,
32-
blockEntity: BlockEntity?,
33-
direction: Direction?
34-
): CommonStorage<ItemResource> {
35-
return container
36-
}
37-
38-
private fun getRegiItem(index: Int): RegiOrbItem? {
39-
return when (index) {
40-
0 -> GenerationsItems.REGICE_ORB
41-
1 -> GenerationsItems.REGIROCK_ORB
42-
2 -> GenerationsItems.REGISTEEL_ORB
43-
3 -> GenerationsItems.REGIDRAGO_ORB
44-
4 -> GenerationsItems.REGIELEKI_ORB
45-
else -> null
46-
}?.get().instanceOrNull<RegiOrbItem>()
47-
}
48-
49-
inner class RegigigasItemStackHandler :
50-
ExtendedsimpleItemContainer(this@RegigigasShrineBlockEntity, 5) {
51-
override fun isResourceValid(index: Int, resource: ItemResource): Boolean {
52-
resource.item.instanceOrNull<RegiOrbItem>().run {
53-
return@run getRegiItem(index) == this
54-
}
55-
56-
return false
57-
}
58-
59-
override fun getLimit(index: Int, resource: ItemResource): Long {
60-
return 1
61-
}
62-
63-
val isFull: Boolean
64-
get() = this.slots.map(SimpleItemSlot::getResource).none(ItemResource::isBlank)
65-
66-
fun clear() { //TODO: work on
67-
// getItems().clear();
68-
// setChanged();
69-
}
70-
71-
fun contains(item: Item): Boolean = this.slots.map { obj -> obj.resource }.any { stack: ItemResource -> stack.isOf(item) }
72-
} // @Override
73-
// public @NotNull CompoundTag getUpdateTag() {
74-
// return getContainer().serialize(super.getUpdateTag());
75-
// }
76-
77-
companion object {
78-
@JvmStatic
79-
fun getRegiOrbIndex(item: RegiOrbItem): Int {
80-
return when (item.speciesId) {
81-
"regice" -> 0
82-
"regirock" -> 1
83-
"registeel" -> 2
84-
"regidrago" -> 3
85-
"regieleki" -> 4
86-
else -> -1
87-
}
88-
}
89-
}
12+
class RegigigasShrineBlockEntity(pos: BlockPos, state: BlockState) : InteractShrineBlockEntity(GenerationsBlockEntities.REGIGIGAS_SHRINE.get(), pos, state) {
13+
val container: SimpleItemStorage = SimpleItemStorage(this, GenerationsStorage.REGI_ORBS, 5)
14+
.filter(0) { it.isOf(GenerationsItems.REGICE_ORB.get()) }
15+
.filter(1) { it.isOf(GenerationsItems.REGIROCK_ORB.get()) }
16+
.filter(2) { it.isOf(GenerationsItems.REGISTEEL_ORB.get()) }
17+
.filter(3) { it.isOf(GenerationsItems.REGIDRAGO_ORB.get()) }
18+
.filter(4) { it.isOf(GenerationsItems.REGIELEKI_ORB.get()) }
9019
}

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/generic/GenericModelBlock.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,9 @@ abstract class GenericModelBlock<T> protected constructor(
8383
return Shapes.empty()
8484
}
8585

86-
fun getAssoicatedBlockEntity(level: BlockGetter, pos: BlockPos): Optional<T?> {
87-
return blockEntityFunction.toOptional().map { a: MutableBlockEntityType<T> ->
88-
a.getBlockEntity(
89-
level,
90-
getBaseBlockPos(pos, level.getBlockState(pos))
91-
)
92-
}
86+
fun getAssoicatedBlockEntity(level: BlockGetter, pos: BlockPos): T? {
87+
return blockEntityFunction.get()?.getBlockEntity(level, getBaseBlockPos(pos, level.getBlockState(pos)))
88+
9389
}
9490

9591
open fun computeRenderBoundingBox(level: Level, pos: BlockPos, state: BlockState): AABB {

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/shrines/InteractShrineBlock.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ abstract class InteractShrineBlock<T : InteractShrineBlockEntity> : ShrineBlock<
104104
}
105105
}
106106

107+
108+
107109
protected abstract fun interact(
108110
level: Level,
109111
pos: BlockPos,
@@ -117,7 +119,7 @@ abstract class InteractShrineBlock<T : InteractShrineBlockEntity> : ShrineBlock<
117119
if (waitToDeactivateTime() == 0) getAssoicatedBlockEntity(
118120
level,
119121
pos
120-
).ifPresent { obj: T -> obj.triggerCountDown() }
122+
)?.triggerCountDown()
121123
}
122124

123125
fun deactivate(level: Level, pos: BlockPos, state: BlockState) {

common/src/main/java/generations/gg/generations/core/generationscore/common/world/level/block/shrines/PrisonBottleStemBlock.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ class PrisonBottleStemBlock(materialIn: Properties) :
9696
getAssoicatedBlockEntity(
9797
world,
9898
pos
99-
).ifPresent { obj: InteractShrineBlockEntity -> obj.triggerCountDown() }
99+
)?.triggerCountDown()
100100
}
101101
}
102102
return true

0 commit comments

Comments
 (0)