完成初步目标

This commit is contained in:
叁玖领域 2025-02-23 16:07:06 +08:00
parent b1efbe3a32
commit 2d2cc256cf
536 changed files with 23817 additions and 149 deletions

1
.gitignore vendored
View File

@ -23,3 +23,4 @@ run
# Files from Forge MDK
forge*changelog.txt
/run-data/

View File

@ -11,7 +11,7 @@ plugins {
id 'org.parchmentmc.librarian.forgegradle' version '1.+'
id 'org.spongepowered.mixin' version '0.7.+'
}
apply plugin: 'org.spongepowered.mixin'
version = mod_version
group = mod_group_id
@ -60,7 +60,7 @@ minecraft {
// However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge.
// This default location is a best practice to automatically put the file in the right place in the final jar.
// See https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ for more information.
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
// Default run configurations.
// These can be tweaked, removed, or duplicated as needed.
@ -119,7 +119,9 @@ minecraft {
// Include resources generated by data generators.
sourceSets.main.resources { srcDir 'src/generated/resources' }
mixin {
add sourceSets.main, "mdp.remaps.json"
add sourceSets.main, mod_id+".refmap.json"
config "${mod_id}.mixins.json"
debug.export = true
}
repositories {
// Put repositories for dependencies here

View File

@ -43,7 +43,7 @@ mod_name=Modern Life Patch
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
mod_license=MIT
# The mod version. See https://semver.org/
mod_version=1.20.1-0.0.1
mod_version=1.20.1-1.4.2
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
# This should match the base package used for the mod sources.
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
@ -51,4 +51,4 @@ mod_group_id=com.r3944realms.modernlifepatch
# The authors of the mod. This is a simple text string that is used for display purposes in the mod list.
mod_authors=r3944Realms
# The description of the mod. This is a simple multiline text string that is used for display purposes in the mod list.
mod_description=A patch was made due to too many flaws in the original author's graphic design.\n?????????????????????
mod_description=A patch was made due to too many flaws in the original author's graphic design.

View File

@ -1,2 +1,2 @@
// 1.20.1 2025-02-22T12:37:42.6884778 Languages: zh_cn
b86030154fc971c84b41c6267f947721dfc55fb7 assets/modernlifepatch/lang/zh_cn.json
// 1.20.1 2025-02-23T15:27:02.7913922 Languages: zh_cn
e226afd730bb6a400c7d958e5b5de12115ca55c9 assets/modernlifepatch/lang/zh_cn.json

View File

@ -1,2 +1,2 @@
// 1.20.1 2025-02-22T12:37:42.7041161 Languages: en_us
72c73ed767b25aa4259ae5b89aae7150a81411fb assets/modernlifepatch/lang/en_us.json
// 1.20.1 2025-02-23T15:27:02.795393 Languages: en_us
52c96d3608bb79f1e560ac298dbc43e3523cec8d assets/modernlifepatch/lang/en_us.json

View File

@ -15,12 +15,18 @@
"gui.tag_filter.modernlifepatch.shelf": "Shelf",
"gui.tag_filter.modernlifepatch.table": "Table",
"itemGroup.modernlifepatch": "Modern Life Patch",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm1": "Silent Alarm",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm2": "Alarm 1",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm3": "Alarm 2",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm4": "Alarm 3",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm5": "Alarm 4",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.silent_alarm": "Silent Alarm",
"modernlifepatch.lang.battery.hover_text.0": "Right click to recharge flashlight (battery will be consumed)",
"modernlifepatch.lang.bicycle.hover_text.0": "Right click to deploy",
"modernlifepatch.lang.bookshelf.hover_text.1": "Right click tp place a book on the shelf",
"modernlifepatch.lang.bookshelf.hover_text.2": "Shift-right-click with an empty hand to remove a book",
"modernlifepatch.lang.camera.hover_text.1": "%d/%d photos stored in memory card",
"modernlifepatch.lang.camera.hover_text.2": "* Does not break when durability hits 0",
"modernlifepatch.lang.camera.hover_text.1": "Sounds an alarm when powered by redstone;",
"modernlifepatch.lang.camera.hover_text.2": "right-click with empty mainhand to change alarm sound",
"modernlifepatch.lang.camera.hover_text.3": "* Take to a printer to print your photos",
"modernlifepatch.lang.canvas.hover_text.block_size": "%f x %f ",
"modernlifepatch.lang.canvas.hover_text.custom_size": "Custom print",
@ -76,7 +82,8 @@
"modernlifepatch.lang.motorboat.hover_text.1": "Right click to deploy",
"modernlifepatch.lang.motorboat.hover_text.2": "Remaining fuel: %f%%",
"modernlifepatch.lang.motorboat.hover_text.3": "Refuel by using a gas can on the deployed boat",
"modernlifepatch.lang.need_rs_power.hover_text.0": "Requires redstone power to operate",
"modernlifepatch.lang.need_rs_power_turn_off.hover_text.0": "Requires redstone power to turn off",
"modernlifepatch.lang.need_rs_power_turn_on.hover_text.0": "Requires redstone power to turn on",
"modernlifepatch.lang.paved_road.hover_text.0": "Slightly increases movement speed of vehicles",
"modernlifepatch.lang.photocopier.hover_text.1": "Interact with a canvas or photograph to make copies",
"modernlifepatch.lang.photocopier.hover_text.2": " * Requires paper",

View File

@ -15,12 +15,18 @@
"gui.tag_filter.modernlifepatch.shelf": "架子",
"gui.tag_filter.modernlifepatch.table": "桌子",
"itemGroup.modernlifepatch": "摩登生活补丁",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm1": "静音警报",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm2": "警报1",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm3": "警报2",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm4": "警报3",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.alarm5": "警报4",
"modernlifepatch.lang.alarm_sound_type.modernlifepatch.silent_alarm": "静音警报",
"modernlifepatch.lang.battery.hover_text.0": "右键消耗为手电筒更换电池",
"modernlifepatch.lang.bicycle.hover_text.0": "右键放置",
"modernlifepatch.lang.bookshelf.hover_text.1": "右键以放置书在书架上",
"modernlifepatch.lang.bookshelf.hover_text.2": "空手按住Shift键+右键即可取下书",
"modernlifepatch.lang.camera.hover_text.1": "内存卡里照片数: %d/%d",
"modernlifepatch.lang.camera.hover_text.2": "* 当耐久掉到0时也不会损坏",
"modernlifepatch.lang.camera.hover_text.1": "红石充能时发出警报",
"modernlifepatch.lang.camera.hover_text.2": "主手空手右击以改变警报声音",
"modernlifepatch.lang.camera.hover_text.3": "* 提供打印机把所拍照冲洗出来",
"modernlifepatch.lang.canvas.hover_text.block_size": "%f x %f",
"modernlifepatch.lang.canvas.hover_text.custom_size": "自定义尺寸画作",
@ -76,7 +82,8 @@
"modernlifepatch.lang.motorboat.hover_text.1": "右键放置",
"modernlifepatch.lang.motorboat.hover_text.2": "燃料剩余量: %f%%",
"modernlifepatch.lang.motorboat.hover_text.3": "对船使用汽油罐来加油",
"modernlifepatch.lang.need_rs_power.hover_text.0": "需要红石充能",
"modernlifepatch.lang.need_rs_power_turn_off.hover_text.0": "需要红石充能才能关闭",
"modernlifepatch.lang.need_rs_power_turn_on.hover_text.0": "需要红石充能才能开启",
"modernlifepatch.lang.paved_road.hover_text.0": "载具在该路上行驶,移速会有所提升",
"modernlifepatch.lang.photocopier.hover_text.1": "可以用于照片或画作的复制",
"modernlifepatch.lang.photocopier.hover_text.2": " * 需要纸",

View File

@ -1,10 +1,12 @@
package com.r3944realms.modernlifepatch;
import com.r3944realms.modernlifepatch.client.blockentity.MirrorBlockEntityRenderer;
import com.r3944realms.modernlifepatch.client.event.CreativeScreenEvents;
import com.r3944realms.modernlifepatch.content.blocks.entities.ModBlockEntityType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.EntityRenderersEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
@ -21,7 +23,7 @@ public abstract class ClientEventHandler {
event.enqueueWork(() -> {
});
if(ModernLifePatch.isModernLifeLoaded) MinecraftForge.EVENT_BUS.register(new CreativeScreenEvents());
}
@SubscribeEvent
public static void onRegisterRenderer (EntityRenderersEvent.RegisterRenderers event) {

View File

@ -2,7 +2,6 @@ package com.r3944realms.modernlifepatch;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.PackResources;
import net.minecraft.server.packs.PackType;
import net.minecraft.server.packs.repository.Pack;
import net.minecraft.server.packs.repository.PackSource;
@ -15,7 +14,6 @@ import net.minecraftforge.resource.PathPackResources;
import java.nio.file.Path;
import static com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue.MOD_RESOURCE_DESC;
import static com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue.MOD_RESOURCE_NAME;
public abstract class CommonEventHandler {

View File

@ -2,6 +2,7 @@ package com.r3944realms.modernlifepatch;
import com.r3944realms.modernlifepatch.content.blocks.ModBlocks;
import com.r3944realms.modernlifepatch.content.blocks.entities.ModBlockEntityType;
import com.r3944realms.modernlifepatch.content.item.ModCreativeTabs;
import com.r3944realms.modernlifepatch.content.item.ModItems;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
@ -21,8 +22,9 @@ public class ModernLifePatch {
public ModernLifePatch() {
MinecraftForge.EVENT_BUS.register(this);
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
ModItems.ITEMS.register(modEventBus);
ModBlocks.BLOCKS.register(modEventBus);
ModBlockEntityType.BLOCK_ENTITY_TYPE.register(modEventBus);
ModItems.register(modEventBus);
ModBlocks.register(modEventBus);
ModCreativeTabs.register(modEventBus);
ModBlockEntityType.register(modEventBus);
}
}

View File

@ -0,0 +1,267 @@
package com.r3944realms.modernlifepatch.client.event;
import com.dairymoose.modernlife.core.CustomBlocks;
import com.dairymoose.modernlife.core.ModernLife;
import com.google.common.collect.Lists;
import com.r3944realms.modernlifepatch.ModernLifePatch;
import com.r3944realms.modernlifepatch.client.gui.widget.button.IconButton;
import com.r3944realms.modernlifepatch.client.gui.widget.button.TagButton;
import com.r3944realms.modernlifepatch.content.item.ModCreativeTabs;
import com.r3944realms.modernlifepatch.content.tag.ModTags;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import com.r3944realms.modernlifepatch.modInterface.CreativeItem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen;
import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.client.event.ClientPlayerNetworkEvent;
import net.minecraftforge.client.event.ScreenEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.*;
/**
* Author: MrCrayfish
*/
public class CreativeScreenEvents {
private static final ResourceLocation ICONS = new ResourceLocation(ModernLifePatch.MOD_ID,"textures/gui/icons.png");
private static int startIndex;
private static CreativeModeTab lastTab = CreativeModeTabs.getDefaultTab();
private List<TagFilter> filters;
private List<TagButton> buttons;
private Button btnScrollUp;
private Button btnScrollDown;
private Button btnEnableAll;
private Button btnDisableAll;
private int guiCenterX = 0;
private int guiCenterY = 0;
@SubscribeEvent
public void onPlayerLogout(ClientPlayerNetworkEvent.LoggingOut event) {
this.filters = null;
}
@SubscribeEvent
public void onScreenInit(ScreenEvent.Init.Post event) {
if(event.getScreen() instanceof CreativeModeInventoryScreen creativeScreen) {
if(this.filters == null) {
this.compileItems();
}
this.guiCenterX = creativeScreen.getGuiLeft();
this.guiCenterY = creativeScreen.getGuiTop();
this.buttons = this.createTagButtons();
this.buttons.forEach(event::addListener);
event.addListener(this.btnScrollUp = new IconButton(this.guiCenterX - 22, this.guiCenterY - 12, button -> {
if(startIndex > 0) startIndex--;
this.updateTagButtons();
}, ICONS, 64, 0));
event.addListener(this.btnScrollDown = new IconButton(this.guiCenterX - 22, this.guiCenterY + 127, button -> {
if(startIndex <= filters.size() - 4 - 1) startIndex++;
this.updateTagButtons();
}, ICONS, 80, 0));
event.addListener(this.btnEnableAll = new IconButton(this.guiCenterX - 50, this.guiCenterY + 10, button -> {
this.filters.forEach(filters -> filters.setEnabled(true));
this.buttons.forEach(TagButton::updateState);
Screen screen = Minecraft.getInstance().screen;
if(screen instanceof CreativeModeInventoryScreen)
{
this.updateItems((CreativeModeInventoryScreen) screen);
}
}, ICONS, 96, 0));
this.btnEnableAll.setTooltip(Tooltip.create(Component.translatable(ModLangKeyValue.CREATIVE_TAB_ENABLE_FILTERS_BUTTON.getKey())));
event.addListener(this.btnDisableAll = new IconButton(this.guiCenterX - 50, this.guiCenterY + 32, button -> {
this.filters.forEach(filters -> filters.setEnabled(false));
this.buttons.forEach(TagButton::updateState);
Screen screen = Minecraft.getInstance().screen;
if(screen instanceof CreativeModeInventoryScreen)
{
this.updateItems((CreativeModeInventoryScreen) screen);
}
}, ICONS, 112, 0));
this.btnDisableAll.setTooltip(Tooltip.create(Component.translatable(ModLangKeyValue.CREATIVE_TAB_DISABLE_FILTERS_BUTTON.getKey())));
this.onSwitchCreativeTab(CreativeModeInventoryScreen.selectedTab, creativeScreen);
}
}
@SubscribeEvent
public void onScreenDrawPost(ScreenEvent.Render.Post event) {
if(event.getScreen() instanceof CreativeModeInventoryScreen creativeScreen) {
this.guiCenterX = creativeScreen.getGuiLeft();
this.guiCenterY = creativeScreen.getGuiTop();
CreativeModeTab tab = CreativeModeInventoryScreen.selectedTab;
if(lastTab != tab) {
this.onSwitchCreativeTab(tab, creativeScreen);
lastTab = tab;
}
}
}
private void onSwitchCreativeTab(CreativeModeTab tab, CreativeModeInventoryScreen screen) {
if(tab == ModCreativeTabs.MAIN.get()) {
this.btnScrollUp.visible = true;
this.btnScrollDown.visible = true;
this.btnEnableAll.visible = true;
this.btnDisableAll.visible = true;
this.updateTagButtons();
this.updateItems(screen);
} else {
this.btnScrollUp.visible = false;
this.btnScrollDown.visible = false;
this.btnEnableAll.visible = false;
this.btnDisableAll.visible = false;
this.buttons.forEach(button -> button.visible = false);
}
}
private List<TagButton> createTagButtons() {
List<TagButton> tagButtons = new ArrayList<>();
for(TagFilter filter : this.filters) {
TagButton tagButton = new TagButton(this.guiCenterX - 28, this.guiCenterY, filter, button -> {
Screen screen = Minecraft.getInstance().screen;
if(screen instanceof CreativeModeInventoryScreen creativeScreen) {
this.updateItems(creativeScreen);
}
});
tagButton.visible = false;
tagButtons.add(tagButton);
}
return tagButtons;
}
private void updateTagButtons() {
this.buttons.forEach(button -> button.visible = false);
for(int i = startIndex; i < startIndex + 4 && i < this.buttons.size(); i++) {
TagButton button = this.buttons.get(i);
button.setY(this.guiCenterY + 29 * (i - startIndex) + 11);
button.visible = true;
}
this.btnScrollUp.active = startIndex > 0;
this.btnScrollDown.active = startIndex <= this.filters.size() - 4 - 1;
}
private void updateItems(CreativeModeInventoryScreen screen) {
CreativeModeInventoryScreen.ItemPickerMenu menu = screen.getMenu();
LinkedHashSet<Item> categorisedItems = new LinkedHashSet<>();
for(TagFilter filter : this.filters) {
if(filter.isEnabled()) {
categorisedItems.addAll(filter.getItems());
}
}
NonNullList<ItemStack> newItems = NonNullList.create();
for(Item item : categorisedItems) {
if(item instanceof CreativeItem creativeItem) {
creativeItem.fill(newItems::add);
} else {
newItems.add(new ItemStack(item));
}
}
menu.items.clear();
menu.items.addAll(newItems);
menu.items.sort(Comparator.comparingInt(o -> Item.getId(o.getItem())));
menu.scrollTo(0);
}
private void compileItems() {
TagFilter[] filters = new TagFilter[] {
new TagFilter(ModTags.Items.GENERAL, new ItemStack(CustomBlocks.BLOCK_INSET_LIGHT.get())),
new TagFilter(ModTags.Items.KITCHEN, new ItemStack(CustomBlocks.BLOCK_MICROWAVE.get())),
new TagFilter(ModTags.Items.BEDCHAMBER, new ItemStack(CustomBlocks.BLOCK_BIRCH_NIGHT_STAND.get())),
new TagFilter(ModTags.Items.BATHROOM, new ItemStack(CustomBlocks.BLOCK_BATHTUB.get())),
new TagFilter(ModTags.Items.LOUNGE, new ItemStack(CustomBlocks.BLOCK_COFFEE_MUG.get())),
new TagFilter(ModTags.Items.OUTSIDE, new ItemStack(CustomBlocks.BLOCK_HEDGE.get())),
new TagFilter(ModTags.Items.TOOL, new ItemStack(CustomBlocks.ITEM_HANDGUN.get())),
new TagFilter(ModTags.Items.SEAT, new ItemStack(CustomBlocks.BLOCK_PINK_SOFA.get())),
new TagFilter(ModTags.Items.TABLE, new ItemStack(CustomBlocks.BLOCK_BIRCH_ROUND_TABLE.get())),
new TagFilter(ModTags.Items.SHELF, new ItemStack(CustomBlocks.BLOCK_MODERN_BIRCH_BOOKSHELF.get())),
new TagFilter(ModTags.Items.DOOR, new ItemStack(CustomBlocks.BLOCK_JAIL_DOOR.get()))
};
ForgeRegistries.ITEMS.getValues().stream()
.filter(item -> {
String namespace = Objects.requireNonNull(ForgeRegistries.ITEMS.getKey(item)).getNamespace();
return namespace.equals(ModernLifePatch.MOD_ID) || namespace.equals(ModernLife.MODID);
})
.forEach(item -> {
ForgeRegistries.ITEMS.getHolder(item).ifPresent(holder -> {
holder.tags().forEach(tagKey -> {
for(TagFilter filter : filters) {
if(tagKey == filter.getTag()) {
filter.add(item);
}
}
});
});
});
this.filters = new ArrayList<>();
this.filters.addAll(Arrays.asList(filters));
}
/**
* Author: MrCrayfish
*/
public static class TagFilter {
private final List<Item> items = Lists.newArrayList();
private final TagKey<Item> tag;
private final Component name;
private final ItemStack icon;
private boolean enabled = true;
public TagFilter(TagKey<Item> tag, ItemStack icon) {
this.tag = tag;
this.name = Component.translatable(String.format("gui.tag_filter.%s.%s", tag.location().getNamespace(), tag.location().getPath().replace("/", ".")));
this.icon = icon;
}
public TagKey<Item> getTag() {
return tag;
}
public ItemStack getIcon() {
return this.icon;
}
public Component getName() {
return this.name;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
public boolean isEnabled() {
return this.enabled;
}
public void add(Item item) {
this.items.add(item);
}
public void add(Block block) {
this.items.add(Item.byBlock(block));
}
public List<Item> getItems() {
return this.items;
}
}
}

View File

@ -0,0 +1,43 @@
package com.r3944realms.modernlifepatch.client.gui.widget.button;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipPositioner;
import net.minecraft.client.gui.screens.inventory.tooltip.DefaultTooltipPositioner;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.NotNull;
/**
* Author: MrCrayfish
*/
public class IconButton extends Button {
private ResourceLocation iconResource ;
private int iconU;
private int iconV;
public IconButton(int x, int y, OnPress onpress, ResourceLocation iconResource, int iconU, int iconV) {
super(x, y, 20, 20, CommonComponents.EMPTY, onpress, DEFAULT_NARRATION);
this.iconResource = iconResource;
this.iconU = iconU;
this.iconV = iconV;
}
public void setIcon(ResourceLocation iconResource, int iconU, int iconV) {
this.iconResource = iconResource;
this.iconU = iconU;
this.iconV = iconV;
}
@Override
protected void renderWidget(@NotNull GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) {
super.renderWidget(pGuiGraphics, pMouseX, pMouseY, pPartialTick);
if(!this.active) {
RenderSystem.setShaderColor(0.5F, 0.5F, 0.5F, 1.0F);
}
pGuiGraphics.blit(this.iconResource, this.getX() + 2, this.getY() + 2, this.iconU, this.iconV, 16, 16);
}
@Override
protected @NotNull ClientTooltipPositioner createTooltipPositioner() {
return DefaultTooltipPositioner.INSTANCE;
}
}

View File

@ -0,0 +1,76 @@
package com.r3944realms.modernlifepatch.client.gui.widget.button;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.*;
import com.r3944realms.modernlifepatch.client.event.CreativeScreenEvents;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipPositioner;
import net.minecraft.client.gui.screens.inventory.tooltip.DefaultTooltipPositioner;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.joml.Matrix4f;
/**
* Author: MrCrayfish
*/
public class TagButton extends Button {
private static final ResourceLocation TABS = new ResourceLocation("textures/gui/container/creative_inventory/tabs.png");
private final CreativeScreenEvents.TagFilter category;
private final ItemStack stack;
private boolean toggled;
public TagButton(int x, int y, CreativeScreenEvents.TagFilter category, OnPress onPress) {
super(x, y, 32, 26, CommonComponents.EMPTY, onPress, DEFAULT_NARRATION);
this.category = category;
this.stack = category.getIcon();
this.toggled = category.isEnabled();
this.setTooltip(Tooltip.create(category.getName()));
}
public CreativeScreenEvents.TagFilter getCategory() {
return this.category;
}
@Override
public void onPress() {
this.toggled = !this.toggled;
this.category.setEnabled(this.toggled);
super.onPress();
}
@Override
public void renderWidget(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
int width = this.toggled ? 32 : 28;
int textureX = 26;
int textureY = this.toggled ? 32 : 0;
RenderSystem.setShaderTexture(0, TABS);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, this.alpha);
this.drawRotatedTexture(graphics.pose().last().pose(), this.getX(), this.getY(), textureX, textureY, width, 26);
graphics.renderItem(this.stack, this.getX() + 8, this.getY() + 5);
}
private void drawRotatedTexture(Matrix4f matrix4f, int x, int y, int textureX, int textureY, int width, int height) {
float scaleX = 0.00390625F;
float scaleY = 0.00390625F;
RenderSystem.setShader(GameRenderer::getPositionTexShader);
BufferBuilder builder = Tesselator.getInstance().getBuilder();
builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX);
builder.vertex(matrix4f, x, y + height, 0.0F).uv(((float) (textureX + height) * scaleX), ((float) (textureY) * scaleY)).endVertex();
builder.vertex(matrix4f, x + width, y + height, 0.0F).uv(((float) (textureX + height) * scaleX), ((float) (textureY + width) * scaleY)).endVertex();
builder.vertex(matrix4f, x + width, y, 0.0F).uv(((float) (textureX) * scaleX), ((float) (textureY + width) * scaleY)).endVertex();
builder.vertex(matrix4f, x, y, 0.0F).uv(((float) (textureX) * scaleX), ((float) (textureY) * scaleY)).endVertex();
BufferUploader.drawWithShader(builder.end());
}
public void updateState() {
this.toggled = this.category.isEnabled();
}
@Override
protected @NotNull ClientTooltipPositioner createTooltipPositioner() {
return DefaultTooltipPositioner.INSTANCE;
}
}

View File

@ -14,8 +14,10 @@ import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.Collection;
public class ModBlocks {
public static final DeferredRegister<Block> BLOCKS
private static final DeferredRegister<Block> BLOCKS
= DeferredRegister.create(ForgeRegistries.BLOCKS, ModernLifePatch.MOD_ID);
public static final RegistryObject<MirrorBlock> MIRROR = BLOCKS.register("mirror",
() -> new MirrorBlock(BlockBehaviour.Properties.copy(Blocks.GLASS), MirrorPart.MirrorType.COMMON_MIRROR));
@ -27,7 +29,10 @@ public class ModBlocks {
() -> new MirrorBlock(BlockBehaviour.Properties.copy(Blocks.GLASS), MirrorPart.MirrorType.MASSIVE_MIRROR));
@SuppressWarnings("UnusedReturnValue")
public static <T extends Block> RegistryObject<BlockItem> registerBlockItem(String name , RegistryObject<T> block){
return ModItems.ITEMS.register(name,() -> new BlockItem(block.get(),new Item.Properties()));
return ModItems.register(name,() -> new BlockItem(block.get(),new Item.Properties()));
}
public static Collection<RegistryObject<Block>> getEntries() {
return BLOCKS.getEntries();
}
public static void register(IEventBus bus) {
BLOCKS.register(bus);

View File

@ -12,7 +12,7 @@ import net.minecraftforge.registries.RegistryObject;
import java.util.Set;
public class ModBlockEntityType {
public static final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITY_TYPE
private static final DeferredRegister<BlockEntityType<?>> BLOCK_ENTITY_TYPE
= DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, ModernLifePatch.MOD_ID);
@SuppressWarnings("DataFlowIssue")
public static final RegistryObject<BlockEntityType<MirrorBlockEntity>> MIRROR

View File

@ -24,15 +24,12 @@ import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.level.block.state.properties.EnumProperty;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.level.storage.loot.LootContext;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class MirrorBlock extends HorizontalDirectionalBlock implements EntityBlock, SimpleWaterloggedBlock {
public static final EnumProperty<MirrorPart> PART = ModBlockStateProperties.MIRROR_PART;

View File

@ -0,0 +1,36 @@
package com.r3944realms.modernlifepatch.content.item;
import com.dairymoose.modernlife.core.CustomBlocks;
import com.r3944realms.modernlifepatch.ModernLifePatch;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import com.r3944realms.modernlifepatch.modInterface.CreativeItem;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
public class ModCreativeTabs {
private static final DeferredRegister<CreativeModeTab> CREATIVE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ModernLifePatch.MOD_ID);
public static final RegistryObject<CreativeModeTab> MAIN = CREATIVE_TABS.register("creative_tab", () -> CreativeModeTab.builder()
.title(Component.translatable(ModLangKeyValue.CREATIVE_TAB_NAME.getKey()))
.icon(() -> ModernLifePatch.isModernLifeLoaded ? CustomBlocks.ITEM_CAMERA.get().getDefaultInstance() : Blocks.BARRIER.asItem().getDefaultInstance())
.displayItems((pParameters, pOutput)->{
ModItems.getEntries().forEach(itemRegistryObject -> {
Item item = itemRegistryObject.get();
if (item instanceof CreativeItem creativeItem) {
creativeItem.fill(pOutput::accept);
return;
}
pOutput.accept(item);
});
})
.build());
public static void register(IEventBus bus) {
CREATIVE_TABS.register(bus);
}
}

View File

@ -9,14 +9,24 @@ import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.Collection;
import java.util.function.Supplier;
public class ModItems {
public static final DeferredRegister<Item> ITEMS
private static final DeferredRegister<Item> ITEMS
= DeferredRegister.create(ForgeRegistries.ITEMS, ModernLifePatch.MOD_ID);
public static final RegistryObject<BlockItem> MIRROR_ITEM = ModBlocks.registerBlockItem("mirror", ModBlocks.MIRROR);
public static final RegistryObject<BlockItem> TALL_MIRROR_ITEM = ModBlocks.registerBlockItem("tall_mirror", ModBlocks.TALL_MIRROR);
public static final RegistryObject<BlockItem> LARGE_MIRROR_ITEM = ModBlocks.registerBlockItem("large_mirror", ModBlocks.LARGE_MIRROR);
public static final RegistryObject<BlockItem> MASSIVE_MIRROR_ITEM = ModBlocks.registerBlockItem("massive_mirror", ModBlocks.MASSIVE_MIRROR);
public static RegistryObject<BlockItem> register(String name, Supplier<? extends BlockItem> sup) {
return ITEMS.register(name, sup);
}
public static Collection<RegistryObject<Item>> getEntries() {
return ITEMS.getEntries();
}
public static void register(IEventBus bus) {
ITEMS.register(bus);
}
}

View File

@ -1,6 +1,7 @@
package com.r3944realms.modernlifepatch.datagen;
import com.r3944realms.modernlifepatch.datagen.provider.*;
import com.r3944realms.modernlifepatch.utils.Enum.LanguageEnum;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
@ -8,7 +9,6 @@ import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.data.event.GatherDataEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import com.r3944realms.modernlifepatch.utils.Enum.LanguageEnum;
import java.util.concurrent.CompletableFuture;

View File

@ -41,7 +41,12 @@ public enum ModLangKeyValue {
PAWN(getCustomTextKey("chess", ModernLifePatch.MOD_ID, "pawn"), "Pawn", "士兵"),
BISHOP(getCustomTextKey("chess", ModernLifePatch.MOD_ID, "bishop"), "Bishop", ""),
ROOK(getCustomTextKey("chess", ModernLifePatch.MOD_ID, "rook"), "Rook", ""),
ALARM_SOUND_TYPE0(getCustomTextKey("alarm_sound_type", ModernLifePatch.MOD_ID, "silent_alarm"), "Silent Alarm", "静音警报"),
ALARM_SOUND_TYPE1(getCustomTextKey("alarm_sound_type", ModernLifePatch.MOD_ID, "alarm1"), "Silent Alarm", "静音警报"),
ALARM_SOUND_TYPE2(getCustomTextKey("alarm_sound_type", ModernLifePatch.MOD_ID, "alarm2"), "Alarm 1", "警报1"),
ALARM_SOUND_TYPE3(getCustomTextKey("alarm_sound_type", ModernLifePatch.MOD_ID, "alarm3"), "Alarm 2", "警报2"),
ALARM_SOUND_TYPE4(getCustomTextKey("alarm_sound_type", ModernLifePatch.MOD_ID, "alarm4"), "Alarm 3", "警报3"),
ALARM_SOUND_TYPE5(getCustomTextKey("alarm_sound_type", ModernLifePatch.MOD_ID, "alarm5"), "Alarm 4", "警报4"),
MOD_RESOURCE_NAME(getResourceTextKey(ModernLifePatch.MOD_ID, "modern_life_patch"), "§b§lModern Life §fExclusive Materials", "§b§l摩登生活 §f专属材质"),
MOD_RESOURCE_DESC(getCustomTextKey("resource_pack", ModernLifePatch.MOD_ID ,"description"), "All of textures and models are created by BF_Meow_Do not use for other purposes without permission.", "所有材质和模型均由 白帆小喵BF_Meow_ 绘制。未经允许,请勿用作他用。"),
@ -94,10 +99,13 @@ public enum ModLangKeyValue {
MOTORBOAT_HOVER_FIRST(getHoverTextKey("motorboat", "1"), "Right click to deploy", "右键放置"),
MOTORBOAT_HOVER_SECOND(getHoverTextKey("motorboat", "2"), "Remaining fuel: %f%%","燃料剩余量: %f%%"),
MOTORBOAT_HOVER_THIRD(getHoverTextKey("motorboat", "3"), "Refuel by using a gas can on the deployed boat", "对船使用汽油罐来加油"),
ROAD_MARKER_FIRST(getHoverTextKey("road_marker", "1"), "* Right click paved road to apply currently selected road marker", "* 右键单击已铺设的道路以应用当前选定的道路标记"),
ROAD_MARKER_SECOND(getHoverTextKey("road_marker", "2"), "* Right click elsewhere to toggle between available road markers", "* 右键单击其他位置以在可用道路标记之间切换"),
ROAD_MARKER_HOVER_FIRST(getHoverTextKey("road_marker", "1"), "* Right click paved road to apply currently selected road marker", "* 右键单击已铺设的道路以应用当前选定的道路标记"),
ROAD_MARKER_HOVER_SECOND(getHoverTextKey("road_marker", "2"), "* Right click elsewhere to toggle between available road markers", "* 右键单击其他位置以在可用道路标记之间切换"),
WARNING_ALARM_HOVER_FIRST(getHoverTextKey("camera", "1"), "Sounds an alarm when powered by redstone;", "红石充能时发出警报"),
WARNING_ALARM_HOVER_SECOND(getHoverTextKey("camera", "2"), "right-click with empty mainhand to change alarm sound", "主手空手右击以改变警报声音"),
//P
NEED_RED_STONE_POWER_HOVER(getHoverTextKey("need_rs_power"), "Requires redstone power to operate", "需要红石充能"),
NEED_RED_STONE_POWER_TURN_ON_HOVER(getHoverTextKey("need_rs_power_turn_on"), "Requires redstone power to turn on", "需要红石充能才能开启"),
NEED_RED_STONE_POWER_TURN_OFF_HOVER(getHoverTextKey("need_rs_power_turn_off"), "Requires redstone power to turn off", "需要红石充能才能关闭"),
STORE_18_HOVER(getHoverTextKey("store_18"), "Stores up to 18 items", "可存储18组物品"),
//~P
METAL_GRATE_HOVER(getHoverTextKey("metal_grate"), "Allows water and items to flow through freely", "允许水与物品自由地穿过"),

View File

@ -1,7 +1,6 @@
package com.r3944realms.modernlifepatch.datagen.provider;
import com.r3944realms.modernlifepatch.ModernLifePatch;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.datagen.provider;
import com.r3944realms.modernlifepatch.ModernLifePatch;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraftforge.common.data.BlockTagsProvider;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.NotNull;

View File

@ -2,9 +2,9 @@ package com.r3944realms.modernlifepatch.datagen.provider;
import com.r3944realms.modernlifepatch.ModernLifePatch;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import com.r3944realms.modernlifepatch.utils.Enum.LanguageEnum;
import net.minecraft.data.PackOutput;
import net.minecraftforge.common.data.LanguageProvider;
import com.r3944realms.modernlifepatch.utils.Enum.LanguageEnum;
import java.util.ArrayList;
import java.util.HashMap;

View File

@ -2,15 +2,12 @@ package com.r3944realms.modernlifepatch.datagen.provider.loot;
import com.r3944realms.modernlifepatch.content.blocks.ModBlocks;
import net.minecraft.data.loot.BlockLootSubProvider;
import net.minecraft.world.flag.FeatureFlagSet;
import net.minecraft.world.flag.FeatureFlags;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.registries.RegistryObject;
import org.jetbrains.annotations.NotNull;
import java.util.Set;
import java.util.stream.Stream;
public class ModBlockLootTables extends BlockLootSubProvider {
@ -29,6 +26,6 @@ public class ModBlockLootTables extends BlockLootSubProvider {
@Override
protected @NotNull Iterable<Block> getKnownBlocks() {
return ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator;
return ModBlocks.getEntries().stream().map(RegistryObject::get)::iterator;
}
}

View File

@ -15,7 +15,7 @@ public class MLPMixinPlugin implements IMixinConfigPlugin {
@Override
public String getRefMapperConfig() {
return "";
return null;
}
@Override
@ -30,7 +30,7 @@ public class MLPMixinPlugin implements IMixinConfigPlugin {
@Override
public List<String> getMixins() {
return List.of();
return null;
}
@Override

View File

@ -7,7 +7,6 @@ import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import com.r3944realms.modernlifepatch.modInterface.IContainMenu;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.ModernBookshelfBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.core.ModernLifeClient;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.CeilingFanBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;
@ -18,7 +17,7 @@ import java.util.List;
public class MixinCeilingFan {
@Inject(method = {"appendHoverText"}, at= @At("HEAD"), cancellable = true)
public void appendHoverText(ItemStack itemStack, BlockGetter blockReader, List<Component> list, TooltipFlag tooltipFlag, CallbackInfo ci) {
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_HOVER.getKey()));
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_TURN_ON_HOVER.getKey()));
ci.cancel();
}
}

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.ChessBoardBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -0,0 +1,29 @@
package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.InvertedLightBulbBlock;
import com.dairymoose.modernlife.blocks.LightBulbBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.state.BlockState;
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;
import java.util.List;
import java.util.function.ToIntFunction;
@Mixin(InvertedLightBulbBlock.class)
public class MixinInvertedLightBulb extends LightBulbBlock {
public MixinInvertedLightBulb(Properties props, ToIntFunction<BlockState> lightLevelFn, StatePredicate emissiveRenderFn) {
super(props, lightLevelFn, emissiveRenderFn);
}
@Inject(method = "appendHoverText", at = @At("HEAD"), cancellable = true)
public void appendHoverText(ItemStack itemStack, BlockGetter blockReader, List<Component> list, TooltipFlag tooltipFlag, CallbackInfo ci) {
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_TURN_OFF_HOVER.getKey()));
ci.cancel();
}
}

View File

@ -0,0 +1,23 @@
package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.InvertedTileLightBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;
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;
import java.util.List;
@Mixin(InvertedTileLightBlock.class)
public class MixinInvertedTileLight {
@Inject(method = {"appendHoverText"}, at= @At("HEAD"), cancellable = true)
public void appendHoverText(ItemStack itemStack, BlockGetter blockReader, List<Component> list, TooltipFlag tooltipFlag, CallbackInfo ci) {
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_TURN_OFF_HOVER.getKey()));
ci.cancel();
}
}

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;
@ -63,7 +62,7 @@ public class MixinLightBulb extends FaceAttachedHorizontalDirectionalBlock {
}
@Inject(method = {"appendHoverText"}, at= @At("HEAD"), cancellable = true)
public void appendHoverText(ItemStack itemStack, BlockGetter blockReader, List<Component> list, TooltipFlag tooltipFlag, CallbackInfo ci) {
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_HOVER.getKey()));
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_TURN_ON_HOVER.getKey()));
ci.cancel();
}
}

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.GrateBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.PavedRoadBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -8,7 +8,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.tileentities.PrinterBlockEntity;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.tileentities.SeedSpreaderBlockEntity;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;

View File

@ -4,7 +4,6 @@ import com.dairymoose.modernlife.blocks.TileLightBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;
@ -34,7 +33,7 @@ public class MixinTileLight {
}
@Inject(method = {"appendHoverText"}, at= @At("HEAD"), cancellable = true)
public void appendHoverText(ItemStack itemStack, BlockGetter blockReader, List<Component> list, TooltipFlag tooltipFlag, CallbackInfo ci) {
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_HOVER.getKey()));
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_TURN_ON_HOVER.getKey()));
ci.cancel();
}
}

View File

@ -6,7 +6,6 @@ import com.dairymoose.modernlife.tileentities.TrashCanBlockEntity;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.WallShelfBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -0,0 +1,64 @@
package com.r3944realms.modernlifepatch.mixin.block.common;
import com.dairymoose.modernlife.blocks.LightBulbBlock;
import com.dairymoose.modernlife.blocks.WarningAlarmBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.List;
import java.util.function.ToIntFunction;
import static com.dairymoose.modernlife.blocks.WarningAlarmBlock.ALARM_TYPE;
@Mixin(WarningAlarmBlock.class)
public abstract class MixinWarningAlarm extends LightBulbBlock implements EntityBlock {
public MixinWarningAlarm(Properties props, ToIntFunction<BlockState> lightLevelFn, StatePredicate emissiveRenderFn) {
super(props, lightLevelFn, emissiveRenderFn);
}
@Inject(method = "appendHoverText", at = @At("HEAD"), cancellable = true)
public void appendHoverText(ItemStack itemStack, BlockGetter blockReader, List<Component> list, TooltipFlag tooltipFlag, CallbackInfo ci) {
list.add(Component.translatable(ModLangKeyValue.WARNING_ALARM_HOVER_FIRST.getKey()));
list.add(Component.translatable(ModLangKeyValue.WARNING_ALARM_HOVER_SECOND.getKey()));
ci.cancel();
}
/**
* @author R3944Realms
* @reason i18n
*/
@Overwrite
public InteractionResult use(@NotNull BlockState pState, Level pLevel, @NotNull BlockPos pPos, @NotNull Player pPlayer, @NotNull InteractionHand pHand, @NotNull BlockHitResult pHit) {
if (!pLevel.isClientSide && pHand == InteractionHand.MAIN_HAND && pPlayer.getItemInHand(pHand).isEmpty()) {
BlockState newAlarmType = pState.cycle(ALARM_TYPE);
pLevel.setBlock(pPos, newAlarmType, 3);
switch (newAlarmType.getValue(ALARM_TYPE)) {
case 0 -> pPlayer.sendSystemMessage(Component.translatable(ModLangKeyValue.ALARM_SOUND_TYPE0.getKey()));
case 1 -> pPlayer.sendSystemMessage(Component.translatable(ModLangKeyValue.ALARM_SOUND_TYPE1.getKey()));
case 2 -> pPlayer.sendSystemMessage(Component.translatable(ModLangKeyValue.ALARM_SOUND_TYPE2.getKey()));
case 3 -> pPlayer.sendSystemMessage(Component.translatable(ModLangKeyValue.ALARM_SOUND_TYPE3.getKey()));
case 4 -> pPlayer.sendSystemMessage(Component.translatable(ModLangKeyValue.ALARM_SOUND_TYPE4.getKey()));
case 5 -> pPlayer.sendSystemMessage(Component.translatable(ModLangKeyValue.ALARM_SOUND_TYPE5.getKey()));
}
}
return super.use(pState, pLevel, pPos, pPlayer, pHand, pHit);
}
}

View File

@ -8,7 +8,6 @@ import com.r3944realms.modernlifepatch.modInterface.IContainMenu;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.tileentities.SeedSpreaderBlockEntity;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -4,7 +4,6 @@ import com.dairymoose.modernlife.blocks.PowerReceiverBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.block.redstone;
import com.dairymoose.modernlife.blocks.PowerTransmitterBlock;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -6,7 +6,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;

View File

@ -5,7 +5,6 @@ import com.dairymoose.modernlife.util.ModernLifeUtil;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.BlockGetter;
@ -76,7 +75,7 @@ public abstract class MixinWinch extends FaceAttachedHorizontalDirectionalBlock
}
@Inject(method = {"appendHoverText"}, at = @At("HEAD"), cancellable = true)
private void appendHoverText(ItemStack itemStack, BlockGetter blockReader, List<Component> list, TooltipFlag tooltipFlag, CallbackInfo ci) {
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_HOVER.getKey()));
list.add(Component.translatable(ModLangKeyValue.NEED_RED_STONE_POWER_TURN_ON_HOVER.getKey()));
ci.cancel();
}

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.BatteryItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.BicycleItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

View File

@ -8,7 +8,6 @@ import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.nbt.ListTag;
import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.ChainsawItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.FlashlightItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.GuitarItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.HandgunItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.MotorboatItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;

View File

@ -3,7 +3,6 @@ package com.r3944realms.modernlifepatch.mixin.item;
import com.dairymoose.modernlife.items.RoadMarkerItem;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.level.Level;
@ -18,8 +17,8 @@ import java.util.List;
public class MixinRoadMarker {
@Inject(method = {"appendHoverText"}, at= @At("HEAD"), cancellable = true)
public void appendHoverText(ItemStack itemStack, Level world, List<Component> text, TooltipFlag flag, CallbackInfo ci) {
text.add(Component.translatable(ModLangKeyValue.ROAD_MARKER_FIRST.getKey()));
text.add(Component.translatable(ModLangKeyValue.ROAD_MARKER_SECOND.getKey()));
text.add(Component.translatable(ModLangKeyValue.ROAD_MARKER_HOVER_FIRST.getKey()));
text.add(Component.translatable(ModLangKeyValue.ROAD_MARKER_HOVER_SECOND.getKey()));
ci.cancel();
}
}

View File

@ -1,12 +1,10 @@
package com.r3944realms.modernlifepatch.mixin.screen;
import com.dairymoose.modernlife.blocks.gui.chess.*;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;

View File

@ -4,7 +4,6 @@ import com.dairymoose.modernlife.blocks.gui.PrinterScreen;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

View File

@ -4,7 +4,6 @@ import com.dairymoose.modernlife.blocks.gui.RadiatorScreen;
import com.r3944realms.modernlifepatch.datagen.lang.ModLangKeyValue;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

View File

@ -0,0 +1,2 @@
#private -> public
public net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen f_98507_ # selectedTab

View File

@ -42,7 +42,9 @@ authors="${mod_authors}" #optional
#displayTest="MATCH_VERSION" # MATCH_VERSION is the default if nothing is specified (#optional)
# The description text for the mod (multi line!) (#mandatory)
description='''${mod_description}'''
description='''${mod_description}
'''
# A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional.
[[dependencies.${mod_id}]] #optional
# the modid of the dependency

View File

@ -1,6 +1,7 @@
{
"replace": false,
"values": [
"modernlife:warning_alarm",
"modernlife:monitor",
"modernlife:dual_monitor",
"modernlife:steam_radiator",
@ -13,6 +14,8 @@
"modernlife:metal_duct",
"modernlife:glass_panel",
"modernlife:tile_light",
"modernlife:inverted_tile_light",
"modernlife:inverted_light_bulb",
"modernlife:beige_ceramic_tile",
"modernlife:white_ceramic_tile",
"modernlife:brown_ceramic_tile",

View File

@ -1,6 +1,8 @@
{
"replace": false,
"values": [
"modernlife:grass_ramp",
"modernlife:end_stone_ramp",
"modernlife:cobblestone_ramp",
"modernlife:stone_ramp",
"modernlife:stone_bricks_ramp",

View File

@ -20,6 +20,8 @@
"block.common.MixinEasel",
"block.common.MixinFlatScreenTV",
"block.common.MixinGuitarAmplifier",
"block.common.MixinInvertedLightBulb",
"block.common.MixinInvertedTileLight",
"block.common.MixinLightBulb",
"block.common.MixinMetalDuct",
"block.common.MixinMetalGrate",
@ -32,6 +34,7 @@
"block.common.MixinTrashCan",
"block.common.MixinWallShelf",
"block.common.MixinWallSocket",
"block.common.MixinWarningAlarm",
"block.kitchen.MixinKitchenCabinet",
"block.kitchen.MixinKitchenDrawerCabinet",
"block.kitchen.MixinKitchenSink",

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/acacia_barrier",
"y": 270
},
"facing=north": {
"model": "modernlife:block/acacia_barrier",
"y": 180
},
"facing=south": {
"model": "modernlife:block/acacia_barrier",
"y": 0
},
"facing=west": {
"model": "modernlife:block/acacia_barrier",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/acacia_chair",
"y": 270
},
"facing=north": {
"model": "modernlife:block/acacia_chair",
"y": 180
},
"facing=south": {
"model": "modernlife:block/acacia_chair",
"y": 0
},
"facing=west": {
"model": "modernlife:block/acacia_chair",
"y": 90
}
}
}

View File

@ -0,0 +1,47 @@
{
"variants": {
"type=single": {
"model": "modernlife:block/acacia_coffee_table"
},
"type=mid": {
"model": "modernlife:block/acacia_coffee_table_mid"
},
"type=s_end": {
"model": "modernlife:block/acacia_coffee_table_end",
"y" : 0
},
"type=w_end": {
"model": "modernlife:block/acacia_coffee_table_end",
"y" : 90,
"uvlock": true
},
"type=n_end": {
"model": "modernlife:block/acacia_coffee_table_end",
"y" : 180
},
"type=e_end": {
"model": "modernlife:block/acacia_coffee_table_end",
"y" : 270,
"uvlock": true
},
"type=se_corner": {
"model": "modernlife:block/acacia_coffee_table_corner",
"y" : 270,
"uvlock": true
},
"type=sw_corner": {
"model": "modernlife:block/acacia_coffee_table_corner",
"y" : 0
},
"type=nw_corner": {
"model": "modernlife:block/acacia_coffee_table_corner",
"y" : 90,
"uvlock": true
},
"type=ne_corner": {
"model": "modernlife:block/acacia_coffee_table_corner",
"y" : 180,
"uvlock": true
}
}
}

View File

@ -0,0 +1,10 @@
{
"variants": {
"support=false": {
"model": "modernlife:block/acacia_deck"
},
"support=true": {
"model": "modernlife:block/acacia_deck_support"
}
}
}

View File

@ -0,0 +1,124 @@
{
"variants": {
"facing=east,half=lower,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom"
},
"facing=east,half=lower,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge",
"y": 90
},
"facing=east,half=lower,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge"
},
"facing=east,half=lower,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom",
"y": 270
},
"facing=east,half=upper,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_top"
},
"facing=east,half=upper,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_top_hinge",
"y": 90
},
"facing=east,half=upper,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_top_hinge"
},
"facing=east,half=upper,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_top",
"y": 270
},
"facing=north,half=lower,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom",
"y": 270
},
"facing=north,half=lower,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge"
},
"facing=north,half=lower,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge",
"y": 270
},
"facing=north,half=lower,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom",
"y": 180
},
"facing=north,half=upper,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_top",
"y": 270
},
"facing=north,half=upper,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_top_hinge"
},
"facing=north,half=upper,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_top_hinge",
"y": 270
},
"facing=north,half=upper,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_top",
"y": 180
},
"facing=south,half=lower,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom",
"y": 90
},
"facing=south,half=lower,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge",
"y": 180
},
"facing=south,half=lower,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge",
"y": 90
},
"facing=south,half=lower,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom"
},
"facing=south,half=upper,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_top",
"y": 90
},
"facing=south,half=upper,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_top_hinge",
"y": 180
},
"facing=south,half=upper,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_top_hinge",
"y": 90
},
"facing=south,half=upper,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_top"
},
"facing=west,half=lower,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom",
"y": 180
},
"facing=west,half=lower,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge",
"y": 270
},
"facing=west,half=lower,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_bottom_hinge",
"y": 180
},
"facing=west,half=lower,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_bottom",
"y": 90
},
"facing=west,half=upper,hinge=left,open=false": {
"model": "modernlife:block/acacia_glass_door_top",
"y": 180
},
"facing=west,half=upper,hinge=left,open=true": {
"model": "modernlife:block/acacia_glass_door_top_hinge",
"y": 270
},
"facing=west,half=upper,hinge=right,open=false": {
"model": "modernlife:block/acacia_glass_door_top_hinge",
"y": 180
},
"facing=west,half=upper,hinge=right,open=true": {
"model": "modernlife:block/acacia_glass_door_top",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/acacia_kitchen_cabinet",
"y": 270
},
"facing=north": {
"model": "modernlife:block/acacia_kitchen_cabinet",
"y": 180
},
"facing=south": {
"model": "modernlife:block/acacia_kitchen_cabinet",
"y": 0
},
"facing=west": {
"model": "modernlife:block/acacia_kitchen_cabinet",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/acacia_kitchen_drawer_cabinet",
"y": 270
},
"facing=north": {
"model": "modernlife:block/acacia_kitchen_drawer_cabinet",
"y": 180
},
"facing=south": {
"model": "modernlife:block/acacia_kitchen_drawer_cabinet",
"y": 0
},
"facing=west": {
"model": "modernlife:block/acacia_kitchen_drawer_cabinet",
"y": 90
}
}
}

View File

@ -0,0 +1,84 @@
{
"multipart": [
{
"apply": {
"model": "modernlife:block/acacia_log_ramp",
"y": 0
},
"when": {
"facing": "east",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_log_ramp_corner",
"y": 0
},
"when": {
"facing": "east",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/acacia_log_ramp",
"y": 270
},
"when": {
"facing": "north",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_log_ramp_corner",
"y": 270
},
"when": {
"facing": "north",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/acacia_log_ramp",
"y": 90
},
"when": {
"facing": "south",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_log_ramp_corner",
"y": 90
},
"when": {
"facing": "south",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/acacia_log_ramp",
"y": 180
},
"when": {
"facing": "west",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_log_ramp_corner",
"y": 180
},
"when": {
"facing": "west",
"part": "corner"
}
}
]
}

View File

@ -0,0 +1,10 @@
{
"variants": {
"extended=false": {
"model": "modernlife:block/acacia_mini_stool"
},
"extended=true": {
"model": "modernlife:block/acacia_stool"
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/acacia_night_stand",
"y": 270
},
"facing=north": {
"model": "modernlife:block/acacia_night_stand",
"y": 180
},
"facing=south": {
"model": "modernlife:block/acacia_night_stand",
"y": 0
},
"facing=west": {
"model": "modernlife:block/acacia_night_stand",
"y": 90
}
}
}

View File

@ -0,0 +1,84 @@
{
"multipart": [
{
"apply": {
"model": "modernlife:block/acacia_picnic_table",
"y": 0
},
"when": {
"facing": "north",
"half": "back"
}
},
{
"apply": {
"model": "modernlife:block/acacia_picnic_table_front",
"y": 0
},
"when": {
"facing": "north",
"half": "front"
}
},
{
"apply": {
"model": "modernlife:block/acacia_picnic_table",
"y": 90
},
"when": {
"facing": "east",
"half": "back"
}
},
{
"apply": {
"model": "modernlife:block/acacia_picnic_table_front",
"y": 90
},
"when": {
"facing": "east",
"half": "front"
}
},
{
"apply": {
"model": "modernlife:block/acacia_picnic_table",
"y": 180
},
"when": {
"facing": "south",
"half": "back"
}
},
{
"apply": {
"model": "modernlife:block/acacia_picnic_table_front",
"y": 180
},
"when": {
"facing": "south",
"half": "front"
}
},
{
"apply": {
"model": "modernlife:block/acacia_picnic_table",
"y": 270
},
"when": {
"facing": "west",
"half": "back"
}
},
{
"apply": {
"model": "modernlife:block/acacia_picnic_table_front",
"y": 270
},
"when": {
"facing": "west",
"half": "front"
}
}
]
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=north": {
"model": "modernlife:block/acacia_planks_ramp",
"y": 270
},
"facing=south": {
"model": "modernlife:block/acacia_planks_ramp",
"y": 90
},
"facing=east": {
"model": "modernlife:block/acacia_planks_ramp",
"y": 0
},
"facing=west": {
"model": "modernlife:block/acacia_planks_ramp",
"y": 180
}
}
}

View File

@ -0,0 +1,84 @@
{
"multipart": [
{
"apply": {
"model": "modernlife:block/acacia_ramp",
"y": 0
},
"when": {
"facing": "east",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_ramp_corner",
"y": 0
},
"when": {
"facing": "east",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/acacia_ramp",
"y": 270
},
"when": {
"facing": "north",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_ramp_corner",
"y": 270
},
"when": {
"facing": "north",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/acacia_ramp",
"y": 90
},
"when": {
"facing": "south",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_ramp_corner",
"y": 90
},
"when": {
"facing": "south",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/acacia_ramp",
"y": 180
},
"when": {
"facing": "west",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/acacia_ramp_corner",
"y": 180
},
"when": {
"facing": "west",
"part": "corner"
}
}
]
}

View File

@ -0,0 +1,40 @@
{
"multipart": [
{
"apply": {
"model": "modernlife:block/acacia_round_table",
"y": 0
},
"when": {
"facing": "north"
}
},
{
"apply": {
"model": "modernlife:block/acacia_round_table",
"y": 180
},
"when": {
"facing": "south"
}
},
{
"apply": {
"model": "modernlife:block/acacia_round_table",
"y": 90
},
"when": {
"facing": "east"
}
},
{
"apply": {
"model": "modernlife:block/acacia_round_table",
"y": 270
},
"when": {
"facing": "west"
}
}
]
}

View File

@ -0,0 +1,47 @@
{
"variants": {
"type=single": {
"model": "modernlife:block/acacia_small_table"
},
"type=mid": {
"model": "modernlife:block/acacia_small_table_mid"
},
"type=s_end": {
"model": "modernlife:block/acacia_small_table_end",
"y" : 0
},
"type=w_end": {
"model": "modernlife:block/acacia_small_table_end",
"y" : 90,
"uvlock": true
},
"type=n_end": {
"model": "modernlife:block/acacia_small_table_end",
"y" : 180
},
"type=e_end": {
"model": "modernlife:block/acacia_small_table_end",
"y" : 270,
"uvlock": true
},
"type=se_corner": {
"model": "modernlife:block/acacia_small_table_corner",
"y" : 270,
"uvlock": true
},
"type=sw_corner": {
"model": "modernlife:block/acacia_small_table_corner",
"y" : 0
},
"type=nw_corner": {
"model": "modernlife:block/acacia_small_table_corner",
"y" : 90,
"uvlock": true
},
"type=ne_corner": {
"model": "modernlife:block/acacia_small_table_corner",
"y" : 180,
"uvlock": true
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/acacia_wall_shelf",
"y": 270
},
"facing=north": {
"model": "modernlife:block/acacia_wall_shelf",
"y": 180
},
"facing=south": {
"model": "modernlife:block/acacia_wall_shelf",
"y": 0
},
"facing=west": {
"model": "modernlife:block/acacia_wall_shelf",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/air_conditioner",
"y": 270
},
"facing=north": {
"model": "modernlife:block/air_conditioner",
"y": 180
},
"facing=south": {
"model": "modernlife:block/air_conditioner",
"y": 0
},
"facing=west": {
"model": "modernlife:block/air_conditioner",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/alarm_clock",
"y": 270
},
"facing=north": {
"model": "modernlife:block/alarm_clock",
"y": 180
},
"facing=south": {
"model": "modernlife:block/alarm_clock",
"y": 0
},
"facing=west": {
"model": "modernlife:block/alarm_clock",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/andesite_barrier",
"y": 270
},
"facing=north": {
"model": "modernlife:block/andesite_barrier",
"y": 180
},
"facing=south": {
"model": "modernlife:block/andesite_barrier",
"y": 0
},
"facing=west": {
"model": "modernlife:block/andesite_barrier",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/andesite_kitchen_cabinet",
"y": 270
},
"facing=north": {
"model": "modernlife:block/andesite_kitchen_cabinet",
"y": 180
},
"facing=south": {
"model": "modernlife:block/andesite_kitchen_cabinet",
"y": 0
},
"facing=west": {
"model": "modernlife:block/andesite_kitchen_cabinet",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/andesite_kitchen_drawer_cabinet",
"y": 270
},
"facing=north": {
"model": "modernlife:block/andesite_kitchen_drawer_cabinet",
"y": 180
},
"facing=south": {
"model": "modernlife:block/andesite_kitchen_drawer_cabinet",
"y": 0
},
"facing=west": {
"model": "modernlife:block/andesite_kitchen_drawer_cabinet",
"y": 90
}
}
}

View File

@ -0,0 +1,84 @@
{
"multipart": [
{
"apply": {
"model": "modernlife:block/andesite_ramp",
"y": 0
},
"when": {
"facing": "east",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/andesite_ramp_corner",
"y": 0
},
"when": {
"facing": "east",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/andesite_ramp",
"y": 270
},
"when": {
"facing": "north",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/andesite_ramp_corner",
"y": 270
},
"when": {
"facing": "north",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/andesite_ramp",
"y": 90
},
"when": {
"facing": "south",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/andesite_ramp_corner",
"y": 90
},
"when": {
"facing": "south",
"part": "corner"
}
},
{
"apply": {
"model": "modernlife:block/andesite_ramp",
"y": 180
},
"when": {
"facing": "west",
"part": "straight"
}
},
{
"apply": {
"model": "modernlife:block/andesite_ramp_corner",
"y": 180
},
"when": {
"facing": "west",
"part": "corner"
}
}
]
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/arrow_slit",
"y": 270
},
"facing=north": {
"model": "modernlife:block/arrow_slit",
"y": 180
},
"facing=south": {
"model": "modernlife:block/arrow_slit",
"y": 0
},
"facing=west": {
"model": "modernlife:block/arrow_slit",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=north": {
"model": "modernlife:block/basalt_ramp",
"y": 270
},
"facing=south": {
"model": "modernlife:block/basalt_ramp",
"y": 90
},
"facing=east": {
"model": "modernlife:block/basalt_ramp",
"y": 0
},
"facing=west": {
"model": "modernlife:block/basalt_ramp",
"y": 180
}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "modernlife:block/bathroom_ceramic_tile"
}
}
}

View File

@ -0,0 +1,180 @@
{
"multipart": [
{
"apply": {
"model": "modernlife:block/bathtub_far",
"y": 270
},
"when": {
"facing": "north",
"half": "back",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_far_waterlogged",
"y": 270
},
"when": {
"facing": "north",
"half": "back",
"waterlogged": "true"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near",
"y": 270
},
"when": {
"facing": "north",
"half": "front",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near_waterlogged",
"y": 270
},
"when": {
"facing": "north",
"half": "front",
"waterlogged": "true"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_far",
"y": 0
},
"when": {
"facing": "east",
"half": "back",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_far_waterlogged",
"y": 0
},
"when": {
"facing": "east",
"half": "back",
"waterlogged": "true"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near",
"y": 0
},
"when": {
"facing": "east",
"half": "front",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near_waterlogged",
"y": 0
},
"when": {
"facing": "east",
"half": "front",
"waterlogged": "true"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_far",
"y": 90
},
"when": {
"facing": "south",
"half": "back",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_far_waterlogged",
"y": 90
},
"when": {
"facing": "south",
"half": "back",
"waterlogged": "true"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near",
"y": 90
},
"when": {
"facing": "south",
"half": "front",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near_waterlogged",
"y": 90
},
"when": {
"facing": "south",
"half": "front",
"waterlogged": "true"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_far",
"y": 180
},
"when": {
"facing": "west",
"half": "back",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_far_waterlogged",
"y": 180
},
"when": {
"facing": "west",
"half": "back",
"waterlogged": "true"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near",
"y": 180
},
"when": {
"facing": "west",
"half": "front",
"waterlogged": "false"
}
},
{
"apply": {
"model": "modernlife:block/bathtub_near_waterlogged",
"y": 180
},
"when": {
"facing": "west",
"half": "front",
"waterlogged": "true"
}
}
]
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "modernlife:block/beige_ceramic_tile"
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/birch_barrier",
"y": 270
},
"facing=north": {
"model": "modernlife:block/birch_barrier",
"y": 180
},
"facing=south": {
"model": "modernlife:block/birch_barrier",
"y": 0
},
"facing=west": {
"model": "modernlife:block/birch_barrier",
"y": 90
}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"facing=east": {
"model": "modernlife:block/birch_chair",
"y": 270
},
"facing=north": {
"model": "modernlife:block/birch_chair",
"y": 180
},
"facing=south": {
"model": "modernlife:block/birch_chair",
"y": 0
},
"facing=west": {
"model": "modernlife:block/birch_chair",
"y": 90
}
}
}

View File

@ -0,0 +1,47 @@
{
"variants": {
"type=single": {
"model": "modernlife:block/birch_coffee_table"
},
"type=mid": {
"model": "modernlife:block/birch_coffee_table_mid"
},
"type=s_end": {
"model": "modernlife:block/birch_coffee_table_end",
"y" : 0
},
"type=w_end": {
"model": "modernlife:block/birch_coffee_table_end",
"y" : 90,
"uvlock": true
},
"type=n_end": {
"model": "modernlife:block/birch_coffee_table_end",
"y" : 180
},
"type=e_end": {
"model": "modernlife:block/birch_coffee_table_end",
"y" : 270,
"uvlock": true
},
"type=se_corner": {
"model": "modernlife:block/birch_coffee_table_corner",
"y" : 270,
"uvlock": true
},
"type=sw_corner": {
"model": "modernlife:block/birch_coffee_table_corner",
"y" : 0
},
"type=nw_corner": {
"model": "modernlife:block/birch_coffee_table_corner",
"y" : 90,
"uvlock": true
},
"type=ne_corner": {
"model": "modernlife:block/birch_coffee_table_corner",
"y" : 180,
"uvlock": true
}
}
}

View File

@ -0,0 +1,10 @@
{
"variants": {
"support=false": {
"model": "modernlife:block/birch_deck"
},
"support=true": {
"model": "modernlife:block/birch_deck_support"
}
}
}

Some files were not shown because too many files have changed in this diff Show More