diff --git a/src/main/java/com/atsuishio/superbwarfare/block/LuckyContainerBlock.java b/src/main/java/com/atsuishio/superbwarfare/block/LuckyContainerBlock.java index ce141f21f..360c5e1d3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/LuckyContainerBlock.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/LuckyContainerBlock.java @@ -1,18 +1,24 @@ package com.atsuishio.superbwarfare.block; +import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.block.entity.LuckyContainerBlockEntity; import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.init.ModTags; import com.mojang.serialization.MapCodec; +import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionHand; import net.minecraft.world.ItemInteractionResult; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; @@ -33,6 +39,7 @@ import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; @SuppressWarnings("deprecation") public class LuckyContainerBlock extends BaseEntityBlock { @@ -55,17 +62,17 @@ public class LuckyContainerBlock extends BaseEntityBlock { if (level.isClientSide || state.getValue(OPENED) || !(level.getBlockEntity(pos) instanceof LuckyContainerBlockEntity) - ) return ItemInteractionResult.FAIL; + ) return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; if (!stack.is(ModTags.Items.CROWBAR)) { player.displayClientMessage(Component.translatable("des.superbwarfare.container.fail.crowbar"), true); - return ItemInteractionResult.FAIL; + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } level.setBlockAndUpdate(pos, state.setValue(OPENED, true)); level.playSound(null, BlockPos.containing(pos.getX(), pos.getY(), pos.getZ()), ModSounds.OPEN.get(), SoundSource.BLOCKS, 1, 1); - return ItemInteractionResult.FAIL; + return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; } @Nullable @@ -77,6 +84,23 @@ public class LuckyContainerBlock extends BaseEntityBlock { return null; } + @Override + @ParametersAreNonnullByDefault + public void appendHoverText(ItemStack stack, Item.TooltipContext context, List tooltipComponents, TooltipFlag tooltipFlag) { + super.appendHoverText(stack, context, tooltipComponents, tooltipFlag); + var component = stack.get(DataComponents.BLOCK_ENTITY_DATA); + CompoundTag tag = component == null ? new CompoundTag() : component.copyTag(); + + String location = tag.getString("Location"); + if (location.startsWith(Mod.MODID)) { + var split = location.split(Mod.MODID + ":"); + if (split.length == 2) { + location = "location." + split[1]; + } + tooltipComponents.add(Component.translatable("des.superbwarfare.lucky_container." + location).withStyle(ChatFormatting.GRAY)); + } + } + @Override @ParametersAreNonnullByDefault public @NotNull VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) { diff --git a/src/main/java/com/atsuishio/superbwarfare/block/entity/LuckyContainerBlockEntity.java b/src/main/java/com/atsuishio/superbwarfare/block/entity/LuckyContainerBlockEntity.java index 96d3cc076..e721cb42b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/entity/LuckyContainerBlockEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/entity/LuckyContainerBlockEntity.java @@ -107,7 +107,7 @@ public class LuckyContainerBlockEntity extends BlockEntity implements GeoBlockEn protected void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { super.loadAdditional(tag, registries); if (tag.contains("Location", 8)) { - this.location = ResourceLocation.withDefaultNamespace(tag.getString("Location")); + this.location = ResourceLocation.parse(tag.getString("Location")); } this.tick = tag.getInt("Tick"); } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java index 3913b40ae..043055a3d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java @@ -31,16 +31,14 @@ public class ModEntities { EntityType.Builder.of(SenpaiEntity::new, MobCategory.MONSTER).setTrackingRange(64).setUpdateInterval(3).eyeHeight(1.75f).sized(0.6f, 2f)); // Misc Entities - public static final DeferredHolder, EntityType> MORTAR = register("mortar", - EntityType.Builder.of(MortarEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).eyeHeight(0.2f).fireImmune().sized(0.8f, 1.4f)); public static final DeferredHolder, EntityType> LASER = register("laser", EntityType.Builder.of(LaserEntity::new, MobCategory.MISC).sized(0.1f, 0.1f).fireImmune().setUpdateInterval(1)); public static final DeferredHolder, EntityType> FLARE_DECOY = register("flare_decoy", - EntityType.Builder.of(FlareDecoyEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).noSave().sized(1, 1)); + EntityType.Builder.of(FlareDecoyEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).noSave().sized(1f, 1f)); public static final DeferredHolder, EntityType> SMOKE_DECOY = register("smoke_decoy", EntityType.Builder.of(SmokeDecoyEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).noSave().sized(3f, 3f)); public static final DeferredHolder, EntityType> CLAYMORE = register("claymore", - EntityType.Builder.of(ClaymoreEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(ClaymoreEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).sized(0.25f, 0.25f)); public static final DeferredHolder, EntityType> BLU_43 = register("blu_43", EntityType.Builder.of(Blu43Entity::new, MobCategory.MISC).setTrackingRange(32).setUpdateInterval(1).sized(0.12f, 0.05f)); @@ -50,50 +48,51 @@ public class ModEntities { public static final DeferredHolder, EntityType> C_4 = register("c4", EntityType.Builder.of(C4Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> WATER_MASK = register("water_mask", - EntityType.Builder.of(WaterMaskEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).sized(1f, 1f)); + EntityType.Builder.of(WaterMaskEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).sized(1f, 1f).noSave().noSummon().fireImmune()); // Projectiles public static final DeferredHolder, EntityType> TASER_BULLET = register("taser_bullet", - EntityType.Builder.of(TaserBulletEntity::new, MobCategory.MISC).noSave().setTrackingRange(64) + EntityType.Builder.of(TaserBulletEntity::new, MobCategory.MISC).setTrackingRange(64).noSave() .setUpdateInterval(1).sized(0.25f, 0.25f)); // Fast Projectiles public static final DeferredHolder, EntityType> SMALL_CANNON_SHELL = register("small_cannon_shell", - EntityType.Builder.of(SmallCannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.25f, 0.25f)); + EntityType.Builder.of(SmallCannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.25f, 0.25f)); public static final DeferredHolder, EntityType> RPG_ROCKET = register("rpg_rocket", - EntityType.Builder.of(RpgRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(RpgRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> MORTAR_SHELL = register("mortar_shell", - EntityType.Builder.of(MortarShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(MortarShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> PROJECTILE = register("projectile", - EntityType.Builder.of(ProjectileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).noSave().noSummon().sized(0.25f, 0.25f)); + EntityType.Builder.of(ProjectileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).noSave().noSummon().sized(0.25f, 0.25f)); public static final DeferredHolder, EntityType> CANNON_SHELL = register("cannon_shell", - EntityType.Builder.of(CannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.75f, 0.75f)); + EntityType.Builder.of(CannonShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.75f, 0.75f)); public static final DeferredHolder, EntityType> GUN_GRENADE = register("gun_grenade", - EntityType.Builder.of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> MELON_BOMB = register("melon_bomb", - EntityType.Builder.of(MelonBombEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(1f, 1f)); + EntityType.Builder.of(MelonBombEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(1f, 1f)); public static final DeferredHolder, EntityType> HAND_GRENADE = register("hand_grenade", - EntityType.Builder.of(HandGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.3f, 0.3f)); + EntityType.Builder.of(HandGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.3f, 0.3f)); public static final DeferredHolder, EntityType> RGO_GRENADE = register("rgo_grenade", - EntityType.Builder.of(RgoGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.3f, 0.3f)); + EntityType.Builder.of(RgoGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.3f, 0.3f)); public static final DeferredHolder, EntityType> M18_SMOKE_GRENADE = register("m18_smoke_grenade", - EntityType.Builder.of(M18SmokeGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.3f, 0.3f)); + EntityType.Builder.of(M18SmokeGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.3f, 0.3f)); public static final DeferredHolder, EntityType> JAVELIN_MISSILE = register("javelin_missile", - EntityType.Builder.of(JavelinMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(JavelinMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> AGM_65 = register("agm_65", - EntityType.Builder.of(Agm65Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.75f, 0.75f)); + EntityType.Builder.of(Agm65Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.75f, 0.75f)); public static final DeferredHolder, EntityType> SMALL_ROCKET = register("small_rocket", - EntityType.Builder.of(SmallRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(SmallRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> MEDIUM_ROCKET = register("medium_rocket", - EntityType.Builder.of(MediumRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(MediumRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> WG_MISSILE = register("wg_missile", - EntityType.Builder.of(WgMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(3).fireImmune().sized(0.5f, 0.5f)); + EntityType.Builder.of(WgMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().fireImmune().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> SWARM_DRONE = register("swarm_drone", - EntityType.Builder.of(SwarmDroneEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(0.5f, 0.5f)); + EntityType.Builder.of(SwarmDroneEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().fireImmune().sized(0.5f, 0.5f)); public static final DeferredHolder, EntityType> MK_82 = register("mk_82", - EntityType.Builder.of(Mk82Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).noSave().setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(0.8f, 0.8f)); + EntityType.Builder.of(Mk82Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(false).setTrackingRange(64).setUpdateInterval(1).noSave().sized(0.8f, 0.8f)); // Vehicles + // Turrets public static final DeferredHolder, EntityType> TYPE_63 = register("type_63", EntityType.Builder.of(Type63Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(1f, 1.5f)); public static final DeferredHolder, EntityType> MK_42 = register("mk_42", @@ -101,34 +100,42 @@ public class ModEntities { public static final DeferredHolder, EntityType> HPJ_11 = register("hpj_11", EntityType.Builder.of(Hpj11Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).fireImmune().sized(2.8f, 2.4f)); public static final DeferredHolder, EntityType> MLE_1934 = register("mle_1934", - EntityType.Builder.of(Mle1934Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).fireImmune().sized(4.5f, 2.8f).eyeHeight(2.16F)); + EntityType.Builder.of(Mle1934Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).fireImmune().sized(4.5f, 2.8f)); public static final DeferredHolder, EntityType> ANNIHILATOR = register("annihilator", EntityType.Builder.of(AnnihilatorEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(3).fireImmune().sized(13f, 4.2f)); + public static final DeferredHolder, EntityType> LASER_TOWER = register("laser_tower", + EntityType.Builder.of(LaserTowerEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(0.9f, 1.65f)); + // Boats public static final DeferredHolder, EntityType> SPEEDBOAT = register("speedboat", EntityType.Builder.of(SpeedboatEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(3.0f, 2.0f)); + + // Land Vehicles public static final DeferredHolder, EntityType> WHEEL_CHAIR = register("wheel_chair", EntityType.Builder.of(WheelChairEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(1.0f, 1.0f)); - public static final DeferredHolder, EntityType> AH_6 = register("ah_6", - EntityType.Builder.of(Ah6Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(3.6f, 2.9f)); public static final DeferredHolder, EntityType> LAV_150 = register("lav_150", EntityType.Builder.of(Lav150Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(2.8f, 3.1f)); - public static final DeferredHolder, EntityType> TOM_6 = register("tom_6", - EntityType.Builder.of(Tom6Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(1.05f, 1.0f)); public static final DeferredHolder, EntityType> BMP_2 = register("bmp_2", EntityType.Builder.of(Bmp2Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(4f, 3f)); public static final DeferredHolder, EntityType> YX_100 = register("yx_100", EntityType.Builder.of(Yx100Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(4.6f, 3.25f)); - - public static final DeferredHolder, EntityType> DRONE = register("drone", - EntityType.Builder.of(DroneEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).sized(0.6f, 0.2f)); - public static final DeferredHolder, EntityType> LASER_TOWER = register("laser_tower", - EntityType.Builder.of(LaserTowerEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(0.9f, 1.65f)); public static final DeferredHolder, EntityType> PRISM_TANK = register("prism_tank", EntityType.Builder.of(PrismTankEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(5f, 2.6f)); + + // Aircraft + public static final DeferredHolder, EntityType> TOM_6 = register("tom_6", + EntityType.Builder.of(Tom6Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(1.05f, 1.0f)); + public static final DeferredHolder, EntityType> AH_6 = register("ah_6", + EntityType.Builder.of(Ah6Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(3.6f, 2.9f)); public static final DeferredHolder, EntityType> A_10A = register("a_10a", EntityType.Builder.of(A10Entity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(9f, 3.5f)); + // Special + public static final DeferredHolder, EntityType> DRONE = register("drone", + EntityType.Builder.of(DroneEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).sized(0.6f, 0.2f)); + public static final DeferredHolder, EntityType> MORTAR = register("mortar", + EntityType.Builder.of(MortarEntity::new, MobCategory.MISC).setTrackingRange(64).setUpdateInterval(1).fireImmune().sized(0.8f, 1.4f)); + private static DeferredHolder, EntityType> register(String name, EntityType.Builder entityTypeBuilder) { return REGISTRY.register(name, () -> entityTypeBuilder.build(name)); } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java b/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java index 862f8a037..b8330535b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java @@ -6,6 +6,7 @@ import com.atsuishio.superbwarfare.item.ArmorPlate; import com.atsuishio.superbwarfare.item.BatteryItem; import com.atsuishio.superbwarfare.item.C4BombItem; import com.atsuishio.superbwarfare.item.ElectricBaton; +import com.atsuishio.superbwarfare.item.common.container.LuckyContainerBlockItem; import com.atsuishio.superbwarfare.item.common.container.SmallContainerBlockItem; import net.minecraft.core.HolderLookup; import net.minecraft.core.registries.Registries; @@ -111,9 +112,10 @@ public class ModTabs { RegisterContainersEvent.containers.forEach(output::accept); } else if (registryObject.get() == ModItems.LUCKY_CONTAINER.get()) { output.accept(registryObject.get()); + LuckyContainerBlockItem.LUCKY_CONTAINERS.stream().map(Supplier::get).forEach(output::accept); } else if (registryObject.get() == ModItems.SMALL_CONTAINER.get()) { output.accept(registryObject.get()); - SmallContainerBlockItem.SMALL_CONTAINER_LOOT_TABLES.stream().map(Supplier::get).forEach(output::accept); + SmallContainerBlockItem.SMALL_CONTAINERS.stream().map(Supplier::get).forEach(output::accept); } else { output.accept(registryObject.get()); } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/common/container/LuckyContainerBlockItem.java b/src/main/java/com/atsuishio/superbwarfare/item/common/container/LuckyContainerBlockItem.java index 73f881907..6dbc1b7b1 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/common/container/LuckyContainerBlockItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/common/container/LuckyContainerBlockItem.java @@ -2,9 +2,12 @@ package com.atsuishio.superbwarfare.item.common.container; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.client.renderer.item.LuckyContainerBlockItemRenderer; +import com.atsuishio.superbwarfare.init.ModBlockEntities; import com.atsuishio.superbwarfare.init.ModBlocks; import com.atsuishio.superbwarfare.init.ModItems; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; @@ -31,10 +34,19 @@ import software.bernie.geckolib.animation.PlayState; import software.bernie.geckolib.util.GeckoLibUtil; import javax.annotation.ParametersAreNonnullByDefault; +import java.util.List; +import java.util.function.Supplier; @EventBusSubscriber(modid = Mod.MODID, bus = EventBusSubscriber.Bus.MOD) public class LuckyContainerBlockItem extends BlockItem implements GeoItem { + public static final List> LUCKY_CONTAINERS = List.of( + () -> LuckyContainerBlockItem.createInstance(Mod.loc("mobile_vehicles")), + () -> LuckyContainerBlockItem.createInstance(Mod.loc("land_vehicles")), + () -> LuckyContainerBlockItem.createInstance(Mod.loc("aircraft")), + () -> LuckyContainerBlockItem.createInstance(Mod.loc("controllable_turrets")) + ); + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public LuckyContainerBlockItem() { @@ -83,4 +95,13 @@ public class LuckyContainerBlockItem extends BlockItem implements GeoItem { public AnimatableInstanceCache getAnimatableInstanceCache() { return this.cache; } + + public static ItemStack createInstance(ResourceLocation location) { + ItemStack stack = new ItemStack(ModBlocks.LUCKY_CONTAINER.get()); + CompoundTag tag = new CompoundTag(); + + tag.putString("Location", location.toString()); + BlockItem.setBlockEntityData(stack, ModBlockEntities.LUCKY_CONTAINER.get(), tag); + return stack; + } } diff --git a/src/main/java/com/atsuishio/superbwarfare/item/common/container/SmallContainerBlockItem.java b/src/main/java/com/atsuishio/superbwarfare/item/common/container/SmallContainerBlockItem.java index 84615bdeb..6e1a58e11 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/common/container/SmallContainerBlockItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/common/container/SmallContainerBlockItem.java @@ -32,7 +32,7 @@ import java.util.function.Supplier; @EventBusSubscriber(modid = Mod.MODID, bus = EventBusSubscriber.Bus.MOD) public class SmallContainerBlockItem extends BlockItem implements GeoItem { - public static final List> SMALL_CONTAINER_LOOT_TABLES = List.of( + public static final List> SMALL_CONTAINERS = List.of( () -> SmallContainerBlockItem.createInstance(Mod.loc("containers/blueprints")), () -> SmallContainerBlockItem.createInstance(Mod.loc("containers/common")) ); diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index be6d5b5c3..acdf23fea 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -318,6 +318,10 @@ "block.superbwarfare.superb_item_interface": "Superb Item Interface", "des.superbwarfare.superb_item_interface": "A fast omnidirectional hopper for transferring items to targeted entities", "block.superbwarfare.lucky_container": "Lucky Container", + "des.superbwarfare.lucky_container.location.mobile_vehicles": "Mobile Vehicles", + "des.superbwarfare.lucky_container.location.land_vehicles": "Land Vehicles", + "des.superbwarfare.lucky_container.location.aircraft": "Aircraft", + "des.superbwarfare.lucky_container.location.controllable_turrets": "Controllable Turrets", "item.superbwarfare.high_energy_explosives": "High Energy Explosives", "item.superbwarfare.grain": "Grain", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 2b4d65de9..abfc64c38 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -318,6 +318,10 @@ "block.superbwarfare.superb_item_interface": "卓越物品接口", "des.superbwarfare.superb_item_interface": "可快速给指向实体传输物品的全方向漏斗", "block.superbwarfare.lucky_container": "幸运补给箱", + "des.superbwarfare.lucky_container.location.mobile_vehicles": "移动载具", + "des.superbwarfare.lucky_container.location.land_vehicles": "陆地载具", + "des.superbwarfare.lucky_container.location.aircraft": "飞行器", + "des.superbwarfare.lucky_container.location.controllable_turrets": "可操控炮塔", "item.superbwarfare.high_energy_explosives": "高能炸药", "item.superbwarfare.grain": "推进药柱", diff --git a/src/main/resources/data/superbwarfare/containers/aircraft.json b/src/main/resources/data/superbwarfare/containers/aircraft.json new file mode 100644 index 000000000..dad9de76c --- /dev/null +++ b/src/main/resources/data/superbwarfare/containers/aircraft.json @@ -0,0 +1,7 @@ +{ + "EntityTypes": [ + "superbwarfare:ah_6", + "superbwarfare:tom_6", + "superbwarfare:a_10a" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/containers/all_vehicles.json b/src/main/resources/data/superbwarfare/containers/all_vehicles.json deleted file mode 100644 index 6eb618fa5..000000000 --- a/src/main/resources/data/superbwarfare/containers/all_vehicles.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "EntityTypes": [ - "superbwarfare:wheel_chair", - "superbwarfare:lav_150" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/containers/controllable_turrets.json b/src/main/resources/data/superbwarfare/containers/controllable_turrets.json new file mode 100644 index 000000000..09443416e --- /dev/null +++ b/src/main/resources/data/superbwarfare/containers/controllable_turrets.json @@ -0,0 +1,9 @@ +{ + "EntityTypes": [ + "superbwarfare:mk_42", + "superbwarfare:hpj_11", + "superbwarfare:mle_1934", + "superbwarfare:annihilator", + "superbwarfare:type_63" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/containers/land_vehicles.json b/src/main/resources/data/superbwarfare/containers/land_vehicles.json new file mode 100644 index 000000000..5f969ff6d --- /dev/null +++ b/src/main/resources/data/superbwarfare/containers/land_vehicles.json @@ -0,0 +1,9 @@ +{ + "EntityTypes": [ + "superbwarfare:wheel_chair", + "superbwarfare:lav_150", + "superbwarfare:bmp_2", + "superbwarfare:yx_100", + "superbwarfare:prism_tank" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/superbwarfare/containers/mobile_vehicles.json b/src/main/resources/data/superbwarfare/containers/mobile_vehicles.json new file mode 100644 index 000000000..672504d10 --- /dev/null +++ b/src/main/resources/data/superbwarfare/containers/mobile_vehicles.json @@ -0,0 +1,13 @@ +{ + "EntityTypes": [ + "superbwarfare:speedboat", + "superbwarfare:wheel_chair", + "superbwarfare:ah_6", + "superbwarfare:lav_150", + "superbwarfare:tom_6", + "superbwarfare:bmp_2", + "superbwarfare:yx_100", + "superbwarfare:prism_tank", + "superbwarfare:a_10a" + ] +} \ No newline at end of file