Compare commits
No commits in common. "497ae9149b816ca09b57be002a85c10a7cb28bfd" and "a71bd7762cb2ba6dd9570d38c34e54e398c9e406" have entirely different histories.
497ae9149b
...
a71bd7762c
|
@ -1,19 +1,3 @@
|
|||
# Блоки и функционал
|
||||
## Высокий приоритет
|
||||
Это критично прямо сейчас
|
||||
* Добавить коричневые, жёлтые, красные и зелёные блоки.
|
||||
* Сделать datagen для ступеней и полублоков, затем добавить их
|
||||
|
||||
## Средний приоритет
|
||||
Нужно до 1.0, но не полностью ломает мод
|
||||
* Механика окон
|
||||
* Двери с ключами
|
||||
* Духовка
|
||||
|
||||
## Низкий приоритет
|
||||
* Терминал
|
||||
|
||||
|
||||
=== ADD BLOCKS/FEATURES ===
|
||||
* Add brown+yellow+red+green blocks
|
||||
* Add slab and stair variations
|
||||
|
@ -33,6 +17,4 @@
|
|||
* Good README.md and icon, assets, screenshots etc.
|
||||
|
||||
=== ACHIEVEMENTS ===
|
||||
Kolkhoz warrior - kill a zombie, skeleton, creeper and spider with a sickle
|
||||
|
||||
=== Блоки и функционал ===
|
||||
Kolkhoz warrior - kill a zombie, skeleton, creeper and spider with a sickle
|
Before Width: | Height: | Size: 177 KiB |
Before Width: | Height: | Size: 622 KiB |
Before Width: | Height: | Size: 754 KiB |
Before Width: | Height: | Size: 485 KiB |
|
@ -4,9 +4,7 @@ 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.rendering.v1.BlockEntityRendererRegistry;
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import su.a71.new_soviet.entity.TVBlockEntity;
|
||||
import su.a71.new_soviet.registration.NSE_Blocks;
|
||||
import su.a71.new_soviet.registration.NSE_Custom;
|
||||
|
||||
|
@ -19,7 +17,5 @@ public class NewSovietClient implements ClientModInitializer {
|
|||
BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.LAMP, RenderLayer.getCutout());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.CEILING_FAN, RenderLayer.getCutout());
|
||||
BlockRenderLayerMap.INSTANCE.putBlock(NSE_Custom.SIREN, RenderLayer.getCutout());
|
||||
|
||||
BlockEntityRendererRegistry.register(NSE_Custom.TV_BLOCK_ENTITY, TVBlockEntityRenderer::new);
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
package su.a71.new_soviet;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.render.VertexConsumerProvider;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
||||
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import su.a71.new_soviet.entity.TVBlockEntity;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class TVBlockEntityRenderer implements BlockEntityRenderer<TVBlockEntity> {
|
||||
public TVBlockEntityRenderer(BlockEntityRendererFactory.Context ctx) {}
|
||||
|
||||
@Override
|
||||
public void render(TVBlockEntity blockEntity, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) {
|
||||
matrices.push();
|
||||
// Rendering stuff here
|
||||
matrices.pop();
|
||||
}
|
||||
}
|
|
@ -24,6 +24,7 @@ import net.minecraft.registry.RegistryWrapper;
|
|||
import net.minecraft.registry.tag.BlockTags;
|
||||
import net.minecraft.util.Util;
|
||||
import su.a71.new_soviet.registration.NSE_Blocks;
|
||||
import su.a71.new_soviet.registration.NSE_Combat;
|
||||
import su.a71.new_soviet.registration.NSE_Custom;
|
||||
import su.a71.new_soviet.registration.NSE_Items;
|
||||
|
||||
|
@ -688,7 +689,6 @@ public class DataGeneration implements DataGeneratorEntrypoint {
|
|||
|
||||
@Override
|
||||
public void generateBlockStateModels(BlockStateModelGenerator blockStateModelGenerator) {
|
||||
// BlockStateModelGenerator.createStairsBlockState(NSE_Blocks.SAND_TILES_STAIRS, new Identifier(NewSoviet.MOD_ID, "sand_tiles_stairs"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -8,6 +8,7 @@ import net.minecraft.util.math.random.Random;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import su.a71.new_soviet.registration.NSE_Blocks;
|
||||
import su.a71.new_soviet.registration.NSE_Combat;
|
||||
import su.a71.new_soviet.registration.NSE_Custom;
|
||||
import su.a71.new_soviet.registration.NSE_Items;
|
||||
|
||||
|
@ -30,5 +31,6 @@ public class NewSoviet implements ModInitializer {
|
|||
NSE_Blocks.initFlame();
|
||||
NSE_Items.init();
|
||||
NSE_Custom.init();
|
||||
NSE_Combat.init();
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
package su.a71.new_soviet.blocks;
|
||||
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.block.piston.PistonBehavior;
|
||||
import net.minecraft.item.ItemPlacementContext;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
|
@ -12,14 +12,14 @@ import net.minecraft.util.math.Direction;
|
|||
import net.minecraft.util.shape.VoxelShape;
|
||||
import net.minecraft.util.shape.VoxelShapes;
|
||||
import net.minecraft.world.BlockView;
|
||||
import su.a71.new_soviet.entity.TVBlockEntity;
|
||||
|
||||
public class TVBlock extends HorizontalFacingBlock implements BlockEntityProvider {
|
||||
public class TVBlock extends HorizontalFacingBlock {
|
||||
public TVBlock(AbstractBlock.Settings settings) {
|
||||
super(settings.sounds(BlockSoundGroup.METAL).pistonBehavior(PistonBehavior.BLOCK).strength(1f, 2f));
|
||||
super(settings.sounds(BlockSoundGroup.METAL).pistonBehavior(PistonBehavior.DESTROY).strength(1f, 2f));
|
||||
setDefaultState(getDefaultState().with(Properties.HORIZONTAL_FACING, Direction.NORTH));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
|
||||
builder.add(Properties.HORIZONTAL_FACING);
|
||||
|
@ -39,9 +39,4 @@ public class TVBlock extends HorizontalFacingBlock implements BlockEntityProvide
|
|||
public BlockState getPlacementState(ItemPlacementContext ctx) {
|
||||
return super.getPlacementState(ctx).with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite());
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntity createBlockEntity(BlockPos pos, BlockState state) {
|
||||
return new TVBlockEntity(pos, state);
|
||||
}
|
||||
}
|
|
@ -1,71 +0,0 @@
|
|||
package su.a71.new_soviet.entity;
|
||||
|
||||
import io.netty.channel.unix.Errors;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.nbt.NbtCompound;
|
||||
import net.minecraft.network.listener.ClientPlayPacketListener;
|
||||
import net.minecraft.network.packet.Packet;
|
||||
import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import su.a71.new_soviet.registration.NSE_Custom;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class TVBlockEntity extends BlockEntity {
|
||||
/*
|
||||
Digit Color
|
||||
0 black
|
||||
1 red
|
||||
2 green
|
||||
3 yellow
|
||||
4 blue
|
||||
5 magenta
|
||||
6 cyan
|
||||
7 white
|
||||
*/
|
||||
public int[][] display;
|
||||
public int DISPLAY_SIZE = 8; // The monitor is 8x8
|
||||
public TVBlockEntity(BlockPos pos, BlockState state) {
|
||||
super(NSE_Custom.TV_BLOCK_ENTITY, pos, state);
|
||||
display = new int[8][8];
|
||||
Arrays.fill(display, new int[]{0, 0, 0, 0, 0, 0, 0, 0});
|
||||
}
|
||||
|
||||
public int getPixel(int x, int y) {
|
||||
if (x > 7 || y > 7 || x < 0 || y < 0) {
|
||||
throw new IndexOutOfBoundsException("Coordinates must be within 0-7 range");
|
||||
}
|
||||
return display[x][y];
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeNbt(NbtCompound nbt) {
|
||||
for (int i = 0; i < DISPLAY_SIZE; i++) {
|
||||
nbt.putIntArray("display_row_" + i, display[i]);
|
||||
}
|
||||
super.writeNbt(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readNbt(NbtCompound nbt) {
|
||||
super.readNbt(nbt);
|
||||
display = new int[8][8];
|
||||
for (int i = 0; i < DISPLAY_SIZE; i++) {
|
||||
display[i] = nbt.getIntArray("display_row_" + i);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Packet<ClientPlayPacketListener> toUpdatePacket() {
|
||||
return BlockEntityUpdateS2CPacket.create(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NbtCompound toInitialChunkDataNbt() {
|
||||
return createNbt();
|
||||
}
|
||||
}
|
48
src/main/java/su/a71/new_soviet/registration/NSE_Combat.java
Normal file
|
@ -0,0 +1,48 @@
|
|||
package su.a71.new_soviet.registration;
|
||||
|
||||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.MapColor;
|
||||
import net.minecraft.item.*;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.sound.BlockSoundGroup;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import su.a71.new_soviet.NewSoviet;
|
||||
import su.a71.new_soviet.blocks.*;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class NSE_Combat {
|
||||
|
||||
public static final LandMineBlock LANDMINE = new LandMineBlock(FabricBlockSettings.create().mapColor(MapColor.LIGHT_GRAY));
|
||||
|
||||
private static final ItemGroup NSE_COMBAT_TAB = FabricItemGroup.builder()
|
||||
.icon(() -> new ItemStack(LANDMINE))
|
||||
.displayName(Text.translatable("itemGroup.new_soviet.combat"))
|
||||
.build();
|
||||
|
||||
|
||||
private static void register(String name, Supplier<? extends Block> supplier, ItemGroup tab) {
|
||||
Registry.register(Registries.BLOCK, new Identifier(NewSoviet.MOD_ID, name), supplier.get());
|
||||
BlockItem blockItem = new BlockItem(supplier.get(), new FabricItemSettings());
|
||||
Registry.register(Registries.ITEM, new Identifier(NewSoviet.MOD_ID, name), blockItem);
|
||||
|
||||
Optional<RegistryKey<ItemGroup>> key = Registries.ITEM_GROUP.getKey(tab);
|
||||
key.ifPresent(itemGroupRegistryKey -> ItemGroupEvents.modifyEntriesEvent(itemGroupRegistryKey).register(content -> {
|
||||
content.add(blockItem);
|
||||
}));
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
Registry.register(Registries.ITEM_GROUP, new Identifier("new_soviet", "combat"), NSE_COMBAT_TAB);
|
||||
register("landmine", () -> LANDMINE, NSE_COMBAT_TAB);
|
||||
|
||||
}
|
||||
}
|
|
@ -4,10 +4,8 @@ import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
|||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.MapColor;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -20,31 +18,24 @@ import net.minecraft.text.Text;
|
|||
import net.minecraft.util.Identifier;
|
||||
import su.a71.new_soviet.NewSoviet;
|
||||
import su.a71.new_soviet.blocks.*;
|
||||
import su.a71.new_soviet.entity.TVBlockEntity;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class NSE_Custom {
|
||||
|
||||
public static final TVBlock TV = new TVBlock(FabricBlockSettings.create().mapColor(MapColor.TERRACOTTA_YELLOW));
|
||||
public static final TVBlock RED_TV = new TVBlock(FabricBlockSettings.create().mapColor(MapColor.TERRACOTTA_RED));
|
||||
public static final TVBlock BROWN_TV = new TVBlock(FabricBlockSettings.create().mapColor(MapColor.TERRACOTTA_BROWN));
|
||||
public static final BlockEntityType<TVBlockEntity> TV_BLOCK_ENTITY = Registry.register(
|
||||
Registries.BLOCK_ENTITY_TYPE,
|
||||
new Identifier(NewSoviet.MOD_ID, "tv_block_entity"),
|
||||
FabricBlockEntityTypeBuilder.create(TVBlockEntity::new, TV, RED_TV, BROWN_TV).build()
|
||||
);
|
||||
public static final RadioBlock RADIO = new RadioBlock();
|
||||
public static final LampBlock LAMP = new LampBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.LANTERN).strength(1f, 1.5f).mapColor(MapColor.WHITE));
|
||||
public static final LightBulbBlock LIGHT_BULB = new LightBulbBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.GLASS).strength(1f, 1.5f).mapColor(MapColor.WHITE));
|
||||
public static final SoundEvent LIGHT_BULB_BROKEN_SOUND = SoundEvent.of(new Identifier(NewSoviet.MOD_ID, "light_bulb_broken_sound"));
|
||||
public static final SoundEvent LIGHT_BULB_BROKEN_SOUND = SoundEvent.of(new Identifier("new_soviet", "light_bulb_broken_sound"));
|
||||
|
||||
public static final CeilingFanBlock CEILING_FAN = new CeilingFanBlock(FabricBlockSettings.create().sounds(BlockSoundGroup.METAL).strength(1f, 1.5f).mapColor(MapColor.WHITE));
|
||||
|
||||
public static final SirenBlock SIREN = new SirenBlock();
|
||||
public static final SoundEvent SIREN_SOUND = SoundEvent.of(new Identifier(NewSoviet.MOD_ID, "siren_sound"));
|
||||
|
||||
public static final LandMineBlock LANDMINE = new LandMineBlock(FabricBlockSettings.create().mapColor(MapColor.LIGHT_GRAY));
|
||||
public static final SoundEvent SIREN_SOUND = SoundEvent.of(new Identifier("new_soviet", "siren_sound"));
|
||||
|
||||
private static final ItemGroup NSE_CUSTOM_TAB = FabricItemGroup.builder()
|
||||
.icon(() -> new ItemStack(TV))
|
||||
|
@ -64,7 +55,7 @@ public class NSE_Custom {
|
|||
}
|
||||
|
||||
public static void init() {
|
||||
Registry.register(Registries.ITEM_GROUP, new Identifier(NewSoviet.MOD_ID, "custom"), NSE_CUSTOM_TAB);
|
||||
Registry.register(Registries.ITEM_GROUP, new Identifier("new_soviet", "custom"), NSE_CUSTOM_TAB);
|
||||
register("tv", () -> TV, NSE_CUSTOM_TAB);
|
||||
register("red_tv", () -> RED_TV, NSE_CUSTOM_TAB);
|
||||
register("brown_tv", () -> BROWN_TV, NSE_CUSTOM_TAB);
|
||||
|
@ -73,9 +64,8 @@ public class NSE_Custom {
|
|||
register("light_bulb", () -> LIGHT_BULB, NSE_CUSTOM_TAB);
|
||||
register("ceiling_fan", () -> CEILING_FAN, NSE_CUSTOM_TAB);
|
||||
register("siren", () -> SIREN, NSE_CUSTOM_TAB);
|
||||
register("landmine", () -> LANDMINE, NSE_CUSTOM_TAB);
|
||||
|
||||
Registry.register(Registries.SOUND_EVENT, new Identifier(NewSoviet.MOD_ID, "siren_sound"), SIREN_SOUND);
|
||||
Registry.register(Registries.SOUND_EVENT, new Identifier(NewSoviet.MOD_ID, "light_bulb_broken_sound"), LIGHT_BULB_BROKEN_SOUND);
|
||||
Registry.register(Registries.SOUND_EVENT, new Identifier("new_soviet", "siren_sound"), SIREN_SOUND);
|
||||
Registry.register(Registries.SOUND_EVENT, new Identifier("new_soviet", "light_bulb_broken_sound"), LIGHT_BULB_BROKEN_SOUND);
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@
|
|||
"itemGroup.new_soviet.building_blocks": "Soviet Building Blocks",
|
||||
"itemGroup.new_soviet.items": "Soviet Items",
|
||||
"itemGroup.new_soviet.custom": "Soviet Additions",
|
||||
"itemGroup.new_soviet.combat": "Soviet Combat",
|
||||
"block.new_soviet.sand_tiles": "Sand Tiles",
|
||||
"block.new_soviet.cracked_sand_tiles": "Cracked Sand Tiles",
|
||||
"block.new_soviet.mossy_sand_tiles": "Mossy Sand Tiles",
|
||||
|
|
Before Width: | Height: | Size: 264 B |
Before Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 260 B |
Before Width: | Height: | Size: 218 B |
Before Width: | Height: | Size: 242 B |