Compare commits

..

No commits in common. "9f0e679dd10da94bfbbbed3a05022562a52ef258" and "9188fcaef1914dad078424a6aab4263beb4c2040" have entirely different histories.

7 changed files with 20 additions and 123 deletions

View file

@ -1,9 +1,7 @@
package fr.sushi.charmsnfabrics; package fr.sushi.charmsnfabrics;
import fr.sushi.charmsnfabrics.common.CnFRegistries; import fr.sushi.charmsnfabrics.common.CnFRegistries;
import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.common.Mod; import net.neoforged.fml.common.Mod;
import net.neoforged.fml.config.ModConfig; import net.neoforged.fml.config.ModConfig;
import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModContainer;

View file

@ -1,15 +1,11 @@
package fr.sushi.charmsnfabrics.client; package fr.sushi.charmsnfabrics.client;
import fr.sushi.charmsnfabrics.CharmsAndFabrics; import fr.sushi.charmsnfabrics.CharmsAndFabrics;
import fr.sushi.charmsnfabrics.client.datagen.CnFBlockLootProvider;
import fr.sushi.charmsnfabrics.client.datagen.CnFBlockTagsProvider;
import fr.sushi.charmsnfabrics.client.datagen.CnFModelProvider; import fr.sushi.charmsnfabrics.client.datagen.CnFModelProvider;
import fr.sushi.charmsnfabrics.client.model.FlowerCrownModel; import fr.sushi.charmsnfabrics.client.model.FlowerCrownModel;
import fr.sushi.charmsnfabrics.client.renderer.FloralWorkbenchRenderer; import fr.sushi.charmsnfabrics.client.renderer.FloralWorkbenchRenderer;
import fr.sushi.charmsnfabrics.client.renderer.FlowerCrownRenderer; import fr.sushi.charmsnfabrics.client.renderer.FlowerCrownRenderer;
import fr.sushi.charmsnfabrics.common.CnFRegistries; import fr.sushi.charmsnfabrics.common.CnFRegistries;
import net.minecraft.data.loot.LootTableProvider;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModContainer;
@ -17,14 +13,12 @@ import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.common.Mod; import net.neoforged.fml.common.Mod;
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
import net.neoforged.neoforge.client.event.EntityRenderersEvent; import net.neoforged.neoforge.client.event.EntityRenderersEvent;
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
import net.neoforged.neoforge.client.gui.ConfigurationScreen; import net.neoforged.neoforge.client.gui.ConfigurationScreen;
import net.neoforged.neoforge.client.gui.IConfigScreenFactory; import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
import net.neoforged.neoforge.data.event.GatherDataEvent; import net.neoforged.neoforge.data.event.GatherDataEvent;
import top.theillusivec4.curios.api.client.ICurioRenderer; import top.theillusivec4.curios.api.client.ICurioRenderer;
import java.util.List;
import java.util.Set;
@Mod(value = CharmsAndFabrics.MODID, dist = Dist.CLIENT) @Mod(value = CharmsAndFabrics.MODID, dist = Dist.CLIENT)
@EventBusSubscriber(modid = CharmsAndFabrics.MODID, value = Dist.CLIENT) @EventBusSubscriber(modid = CharmsAndFabrics.MODID, value = Dist.CLIENT)
public class CnFClient public class CnFClient
@ -63,11 +57,12 @@ public class CnFClient
private static void onGatherClientData(final GatherDataEvent.Client event) private static void onGatherClientData(final GatherDataEvent.Client event)
{ {
event.createProvider(CnFModelProvider::new); event.createProvider(CnFModelProvider::new);
event.createProvider(
(output, lookup) -> new LootTableProvider(output, Set.of(),
List.of(new LootTableProvider.SubProviderEntry(
CnFBlockLootProvider::new,
LootContextParamSets.BLOCK)), lookup));
event.createProvider(CnFBlockTagsProvider::new);
} }
// @SubscribeEvent
// private static void onScreenAttach(RegisterMenuScreensEvent event)
// {
// event.register(CnFRegistries.MenuTypes.FLORAL_WB_MENU.get(),
// FloralWorkbenchScreen::new);
// }
} }

View file

@ -1,31 +0,0 @@
package fr.sushi.charmsnfabrics.client.datagen;
import fr.sushi.charmsnfabrics.common.CnFRegistries;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.loot.BlockLootSubProvider;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.level.block.Block;
import java.util.Set;
public class CnFBlockLootProvider extends BlockLootSubProvider
{
public CnFBlockLootProvider(HolderLookup.Provider registries)
{
super(Set.of(), FeatureFlags.DEFAULT_FLAGS, registries);
}
@Override
protected Iterable<Block> getKnownBlocks()
{
return CnFRegistries.Blocks.BLOCKS.getEntries().stream()
.map(block -> (Block) block.get())
.toList();
}
@Override
protected void generate()
{
this.dropSelf(CnFRegistries.Blocks.FLORAL_WORKBENCH.get());
}
}

View file

@ -1,25 +0,0 @@
package fr.sushi.charmsnfabrics.client.datagen;
import fr.sushi.charmsnfabrics.CharmsAndFabrics;
import fr.sushi.charmsnfabrics.common.CnFRegistries;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.tags.BlockTags;
import net.neoforged.neoforge.common.data.BlockTagsProvider;
import java.util.concurrent.CompletableFuture;
public class CnFBlockTagsProvider extends BlockTagsProvider
{
public CnFBlockTagsProvider(PackOutput output,
CompletableFuture<HolderLookup.Provider> lookupProvider)
{
super(output, lookupProvider, CharmsAndFabrics.MODID);
}
@Override
protected void addTags(HolderLookup.Provider provider)
{
this.tag(BlockTags.MINEABLE_WITH_AXE).add(CnFRegistries.Blocks.FLORAL_WORKBENCH.get());
}
}

View file

@ -12,10 +12,8 @@ import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs; import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.MapColor;
import net.neoforged.bus.api.IEventBus; import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredBlock; import net.neoforged.neoforge.registries.DeferredBlock;
import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredHolder;
@ -53,12 +51,7 @@ public class CnFRegistries
.setId(ResourceKey.create( .setId(ResourceKey.create(
Registries.BLOCK, Registries.BLOCK,
registry_name)) registry_name))
.noOcclusion() .noOcclusion()));
.mapColor(
MapColor.WOOD)
.strength(2.0f, 3.0f)
.sound(SoundType.WOOD)
.ignitedByLava()));
} }
public static class Tabs public static class Tabs

View file

@ -5,7 +5,10 @@ import fr.sushi.charmsnfabrics.common.CnFRegistries;
import fr.sushi.charmsnfabrics.common.entities.block.FloralWorkbenchBlockEntity; import fr.sushi.charmsnfabrics.common.entities.block.FloralWorkbenchBlockEntity;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.world.*; import net.minecraft.world.Containers;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.BlockPlaceContext;
@ -106,17 +109,13 @@ public class FloralWorkbench extends BaseEntityBlock
if (!level.isClientSide()) if (!level.isClientSide())
{ {
IItemHandler handler = blockentity.getItemHandler(); IItemHandler handler = blockentity.getItemHandler();
ItemStack crown = handler.getStackInSlot(0);
if (hasCrown && emptyHand) if (hasCrown && emptyHand)
{ {
ItemStack extracted = handler.extractItem(0, 1, false); Containers.dropItemStack(level, pos.getX(),
if (!player.hasInfiniteMaterials()) pos.getY() + 1.0f, pos.getZ(), crown);
{
Containers.dropItemStack(level, pos.getX(),
pos.getY() + 1.0f, pos.getZ(), extracted);
}
blockentity.setChanged(); blockentity.setChanged();
level.sendBlockUpdated(pos, state, state, 3);
return InteractionResult.SUCCESS_SERVER; return InteractionResult.SUCCESS_SERVER;
} }
else if (stack.is(CnFRegistries.Items.FLOWER_CROWN.get()) && else if (stack.is(CnFRegistries.Items.FLOWER_CROWN.get()) &&
@ -125,18 +124,15 @@ public class FloralWorkbench extends BaseEntityBlock
handler.insertItem(0, stack.copy(), false); handler.insertItem(0, stack.copy(), false);
stack.consume(1, player); stack.consume(1, player);
blockentity.setChanged(); blockentity.setChanged();
level.sendBlockUpdated(pos, state, state, 3);
return InteractionResult.CONSUME; return InteractionResult.CONSUME;
} } else {
else return InteractionResult.FAIL;
{
return InteractionResult.PASS;
} }
} }
else else
{ {
return !hasCrown ^ emptyHand ? InteractionResult.SUCCESS : return hasCrown ^ emptyHand ? InteractionResult.SUCCESS :
InteractionResult.PASS; InteractionResult.FAIL;
} }
} }
else else

View file

@ -4,16 +4,11 @@ import fr.sushi.charmsnfabrics.common.CnFRegistries;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.Connection;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket;
import net.minecraft.util.RandomSource; import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.items.IItemHandler; import net.neoforged.neoforge.items.IItemHandler;
import net.neoforged.neoforge.items.ItemStackHandler; import net.neoforged.neoforge.items.ItemStackHandler;
import org.jetbrains.annotations.Nullable;
public class FloralWorkbenchBlockEntity extends BlockEntity public class FloralWorkbenchBlockEntity extends BlockEntity
{ {
@ -44,30 +39,6 @@ public class FloralWorkbenchBlockEntity extends BlockEntity
.ifPresent(tag -> itemHandler.deserializeNBT(levelRegistry, tag)); .ifPresent(tag -> itemHandler.deserializeNBT(levelRegistry, tag));
} }
@Override
public CompoundTag getUpdateTag(HolderLookup.Provider registries)
{
CompoundTag tag = super.getUpdateTag(registries);
tag.put("Inventory", itemHandler.serializeNBT(registries));
return tag;
}
@Override
public void handleUpdateTag(CompoundTag nbt,
HolderLookup.Provider lookupProvider)
{
super.handleUpdateTag(nbt, lookupProvider);
nbt.getCompound("Inventory")
.ifPresent(tag -> itemHandler.deserializeNBT(lookupProvider, tag));
}
@Override
public @Nullable Packet<ClientGamePacketListener> getUpdatePacket()
{
return ClientboundBlockEntityDataPacket.create(this);
}
public RandomSource getRandomSource() public RandomSource getRandomSource()
{ {
return this.randomSource; return this.randomSource;