-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add crafting station, wire copper and lithium ore types
- Loading branch information
Showing
57 changed files
with
1,762 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
architectury { | ||
common(rootProject.enabled_platforms.split(",")) | ||
} | ||
|
||
loom { | ||
accessWidenerPath = file("src/main/resources/arctech.accesswidener") | ||
} | ||
|
||
dependencies { | ||
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies | ||
// Do NOT use other classes from fabric loader | ||
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" | ||
// Remove the next line if you don't want to depend on the API | ||
modApi "dev.architectury:architectury:${rootProject.architectury_version}" | ||
} | ||
|
||
publishing { | ||
publications { | ||
mavenCommon(MavenPublication) { | ||
artifactId = rootProject.archives_base_name | ||
from components.java | ||
} | ||
} | ||
|
||
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. | ||
repositories { | ||
// Add repositories to publish to here. | ||
} | ||
} |
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,16 @@ | ||
package com.mrmelon54.ArcTech; | ||
|
||
import com.google.common.base.Suppliers; | ||
import dev.architectury.registry.registries.RegistrarManager; | ||
|
||
import java.util.function.Supplier; | ||
|
||
public class ArcTech { | ||
public static final String MOD_ID = "arctech"; | ||
public static final Supplier<RegistrarManager> MANAGER = Suppliers.memoize(() -> RegistrarManager.get(ArcTech.MOD_ID)); | ||
|
||
public static void init() { | ||
CreativeTab.init(); | ||
BlocksAndItems.init(); | ||
} | ||
} |
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,18 @@ | ||
package com.mrmelon54.ArcTech; | ||
|
||
import com.mrmelon54.ArcTech.block.CraftingStationBlock; | ||
import com.mrmelon54.ArcTech.block.WireCopperBlock; | ||
import net.minecraft.util.valueproviders.UniformInt; | ||
import net.minecraft.world.level.block.Block; | ||
import net.minecraft.world.level.block.DropExperienceBlock; | ||
import net.minecraft.world.level.block.SoundType; | ||
import net.minecraft.world.level.block.state.BlockBehaviour; | ||
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; | ||
import net.minecraft.world.level.material.MapColor; | ||
|
||
public class Blocks { | ||
public static final Block CRAFTING_STATION = new CraftingStationBlock(BlockBehaviour.Properties.of().sound(SoundType.WOOD).strength(2.5f).ignitedByLava()); | ||
public static final Block WIRE_COPPER = new WireCopperBlock(BlockBehaviour.Properties.of().sound(SoundType.COPPER).strength(0.5f).dynamicShape()); | ||
public static final Block LITHIUM_ORE = new DropExperienceBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE).instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.0F, 3.0F), UniformInt.of(3, 7)); | ||
public static final Block DEEPSLATE_LITHIUM_ORE = new DropExperienceBlock(BlockBehaviour.Properties.copy(LITHIUM_ORE).mapColor(MapColor.DEEPSLATE).strength(4.5F, 3.0F).sound(SoundType.DEEPSLATE), UniformInt.of(3, 7)); | ||
} |
29 changes: 29 additions & 0 deletions
29
common/src/main/java/com/mrmelon54/ArcTech/BlocksAndItems.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,29 @@ | ||
package com.mrmelon54.ArcTech; | ||
|
||
import dev.architectury.registry.registries.Registrar; | ||
import net.minecraft.core.registries.Registries; | ||
import net.minecraft.resources.ResourceLocation; | ||
import net.minecraft.world.item.BlockItem; | ||
import net.minecraft.world.item.Item; | ||
import net.minecraft.world.level.block.Block; | ||
|
||
public class BlocksAndItems { | ||
private static final Registrar<Block> blockReg = ArcTech.MANAGER.get().get(Registries.BLOCK); | ||
private static final Registrar<Item> itemReg = ArcTech.MANAGER.get().get(Registries.ITEM); | ||
|
||
public static void init() { | ||
initBlockItem("arctech:crafting_station", Blocks.CRAFTING_STATION, new Item.Properties().stacksTo(61).arch$tab(CreativeTab.ARCTECH_CREATIVE_TAB)); | ||
initBlockItem("arctech:wire_copper", Blocks.WIRE_COPPER, new Item.Properties().arch$tab(CreativeTab.ARCTECH_CREATIVE_TAB)); | ||
initBlockItem("arctech:lithium_ore", Blocks.LITHIUM_ORE, new Item.Properties().arch$tab(CreativeTab.ARCTECH_CREATIVE_TAB)); | ||
initBlockItem("arctech:deepslate_lithium_ore", Blocks.DEEPSLATE_LITHIUM_ORE, new Item.Properties().arch$tab(CreativeTab.ARCTECH_CREATIVE_TAB)); | ||
} | ||
|
||
private static ResourceLocation id(String a) { | ||
return new ResourceLocation(a); | ||
} | ||
|
||
private static void initBlockItem(String loc, Block block, Item.Properties properties) { | ||
blockReg.register(id(loc), () -> block); | ||
itemReg.register(id(loc), () -> new BlockItem(block, properties)); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
common/src/main/java/com/mrmelon54/ArcTech/CreativeTab.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,16 @@ | ||
package com.mrmelon54.ArcTech; | ||
|
||
import dev.architectury.registry.CreativeTabRegistry; | ||
import net.minecraft.core.registries.Registries; | ||
import net.minecraft.network.chat.Component; | ||
import net.minecraft.resources.ResourceLocation; | ||
import net.minecraft.world.item.CreativeModeTab; | ||
import net.minecraft.world.item.ItemStack; | ||
|
||
public class CreativeTab { | ||
public static final CreativeModeTab ARCTECH_CREATIVE_TAB = CreativeTabRegistry.create(Component.translatable("creative-tab.arctech.title"), () -> new ItemStack(Blocks.CRAFTING_STATION)); | ||
|
||
public static void init() { | ||
ArcTech.MANAGER.get().get(Registries.CREATIVE_MODE_TAB).register(new ResourceLocation("creative-tab.arctech"), () -> CreativeTab.ARCTECH_CREATIVE_TAB); | ||
} | ||
} |
79 changes: 79 additions & 0 deletions
79
common/src/main/java/com/mrmelon54/ArcTech/block/CraftingStationBlock.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,79 @@ | ||
package com.mrmelon54.ArcTech.block; | ||
|
||
import net.minecraft.core.BlockPos; | ||
import net.minecraft.core.Direction; | ||
import net.minecraft.world.item.context.BlockPlaceContext; | ||
import net.minecraft.world.level.BlockGetter; | ||
import net.minecraft.world.level.LevelAccessor; | ||
import net.minecraft.world.level.block.Block; | ||
import net.minecraft.world.level.block.RenderShape; | ||
import net.minecraft.world.level.block.SimpleWaterloggedBlock; | ||
import net.minecraft.world.level.block.state.BlockState; | ||
import net.minecraft.world.level.block.state.StateDefinition; | ||
import net.minecraft.world.level.block.state.properties.BlockStateProperties; | ||
import net.minecraft.world.level.block.state.properties.BooleanProperty; | ||
import net.minecraft.world.level.material.Fluid; | ||
import net.minecraft.world.level.material.FluidState; | ||
import net.minecraft.world.level.material.Fluids; | ||
import net.minecraft.world.phys.shapes.CollisionContext; | ||
import net.minecraft.world.phys.shapes.Shapes; | ||
import net.minecraft.world.phys.shapes.VoxelShape; | ||
|
||
public class CraftingStationBlock extends Block implements SimpleWaterloggedBlock { | ||
public static VoxelShape SHAPE = Shapes.or( | ||
Block.box(0, 13, 0, 16, 15, 16), | ||
Block.box(0, 13, 0, 16, 16, 2), | ||
Block.box(0, 13, 0, 2, 16, 16), | ||
Block.box(14, 13, 0, 16, 16, 16), | ||
Block.box(0, 13, 14, 16, 16, 16), | ||
Block.box(0, 0, 0, 3, 15, 3), | ||
Block.box(13, 0, 13, 16, 15, 16), | ||
Block.box(0, 0, 13, 3, 15, 16), | ||
Block.box(13, 0, 0, 16, 15, 3) | ||
); | ||
public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; | ||
|
||
public CraftingStationBlock(Properties properties) { | ||
super(properties); | ||
registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); | ||
} | ||
|
||
public BlockState updateShape(BlockState blockState, Direction direction, BlockState blockState2, LevelAccessor levelAccessor, BlockPos blockPos, BlockPos blockPos2) { | ||
if (blockState.getValue(WATERLOGGED)) { | ||
levelAccessor.scheduleTick(blockPos, Fluids.WATER, Fluids.WATER.getTickDelay(levelAccessor)); | ||
} | ||
|
||
return super.updateShape(blockState, direction, blockState2, levelAccessor, blockPos, blockPos2); | ||
} | ||
|
||
@Override | ||
public RenderShape getRenderShape(BlockState blockState) { | ||
return RenderShape.MODEL; | ||
} | ||
|
||
@Override | ||
public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) { | ||
return SHAPE; | ||
} | ||
|
||
@Override | ||
public boolean canPlaceLiquid(BlockGetter blockGetter, BlockPos blockPos, BlockState blockState, Fluid fluid) { | ||
return fluid == Fluids.WATER; | ||
} | ||
|
||
public BlockState getStateForPlacement(BlockPlaceContext blockPlaceContext) { | ||
FluidState fluidState = blockPlaceContext.getLevel().getFluidState(blockPlaceContext.getClickedPos()); | ||
boolean bl = fluidState.getType() == Fluids.WATER; | ||
return defaultBlockState().setValue(WATERLOGGED, bl); | ||
} | ||
|
||
@Override | ||
public FluidState getFluidState(BlockState blockState) { | ||
return blockState.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(blockState); | ||
} | ||
|
||
@Override | ||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) { | ||
builder.add(WATERLOGGED); | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
common/src/main/java/com/mrmelon54/ArcTech/block/WireBlock.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,9 @@ | ||
package com.mrmelon54.ArcTech.block; | ||
|
||
import net.minecraft.world.level.block.Block; | ||
|
||
public class WireBlock extends Block { | ||
public WireBlock(Properties properties) { | ||
super(properties); | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
common/src/main/java/com/mrmelon54/ArcTech/block/WireCopperBlock.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,7 @@ | ||
package com.mrmelon54.ArcTech.block; | ||
|
||
public class WireCopperBlock extends WireBlock { | ||
public WireCopperBlock(Properties properties) { | ||
super(properties); | ||
} | ||
} |
14 changes: 14 additions & 0 deletions
14
common/src/main/java/com/mrmelon54/ArcTech/expect/LoadModelExpectPlatform.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,14 @@ | ||
package com.mrmelon54.ArcTech.expect; | ||
|
||
import dev.architectury.injectables.annotations.ExpectPlatform; | ||
import net.minecraft.client.resources.model.UnbakedModel; | ||
import net.minecraft.resources.ResourceLocation; | ||
|
||
import java.util.function.Supplier; | ||
|
||
public class LoadModelExpectPlatform { | ||
@ExpectPlatform | ||
public static <T extends UnbakedModel> void loadModel(ResourceLocation id, Supplier<T> supplier) { | ||
throw new AssertionError(); | ||
} | ||
} |
15 changes: 15 additions & 0 deletions
15
common/src/main/java/com/mrmelon54/ArcTech/mixin/MixinTitleScreen.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,15 @@ | ||
package com.mrmelon54.ArcTech.mixin; | ||
|
||
import net.minecraft.client.gui.screens.TitleScreen; | ||
import org.spongepowered.asm.mixin.Mixin; | ||
import org.spongepowered.asm.mixin.injection.At; | ||
import org.spongepowered.asm.mixin.injection.Inject; | ||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; | ||
|
||
@Mixin(TitleScreen.class) | ||
public class MixinTitleScreen { | ||
@Inject(at = @At("HEAD"), method = "init()V") | ||
private void init(CallbackInfo info) { | ||
System.out.println("Hello from example architectury common mixin!"); | ||
} | ||
} |
109 changes: 109 additions & 0 deletions
109
common/src/main/java/com/mrmelon54/ArcTech/wire/WireBakedModel.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,109 @@ | ||
package com.mrmelon54.ArcTech.wire; | ||
|
||
import com.mrmelon54.ArcTech.ArcTech; | ||
import net.fabricmc.api.EnvType; | ||
import net.fabricmc.api.Environment; | ||
import net.minecraft.client.renderer.block.model.BakedQuad; | ||
import net.minecraft.client.renderer.block.model.ItemOverrides; | ||
import net.minecraft.client.renderer.block.model.ItemTransforms; | ||
import net.minecraft.client.renderer.texture.TextureAtlas; | ||
import net.minecraft.client.renderer.texture.TextureAtlasSprite; | ||
import net.minecraft.client.resources.model.BakedModel; | ||
import net.minecraft.client.resources.model.Material; | ||
import net.minecraft.core.Direction; | ||
import net.minecraft.resources.ResourceLocation; | ||
import net.minecraft.util.RandomSource; | ||
import net.minecraft.world.level.block.state.BlockState; | ||
import net.minecraft.world.level.block.state.properties.BlockStateProperties; | ||
import net.minecraft.world.level.block.state.properties.BooleanProperty; | ||
import org.jetbrains.annotations.Nullable; | ||
|
||
import java.util.*; | ||
import java.util.function.Function; | ||
|
||
@Environment(EnvType.CLIENT) | ||
public class WireBakedModel implements BakedModel { | ||
private final Map<ResourceLocation, BakedModel> partModels; | ||
private final TextureAtlasSprite particleTexture; | ||
private static final Material TEXTURE_WIRE_COPPER = new Material(TextureAtlas.LOCATION_BLOCKS, new ResourceLocation(ArcTech.MOD_ID, "part/wire_copper/")); | ||
|
||
private static final ResourceLocation PART_CENTRAL = new ResourceLocation("arctech:part/wire_copper/central"); | ||
private static final ResourceLocation[] PART_SIDE = new ResourceLocation[]{ | ||
new ResourceLocation("arctech:part/wire_copper/up"), | ||
new ResourceLocation("arctech:part/wire_copper/down"), | ||
new ResourceLocation("arctech:part/wire_copper/north"), | ||
new ResourceLocation("arctech:part/wire_copper/south"), | ||
new ResourceLocation("arctech:part/wire_copper/east"), | ||
new ResourceLocation("arctech:part/wire_copper/west"), | ||
}; | ||
private static final BooleanProperty[] PART_PROPERTY = new BooleanProperty[]{ | ||
BlockStateProperties.UP, | ||
BlockStateProperties.DOWN, | ||
BlockStateProperties.NORTH, | ||
BlockStateProperties.SOUTH, | ||
BlockStateProperties.EAST, | ||
BlockStateProperties.WEST, | ||
}; | ||
|
||
WireBakedModel(Map<ResourceLocation, BakedModel> partModels, TextureAtlasSprite particleTexture) { | ||
this.partModels = partModels; | ||
this.particleTexture = particleTexture; | ||
} | ||
|
||
|
||
@Override | ||
public List<BakedQuad> getQuads(@Nullable BlockState blockState, @Nullable Direction direction, RandomSource randomSource) { | ||
if (blockState == null) return List.of(); | ||
List<Boolean> sides = Arrays.stream(PART_PROPERTY).map(new Function<BooleanProperty, Boolean>() { | ||
@Override | ||
public Boolean apply(BooleanProperty booleanProperty) { | ||
return blockState.getValue(booleanProperty); | ||
} | ||
}).toList(); | ||
|
||
// start with central quad | ||
List<BakedQuad> bakedQuads = new ArrayList<>(partModels.get(PART_CENTRAL).getQuads(blockState, direction, randomSource)); | ||
|
||
// add side quads | ||
for (int i = 0; i < sides.size(); i++) { | ||
if (sides.get(i)) | ||
bakedQuads.addAll(partModels.get(PART_SIDE[i]).getQuads(blockState, direction, randomSource)); | ||
} | ||
return bakedQuads; | ||
} | ||
|
||
@Override | ||
public boolean useAmbientOcclusion() { | ||
return false; | ||
} | ||
|
||
@Override | ||
public boolean isGui3d() { | ||
return false; | ||
} | ||
|
||
@Override | ||
public boolean usesBlockLight() { | ||
return false; | ||
} | ||
|
||
@Override | ||
public boolean isCustomRenderer() { | ||
return true; | ||
} | ||
|
||
@Override | ||
public TextureAtlasSprite getParticleIcon() { | ||
return particleTexture; | ||
} | ||
|
||
@Override | ||
public ItemTransforms getTransforms() { | ||
return null; | ||
} | ||
|
||
@Override | ||
public ItemOverrides getOverrides() { | ||
return null; | ||
} | ||
} |
5 changes: 5 additions & 0 deletions
5
common/src/main/java/com/mrmelon54/ArcTech/wire/WireType.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,5 @@ | ||
package com.mrmelon54.ArcTech.wire; | ||
|
||
public enum WireType { | ||
COPPER | ||
} |
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,3 @@ | ||
{ | ||
"accessWidener": "arctech.accesswidener" | ||
} |
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,14 @@ | ||
{ | ||
"required": true, | ||
"package": "com.mrmelon54.ArcTech.mixin", | ||
"compatibilityLevel": "JAVA_17", | ||
"minVersion": "0.8", | ||
"client": [ | ||
"MixinTitleScreen" | ||
], | ||
"mixins": [ | ||
], | ||
"injectors": { | ||
"defaultRequire": 1 | ||
} | ||
} |
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 @@ | ||
accessWidener v2 named |
7 changes: 7 additions & 0 deletions
7
common/src/main/resources/assets/arctech/blockstates/crafting_station.json
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,7 @@ | ||
{ | ||
"variants": { | ||
"": { | ||
"model": "arctech:block/crafting_station" | ||
} | ||
} | ||
} |
7 changes: 7 additions & 0 deletions
7
common/src/main/resources/assets/arctech/blockstates/deepslate_lithium_ore.json
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,7 @@ | ||
{ | ||
"variants": { | ||
"": { | ||
"model": "arctech:block/deepslate_lithium_ore" | ||
} | ||
} | ||
} |
Oops, something went wrong.