mirror of
https://github.com/FabricMC/fabric.git
synced 2025-04-21 03:10:54 -04:00
initial 19w06a update
This commit is contained in:
parent
6f93f1cfb7
commit
fe18b98757
9 changed files with 59 additions and 52 deletions
build.gradle
src
main/java/net/fabricmc/fabric
api/resource
impl/resources
mixin
client/texture
events
resources
test/java/net/fabricmc/fabric/resources
|
@ -27,7 +27,7 @@ targetCompatibility = 1.8
|
|||
archivesBaseName = "fabric"
|
||||
|
||||
def baseVersion = "0.1.5"
|
||||
def mcVersion = "19w05a"
|
||||
def mcVersion = "19w06a"
|
||||
|
||||
def ENV = System.getenv()
|
||||
version = baseVersion + "." + (ENV.BUILD_NUMBER ?: "local")
|
||||
|
@ -38,7 +38,7 @@ minecraft {
|
|||
|
||||
dependencies {
|
||||
minecraft "com.mojang:minecraft:$mcVersion"
|
||||
mappings "net.fabricmc:yarn:$mcVersion.3"
|
||||
mappings "net.fabricmc:yarn:$mcVersion.2"
|
||||
modCompile "net.fabricmc:fabric-loader:0.3.5.106"
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ import java.util.Collections;
|
|||
*
|
||||
* {@link ResourceReloadListenerKeys}
|
||||
*/
|
||||
public interface IdentifiableResourceReloadListener extends ResourceReloadListener {
|
||||
public interface IdentifiableResourceReloadListener<T> extends ResourceReloadListener<T> {
|
||||
/**
|
||||
* @return The unique identifier of this listener.
|
||||
*/
|
||||
|
@ -44,22 +44,4 @@ public interface IdentifiableResourceReloadListener extends ResourceReloadListen
|
|||
default Collection<Identifier> getFabricDependencies() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* By default, resource reload listeners in Minecraft are all executed on
|
||||
* the game's main thread while the game is paused. This means they do not
|
||||
* need to provide any guarantees regarding their thread safety, or usage
|
||||
* of resources potentially modified by other reload listeners.
|
||||
*
|
||||
* "Thread safety", in this context, refers simply to independence; namely
|
||||
* whether or not, under the condition that all of its dependencies have
|
||||
* already been processed, this resource reload listener can run without
|
||||
* accessing or modifying areas it does not control in a non-thread-safe
|
||||
* manner.
|
||||
*
|
||||
* @return Whether or not the listener can be executed in a thread-safe way.
|
||||
*/
|
||||
default boolean isListenerThreadSafe() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ public interface ResourceManagerHelper {
|
|||
* Add a resource reload listener for a given registry.
|
||||
* @param listener The resource reload listener.
|
||||
*/
|
||||
void addReloadListener(IdentifiableResourceReloadListener listener);
|
||||
void addReloadListener(IdentifiableResourceReloadListener<?> listener);
|
||||
|
||||
/**
|
||||
* Get the ResourceManagerHelper instance for a given resource type.
|
||||
|
|
|
@ -31,20 +31,20 @@ public class ResourceManagerHelperImpl implements ResourceManagerHelper {
|
|||
private static final Map<ResourceType, ResourceManagerHelperImpl> registryMap = new HashMap<>();
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
private final List<IdentifiableResourceReloadListener> addedListeners = new ArrayList<>();
|
||||
private final List<IdentifiableResourceReloadListener<?>> addedListeners = new ArrayList<>();
|
||||
|
||||
public static ResourceManagerHelper get(ResourceType type) {
|
||||
return registryMap.computeIfAbsent(type, (t) -> new ResourceManagerHelperImpl());
|
||||
}
|
||||
|
||||
public static void sort(ResourceType type, List<ResourceReloadListener> listeners) {
|
||||
public static void sort(ResourceType type, List<ResourceReloadListener<?>> listeners) {
|
||||
ResourceManagerHelperImpl instance = registryMap.get(type);
|
||||
if (instance != null) {
|
||||
instance.sort(listeners);
|
||||
}
|
||||
}
|
||||
|
||||
protected void sort(List<ResourceReloadListener> listeners) {
|
||||
protected void sort(List<ResourceReloadListener<?>> listeners) {
|
||||
listeners.removeAll(addedListeners);
|
||||
|
||||
// General rules:
|
||||
|
@ -53,7 +53,7 @@ public class ResourceManagerHelperImpl implements ResourceManagerHelper {
|
|||
// trust them 100%. Only code doesn't lie.
|
||||
// - We addReloadListener all custom listeners after vanilla listeners. Same reasons.
|
||||
|
||||
List<IdentifiableResourceReloadListener> listenersToAdd = Lists.newArrayList(addedListeners);
|
||||
List<IdentifiableResourceReloadListener<?>> listenersToAdd = Lists.newArrayList(addedListeners);
|
||||
Set<Identifier> resolvedIds = new HashSet<>();
|
||||
for (ResourceReloadListener listener : listeners) {
|
||||
if (listener instanceof IdentifiableResourceReloadListener) {
|
||||
|
@ -65,7 +65,7 @@ public class ResourceManagerHelperImpl implements ResourceManagerHelper {
|
|||
while (listeners.size() != lastSize) {
|
||||
lastSize = listeners.size();
|
||||
|
||||
Iterator<IdentifiableResourceReloadListener> it = listenersToAdd.iterator();
|
||||
Iterator<IdentifiableResourceReloadListener<?>> it = listenersToAdd.iterator();
|
||||
while (it.hasNext()) {
|
||||
IdentifiableResourceReloadListener listener = it.next();
|
||||
if (resolvedIds.containsAll(listener.getFabricDependencies())) {
|
||||
|
@ -82,7 +82,7 @@ public class ResourceManagerHelperImpl implements ResourceManagerHelper {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void addReloadListener(IdentifiableResourceReloadListener listener) {
|
||||
public void addReloadListener(IdentifiableResourceReloadListener<?> listener) {
|
||||
addedListeners.add(listener);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,15 +41,15 @@ import org.spongepowered.asm.mixin.injection.Inject;
|
|||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
import org.spongepowered.asm.mixin.transformer.meta.MixinInner;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
@Mixin(SpriteAtlasTexture.class)
|
||||
public abstract class MixinSpriteAtlasTexture {
|
||||
// TODO
|
||||
|
||||
@Shadow
|
||||
private static Logger LOGGER;
|
||||
@Shadow
|
||||
|
@ -61,21 +61,22 @@ public abstract class MixinSpriteAtlasTexture {
|
|||
@Shadow
|
||||
private int mipLevel;
|
||||
|
||||
@Shadow
|
||||
/*@Shadow
|
||||
public abstract Sprite getSprite(Identifier id);
|
||||
@Shadow
|
||||
public abstract void addSpriteToLoad(ResourceManager var1, Identifier var2);
|
||||
|
||||
@Redirect(method = "reload", at = @At(value = "NEW", target = "net/minecraft/client/texture/Sprite"))
|
||||
// private Collection<Sprite> method_18164(ResourceManager resourceManager_1, Set<Identifier> set_1) {
|
||||
@Redirect(method = "method_18164", at = @At(value = "NEW", target = "net/minecraft/client/texture/Sprite"))
|
||||
public Sprite newSprite(Identifier id, class_1050 c, AnimationResourceMetadata animationMetadata) {
|
||||
if (sprites.containsKey(id)) {
|
||||
return sprites.get(id);
|
||||
} else {
|
||||
return new FabricSprite(id, c, animationMetadata);
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
@Inject(at = @At("HEAD"), method = "build")
|
||||
/* @Inject(at = @At("HEAD"), method = "build")
|
||||
public void build(ResourceManager var1, Iterable<Identifier> var2, CallbackInfo info) {
|
||||
this.sprites.clear();
|
||||
}
|
||||
|
@ -136,7 +137,7 @@ public abstract class MixinSpriteAtlasTexture {
|
|||
throw new CrashException(report);
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
||||
|
||||
@Inject(at = @At("HEAD"), method = "loadSprite", cancellable = true)
|
||||
public void loadSprite(ResourceManager manager, Sprite sprite, CallbackInfoReturnable<Boolean> info) {
|
||||
|
|
|
@ -23,6 +23,7 @@ import net.minecraft.entity.player.PlayerEntity;
|
|||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.server.network.ServerPlayerEntity;
|
||||
import net.minecraft.server.network.ServerPlayerInteractionManager;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.hit.BlockHitResult;
|
||||
|
@ -40,7 +41,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
|||
@Mixin(ServerPlayerInteractionManager.class)
|
||||
public class MixinServerPlayerInteractionManager {
|
||||
@Shadow
|
||||
public World world;
|
||||
public ServerWorld world;
|
||||
@Shadow
|
||||
public ServerPlayerEntity player;
|
||||
|
||||
|
|
|
@ -25,13 +25,15 @@ 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.function.BooleanSupplier;
|
||||
|
||||
@Mixin(World.class)
|
||||
public class MixinWorld {
|
||||
@Shadow
|
||||
private Profiler profiler;
|
||||
|
||||
@Inject(at = @At("RETURN"), method = "updateEntities")
|
||||
public void updateEntities(CallbackInfo info) {
|
||||
@Inject(at = @At("RETURN"), method = "tick")
|
||||
public void tick(BooleanSupplier booleanSupplier, CallbackInfo info) {
|
||||
TickEvent.tick(TickEvent.WORLD, (World) (Object) this, this.profiler);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
package net.fabricmc.fabric.mixin.resources;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import net.fabricmc.fabric.impl.resources.ResourceManagerHelperImpl;
|
||||
import net.minecraft.resource.*;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
@ -29,12 +30,15 @@ import java.util.List;
|
|||
@Mixin(ReloadableResourceManagerImpl.class)
|
||||
public class MixinReloadableResourceManagerImpl {
|
||||
@Shadow
|
||||
private List<ResourceReloadListener> listeners;
|
||||
private List<ResourceReloadListener<?>> field_17935;
|
||||
@Shadow
|
||||
private List<ResourceReloadListener<?>> field_17936;
|
||||
@Shadow
|
||||
private ResourceType type;
|
||||
|
||||
@Inject(at = @At("HEAD"), method = "reload")
|
||||
public void reload(List<ResourcePack> packs, CallbackInfo info) {
|
||||
ResourceManagerHelperImpl.sort(type, listeners);
|
||||
ResourceManagerHelperImpl.sort(type, field_17935);
|
||||
ResourceManagerHelperImpl.sort(type, field_17936);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,14 +22,26 @@ import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
|
|||
import net.minecraft.resource.ResourceManager;
|
||||
import net.minecraft.resource.ResourceType;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.profiler.Profiler;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class ResourceReloadModClient implements ClientModInitializer {
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
ResourceManagerHelper.get(ResourceType.ASSETS).addReloadListener(new IdentifiableResourceReloadListener() {
|
||||
ResourceManagerHelper.get(ResourceType.ASSETS).addReloadListener(new IdentifiableResourceReloadListener<Void>() {
|
||||
@Override
|
||||
public CompletableFuture<Void> prepare(ResourceManager var1, Profiler var2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(ResourceManager var1, Void var2, Profiler var3) {
|
||||
System.out.println("Reloading (should run as #2)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Identifier getFabricId() {
|
||||
return new Identifier("fabric:rrmc2");
|
||||
|
@ -39,26 +51,26 @@ public class ResourceReloadModClient implements ClientModInitializer {
|
|||
public Collection<Identifier> getFabricDependencies() {
|
||||
return Collections.singletonList(new Identifier("fabric:rrmc1"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResourceReload(ResourceManager var1) {
|
||||
System.out.println("Reloading (should run as #2)");
|
||||
}
|
||||
});
|
||||
|
||||
ResourceManagerHelper.get(ResourceType.ASSETS).addReloadListener(new IdentifiableResourceReloadListener() {
|
||||
ResourceManagerHelper.get(ResourceType.ASSETS).addReloadListener(new IdentifiableResourceReloadListener<Void>() {
|
||||
@Override
|
||||
public Identifier getFabricId() {
|
||||
return new Identifier("fabric:rrmc1");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResourceReload(ResourceManager var1) {
|
||||
public CompletableFuture<Void> prepare(ResourceManager var1, Profiler var2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(ResourceManager var1, Void var2, Profiler var3) {
|
||||
System.out.println("Reloading (should run as #1)");
|
||||
}
|
||||
});
|
||||
|
||||
ResourceManagerHelper.get(ResourceType.ASSETS).addReloadListener(new IdentifiableResourceReloadListener() {
|
||||
ResourceManagerHelper.get(ResourceType.ASSETS).addReloadListener(new IdentifiableResourceReloadListener<Void>() {
|
||||
@Override
|
||||
public Identifier getFabricId() {
|
||||
return new Identifier("fabric:rrmc_should_not_resolve");
|
||||
|
@ -70,7 +82,12 @@ public class ResourceReloadModClient implements ClientModInitializer {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onResourceReload(ResourceManager var1) {
|
||||
public CompletableFuture<Void> prepare(ResourceManager var1, Profiler var2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(ResourceManager var1, Void var2, Profiler var3) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue