Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
146 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 53 additions & 0 deletions
53
...et/kaupenjoe/tutorialmod/block/entity/renderer/GemInfusingStationBlockEntityRenderer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package net.kaupenjoe.tutorialmod.block.entity.renderer; | ||
|
||
import com.mojang.blaze3d.vertex.PoseStack; | ||
import com.mojang.math.Vector3f; | ||
import net.kaupenjoe.tutorialmod.block.custom.GemInfusingStationBlock; | ||
import net.kaupenjoe.tutorialmod.block.entity.GemInfusingStationBlockEntity; | ||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.client.renderer.LightTexture; | ||
import net.minecraft.client.renderer.MultiBufferSource; | ||
import net.minecraft.client.renderer.block.model.ItemTransforms; | ||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; | ||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; | ||
import net.minecraft.client.renderer.entity.ItemRenderer; | ||
import net.minecraft.client.renderer.texture.OverlayTexture; | ||
import net.minecraft.core.BlockPos; | ||
import net.minecraft.world.item.ItemStack; | ||
import net.minecraft.world.level.Level; | ||
import net.minecraft.world.level.LightLayer; | ||
|
||
public class GemInfusingStationBlockEntityRenderer implements BlockEntityRenderer<GemInfusingStationBlockEntity> { | ||
public GemInfusingStationBlockEntityRenderer(BlockEntityRendererProvider.Context context) { | ||
|
||
} | ||
|
||
@Override | ||
public void render(GemInfusingStationBlockEntity pBlockEntity, float pPartialTick, PoseStack pPoseStack, | ||
MultiBufferSource pBufferSource, int pPackedLight, int pPackedOverlay) { | ||
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); | ||
ItemStack itemStack = pBlockEntity.getRenderStack(); | ||
pPoseStack.pushPose(); | ||
pPoseStack.translate(0.5f, 0.65f, 0.5f); | ||
pPoseStack.scale(0.25f, 0.25f, 0.25f); | ||
pPoseStack.mulPose(Vector3f.XP.rotationDegrees(90)); | ||
|
||
switch (pBlockEntity.getBlockState().getValue(GemInfusingStationBlock.FACING)) { | ||
case NORTH -> pPoseStack.mulPose(Vector3f.ZP.rotationDegrees(0)); | ||
case EAST -> pPoseStack.mulPose(Vector3f.ZP.rotationDegrees(90)); | ||
case SOUTH -> pPoseStack.mulPose(Vector3f.ZP.rotationDegrees(180)); | ||
case WEST -> pPoseStack.mulPose(Vector3f.ZP.rotationDegrees(270)); | ||
} | ||
|
||
itemRenderer.renderStatic(itemStack, ItemTransforms.TransformType.GUI, getLightLevel(pBlockEntity.getLevel(), | ||
pBlockEntity.getBlockPos()), | ||
OverlayTexture.NO_OVERLAY, pPoseStack, pBufferSource, 1); | ||
pPoseStack.popPose(); | ||
} | ||
|
||
private int getLightLevel(Level level, BlockPos pos) { | ||
int bLight = level.getBrightness(LightLayer.BLOCK, pos); | ||
int sLight = level.getBrightness(LightLayer.SKY, pos); | ||
return LightTexture.pack(bLight, sLight); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
src/main/java/net/kaupenjoe/tutorialmod/networking/packet/ItemStackSyncS2CPacket.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
package net.kaupenjoe.tutorialmod.networking.packet; | ||
|
||
import net.kaupenjoe.tutorialmod.block.entity.GemInfusingStationBlockEntity; | ||
import net.kaupenjoe.tutorialmod.screen.GemInfusingStationMenu; | ||
import net.minecraft.client.Minecraft; | ||
import net.minecraft.core.BlockPos; | ||
import net.minecraft.network.FriendlyByteBuf; | ||
import net.minecraft.world.item.ItemStack; | ||
import net.minecraftforge.fluids.FluidStack; | ||
import net.minecraftforge.items.ItemStackHandler; | ||
import net.minecraftforge.network.NetworkEvent; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Collection; | ||
import java.util.List; | ||
import java.util.function.Supplier; | ||
|
||
public class ItemStackSyncS2CPacket { | ||
private final ItemStackHandler itemStackHandler; | ||
private final BlockPos pos; | ||
|
||
public ItemStackSyncS2CPacket(ItemStackHandler itemStackHandler, BlockPos pos) { | ||
this.itemStackHandler = itemStackHandler; | ||
this.pos = pos; | ||
} | ||
|
||
public ItemStackSyncS2CPacket(FriendlyByteBuf buf) { | ||
List<ItemStack> collection = buf.readCollection(ArrayList::new, FriendlyByteBuf::readItem); | ||
itemStackHandler = new ItemStackHandler(collection.size()); | ||
for (int i = 0; i < collection.size(); i++) { | ||
itemStackHandler.insertItem(i, collection.get(i), false); | ||
} | ||
|
||
this.pos = buf.readBlockPos(); | ||
} | ||
|
||
public void toBytes(FriendlyByteBuf buf) { | ||
Collection<ItemStack> list = new ArrayList<>(); | ||
for(int i = 0; i < itemStackHandler.getSlots(); i++) { | ||
list.add(itemStackHandler.getStackInSlot(i)); | ||
} | ||
|
||
buf.writeCollection(list, FriendlyByteBuf::writeItem); | ||
buf.writeBlockPos(pos); | ||
} | ||
|
||
public boolean handle(Supplier<NetworkEvent.Context> supplier) { | ||
NetworkEvent.Context context = supplier.get(); | ||
context.enqueueWork(() -> { | ||
if(Minecraft.getInstance().level.getBlockEntity(pos) instanceof GemInfusingStationBlockEntity blockEntity) { | ||
blockEntity.setHandler(this.itemStackHandler); | ||
} | ||
}); | ||
return true; | ||
} | ||
} |