bump version, very start of audio stuff, fix a strange crash where camera is null
This commit is contained in:
parent
cc18c6f793
commit
ecb0dcee56
|
|
@ -1,5 +1,5 @@
|
|||
# Done to increase the memory available to gradle.
|
||||
org.gradle.jvmargs = -Xmx3G
|
||||
mod_version = 2.0.1-1.20.1
|
||||
mod_version = 2.0.2-1.20.1
|
||||
maven_group = com.cinemamod
|
||||
archives_base_name = webdisplays
|
||||
|
|
@ -12,6 +12,7 @@ import com.mojang.blaze3d.platform.InputConstants;
|
|||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.advancements.AdvancementProgress;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.KeyMapping;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.Options;
|
||||
|
|
@ -19,8 +20,6 @@ import net.minecraft.client.gui.GuiGraphics;
|
|||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
import net.minecraft.client.multiplayer.ClientAdvancements;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.NonNullList;
|
||||
|
|
@ -32,6 +31,7 @@ import net.minecraft.server.packs.resources.ReloadableResourceManager;
|
|||
import net.minecraft.server.packs.resources.ResourceManager;
|
||||
import net.minecraft.server.packs.resources.ResourceManagerReloadListener;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.HumanoidArm;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.inventory.Slot;
|
||||
|
|
@ -40,14 +40,16 @@ import net.minecraft.world.item.ItemStack;
|
|||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.ClipContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.*;
|
||||
import net.minecraftforge.client.event.ModelEvent;
|
||||
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
|
||||
import net.minecraftforge.client.event.RenderHandEvent;
|
||||
import net.minecraftforge.client.event.RenderHighlightEvent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.event.level.LevelEvent;
|
||||
|
|
@ -61,31 +63,31 @@ import net.montoyo.wd.WebDisplays;
|
|||
import net.montoyo.wd.block.ScreenBlock;
|
||||
import net.montoyo.wd.client.gui.*;
|
||||
import net.montoyo.wd.client.gui.loading.GuiLoader;
|
||||
import net.montoyo.wd.utilities.browser.WDBrowser;
|
||||
import net.montoyo.wd.utilities.browser.handlers.DisplayHandler;
|
||||
import net.montoyo.wd.utilities.browser.handlers.WDRouter;
|
||||
import net.montoyo.wd.client.renderers.*;
|
||||
import net.montoyo.wd.core.HasAdvancement;
|
||||
import net.montoyo.wd.data.GuiData;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.entity.ScreenBlockEntity;
|
||||
import net.montoyo.wd.registry.BlockRegistry;
|
||||
import net.montoyo.wd.registry.ItemRegistry;
|
||||
import net.montoyo.wd.registry.TileRegistry;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import net.montoyo.wd.item.ItemLaserPointer;
|
||||
import net.montoyo.wd.item.ItemMinePad2;
|
||||
import net.montoyo.wd.item.WDItem;
|
||||
import net.montoyo.wd.miniserv.client.Client;
|
||||
import net.montoyo.wd.utilities.*;
|
||||
import net.montoyo.wd.utilities.math.Vector2i;
|
||||
import net.montoyo.wd.utilities.math.Vector3i;
|
||||
import net.montoyo.wd.registry.BlockRegistry;
|
||||
import net.montoyo.wd.registry.ItemRegistry;
|
||||
import net.montoyo.wd.registry.TileRegistry;
|
||||
import net.montoyo.wd.utilities.Log;
|
||||
import net.montoyo.wd.utilities.Multiblock;
|
||||
import net.montoyo.wd.utilities.browser.WDBrowser;
|
||||
import net.montoyo.wd.utilities.browser.handlers.DisplayHandler;
|
||||
import net.montoyo.wd.utilities.browser.handlers.WDRouter;
|
||||
import net.montoyo.wd.utilities.data.BlockSide;
|
||||
import net.montoyo.wd.utilities.data.Rotation;
|
||||
import net.montoyo.wd.utilities.math.Vector2i;
|
||||
import net.montoyo.wd.utilities.math.Vector3i;
|
||||
import net.montoyo.wd.utilities.serialization.NameUUIDPair;
|
||||
import org.cef.browser.CefBrowser;
|
||||
import org.cef.browser.CefMessageRouter;
|
||||
import org.cef.misc.CefCursorType;
|
||||
import org.joml.Vector3d;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
|
|
@ -95,7 +97,6 @@ import java.lang.reflect.Field;
|
|||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@Mod.EventBusSubscriber(modid = "webdisplays", value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||
public class ClientProxy extends SharedProxy implements ResourceManagerReloadListener {
|
||||
|
|
@ -588,15 +589,29 @@ public class ClientProxy extends SharedProxy implements ResourceManagerReloadLis
|
|||
if (!tes.isLoaded())
|
||||
tes.load();
|
||||
} else {
|
||||
double dist = distanceTo(tes, mc.getEntityRenderDispatcher().camera.getPosition());
|
||||
|
||||
if (tes.isLoaded()) {
|
||||
if (dist > WebDisplays.INSTANCE.unloadDistance2 * 16)
|
||||
tes.deactivate();
|
||||
// else if (ClientConfig.AutoVolumeControl.enableAutoVolume)
|
||||
// tes.updateTrackDistance(dist, 80); //ToDo find master volume
|
||||
} else if (dist <= WebDisplays.INSTANCE.loadDistance2 * 16)
|
||||
tes.activate();
|
||||
Camera camera = mc.getEntityRenderDispatcher().camera;
|
||||
Entity entity = null;
|
||||
|
||||
// ide inspection says this is a bunch of constant expressions
|
||||
// THIS IS NOT THE CASE
|
||||
// a crash HAS occurred because of this going unchecked, and I'm confused about it
|
||||
|
||||
//noinspection ConstantValue
|
||||
if (camera != null) entity = camera.getEntity();
|
||||
//noinspection ConstantValue
|
||||
if (entity == null) entity = mc.player;
|
||||
//noinspection ConstantValue
|
||||
if (entity != null) {
|
||||
double dist = distanceTo(tes, entity.getPosition(0));
|
||||
|
||||
if (tes.isLoaded()) {
|
||||
if (dist > WebDisplays.INSTANCE.unloadDistance2 * 16)
|
||||
tes.deactivate();
|
||||
// else if (ClientConfig.AutoVolumeControl.enableAutoVolume)
|
||||
// tes.updateTrackDistance(dist, 80); //ToDo find master volume
|
||||
} else if (dist <= WebDisplays.INSTANCE.loadDistance2 * 16)
|
||||
tes.activate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
116
src/main/java/net/montoyo/wd/client/audio/WDAudioSource.java
Normal file
116
src/main/java/net/montoyo/wd/client/audio/WDAudioSource.java
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
package net.montoyo.wd.client.audio;
|
||||
|
||||
import net.minecraft.client.resources.sounds.Sound;
|
||||
import net.minecraft.client.resources.sounds.SoundInstance;
|
||||
import net.minecraft.client.sounds.AudioStream;
|
||||
import net.minecraft.client.sounds.SoundBufferLibrary;
|
||||
import net.minecraft.client.sounds.SoundManager;
|
||||
import net.minecraft.client.sounds.WeighedSoundEvents;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.util.valueproviders.SampledFloat;
|
||||
import net.montoyo.wd.entity.ScreenBlockEntity;
|
||||
import net.montoyo.wd.entity.ScreenData;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class WDAudioSource implements SoundInstance {
|
||||
private static final ResourceLocation location = new ResourceLocation("webdisplays:audio_source");
|
||||
private static final WeighedSoundEvents events = new WeighedSoundEvents(
|
||||
location, "webdisplays.browser"
|
||||
);
|
||||
private static final SampledFloat CONST_1 = new SampledFloat() {
|
||||
@Override
|
||||
public float sample(RandomSource pRandom) {
|
||||
return 1.0f;
|
||||
}
|
||||
};
|
||||
private final Sound sound = new Sound(
|
||||
"unused",
|
||||
CONST_1,
|
||||
CONST_1,
|
||||
1, Sound.Type.SOUND_EVENT,
|
||||
true, false,
|
||||
100
|
||||
);
|
||||
ScreenBlockEntity blockEntity;
|
||||
ScreenData data;
|
||||
|
||||
public WDAudioSource(ScreenBlockEntity blockEntity, ScreenData data) {
|
||||
this.blockEntity = blockEntity;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public WeighedSoundEvents resolve(SoundManager pManager) {
|
||||
return events;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<AudioStream> getStream(SoundBufferLibrary soundBuffers, Sound sound, boolean looping) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sound getSound() {
|
||||
return sound;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoundSource getSource() {
|
||||
return SoundSource.RECORDS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLooping() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRelative() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDelay() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getVolume() {
|
||||
return blockEntity.ytVolume;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPitch() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getX() {
|
||||
return blockEntity.getBlockPos().getX();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getY() {
|
||||
return blockEntity.getBlockPos().getY();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getZ() {
|
||||
return blockEntity.getBlockPos().getZ();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Attenuation getAttenuation() {
|
||||
return Attenuation.LINEAR;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user