Compare commits
No commits in common. "9f0e679dd10da94bfbbbed3a05022562a52ef258" and "9188fcaef1914dad078424a6aab4263beb4c2040" have entirely different histories.
9f0e679dd1
...
9188fcaef1
7 changed files with 20 additions and 123 deletions
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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());
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue