2024/11/05

Expend Item Capacity
This commit is contained in:
叁玖领域 2024-11-05 23:07:42 +08:00
parent 7d0ae3beef
commit 7f8b24beb8
29 changed files with 226 additions and 23 deletions

View File

@ -1,4 +1,4 @@
# 版本 0.0.3.9.7.5 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】
# 版本 0.0.3.9.8 提前介绍c[最终版本对于0.0.4] 【注意:本解釋簡繁混寫,因爲趕時間,所以並不怎麽規範,請諒解】
## 简介
现在开始你可以用拴绳拴住玩家,也可以拴住自己了,不如尝试拴住彼此来通关我的世界吧(
@ -19,7 +19,7 @@
获得飞一样的感觉(操作不当可能会摔死
+ 拴绳箭可以拴其它可拴LivingEntity了
### 紫水晶剪刀
剪断拴绳链接,在发射器里可使用
剪断拴绳链接,在发射器里可使用,对自己也可使用,但耗费更多耐久
#### 射中实体时会将射击者拴绳绑定在改实体上该实体父类必须是有LivingEntity类型同时拴绳箭会以普通的箭矢掉落
#### 射中栅栏时,会自动将玩家拴在上面 ,同时拴绳箭会以普通的箭矢掉落
#### 在地面上的箭可以通过按Shift靠近来捡起如果捡起实体为发射箭矢玩家则直接获取拴绳箭矢如果捡起者为非发射者则成为发送者的拴绳持有者并获得普通箭矢
@ -57,4 +57,4 @@
* `LP.KeepLeashNotDropTime` - 此规则决定,当拴绳关系创建时一段时间里,即是距离已经达到了断裂距离,也保持其不断裂 [默认值: 240ticks ,可设置范围[80, 1200]ticks]
* `LP.DefaultTalkArea` - 此规则决定,聊天半径最小正值
* `LP.DefaultTalkArea` - 此规则决定,聊天半径最小正值 [默认值: -1]

View File

@ -59,7 +59,6 @@ runs {
server {
systemProperty 'forge.enabledGameTestNamespaces', project.mod_id
programArgument '--nogui'
}
// This run config launches GameTestServer and runs all registered gametests, then exits.

View File

@ -32,7 +32,7 @@ mod_name=Leashed Player
# 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=0.0.3.9.7.5
mod_version=0.0.3.9.8
# 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

View File

@ -1,4 +1,4 @@
// 1.21 2024-11-03T11:56:02.1200385 Item Models: leashedplayer
// 1.21 2024-11-05T22:44:13.1744327 Item Models: leashedplayer
766c487fbf0c59e9045eeaf81daf583eb679b0e1 assets/leashedplayer/models/item/amethyst_shears.json
5846df9d85726428905701120ef34c9324c20faf assets/leashedplayer/models/item/bow_lra_pulling_0.json
845a7316b86e26f88c6932d4ef2656126503727a assets/leashedplayer/models/item/bow_lra_pulling_1.json
@ -7,4 +7,5 @@
bb0d76077719c83c8a8bd4346a24ea1766175125 assets/leashedplayer/models/item/fabric.json
63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/leashedplayer/models/item/kid_spawn_egg.json
114d3cc5832ef047403114504483c6f3ea07e77c assets/leashedplayer/models/item/leash_rope_arrow.json
39b631c9dacf0481bfe8b84c7e7dd5841baf4ff7 assets/leashedplayer/models/item/neoforge.json
c4748995a5fe190d20e3bd16f4b2244164ec0f83 assets/leashedplayer/models/item/spectral_leash_rope_arrow.json

View File

@ -1,2 +1,3 @@
// 1.21 2024-10-23T13:15:06.1082841 Registries
// 1.21 2024-11-05T23:00:18.5223698 Registries
f2536789df7f06362718a59ba4a96890e2f9b8aa data/leashedplayer/jukebox_song/what_does_the_fox_say.json
6f79a674215db9f9d2820b1c7f052c60ce729fee data/leashedplayer/painting_variant/group_photo.json

View File

@ -1,2 +1,2 @@
// 1.21 2024-11-03T11:56:02.1210394 Languages: en_us for mod: leashedplayer
e37115e9e6433f0d2a2748efc9749b10204119c7 assets/leashedplayer/lang/en_us.json
// 1.21 2024-11-05T22:44:13.1744327 Languages: en_us for mod: leashedplayer
61c2bbb33f4814254ffdcd122aab49c0cdaf3d83 assets/leashedplayer/lang/en_us.json

View File

@ -0,0 +1,2 @@
// 1.21 2024-11-05T22:44:13.1754334 Sound Definitions
81f1cc9f404c2670bf7cc679107177ffb0b48c77 assets/leashedplayer/sounds.json

View File

@ -1,2 +1,2 @@
// 1.21 2024-11-03T11:56:02.119039 Languages: zh_cn for mod: leashedplayer
bc7e4095ad9239d38aff0e14e4eb8be3903980ec assets/leashedplayer/lang/zh_cn.json
// 1.21 2024-11-05T22:44:13.1704334 Languages: zh_cn for mod: leashedplayer
c92526831cd149866543a1c10dd6a2b59fe1b36b assets/leashedplayer/lang/zh_cn.json

View File

@ -1,2 +1,2 @@
// 1.21 2024-11-03T11:56:02.1180379 Languages: zh_tw for mod: leashedplayer
a4e3c3350a1a38b98fa7d7c0c2305a2c79440a50 assets/leashedplayer/lang/zh_tw.json
// 1.21 2024-11-05T22:44:13.1684263 Languages: zh_tw for mod: leashedplayer
12fe78d40c45b07ceb0b72ee9439fa132649e670 assets/leashedplayer/lang/zh_tw.json

View File

@ -35,11 +35,13 @@
"item.leashedplayer.fabric": "Fabric",
"item.leashedplayer.kid_spawn_egg": "Kid Spawn Egg",
"item.leashedplayer.leash_rope_arrow": "Leash Rope Arrow",
"item.leashedplayer.neoforge": "NeoForge",
"item.leashedplayer.spectral_leash_rope_arrow": "Spectral Leash Rope Arrow",
"item.minecraft.lingering_potion.effect.no_leash": "Splash No Leash Potion",
"item.minecraft.potion.effect.no_leash": "No Leash Potion",
"item.minecraft.splash_potion.effect.no_leash": "Splash No Leash Potion",
"item.minecraft.tipped_arrow.effect.no_leash": "Arrow of No Leash",
"jukebox_song.leashedplayer.what_does_the_fox_say": "What does the fox say?",
"leashedplayer.chat.none_heard_you": "Nobody heard your message",
"leashedplayer.command.chat.message.talkarea.current_config": "%s 's §6TalkArea Current§7:§e %d §6blocks §f(§aPrefence§7:§e %d §ablocks§f)§r",
"leashedplayer.command.chat.message.talkarea.preference.set": "%s 's §atalk area preference set to §e%d§a blocks!§r",
@ -67,5 +69,6 @@
"leashedplayer.command.motion.message.multiply.successful": "§bMultiply Successfully.§a%s§7:§f[§eVec§7: §a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
"leashedplayer.command.motion.message.setter.successful": "§bSet Successfully.§a%s§7:§f[§eVec§7: §a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
"painting.leashedplayer.group_photo.author": "§9Leisure §4Time §eDock§r",
"painting.leashedplayer.group_photo.title": "§dGroup Photo §7[§6memorable§7]§r"
"painting.leashedplayer.group_photo.title": "§dGroup Photo §7[§6memorable§7]§r",
"sound.leashedplayer.subtitle.what_does_the_fox_say": "Great Chu will rise again! Chen She will be king!"
}

View File

@ -35,11 +35,13 @@
"item.leashedplayer.fabric": "Fabric",
"item.leashedplayer.kid_spawn_egg": "小孩生成蛋",
"item.leashedplayer.leash_rope_arrow": "拴绳箭",
"item.leashedplayer.neoforge": "NeoForge",
"item.leashedplayer.spectral_leash_rope_arrow": "拴绳光灵箭",
"item.minecraft.lingering_potion.effect.no_leash": "滞留型禁拴药水",
"item.minecraft.potion.effect.no_leash": "禁拴药水",
"item.minecraft.splash_potion.effect.no_leash": "喷溅型禁拴药水",
"item.minecraft.tipped_arrow.effect.no_leash": "禁拴之箭",
"jukebox_song.leashedplayer.what_does_the_fox_say": "狐狸是怎么叫的?",
"leashedplayer.chat.none_heard_you": "沒有人接收到你的消息",
"leashedplayer.command.chat.message.talkarea.current_config": "%s§6目前聊天区域可见半径设置§7:§e %d §6格 §f(§a默认值§7:§e %d §a格§f)§r",
"leashedplayer.command.chat.message.talkarea.preference.set": "%s§a默认聊天区域可见消息半径设置为 §e%d §a格!§r",
@ -67,5 +69,6 @@
"leashedplayer.command.motion.message.multiply.successful": "§b倍乘成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
"leashedplayer.command.motion.message.setter.successful": "§b设置成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
"painting.leashedplayer.group_photo.author": "§9闲趣§4时§e坞§r",
"painting.leashedplayer.group_photo.title": "§d集体照 §7[§6纪念§7]§r"
"painting.leashedplayer.group_photo.title": "§d集体照 §7[§6纪念§7]§r",
"sound.leashedplayer.subtitle.what_does_the_fox_say": "大楚兴~ 陈胜王~~"
}

View File

@ -35,11 +35,13 @@
"item.leashedplayer.fabric": "Fabric",
"item.leashedplayer.kid_spawn_egg": "小孩生成蛋",
"item.leashedplayer.leash_rope_arrow": "拴繩箭",
"item.leashedplayer.neoforge": "NeoForge",
"item.leashedplayer.spectral_leash_rope_arrow": "拴繩光靈箭",
"item.minecraft.lingering_potion.effect.no_leash": "滯留型禁拴藥水",
"item.minecraft.potion.effect.no_leash": "禁拴藥水",
"item.minecraft.splash_potion.effect.no_leash": "噴濺型禁拴藥水",
"item.minecraft.tipped_arrow.effect.no_leash": "禁拴之箭",
"jukebox_song.leashedplayer.what_does_the_fox_say": "狐狸是怎麽叫的?",
"leashedplayer.chat.none_heard_you": "無人接收到你的訊息",
"leashedplayer.command.chat.message.talkarea.current_config": "%s§6目前可見訊息聊天半徑設置§7:§e%d §6格 §f(§a默認值§7:§e%d §a格§f)§r",
"leashedplayer.command.chat.message.talkarea.preference.set": "%s§a默認聊天區域可見訊息半徑設置為 §e%d §a格!§r",
@ -67,5 +69,6 @@
"leashedplayer.command.motion.message.multiply.successful": "§b倍乘成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
"leashedplayer.command.motion.message.setter.successful": "§b設置成功.§a%s§7:§f[§e加速度§7:§a(§f%f§7,§f%f§7,§f%f§a)§f]§r",
"painting.leashedplayer.group_photo.author": "§9閑趣§4時§e塢§r",
"painting.leashedplayer.group_photo.title": "§d集體照 §7[§6紀念§7]§r"
"painting.leashedplayer.group_photo.title": "§d集體照 §7[§6紀念§7]§r",
"sound.leashedplayer.subtitle.what_does_the_fox_say": "大楚興~ 陳勝王~~"
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "leashedplayer:item/neoforge"
}
}

View File

@ -0,0 +1,8 @@
{
"music/what_does_the_fox_say": {
"sounds": [
"leashedplayer:music/what_does_the_fox_say"
],
"subtitle": "sound.leashedplayer.subtitle.what_does_the_fox_say"
}
}

View File

@ -0,0 +1,8 @@
{
"comparator_output": 15,
"description": {
"translate": "jukebox_song.leashedplayer.what_does_the_fox_say"
},
"length_in_seconds": 121.0,
"sound_event": "leashedplayer:what_does_the_fox_say"
}

View File

@ -8,6 +8,7 @@ import com.r3944realms.leashedplayer.content.entities.ModEntityRegister;
import com.r3944realms.leashedplayer.content.items.ModCreativeTab;
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
import com.r3944realms.leashedplayer.content.paintings.ModPaintingsRegister;
import com.r3944realms.leashedplayer.content.sounds.ModSoundRegister;
import com.r3944realms.leashedplayer.utils.Util;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModLoadingContext;
@ -23,6 +24,7 @@ public class LeashedPlayer {
public LeashedPlayer(IEventBus event) {
ModItemRegister.register(event);
ModPaintingsRegister.register(event);
ModSoundRegister.register(event);
ModEffectRegister.register(event);
ModPotionRegister.register(event);
ModEntityRegister.register(event);

View File

@ -6,7 +6,8 @@ import net.minecraft.client.model.HumanoidModel;
import net.minecraft.client.model.PlayerModel;
import net.minecraft.client.model.geom.ModelLayers;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.*;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.client.renderer.entity.HumanoidMobRenderer;
import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.InteractionHand;

View File

@ -6,9 +6,13 @@ import com.r3944realms.leashedplayer.content.items.type.LeadBreakerItem;
import com.r3944realms.leashedplayer.content.items.type.LeashRopeArrowItem;
import com.r3944realms.leashedplayer.content.items.type.SpectralLeashRopeArrowItem;
import com.r3944realms.leashedplayer.content.items.type.TestItem;
import com.r3944realms.leashedplayer.datagen.provider.attributes.ModJukeboxSongs;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.JukeboxSong;
import net.minecraft.world.item.Rarity;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.common.DeferredSpawnEggItem;
import net.neoforged.neoforge.registries.DeferredRegister;
@ -35,6 +39,11 @@ public class ModItemRegister {
.stacksTo(1)));
public static final Supplier<Item> KID_SPAWN_EGG = ModItemRegister.register("kid_spawn_egg",
() -> new DeferredSpawnEggItem(ModEntityRegister.KID, 0x3F4F1F, 0x3D0D4D, new Item.Properties()));
public static final Supplier<Item> NEOFORGE = ModItemRegister.register("neoforge",
() -> new Item(DistProperties(ModJukeboxSongs.FOX_MUSIC)));
public static Item.Properties DistProperties(ResourceKey<JukeboxSong> song) {
return new Item.Properties().stacksTo(1).rarity(Rarity.RARE).jukeboxPlayable(song);
}
public static Supplier<Item> register(String name, Supplier<Item> supplier) {
return register(name, supplier, true);
}

View File

@ -2,18 +2,17 @@ package com.r3944realms.leashedplayer.content.items.type;
import com.r3944realms.leashedplayer.content.entities.LeashRopeArrow;
import com.r3944realms.leashedplayer.modInterface.PlayerLeashable;
import net.minecraft.core.HolderGetter;
import net.minecraft.core.HolderSet;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.tags.BlockTags;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.Leashable;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.ShearsItem;
import net.minecraft.world.item.component.Tool;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Blocks;
import org.jetbrains.annotations.NotNull;
@ -63,4 +62,18 @@ public class LeadBreakerItem extends ShearsItem {
return InteractionResult.PASS;
}
@Override
public @NotNull InteractionResultHolder<ItemStack> use(@NotNull Level pLevel, @NotNull Player pPlayer, @NotNull InteractionHand pUsedHand) {
if (!pLevel.isClientSide && pUsedHand == InteractionHand.MAIN_HAND) {
PlayerLeashable playerLeashable = (PlayerLeashable) pPlayer;
if (playerLeashable.isLeashed()) {
if(!(playerLeashable.getLeashHolder() instanceof LeashRopeArrow)) {
playerLeashable.dropLeash(true, true);
pPlayer.getItemInHand(pUsedHand).hurtAndBreak(10, pPlayer, LivingEntity.getSlotForHand(pUsedHand));
return InteractionResultHolder.success(pPlayer.getItemInHand(pUsedHand));
}
}
}
return super.use(pLevel, pPlayer, pUsedHand);
}
}

View File

@ -0,0 +1,35 @@
package com.r3944realms.leashedplayer.content.sounds;
import com.r3944realms.leashedplayer.LeashedPlayer;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.function.Supplier;
public class ModSoundRegister {
public static DeferredRegister<SoundEvent> SOUNDS = DeferredRegister.create(BuiltInRegistries.SOUND_EVENT, LeashedPlayer.MOD_ID);
public static ResourceLocation RL_FOX_MUSIC = ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, "music/what_does_the_fox_say");
public static final DeferredHolder<SoundEvent, SoundEvent> FOX_MUSIC =
ModSoundRegister.register("what_does_the_fox_say", () -> SoundEvent.createFixedRangeEvent(
RL_FOX_MUSIC,
128
));
public static DeferredHolder<SoundEvent, SoundEvent> register(String name, Supplier<SoundEvent> supplier){
return SOUNDS.register(name, supplier);
}
public static void register(IEventBus modBus){
SOUNDS.register(modBus);
}
public static String getJukeboxSongTranslateKey(String name) {
return "jukebox_song." + LeashedPlayer.MOD_ID + "." + name;
}
public static String getSubTitleTranslateKey(String name) {
return "sound." + LeashedPlayer.MOD_ID + ".subtitle." + name;
}
}

View File

@ -13,6 +13,7 @@ import com.r3944realms.leashedplayer.content.gamerules.Server.TeleportWithLeashe
import com.r3944realms.leashedplayer.content.items.ModCreativeTab;
import com.r3944realms.leashedplayer.content.items.ModItemRegister;
import com.r3944realms.leashedplayer.content.items.type.LeashRopeArrowItem;
import com.r3944realms.leashedplayer.content.sounds.ModSoundRegister;
import com.r3944realms.leashedplayer.datagen.provider.attributes.ModPaintingVariants;
import com.r3944realms.leashedplayer.utils.Enum.LanguageEnum;
import com.r3944realms.leashedplayer.utils.Enum.ModPartEnum;
@ -32,6 +33,7 @@ public enum ModLangKeyValue {
TEST_FABRIC_ITEM(ModItemRegister.FABRIC, ModPartEnum.ITEM, "Fabric", "Fabric", "Fabric", true),
AMETHYST_SHEARS(ModItemRegister.AMETHYST_SHEARS, ModPartEnum.ITEM, "Amethyst Shears", "紫水晶剪刀", "紫水晶剪刀", true),
KID_SPAWN_EGG(ModItemRegister.KID_SPAWN_EGG, ModPartEnum.ITEM, "Kid Spawn Egg", "小孩生成蛋", "小孩生成蛋", false),
NEO_FORGE(ModItemRegister.NEOFORGE, ModPartEnum.ITEM, "NeoForge", "NeoForge", "NeoForge", true),
//ITEM_DESC
DESC_ITEM_LEASH_ROPE_ARROW(LeashRopeArrowItem.descKey, ModPartEnum.DESCRIPTION, "Arrows with ropes attached?","带有拴绳的箭矢?", "帶有拴繩的箭矢?", false),
//PAINTING
@ -41,6 +43,9 @@ public enum ModLangKeyValue {
LEASH_ROPE_ARROW(ModEntityRegister.getEntityNameKey("leash_rope_arrow"), ModPartEnum.ENTITY, "Leash Rope Arrow", "拴绳箭", "拴繩箭", false),
SPECTRAL_LEASH_ROPE_ARROW(ModEntityRegister.getEntityNameKey("spectral_leash_rope_arrow"), ModPartEnum.ENTITY, "Spectral Leash Rope Arrow", "拴绳光灵箭", "拴繩光靈箭", false),
kID(ModEntityRegister.getEntityNameKey("kid_player"), ModPartEnum.ENTITY, "Kid", "小孩", "小孩", "", false),
//DIST
ST_WHAT_DOES_THE_FOX_SAY(ModSoundRegister.getSubTitleTranslateKey("what_does_the_fox_say"), ModPartEnum.TITLE, "Great Chu will rise again! Chen She will be king!", "大楚兴~ 陈胜王~~", "大楚興~ 陳勝王~~", false),
JB_WHAT_DOES_THE_FOX_SAY(ModSoundRegister.getJukeboxSongTranslateKey("what_does_the_fox_say"), ModPartEnum.DESCRIPTION, "What does the fox say?", "狐狸是怎么叫的?", "狐狸是怎麽叫的?", false),
//CREATIVE_TAB
CREATIVE_TAB_NAME(ModCreativeTab.getCreativeMod(LEASHED_PLAYER_ITEM), ModPartEnum.CREATIVE_TAB, "Leashed Player","可拴玩家", "可拴玩家", false),
//COMMAND_MESSAGE
@ -114,7 +119,6 @@ public enum ModLangKeyValue {
NO_LEASH_ARROW(ModPotionRegister.getTippedArrowNameKey("no_leash"), ModPartEnum.ITEM, "Arrow of No Leash", "禁拴之箭", "禁拴之箭", false),
//INFO_MESSAGE
CHAT_NONE_HEARD_YOU(DefaultTalkArea.CHAT_NONE_HEARD_YOU, ModPartEnum.MESSAGE, "Nobody heard your message", "沒有人接收到你的消息", "無人接收到你的訊息", "无人受子问",false),
;
private final Supplier<?> supplier;
private String key;

View File

@ -29,6 +29,7 @@ public class ModDataGeneratorHandler {
ItemModelGenerator(event, existingFileHelper);
RecipeGenerator(event, holderFolder);
ModTagsProvider(event, event.getLookupProvider(), existingFileHelper);
ModSoundProvider(event, existingFileHelper);
ModAdvancementProvider(event, holderFolder, existingFileHelper);
}
private static void addLanguage(GatherDataEvent event, LanguageEnum language){
@ -68,6 +69,13 @@ public class ModDataGeneratorHandler {
(DataProvider.Factory<ModDataPackBuiltInEntriesProvider>) pOutput -> new ModDataPackBuiltInEntriesProvider(pOutput, future)
);
}
private static void ModSoundProvider(GatherDataEvent event, ExistingFileHelper helper) {
event.getGenerator().addProvider(
event.includeServer(),
(DataProvider.Factory<ModSoundDefinitionsProvider>) pOutput ->
new ModSoundDefinitionsProvider(pOutput,LeashedPlayer.MOD_ID, helper)
);
}
private static void ModAdvancementProvider(GatherDataEvent event, CompletableFuture<HolderLookup.Provider> pLookUpProvider, ExistingFileHelper helper) {
event.getGenerator().addProvider(
event.includeServer(),

View File

@ -1,6 +1,7 @@
package com.r3944realms.leashedplayer.datagen.provider;
import com.r3944realms.leashedplayer.LeashedPlayer;
import com.r3944realms.leashedplayer.datagen.provider.attributes.ModJukeboxSongs;
import com.r3944realms.leashedplayer.datagen.provider.attributes.ModPaintingVariants;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.RegistrySetBuilder;
@ -13,7 +14,8 @@ import java.util.concurrent.CompletableFuture;
public class ModDataPackBuiltInEntriesProvider extends DatapackBuiltinEntriesProvider {
public static final RegistrySetBuilder BUILDER = new RegistrySetBuilder()
.add(Registries.PAINTING_VARIANT, ModPaintingVariants::bootstrap);
.add(Registries.PAINTING_VARIANT, ModPaintingVariants::bootstrap)
.add(Registries.JUKEBOX_SONG, ModJukeboxSongs::bootstrap);
public ModDataPackBuiltInEntriesProvider(PackOutput output, CompletableFuture<HolderLookup.Provider> registries) {
super(output, registries, BUILDER, Set.of(LeashedPlayer.MOD_ID));
CompletableFuture<HolderLookup.Provider> registryProvider = getRegistryProvider();

View File

@ -0,0 +1,37 @@
package com.r3944realms.leashedplayer.datagen.provider;
import com.r3944realms.leashedplayer.content.sounds.ModSoundRegister;
import net.minecraft.data.PackOutput;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import net.neoforged.neoforge.common.data.SoundDefinition;
import net.neoforged.neoforge.common.data.SoundDefinitionsProvider;
public class ModSoundDefinitionsProvider extends SoundDefinitionsProvider {
/**
* Creates a new instance of this data provider.
*
* @param output The {@linkplain PackOutput} instance provided by the data generator.
* @param modId The mod ID of the current mod.
* @param helper The existing file helper provided by the event you are initializing this provider in.
*/
public ModSoundDefinitionsProvider(PackOutput output, String modId, ExistingFileHelper helper) {
super(output, modId, helper);
}
public SoundDefinition getSoundDefinition(String subTitle, SoundDefinition.Sound... sounds) {
return SoundDefinition.definition().subtitle(subTitle).with(sounds);
}
@Override
public void registerSounds() {
add(
ModSoundRegister.FOX_MUSIC,
getSoundDefinition(
ModSoundRegister.getSubTitleTranslateKey("what_does_the_fox_say"),
sound(ModSoundRegister.RL_FOX_MUSIC, SoundDefinition.SoundType.SOUND)
)
);
}
}

View File

@ -0,0 +1,39 @@
package com.r3944realms.leashedplayer.datagen.provider.attributes;
import com.r3944realms.leashedplayer.LeashedPlayer;
import com.r3944realms.leashedplayer.content.sounds.ModSoundRegister;
import net.minecraft.Util;
import net.minecraft.core.Holder;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.item.JukeboxSong;
public class ModJukeboxSongs {
public static ResourceKey<JukeboxSong> FOX_MUSIC = create("what_does_the_fox_say");
public static void bootstrap(BootstrapContext<JukeboxSong> pContext) {
JukeboxSongBootstrap(pContext);
}
public static void JukeboxSongBootstrap(BootstrapContext<JukeboxSong> pContext) {
register(pContext, FOX_MUSIC, ModSoundRegister.FOX_MUSIC, 121, 15);
}
private static void register(
BootstrapContext<JukeboxSong> pContext, ResourceKey<JukeboxSong> pKey, Holder<SoundEvent> pSoundEvent, int pLengthInSeconds, int pComparatorOutput
) {
pContext.register(
pKey,
new JukeboxSong(pSoundEvent, Component.translatable(Util.makeDescriptionId("jukebox_song", pKey.location())), (float)pLengthInSeconds, pComparatorOutput)
);
}
private static ResourceKey<JukeboxSong> create(String pName) {
return ResourceKey.create(Registries.JUKEBOX_SONG, ResourceLocation.fromNamespaceAndPath(LeashedPlayer.MOD_ID, pName));
}
}

View File

@ -0,0 +1,18 @@
package com.r3944realms.leashedplayer.mixin.registry;
import com.r3944realms.leashedplayer.datagen.provider.attributes.ModJukeboxSongs;
import net.minecraft.data.worldgen.BootstrapContext;
import net.minecraft.world.item.JukeboxSong;
import net.minecraft.world.item.JukeboxSongs;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(JukeboxSongs.class)
public interface MixinJukeboxSongs {
@Inject(method = {"bootstrap"}, at = @At("TAIL"))
private static void bootstrap(BootstrapContext<JukeboxSong> pContext, CallbackInfo ci) {
ModJukeboxSongs.JukeboxSongBootstrap(pContext);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

View File

@ -5,6 +5,7 @@
"both.MixinLivingEntity",
"both.MixinPlayer",
"item.MixinLeadItem",
"registry.MixinJukeboxSongs",
"registry.MixinPaintingVariants",
"server.MixinPlayerList",
"server.MixinServerGamePacketListenerImpl",