render a singular server
This commit is contained in:
@@ -13,10 +13,7 @@ import org.neoflock.neocomputers.NeoComputers;
|
||||
import org.neoflock.neocomputers.block.Blocks;
|
||||
import org.neoflock.neocomputers.block.CableBlock;
|
||||
import org.neoflock.neocomputers.entity.BlockEntities;
|
||||
import org.neoflock.neocomputers.entity.render.CaseEntityRenderer;
|
||||
import org.neoflock.neocomputers.entity.render.RelayEntityRenderer;
|
||||
import org.neoflock.neocomputers.entity.render.RobotEntityRenderer;
|
||||
import org.neoflock.neocomputers.entity.render.ScreenEntityRenderer;
|
||||
import org.neoflock.neocomputers.entity.render.*;
|
||||
import org.neoflock.neocomputers.item.Items;
|
||||
import org.neoflock.neocomputers.platforms.fabric.client.model.ModelLoader;
|
||||
|
||||
@@ -24,10 +21,11 @@ public class NeoComputersFabricClient implements ClientModInitializer {
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
ModelLoadingPlugin.register(new ModelLoader());
|
||||
BlockEntityRenderers.register(BlockEntities.INSTANCE.getSCREEN_ENTITY().get(), ScreenEntityRenderer::new);
|
||||
BlockEntityRenderers.register(BlockEntities.INSTANCE.getCASE_ENTITY().get(), CaseEntityRenderer::new);
|
||||
BlockEntityRenderers.register(BlockEntities.INSTANCE.getRELAY_ENTITY().get(), RelayEntityRenderer::new);
|
||||
BlockEntityRenderers.register(BlockEntities.INSTANCE.getSCREEN_ENTITY().get(), ScreenEntityRenderer::new); // TODO: put this in common
|
||||
// BlockEntityRenderers.register(BlockEntities.INSTANCE.getCASE_ENTITY().get(), CaseEntityRenderer::new);
|
||||
// BlockEntityRenderers.register(BlockEntities.INSTANCE.getRELAY_ENTITY().get(), RelayEntityRenderer::new);
|
||||
BlockEntityRenderers.register(BlockEntities.INSTANCE.getROBOT_ENTITY().get(), RobotEntityRenderer::new);
|
||||
BlockEntityRenderers.register(BlockEntities.INSTANCE.getRACK_ENTITY().get(), RackEntityRenderer::new);
|
||||
|
||||
ColorProviderRegistry.BLOCK.register((state, world, pos, index) -> {
|
||||
if (index == 0) {
|
||||
|
||||
@@ -36,6 +36,7 @@ object Blocks {
|
||||
val CABLE_BLOCK: RegistrySupplier<Block> = BaseBlock.register("cable") { CableBlock() }
|
||||
val RELAY_BLOCK: RegistrySupplier<Block> = BaseBlock.register("relay") { RelayBlock() }
|
||||
val ROBOT_BLOCK: RegistrySupplier<Block> = BaseBlock.register("robot") { RobotBlock() }
|
||||
val RACK_BLOCK: RegistrySupplier<Block> = BaseBlock.register("rack") { RackBlock() }
|
||||
|
||||
fun registerBlockItems() {
|
||||
BLOCKS.forEach(Consumer { sup: RegistrySupplier<Block> ->
|
||||
|
||||
49
src/main/kotlin/org/neoflock/neocomputers/block/RackBlock.kt
Normal file
49
src/main/kotlin/org/neoflock/neocomputers/block/RackBlock.kt
Normal file
@@ -0,0 +1,49 @@
|
||||
package org.neoflock.neocomputers.block
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.world.InteractionResult
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.level.block.EntityBlock
|
||||
import net.minecraft.world.level.block.RenderShape
|
||||
import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.phys.BlockHitResult
|
||||
import net.minecraft.world.phys.shapes.CollisionContext
|
||||
import net.minecraft.world.phys.shapes.Shapes
|
||||
import net.minecraft.world.phys.shapes.VoxelShape
|
||||
import org.neoflock.neocomputers.entity.BlockEntities
|
||||
import org.neoflock.neocomputers.entity.RackEntity
|
||||
|
||||
class RackBlock : BaseBlock(Properties.of().noOcclusion()), EntityBlock {
|
||||
override fun newBlockEntity(
|
||||
pos: BlockPos,
|
||||
state: BlockState
|
||||
): BlockEntity? {
|
||||
return RackEntity(pos, state)
|
||||
}
|
||||
|
||||
// override fun getShape(
|
||||
// state: BlockState,
|
||||
// level: BlockGetter,
|
||||
// pos: BlockPos,
|
||||
// context: CollisionContext
|
||||
// ): VoxelShape? {
|
||||
// return Shapes.box(0.0,0.0,0.0,0.01,0.01,0.01)
|
||||
// }
|
||||
|
||||
// override fun getRenderShape(state: BlockState): RenderShape? {
|
||||
// return RenderShape
|
||||
// }
|
||||
|
||||
|
||||
// override fun useWithoutItem(
|
||||
// state: BlockState,
|
||||
// level: Levesl,
|
||||
// pos: BlockPos,
|
||||
// player: Player,
|
||||
// hitResult: BlockHitResult
|
||||
// ): InteractionResult? {
|
||||
// return super.useWithoutItem(state, level, pos, player, hitResult)
|
||||
}
|
||||
@@ -17,7 +17,6 @@ import org.neoflock.neocomputers.entity.RobotEntity
|
||||
class RobotBlock : BaseBlock(Properties.of().noOcclusion()), EntityBlock { // todo: node stuff
|
||||
override fun newBlockEntity(pos: BlockPos, state: BlockState): BlockEntity {
|
||||
NeoComputers.LOGGER.info("block entity created..")
|
||||
Blocks.CHEST
|
||||
return RobotEntity(pos, state)
|
||||
}
|
||||
|
||||
|
||||
@@ -100,6 +100,12 @@ object BlockEntities {
|
||||
)
|
||||
}
|
||||
|
||||
val RACK_ENTITY: RegistrySupplier<BlockEntityType<RackEntity>> = BLOCKENTITIES.register("rack") {
|
||||
BlockEntityType(
|
||||
::RackEntity, setOf(Blocks.RACK_BLOCK.get()), BullshitFix()
|
||||
)
|
||||
}
|
||||
|
||||
fun registerPowerBlocks() {
|
||||
PowerManager.registerPowerDevice(CAPACITOR_ENTITY.get())
|
||||
PowerManager.registerPowerDevice(CAPACITOR2_ENTITY.get())
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package org.neoflock.neocomputers.entity
|
||||
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.world.level.block.entity.BlockEntity
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
|
||||
class RackEntity(pos: BlockPos, state: BlockState) : BlockEntity(BlockEntities.RACK_ENTITY.get(), pos, state) {
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.neoflock.neocomputers.entity.render
|
||||
|
||||
import com.mojang.authlib.minecraft.client.MinecraftClient
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.renderer.LevelRenderer
|
||||
import net.minecraft.client.renderer.LightTexture
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.block.ModelBlockRenderer
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
|
||||
import net.minecraft.world.level.LightLayer
|
||||
import net.minecraft.world.level.dimension.DimensionType
|
||||
import net.minecraft.world.level.lighting.BlockLightEngine
|
||||
import org.neoflock.neocomputers.NeoComputers
|
||||
import org.neoflock.neocomputers.entity.RackEntity
|
||||
import org.neoflock.neocomputers.item.RackItem
|
||||
|
||||
class RackEntityRenderer(val context: BlockEntityRendererProvider.Context) : BlockEntityRenderer<RackEntity> {
|
||||
|
||||
override fun render(ent: RackEntity, partialTick: Float, poseStack: PoseStack, source: MultiBufferSource, packedLight: Int, packedOverlay: Int) {
|
||||
poseStack.pushPose()
|
||||
poseStack.translate(1/16f, 11/16f, 1/16f)
|
||||
|
||||
val render_slot = 2 // this is purely temporary type shit like true alpha shit, anyway it go to 0-3, change and test it if you want
|
||||
poseStack.translate(0f, (render_slot)*-3/16f, 0f)
|
||||
val server = object : RackItem {}
|
||||
server.render(source, poseStack, packedLight) // who knows atp
|
||||
poseStack.popPose()
|
||||
}
|
||||
}
|
||||
56
src/main/kotlin/org/neoflock/neocomputers/item/RackItem.kt
Normal file
56
src/main/kotlin/org/neoflock/neocomputers/item/RackItem.kt
Normal file
@@ -0,0 +1,56 @@
|
||||
package org.neoflock.neocomputers.item
|
||||
|
||||
import com.mojang.blaze3d.shaders.Shader
|
||||
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
import com.mojang.blaze3d.vertex.VertexFormat
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.RenderStateShard
|
||||
import net.minecraft.client.renderer.RenderType
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import org.neoflock.neocomputers.NeoComputers
|
||||
|
||||
interface RackItem {
|
||||
// companion object {
|
||||
// val RENDER_TYPE = {l: ResourceLocation ->
|
||||
// RenderType.create("nc_server", DefaultVertexFormat.POSITION_COLOR_TEX_LIGHTMAP, VertexFormat.Mode.QUADS, RenderType.SMALL_BUFFER_SIZE, RenderType.CompositeState.builder()
|
||||
// .setShaderState(RenderStateShard.ShaderStateShard.POSITION_COLOR_TEX_LIGHTMAP_SHADER)
|
||||
// .setLightmapState(RenderStateShard.LIGHTMAP)
|
||||
// .setTextureState(RenderStateShard.TextureStateShard(l, false, false))
|
||||
// .createCompositeState(false))
|
||||
// }
|
||||
// }
|
||||
val TOP_TEX: ResourceLocation
|
||||
get() = ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "textures/block/generic_top.png")
|
||||
|
||||
val FRONT_TEX: ResourceLocation
|
||||
get() = ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "textures/block/rack_server.png")
|
||||
|
||||
fun render(source: MultiBufferSource, stack: PoseStack, light: Int, v_offset: Float = 2f) {
|
||||
val pose = stack.last()
|
||||
|
||||
|
||||
// var buffer = source.getBuffer(RenderType.gui()) // TODO: correct rendertype
|
||||
var buffer = source.getBuffer(RenderType.entitySolid(TOP_TEX))
|
||||
// val u1 = 1/16f
|
||||
buffer.addVertex(pose, 0f, 0f, 0f).setUv(1/16f, 15/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, -1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 14/16f, 0f, 0f).setUv(1/16f, 1/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, -1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 14/16f, 0f, 14/16f).setUv(15/16f, 1/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, -1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 0f, 0f, 14/16f).setUv(15/16f, 1/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, -1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
|
||||
buffer.addVertex(pose, 0f, 3/16f, 14/16f).setUv(15/16f, 1/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, 1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 14/16f, 3/16f, 14/16f).setUv(15/16f, 15/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, 1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 14/16f, 3/16f, 0f).setUv(1/16f, 15/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, 1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 0f, 3/16f, 0f).setUv(1/16f, 1/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 0f, 1f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
|
||||
buffer = source.getBuffer(RenderType.entitySolid(FRONT_TEX))
|
||||
buffer.addVertex(pose, 14/16f, 3/16f, 14/16f).setUv(1/16f, v_offset/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 1f, 0f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 14/16f, 0f, 14/16f).setUv(1/16f, (v_offset+3)/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 1f, 0f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 14/16f, 0/16f, 0/16f).setUv(15/16f, (v_offset+3)/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 1f, 0f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
buffer.addVertex(pose, 14/16f, 3/16f, 0/16f).setUv(15/16f, v_offset/16f).setColor(1f, 1f, 1f, 1f).setLight(light).setNormal(pose, 1f, 0f, 0f).setOverlay(OverlayTexture.NO_OVERLAY)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"variants": {
|
||||
"": { "model": "neocomputers:block/rack"}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"parent": "minecraft:block/block",
|
||||
"render_type": "minecraft:solid",
|
||||
"textures": {
|
||||
"side": "neocomputers:block/rack_side",
|
||||
"top": "neocomputers:block/generic_top"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [0, 0, 0],
|
||||
"to": [1, 16, 16],
|
||||
"faces": {
|
||||
"west": { "uv": [0, 0, 16, 16], "texture": "side", "tint_index": 0 },
|
||||
"east": { "uv": [0, 0, 16, 16], "texture": "side", "tint_index": 0 },
|
||||
"north": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 },
|
||||
"south": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 },
|
||||
"up": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 },
|
||||
"down": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 }
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 0, 0],
|
||||
"to": [16, 16, 1],
|
||||
"faces": {
|
||||
"north": { "uv": [0, 0, 15, 16], "texture": "side", "tint_index": 0 },
|
||||
"south": { "uv": [1, 0, 16, 16], "texture": "side", "tint_index": 0 },
|
||||
"west": { "uv": [0, 0, 1, 16], "texture": "side", "tint_index": 0 },
|
||||
"east": { "uv": [0, 0, 1, 16], "texture": "side", "tint_index": 0 },
|
||||
"up": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 },
|
||||
"down": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 }
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 0, 15],
|
||||
"to": [16, 16, 16],
|
||||
"faces": {
|
||||
"north": { "uv": [0, 0, 15, 16], "texture": "side", "tint_index": 0 },
|
||||
"south": { "uv": [1, 0, 16, 16], "texture": "side", "tint_index": 0 },
|
||||
"west": { "uv": [0, 0, 1, 16], "texture": "side", "tint_index": 0 },
|
||||
"east": { "uv": [0, 0, 1, 16], "texture": "side", "tint_index": 0 },
|
||||
"up": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 },
|
||||
"down": { "uv": [0, 0, 16, 1], "texture": "side", "tint_index": 0 }
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 0, 1],
|
||||
"to": [16, 2, 15],
|
||||
"faces": {
|
||||
"north": { "uv": [0, 0, 1, 16], "texture": "top", "tint_index": 0 },
|
||||
"south": { "uv": [0, 0, 1, 16], "texture": "top", "tint_index": 0 },
|
||||
"west": { "uv": [0, 0, 1, 16], "texture": "top", "tint_index": 0 },
|
||||
"east": { "uv": [0, 0, 1, 16], "texture": "top", "tint_index": 0 },
|
||||
"up": { "uv": [2, 1, 16, 15], "texture": "top", "tint_index": 0 },
|
||||
"down": { "uv": [0, 0, 1, 1], "texture": "top", "tint_index": 0 }
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [1, 14, 1],
|
||||
"to": [16, 16, 15],
|
||||
"faces": {
|
||||
"north": { "uv": [0, 0, 1, 16], "texture": "top", "tint_index": 0 },
|
||||
"south": { "uv": [0, 0, 1, 16], "texture": "top", "tint_index": 0 },
|
||||
"west": { "uv": [0, 0, 1, 16], "texture": "top", "tint_index": 0 },
|
||||
"east": { "uv": [1, 0, 15, 2], "texture": "top", "tint_index": 0 },
|
||||
"up": { "uv": [1, 1, 16, 15], "texture": "top", "tint_index": 0 },
|
||||
"down": { "uv": [0, 0, 1, 1], "texture": "top", "tint_index": 0 }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 328 B |
Binary file not shown.
|
After Width: | Height: | Size: 514 B |
Binary file not shown.
|
After Width: | Height: | Size: 491 B |
Binary file not shown.
|
After Width: | Height: | Size: 531 B |
Reference in New Issue
Block a user