Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
Finxx1 committed Dec 16, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
2 parents d2f0cd2 + adad972 commit dadc08d
Showing 37 changed files with 640 additions and 38 deletions.
26 changes: 7 additions & 19 deletions src/client/java/com/nuclearcrackhead/serverboss/SVBCRClient.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package com.nuclearcrackhead.serverboss;

import com.nuclearcrackhead.serverboss.registry.ModBlockRenderMap;
import com.nuclearcrackhead.serverboss.registry.ModBlocks;
import com.nuclearcrackhead.serverboss.registry.ModBlockEntityTypes;
import com.nuclearcrackhead.serverboss.registry.ModEntityRenderers;
import com.nuclearcrackhead.serverboss.registry.ModItemGroups;
import com.nuclearcrackhead.serverboss.content.block.SpikeBlockEntityRenderer;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry;
import net.fabricmc.fabric.api.client.render.fluid.v1.SimpleFluidRenderHandler;
@@ -20,6 +24,7 @@
import static com.nuclearcrackhead.serverboss.registry.ModFluids.RADIOACTIVE_FLOWING;
import static com.nuclearcrackhead.serverboss.registry.ModFluids.RADIOACTIVE_STILL;

@Environment(EnvType.CLIENT)
public class SVBCRClient implements ClientModInitializer {

@Override
@@ -29,29 +34,12 @@ public void onInitializeClient() {
//registry.register(Identifier.of("svbcr:block/radioactive_flowing"));
registry.register(Identifier.of("svbcr", "block/spikeblock_spikes"));
});*/ // fuck fuck fuck fuck fuck -finxx

FluidRenderHandlerRegistry.INSTANCE.register(RADIOACTIVE_STILL, RADIOACTIVE_FLOWING, new SimpleFluidRenderHandler(
Identifier.of("svbcr:block/radioactive_still"),
Identifier.of("svbcr:block/radioactive_flowing"),
0xFFFFFF
));

BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(),
ModBlocks.SLUDGE,
ModBlocks.CHECKERED_OBSIDIAN,
ModBlocks.CHISELED_OBSIDIAN,
ModBlocks.OBSIDIAN_LIGHT_STRIP
);

BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getTranslucent(),
ModBlocks.PORTAL_GLASS_TRANSPARENT
);

BlockRenderLayerMap.INSTANCE.putFluids(RenderLayer.getTranslucent(), RADIOACTIVE_STILL, RADIOACTIVE_FLOWING);

BlockEntityRendererFactories.register(ModBlockEntityTypes.SPIKE_BLOCK, SpikeBlockEntityRenderer::new);

ModItemGroups.init();
ModBlockRenderMap.init();
ModEntityRenderers.init();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.nuclearcrackhead.serverboss.content.model.entity;

import com.nuclearcrackhead.serverboss.content.entity.AxemachineEntity;
import com.nuclearcrackhead.serverboss.content.render.entity.state.AxemachineEntityRenderState;
import net.minecraft.client.model.*;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.entity.model.EntityModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.Entity;

// Made with Blockbench 4.11.2
// Exported for Minecraft version 1.17+ for Yarn
// Paste this class into your mod and generate all required imports
public class AxemachineEntityModel extends EntityModel<AxemachineEntityRenderState> {
private final ModelPart rightleg;
private final ModelPart leftleg;
private final ModelPart body;
private final ModelPart rightarm;
private final ModelPart leftarm;
private final ModelPart head;
public AxemachineEntityModel(ModelPart root) {
super(root);
this.rightleg = root.getChild("rightleg");
this.leftleg = root.getChild("leftleg");
this.body = root.getChild("body");
this.rightarm = root.getChild("rightarm");
this.leftarm = root.getChild("leftarm");
this.head = root.getChild("head");
}
public static TexturedModelData getTexturedModelData() {
ModelData modelData = new ModelData();
ModelPartData modelPartData = modelData.getRoot();
ModelPartData rightleg = modelPartData.addChild("rightleg", ModelPartBuilder.create().uv(48, 16).cuboid(-4.0F, 0.0F, -2.0F, 4.0F, 14.0F, 4.0F, new Dilation(0.0F))
.uv(48, 34).cuboid(-4.0F, 0.0F, -2.0F, 4.0F, 14.0F, 4.0F, new Dilation(0.25F)), ModelTransform.pivot(0.0F, 10.0F, 0.0F));

ModelPartData leftleg = modelPartData.addChild("leftleg", ModelPartBuilder.create().uv(48, 16).mirrored().cuboid(0.0F, 0.0F, -2.0F, 4.0F, 14.0F, 4.0F, new Dilation(0.0F)).mirrored(false)
.uv(48, 34).mirrored().cuboid(0.0F, 0.0F, -2.0F, 4.0F, 14.0F, 4.0F, new Dilation(0.25F)).mirrored(false), ModelTransform.pivot(0.0F, 10.0F, 0.0F));

ModelPartData body = modelPartData.addChild("body", ModelPartBuilder.create().uv(24, 16).cuboid(-7.0F, -12.0F, -1.0F, 8.0F, 12.0F, 4.0F, new Dilation(0.0F))
.uv(24, 32).cuboid(-7.0F, -12.0F, -1.0F, 8.0F, 12.0F, 4.0F, new Dilation(0.25F)), ModelTransform.pivot(3.0F, 10.0F, -1.0F));

ModelPartData rightarm = modelPartData.addChild("rightarm", ModelPartBuilder.create().uv(8, 16).cuboid(-4.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F))
.uv(8, 32).cuboid(-4.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.25F)), ModelTransform.pivot(-4.0F, 0.0F, 0.0F));

ModelPartData cube_r1 = rightarm.addChild("cube_r1", ModelPartBuilder.create().uv(0, 20).cuboid(0.0F, 0.0F, 0.0F, 4.0F, 12.0F, 0.0F, new Dilation(0.0F)), ModelTransform.of(-7.0F, -2.3F, 0.0F, 0.0F, 0.0F, 0.0873F));

ModelPartData leftarm = modelPartData.addChild("leftarm", ModelPartBuilder.create().uv(8, 48).cuboid(0.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.0F))
.uv(24, 48).cuboid(0.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, new Dilation(0.25F)), ModelTransform.pivot(4.0F, 0.0F, 0.0F));

ModelPartData head = modelPartData.addChild("head", ModelPartBuilder.create().uv(0, 0).cuboid(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new Dilation(0.0F))
.uv(0, 0).cuboid(-1.0F, -12.0F, 0.0F, 4.0F, 4.0F, 0.0F, new Dilation(0.0F))
.uv(32, 0).cuboid(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, new Dilation(0.25F)), ModelTransform.pivot(0.0F, -2.0F, 0.0F));
return TexturedModelData.of(modelData, 64, 64);
}
@Override
public void setAngles(AxemachineEntityRenderState state) {
//figure out what the hell to do with this later
//args from blockbench: AxemachineEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch
}
/*
@Override what do you want from me java
public void render(MatrixStack matrices, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) {
rightleg.render(matrices, vertexConsumer, light, overlay);
leftleg.render(matrices, vertexConsumer, light, overlay);
body.render(matrices, vertexConsumer, light, overlay);
rightarm.render(matrices, vertexConsumer, light, overlay);
leftarm.render(matrices, vertexConsumer, light, overlay);
head.render(matrices, vertexConsumer, light, overlay);
}
*/
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.nuclearcrackhead.serverboss.content.render.entity;

import com.nuclearcrackhead.serverboss.SVBCRClient;
import com.nuclearcrackhead.serverboss.content.entity.AxemachineEntity;
import com.nuclearcrackhead.serverboss.content.model.entity.AxemachineEntityModel;
import com.nuclearcrackhead.serverboss.content.render.entity.state.AxemachineEntityRenderState;
import com.nuclearcrackhead.serverboss.registry.ModEntityRenderers;
import net.minecraft.client.render.entity.EntityRendererFactory;
import net.minecraft.client.render.entity.MobEntityRenderer;
import net.minecraft.client.render.entity.state.EntityRenderState;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.util.Identifier;

public class AxemachineEntityRenderer extends MobEntityRenderer<AxemachineEntity, AxemachineEntityRenderState, AxemachineEntityModel> {

public AxemachineEntityRenderer(EntityRendererFactory.Context context) {
super(context, new AxemachineEntityModel(context.getPart(ModEntityRenderers.MODEL_AXEMACHINE_LAYER)), 0.5f);
}

@Override
public AxemachineEntityRenderState createRenderState() {
return new AxemachineEntityRenderState();
}

@Override
public Identifier getTexture(AxemachineEntityRenderState state) {
return Identifier.of("svbcr", "textures/entity/axemachine.png");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.nuclearcrackhead.serverboss.content.render.entity.state;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.render.entity.state.BipedEntityRenderState;

@Environment(EnvType.CLIENT)
public class AxemachineEntityRenderState extends BipedEntityRenderState {
public boolean stunned;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.nuclearcrackhead.serverboss.registry;

import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry;
import net.fabricmc.fabric.api.client.render.fluid.v1.SimpleFluidRenderHandler;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier;

import static com.nuclearcrackhead.serverboss.registry.ModFluids.RADIOACTIVE_FLOWING;
import static com.nuclearcrackhead.serverboss.registry.ModFluids.RADIOACTIVE_STILL;

public class ModBlockRenderMap {

public static void init() {
/*ClientSpriteRegistryCallback.event(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).register((atlasTexture, registry) -> {
registry.register(Identifier.of("svbcr:block/radioactive_still"));
registry.register(Identifier.of("svbcr:block/radioactive_flowing"));
});*/

FluidRenderHandlerRegistry.INSTANCE.register(RADIOACTIVE_STILL, RADIOACTIVE_FLOWING, new SimpleFluidRenderHandler(
Identifier.of("svbcr:block/radioactive_still"),
Identifier.of("svbcr:block/radioactive_flowing"),
0xFFFFFF
));

BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(),
ModBlocks.SLUDGE,
ModBlocks.CHECKERED_OBSIDIAN,
ModBlocks.CHISELED_OBSIDIAN,
ModBlocks.OBSIDIAN_LIGHT_STRIP,
ModBlocks.VOID_LAMP
);

BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getTranslucent(),
ModBlocks.PORTAL_GLASS_TRANSPARENT,
ModBlocks.WATER_SILK
);

BlockRenderLayerMap.INSTANCE.putFluids(RenderLayer.getTranslucent(), RADIOACTIVE_STILL, RADIOACTIVE_FLOWING);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.nuclearcrackhead.serverboss.registry;

import com.nuclearcrackhead.serverboss.content.model.entity.AxemachineEntityModel;
import com.nuclearcrackhead.serverboss.content.render.entity.AxemachineEntityRenderer;
import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
import net.minecraft.client.render.entity.model.EntityModelLayer;
import net.minecraft.util.Identifier;

public class ModEntityRenderers {

public static final EntityModelLayer MODEL_AXEMACHINE_LAYER = new EntityModelLayer(Identifier.of("svbcr", "axemachine"), "main");

public static void init() {
EntityRendererRegistry.register(ModEntities.AXEMACHINE, AxemachineEntityRenderer::new);

EntityModelLayerRegistry.registerModelLayer(MODEL_AXEMACHINE_LAYER, AxemachineEntityModel::getTexturedModelData);
}

}
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
import com.nuclearcrackhead.serverboss.SVBCR;
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
import net.minecraft.block.Blocks;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.ItemGroups;
import net.minecraft.item.ItemStack;
@@ -31,6 +32,7 @@ public class ModItemGroups {
.icon(() -> new ItemStack(ModBlocks.AGONY))
.displayName(Text.translatable("itemGroup.svbcr.functional_blocks"))
.entries((context, entries) -> {
//entries.add(Blocks.END_GATEWAY); // :[
entries.add(ModBlocks.AGONY);
entries.add(ModBlocks.SLUDGE);
entries.add(ModBlocks.SPIKE_BLOCK);
@@ -50,6 +52,8 @@ public class ModItemGroups {
entries.add(ModBlocks.OBSIDIAN_LIGHT_STRIP);
entries.add(ModBlocks.PORTAL_GLASS_OPAQUE);
entries.add(ModBlocks.PORTAL_GLASS_TRANSPARENT);
entries.add(ModBlocks.VOID_LAMP);
entries.add(ModBlocks.SMOOTH_STONE_STAIRS);
})
.build();

@@ -68,9 +72,13 @@ public static void init() {
ItemGroupEvents.modifyEntriesEvent(ItemGroups.INGREDIENTS).register(entries -> {
entries.add(ModBlocks.WASTEBARREL);
entries.add(ModBlocks.SLUDGE);
entries.add(ModBlocks.WATER_SILK);
entries.add(ModItems.RADIOACTIVE_BUCKET);
entries.add(ModItems.EXAMPLE_ITEM);
});
ItemGroupEvents.modifyEntriesEvent(ItemGroups.SPAWN_EGGS).register(entries -> {
entries.add(ModItems.AXEMACHINE_SPAWN_EGG);
});
}

}
1 change: 1 addition & 0 deletions src/main/java/com/nuclearcrackhead/serverboss/SVBCR.java
Original file line number Diff line number Diff line change
@@ -24,5 +24,6 @@ public void onInitialize() {
ModSounds.init();
ExtraPacks.init();
ModBlockEntityTypes.init();
ModEntities.init();
}
}
Original file line number Diff line number Diff line change
@@ -39,7 +39,6 @@ public SpikeBlock(Settings settings) {
}

public static final MapCodec<SpikeBlock> CODEC = createCodec(SpikeBlock::new);
protected static final VoxelShape SHAPE = Block.createCuboidShape((double)1.0F, (double)0.0F, (double)1.0F, (double)16.0F, (double)15.0F, (double)16.0F);

public MapCodec<? extends SpikeBlock> getCodec() {
return CODEC;
@@ -65,10 +64,6 @@ public void appendTooltip(ItemStack itemStack, Item.TooltipContext context, List
tooltip.add(Text.translatable("block.svbcr.spike_block.tooltip").formatted(Formatting.GRAY));
}

protected VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
return SHAPE;
}

@Override
public void onSteppedOn(World world, BlockPos pos, BlockState state, Entity entity) {
BlockEntity blockEntity = world.getBlockEntity(pos);
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.nuclearcrackhead.serverboss.content.block;

import com.mojang.serialization.MapCodec;
import net.minecraft.block.*;
import net.minecraft.entity.Entity;
import net.minecraft.entity.vehicle.AbstractBoatEntity;
import net.minecraft.fluid.FluidState;
import net.minecraft.fluid.Fluids;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.BlockView;
import net.minecraft.world.World;

public class WaterSilk extends PlantBlock {
public static final MapCodec<WaterSilk> CODEC = createCodec(WaterSilk::new);
protected static final VoxelShape SHAPE = Block.createCuboidShape((double)1.0F, (double)0.0F, (double)1.0F, (double)15.0F, (double)1.5F, (double)15.0F);

public MapCodec<WaterSilk> getCodec() {
return CODEC;
}

public WaterSilk(AbstractBlock.Settings settings) {
super(settings);
}

protected void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) {
super.onEntityCollision(state, world, pos, entity);
if (world instanceof ServerWorld && entity instanceof AbstractBoatEntity) {
world.breakBlock(new BlockPos(pos), true, entity);
}

}

protected VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
return SHAPE;
}

protected boolean canPlantOnTop(BlockState floor, BlockView world, BlockPos pos) {
FluidState fluidState = world.getFluidState(pos);
FluidState fluidState2 = world.getFluidState(pos.up());
return (fluidState.getFluid() == Fluids.WATER || floor.getBlock() instanceof IceBlock) && fluidState2.getFluid() == Fluids.EMPTY;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.nuclearcrackhead.serverboss.content.entity;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.mob.PathAwareEntity;
import net.minecraft.world.World;

public class AxemachineEntity extends PathAwareEntity {

public AxemachineEntity(EntityType<? extends PathAwareEntity> entityType, World world) {
super(entityType, world);
}

}
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@
import com.nuclearcrackhead.serverboss.content.block.*;
import net.minecraft.block.*;
import net.minecraft.block.enums.NoteBlockInstrument;
import net.minecraft.block.piston.PistonBehavior;
import net.minecraft.item.BlockItem;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
@@ -54,7 +55,16 @@ public static void init() {}
public static final Block PORTAL_GLASS_TRANSPARENT = register("portal_glass_trans", TransparentBlock::new,
AbstractBlock.Settings.copy(PORTAL_GLASS_OPAQUE).nonOpaque().allowsSpawning(Blocks::never).suffocates(Blocks::never).blockVision(Blocks::never)
);
public static final Block SPIKE_BLOCK = register("spike_block", SpikeBlock::new, AbstractBlock.Settings.create()); // finxx todo sounds
public static final Block SPIKE_BLOCK = register("spike_block", SpikeBlock::new, AbstractBlock.Settings.create().sounds(BlockSoundGroup.METAL)); // finxx todo sounds

public static final Block VOID_LAMP = register("void_lamp", Block::new,
AbstractBlock.Settings.create().emissiveLighting(ModBlocks::always).luminance(value -> 15).sounds(BlockSoundGroup.STONE)
);
public static final Block WATER_SILK = register("water_silk", WaterSilk::new, AbstractBlock.Settings.create().replaceable().noCollision().mapColor(MapColor.DARK_GREEN).breakInstantly().sounds(BlockSoundGroup.LILY_PAD).nonOpaque().pistonBehavior(PistonBehavior.DESTROY));

public static final Block SMOOTH_STONE_STAIRS = register("smooth_stone_stairs", settings -> new StairsBlock(Blocks.SMOOTH_STONE.getDefaultState(), settings),
AbstractBlock.Settings.copy(Blocks.SMOOTH_STONE)
);

public static Block register(String path, Function<AbstractBlock.Settings, Block> function, AbstractBlock.Settings settings) {
Identifier id = SVBCR.of(path);
Loading

0 comments on commit dadc08d

Please sign in to comment.