Skip to content

Commit

Permalink
Merge pull request #217 from ManasMods/master_sword
Browse files Browse the repository at this point in the history
Master sword
  • Loading branch information
nexonerr authored Aug 30, 2023
2 parents e0adf39 + ea6257f commit d72a1d5
Show file tree
Hide file tree
Showing 130 changed files with 1,855 additions and 346 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// 1.19.2 2023-08-23T20:23:54.8788866 LootTables
// 1.19.2 2023-08-25T15:56:37.4286904 LootTables
2d891dd38aebe5d06ea2a6b4c9a1533a97324ea2 data/unordinary_basics/loot_tables/blocks/acacia_log.json
fab1894dc8e69c683171e47b29a645e6e97cd770 data/unordinary_basics/loot_tables/blocks/acacia_log_slab.json
c5c5610df3573a30e467de223f0974f2a88fda06 data/unordinary_basics/loot_tables/blocks/acacia_log_stairs.json
Expand Down Expand Up @@ -213,6 +213,7 @@ e20499cc7ff92f8ef8d1e3904906702423a8a332 data/unordinary_basics/loot_tables/bloc
1f35f00e62f74aef6b416a330fd79f2cedd40470 data/unordinary_basics/loot_tables/blocks/magenta_wool_stairs.json
bf5ba560db458b7de0d8cbb2ac01c9e4a4e10d99 data/unordinary_basics/loot_tables/blocks/magma_block_slab.json
d14144e813e323be20dbaa16a47584335908af6b data/unordinary_basics/loot_tables/blocks/magma_block_stairs.json
2b2a4bde1a1c86393b28fa3ff9b81ef1ddeed22d data/unordinary_basics/loot_tables/blocks/master_sword_shrine.json
6265ae596de7368904e9e860f5d644582c771c48 data/unordinary_basics/loot_tables/blocks/melon_slab.json
2280212b13c15a43ad36dba64f85f1493755f41f data/unordinary_basics/loot_tables/blocks/melon_stairs.json
ea161257a464b2f22b461876078dab4febcdec76 data/unordinary_basics/loot_tables/blocks/mycelium_slab.json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// 1.19.2 2023-08-23T21:27:40.4597567 Item Models: unordinary_basics
// 1.19.2 2023-08-25T15:56:37.4346909 Item Models: unordinary_basics
c591a65ab6847e5ed4e223cb18d37d8c12c9502c assets/unordinary_basics/models/item/andesite_brick_wall.json
5ce567547fddda86908f7d8019ae022837bf1d93 assets/unordinary_basics/models/item/animal_bait.json
3fa35354859867f37932c7a7447b24132918cc78 assets/unordinary_basics/models/item/barrel_backpack.json
Expand All @@ -7,6 +7,7 @@ fa77afdd737e5e1ca27f8a23decd2bc5224a359f assets/unordinary_basics/models/item/bu
bf17d078bb82d81df6832bd253b54d653efde40e assets/unordinary_basics/models/item/chest_backpack.json
9772ab6e4ab1b878b167551cade62b90fee43fa3 assets/unordinary_basics/models/item/chiseled_soul_sandstone_wall.json
01dcce72c146a1e60af4d996c5f00d54aa04a8bb assets/unordinary_basics/models/item/cut_soul_sandstone_wall.json
c83445154d310a9407b1ff73f58251fe0d66e579 assets/unordinary_basics/models/item/decayed_master_sword.json
7e79e3447f2a6ce7ef01b13eccfa1959f1a1949e assets/unordinary_basics/models/item/diorite_brick_wall.json
592af3fce7e2806bb6a5bb657025d5f3501e7801 assets/unordinary_basics/models/item/dripstone_brick_wall.json
4c1a65d0658434951780fbc0e73e81a6395e91dc assets/unordinary_basics/models/item/equine_tracker.json
Expand All @@ -15,6 +16,8 @@ bf17d078bb82d81df6832bd253b54d653efde40e assets/unordinary_basics/models/item/ch
47517d7c241cf49f8409d444d91b392faa04ba08 assets/unordinary_basics/models/item/granite_brick_wall.json
6baf37e2a4a314d83da934d5196b3180dbfe36f3 assets/unordinary_basics/models/item/item_sorter.json
7aeb40e3fc8a63220b899dc85b6ed634a2d54a9d assets/unordinary_basics/models/item/map_book.json
688db9238fd4601381b9097bf84cc9fff118044a assets/unordinary_basics/models/item/master_sword.json
2cd877cc4df1e44e3e2f2dcf754f845646b6b88c assets/unordinary_basics/models/item/master_sword_shrine.json
3d2ab708f1fd998245fcf681300da04d4753c74a assets/unordinary_basics/models/item/milk_bottle.json
59cf1bbbc6cf48622bf2b4e92b3e75b762011c59 assets/unordinary_basics/models/item/music_disc_queen.json
30f10936ad54d4371665d9bd0a4565654d1713c9 assets/unordinary_basics/models/item/polished_andesite_brick_wall.json
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// 1.19.2 2023-08-27T16:07:23.6958312 Tags for minecraft:worldgen/structure
845b0fda38f04fb44f51691a9953acf48c2d42a7 data/unordinary_basics/tags/worldgen/structure/master_sword_shrine.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// 1.19.2 2023-08-27T16:04:30.9998563 Tags for minecraft:entity_type
70011fc296dd8a255dbdd79d17501368c0d7bd16 data/forge/tags/entity_types/sculk_enemies.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "unordinary_basics:item/decayed_master_sword"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/handheld",
"textures": {
"layer0": "unordinary_basics:item/master_sword"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"parent": "unordinary_basics:block/master_sword_shrine"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"minecraft:warden"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:air"
}
],
"rolls": 1.0
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"unordinary_basics:master_sword_shrine"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
import com.github.manasmods.unordinary_basics.network.Unordinary_BasicsNetwork;
import com.github.manasmods.unordinary_basics.network.toclient.UBInventoryClientSync;
import com.github.manasmods.unordinary_basics.painting.UBPaintings;
import com.github.manasmods.unordinary_basics.registry.Unordinary_BasicsRegistry;
import com.github.manasmods.unordinary_basics.registry.UBRegistry;
import com.github.manasmods.unordinary_basics.utils.TreasureMapForEmeralds;
import com.github.manasmods.unordinary_basics.utils.UBTags;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.core.Direction;
Expand All @@ -21,12 +23,14 @@
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.npc.VillagerProfession;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.saveddata.maps.MapDecoration;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.capabilities.*;
import net.minecraftforge.common.util.LazyOptional;
Expand All @@ -38,6 +42,7 @@
import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.event.entity.player.EntityItemPickupEvent;
import net.minecraftforge.event.level.BlockEvent;
import net.minecraftforge.event.village.VillagerTradesEvent;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.ModList;
Expand All @@ -50,7 +55,6 @@
import org.apache.logging.log4j.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.openjdk.nashorn.internal.objects.annotations.Getter;

import java.io.File;
import java.io.FileOutputStream;
Expand All @@ -62,27 +66,27 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;

@Mod(Unordinary_Basics.MOD_ID)
public class Unordinary_Basics {
@Mod(UnordinaryBasics.MOD_ID)
public class UnordinaryBasics {
public static final String MOD_ID = "unordinary_basics";
public static final Logger LOGGER = LogManager.getLogger();

public static Unordinary_Basics getInstance() {
public static UnordinaryBasics getInstance() {
return instance;
}

public Optional<ApotheosisIntegration> getApotheosisIntegration() {
return apotheosisIntegration;
}

private static Unordinary_Basics instance;
private static UnordinaryBasics instance;
private Optional<ApotheosisIntegration> apotheosisIntegration = Optional.empty();

public Unordinary_Basics() {
public UnordinaryBasics() {
instance = this;
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
IEventBus forgeBus = MinecraftForge.EVENT_BUS;
Unordinary_BasicsRegistry.register(modEventBus);
UBRegistry.register(modEventBus);
modEventBus.addListener(this::setup);
modEventBus.addListener(this::generateData);
modEventBus.addListener(this::registerCapabilities);
Expand All @@ -92,6 +96,7 @@ public Unordinary_Basics() {
forgeBus.addListener(this::handleUBInventoryDrops);
forgeBus.addListener(this::playerJoinWorld);
forgeBus.addListener(this::playerTick);
forgeBus.addListener(this::villagerTradesEvent);
forgeBus.addGenericListener(Entity.class,this::attachCapabilities);
modEventBus.addListener(UBEntityHandler::entityAttributeEvent);
UBPaintings.register(modEventBus);
Expand All @@ -112,15 +117,17 @@ private void setup(final FMLCommonSetupEvent event) {
}

private void generateData(final GatherDataEvent event) {
event.getGenerator().addProvider(event.includeClient(),new Unordinary_BasicsBlockStateProvider(event));
event.getGenerator().addProvider(event.includeClient(),new Unordinary_BasicsItemModelProvider(event));
event.getGenerator().addProvider(event.includeServer(),new Unordinary_BasicsRecipeProvider(event));
event.getGenerator().addProvider(event.includeServer(),new Unordinary_BasicsLootTableProvider(event));
event.getGenerator().addProvider(event.includeServer(),new Unordinary_BasicsBlockTagProvider(event));
event.getGenerator().addProvider(event.includeServer(),new Unordinary_BasicsFletchingRecipeProvider(event));
Unordinary_BasicsBlockTagProvider blockTagProvider = new Unordinary_BasicsBlockTagProvider(event);
event.getGenerator().addProvider(event.includeClient(),new UBBlockStateProvider(event));
event.getGenerator().addProvider(event.includeClient(),new UBItemModelProvider(event));
event.getGenerator().addProvider(event.includeServer(),new UBRecipeProvider(event));
event.getGenerator().addProvider(event.includeServer(),new UBLootTableProvider(event));
event.getGenerator().addProvider(event.includeServer(),new UBBlockTagProvider(event));
event.getGenerator().addProvider(event.includeServer(),new UBEntityTypeTagProvider(event));
event.getGenerator().addProvider(event.includeServer(),new UBFletchingRecipeProvider(event));
UBBlockTagProvider blockTagProvider = new UBBlockTagProvider(event);
event.getGenerator().addProvider(event.includeServer(),blockTagProvider);
event.getGenerator().addProvider(event.includeServer(),new Unordinary_BasicsItemTagProvider(event, blockTagProvider));
event.getGenerator().addProvider(event.includeServer(),new UBItemTagProvider(event, blockTagProvider));
event.getGenerator().addProvider(event.includeServer(), new UBStructureTagProvider(event.getGenerator(),event.getExistingFileHelper()));
}

private void entityPlaceEvent(final BlockEvent.EntityPlaceEvent event){
Expand All @@ -131,6 +138,12 @@ private void entityPlaceEvent(final BlockEvent.EntityPlaceEvent event){
}
}

private void villagerTradesEvent(final VillagerTradesEvent event){
if (event.getType().equals(VillagerProfession.CARTOGRAPHER)) {
event.getTrades().get(3).add(new TreasureMapForEmeralds(12, UBTags.Structures.MASTER_SWORD_SHRINE,"filled_map.unordinary_basics.master_sword_shrine", MapDecoration.Type.RED_X,2,5));
}
}

public void playerJoinWorld(EntityJoinLevelEvent event){
if(!event.getLevel().isClientSide()) {
if(event.getEntity() instanceof ServerPlayer player) {
Expand Down Expand Up @@ -183,7 +196,7 @@ public <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable D
}
};

event.addCapability(new ResourceLocation(Unordinary_Basics.MOD_ID,"ub_inventory"),provider);
event.addCapability(new ResourceLocation(UnordinaryBasics.MOD_ID,"ub_inventory"),provider);
}

private void handleUBInventoryDrops(final LivingDropsEvent event){
Expand Down Expand Up @@ -277,7 +290,7 @@ private static void copyImprovedTexturesIfMissing() {
if(!target.exists())
try {
dir.mkdirs();
InputStream in = Unordinary_Basics.class.getResourceAsStream("/assets/unordinary_basics/improved_textures.zip");
InputStream in = UnordinaryBasics.class.getResourceAsStream("/assets/unordinary_basics/improved_textures.zip");
FileOutputStream out = new FileOutputStream(target);

byte[] buf = new byte[16384];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,7 @@
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.BaseEntityBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
Expand All @@ -23,7 +19,7 @@
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.common.capabilities.ForgeCapabilities;
import net.minecraftforge.network.NetworkHooks;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -68,7 +64,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockSt
@Override
public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) {
if (pLevel.getBlockEntity(pPos.relative(pState.getValue(FACING).getOpposite())) != null) {
return pLevel.getBlockEntity(pPos.relative(pState.getValue(FACING).getOpposite())).getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent();
return pLevel.getBlockEntity(pPos.relative(pState.getValue(FACING).getOpposite())).getCapability(ForgeCapabilities.ITEM_HANDLER).isPresent();
}
return false;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package com.github.manasmods.unordinary_basics.block;

import com.github.manasmods.unordinary_basics.item.Unordinary_BasicsItems;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.Mirror;
import net.minecraft.world.level.block.Rotation;
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.DirectionProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.BooleanOp;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.NotNull;

public class MasterSwordShrine extends Block {

public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING;

public MasterSwordShrine(Properties properties) {
super(properties);
}

public VoxelShape makeShapeNS(){
VoxelShape shape = Shapes.empty();
shape = Shapes.join(shape, Shapes.create(0.25, 0.0625, 0.25, 0.75, 0.125, 0.75), BooleanOp.OR);
shape = Shapes.join(shape, Shapes.create(0.125, 0, 0.125, 0.875, 0.0625, 0.875), BooleanOp.OR);
shape = Shapes.join(shape, Shapes.create(0.1875, 0.125, 0.46875, 0.8125, 1.25, 0.53125), BooleanOp.OR);

return shape;
}

public VoxelShape makeShapeEW(){
VoxelShape shape = Shapes.empty();
shape = Shapes.join(shape, Shapes.create(0.25, 0.0625, 0.25, 0.75, 0.125, 0.75), BooleanOp.OR);
shape = Shapes.join(shape, Shapes.create(0.125, 0, 0.125, 0.875, 0.0625, 0.875), BooleanOp.OR);
shape = Shapes.join(shape, Shapes.create(0.46875, 0.125, 0.1875, 0.53125, 1.25, 0.8125), BooleanOp.OR);

return shape;
}

@Override
public @NotNull VoxelShape getShape(BlockState pState, @NotNull BlockGetter pLevel, @NotNull BlockPos pPos, @NotNull CollisionContext pContext) {
switch (pState.getValue(FACING)) {
case EAST, WEST -> {
return makeShapeEW();
}
case NORTH, SOUTH -> {
return makeShapeNS();
}
}
return makeShapeNS();
}
/* FACING */
@Override
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite());
}

@Override
public BlockState rotate(BlockState pState, Rotation pRotation) {
return pState.setValue(FACING, pRotation.rotate(pState.getValue(FACING)));
}

@Override
public BlockState mirror(BlockState pState, Mirror pMirror) {
return pState.rotate(pMirror.getRotation(pState.getValue(FACING)));
}

@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) {
pBuilder.add(FACING);
}

@Override
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit) {
if (pPlayer instanceof ServerPlayer serverPlayer) {
if (serverPlayer.getAdvancements().getOrStartProgress(pLevel.getServer().getAdvancements().getAdvancement(new ResourceLocation("minecraft","end/kill_dragon"))).isDone()) {
ItemEntity itemEntity = new ItemEntity(pLevel,pPos.getX(),pPos.getY() + 3,pPos.getZ(),new ItemStack(Unordinary_BasicsItems.MASTER_SWORD));
pLevel.addFreshEntity(itemEntity);
pLevel.setBlock(pPos, Blocks.AIR.defaultBlockState(),1);
System.out.println();
return InteractionResult.SUCCESS;
} else {
pPlayer.displayClientMessage(Component.translatable("unordinary_basics.message.master_sword_deny"),true);
System.out.println("loser");
}
}

return InteractionResult.FAIL;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public class Unordinary_BasicsBlocks {
public static final Block ENCHANTMENT_LIBRARY = null;
@ObjectHolder(registryName = "block", value = "unordinary_basics:item_sorter")
public static final Block ITEM_SORTER = null;
@ObjectHolder(registryName = "block", value = "unordinary_basics:master_sword_shrine")
public static final Block MASTER_SWORD_SHRINE = null;

@ObjectHolder(registryName = "block", value = "unordinary_basics:andesite_bricks")
public static final Block ANDESITE_BRICKS = null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.github.manasmods.unordinary_basics.block.entity;

import com.github.manasmods.unordinary_basics.Unordinary_Basics;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.registries.ObjectHolder;

public class Unordinary_BasicsBlockEntities {
Expand Down
Loading

0 comments on commit d72a1d5

Please sign in to comment.